Oric memory map
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.
A second important element is that a 48k Oric actually has 64k of memory, but unfortunately the top 16k are overlapping with the 16k of ROM containing the BASIC, so it's not actually usable.
When a floppy disk drive is connected, some additional circuitry become available and allows to access the top 16k of RAM. If you use it, of course you cannot rely on the DOS anymore to access the disk, but you can use your own loader instead.
TEXT mode memory map
Here is what the memory locations are in TEXT mode:
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
And here is what the memory locations are in HIRES mode:
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 |
If you are more a visual person, here is what it looks like:
No known problem - please signal any issue on the Cross development tools forum.
comments powered by Disqus