Jupiter Ace - Memory Map ------------------------ based on disassembly from and the FAQ. worked on by kio last revision: 2005-11-14 The Jupiter Ace has 8 kB of ROM and 3 kB of built-in RAM, which is not fully address-decoded, so that banks of 1 kB appear mirrored 2 or 4 times in their 8 kB address range from $2000 to $3FFF. Depending on the mirrored block choosen for a RAM access by the CPU either the CPU or the ULA (video logic) has access priority. (probably. kio) 0000-2000 8 kB ROM: ACE OS and Forth Interpreter/Compiler 2000-2800 1 kB video RAM. actually 2 mirrored blocks 2000-2400-2800. 2000-2400 cpu access has precedence over video circuitry. cpu access probably results in 'snow' on the screen. (?) 2000-2300 Unused. 2300-2400 |0|; Cassette Header Information (256 bytes) 2400-2800 Video access has priority over cpu. 2400-2700 Video memory, 768 bytes. 32 x 24 Display Bits 6-0 address character in the Character Definitions Table Bit 7 indicates inverse (black on white) text. 2700-2800 |0| PAD. (work space used by Forth) 2800-3000 Character Definition Table. actually 2 mirrored blocks 2800-2C00-3000. 2800-2C00 Unused by cpu. video circuitry reads from this address range. Unclear: can cpu write to character set using this block? (?) 2C00-3000 1 kB Character Definition Table, 128 x 8 bytes. write-only for cpu! 3000-4000 User Program. actually 4 mirrored blocks 3000-3400-3800-3C00-4000. 3000-3400 Unused. 3400-3800 Unused. 3800-3C00 Unused. 3C00-4000 User Program. |SYSVARS| DICT {12} DATA STACK -> ((free)) <- RET STACK 4000-10000 48 kB available for RAM expansion. [wearmouth.demon.co.uk] The 768 bytes of video memory is accessed by the ROM using addresses $2400 - $26FF. This gives priority to the video circuitry which also needs this information to build the TV picture. The byte at $2700 is set to zero so that it is easy for the ROM to detect when it is at the end of the screen. The 254 bytes remaining are the PAD - the workspace used by FORTH. This same area is used by the tape recorder routines to assemble the tape header information but since, for accurate tape timing, the FORTH ROM needs priority over the video circuitry, then the ROM uses addresses $2301 - $23FF. Similarly the Character Set is written to by the ROM (and User) at the 1K section starting at $2C00. The video circuitry accesses this using addresses $2800 - $2BFF to build the TV picture. It is not possible for the ROM or User to read back the information from either address so this precludes the saving of character sets and writing a driver for a device like the ZX Printer. The final 1K or RAM has four addresses although it is normal to use addresses $3C00 - $3FFF. The first sixty three bytes are the System Variables which hold information like the number BASE and CONTEXT, and even the plotting coordinates should the user wish to develop a word like DRAW to draw lines. Then comes the User Dictionary, the first word of which is "FORTH" which links to the Dictionary in ROM. Next a gap of 12 bytes to allow for Data Stack underflow and then the Data Stack itself which grows upwards. At the opposite end of free memory is the Return Stack (machine stack) which grows downwards.