Acorn System Memory Map ======================= Overview -------- 0000-03FF Low RAM 0400-0FFF I/O devices 1000-1FFF RAM or I/O devices 2000-DFFF Main RAM E000-F000 DOS/Econet ROM F000-FFFF OS/COS/Monitor ROM Additional ROMs with program code are configured below &E000 working downwards. For instance, Acorn BASIC at &C000-&CFFF with the floating Point Extension at &D000-&DFFF. BBC BASIC for the System loads to RAM at &A000-&DFFF. Summary ------- 0000-03FF Low RAM 0000-00FF Zero page 0100-01FF OSCLI buffer, input buffer and 6502 stack 0200-02FF Vectors, user workspace 0300-03FF User workspace 0400-0FFF I/O devices 0400-07FF Teletext screen RAM 0800-08FF Teletext 6845 controller 0900-09FF 0A00-0AFF 8271 floppy disk controller 0B00-0BFF 0C00-0CFF Universal Interface card - 6522 VIA, 6850 ACIA, 8255 PIO 0C00: 6522 VIA - Printer port and user port 0C20: 6850 ACIA - Serial port 0C40: 8255 PIO - Parallel I/O 0D00-0DFF 0E00-0EFF 8154 PIO/RAM 1 0E20: PIO (keyboard/LED control) 0E80: RAM 0F00-0FFF 8154 PIO/RAM 2 0F20: PIO 0F80: RAM 1000-1FFF High-res video 1000-17FF 80x25 screen RAM 1840-187F 80x25 6845 controller 1900-19FF 1940-197F Econet 2000-DFFF System/Program/User memory E000-EFFF DOS/Econet ROM F000-FFFF OS/COS/Monitor ROM FFC0-FFFF OS entry points Details ------- 0000-00FF Zero page 0000-0097 User workspace 0098-00AF DOS workspace 00C0-00FF MOS workspace 00FE Printer ignore character 00FF Interupt TEMPA 0100-01FF OSCLI buffer, input buffer and 6502 stack 0100 upwards: OSCLI buffer, input buffer 01FF downwards: 6502 stack 0200-02FF Vectors 0200/1 NMIVEC NMI service routine 0202/3 BRKVEC BRK service routine 0204/5 IRQVEC IRQ service routine 0206/7 COMVEC Command Line Interpreter 0208/9 WRCVEC Write character 020A/B RDCVEC Read character 020C/D LODVEC Load file 020E/F SAVVEC Save file 0210/1 RDRVEC Read open file info 0212/3 STRVEC Write open file info 0214/5 BGTVEC Get byte from open file 0216/7 BPTVEC Put byte to open file 0218/9 FNDVEC Open a file 021A/B SHTVEC Close a file 021C/D IN1VEC Used by Econet 021E/F IN2VEC 0220-023F Econet workspace 0240-02FF User workspace 0300-03FF User workspace 0400-07FF Teletext screen RAM 0800-08FF Teletext 6845 controller 0800 6845 Register 0801 6845 Data 0900-09FF 0A00-0AFF 8271 Floppy disk controller - 8271 0A00 8271 Command/Status 0A01 8271 Parameter/Result 0A02 8271 Reset 0A03 8271 do not use 0A04 8271 Data 0B00-0BFF 0C00-0CFF Universal Interface card - 6522 VIA, 6850 ACIA, 8255 I/O 0C00 Output register B (User) Input register B (User) 0C01 Output register A (Printer) Input register A (Printer) 0C02 Data direction register B (User) Data direction register B (User) 0C03 Data direction register A (Printer) Data direction register A (Printer) 0C04 T1 low-order counter T1 low-order latches 0C05 T1 high-order counter T1 high-order counter 0C06 T1 low-order latches T1 low-order latches 0C07 T1 high-order latches - 0C08 T2 low-order latches T2 low-order counter 0C09 T2 high order counter T2 high order counter 0C0A Shift register Shift register 0C0B Auxilary control register Auxilary control register 0C0C Peripheral control register Peripheral control register 0C0D Interupt flag register Interupt flag register 0C0E Interupt enable register Interupt enable register 0C0F Output register A, no handshake Input register A, no handshake 0C20 6850 Control/Status, baud rate set with hardware links 0C21 6850 Data 0C40 8255 Port A 0C41 8255 Port B 0C42 8255 Port C 0C43 8255 Control/Status 0D00-0DFF 0E00-0EFF 8154 PIO/RAM 1 (keypad/LED control) 0E00+n Read bit n/Clear bit n of port A 0E08+n Read bit n/Clear bit n of port B 0E10+n Read bit n/Set bit n of port A 0E18+n Read bit n/Set bit n of port B 0E20 Read/Write Port A data (LEDs) 0E21 Read/Write Port B data (keyboard: b7=~strobe, b6-b0=character) 0E22 Port A direction 0E23 Port B direction 0E24 Mode Definition 0E80-0EFF RAM 0F00-0FFF 8154 PIO/RAM 2 0F00+n Read bit n/Clear bit n of port A 0F08+n Read bit n/Clear bit n of port B 0F10+n Read bit n/Set bit n of port A 0F18+n Read bit n/Set bit n of port B 0F20 Read/Write Port A data 0F21 Read/Write Port B data 0F22 Port A direction 0F23 Port B direction 0F24 Mode Definition 0F80-0FFF RAM 1000-17FF High-res screen RAM 1800-18FF High-res 6845 controller 1840 6845 Register 1841 6845 Data 1900-19FF Econet controller 1940 6854 ALDC register 1 1941 6854 ALDC register 2 1942 6854 ALDC register 3 1943 6854 ALDC data register 1944 Station number 2000-DFFF System/Program/User memory 2000-21FF DOS Catalog buffer 2200-22FF DOS Sequential File information 2300-27FF DOS Sequential File buffers 2800-xxxx User memory A000-DFFF BBC BASIC C000-CFFF Atom BASIC ROM D000-DFFF Atom BASIC floating point ROM E000-EFFF DOS/Econet ROM E000 DOS/Econet: Initialise and select filing system E003 Econet: Initialise networking primitives only F000-FFFF OS/COS/Monitor ROM FFC0-FFFF OS entry points FFCB OSSHUT JMP (SHTVEC) ; Close a file FFCE OSFIND JMP (FNDVEC) ; Open a file FFD1 OSBPUT JMP (BPTVEC) ; Put a byte to open file FFD4 OSBGET JMP (BGTVEC) ; Get a byte from open file FFD7 OSSTAR JMP (STRVEC) ; Write open file info FFDA OSRDAR JMP (RDRVEC) ; Read open file info FFDD OSSAVE JMP (SAVVEC) ; Save a file FFE0 OSLOAD JMP (LODVEC) ; Load a file FFE3 OSRDCH JMP (RDCVEC) ; Read character FFE6 OSECHO JSR OSRDCH ; Read character and echo FFE9 OSASCI CMP #&0D ; Write ASCII sequence FFEB BNE OSWRCH FFED OSCRLF LDA #&0A ; Write LF-CR Newline sequence FFEF JSR OSWRCH FFF2 OSWRCR LDA #&0D ; Write CR FFF4 OSWRCH JMP (WRCVEC) ; Write a character FFF7 OSCLI JMP (COMVEC) ; Command Line Interpreter FFFA NMIV EQUW NMI ; Hardware NMI vector FFFC RESETV EQUW RESET ; Hardware Reset vector FFFE IRQV EQUW IRQ ; Hardware IRQ/BRK vector Workspace RAM usage =================== AtomDOS uses: 2000-27FF workspace 3C00-3FFF user RAM on disk card E000-EFFF DOS ROM System Universal Interface Card: Card address configurable in blocks of 128 bytes between &0000 and &7F80. Device addresses decoded as: 6522: base+&00 6850: base+&20 8255: base+&40 unused: base+&60 Floppy Disk Controller Card address decoded as block of 128 bytes at &0A0x