General considerations
The first important thing to consider, is that the memory map is not the same in all video modes. Since HIRES mode require 8000 bytes of memory while TEXT mode require only 1120 bytes, some things are moved around. This is the main reason while there are two memory maps.
TEXT mode memory map
START | NAME | DESCRIPTION | END | SIZE |
C000 | Read Only Memory (ROM) | Contains the BASIC interpreter and all graphics/sound/math code | FFFF | 16384 |
BFE0 | FREE MEMORY | This area is free. | BFFF | 32 |
BB80 | SCREEN | 40*28 character mode Line 0 is the status line |
BFDF | 1120 |
B800 | ALTERNATE CHAR SET | Mozaic char set in a 2x3 matrix for semi-graphics drawing. Can be redefined | BB7F | 896 |
B400 | STANDARD CHAR SET | Contains the font displayed on screen. Can be redefined. Characters of ASCII code less than 32 can only be displayed in HIRES mode using the CHAR commande since those values are display attributes in TEXT mode ! | B7FF | 1024 |
9800 | GRABABLE MEMORY | This area is unused in TEXT mode, but by default is reserved by the BASIC in order to allow the use of HIRES mode. To use it from BASIC, you need to use the GRAB command. | B3FF | 7168 |
500 | FREE MEMORY | This zone is entirelly available to your programs. | 97FF | 37632 |
400 | Page 4 | Is officially used only by the DOS. In reality most little utility programs are conceived to be used in page 4. DOS uses this location to put a piece of code that redirect BASIC commands to the BASIC ROM or to the overlay memory. | 4FF | 256 |
300 | Page 3 | This is the input-output area. Those 256 bytes are linked to the expansion bus of the oric and are used to communicate with the external peripherals. This is no real memory. | 3FF | 256 |
200 | Page 2 | Contains run time variables used by the BASIC interpreter as well as interupt handlers. | 2FF | 256 |
100 | Page 1 | This area is used by the 6502 as the stack. It's non movable. |
1FF | 256 |
0 | Page 0 | This 256 bytes area can be optimaly used by the 6502 processor contrary to the other part of the memory. It also allow the use of specific adressing modes. The C Library and the system use a part of this area. | FF | 256 |
HIRES mode memory map
START | NAME | DESCRIPTION | END | SIZE |
C000 | Read Only Memory (ROM) | Contains the BASIC interpreter and all graphics/sound/math code | FFFF | 16384 |
BFE0 | FREE MEMORY | This area is free. | BFFF | 32 |
A000 | SCREEN | 200 scanlines of 40 bytes each, and 3 text lines of 40 bytes each | BFDF | 8000 |
9C00 | ALTERNATE CHAR SET | Mozaic char set in a 2x3 matrix for semi-graphics drawing. Can be redefined | 9FFF | 896 |
9800 | STANDARD CHAR SET | Contains the font displayed on screen. Can be redefined. Characters of ASCII code less than 32 can only be displayed in HIRES mode using the CHAR commande since those values are display attributes in TEXT mode ! | 9BFF | 1024 |
500 | FREE MEMORY | This zone is entirelly available to your programs. | 97FF | 37632 |
400 | Page 4 | Is officially used only by the DOS. In reality most little utility programs are conceived to be used in page 4. DOS uses this location to put a piece of code that redirect BASIC commands to the BASIC ROM or to the overlay memory. | 4FF | 256 |
300 | Page 3 | This is the input-output area. Those 256 bytes are linked to the expansion bus of the oric and are used to communicate with the external peripherals. This is no real memory. | 3FF | 256 |
200 | Page 2 | Contains run time variables used by the BASIC interpreter as well as interupt handlers. | 2FF | 256 |
100 | Page 1 | This area is used by the 6502 as the stack. It's non movable. |
1FF | 256 |
0 | Page 0 | This 256 bytes area can be optimaly used by the 6502 processor contrary to the other part of the memory. It also allow the use of specific adressing modes. The C Library and the system use a part of this area. | FF | 256 |