SuperBASIC Memory Map
From F256 Foenix
Jump to navigationJump to search
Memory Map under BASIC
| Initial Address | End Address | Description | Bytes |
|---|---|---|---|
| $0000 | - | MMU Control Register | 1 |
| $0001 | - | I/O Control Register | 1 |
| $0002 | $0007 | Free Zero Page Addresses | 6 |
| $0008 | $000F | MMU Control Addresses | 8 |
| $0010 | $002F | Free Zero Page Addresses | 32 |
| $0030 | $003F | Used Zero Page Addresses for (xx),Y Addressing | 16 |
| $0040 | $0041 | Current Address on screen of start of line | 2 |
| $0042 | $004F | Avaliable Zero Page Addresses | 14 |
| $0050 | $00AF | Number / Floating Point Stack for 16 numbers | 96 |
| $00B0 | $00EF | Available Zero Page | 64 |
| $00F0 | $00FF | Kernel Arguments in Zero Page* | 16 |
| $0100 | $01FF | Hardware Stack of 6502 | 256 |
| $0200 | $0228 | Basic mini-Kernel memory | 40 |
| $0229 | $03FF | Buffer area by Sound Command in BASIC (available if not using this command) | 470 |
| $0400 | $041F | Control Storage first 8 bytes control syntax highlighting | 32 |
| $0420 | $0814 | Memory Storage | 1012 |
| $0678 | $067F | Keyboard Buffer (8 keys max) | 8 |
| $0680 | $0680 | Pending key presses in Keyboard Buffer | 1 |
| $07ea | $07ea | Y position of blinking cursor (***does not adjust the actual cursor position) | 1 |
| $07eb | $07eb | X position of blinking cursor (***does not adjust the actual cursor position) | 1 |
| $0814 | $0FFF | Available Low Memory | 2027 |
| $1000 | $1FFF | SuperBASIC Identifier Tables, allocated memory, string vars, stack | 4kb |
| $2000 | $77FF | SuperBASIC Program Tokenized Code (grows Upward) | 22kb |
| $7800 | $7FFF | Top 2k of SuperBASIC Program tokenize code or used for ML routines in low memory | 2kb |
| $8000 | $BFFF | SUPERBASIC CODE | 16kb |
| $C000 | $DFFF | I/O Memory Pages / Underlying Kernel Code (Selectable with I/O control Register) | 8kb |
| $E000 | $FFEF | KERNEL CODE | 8176 |
| $FFF0 | $FFFF | Reset Vectors and NMI / IRQ / BRK Vectors | 16 |
| $01:0000 | $02:2BFF | Default Memory used by BASIC bitmap graphics | 75kb |
| $02:2C00 | $02:7FFF | Available High Memory | 21kb |
| $02:8000 | $02:F000 | Used for BASIC Cross Development w/PC or MAC (or Available High Memory) | 32k |
| $03:0000 | $03:7FFF | Used for Sprite Data in BASIC | 32kb |
| $03:8000 | $03:FFFF | Unless not running from Flash, Used for ROM Images | 32k |
| $04:0000 | $07:DFFF | Available High Memory | 248kb |
| $07:E000 | $07:FFFF | Being considered to be Reserved for Environmental Variables | 8Kb |
| $10:0000 | $13:FFFF | Cartridge Expanded Memory (addresable only by CPU) | 256kb |
| $14:0000 | $1F:FFFF | Future Expansions? | 768kb |
*Detail of Kernel Arguments in Zero Page (TBC!)
| Initial Address | End Address | Description | bytes |
|---|---|---|---|
| $F0 | $F1 | Kernel Event Struct Pointer - points to an 8 byte buffer with a "kernel event" structure | 2 bytes |
| $F3 | Kernel File stream number (Read or Write) | 1 byte | |
| $F4 | Kernel File buffer length (Read or Write) | 1 byte | |
| $F5 | $FA | ??? | 6 bytes |
| $FB | $FC | Kernel Buffer Address Pointer - Multiple purpouse buffer area for recv/send data from Kernel Events | 2 bytes |
| $FD | Kernel Buffer Length | 1 byte | |
| $FE | $FF | Unknown | 2 bytes |