proj-oot-lowEndTargets-legacyMicrocomputers

Embedded and low-end hardware survey: Legacy microcomputers

Apples

Apple I

4K or 8K bytes RAM, expandable to 65K.

Apple II

"...a MOS Technology 6502 microprocessor running at 1 MHz, two game paddles,[9] 4 kB of RAM, an audio cassette interface for loading programs and storing data, and the Integer BASIC programming language built into the ROMs. The video controller displayed 24 lines by 40 columns of monochrome, upper-case-only (the original character set matches ASCII characters 20h to 5Fh) text on the screen, with NTSC composite video output suitable for display on a TV monitor, or on a regular TV set by way of a separate RF modulator. The original retail price of the computer was $1,298 USD[10] (with 4 kB of RAM) and $2,638 USD (with the maximum 48 kB of RAM).[11]"

Apple II Plus

" The Apple II Plus, introduced in June 1979,[20][21][22][23] included the Applesoft BASIC programming language in ROM. This Microsoft-authored dialect of BASIC, which was previously available as an upgrade, supported floating-point arithmetic, and became the standard BASIC dialect on the Apple II series (though it ran at a noticeably slower speed than Steve Wozniak's Integer BASIC).

Except for improved graphics and disk-booting support in the ROM, and the removal of the 2k 6502 assembler/disassembler to make room for the floating point BASIC, the II+ was otherwise identical to the original II. RAM prices fell during 1980–81 and all II+ machines came from the factory with a full 48k of memory already installed. The language card in Slot 0 added another 16k, but it had to be bank switched since the remaining CPU address space was occupied by the ROMs and I/O area. For this reason, the extra RAM in the language card was bank-switched over the machine's built-in ROM, allowing code loaded into the additional memory to be used as if it actually were ROM. Users could thus load Integer BASIC into the language card from disk and switch between the Integer and Applesoft dialects of BASIC with DOS 3.3's INT and FP commands just as if they had the BASIC ROM expansion card. The language card was also required to use the UCSD Pascal and FORTRAN 77 compilers, which were released by Apple at about the same time. These ran under the UCSD p-System operating system, which had its own disk format and emitted code for a "virtual machine" rather than the actual 6502 processor. "

