Classic Computer Magazine Archive ANTIC VOL. 1, NO. 2 / JUNE 1982


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.