0100 ; SYNTAX ERROR 0110 ; ------------ 0120 SYNERR 0130 PRINT T13 ; "Syntax:" 0140 RTS 0150 ; 0160 ; CLEAR WINDOWS 0170 ; ------------- 0180 ; What Happens window 0190 ; 0200 CLWH 0210 LDX #9 0220 JSR ERASE 0230 INX 0240 JSR ERASE 0250 LDY #9 0260 JMP POSIT13 0270 ; 0280 ; Inventory window 0290 ; 0300 CLINV 0310 LDX #13 0320 CLINV1 0330 JSR ERASE 0340 INX 0350 CPX #19 0360 BCC CLINV1 0370 RTS 0380 ; 0390 ; DISPLAY ROOM VECTORS 0400 ; -------------------- 0410 SHOWVECTS 0420 LDX #2 0430 JSR ERASE 0440 LDY #0 0450 LDX #0 0460 STX ANY? 0470 SVL 0480 LDA CURVECT,X 0490 BMI VSKIP 0500 LDA VNAMES,X 0510 STA SCREEN+93,Y 0520 INC ANY? 0530 INY 0540 INY 0550 VSKIP 0560 INX 0570 CPX #6 0580 BCC SVL 0590 LDA ANY? 0600 BNE VECTEX 0610 POSITION 13,2 0620 PRINT T61 ; "None" 0630 VECTEX 0640 RTS 0650 ; 0660 ; Vector initials 0670 ; 0680 VNAMES 0690 .SBYTE "NSEWUD" 0700 ; 0710 ; DISPLAY ROOM OBJECTS 0720 ; -------------------- 0730 SHOWVIS 0740 LDX #3 0750 CLVIS 0760 JSR ERASE 0770 INX 0780 CPX #9 0790 BCC CLVIS 0800 POSITION 13,3 0810 LDX #0 0820 STX ANY? 0830 SHV1 0840 STX PDEX 0850 LDA CUROBJS,X 0860 BMI SHV2 0870 INC ANY? 0880 TAX 0890 LDA OBDLS,X 0900 LDY OBDHS,X 0910 JSR EPRINT 0920 SHV2 0930 LDX PDEX 0940 INX 0950 CPX #6 0960 BCC SHV1 0970 LDA ANY? 0980 BNE SHEXIT 0990 PRINT T28 ; "Nothing" 1000 SHEXIT 1010 RTS 1020 ; 1030 ; DISPLAY INVENTORY 1040 ; ----------------- 1050 SHOWINV 1060 JSR CLINV 1070 POSITION 13,13 1080 LDX #0 1090 STX ANY? 1100 SHI1 1110 STX PDEX 1120 LDA HOLDINGS,X 1130 BMI SHI2 1140 INC ANY? 1150 TAX 1160 LDA OBDLS,X 1170 LDY OBDHS,X 1180 JSR EPRINT 1190 SHI2 1200 LDX PDEX 1210 INX 1220 CPX #6 1230 BCC SHI1 1240 LDA ANY? 1250 BNE SIEXIT 1260 PRINT T28 ; "Nothing" 1270 SIEXIT 1280 RTS 1290 ; 1300 ; "OKAY" PROMPT 1310 ; ------------- 1320 POKAY 1330 JSR CLWH 1340 PRINT T20 ; "Okay" 1350 JMP GOODPARSE 1360 ; 1370 ; SEARCH INVENTORY 1380 ; ---------------- 1390 INVSPACE? 1400 LDA #$FF 1410 OWNIT? 1420 LDX #5 1430 OLOOP 1440 CMP HOLDINGS,X 1450 BEQ FOUND 1460 DEX 1470 BPL OLOOP 1480 TXA 1490 RTS 1500 FOUND 1510 STX INVPOS 1520 LDA #0 1530 RTS 1540 ; 1550 ; SEARCH ROOM 1560 ; ----------- 1570 ROOMSPACE? 1580 LDA #$FF 1590 INROOM? 1600 LDX #5 1610 IRLOOP 1620 CMP CUROBJS,X 1630 BEQ FOUND2 1640 DEX 1650 BPL IRLOOP 1660 TXA 1670 RTS 1680 FOUND2 1690 STX ROOMPOS 1700 LDA #0 1710 RTS 1720 ; 1730 ; PRINT INTEGER IN FR0 1740 ; -------------------- 1750 VPRINT 1760 JSR IFP 1770 JSR FASC 1780 CLD 1790 LDY #$FF 1800 VLOOP 1810 INY 1820 LDA (INBUFF),Y 1830 BPL VLOOP 1840 AND #$7F 1850 STA (INBUFF),Y 1860 INY 1870 LDA #EOL 1880 STA (INBUFF),Y 1890 LDA INBUFF 1900 LDY INBUFF+1 1910 JMP EPRINT 1920 ; 1930 ; DEATH 1940 ; ----- 1950 KILLS 1960 POSITION 10,5 1970 PRINT T63 ; "kills you instantly!" 1980 DEATH 1990 POSITION 24,7 2000 PRINT T66 ; "YOU ARE DEAD" 2010 JMP STARTOP 2020 ; 2030 ; CLOSE IOCB #1 2040 ; ------------- 2050 CLOSE1 2060 LDX #$10 2070 LDA #12 2080 STA ICCOM,X 2090 JMP CIOV 2100 ; 2110 ; POINT TO FILENAMES 2120 ; ------------------ 2130 DPOINT 2140 LDA # FILE 2160 JMP POINT 2170 TPOINT 2180 LDA # CADR 2200 POINT 2210 LDX #$10 2220 STA ICBADR,X 2230 TYA 2240 STA ICBADR+1,X 2250 RTS 2260 ; 2270 ; INIT DATABASE 2280 ; ------------- 2290 ; 2300 INITDATA 2310 ; 2320 ; Set status flags 2330 ; 2340 LDX #19 2350 LDA #0 2360 ID0 2370 STA EVENT,X 2380 DEX 2390 BPL ID0 2400 ; 2410 ; Clear vector/object matrix 2420 ; 2430 LDX #0 2440 LDA #$FF 2450 ID1 2460 STA OBJECTS,X 2470 STA VECTORS,X 2480 INX 2490 CPX #132 2500 BCC ID1 2510 ; 2520 ; Clear working arrays 2530 ; 2540 LDX #5 2550 ID2 2560 STA HOLDINGS,X 2570 STA CUROBJS,X 2580 STA CURVECT,X 2590 DEX 2600 BPL ID2 2610 LDX #1 2620 STX BULLET ; 1 bullet 2630 STX PLACE ; start in escape tube 2640 LDA #32 2650 STA MLAT 2660 LDA #168 2670 STA MLON 2680 ; 2690 ; Init tranlation table 2700 ; 2710 LDX #37 2720 ID3 2730 LDA TRANS,X 2740 STA NTRANS,X 2750 DEX 2760 BPL ID3 2770 ; 2780 ; Init vector matrix 2790 ; 2800 LDX #39 2810 ID4 2820 LDA VDATA,X 2830 LDY VSETS,X 2840 STA VECTORS,Y 2850 DEX 2860 BPL ID4 2870 ; 2880 ; Init object matrix 2890 ; 2900 LDX #31 2910 ID5 2920 LDA ODATA,X 2930 LDY OSETS,X 2940 STA OBJECTS,Y 2950 DEX 2960 BPL ID5 2970 RTS 2980 ; 2990 ; Translator data 3000 ; 3010 TRANS 3020 .BYTE 0,1,1,2,3,4,5,6 3030 .BYTE 7,8,9,10,11,12,13,14 3040 .BYTE 15,16,16,17,18,19,20,20 3050 .BYTE 21,22,23,24,25,26,27,28 3060 .BYTE 28,29,30,31,32,33 3070 ; 3080 ; Vector data 3090 ; 3100 VDATA 3110 .BYTE 2,0,4,4,2,6,1,15 3120 .BYTE 6,4,9,7,5,6,9,6 3130 .BYTE 10,8,19,9,21,15,13,12 3140 .BYTE 15,12,19,16,14,4,15,14 3150 .BYTE 19,15,20,18,9,19,19,11 3160 VSETS 3170 .BYTE 1,12,13,20,24,25,28,29 3180 .BYTE 32,36,37,38,39,45,50,54 3190 .BYTE 56,57,59,63,71,73,74,81 3200 .BYTE 86,90,91,92,93,94,99,102 3210 .BYTE 110,114,116,117,118,123,126,130 3220 ; 3230 ; Object data 3240 ; 3250 ODATA 3260 .BYTE 20,7,0,22,8,9,23,1 3270 .BYTE 25,2,10,15,11,16,17,31 3280 .BYTE 17,12,13,27,28,3,30,26 3290 .BYTE 29,18,4,5,19,14,32,6 3300 OSETS 3310 .BYTE 0,1,6,7,12,18,19,24 3320 .BYTE 30,42,43,48,49,54,60,61 3330 .BYTE 66,67,68,72,78,84,85,90 3340 .BYTE 96,102,108,114,115,116,120,126 3350 ; 3360 ; DICTIONARY 3370 ; ---------- 3380 ; 3390 ; SINGLE-CHAR COMMANDS 3400 ; -------------------- 3410 SCOMS 3420 .BYTE "N" ; 0 - North 3430 .BYTE "S" ; 1 - South 3440 .BYTE "E" ; 2 - East 3450 .BYTE "W" ; 3 - West 3460 .BYTE "U" ; 4 - Up 3470 .BYTE "D" ; 5 - Down 3480 .BYTE "Q" ; 6 - Quit 3490 .BYTE "X" ; 7 - Save 3500 .BYTE "A" ; 8 - Again 3510 ; 3520 ; COMPOUND VERBS 3530 ; -------------- 3540 VERBS 3550 .BYTE "TAK" ; 0 - take 3560 .BYTE "GET" ; 1 - get 3570 .BYTE "PUL" ; 2 - pull 3580 .BYTE "DRO" ; 3 - drop 3590 .BYTE "REM" ; 4 - remove 3600 .BYTE "LOO" ; 5 - look 3610 .BYTE "EXA" ; 6 - examine 3620 .BYTE "SEA" ; 7 - search 3630 .BYTE "REA" ; 8 - read 3640 .BYTE "PUS" ; 9 - push 3650 .BYTE "PRE" ; 10 - press 3660 .BYTE "OPE" ; 11 - open 3670 .BYTE "CLO" ; 12 - close 3680 .BYTE "USE" ; 13 - use 3690 .BYTE "KIL" ; 14 - kill 3700 .BYTE "SHO" ; 15 - shoot 3710 .BYTE "FIR" ; 16 - fire 3720 .BYTE "BRE" ; 17 - break 3730 .BYTE "SMA" ; 18 - smash 3740 .BYTE "INS" ; 19 - insert 3750 .BYTE "UNS" ; 20 - unscrew 3760 .BYTE "HOL" ; 21 - hold 3770 .BYTE "UNL" ; 22 - unlock 3780 .BYTE "CUT" ; 23 - cut 3790 .BYTE "POU" ; 24 - pour 3800 .BYTE "LUB" ; 25 - lubricate 3810 .BYTE "GRE" ; 26 - grease 3820 .BYTE "WEA" ; 27 - wear 3830 .BYTE "GO " ; 28 - go 3840 ; 3850 NV = 29 ; total # of verbs 3860 ; 3870 ; VERB VECTOR TABLE 3880 ; ----------------- 3890 VVECTS 3900 .WORD DOTAKE ; 0 3910 .WORD DOTAKE ; 1 3920 .WORD EASIER ; 2 3930 .WORD DODROP ; 3 3940 .WORD DOREMOVE ; 4 3950 .WORD DOLOOK ; 5 3960 .WORD DOLOOK ; 6 3970 .WORD DOLOOK ; 7 3980 .WORD DOREAD ; 8 3990 .WORD DOPUSH ; 9 4000 .WORD DOPUSH ; 10 4010 .WORD DOOPEN ; 11 4020 .WORD WHYBOTH ; 12 4030 .WORD BESPEC ; 13 4040 .WORD EASIER ; 14 4050 .WORD DOSHOOT ; 15 4060 .WORD DOSHOOT ; 16 4070 .WORD WHYBOTH ; 17 4080 .WORD WHYBOTH ; 18 4090 .WORD DOINSERT ; 19 4100 .WORD DOUNSCREW ; 20 4110 .WORD DOHOLD ; 21 4120 .WORD DOUNLOCK ; 22 4130 .WORD DOCUT ; 23 4140 .WORD DOPOUR ; 24 4150 .WORD DOLUBE ; 25 4160 .WORD DOLUBE ; 26 4170 .WORD DOWEAR ; 27 4180 ; 4190 ; COMPOUND NOUNS 4200 ; -------------- 4210 NOUNS 4220 .BYTE "HAT" ; 0 - hatch 4230 .BYTE "DOO" ; 1 - door 4240 .BYTE "LOC" ; 2 - lock 4250 .BYTE "SCA" ; 3 - scanner 4260 .BYTE "GRA" ; 4 - grate 4270 .BYTE "TRA" ; 5 - traitor 4280 .BYTE "AIR" ; 6 - airlock 4290 .BYTE "SWI" ; 7 - switch 4300 .BYTE "CAB" ; 8 - cable 4310 .BYTE "SIG" ; 9 - sign 4320 .BYTE "CAP" ; 10 - captain 4330 .BYTE "GRE" ; 11 - green 4340 .BYTE "RED" ; 12 - red 4350 .BYTE "GOL" ; 13 - gold 4360 .BYTE "SIL" ; 14 - silver 4370 .BYTE "WHI" ; 15 - white 4380 .BYTE "GAU" ; 16 - gauge 4390 .BYTE "PER" ; 17 - periscope 4400 .BYTE "SCO" ; 18 - scope 4410 .BYTE "DIS" ; 19 - display 4420 .BYTE "DUC" ; 20 - duct 4430 .BYTE "SLO" ; 21 - slot 4440 .BYTE "BOL" ; 22 - bolt 4450 .BYTE "UNI" ; 23 - unit 4460 .BYTE "PIS" ; 24 - pistol 4470 .BYTE "SCR" ; 25 - screwdriver 4480 .BYTE "NOT" ; 26 - note 4490 .BYTE "ID " ; 27 - ID 4500 .BYTE "CUT" ; 28 - cutters 4510 .BYTE "CAR" ; 29 - card 4520 .BYTE "WRE" ; 30 - wrench 4530 .BYTE "MAS" ; 31 - mask 4540 .BYTE "GAS" ; 32 - gas 4550 .BYTE "KNI" ; 33 - knife 4560 .BYTE "SHA" ; 34 - shampoo 4570 .BYTE "MAN" ; 35 - manual 4580 .BYTE "SUI" ; 36 - suit 4590 .BYTE "KEY" ; 37 - key 4600 .BYTE "BRE" ; 38 - breath 4610 .BYTE "BUT" ; 39 - button 4620 .BYTE "INV" ; 40 - inventory 4630 ; 4640 NN = 41 ; total # of nouns 4650 ; 4660 ; ROOM DESCRIPTIONS 4670 ; ----------------- 4680 ; 4690 RD0 4700 TEXT "Sonar sphere" 4710 RD1 4720 TEXT "Escape tube" 4730 RD2 4740 TEXT "Access tunnel" 4750 RD3 4760 TEXT "Captain's quarters" 4770 RD4 4780 TEXT "Forward passage" 4790 RD5 4800 TEXT "Radio room" 4810 RD6 4820 TEXT "Long corridor" 4830 RD7 4840 TEXT "Sonar station" 4850 RD8 4860 TEXT "Ballast control" 4870 RD9 4880 TEXT "Command station" 4890 RD10 4900 TEXT "Navigation center" 4910 RD11 4920 TEXT "Upper missile bay" 4930 RD12 4940 TEXT "Torpedo room" 4950 RD13 4960 TEXT "Weapons locker" 4970 RD14 4980 TEXT "Shower stalls" 4990 RD15 5000 TEXT "Crew's quarters" 5010 RD16 5020 TEXT "Galley" 5030 RD17 5040 TEXT "Ventilation duct" 5050 RD18 5060 TEXT "Fan room" 5070 RD19 5080 TEXT "Missile control" 5090 RD20 5100 TEXT "Equipment bay" 5110 RD21 5120 TEXT "Lower missile bay" 5130 ; 5140 ; ROOM DESC. ADDRESS TABLES 5150 ; ------------------------- 5160 RDLS 5170 .BYTE RD0, >RD1, >RD2, >RD3, >RD4, >RD5 5240 .BYTE >RD6, >RD7, >RD8, >RD9, >RD10, >RD11 5250 .BYTE >RD12, >RD13, >RD14, >RD15, >RD16, >RD17 5260 .BYTE >RD18, >RD19, >RD20, >RD21 5270 ; 5280 ; OBJECT DESCRIPTIONS 5290 ; ------------------- 5300 ; 5310 OBD0 5320 TEXT "Closed hatch" 5330 OBD1 5340 TEXT "Locked door" 5350 OBD2 5360 TEXT "Blank scanner" 5370 OBD3 5380 TEXT "Closed grate" 5390 OBD4 5400 TEXT "Traitor with pistol" 5410 OBD5 5420 TEXT "Closed airlock" 5430 OBD6 5440 TEXT "Locked arming switch" 5450 OBD7 5460 TEXT "Power cable" 5470 OBD8 5480 TEXT "Sign" 5490 OBD9 5500 TEXT "Dead captain" 5510 OBD10 5520 TEXT "Green button" 5530 OBD11 5540 TEXT "Red button" 5550 OBD12 5560 TEXT "Gold button" 5570 OBD13 5580 TEXT "Silver button" 5590 OBD14 5600 TEXT "White button" 5610 OBD15 5620 TEXT "Depth gauge" 5630 OBD16 5640 TEXT "Periscope" 5650 OBD17 5660 TEXT "Digital display" 5670 OBD18 5680 TEXT "Duct down to fan room" 5690 OBD19 5700 TEXT "Slot in airlock" 5710 OBD20 5720 TEXT "Bolted-down sonar unit" 5730 OBD21 5740 TEXT "Pistol" 5750 OBD22 5760 TEXT "Tiny screwdriver" 5770 OBD23 5780 TEXT "Suicide note" 5790 OBD24 5800 TEXT "Security ID" 5810 OBD25 5820 TEXT "Cable cutters" 5830 OBD26 5840 TEXT "Card" 5850 OBD27 5860 TEXT "Wrench" 5870 OBD28 5880 TEXT "Gas mask" 5890 OBD29 5900 TEXT "Dull knife" 5910 OBD30 5920 TEXT "Shampoo" 5930 OBD31 5940 TEXT "Tactics manual" 5950 OBD32 5960 TEXT "Radiation suit" 5970 OBD33 5980 TEXT "Key" 5990 OBD34 6000 TEXT "Open hatch" 6010 OBD35 6020 TEXT "Open door" 6030 OBD36 6040 TEXT "Active scanner" 6050 OBD37 6060 TEXT "Open grate" 6070 OBD38 6080 TEXT "Dead traitor" 6090 OBD39 6100 TEXT "Open airlock" 6110 OBD40 6120 TEXT "Activated switch" 6130 OBD41 6140 TEXT "Severed cable" 6150 OBD42 6160 TEXT "Radioactive sonar unit" 6170 ; 6180 ; DESCRIPTION ADDR TABLES 6190 ; ----------------------- 6200 OBDLS 6210 .BYTE OBD0, >OBD1, >OBD2, >OBD3 6350 .BYTE >OBD4, >OBD5, >OBD6, >OBD7 6360 .BYTE >OBD8, >OBD9, >OBD10, >OBD11 6370 .BYTE >OBD12, >OBD13, >OBD14, >OBD15 6380 .BYTE >OBD16, >OBD17, >OBD18, >OBD19 6390 .BYTE >OBD20, >OBD21, >OBD22, >OBD23 6400 .BYTE >OBD24, >OBD25, >OBD26, >OBD27 6410 .BYTE >OBD28, >OBD29, >OBD30, >OBD31 6420 .BYTE >OBD32, >OBD33, >OBD34, >OBD35 6430 .BYTE >OBD36, >OBD37, >OBD38, >OBD39 6440 .BYTE >OBD40, >OBD41, >OBD42 6450 ; 6460 ; TEXT 6470 ; ---- 6480 ; 6490 EADR 6500 TEXT "E:" 6510 CADR 6520 TEXT "C:" 6530 FILE 6540 TEXT "D1:GAME.DAT" 6550 T0 6560 TEXT "Brian Moriarty's" 6570 T1 6580 TEXT "CRASH DIVE" 6590 T2 6600 TEXT "(C)1984 ANALOG Computing" 6610 T3 6620 TEXT "Press START to play new game" 6630 T4 6640 TEXT "Press OPTION to restore old game" 6650 T5 6660 TEXT "Restore from Disk or Cassette?" 6670 T6 6680 TEXT " CRASH DIVE! (TM) EVENT # " 6690 T7 6700 TEXT " LOCATION EXITS " 6710 T8 6720 TEXT " VISIBLE ITEMS " 6730 T9 6740 TEXT " " 6750 T10 6760 TEXT " WHAT " 6770 T11 6780 TEXT " HAPPENS YOUR RESPONSE " 6790 T12 6800 TEXT " YOU ARE CARRYING " 6810 T13 6820 TEXT "Syntax:" 6830 T14 6840 TEXT "Bad command" 6850 T15 6860 TEXT "Bad verb" 6870 T16 6880 TEXT "Bad noun" 6890 T17 6900 TEXT "That's impossible" 6910 T18 6920 TEXT "Can't go that way" 6930 T19 6940 TEXT "Type Y to quit game:" 6950 T20 6960 TEXT "Okay" 6970 T21 6980 TEXT "Already holding it" 6990 T22 7000 TEXT "Isn't here" 7010 T23 7020 TEXT "Can't do that yet" 7030 T24 7040 TEXT "Your arms are full!" 7050 T25 7060 TEXT "Not enough room here" 7070 T26 7080 TEXT "Be more specific" 7090 T27 7100 TEXT "You don't have it" 7110 T28 7120 TEXT "Nothing" 7130 T29 7140 TEXT "Type N S E W U or D" 7150 T30 7160 TEXT "Refer to it by color" 7170 T31 7180 TEXT "Type I for inventory" 7190 T32 7200 TEXT "Doesn't help" 7210 T33 7220 TEXT "Why bother?" 7230 T34 7240 TEXT "Seems ordinary" 7250 T35 7260 TEXT "You found something!" 7270 T36 7280 TEXT "It's airtight" 7290 T37 7300 TEXT "Enemy approaching!" 7310 T38 7320 TEXT "Screwed in place" 7330 T39 7340 TEXT "Looks dangerous" 7350 T40 7360 TEXT "Needs key to activate" 7370 T41 7380 TEXT "Bolts are tight & rusty" 7390 T42 7400 TEXT "DANGER: Radiation zone!" 7410 T43 7420 TEXT "Brains blown out" 7430 T44 7440 TEXT "Shampoo all used up" 7450 T45 7460 TEXT "BANG!" 7470 T46 7480 TEXT "Accepts security ID card" 7490 T47 7500 TEXT "It glows" 7510 T48 7520 TEXT "See photo in ANALOG #18" 7530 T49 7540 TEXT "Ace of Spades!" 7550 T50 7560 TEXT "Easier said than done" 7570 T51 7580 TEXT "Only 1 bullet" 7590 T52 7600 TEXT "No bullets" 7610 T53 7620 TEXT "X =" 7630 T54 7640 TEXT "Y =" 7650 T55 7660 TEXT "FATHOMS" 7670 T56 7680 TEXT "Nothing happens" 7690 T59 7700 TEXT "Sub levels off" 7710 T60 7720 TEXT "Sub dives" 7730 T61 7740 TEXT "None" 7750 T62 7760 TEXT "A cloud of poisonous gas" 7770 T63 7780 TEXT "kills you instantly!" 7790 T64 7800 TEXT "Lock is very secure" 7810 T65 7820 TEXT "Already open" 7830 T66 7840 TEXT "you are DEAD" 7850 T67 7860 TEXT "Enemy captures the sub and" 7870 T68 7880 TEXT "It falls down the pipe" 7890 T71 7900 TEXT "Lock destroyed!" 7910 T72 7920 TEXT "Try examining things" 7930 T73 7940 TEXT "Screwdriver's too tiny" 7950 T75 7960 TEXT "Key won't fit" 7970 T76 7980 TEXT "A jolt of high voltage" 7990 T77 8000 TEXT "Traitor shoots you and" 8010 T78 8020 TEXT "Sub hits bottom!" 8030 T79 8040 TEXT "A blast of radioactivity" 8050 T80 8060 TEXT "Bolts won't let you" 8070 T81 8080 TEXT "Congratulations!" 8090 T82 8100 TEXT "Save game to Disk or Cassette?" 8110 T83 8120 TEXT "Connected to cable" 8130 ;