mirror of
https://github.com/erkyrath/infocom-zcode-terps.git
synced 2026-01-31 05:42:31 +00:00
Initial commit.
This commit is contained in:
136
atari/eq.src
Normal file
136
atari/eq.src
Normal file
@@ -0,0 +1,136 @@
|
||||
PAGE
|
||||
SBTTL "--- MEMORY ORGANIZATION ---"
|
||||
|
||||
TRUE EQU $FF
|
||||
FALSE EQU 0
|
||||
LO EQU 0
|
||||
HI EQU 1
|
||||
|
||||
; SEE "HARDEQ.ASM" FOR ATARI MEMORY MAP
|
||||
|
||||
; ---------------------
|
||||
; Z-CODE HEADER OFFSETS
|
||||
; ---------------------
|
||||
|
||||
ZVERS EQU 0 ; VERSION BYTE
|
||||
ZMODE EQU 1 ; MODE SELECT BYTE
|
||||
ZID EQU 2 ; GAME ID WORD
|
||||
ZENDLD EQU 4 ; START OF NON-PRELOADED Z-CODE
|
||||
ZGO EQU 6 ; EXECUTION ADDRESS
|
||||
ZVOCAB EQU 8 ; START OF VOCABULARY TABLE
|
||||
ZOBJEC EQU 10 ; START OF OBJECT TABLE
|
||||
ZGLOBA EQU 12 ; START OF GLOBAL VARIABLE TABLE
|
||||
ZPURBT EQU 14 ; START OF "PURE" Z-CODE
|
||||
ZSCRIP EQU 16 ; FLAG WORD
|
||||
ZSERIA EQU 18 ; 3-WORD ASCII SERIAL NUMBER
|
||||
ZFWORD EQU 24 ; START OF FWORDS TABLE
|
||||
ZLENTH EQU 26 ; LENGTH OF Z-PROGRAM IN WORDS
|
||||
ZCHKSM EQU 28 ; Z-CODE CHECKSUM WORD
|
||||
|
||||
PAGE
|
||||
SBTTL "--- ZIP Z-PAGE VARIABLES ---"
|
||||
|
||||
OPCODE EQU ZEROPG ; (BYTE) CURRENT OPCODE
|
||||
NARGS EQU OPCODE+1 ; (BYTE) # ARGUMENTS
|
||||
ARG1 EQU OPCODE+2 ; (WORD) ARGUMENT #1
|
||||
ARG2 EQU OPCODE+4 ; (WORD) ARGUMENT #2
|
||||
ARG3 EQU OPCODE+6 ; (WORD) ARGUMENT #3
|
||||
ARG4 EQU OPCODE+8 ; (WORD) ARGUMENT #4
|
||||
ABYTE EQU OPCODE+10 ; (BYTE) X-OP ARGUMENT BYTE
|
||||
ADEX EQU OPCODE+11 ; (BYTE) X-OP ARGUMENT INDEX
|
||||
|
||||
VALUE EQU OPCODE+12 ; (WORD) VALUE RETURN REGISTER
|
||||
I EQU VALUE+2 ; (WORD) GEN-PURPOSE REGISTER #1
|
||||
J EQU VALUE+4 ; (WORD) GEN-PURPOSE REGISTER #2
|
||||
K EQU VALUE+6 ; (WORD) GEN-PURPOSE REGISTER #3
|
||||
|
||||
ZSP EQU VALUE+8 ; (BYTE) Z-STACK POINTER
|
||||
OLDZSP EQU ZSP+1 ; (BYTE) OLD Z-STACK POINTER
|
||||
|
||||
ZPC EQU ZSP+2 ; (3 BYTES) ZIP PROGRAM COUNTER
|
||||
ZPCL EQU ZPC ; (BYTE) LOW 8 BITS OF [ZPC]
|
||||
ZPCM EQU ZPC+1 ; (BYTE) MIDDLE 8 BITS OF [ZPC]
|
||||
ZPCH EQU ZPC+2 ; (BYTE) HIGH BIT OF [ZPC]
|
||||
ZPCFLG EQU ZPC+3 ; (BYTE) FLAG: "TRUE" IF [ZPCPNT] VALID
|
||||
ZPCPNT EQU ZPC+4 ; (WORD) ABS POINTER TO CURRENT Z-PAGE
|
||||
|
||||
MPC EQU ZPC+6 ; (3 BYTES) MEMORY PROGRAM COUNTER
|
||||
MPCL EQU MPC ; (BYTE) LOW 8 BITS OF [MPC]
|
||||
MPCM EQU MPC+1 ; (BYTE) MIDDLE 8 BITS OF [MPC]
|
||||
MPCH EQU MPC+2 ; (BYTE) HIGH BIT OF [MPC]
|
||||
MPCFLG EQU MPC+3 ; (BYTE) FLAG: "TRUE" IF [MPCPNT] VALID
|
||||
MPCPNT EQU MPC+4 ; (WORD) ABS POINTER TO CURRENT M-PAGE
|
||||
|
||||
LRU EQU MPC+6 ; (BYTE) EARLIEST TIMESTAMP
|
||||
ZCODE EQU LRU+1 ; (BYTE) 1ST ABSOLUTE PAGE OF PRELOAD
|
||||
ZPURE EQU LRU+2 ; (BYTE) 1ST VIRTUAL PAGE OF "PURE" Z-CODE
|
||||
PAGE0 EQU LRU+3 ; (BYTE) 1ST PAGE OF ACTUAL SWAPPING SPACE
|
||||
PMAX EQU LRU+4 ; (BYTE) MAXIMUM # OF SWAPPING PAGES
|
||||
ZPAGE EQU LRU+5 ; (BYTE) CURRENT SWAPPING PAGE
|
||||
TARGET EQU LRU+6 ; (WORD) TARGET PAGE FOR SWAPPING
|
||||
STAMP EQU LRU+8 ; (BYTE) CURRENT TIMESTAMP
|
||||
SWAP EQU LRU+9 ; (BYTE) EARLIEST BUFFER
|
||||
|
||||
GLOBAL EQU LRU+10 ; (WORD) GLOBAL VARIABLE POINTER
|
||||
VOCAB EQU GLOBAL+2 ; (WORD) VOCAB TABLE POINTER
|
||||
FWORDS EQU GLOBAL+4 ; (WORD) F-WORDS TABLE POINTER
|
||||
OBJTAB EQU GLOBAL+6 ; (WORD) OBJECT TABLE POINTER
|
||||
|
||||
; Z-STRING MANIPULATION VARIABLES
|
||||
|
||||
IN EQU GLOBAL+8 ; (6 BYTES) INPUT BUFFER
|
||||
OUT EQU IN+6 ; (6 BYTES) OUTPUT BUFFER
|
||||
|
||||
SOURCE EQU OUT+6 ; (BYTE) SOURCE BUFFER POINTER
|
||||
RESULT EQU SOURCE+1 ; (BYTE) RESULT TABLE POINTER
|
||||
LINLEN EQU SOURCE+2 ; (BYTE) LENGTH OF CURRENT LINE
|
||||
WRDLEN EQU SOURCE+3 ; (BYTE) LENGTH OF CURRENT WORD
|
||||
ENTRY EQU SOURCE+4 ; (WORD) ADDR OF CURRENT RESULT ENTRY
|
||||
NENTS EQU SOURCE+6 ; (WORD) # ENTRIES IN VOCAB TABLE
|
||||
ESIZE EQU SOURCE+8 ; (BYTE) SIZE OF VOCAB TABLE ENTRIES
|
||||
PSET EQU SOURCE+9 ; (BYTE) PERMANENT CHARSET
|
||||
TSET EQU SOURCE+10 ; (BYTE) TEMPORARY CHARSET
|
||||
ZCHAR EQU SOURCE+11 ; (BYTE) CURRENT Z-CHAR
|
||||
OFFSET EQU SOURCE+12 ; (BYTE) F-WORD TABLE OFFSET
|
||||
ZFLAG EQU SOURCE+13 ; (BYTE) Z-WORD ACCESS FLAG
|
||||
ZWORD EQU SOURCE+14 ; (WORD) CURRENT Z-WORD
|
||||
CONCNT EQU SOURCE+16 ; (BYTE) Z-STRING SOURCE COUNTER
|
||||
CONIN EQU SOURCE+17 ; (BYTE) CONVERSION SOURCE INDEX
|
||||
CONOUT EQU SOURCE+18 ; (BYTE) CONVERSION DEST INDEX
|
||||
|
||||
QUOT EQU SOURCE+19 ; (WORD) QUOTIENT FOR DIVISION
|
||||
REMAIN EQU QUOT+2 ; (WORD) REMAINDER FOR DIVISION
|
||||
MTEMP EQU QUOT+4 ; (WORD) MATH TEMPORARY REGISTER
|
||||
QSIGN EQU QUOT+6 ; (BYTE) SIGN OF QUOTIENT
|
||||
RSIGN EQU QUOT+7 ; (BYTE) SIGN OF REMAINDER
|
||||
DIGITS EQU QUOT+8 ; (BYTE) DIGIT COUNT FOR "PRINTN"
|
||||
|
||||
TIMEFL EQU QUOT+9 ; (BYTE) "TRUE" IF TIME MODE
|
||||
LENGTH EQU TIMEFL+1 ; (BYTE) LENGTH OF LINE IN [LINBUF]
|
||||
OLDLEN EQU TIMEFL+2 ; (BYTE) OLD LINE LENGTH
|
||||
SCRIPT EQU TIMEFL+3 ; (BYTE) SCRIPT ENABLE FLAG
|
||||
LINCNT EQU TIMEFL+4 ; (BYTE) LINE COUNTER
|
||||
LMAX EQU TIMEFL+5 ; (BYTE) MAX # LINES/SCREEN
|
||||
|
||||
IOCHAR EQU TIMEFL+6 ; (BYTE) CHARACTER BUFFER
|
||||
SLINE EQU IOCHAR+1 ; (BYTE) BORDERLINE FOR SPLIT
|
||||
SPSTAT EQU IOCHAR+2 ; (BYTE) SPLIT SCREEN STATUS FLAG
|
||||
LFROM EQU IOCHAR+3 ; (WORD) "FROM" LINE ADDRESS
|
||||
LTO EQU IOCHAR+5 ; (WORD) "TO" LINE ADDRESS
|
||||
PSTAT EQU IOCHAR+7 ; (BYTE) PRINTER STATUS FLAG
|
||||
PRLEN EQU IOCHAR+8 ; (BYTE) SCRIPT LINE LENGTH
|
||||
|
||||
DBLOCK EQU IOCHAR+9 ; (WORD) Z-BLOCK TO READ
|
||||
DBUFF EQU DBLOCK+2 ; (WORD) RAM PAGE TO ACCESS (LSB = 0)
|
||||
SECTOR EQU DBLOCK+4 ; (WORD) TARGET SECTOR
|
||||
GPOSIT EQU DBLOCK+6 ; (BYTE) DEFAULT SAVE POSITION
|
||||
GDRIVE EQU DBLOCK+7 ; (BYTE) DEFAULT SAVE DRIVE
|
||||
TPOSIT EQU DBLOCK+8 ; (BYTE) TEMP SAVE POSITION
|
||||
TDRIVE EQU DBLOCK+9 ; (BYTE) TEMP SAVE DRIVE
|
||||
DRIVE EQU DBLOCK+10 ; (BYTE) CURRENT DRIVE
|
||||
|
||||
BLINK EQU DBLOCK+11 ; (WORD) CURSOR BLINK TIMER
|
||||
CSHAPE EQU BLINK+2 ; (BYTE) CURRENT CURSOR SHAPE
|
||||
|
||||
END
|
||||
|
||||
Reference in New Issue
Block a user