00100 ;MICRO ADVENTURE RUN TIME PACKAGE 00110 ;(C) COPYRIGHT 1983 ANTHONY WOOD 00120 ; 00130 ; 4/24/83 00140 ;POSITION OF ADVENTURE 00150 ORG 5200H 00160 BEGIN CALL 01C9H 00162 LD A,15 00164 CALL 33H 00170 LD HL,(MEM+16) 00180 CALL SCRPRT 00190 CALL 49H 00191 CALL 01C9H 00192 LD HL,(MEM+14) 00194 BEG LD A,(HL) 00196 CP 0FFH 00198 JR Z,PUMP 00200 INC HL 00202 JR BEG 00204 PUMP LD DE,(MEM+10) 00206 XOR A 00208 SBC HL,DE 00209 INC HL 00210 LD (LEN),HL 00212 PUSH HL 00214 POP BC 00216 LD DE,(MEM+14) 00218 LD HL,30T 00220 ADD HL,DE 00222 EX DE,HL 00224 LD HL,(MEM+10) 00226 LDIR 00227 JR START2 00228 START CALL CTOP 00229 LD HL,3C00H 00230 LD (401DH+3),HL 00236 START2 LD HL,LINE 00237 CALL PRINT 00238 LD HL,PRED 00239 CALL PRINT 00240 LD A,(RUM) 00248 LD HL,(MEM+8) ;RM DES TABLE 00250 CALL LOOK ;FIND THE DESCRIP. LOC. 00260 CALL PRINT 00270 CALL RSFIND ;FIND CURRENT ROOM INV. 00280 LD B,20D ;TEST FOR 00290 XOR A ;EMPTY ROOM 00295 PUSH HL 00300 CHKCLR ADD A,(HL) 00305 INC A ;MAKE FFH A 0 00310 INC HL 00320 DJNZ CHKCLR 00330 OR A 00335 POP HL 00340 JR Z,EMPTY ;GO IF AN EMPTY ROOM 00345 PUSH HL 00350 LD HL,ISEE 00360 CALL PRINT ;"I CAN SEE: " 00365 POP HL 00370 LD B,20D 00380 ITEM LD A,(HL) 00390 CP 0FFH 00400 JR Z,NOTH ;FF MEANS EMPTY SLOT 00410 PUSH HL 00420 LD HL,(MEM+2) ;NOUN TABLE 00430 CALL LOOK 00440 CALL TYPE 00450 LD HL,DSP ; ". " 00460 CALL PRINT 00470 POP HL 00480 NOTH INC HL 00485 DJNZ ITEM 00490 LD A,10 00500 CALL ROLL 00510 EMPTY CALL EXTFND 00580 PUSH HL 00590 LD B,6 00600 XOR A ;SEE IF NO EXITS 00610 EXT2 ADD A,(HL) 00615 INC A ;MAKE FFH A 0 00620 INC HL 00630 DJNZ EXT2 00640 POP HL 00650 OR A 00660 JR Z,NOEXIT ;GO IF NO EXITS 00661 PUSH HL 00662 LD HL,WAY 00663 CALL PRINT 00664 POP HL ;"OBVIOUS EXITS:" 00670 LD A,(HL) ;EXIT TO NORTH? 00680 INC A ;NOW 0 ID NO 00690 JR Z,NO1 00700 PUSH HL 00710 LD HL,NORTH 00720 CALL PRINT 00730 POP HL 00740 NO1 INC HL 00750 LD A,(HL) ;EXIT TO SOUTH? 00760 INC A 00770 JR Z,NO2 00780 PUSH HL 00790 LD HL,SOUTH 00800 CALL PRINT 00810 POP HL 00815 NO2 INC HL 00820 LD A,(HL) ;EXIT TO EAST? 00830 INC A 00840 JR Z,NO3 00850 PUSH HL 00860 LD HL,EAST 00870 CALL PRINT 00880 POP HL 00890 NO3 INC HL 00900 LD A,(HL) ;EXIT TO WEST? 00910 INC A 00920 JR Z,NO4 00930 PUSH HL 00940 LD HL,WEST 00950 CALL PRINT 00960 POP HL 00970 NO4 INC HL 00980 LD A,(HL) ;EXIT UP? 00990 INC A 01000 JR Z,NO5 01010 PUSH HL 01020 LD HL,UP 01030 CALL PRINT 01032 LD HL,DSP 01034 CALL PRINT 01040 POP HL 01050 NO5 INC HL ;EXIT DOWN? 01060 LD A,(HL) 01070 INC A 01080 JR Z,NO6 01090 LD HL,DOWN 01100 CALL PRINT 01110 NO6 LD A,10 01120 CALL ROLL 01121 NOEXIT LD HL,LINE 01123 CALL PRINT ;<------- ... ----> 01125 LD HL,(401DH+3) 01127 LD (LIN),HL 01141 LD HL,(CURPOS) 01142 LD DE,00 01143 XOR A 01144 SBC HL,DE 01145 JR Z,INP 01148 LD HL,(CURPOS) 01149 LD (401DH+3),HL 01150 INP LD A,(SIZE) 01151 INC A 01152 LD IX,(MEM+12) 01153 LD (SIZE),A 01154 CP (IX+1) 01155 JR NZ,INPP 01156 XOR A 01157 LD (SIZE),A 01158 LD HL,(MEM+12) 01159 INC (HL) 01162 INPP LD HL,(MEM+18) 01163 JP CNT3A 01168 INPT LD HL,PROM 01169 CALL PRINT 01170 CALL INPUT ;TELL ME WHAT TO DO NOW? 01180 LD IX,BUFFER 01190 LD A,(IX+0) 01200 CP 0DH 01210 JP Z,INP ;GO IF JUST 01220 LD A,(IX+1) ;CHECK FOR 1 LETTER INPUT 01230 CP 0DH 01240 JR NZ,NOPE ;GO IF TWO+ LETTERS 01250 LD A,(IX+0) ;GET LETTER 01260 CP 'N' 01270 JR Z,NRTH 01280 CP 'S' 01290 JR Z,SOTH 01300 CP 'E' 01310 JR Z,EST 01320 CP 'W' 01330 JR Z,WST 01340 CP 'U' 01350 JP Z,UPP 01360 CP 'D' 01370 JP Z,DN 01380 CP 'I' 01390 JP Z,INJN 01400 LD HL,BADIN 01410 CALL PRINT 01420 JP INP 01430 NOPE LD DE,BUFFER 01440 LD HL,NORTH 01450 CALL CMPR 01460 JR Z,NRTH 01470 LD HL,SOUTH 01480 CALL CMPR 01490 JR Z,SOTH 01500 LD HL,EAST 01510 CALL CMPR 01520 JR Z,EST 01530 LD HL,WEST 01540 CALL CMPR 01550 JR Z,WST 01560 LD HL,UP 01570 CALL CMPR 01580 JR Z,UPP 01590 LD HL,DOWN 01600 CALL CMPR 01610 JR Z,DN 01620 JP CNT1 01630 NRTH CALL EXTFND 01640 LD A,(HL) 01650 CP 0FFH 01660 JR Z,ERR1 01670 LD (RUM),A 01680 JP START 01690 SOTH CALL EXTFND 01700 LD A,(IX+1) 01710 CP 0FFH 01720 JR Z,ERR1 01730 LD (RUM),A 01740 JP START 01750 EST CALL EXTFND 01760 LD A,(IX+2) 01770 CP 0FFH 01780 JR Z,ERR1 01790 LD (RUM),A 01800 JP START 01810 WST CALL EXTFND 01820 LD A,(IX+3) 01830 CP 0FFH 01840 JR Z,ERR1 01850 LD (RUM),A 01860 JP START 01870 UPP CALL EXTFND 01880 LD A,(IX+4) 01890 CP 0FFH 01900 JR Z,ERR1 01910 LD (RUM),A 01920 JP START 01930 DN CALL EXTFND 01940 LD A,(IX+5) 01950 CP 0FFH 01960 JR Z,ERR1 01970 LD (RUM),A 01980 JP START 01990 ERR1 LD HL,BADDI 02000 CALL PRINT 02010 JP INP 02020 CNT1 LD DE,BUFFER 02030 LD HL,INV 02040 CALL CMPR 02050 JR NZ,CNT2 02060 INJN LD HL,(MEM+14) ;START OF INV. 02070 LD A,(HL) 02080 CP 0FFH 02090 JR NZ,OK 02100 LD HL,INVEMP 02110 CALL PRINT ;NOTHING HERE 02120 JP INP 02130 OK LD A,(HL) 02140 CP 0FFH 02150 JP Z,LF 02160 PUSH HL 02165 LD HL,(MEM+2) 02170 CALL LOOK 02180 CALL TYPE 02190 LD HL,DSP 02200 CALL PRINT 02210 POP HL 02220 INC HL 02230 JR OK 02232 LF LD A,0DH 02234 CALL ROLL 02236 JP INP 02240 CNT2 LD HL,BUFFER ;FIND NOUN... 02242 LD DE,SAV 02244 CALL CMPR 02246 JP Z,SAVEG 02247 LD DE,LOA 02248 CALL CMPR 02249 JP Z,LOADG 02250 BILL LD A,(HL) 02255 INC HL 02260 CP 20H ;SP 02270 JR Z,GOTIT 02280 CP 0DH 02290 JR NZ,BILL 02300 LD A,0FFH ;NO NOUN MARKER 02310 LD (NOUN),A 02320 JR VER 02330 GOTIT LD (NN),HL ;SAVE NOUN POS FOR LATER 02340 EX DE,HL 02350 LD HL,(MEM+2) ;NOUN TABLE 02360 CALL FIND2 ;FIND NOUN NUMBER 02370 LD A,B 02380 JR NZ,NERR 02390 LD (NOUN),A 02400 VER LD HL,(MEM+4) ;VERB TABLE 02410 LD DE,BUFFER ;POINT TO VERB 02420 CALL FIND 02425 LD A,B 02430 LD (VERB),A 02440 JR Z,CNT3 02450 LD HL,VERR 02460 CALL PRINT 02462 LD HL,BUFFER 02464 CALL PUT 02466 LD A,'.' 02467 CALL ROLL 02468 LD A,0DH 02469 CALL ROLL 02470 JP INP 02480 NERR LD HL,ERRN 02490 CALL PRINT 02500 LD HL,(NN) 02510 CALL PUT 02520 LD HL,ERRN2 02530 CALL PRINT 02540 JP INP 02550 ;START OF PROGRAM INTERPRATATION BELOW 02560 CNT3 LD HL,MEM+20 ;START OF PROGRAM 02570 CNT3A LD A,(HL) 02572 BIT 7,A 02574 JR Z,OKOK 02576 CALL SKIP ;SKIP THIS IF NESRY 02578 JR C,CNT3A 02580 OKOK CP 01 02590 JP Z,INPN ;IN+NOUN 02600 CP 02 02610 JP Z,INMN ;IN-NOUN 02620 CP 03 02630 JP Z,RMPN ;RM+NOUN 02640 CP 04 02650 JP Z,RMMN ;RM-NOUN 02660 CP 05 02670 JP Z,CIN ;?IN:NOUN 02680 CP 06 02690 JP Z,CRN ;?RM:NOUN 02700 CP 07 02710 JP Z,START ;RET 02720 CP 08 02730 JP Z,CHKN ;NCHK 02740 CP 09 02750 JP Z,DELN ;DEL:NOUN 02760 CP 10 02770 JP Z,INP 02780 CP 11 02790 JP Z,TY ;TY: 02800 CP 12 02810 JP Z,RMP ;RM+ 02820 CP 13 02830 JP Z,RMM ;RM- 02840 CP 14 02850 JP Z,INVP ;IN+ 02860 CP 15 02870 JP Z,INVM ;IN- 02880 CP 16 02890 JP Z,FINC ;INC 02900 CP 17 02910 JP Z,FDEC ;DEC 02920 CP 18 02930 JP Z,FCLR ;CLR 02940 CP 19 02950 JP Z,GO ;JP 02960 CP 20 02970 JP Z,LAB ;LABEL MARK 02980 CP 21 02990 JP Z,CRMN ;?RM# 03000 CP 22 03010 JP Z,RME ;RM= 03020 CP 23 03030 JP Z,DELA ;DEL: 03040 CP 32 03050 JP Z,NON ;NOUN: 03060 CP 30 03070 JP Z,FLGC ;?FLG/lable/# 03080 CP 31 03090 JP Z,VB ;VERB 03092 CP 25 03094 JP Z,CRM ;?RM: 03096 CP 26 03098 JP Z,CHINA ;?IN: 03110 CP 40 03120 JP Z,NOEND ;NEND 03130 CP 42 03160 JP Z,ENDO 03162 CP 41 03164 JP Z,INPT 03170 CP 28 ;?FLG/lable/># 03180 JP Z,FLGG 03190 CP 29 03195 JP Z,FLGL 03200 LD HL,ILEG 03210 CALL PRINT 03220 INC HL 03230 JP CNT3A 03300 INPN LD A,(NOUN) 03310 CALL INADD 03320 INC HL 03330 JP CNT3A 03340 INMN LD A,(NOUN) 03350 CALL INSUB 03360 INC HL 03370 JP CNT3A 03380 RMPN LD A,(NOUN) 03390 CALL RMADD 03400 INC HL 03410 JP CNT3A 03420 RMMN LD A,(NOUN) 03430 CALL RMSUB 03440 INC HL 03450 JP CNT3A 03460 CIN LD A,(NOUN) 03461 CP 0FFH 03462 JR Z,CIN2 03470 CALL ININ 03480 JR Z,CIN1 03490 CIN2 XOR A 03500 LD (YN),A 03510 INC HL 03520 JP CNT3A 03530 CIN1 LD A,1 03540 LD (YN),A 03550 INC HL 03560 JP CNT3A 03570 CRN LD A,(NOUN) 03572 CP 0FFH 03573 JR Z,CIN1 03580 CALL INRM 03590 JR Z,CIN1 03600 JR CIN2 03620 CHKN LD A,(NOUN) 03630 CALL INRM 03640 JR Z,YEP 03650 LD A,(NOUN) 03660 CALL ININ 03670 JR Z,YEP 03680 LD HL,NOT 03690 CALL PRINT 03700 JP INP 03710 YEP INC HL 03720 JP CNT3A 03730 DELN LD A,(NOUN) 03740 CALL ININ 03750 CALL Z,INSUB 03760 CALL INRM 03770 CALL Z,RMSUB 03780 INC HL 03790 JP CNT3A 03810 TY INC HL 03820 LD A,(HL) 03830 PUSH HL 03840 LD HL,(MEM+6) ;MSG TABLE 03850 CALL LOOK 03860 CALL PRINT 03870 POP HL 03880 INC HL 03890 JP CNT3A 03900 RMP INC HL 03910 LD A,(HL) 03920 CALL RMADD 03930 INC HL 03940 JP CNT3A 03950 RMM INC HL 03960 LD A,(HL) 03970 CALL RMSUB 03980 INC HL 03990 JP CNT3A 04000 INVP INC HL 04010 LD A,(HL) 04020 CALL INADD 04030 INC HL 04040 JP CNT3A 04050 INVM INC HL 04060 LD A,(HL) 04070 CALL INSUB 04080 INC HL 04090 JP CNT3A 04100 FINC INC HL 04110 CALL FLOOK 04120 LD A,(DE) 04130 INC A 04140 LD (DE),A 04150 INC HL 04160 JP CNT3A 04170 FDEC INC HL 04180 CALL FLOOK 04190 LD A,(DE) 04200 DEC A 04210 LD (DE),A 04220 INC HL 04230 JP CNT3A 04240 FCLR INC HL 04250 CALL FLOOK 04260 XOR A 04270 LD (DE),A 04280 INC HL 04290 JP CNT3A 04300 GO INC HL 04310 LD A,(HL) 04315 LD B,A 04320 LD HL,MEM+20 ;START OF PROGRAM 04330 GOLP LD A,(HL) 04340 CP 0FFH ;END OF PROG 04350 JP Z,ENDO 04360 CP 20 04370 JR Z,MAB 04380 CALL NXTCOM 04390 JR GOLP 04400 MAB INC HL 04410 LD A,(HL) 04420 CP B 04430 INC HL 04440 JP Z,CNT3A 04450 CALL NXTCOM 04460 JR GOLP 04462 LAB INC HL 04464 INC HL 04466 JP CNT3A 04470 CRMN INC HL 04480 LD B,(HL) 04490 LD A,(RUM) 04500 CP B 04510 JR Z,CROK 04520 XOR A ;NO 04530 LD (YN),A 04540 INC HL 04550 JP CNT3A 04560 CROK LD A,1 04570 LD (YN),A 04580 INC HL 04590 JP CNT3A 04600 RME INC HL 04610 LD A,(HL) 04620 LD (RUM),A 04630 INC HL 04640 JP CNT3A 04650 DELA INC HL 04660 LD A,(HL) 04670 CALL ININ 04680 CALL Z,INSUB 04690 CALL INRM 04700 CALL Z,RMSUB 04710 INC HL 04720 JP CNT3A 04730 NON INC HL 04740 LD B,(HL) 04742 INC HL 04744 NONA LD C,(HL) 04750 LD A,(NOUN) 04760 CP C 04770 JR Z,NOK 04780 INC HL 04782 DJNZ NONA 04790 NON1 LD A,(HL) 04791 CP 32 04792 JR Z,NON 04794 CP 40 04796 JP Z,CNT3A 04800 CP 31 ;CB 04810 JP Z,CNT3A 04820 CALL NXTCOM 04830 JR NON1 04840 NOK INC HL 04842 DJNZ NOK 04850 JP CNT3A 04860 FLGC INC HL 04890 CALL FLOOK 04891 INC HL 04892 LD B,(HL) ;NUM TO CP 04900 LD A,(DE) 04910 CP B 04920 JR Z,FL1 04930 FL2 XOR A 04940 LD (YN),A 04950 INC HL 04960 JP CNT3A 04970 FL1 LD A,1 04980 LD (YN),A 04990 INC HL 05000 JP CNT3A 05010 VB INC HL 05020 LD B,(HL) 05025 LD A,(VERB) 05030 VB1 INC HL 05040 LD C,(HL) 05050 CP C 05060 JR Z,VBOK 05070 DJNZ VB1 05080 INC HL 05090 VBLP LD A,(HL) 05100 CP 0FFH 05110 JR Z,HUH 05120 CP 31 05130 JP Z,CNT3A 05140 CALL NXTCOM 05150 JR VBLP 05160 HUH LD HL,WHAT 05170 CALL PRINT 05180 JP INP 05190 VBOK INC HL 05200 DJNZ VBOK 05210 JP CNT3A 05220 ENDO LD HL,PLAY 05222 CALL PRINT 05224 CALL 49H 05227 CP 'N' 05228 JR Z,ENDO2 05230 CP 'n' 05232 JR Z,ENDO2 05233 CP 'Y' 05234 JR Z,NEWG 05235 CP 'y' 05236 JR Z,NEWG 05241 CALL ROLL 05246 LD A,10 05247 CALL ROLL 05248 JR ENDO 05250 NEWG LD BC,(LEN) 05255 LD HL,(MEM+14) 05260 LD DE,30T 05265 ADD HL,DE 05270 LD DE,(MEM+10) 05275 LDIR 05277 XOR A 05279 LD (RUM),A 05280 LD HL,0 05281 LD (CURPOS),HL 05282 JP BEGIN 05285 ENDO2 CALL ROLL 05286 LD A,10 05287 CALL ROLL 05288 JP 402DH 05300 CRM INC HL 05310 LD A,(HL) 05320 CALL INRM 05330 JP Z,CIN1 05340 JP CIN2 05350 CHINA INC HL 05360 LD A,(HL) 05370 CALL ININ 05380 JP Z,CIN1 05390 JP CIN2 05400 NOEND INC HL 05410 JP CNT3A 05500 SAVEG LD HL,DOT 05510 CALL PRINT 05520 CALL 49H 05530 CALL ROLL 05532 PUSH AF 05534 LD A,0DH 05536 CALL ROLL 05538 POP AF 05540 CP 'D' 05550 JR Z,DON 05560 CP 'd' 05570 JR Z,DON 05580 CP 'T' 05590 JR Z,SYNC 05600 CP 't' 05610 JR Z,SYNC 05620 JP INP 05630 DON LD HL,FILE 05640 CALL PRINT 05650 CALL INPUT 05660 LD DE,DCB 05670 LD HL,BUFFER 05680 CALL 441CH 05690 LD HL,BUFFER 05695 LD DE,DCB 05700 LD B,0 05710 CALL 4420H 05720 JR NZ,DSKERR 05770 BINGO LD HL,(MEM+14) ;START 05780 LD DE,(MEM+10) 05790 XOR A 05800 SBC HL,DE 05810 LD BC,(MEM+10) 05812 LD DE,DCB 05814 LD A,0FEH 05816 CALL 1BH 05826 LD A,(RUM) 05828 CALL 1BH 05830 BLP LD A,(BC) 05840 CALL 1BH 05850 JR NZ,DSKERR 05860 INC BC 05870 DEC HL 05880 XOR A 05890 OR H 05900 OR L 05910 JR NZ,BLP 05920 LD HL,(MEM+14) 05922 BLP2 LD A,(HL) 05924 CALL 01BH 05926 JR NZ,DSKERR 05927 LD A,(HL) 05928 CP 0FFH 05930 JR Z,CF 05932 INC HL 05934 JR BLP2 05936 CF LD DE,DCB 05938 CALL 4428H 05940 JP NZ,DSKERR 05944 JP INP 05950 DSKERR LD HL,DSKIO 05960 CALL PRINT 05970 JP INP 05980 SYNC LD HL,CASS 05990 CALL PRINT 05992 LD A,14 05994 CALL 33H 06000 CALL 49H 06001 CP 01 06010 JP Z,INP 06015 DI 06020 LD HL,(MEM+14) 06030 LD DE,(MEM+10) 06040 XOR A 06050 SBC HL,DE 06060 CALL 212H 06070 CALL 287H 06072 LD A,0FEH 06074 CALL 264H 06075 LD A,(RUM) 06076 LD C,A 06077 CALL 264H 06080 LD DE,(MEM+10) 06090 LD A,L 06100 CALL 264H 06102 LD A,L 06104 ADD A,C 06106 LD C,A 06110 LD A,H 06120 CALL 264H 06122 LD A,H 06124 ADD A,C 06125 LD C,A 06130 WR LD A,(DE) 06140 CALL 264H 06142 LD A,(DE) 06144 ADD A,C 06146 LD C,A 06150 INC DE 06160 DEC HL 06170 XOR A 06180 OR H 06190 OR L 06200 JR NZ,WR 06210 LD HL,(MEM+14) 06220 WR2 LD A,(HL) 06230 CALL 264H 06231 LD A,(HL) 06240 CP 0FFH 06250 JR Z,WR3 06252 ADD A,C 06254 LD C,A 06260 INC HL 06270 JR WR2 06280 WR3 LD A,C 06282 CALL 264H 06284 XOR A 06286 CALL 01F8H 06300 JP INP 06310 LOADG LD HL,DOT 06320 CALL PRINT 06330 CALL 49H 06331 CALL ROLL 06332 PUSH AF 06334 LD A,0DH 06336 CALL ROLL 06338 POP AF 06340 CP 'D' 06350 JR Z,DSKL 06360 CP 'd' 06370 JR Z,DSKL 06380 CP 'T' 06390 JR Z,TAPL 06400 CP 't' 06410 JP NZ,INP 06415 JP TAPL 06420 DSKL LD HL,FILE 06430 CALL PRINT 06440 CALL INPUT 06450 LD HL,BUFFER 06460 LD DE,DCB 06470 CALL 441CH 06480 LD DE,DCB 06490 LD HL,BUFFER 06500 LD B,0 06510 CALL 4424H 06520 JP NZ,DSKERR 06521 LD DE,DCB 06523 LD HL,(MEM+10) 06524 CALL 13H 06525 CP 0FEH 06526 JP NZ,FORERR 06528 CALL 13H 06529 LD (RUM),A 06530 DRD CALL 13H 06540 JR NZ,EOF 06550 LD (HL),A 06560 INC HL 06570 JR DRD 06580 EOF CP 28 06590 JP NZ,DSKERR 06592 CALL 01C9H 06594 LD HL,0 06596 LD (CURPOS),HL 06600 JP START2 06610 TAPL LD HL,CASS 06620 CALL PRINT 06622 LD A,14 06624 CALL 33H 06630 CALL 49H 06631 CP 01 06640 JP Z,INP 06645 DI 06650 XOR A 06660 CALL 212H 06670 CALL 296H 06671 CALL 235H 06672 CP 0FEH 06673 JP NZ,FOR1 06674 CALL 235H 06675 LD (RUM),A 06676 LD C,A 06680 CALL 314H 06690 LD DE,(MEM+10) 06692 LD A,H 06693 ADD A,C 06694 LD C,A 06695 LD A,L 06696 ADD A,C 06697 LD C,A 06700 TL CALL 235H 06710 LD (DE),A 06712 ADD A,C 06714 LD C,A 06720 INC DE 06730 DEC HL 06740 XOR A 06750 OR H 06760 OR L 06770 JR NZ,TL 06780 LD DE,(MEM+14) 06790 TL2 CALL 235H 06800 LD (DE),A 06802 ADD A,C 06804 LD C,A 06805 LD A,(DE) 06810 INC DE 06820 CP 0FFH 06822 JR NZ,TL2 06824 CALL 235H 06825 INC C 06826 CP C 06828 JP NZ,CSER 06832 XOR A 06834 CALL 01F8H 06835 CALL 01C9H 06837 LD HL,0 06839 LD (CURPOS),HL 06840 JP START2 06880 FOR1 XOR A 06890 CALL 01F8H 06900 FORERR LD HL,FERR 06910 CALL PRINT 06920 JP INP 06922 CSER XOR A 06924 CALL 01F8H 06930 LD HL,CER 06940 CALL PRINT 06950 JP INP 07000 FLGG INC HL 07010 CALL FLOOK 07020 INC HL 07030 LD B,(HL) 07040 LD A,(DE) 07050 CP B 07060 JP C,FL2 07065 JP Z,FL2 07070 JP FL1 07080 FLGL INC HL 07090 CALL FLOOK 07100 INC HL 07110 LD A,(DE) 07120 LD B,(HL) 07130 CP B 07140 JP C,FL1 07150 JP FL2 09000 CTOP LD HL,(LIN) 09130 LD DE,3C00H+1 09140 XOR A 09150 SBC HL,DE 09160 PUSH HL 09170 POP BC 09180 LD HL,3C00H 09190 LD DE,3C01H 09200 LD A,20H 09210 LD (HL),A 09220 LDIR 09230 LD HL,(401DH+3) 09240 LD (CURPOS),HL 09250 RET 09260 ;SCROLL - IF 10 OR 0D BEING PRINTED & ON BOTTOM 09270 ;LINE SCROLL 09280 ROLL CP 0DH 09290 JR Z,SCROLL 09300 CP 10 09310 JP NZ,33H 09320 SCROLL PUSH HL 09330 PUSH DE 09340 PUSH BC 09345 PUSH AF 09347 LD A,15 09349 CALL 33H ;C OFF 09350 LD HL,(401DH+3) 09360 LD DE,3C00H+15*64 09370 XOR A 09380 SBC HL,DE 09390 JR C,NOROL 09400 LD DE,(LIN) 09520 LD HL,3C00H+15*64 09530 XOR A 09560 SBC HL,DE 09570 PUSH HL 09580 POP BC 09590 LD DE,(LIN) 09600 LD HL,64 09605 ADD HL,DE 09610 LDIR 09620 LD HL,3C00H+15*64 09630 LD (401DH+3),HL 09640 LD DE,3C00H+15*64+1 09650 LD BC,63 09660 LD (HL),20H 09670 LDIR 09675 POP AF 09680 POP BC 09690 POP DE 09700 POP HL 09710 RET 09720 NOROL POP AF 09725 POP BC 09730 POP DE 09740 POP HL 09750 JP 33H 10000 EXTFND LD A,(RUM) ;EXIT TABLE OF RM->HL&IX 10010 LD E,A 10020 LD D,0 ;LD DE,A 10030 LD HL,(MEM) ;START OF EXIT TABLES 10040 LD B,6 10050 EXT1 ADD HL,DE 10060 DJNZ EXT1 10070 PUSH HL 10080 POP IX 10090 RET 10100 ;INPUT INPUTS A STRNG INTO BUFFER AS ALL CAPS 10110 INPUT LD A,0EH 10120 CALL 33H ;TURN ON CURSOR 10130 LD B,50D ;MAX INPUT 10140 LD HL,BUFFER 10150 INP1 CALL 49H 10160 CP 08 10170 JR Z,BS 10171 CP 13 10172 JR Z,LEG 10173 CP 32 10174 JP C,INP1 10180 LEG CALL ROLL 10190 CP 65 10200 JR C,SPIK ;MAKE UC 10210 AND 223 10240 SPIK LD (HL),A 10250 INC HL 10260 CP 0DH 10270 RET Z 10280 DJNZ INP1 10290 LD (HL),0DH 10300 RET 10310 BS PUSH HL 10320 LD DE,BUFFER 10330 XOR A 10340 SBC HL,DE 10350 POP HL 10360 JR Z,INP1 10370 DEC HL 10380 LD A,8 10390 CALL 33H 10400 JR INP1 10450 ;PRINT - PRINT STRING AT HL INTILL A 0 OR 0DH 10460 PRINT PUSH HL 10470 PUSH AF 10472 LD A,14 10474 CALL 33H 10480 LP2 LD A,(HL) 10490 CP 0 10500 JR Z,CLEAN 10510 CALL ROLL 10520 CP 0DH 10530 JR Z,CLEAN 10540 INC HL 10550 JR LP2 10560 CLEAN POP AF 10570 POP HL 10580 RET 10590 ;LOOK - FIND ITEM A IN TABLE AT HL 10595 LOOK PUSH DE ;SAVE 10596 PUSH BC 10600 SLA A ;A*2 FOR WORDS 10610 LD C,A 10620 LD B,0 ;LD BC,A 10630 ADD HL,BC 10640 LD E,(HL) 10650 INC HL 10660 LD D,(HL) 10670 EX DE,HL 10675 POP BC 10680 POP DE 10690 RET 10700 ;RSFIND - POINT TO CURRENT ROOM ITEM TABLE WITH HL 10710 RSFIND PUSH DE 10715 PUSH BC 10720 LD HL,(MEM+10) ;POINT TO LIST OF ITEMS 10730 LD A,(RUM) 10740 LD E,A 10750 LD D,0 ;LD DE,A 10760 LD B,20D ;RUM*TABLE START 10770 RSLP ADD HL,DE 10780 DJNZ RSLP 10790 POP BC 10800 POP DE 10810 RET 10815 ;CMPR - COMARE DE & HL 10820 ; CMPARES TO A 0D OR 00 IN HL, OR A MAX OF 4 CHARS 10825 CMPR PUSH HL 10830 PUSH DE 10832 PUSH BC 10835 LD B,04D 10840 EX DE,HL 10845 HEE LD C,(HL) 10850 LD A,(DE) 10855 CP 00 10860 JR Z,HERE 10865 CP 0DH 10870 JR Z,HERE 10875 CP C 10880 JR NZ,HERE 10885 INC HL 10890 INC DE 10895 DJNZ HEE 10897 HERE POP BC 10900 POP DE 10905 POP HL 10910 RET 10930 ;FIND - HL -> POS OF TABLE IN MEM 10940 ; DE -> NOUN/VERB TO FIND 10950 ; FINDS THE ENTRY NUMBER FOR A NOUN/VERB 10960 FIND PUSH HL 10970 POP IX 10972 LD B,0 10980 FLOOP LD H,(IX+1) 10990 LD L,(IX+0) 11000 XOR A 11010 OR H 11020 OR H 11030 JR Z,FIN 11040 CALL CMPR 11050 RET Z 11060 INC B 11070 INC IX 11080 INC IX 11090 JR FLOOP 11100 FIN LD A,0FFH ;SET NZ FLAG 11101 OR A 11110 RET 11120 ;PUT - PRINTS HL TILL A 0D OR 20H BUT WITH NO C/R 11130 PUT LD A,(HL) 11140 CP 20H 11150 RET Z 11160 CP 0DH 11170 RET Z 11180 CALL ROLL 11190 INC HL 11200 JR PUT 11210 ;RMADD - PUT A INTO THE CURRENT ROOM 11215 RMADD PUSH HL 11220 PUSH AF 11230 CALL RSFIND ;PUT START OF ROOM TO HL 11240 RMLP LD A,(HL) 11250 CP 0FFH ;FREE SPACE 11260 JR Z,FND 11270 INC HL 11280 JR RMLP 11290 FND POP AF 11300 LD (HL),A 11305 POP HL 11310 RET 11320 ;RMSUB - TAKE ITEM A OUT OF THE RM 11330 RMSUB PUSH HL ;SAVE 11340 LD C,A 11350 CALL RSFIND 11360 LD B,20 ;MAX TO SEARCH 11370 RMLP2 LD A,(HL) 11380 CP C 11390 JR Z,FND2 11400 INC HL 11410 DJNZ RMLP2 11420 LD HL,ERR2 11430 CALL PRINT 11440 POP HL 11445 LD A,C 11450 RET 11460 FND2 LD A,0FFH 11470 LD (HL),A 11475 LD A,C 11480 POP HL 11490 RET 11500 ;INADD - ADD AN ITEM TO THE INVENTORY 11510 INADD PUSH HL 11515 PUSH BC 11524 LD B,A 11525 LD HL,(MEM+14) ;INVENTORY TABLE 11530 INLP LD A,(HL) 11540 CP 0FFH 11550 JR Z,INOK 11560 INC HL 11570 JR INLP 11580 INOK LD A,B 11590 LD (HL),A 11600 INC HL 11610 LD A,0FFH 11620 LD (HL),A 11622 LD A,B 11624 POP BC 11630 POP HL 11640 RET 11650 ;INSUB - DELETE A FROM THE INVENTORY 11660 INSUB PUSH HL 11670 PUSH BC 11675 LD B,A 11680 LD HL,(MEM+14) ;INVENT START 11690 INLP2 LD A,(HL) 11700 CP 0FFH 11710 JR Z,INERR 11720 CP B 11730 JR Z,OKY 11740 INC HL 11750 JR INLP2 11760 INERR LD HL,INER 11770 CALL PRINT 11780 JR IEN 11810 OKY PUSH HL 11820 POP IX 11830 OKY2 LD A,(IX+1) 11840 LD (IX+0),A 11850 CP 0FFH 11860 JR Z,IEN 11870 INC IX 11880 JR OKY2 11882 IEN LD A,B 11890 POP BC 11900 POP HL 11910 RET 11915 ;INRM - SEE IF A IS IN THE CURRENT ROOM 11925 INRM PUSH HL 11926 PUSH BC 11927 PUSH AF 11928 CALL RSFIND 11935 POP AF ;FIND CURRENT ROOM 11936 LD B,20D 11945 INRM1 LD C,(HL) 11955 CP C 11965 JR Z,INRM2 11975 INC HL 11985 DJNZ INRM1 11990 LD B,A 11995 LD A,0FFH 12005 OR A 12007 LD A,B 12015 INRM2 POP BC 12025 POP HL 12035 RET 12040 ;ININ SCAN INVENTOR FOR A 12050 ININ PUSH HL 12060 PUSH BC 12065 LD B,A 12070 LD HL,(MEM+14) 12080 IN1 LD A,(HL) 12090 CP 0FFH 12100 JR Z,IN2 12110 CP B 12120 JR Z,IN3 12130 INC HL 12140 JR IN1 12150 IN2 LD A,0FFH 12160 OR A 12165 IN3 LD A,B 12170 POP BC 12180 POP HL 12190 RET 12200 ;SKIP - TESTS IF INDICATED FLG=CURRENT FLG, IF NOT SKIPS 12210 SKIP LD B,A 12215 BIT 6,A 12220 JR Z,ZERO ;Z=N: 12240 LD A,(YN) 12250 CP 1 12260 JR Z,SOK 12280 JR SKIP2 12300 ZERO LD A,(YN) 12310 CP 0 12320 JR Z,SOK 12330 SKIP2 CALL NXTCOM 12340 SCF ;SET CARRY 12350 RET 12360 SOK LD A,B 12370 AND 63 12380 SCF 12390 CCF ;RESET C FLAG 12400 RET 12410 ;NXTCOM - LD SKIP THE CURENT COMAND 12420 NXTCOM LD A,(HL) 12425 AND 63 12430 CP 11 12440 JR C,ONE 12450 CP 28 12460 JR C,TWO 12470 CP 31 12471 JR C,THREE 12472 CP 40 12474 JR C,VARI 12476 JR ONE 12480 VARI INC HL 12490 LD A,(HL) 12495 PUSH BC 12500 LD C,A 12510 LD B,0 12520 ADD HL,BC 12525 POP BC 12530 JR ONE 12540 THREE INC HL 12550 TWO INC HL 12560 ONE INC HL 12570 RET 12580 FLOOK PUSH HL ;FIND FLAG @ HL 12590 PUSH BC 12600 LD B,0 12610 LD A,(HL) 12620 LD C,A 12630 LD HL,(MEM+12) 12640 ADD HL,BC 12650 EX DE,HL 12660 POP BC 12670 POP HL 12680 RET 12690 ;FIND2 LOOKS FOR DE IN HL. 12700 ;LOOKS HARDER THAN FIND DOES. 12710 FIND2 PUSH HL 12720 POP IX 12730 LD C,0 12740 LD B,0FFH 12745 ANN INC B 12760 LD L,(IX+0) 12770 LD H,(IX+1) 12780 LD A,H 12790 OR L 12800 JR Z,WOOD 12810 ANN2 CALL CMPR 12820 JR Z,WFND 12830 AMW LD A,(HL) 12835 INC HL 12840 CP 0DH 12850 JR Z,ANN3 12860 CP 20H 12870 JR Z,ANN2 12880 CP 00 12890 JR Z,ANN3 12910 JR AMW 12920 ANN3 INC IX 12925 INC IX 12930 JR ANN 12970 WFND PUSH BC ;B=#, C=NO OF # 12990 INC C 12992 INC IX 12994 INC IX 13000 JR ANN 13010 WOOD LD A,C 13020 CP 0 13030 JR Z,NOMAT 13040 WOOD1 POP BC 13050 LD A,B 13060 CALL INRM 13070 JR Z,KEG 13080 CALL ININ 13090 JR Z,KEG 13092 LD A,C 13094 CP 0 13096 JR NZ,WOOD1 13097 KEG LD D,B 13100 CLEAN2 LD A,C 13101 CP 00 13102 JR Z,CLEAN3 13103 POP BC 13104 LD A,B 13106 CALL INRM 13107 JR Z,WHI 13108 CALL ININ 13109 JR NZ,CLEAN2 13115 WHI LD A,C 13120 CP 0 13125 JR Z,WHI2 13130 POP BC 13135 JR WHI 13140 WHI2 LD HL,CLER 13145 CALL PRINT 13150 POP HL 13155 JP INP 13180 NOMAT LD A,0FFH 13190 OR A 13200 RET 13210 POP BC 13220 JR CLEAN2 13230 CLEAN3 LD B,D 13240 RET 13250 ;TYPE - PRINT ITEM AT HL TILL 0. DOES NOT OVERLAP 13260 ; SCREEN 13270 TYPE PUSH BC 13271 PUSH HL 13275 PUSH HL 13280 TY1 LD A,(HL) 13290 CP 0 13300 JR Z,TY2 13310 INC HL 13320 JR TY1 13330 TY2 POP DE 13340 XOR A 13350 INC HL ;ADJUST FOR ". " 13360 SBC HL,DE 13365 PUSH HL 13370 LD HL,(401DH+3) ;HL - 64 13375 CALL KOUNT 13380 LD (TEM),A 13390 LD HL,(401DH+3) 13400 POP BC 13410 ADD HL,BC 13420 CALL KOUNT 13425 LD B,A 13426 LD A,(TEM) 13430 POP HL 13440 SUB B 13445 POP BC 13450 JP Z,PRINT 13460 LD A,0DH 13470 CALL ROLL 13480 JP PRINT 13490 KOUNT XOR A 13500 LD DE,3C00H 13510 SBC HL,DE 13520 LD DE,64T 13530 K1 SBC HL,DE 13540 RET C 13550 INC A 13560 JR K1 13570 ;SCRPRT PRINT TITLE PAGE 13580 SCRPRT LD E,(HL) 13590 INC HL 13600 LD D,(HL) 13610 INC HL 13620 XOR A 13630 OR E 13640 OR D 13650 RET Z 13660 LD C,(HL) 13670 INC HL 13680 LD B,(HL) 13690 INC HL 13700 LDIR 13710 JR SCRPRT 50000 ;LIST OF ITEMS 50005 NORTH DEFM 'NORTH. ' 50010 DEFB 00 50015 SOUTH DEFM 'SOUTH. ' 50020 DEFB 0 50025 EAST DEFM 'EAST. ' 50030 DEFB 0 50035 WEST DEFM 'WEST. ' 50040 DEFB 0 50045 UP DEFM 'UP' 50050 DEFB 0 50055 DOWN DEFM 'DOWN. ' 50060 DEFB 0 50070 INV DEFM 'INVE' 50080 DEFB 0 50090 SAV DEFM 'SAVE' 50100 DEFB 0 50110 LOA DEFM 'LOAD' 50120 DEFB 0 51000 ;TEXT STATMENTS 51005 ISEE DEFM 'I can see: ' 51010 DEFB 0 51075 LINE DEFB 15 51080 DEFM '<-------------------------------------------------------------->' 51090 DEFB 0 51100 PRED DEFM 'I am ' 51110 DEFB 00 51120 PROM DEFM 'Now what ===--> ' 51130 DEFB 00 51140 DSP DEFM '. ' 51150 DEFB 0 51160 BADIN DEFM 'I don' 51170 DEFB 39 51180 DEFM 't understand.' 51190 DEFB 0DH 51200 BADDI DEFM 'I can not go that way.' 51210 DEFB 0DH 51220 INVEMP DEFM 'I am not carrying anything.' 51230 DEFB 0DH 51240 VERR DEFM 'I don' 51241 DEFB 39 51242 DEFM 't know how to ' 51250 DEFB 00 51260 ERRN DEFM 'I don' 51270 DEFB 39 51280 DEFM 't know what a ' 51290 DEFB 0 51300 ERRN2 DEFM ' is.' 51310 DEFB 0DH 51320 WAY DEFM 'Obvious exits are: ' 51330 DEFB 0 51332 ERR2 EQU $ 51334 INER EQU $ 51340 ILEG DEFM 'SYSERR' 51350 DEFB 0DH 51400 NOT DEFM 'There is not one here!' 51410 DEFB 0DH 51420 WHAT DEFM 'I do not understand.' 51430 DEFB 0DH 51440 PLAY DEFM 'Do you wish to play another game? ' 51450 DEFB 0 51460 CLER DEFM 'Please be more specific.' 51470 DEFB 0DH 51480 CASS DEFM 'Ready cassette' 51490 DEFB 0DH 51500 FILE DEFM 'Enter the file name --> ' 51510 DEFB 0 51520 DOT DEFM 'Use Disk or Tape? ' 51530 DEFB 0 51540 DSKIO DEFM 'Disk I/O error!' 51550 DEFB 0DH 51560 FERR DEFM 'This is not a saved adventure!' 51570 DEFB 0DH 51580 CER DEFM 'Check sum error! probably fatel.' 51590 DEFB 0DH 60000 ;VARIABLES 60010 BUFFER DEFS 256D 60015 DCB DEFS 50D 60020 RUM DEFB 0 60030 NN DEFW 0 60040 VERB DEFB 0 60050 NOUN DEFB 0 60060 YN DEFB 0 60070 LEN DEFW 0 60080 CURPOS DEFW 0 60090 LIN DEFW 0 60091 TEM DEFB 0 60100 SIZE DEFB 0 60105 MEM EQU $ 61000 END 5200H