SYSTEMS GUIDE
Memory Map
by James Capparell
The memory map we are presenting is an on-going feature of ANTIC. We intend to publish the function of all the low memory RAM locations.
The format for our description is:
- 12 $C 2 DOSINI
- The Operating System variable called DOSINI uses 2 continguous locations starting at address 12 (decimal) or C (hexidecimal).
Page 0 continued
- 116 $74 2 ENDPT
- Contains layer of DELTAR and DELTAC used in conjunction with ROWAC/COLAC to control plotting of line points
- 118 $76 1 DELTAR
- Contains absolute value of NEWROW-ROWCRS.
- 119 $77 2 ROWINC
- Contains absolute value NEWROW-COLCRS. These values and ROWINC and COLINC define slope of line to be drawn.
- 121 $79 1 ROWINC
- Row increment +1 or -1.
- 122 $7A 1 COLINC
- Column increment +1 or -1.
- 123 $7B SWPFLG
- Split screen cursor control.
- 124 $7C 1 HOLDHC
- Character moved here before control and shift logic processed.
- 125 $7D 1 INSDAT
- Temporary storage used by display handler.
- 126 $7E 2 COUNTR
- Initially contains larger of DELTAR and DELTAC which is number of iterations to generate a line. This value decremented after every point is plotted. When = 0 then line is finished.
- 128 $80 2 LOMEM
- This points to a 256 byte buffer used to tokenized one line of BASIC. This buffer is located at the end of the O.S. RAM.
- 130 $82 2 VNTP
- Points to list of all variable names used in a program. Each name is stored in the order entered in ATASCII code. Maximum of 128 names.
- 132 $84 2 VNTD
- Points to end of variable name table. Points to a zero byte when all 128 names not used.
- 134 $86 2 VVTP
- Points to variable value table. Eight bytes allocated for each variable in name table.
- 136 $88 2 STMTAB
- Points to statement table which contains the tokenized BASIC statements. Also the immediate mode lines.
- 138 $8A 2 STMCUR
- The BASIC interpreter uses this pointer to access the tokens within a line of the statement table.
- 140 $8C 2 STARP
- Points to the block containing all the string and array data. Memory is reserved and enlarged whenever a dimension statement is encountered. Strings are stored one byte (ATASCII) per character. Arrays are stored as six byte BCD (Binary Coded Decimal) per element.
- 142 $8E 2 RUNSTK
- Points to the software run time stack. The stack maintains GOSUB and FOR/NEXT entries. The POP statement affects this stack.
- 144 $90 2 MEMTOP
- Points to the end of the user program. The FRE function returns the value calculated by subtracting the contents of this location from the contents of HIMEM at $2E5 and $2E6. Don't confuse this MEMTOP with the O.S. variable of the same name at $2E5.
End of Page 0
If anyone had determined the function of the other zero page locations let us know.
Page 2
- 512 $200 2 VDSLST
- Initialized to [$E7B3] if NMI interrupt occurred and it was caused by a DLI then JMP thru here. Since the OS does not use DLIs this is init'd to point to an RTI.
- 514 $202 2 VPRCED
- Initialized to [$E7B2] if IRQ interrupt occurred due to serial I/O bus proceed line then JMP thru here.
- 516 $204 2 VINTER
- Initialized to [$E7B2] if IRQ interrupt due to serial I/O bus interrupt then JUMP thru here.
- 518 $206 2 VBREAK
- Initialized to [$E7B2] if IRQ interrupt due to 6502 BRK instruction execution then JMP thur here.
- 520 $208 2 VKEYBD
- Initialized to [$FFBE] if IRQ interrupt due to keypress then JMP thru here to keyboard handler.
- 522 $20A 2 VSERIN
- Initialized to [$EB11] if IRQ interrupt due to I/O bus input ready then JMP thru here.
- 524 $20C 2 VSEROR
- Initialized to [$EA90] if IRQ interrupt due to I/O bus output ready then JMP thru here.
- 526 $20E 2 VSEROC
- Initialized to [$EAD1] if IRQ interrupt due to I/O bus output complete then JMP thru here.
- 528 $210 2 VTIMR1
- POKEY timer 1 interrupt vector.
- 530 $212 2 VTIMR2
- POKEY timer 2 interrupt vector.
- 532 $214 2 VTIMR4
- POKEY timer 4 interrupt vector.
- 534 $216 2 VIMIRQ
- Initialized to [$E6F6] if IRQ interrupt occurs then JMP thru here to determine cause.
- 536 $218 2 CDTMV1
- SIO timeout decremented at every VBLANK stage 1 when this location counts down to 0 then JSR thru CDTMA1 [$226].
- 538 $21A 2 CDTMV2
- Timer decremented at almost every VBLANK subject to critical section test (stage 2 process).
- 540 $21C 2 CDTMV3
- Timer decremented at almost every VBLANK subject to critical section test (stage 2 process).
- 542 $21E 2 CDTMV4
- Timer save as 2 & 3.
- 544 $220 2 DCTMV5
- Timer same as 2, 3 & 4. 3, 4, 5 set flags CDTMF3=$22A, CDTMF4=$22C and CDTMV5=$22E when they equal zero.
- 546 $222 2 VVBLKI
- Initialized to [$E701] stage 1 vertical blank vector NMI interrupt.
- 548 $224 2 VVBLKD
- Initialized to [$E93E] system return from interrupt.
- 550 $226 2 CDTMA1
- SIO timeout vector--When CDTMV1 [$218] times out it vectors through here.
- 552 $228 2 CDTMA2
- NO SYSTEM FUNCTION available to user enter address of routine to be executed at timer count down to 0.
- 554 $22A 1 CDTMF3
- Byte flag set when CDTMV3 [$21C,21D] counts down to 0.
- 555 $22B 1 SRTIMR
- Software repeat timer, controlled by IRQ device routine, establishes initial delay before key will repeat--1/2 sec. Stage 2 Vblank establishes repeat rate 10/sec. decrements timer, implements auto repeat logic.
- 556 $22C 1 CDTMF4
- Byte flag set when CDTMV4 [$21E] counts down to 0.
- 557 $22D 1 INTEMP
- Used by SETVBL routine.
- 558 $22E 1 CDTMF5
- Byte flag set when CDTMV5 [$220] counts to 0.
- 559 $22F 1 SMDCTL
- Shadow for DMACTL [$D400] Default value $22.
- bit 5=1 enable Display List instruction fetch DMA.
- bit 4=1 enable 1 line P/M resolution.
- bit 4=0 enable 2 line P/M resolution.
- bit 3=1 enable Player DMA.
- bit 2=1 enable Missle DMA.
- bits 1,0=0 0 no Playfield DMA.
- bits 1,0=0 1 narrow Playfield DMA 128 color clocks.
- bits 1,0=1 0 standard Playfield DMA 160 clocks.
- bits 1,0=1 1 wide Playfield DMA 192 clocks.
- 560 $230 1 SDLSTL
- Shadow for DLISTL [$D402] This location initialized to Start of Display List, lobyte.
- 561 $231 1 SDLSTH
- Start of Display List, hibyte.
- 562 $232 1 SSKCTL
- Shadow for SKCTL [$D20F].
- bit 7=1 force break serial output to 0.
- bit 6,4=serial port mode control.
- bit 3=1 serial output transmitted as 2-tone instead of logic true/false.
- bit 2=1 pot counter completes within 2 scan lines instead of 1 frame time.
- bit 1=1 enable keyboard scanning circuit.
- bit 0=1 enable key debounce circuit.
- 563 $233 1 SPARE
- No Operating System Function.
- 564 $234 1 LPENH
- Light pen horizontal value shadow for [$D40C]. Value range 0-227 wrap to 0 at right edge of standard width screen.
- 565 $235 1 LPENV
- Light pen vertical value shadow for [$D40D]. Value same as VCOUNT 2 line resolution. Both pen values modified if any joystick trigger lines pulled low.