Why did the designers of the Commodore VIC-20 chose to put the main cartridge ROM area at $A000, beyond the character ROM area at $8000 and the I/O area at $9000? Flipping the two around, with the ROM area at $8000, the character ROM at $A000 and the I/O at $B000 would have allowed to alternatively use the $8000 area for BASIC-usable RAM, giving a maximum total of 35.5K of BASIC-usable RAM with a 32K expansion, instead of having a maximum of 27.5K for BASIC with a 24K expansion, as it was in the real VIC-20. Was this question simply not considered, or is there another reason?
1 Answer
Why did the designers of the Commodore VIC-20 chose to put the main cartridge ROM area at $A000, beyond the character ROM area at $8000 and the I/O area at $9000?
Because that's the natural order for 6502 machines?
A 6502 is designed to have
- RAM at bottom to provide at least ZP and stack
- ROM at TOP to provide hardware vectors
thus
- I/O goes by default right below ROM to allow maximum RAM.
Keep in mind the VIC20 does not waste gates for memory mapping.
With (up to) 24 KiB of ROM, 4 KiB Chargen and 4 KiB of I/O a nice 32 KiB are available for continuous RAM (*1). Quite comfortable for a 1980 home computer (*2). The fact that Commodore provided expansions only go up to 24 KiB, for a total of 27.5 KiB doesn't change anything.
*1 - By chance mostly the same layout the VIC's predecessor, the PET had.
*2 - Competing machines were Atari 400 or TI 99/4A, both with 16 KiB RAM.
-
1It's pretty much necessary to have some RAM in zero page and at least some ROM at $FFFC-$FFFD, and so systems with one bank of RAM tend to put it at the bottom and systems with one bank of ROM put it at the top, but once one adds in multiple banks of memory, especially if some portions are on the mainboard with the CPU but others aren't, all bets are off. The Atari 2600 VCS places RAM at addresses $0080-$00FF and $0180-$01FF, between I/O in the $0000-$003F range and I/O in the $0280-$028F range, and many NES carts have RAM at $6000, above I/O at $2000 and $4000.– supercatJul 26 at 22:48