old Apple ][ 5.25inch floppy disks were apparently 140k per side.

Later there were mac 3.5 inch hard "floppy" disks that were apparently 400k, 800k (double-sided media) or 1.44 MB (double-sided, high-density)

Apple IIe

" The Apple II Plus was followed in 1983 by the Apple IIe, a cost-reduced yet more powerful machine that used newer chips to reduce the component count and add new features, such as the display of upper and lowercase letters and a standard 64 kB of RAM.

The IIe RAM was configured as if it were a 48 kB Apple II Plus with a language card; the machine had no slot 0, but instead had an auxiliary slot that for most practical purposes took the place of slot 3, the most commonly used slot for 80-column cards in the II Plus. "


8-bit video game consoles

NES/Famicom (Nintendo Entertainment System)

The NES, the Nintendo Entertainment System, a variant of the Famicom, is an old 8-bit video game console (that my family had when i was a kid).

It had a 6502-based (Ricoh 2A03) CPU (16-bit addressing), 2 KiB? built-in RAM ("PRG RAM" (program RAM) or "WRAM" (working RAM)), a GPU (PPU, "Picture Processing Unit"), 2 KiB? of built-in video memory (memory accessible to the GPU rather than the CPU), and cartridges included ROM and could also include their own extra RAM (PRG ROM, and zero or more of PRG RAM, CHR ROM, CHR RAM).

Much of the following is copied/pasted from the various sources linked below.

Links with general tech specs:

"PRG RAM" or "WRAM"

RAM (excluding video RAM, or "CHR RAM"; we are talking about PRG RAM here): 2 KiB? built-in (although some of this was used by the system; the game had only about 1.5 KiB? available to it [1]), plus cartridges could have more (up to a max of, afaict, 64k; which makes sense since it's a 6502, which has 16-bit addressing). However, due to expense, additional cartridge memory, if any, would almost never be no more than 8 KiB? [2] [3], and in discussions of the specs of various components you often don't see more than 8 KiB? mentioned [4] [5]; having any RAM on the cartridge can significantly increase the cartridge expense [6]. Afaict when there was more than 8 KiB? of cartridge memory, it would be addressed in banks of 8 KiB?.

(I think there were also little bits of RAM outside the main PRG RAM space (eg. [7] says that MMC5 provides an additional 1k, and [8] describes a few sources of spare bytes). [9] says "cartridges may contain 16,352 bytes (nearly 16 KiB?) of address space reserved as "Expansion Area", which often contained an 8 KiB? SRAM.")

ROM (PRG ROM)

bank-switched in 32 KiB? banks

In order to have more than 32 KiB? of PRG ROM, a game cartridge had to contain a "Mapper" (MMC/Memory Management Controller) chip.

Afaict the largest mentioned amount of PRG ROM used by a single game cartridge was 512 KiB? [10] [11] (even though MMC5 supported up to 1024 KiB? PRG ROM).

NES GPU (PPU) and video RAM (CHR RAM)

The NES had a GPU (called a PPU, Picture Processing Unit, but i'll call it a GPU). The GPU accessed CHR ROM or CHR RAM (is this the same as video RAM?), as opposed to PRG ROM and PRG RAM (program RAM and ROM). There was 2 KiB? of video RAM builtin.

64 sprites onscreen at once limitation:

8 sprites per horizontal scan line limitation:

Amounts of CHR RAM and ROM:

Total size of games (including PRG ROM and CHR ROM)

"The largest licensed Famicom game is Metal Slader Glory (512 KiB? PRG + 512 KiB? CHR + MMC5). "-- http://wiki.nesdev.com/w/index.php/Myths

Mappers

Looking at the source of the Mapper Wizard page:

"MMC5 is the most powerful mapper ASIC Nintendo made for the NES and Famicom. It supports up to 64 KiB? PRG RAM and WRAM plus 1024 bytes of on-chip memory, up to 1024 KB CHR ROM or CHR RAM, up to 1024 KB PRG ROM, PRG ROM bank size up to 32 KB, CHR bank size up to 8 KB." -- [17]

"In any case, if you want more than 8KiB? PRG-RAM, your only choices are MMC1 and MMC5. Period." -- http://wiki.nesdev.com/w/index.php/Talk:Comparison_of_Nintendo_mappers

"The various CPU memory mapping schemes expand the maximum program size above the standard 32 KiB? to larger powers of 2, while PPU memory mapping schemes can add new graphic features. " -- http://wiki.nesdev.com/w/index.php/Mapper

"PRG ROM size: Up to 256 KB depending on board PRG ROM bank size: 16 KB or 32 KB PRG RAM: Up to 8 KB CHR capacity: Up to 128 KB ROM or 8 KB RAM CHR bank size: 8 KB or 4 KB " -- http://wiki.nesdev.com/w/index.php/MMC1

" PRG ROM size: Up to 1024 KB PRG ROM bank size: 8 KB, 16 KB, or 32 KB PRG RAM: Up to 64 KB CHR capacity: Up to 1024 KB ROM or RAM CHR bank size: 1 KB, 2 KB, 4 KB, or 8 KB " -- http://wiki.nesdev.com/w/index.php/MMC5

Links about mappers:

Misc links

Misc tech info/advice:

16-bit video game consoles

note: the consoles listed in http://en.wikipedia.org/wiki/History_of_video_game_consoles_%28fifth_generation%29 all have 32-bit or greater CPUs; and http://en.wikipedia.org/wiki/History_of_video_game_consoles_%28third_generation%29 have 8-bit or 8/16-bit CPUs; and the 3rd-gen is described as the 8-bit era and the 4-th gen as the 16-bit era; so if you want to find 16-bit video game consoles, look at http://en.wikipedia.org/wiki/History_of_video_game_consoles_%28fourth_generation%29 only.

SNES

24bit addressing (16 MB)

builtin RAM: 128 KB working RAM + 64 KB video + 64 KiB? audio

" Battery-backed SRAM is used for saving game positions in many games. SRAM size is usually 2Kbyte, 8Kbyte, or 32Kbyte (or more than 32Kbyte in a few games)." -- [18]

"Cartridge ROM Capacity

The 24bit address bus allows to address 16MB, but wide parts are occupied by WRAM and I/O mirrors, which leaves only around 11.9MB for cartridge ROM ... (or more when also using Expansion regions and gaps in I/O area). In most cartridges, ..., resulting in" a max of 4 mebibytes without resorting to atypical configurations.

" Bank Switching Most SNES games are satisfied with the 24bit address space. Bank switching is used only in a few games with special chips:

  S-DD1, SA-1, and SPC7110 chips (with mappable 1MByte-banks)
  ..."

Links

http://en.wikibooks.org/wiki/Super_NES_Programming/SNES_Specs (this claims the cartridge size max without mappers is 32 megabits, which is 4 megabytes; this is inconsistent with the "There are several ways to overcome that limits" in http://problemkaputt.de/fullsnes.htm , but consistent with http://problemkaputt.de/fullsnes.htm typical memory description, which maxes out at 4 MiB? for ROM.

http://en.wikipedia.org/wiki/Super_Nintendo_Entertainment_System#Technical_specifications says that the largest games only had 48 mebibits, ie 6 mebibytes, of ROM.

http://en.wikipedia.org/wiki/Super_Nintendo_Entertainment_System#Technical_specifications says 128 KiB? RAM + 64 KiB? video RAM + 64 KiB? audio RAM

Sega Genesis

" The main microprocessor of the Genesis is a 16/32-bit Motorola 68000 CPU. The console also includes a Zilog Z80 sub-processor, which controls the sound hardware and provides backwards compatibility with the Master System. The system contains 72kB of RAM, as well as 64 kB of video RAM, and can display up to 64 colors at once from a palette of 512. " -- [19]

"The maximum addressable memory is 16 megabytes from the ROM to the RAM" -- [www.computinghistory.org.uk/det/2201/Sega-Mega-Drive/]

8-bit and 16-bit video game console summaries

Instruction sets:

Addressable memory bit width:

RAM sizes (working/program):

in-cartridge ROM sizes (working/program):

in-cartridge ROM sizes (total):

GPU:

Summary:

The instruction sets were 6502 (and 65C816, a 6502 extension) (NES, SNES) and 68000 (Genesis). The address sizes were 16-bits (NES), 24-bit (SNES, Sega Genesis). The builtin RAM was 2 K (NES), 128 K (SNES), 72 K (Genesis). In-cartridge memory was typically up to 8 K, but could go up to 64K with 8K banks (NES; unsure about the other 2). (Program) ROM sizes were cheaply 32K (NES), typically up to 256K (NES) or 4 MiB? (SNES), max 512K (NES), in banks of 32K (NES).

Builtin graphic RAM was 2 K (NES) or 64K (SNES, Genesis), cartridge-expandable in banks of 8 KiB? (NES). Max typical CHR RAM was ~128 KiB? (NES, MMC1). Critical numbers regarding max # of sprites were 8 (NES), 64 (NES).