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