mirror of
https://github.com/erkyrath/infocom-zcode-terps.git
synced 2026-02-08 09:11:27 +00:00
448 lines
11 KiB
Plaintext
448 lines
11 KiB
Plaintext
SUBTTL DATA - VARIABLE DEFINITION AND STORAGE
|
|
PAGE
|
|
;
|
|
; ALL DATA SAVE THE PAGE TABLE (PAGTAB) ARE DEFINED BETWEEN THE ABOVE JMP
|
|
; AND THE STARTING DESTINATION.
|
|
;
|
|
;VARIBLE DEFINITIONS:
|
|
|
|
PUBLIC START,GAMFILE,SAVFILE,GAMHNDL,SAVHNDL,HANDLE,SEEKF
|
|
PUBLIC LASTDRV,LSTDFLG,DRVFLG,LASTSAV,SSBUF,DEFDRV,CURDRV
|
|
;GTBLKS
|
|
;************************************************************************
|
|
; DO NOT MOVE THESE VARIABLES. DEFINE NOTHING ABOVE THEM. CREATE
|
|
; IS DEPENDENT UPON THIS FIXED VARIABLE SETUP FOR GAMFILE AND
|
|
; SAVFILE. EACH SHOULD TOTAL 65 CHARACTERS IN LENGTH
|
|
;************************************************************************
|
|
;
|
|
GAMFILE DB "AMFV.DAT",0,0 ; PATCHED BY CREATE
|
|
DB 55 DUP (0) ; POTENTIAL LENGTH OF FILENAME
|
|
SAVFILE DB "AMFV.SAV",0,0
|
|
DB 54 DUP (0) ; POTENTIAL LENGTH OF FILENAME
|
|
LASTSAV DB 64 DUP (0)
|
|
;
|
|
GAMESIZ DW ? ; GAME SIZE IN 512 BYTE BLOCKS
|
|
GAMHNDL DW ? ; FOR STORAGE OF FILE HANDLES
|
|
SAVHNDL DW ?
|
|
SSFILE DB "SETUP.INF",0
|
|
SSBUF DW SSLNT/2 DUP (0)
|
|
SKPDRV DB 0 ; (7n) DON'T OUTPUT DRIVE NAME
|
|
DEFDRV DB ? ; BYTE FOR DEFAULT DRIVE
|
|
CURDRV DB ? ; BYTE FOR NEW DRIVE (SAVES)
|
|
DRVFLG DB 0 ; FLAG WHETHER DRIVE SPECIFIED ON SAV
|
|
LASTDRV DB ? ; TEMPORARY STORAGE FOR SAVE AND
|
|
LSTDFLG DB ? ; RESTORE FAILURE
|
|
HANDLE DW ? ; GENERAL HANDLE FOR GTBLKS ROUTINE
|
|
SEEKF DB 1 ; FLAG FOR WHETHER OR NOT TO SEEK
|
|
PRTBUF DB ? ; (7) BUFFER FOR PRINTER OUTPUT
|
|
|
|
PUBLIC DSKDIR
|
|
DSKDIR DB 0 ;0 FOR READ, 1 FOR WRITE
|
|
|
|
; SCREEN DEFINITIONS AND ANSI STRINGS
|
|
PUBLIC SCRATR,COLFLG,SCP,RCP,SCPL,SLPP,STINIT,STRESET
|
|
PUBLIC SPINIT,STINIT,CTRESET,CLS,CLSC
|
|
CURSAV DB 0 ; (A0) IS THE CURSOR POSITION SAVED?
|
|
SCRATR DB 7 ;(7) BLACK BACKGROUND FOR DEFAULT
|
|
COLFLG DB 0 ;(7) ARE WE USING COLOR
|
|
SCPL DB 80 ; WIDTH OF THE SCREEN IN COLUMNS (DEFAULTS)
|
|
SLPP DB 24 ; LENGTH OF THE SCREEN IN ROWS
|
|
|
|
NONIBM DW OFFSET NOHIGH ;(A9)
|
|
DW OFFSET INVERSE ;(A9)
|
|
DW OFFSET BOLD ;(A9)
|
|
DW 0 ;(A9)
|
|
DW OFFSET NOHIGH ;(A9)
|
|
|
|
HILITES DW OFFSET NOHIGH
|
|
DW OFFSET INVERSE
|
|
DW OFFSET BOLD
|
|
DW 0
|
|
DW OFFSET ITALIC
|
|
;
|
|
NOHIGH DB 4
|
|
DB 27,'[0m'
|
|
INVERSE DB 8
|
|
DB 27,'[0m',27,'[7m'
|
|
BOLD DB 8
|
|
DB 27,'[0m',27,'[1m'
|
|
ITALIC DB 8
|
|
DB 27,'[0m',27,'[4m'
|
|
;;
|
|
COLORS DW OFFSET NORMCOL
|
|
DW OFFSET INVCOL
|
|
DW OFFSET BOLDCOL
|
|
DW 0
|
|
DW OFFSET NORMCOL
|
|
;
|
|
NORMCOL DB 12
|
|
DB 27,'[0m',27,"[37;44m"
|
|
|
|
INVCOL DB 12
|
|
DB 27,'[0m',27,"[34;47m"
|
|
BOLDCOL DB 16
|
|
DB 27,'[0m',27,"[37;44m",27,'[1m'
|
|
|
|
EREOL DB 3
|
|
DB 27,'[K' ; (A0) ERASE TO EOL
|
|
SCP DB 3 ; (7) ANSI SAVE CURSOR POSITION
|
|
DB 27,'[s'
|
|
RCP DB 3 ; (7) ANSI RESTORE CURSOR POSITION
|
|
DB 27,'[u'
|
|
STINIT DB 16
|
|
DB 27,"[2J",27,"[0m",27,"[01;01H"
|
|
STRESET DB 4
|
|
DB 27,"[0m"
|
|
SPINIT DB 0
|
|
CTINIT DB 20
|
|
DB 27,"[37;44m",27,"[2J",27,"[01;01H"
|
|
CTRESET DB 0
|
|
CPINIT DB 0
|
|
CLS DB 12
|
|
DB 27,"[2J",27,"["
|
|
CLS1 DB "25;01H"
|
|
CLSC DB 20
|
|
DB 27,"[37;44m",27,"[2J",27,"["
|
|
CLS1C DB "25;01H"
|
|
;
|
|
WAIT DB 31
|
|
DB 27,"[12;28HThe story is loading..."
|
|
|
|
PUBLIC WINDOW1,COLWIN1,WINDOW0,COLWIN0,RADIX
|
|
WINDOW1 DB 8
|
|
DB 27,'[01;01H'
|
|
COLWIN1 DB 16
|
|
DB 27,'[01;01H',27,'[37;44m'
|
|
WINDOW0 DB 4
|
|
DB 27,'[0m'
|
|
COLWIN0 DB 8
|
|
DB 27,'[37;44m'
|
|
RADIX DB 10 ; THE DEFAULT RADIX FOR THE SCREEN
|
|
;SCRIPTING STUFF
|
|
PUBLIC GAMEIN,SCRHLD,SCRFLG,PRNNRDY
|
|
GAMEIN DB 0
|
|
SCRHLD DB 0 ; (7n) IS SCRIPTING TEMPORARILY OFF
|
|
SCRFLG DB 0
|
|
PRNNRDY DB " %Printer not ready: Abort or Retry? ",80H
|
|
|
|
PUBLIC RSEED1,RSEED2
|
|
;,SRHOLD,RNUM,IOCHAR
|
|
;OPRAND
|
|
RSEED1 DW ? ;SEED1 FOR RANDOM NUMBERS
|
|
RSEED2 DW ? ;SEED2 FOR RANDOM NUMBERS
|
|
RTEMP DW ? ;TEMP FOR RANDOM ROUTINE
|
|
;(LD1) RNDFLG DB ? ; (A0) RANDOM FLAG
|
|
SRHOLD DW ? ; (LD1) FOR NON RANDOM RANDOM
|
|
RNUM DW ? ; (LD1) THIS ALSO
|
|
IOCHAR DB ? ; (LD1) HOLD AL FOR A SECOND
|
|
|
|
PUBLIC RDWSTR,RDBOS,RDEOS,RDRET,RDNWDS,WRDOFF
|
|
;READ
|
|
ZTHIRD DW ? ; (A0) THIRD ZWORD REGISTER FOR ZWORD
|
|
RDWSTR DW 5 DUP(0) ; (A0) WORD STRING BUFFER FOR ZWORD
|
|
RDBOS DW 0 ;BEGINNING OF STRING POINTER
|
|
RDEOS DW 0 ;END OF STRING POINTER
|
|
RDRET DW 0 ;RETURN TABLE POINTER
|
|
RDNWDS DB 0 ;NUMBER OF WORDS READ
|
|
;PUTSTR
|
|
WRDOFF DW 0 ;OFFSET INTO WORD TABLE FOR CURRENT SET
|
|
DLYCNT DW ? ; (A0) DELAY COUNT IN 1/10THS SECONDS
|
|
|
|
PUBLIC CHRPTR,ENDBUF,BUFBIT,PREVBUF
|
|
;PUTCHR
|
|
; REDIRECTION AND BUFFERING OUTPUT
|
|
CHRPTR DW 0 ;POINTS TO NEXT CHARACTER POSITION
|
|
ENDBUF DW 0 ;POINTS JUST PAST END OF OUTPUT BUFFER (0)
|
|
CHRCNT DW 79 ; (A13) OUTPUT BUFFER DOWN COUNTER
|
|
BUFBIT DB 1 ; (A0) BUFFERED INPUT TOGGLE
|
|
PREVBUF DB 1 ; (A0) PREVIOUS BUFFERING STAT
|
|
RDIR DW 0 ; (A0) WHERE OUTPUT IS DIRECTED TO
|
|
RTABLE DW ? ; (A0) ADDRESS OF TABLE TO OUTPUT TO
|
|
RTABLE2 DW ? ; (A0) OFFSET INTO TABLE WHERE OUTPUT GOES
|
|
RDIROUT DW 0 ; (A0) NUMBER OF CHARS SENT TO TABLE
|
|
VIDFLG DB 1 ; (A10) SCRREN CONTROL 1=ON
|
|
|
|
;GETNUM
|
|
|
|
PUBLIC IRBRKS,ZORKID,ENDLOD,VOCTAB,OBJTAB,STABLE
|
|
PUBLIC GLOTAB,WRDTAB,PURBOT,ESIBKS,VWLEN,VWORDS,VOCBEG
|
|
PUBLIC OUTBUF,INBUF,RBRKS,BUFFERS,PAGES,INITTBL,SEGEND
|
|
;ZIPBGN
|
|
IRBRKS DB " ",9,13,12,".,?",0 ;INITIAL SET OF READ BREAK CHARS
|
|
ZORKID DW 0 ;UNIQUE GAME & VERSION IDENTIFIER
|
|
ENDLOD DW 0 ;ENDLOD BLOCK NUMBER
|
|
SEGEND DW 0 ; (6) ENDLOD THAT DOESN'T GET DIDDLED
|
|
VOCTAB DW 0 ;SAVE VOCABULARY TABLE POINTER
|
|
OBJTAB DW 0 ;OBJECT TABLE POINTER
|
|
GLOTAB DW 0 ;GLOBAL TABLE POINTER
|
|
WRDTAB DW 0 ;WORD TABLE POINTER
|
|
PURBOT DW 0 ;PURE CODE POINTER
|
|
ESIBKS DW 0 ;END OF SELF-INSERTING BREAK CHARACTERS
|
|
VWLEN DW 0 ;NUMBER OF BYTES IN A VOCABULARY WORD ENTRY
|
|
VWORDS DW 0 ;NUMBER OF WORD ENTRIES IN VOCABULARY
|
|
VOCBEG DW 0 ;BEGINNING OF ACTUAL VOCABULARY
|
|
OUTBUF DB 81 DUP(?) ;OUTPUT BUFFER
|
|
INBUF DB MAXLIN+2 DUP(?) ;INPUT BUFFER
|
|
RBRKS DB 32 DUP(?) ;STRING OF READ BREAK CHARACTERS
|
|
BUFFERS DW 0 ;(6) NUMBER OF 512 BYTE BUFFERS FOR PAGING
|
|
PAGES DW 0 ;SWAPPING AREA
|
|
CHRFLG DB 0
|
|
INITTBL DW 0FFFEH ; (A0)
|
|
DW 3 DUP (0)
|
|
|
|
; CMDLIN WAS CREATED FOR CHANGING CERTAIN PARAMETERS ON THE COMMAND LINE
|
|
; CURRENTLY THERE ARE SWITCHES (C,M,W). BITS ARE SET IN SCANCMD AND
|
|
; PROCESSED IN SYSINI OR SSETUP.
|
|
;
|
|
PUBLIC CMDLIN,MEMORY
|
|
CMDLIN DB 0 ; (7n) 16=IBM PARALLEL PRINTER
|
|
; (7) 8=SCROLL SET
|
|
; (7) 4=MEMORY SET
|
|
; (7) 2=COLOR SET
|
|
; (7) 1=MONOCHROME SET
|
|
MEMORY DW 0 ; (7) MEMORY SIZE SET ON CMDLIN
|
|
|
|
PUBLIC ZLOCS,ZPC1,ZPC2,ARGBLK,ZPCSEG,ZPCFLG
|
|
;RESTRT
|
|
ZLOCS DW 0 ;POINTER TO LOCALS
|
|
ZPC1 DW 0 ;ZPC BLOCK-POINTER
|
|
ZPC2 DW 0 ;ZPC BYTE-POINTER
|
|
ZPCSEG DB 0 ;(6) GAME SEGMENT WHERE ZPC IS
|
|
ZPCFLG DB 0 ; (7n) ZPC PAGE IS MUNGED?
|
|
ARGBLK DW 9 DUP(?) ; (A0) ARGUMENT BLOCK FOR EXTENDED OPERATIONS
|
|
|
|
PUBLIC CURPAG,CURBLK,CURTAB,CURSEG
|
|
;NEWZPC
|
|
CURPAG DW 0 ;CURRENT PAGE (WHERE ZPC IS) POINTER
|
|
CURBLK DW 0 ;CURRENT BLOCK, USUALLY SAME AS ZPC1
|
|
CURTAB DW 0 ;CURRENT PAGE TABLE POINTER +1
|
|
|
|
PUBLIC RTIME1,RTIME2,LPAGE,LPLOC,LPTAB,GAMESEG,SEG1,FITS
|
|
;GETPAG
|
|
RTIME1 DW 0 ;(A0)REFERENCE TIME, 1 1/2 WORDS USED
|
|
RTIME2 DW 0
|
|
LPAGE DW 0 ;LAST REFERENCED PAGE NUMBER
|
|
LPLOC DW 0 ;AND ITS CORE LOCATION
|
|
LPTAB DW 0 ;AND ITS TABLE POINTER
|
|
GAMESEG DW ? ;(6) FIRST (OR ZERO) GAME SEGMENT
|
|
SEG1 DW ? ;(6) SECOND GAMESEG (GAMESEG+64K)
|
|
CURSEG DB 0 ;(6) SEGMENT (0/1) FOR CURRENT PAGE
|
|
FITS DB 0 ;(6) FLAG FOR GAME ALL IN MEMORY
|
|
;GETBYT
|
|
LSTGET DB 0 ; (A16) HIGH BYTE FROM LAST GETBYTE
|
|
LSTGGD DB 0 ; (A16) GOODNESS OF LAST HIGH BYTE
|
|
;NXTBYT
|
|
LSTNXT DB 0 ; (A16) HIGH BYTE FROM LAST NXTBYT
|
|
LSTNGD DB 0 ; (A16) GOODNESS OF LAST HIGH BYTE
|
|
|
|
; SPLIT AND SCREEN VARS
|
|
PUBLIC SCRNFLG,SPLCOL,SPLTFLG
|
|
SCRNFLG DB 0 ; (7) WINDOW THAT WE ARE WRITING IN
|
|
SPLCOL DB 17H ; (7) GREEN BACKGROUD FOR WINDOW 1
|
|
SPLTFLG DB 0 ; (7) IS THE SCREEN SPLIT
|
|
|
|
; SOUND VARIABLES
|
|
TIMER DB ?
|
|
STABLE DW SND1,SND2 ; (A0) TABLES FOR SOUNDS 1 & 2
|
|
CLKLOW DW ?
|
|
|
|
;OPERATION TABLES: ;ZERO ARGUMENT OPERATIONS
|
|
PUBLIC ZEROOP,ONEOP,EXTOP
|
|
ZEROOP DW OPRTRU ;176
|
|
DW OPRFAL ;177
|
|
DW OPPRNI ;178
|
|
DW OPPRNR ;179
|
|
DW OPNOOP ;180
|
|
DW OPSAVE ;181
|
|
DW OPREST ;182
|
|
DW OPRSTT ;183
|
|
DW OPRSTA ;184
|
|
DW OPFSTA ;185
|
|
DW OPQUIT ;186
|
|
DW OPCRLF ;187
|
|
DW 0 ;188 OPUSL UNDER ZIP
|
|
DW OPVERI ;189
|
|
DW 0 ;190
|
|
DW 0 ;191
|
|
;ONE ARGUMENT OPERATIONS
|
|
ONEOP DW OPQZER ;128
|
|
DW OPQNEX ;129
|
|
DW OPQFIR ;130
|
|
DW OPLOC ;131
|
|
DW OPPTSI ;132
|
|
DW OPINC ;133
|
|
DW OPDEC ;134
|
|
DW OPPRNB ;135
|
|
DW OPCALL1 ;136
|
|
DW OPREMO ;137
|
|
DW OPPRND ;138
|
|
DW OPRETU ;139
|
|
DW OPJUMP ;140
|
|
DW OPPRIN ;141
|
|
DW OPVALU ;142
|
|
DW OPBCOM ;143
|
|
;TWO ARGUMENT AND EXTENDED ARGUMENT OPERATIONS
|
|
EXTOP DW 0 ;0
|
|
DW OPQEQU ;1
|
|
DW OPQLES ;2
|
|
DW OPQGRT ;3
|
|
DW OPQDLE ;4
|
|
DW OPQIGR ;5
|
|
DW OPQIN ;6
|
|
DW OPBTST ;7
|
|
DW OPBOR ;8
|
|
DW OPBAND ;9
|
|
DW OPQFSE ;10
|
|
DW OPFSET ;11
|
|
DW OPFCLE ;12
|
|
DW OPSET ;13
|
|
DW OPMOVE ;14
|
|
DW OPGET ;15
|
|
DW OPGETB ;16
|
|
DW OPGETP ;17
|
|
DW OPGTPT ;18
|
|
DW OPNEXT ;19
|
|
DW OPADD ;20
|
|
DW OPSUB ;21
|
|
DW OPMUL ;22
|
|
DW OPDIV ;23
|
|
DW OPMOD ;24
|
|
DW OPCALL2 ;25
|
|
DW 0 ;26
|
|
DW 0 ;27
|
|
DW 0 ;28
|
|
DW 0 ;29
|
|
DW 0 ;30
|
|
DW 0 ;31
|
|
DW OPCALL ;224
|
|
DW OPPUT ;225
|
|
DW OPPUTB ;226
|
|
DW OPPUTP ;227
|
|
DW OPREAD
|
|
;228
|
|
DW OPPRNC ;229
|
|
DW OPPRNN ;230
|
|
DW OPRAND ;231
|
|
DW OPPUSH ;232
|
|
DW OPPOP ;233
|
|
DW OPSPLT ;234
|
|
DW OPSCRN ;235
|
|
DW OPXCALL ;236
|
|
DW OPCLEAR ;237
|
|
DW OPERASE ;238
|
|
DW OPCURST ;239
|
|
DW OPCURGT ;240
|
|
DW OPHILIT ;241
|
|
DW OPBFOUT ;242
|
|
DW OPDIROU ;243
|
|
DW OPDIRIN ;244
|
|
DW OPSND ;245
|
|
DW OPINPUT ;246
|
|
DW OPINTBL ;247 (A12)
|
|
DW 0 ;248
|
|
DW 0 ;249
|
|
DW 0 ;250
|
|
DW 0 ;251
|
|
DW 0 ;252
|
|
DW 0 ;253
|
|
DW 0 ;254
|
|
DW 0 ;255
|
|
|
|
;(7) COPY PROTECTION STUFF
|
|
PUBLIC COMPATS,COMP1,IBMSTR
|
|
COMPATS DW 3 ; (7) NUMBER OF STRINGS IN THE LIST
|
|
COMP1 DB 'COMPAQ Co$'
|
|
IBMSTR DB 'COPR. IBM$' ; (7) EACH STRING MUST BE 9 CHARS
|
|
DB 'Tandy Cor$' ; (7v) ADD TANDY
|
|
|
|
;(A9) ENVIORNMENT
|
|
IBMPC DB 0 ; (A9) 1=IBMPC
|
|
|
|
;MCRLF
|
|
PUBLIC SCROLL,TOPLIN,MORLIN
|
|
; (7) SCROLL IS SEEMINGLY BACKWARDS BUT TOO INTERWOVEN TO
|
|
; GO AROUND AND FIX NOW.
|
|
; 0 = IBM Compatible 100% (use windowed scrolling)
|
|
; 1 = MS-DOS, no windowed scrolling
|
|
;
|
|
SCROLL DB 1
|
|
TOPSCR DW 0
|
|
TOPLIN DW 0 ; (7) WORD FOR CH,CL FOR UPPER RIGHT
|
|
MORE DB "[MORE]",80H ; (A12)
|
|
EMORE DB 13," ",13,80H
|
|
MORLIN DW 0 ; (7) COUNT OF LINES SCROLLED WITHOUT PAUSE
|
|
|
|
;STRUCTURE AND RECORD DEFINITIONS:
|
|
;OBJECT OPERATIONS
|
|
OBJECT STRUC
|
|
FLAGS1 DW ?
|
|
FLAGS2 DW ?
|
|
FLAGS3 DW ? ; (A0) EZIP EXTENDED FLAG WORD
|
|
PARENT DW ? ; (A0) EXTEND TO WORD
|
|
SIBLING DW ? ; (A0) EXTEND TO WORD
|
|
CHILD1 DW ? ; (A0) AGAIN^^
|
|
PROPS DW ?
|
|
OBJECT ENDS
|
|
PROPID RECORD PROPNUM:6
|
|
|
|
;STRING DEFINITIONS
|
|
|
|
;STATION IDENTIFICATION
|
|
; (A10) TWO DIGIT MINOR VERSION NUMBER
|
|
PUBLIC IDSTR
|
|
IDSTR DB 80H ; PATCH OUT THIS BYTE FOR TESTING
|
|
DB "IBM/PC-DOS 2.0 Interpreter Version ",ZVERSN,ZEDIT0,ZEDIT1,0
|
|
|
|
;TERMINAL SETUP
|
|
WANTCO DB "Do you want color (Y/N)? ",80H
|
|
|
|
PUBLIC SAV0,SAV1,SAV2,SAV3,ERR1,ERR2,ERR3,ERR4,ERR5,ERR6
|
|
;SAVE/RESTORE
|
|
SAV0 DB "Insert save disk then enter file name.",0
|
|
SAV1 DB "(Default is ",80H
|
|
SAV2 DB "): ",80H
|
|
SAV3 DB "Insert game disk then strike any key to continue.",0
|
|
|
|
ERR1 DB "SAVE file not found",0
|
|
ERR3 DB "Bad file name syntax",0
|
|
ERR4 DB "Unable to access file",0
|
|
ERR5 DB "No room on diskette for SAVE file",0
|
|
ERR6 DB "Read of SAVE file failed",0
|
|
;READ
|
|
ERR2 DB "Too many words typed, discarding: ",80H
|
|
|
|
PUBLIC FTL2,FTL4,FTL5,FTL6,FTL7,FTL9
|
|
;OPNEXT/OPPUTP
|
|
FTL2 DB "No such property",0
|
|
;ZIPBGN
|
|
FTL4 DB "Wrong game or version",0
|
|
;NXTINS
|
|
FTL5 DB "Illegal operation",0
|
|
;FINDPG
|
|
FTL6 DB "No free pages",0
|
|
;GTBLKS
|
|
FTL7 DB "Game file read error",0
|
|
;SYSINI
|
|
FTL9 DB "Game file not found",0
|
|
FTL10 DB 'Unauthorized copy',0
|
|
FTL11 DB 'Wrong DOS version. Must be 2.0 or higher',0
|
|
FTL12 DB 'Insufficient memory to play game',0
|
|
FTL13 DB 'Illegal argument',0
|
|
FTL14 DB 'Screen must be 80 characters wide',0
|
|
|
|
;Fatal error header
|
|
FATHDR DB "Fatal error: ",80H
|
|
;ZSTR CHARACTER CONVERSION VECTOR
|
|
|
|
PUBLIC ZCHRS
|
|
ZCHRS DB "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
|
DB " 0123456789.,!?_#'"
|
|
DB '"/\-:()'
|
|
|
|
PUBLIC STK_TOP,STKBOT,ZSTK_TP
|
|
; STACK SETUP
|
|
DW 200H DUP(?)
|
|
STK_TOP LABEL WORD
|
|
STKBOT DW LSTACK DUP(?)
|
|
ZSTK_TP LABEL WORD
|