|
|
1.1 ! root 1: PAGE ! 2: SBTTL "--- MEMORY ORGANIZATION ---" ! 3: ! 4: TRUE EQU $FF ! 5: FALSE EQU 0 ! 6: ! 7: DSTART EQU 0 ; START OF DIRECT-PAGE RAM ! 8: ! 9: MSTACK EQU MSTART+$FE ; TOP OF MACHINE STACK (254 BYTES) ! 10: IOBUFF EQU MSTART+$100 ; 256-BYTE DISK I/O BUFFER ! 11: ZSTACK EQU MSTART+$200 ; Z-STACK (255 WORDS) ! 12: ZSTAKL EQU 255 ; LENGTH OF Z-STACK IN WORDS ! 13: TOPSTA EQU (2*ZSTAKL)+ZSTACK ; TOP OF Z-STACK ! 14: PTABLE EQU MSTART+$400 ; PAGING TABLE ($140 BYTES/$A0 WORDS) ! 15: LRUMAP EQU MSTART+$550 ; TIMESTAMP MAP ($A0 BYTES) ! 16: LOCALS EQU MSTART+$600 ; LOCAL VARIABLE STORAGE (32 BYTES) ! 17: BUFFER EQU MSTART+$620 ; I/O LINE BUFFER (32 BYTES) ! 18: BUFSAV EQU MSTART+$640 ; I/O AUX BUFFER (32 BYTES) ! 19: ZIP EQU MSTART+$700 ; START OF EXECUTABLE CODE ! 20: ZCODE EQU ZIP+$1700 ; START OF Z-CODE (ASSUME 5.75K ZIP) ! 21: ! 22: ; Z-CODE HEADER OFFSETS ! 23: ! 24: ZVERS EQU 0 ; VERSION BYTE ! 25: ZMODE EQU 1 ; MODE SELECT BYTE ! 26: ZID EQU 2 ; GAME ID WORD ! 27: ZENDLD EQU 4 ; START OF NON-PRELOADED Z-CODE ! 28: ZBEGIN EQU 6 ; EXECUTION ADDRESS ! 29: ZVOCAB EQU 8 ; START OF VOCABULARY TABLE ! 30: ZOBJEC EQU 10 ; START OF OBJECT TABLE ! 31: ZGLOBA EQU 12 ; START OF GLOBAL VARIABLE TABLE ! 32: ZPURBT EQU 14 ; START OF "PURE" Z-CODE ! 33: ZSCRIP EQU 16 ; FLAG WORD ! 34: ZSERIA EQU 18 ; 3-WORD ASCII SERIAL NUMBER ! 35: ZFWORD EQU 24 ; START OF FWORDS TABLE ! 36: ZLENTH EQU 26 ; LENGTH OF Z-PROGRAM IN WORDS ! 37: ZCHKSM EQU 28 ; Z-CODE CHECKSUM WORD ! 38: ! 39: PAGE ! 40: SBTTL "--- ZIP D-PAGE VARIABLES ---" ! 41: ! 42: OPCODE EQU DSTART ; CURRENT OPCODE ! 43: ARGCNT EQU OPCODE+1 ; # ARGUMENTS ! 44: ARG1 EQU OPCODE+2 ; ARGUMENT #1 (WORD) ! 45: ARG2 EQU OPCODE+4 ; ARGUMENT #2 (WORD) ! 46: ARG3 EQU OPCODE+6 ; ARGUMENT #3 (WORD) ! 47: ARG4 EQU OPCODE+8 ; ARGUMENT #4 (WORD) ! 48: ! 49: LRU EQU OPCODE+10 ; (BYTE) LEAST RECENTLY USED PAGE INDEX ! 50: ZPURE EQU LRU+1 ; (BYTE) 1ST VIRTUAL PAGE OF PURE Z-CODE ! 51: PMAX EQU LRU+2 ; (BYTE) MAXIMUM # SWAPPING PAGES ! 52: ZPAGE EQU LRU+3 ; (BYTE) CURRENT SWAPPING PAGE ! 53: PAGE0 EQU LRU+4 ; (BYTE) 1ST ABS PAGE OF SWAPPING SPACE ! 54: TABTOP EQU LRU+5 ; (WORD) ADDRESS OF LAST P-TABLE ENTRY ! 55: STAMP EQU LRU+7 ; (BYTE) CURRENT TIMESTAMP (BM 11/24/84) ! 56: SWAP EQU LRU+8 ; (BYTE) EARLIEST BUFFER (BM 11/24/84) ! 57: ! 58: ZPCH EQU LRU+9 ; HIGHEST-ORDER BIT OF PC ! 59: ZPCM EQU ZPCH+1 ; MIDDLE 8 BITS OF PC ! 60: ZPCL EQU ZPCH+2 ; LOWER 8 BITS OF PC ! 61: ZPCPNT EQU ZPCH+3 ; POINTER TO ACTUAL PC PAGE (WORD) ! 62: ZPCFLG EQU ZPCH+5 ; FLAG: "TRUE" IF ZPCPNT VALID ! 63: ! 64: MPCH EQU ZPCH+7 ; HIGHEST-ORDER BIT OF MEM POINTER ! 65: MPCM EQU MPCH+1 ; MIDDLE 8 BITS OF MEM POINTER ! 66: MPCL EQU MPCH+2 ; LOW-ORDER 8 BITS OF MEMORY POINTER ! 67: MPCPNT EQU MPCH+3 ; ACTUAL POINTER TO MEMORY (WORD) ! 68: MPCFLG EQU MPCH+5 ; FLAG: "TRUE" IF MPCPNT VALID ! 69: ! 70: GLOBAL EQU MPCH+7 ; GLOBAL VARIABLE POINTER (WORD) ! 71: VOCAB EQU GLOBAL+2 ; VOCAB TABLE POINTER (WORD) ! 72: FWORDS EQU GLOBAL+4 ; FWORDS TABLE POINTER (WORD) ! 73: ! 74: OZSTAK EQU GLOBAL+6 ; ZSP SAVE REGISTER (FOR ZCALL) ! 75: ! 76: CSTEMP EQU OZSTAK+2 ; SET IF TEMP CHARSET IN EFFECT ! 77: CSPERM EQU CSTEMP+1 ; CURRENT PERM CHARSET ! 78: STBYTF EQU CSTEMP+2 ; 0=1ST, 1=2ND, 2=3RD, 0=LAST ! 79: ! 80: ZSTWRD EQU CSTEMP+3 ; WORD STORAGE (WORD) ! 81: ZSTBUI EQU ZSTWRD+2 ; Z-STRING INPUT BUFFER (6 BYTES) ! 82: ZSTBUO EQU ZSTWRD+8 ; Z-STRING OUTPUT BUFFER (6 BYTES) ! 83: RTABP EQU ZSTWRD+14 ; RESULT TABLE POINTER ! 84: STABP EQU ZSTWRD+15 ; SOURCE TABLE POINTER ! 85: PZSTFO EQU ZSTWRD+16 ; FWORD TABLE BLOCK OFFSET ! 86: ! 87: VAL EQU ZSTWRD+17 ; VALUE RETURN REGISTER (WORD) ! 88: TEMP EQU VAL+2 ; TEMPORARY REGISTER (WORD) ! 89: TEMP2 EQU VAL+4 ; ANOTHER TEMPORARY REGISTER (WORD) ! 90: MASK EQU VAL+6 ; BIT-MASK REGISTER (WORD) ! 91: SQUOT EQU VAL+8 ; SIGN OF QUOTIENT ! 92: SREM EQU VAL+9 ; SIGN OF REMAINDER ! 93: MTEMP EQU VAL+10 ; MATH TEMP REGISTER (WORD) ! 94: ! 95: DRIVE EQU VAL+12 ; DRIVE NUMBER ! 96: DBUFF EQU DRIVE+1 ; DISK I/O BUFFER POINTER (WORD) ! 97: DBLOCK EQU DRIVE+3 ; Z-BLOCK # (WORD) ! 98: TRACK EQU DRIVE+5 ; TRACK/SECTOR ADDRESS (WORD) ! 99: ! 100: TIMEFL EQU DRIVE+7 ; "TRUE" IF TIME MODE ! 101: ! 102: CHRPNT EQU TIMEFL+1 ; I/O BUFFER INDEX ! 103: CPSAV EQU CHRPNT+1 ; SAVE REGISTER FOR [CHRPNT] ! 104: BINDEX EQU CHRPNT+2 ; BUFFER DISPLAY INDEX ! 105: LINCNT EQU CHRPNT+3 ; # LINES DISPLAYED SINCE LAST USL ! 106: IOCHAR EQU CHRPNT+4 ; CURRENT I/O CHARACTER ! 107: GDRIVE EQU CHRPNT+5 ; GAME-SAVE DEFAULT DRIVE # ! 108: GPOSIT EQU CHRPNT+6 ; GAME-SAVE DEFAULT POSITION ! 109: RAND1 EQU CHRPNT+7 ; RANDOM NUMBER REGISTER ! 110: RAND2 EQU CHRPNT+8 ; DITTO ! 111: CYCLE EQU CHRPNT+9 ; TIMER FOR CURSOR BLINK (WORD) ! 112: BLINK EQU CHRPNT+11 ; MASK FOR CURSOR BLINK ! 113: CFLAG EQU CHRPNT+12 ; CURSOR ENABLE FLAG ! 114: SCRIPT EQU CHRPNT+13 ; SCRIPTING ENABLE FLAG ! 115: IHOLD EQU CHRPNT+14 ; INTERRUPT HOLD ! 116: TPOSIT EQU CHRPNT+15 ; TEMP GAME POSITION ! 117: TDRIVE EQU CHRPNT+16 ; TEMP GAME DRIVE ! 118: ! 119: ZPGTOP EQU CHRPNT+15 ; END OF DIRECT-PAGE VARIABLES ! 120: ! 121: END ! 122:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.