Willus.com
Home
|
Archive
|
About
WIZCAST2.BAS
(18430 bytes)
EMULATE AS:
DEFAULT TYPE (BASIC)
|
CMD program
|
Program on Disk
|
2-Disk Debug
|
Disk Download
SHOW BELOW AS:
BASIC program
(download)
|
Text File
(download)
|
Z-80 Program
(download)
|
EDTASM File
(download)
|
Graphic
(download)
|
Hex File
(download)
|
SCRIPSIT File
(download)
Return to TRS-80 software list.
5 CLEAR350:DEFINTA-F,H-Z:DIMK#(7,7),C$(33),R$(4),W$(8),E$(8),C(3,4),T(8):I=0:RANDOM:T=RND(128):GOTO20 6 I=VARPTR(K#(X-1,Y-1))+Z-1:RETURN 7 I=PEEK(I)+100*(PEEK(I)>99):RETURN 8 I=I+8*((I=9)-(I=0)):RETURN 9 I=-I*(I<19)-18*(I>18):RETURN 10 X=RND(8):Y=RND(8):GOSUB6:IFPEEK(I)<>101THEN10 11 POKEI,Q:RETURN 20 CLS:PRINTSTRING$(64,"*"),:PRINTTAB(21)"THE WIZARD'S CASTLE":PRINTSTRING$(64,"*"),"Copyright (C) 1979 by Joseph R Power":Y$="** ANSWER YES OR NO":X$="DO YOU WANT A POTION OF ":Q$=" FOR 1000 GP'S":ST$="STRENGTH":IQ$="INTELLIGENCE":DX$="DEXTERITY" 25 PRINT"LAST REVISED 4/30/82":PRINT 80 RESTORE:FORQ=1TO33:READC$(Q):NEXTQ:READI$:FORZ=1TO8:FORY=1TO8:FORX=1TO8:GOSUB6:POKEI,101:NEXTX,Y,Z:FORQ=1TO8:READW$(Q),E$(Q):NEXTQ:FORQ=1TO4:READR$(Q):NEXTQ 83 JU$="":INPUT"DO YOU WISH TO USE A PRE-PREPARED CASTLE (Y/N)";JU$:IFJU$=""THEN83:ELSEIFJU$="Y"THEN GOSUB 10000 : GOTO 230 85 JU$="N":INPUT"DO YOU WANT TO LOAD AN OLD GAME (Y/N)";JU$:IFLEFT$(JU$,1)=CHR$(121) OR LEFT$(JU$,1)=CHR$(89) THEN IM=0 : GOTO 64000 87 PRINT"PLEASE BE PATIENT - ";:X=1:Y=4:Z=1 160 GOSUB6:POKEI,2:PRINT"IN";:FORZ=1TO7:FORQ1=1TO2:Q=104:GOSUB10:POKEI+1,103:NEXTQ1:NEXTZ:PRINT"I";:FORZ=1TO8:FORQ=113TO124:GOSUB10:NEXTQ:FORQ1=1TO3:FORQ=105TO112:GOSUB10:NEXTQ:Q=125:GOSUB10:NEXTQ1:READO$:PRINTO$;:NEXTZ 220 FORQ=126TO133:Z=RND(8):GOSUB10:NEXTQ:PRINT"G";:Q=101:FORA=1TO3:Z=RND(8):GOSUB10:C(A,1)=X:C(A,2)=Y:C(A,3)=Z:C(A,4)=0:READO$:PRINTO$;:NEXTA:PRINT"S"; 225 Q=112+RND(12):Z=RND(8):GOSUB10:R1=X:R2=Y:R3=Z 227 Q=109:Z=RND(8):GOSUB10:O1=X:O2=Y:O3=Z:PRINT"TLE" 230 RC=0:ST=2:DX=14:R$(3)="MAN" 260 BF=0:OT=8:AV=0:HT=0:T=1:VF=0:LF=0:TC=0:GP=60:RF=0:OF=0:BL=0:IQ=8:SX=0:FORQ=1TO8:T(Q)=0:NEXTQ:CLS:PRINT;"ALL RIGHT, BOLD ONE" 320 PRINT"YOU MAY BE AN ELF, DWARF, MAN, OR HOBBIT":GOSUB8005 330 FORQ=1TO4:IFLEFT$(R$(Q),1)=O$THENRC=Q:ST=ST+2*Q:DX=DX-2*Q 340 NEXTQ:OT=OT+4*(RC=1):IFRC>0THENR$(3)="HUMAN":GOTO390 370 PRINT"** THAT WAS INCORRECT. PLEASE TYPE E, D, M, OR H.":GOTO320 390 PRINT"SEX ";:GOSUB8010:IFO$="M"THENSX=1::ELSEIFO$<>"F"THENPRINT"** CUTE ";R$(RC);", REAL CUTE. TRY M OR F":GOTO390 430 CLS:PRINT"OK ";R$(RC);", YOU HAVE THESE STATISTICS:":PRINTST$;"= ";ST,IQ$;"= ";IQ,DX$;"= ";DX:PRINT"AND ";OT;" OTHER POINTS TO ALLOCATE AS YOU WISH." 470 Z$=IQ$:GOSUB8020:IQ=IQ+Q:IFOTTHENZ$=ST$:GOSUB8020:ST=ST+Q:IFOTTHENZ$=DX$:GOSUB8020:DX=DX+Q 540 CLS:PRINT"OK, ";R$(RC);", YOU HAVE 60 GOLD PIECES (GP's)" 550 Z$="ARMOR":GOSUB8100:AV=0:WV=0:FL=0:WC=0:PRINT"PLATE<30> CHAINMAIL<20> LEATHER<10> NOTHING<0>":GOSUB8005:IFO$="N"THEN640 590 AV=-3*(O$="P")-2*(O$="C")-(O$="L"):IFAV=0THENPRINT"** ARE YOU A ";R$(RC);" OR A %&$#&%$? TYPE P,C,L, OR N":GOTO550 640 AH=AV*7:GP=GP-AV*10:CLS:PRINT"OK, BOLD ";R$(RC);", YOU HAVE ";GP;" GP's LEFT" 650 Z$="WEAPONS":GOSUB8100:PRINT"SWORD<30> MACE<20> DAGGER<10> NOTHING<0>":GOSUB8005:IFO$="N"THEN740 690 WV=-3*(O$="S")-2*(O$="M")-(O$="D"):IFWV=0THENPRINT"** IS YOUR IQ REALLY ";IQ;"? TYPE S,M,D, OR N":GOTO650 740 GP=GP-WV*10:CLS:IFGP<20THEN800 760 PRINT"WANT TO BUY A LAMP FOR 20 GP's ";:GOSUB8010:IFO$="Y"THENLF=1:GP=GP-20:GOTO800::ELSEIFO$<>"N"THENPRINTY$:GOTO760 800 CLS:IFGP<1THENQ=0:GOTO850 810 PRINT"OK, ";R$(RC);", YOU HAVE ";GP;" GOLD PIECES LEFT" 820 INPUT"FLARES COST 1 GP EACH. HOW MANY DO YOU WANT ";O$:Q=VAL(O$):IFQ>0ORASC(O$)=48THEN840 830 PRINT"** IF YOU DON'T WANT ANY JUST TYPE 0 (ZERO)":GOTO820 840 IFQ>GPTHENPRINT"** YOU CAN ONLY AFFORD ";GP:GOTO820 850 CLS:FL=FL+Q:GP=GP-Q:X=1:Y=4:Z=1:PRINT"OK ";R$(RC);", YOU ENTER THE CASTLE AND BEGIN.":GOTO2740 880 T=T+1:IFRF+OF>0THEN910 885 IFC(1,4)>T(1)THENT=T+1 890 IFC(2,4)>T(3)THENGP=GP-RND(5):IFGP<0THENGP=0 900 IFC(3,4)>T(5)THENI=RND(512)-8000:Q=I:GOSUB7:POKEQ,I+100 905 FORQ=1TO3:C(Q,4)=C(Q,4)-(C(Q,1)=X)*(C(Q,2)=Y)*(C(Q,3)=Z):C(Q,4)=-(C(Q,4)>0):NEXTQ 910 IFRND(5)>1THEN1050 911 PRINT"YOU ";:Q=RND(7)+BL:IFQ>7THENQ=4 915 ONQGOSUB940,925,930,920,945,960,965:GOTO1050 920 PRINT"STEPPED ON A FROG":RETURN 925 PRINT"HEAR ";MID$("A SCREAM FOOTSTEPSA WUMPUS THUNDER",RND(4)*9-8,9):RETURN 930 PRINT"SNEEZED":RETURN 940 PRINT"SEE A BAT FLY BY":RETURN 945 PRINT"SMELL ";C$(12+RND(13));" FRYING":RETURN 960 PRINT"FEEL LIKE YOU'RE BEING WATCHED":RETURN 965 PRINT"ARE PLAYING WIZARD'S CASTLE":RETURN 1050 IFBL+T(4)=2THENPRINTC$(29);" CURES YOUR BLINDNESS":BL=0 1060 IFBF+T(6)=2THENPRINTC$(31);" DISSOLVES THE BOOK":BF=0 1080 PRINT:INPUT"YOUR MOVE ";O$:IFLEFT$(O$,2)="DR"THEN1630::ELSEO$=LEFT$(O$,1):O$=CHR$(ASC(O$)+32*(ASC(O$)>94)):IFO$="N"THEN1290 1090 IF O$="Q" OR O$="q" THEN PRINT"If you wish to save the game in progress, type yes else no.":INPUT"(y/n)";Q$:IF LEFT$(Q$,1)="Y" OR LEFT$(Q$,1)="Y" THEN IM=1 : GOTO 64000:ELSE END 1120 IF(O$="S")OR(O$="W")OR(O$="E")THEN1300::ELSEIFO$="U"THEN1380::ELSEIFO$="D"THEN1400::ELSEIFO$="M"THEN1420::ELSEIFO$="F"THENON1+BLGOTO1470,1420::ELSEIFO$="L"THENON1+BLGOTO1520,1420::ELSEIFO$="O"THEN1850::ELSEIFO$="G"THENON1+BLGOTO2010,1420 1210 IFO$="T"THENON1+RFGOTO2130,2150::ELSEIFO$="Q"THEN2190::ELSEPRINT"** STUPID ";R$(RC);" THAT WASN'T A VALID COMMAND":GOTO880 1290 GOSUB6:IFPEEK(I)=2THEN4240 1300 I=X+(O$="N")-(O$="S"):GOSUB8:X=I:I=Y+(O$="W")-(O$="E"):GOSUB8:Y=I:GOTO2740 1380 GOSUB6:IFPEEK(I)=3THENZ=Z-1-(Z=1)*8:GOTO2740 1390 Z$="UP":GOTO1410 1400 Z$="DOWN":GOSUB6:IFPEEK(I)=4THENZ=Z+1+(Z=8)*8:GOTO2740 1410 PRINT"** OH ";R$(RC);", NO STAIRS GOING ";Z$;" IN HERE":GOTO880 1420 IFBL=1THENPRINT"** YOU CAN'T SEE ANYTHING, DUMB ";R$(RC):GOTO880 1430 CLS:PRINT:A=X:B=Y:FORX=1TO8:FORY=1TO8:GOSUB6:Q=PEEK(I):IFQ>99THENQ=34 1440 IFX=AANDY=BTHENPRINT"<";MID$(I$,Q,1);">";:GOTO1443 1441 PRINT" ";MID$(I$,Q,1);" "; 1443 NEXTY:PRINT:NEXTX:X=A:Y=B:GOTO1510 1470 IFFL=0THENPRINT"** HEY BRIGHT ONE, YOU'RE OUT OF FLARES":GOTO880 1480 PRINT:FL=FL-1:A=X:B=Y:FORQ1=A-1TOA+1:I=Q1:GOSUB8:X=I:FORQ2=B-1TOB+1:I=Q2:GOSUB8:Y=I:GOSUB6:Q=I:GOSUB7:POKEQ,I:PRINTMID$(I$,I,1);" ";:NEXTQ2:PRINT:NEXTQ1:X=A:Y=B 1510 GOSUB8110:GOTO880 1520 IFLF=0THENPRINT"** YOU DON'T HAVE A LAMP, ";R$(RC):GOTO880 1530 PRINT"WHERE DO YOU SHINE THE LAMP (N,S,E, OR W) ";:GOSUB8010:A=X:B=Y:I=X+(O$="N")-(O$="S"):GOSUB8:X=I:I=Y+(O$="W")-(O$="E"):GOSUB8:Y=I:IF(A-X)+(B-Y)=0THENPRINT"** TURKEY! THAT'S NOT A DIRECTION":GOTO880 1610 PRINT"THE LAMP SHINES INTO (";X;",";Y;") LEVEL ";Z:GOSUB6:Q=I:GOSUB7:X=I:PRINT"THERE YOU WILL FIND ";C$(X):X=A:Y=B:POKEQ,I:GOTO880 1630 GOSUB6:IFPEEK(I)<>5THENPRINT"** IF YOU WANT A DRINK, FIND A POOL":GOTO880 1640 Q=RND(8):PRINT"YOU TAKE A DRINK AND ";:IFQ<7THENPRINT"FEEL "; 1650 ONQGOTO1660,1690,1710,1740,1755,1780,1800,1820 1660 I=ST+RND(3):GOSUB9:ST=I:PRINT"STRONGER":GOTO880 1690 ST=ST-RND(3):PRINT"WEAKER":ON1-(ST<1)GOTO880,4180 1710 I=IQ+RND(3):GOSUB9:IQ=I:PRINT"SMARTER":GOTO880 1740 IQ=IQ-RND(3):PRINT"DUMBER":ON1-(IQ<1)GOTO880,4180 1755 I=DX+RND(3):GOSUB9:DX=I:PRINT"NIMBLER":GOTO880 1780 DX=DX-RND(3):PRINT"CLUMSIER":ON1-(DX<1)GOTO880,4180 1800 Q=RND(4):IFQ=RCTHEN1800 1810 RC=Q:PRINT"BECOME A ";R$(RC):GOTO880 1820 SX=1-SX:PRINT"TURN INTO A ";:IFSX=0THENPRINT"FE"; 1830 PRINT"MALE ";R$(RC):GOTO880 1850 GOSUB6:IFPEEK(I)=6THENPRINT"YOU OPEN THE CHEST AND":GOTO1950 1855 GOSUB6:IFPEEK(I)=12THENPRINT"YOU OPEN THE BOOK AND":GOTO1870 1860 PRINT"** THE ONLY THING YOU OPENED WAS YOUR BIG MOUTH":GOTO880 1870 ONRND(6)GOTO1880,1890,1900,1910,1920,1930 1880 PRINT"FLASH! OH NO! YOU ARE NOW A BLIND ";R$(RC):BL=1:GOTO1940 1890 PRINT"ITS ANOTHER VOLUME OF ZOT'S POETRY! - YEECH!":GOTO1940 1900 PRINT"ITS AN OLD COPY OF PLAY";R$(RND(4)):GOTO1940 1910 PRINT"ITS A MANUAL OF DEXTERITY!":DX=18:GOTO1940 1920 PRINT"ITS A MANUAL OF STRENGTH !":ST=18:GOTO1940 1930 PRINT"THE BOOK STICKS TO YOUR HANDS SO YOU CAN'T DRAW YOUR WEAPON!":BF=1 1940 GOSUB6:POKEI,1:GOTO880 1950 ONRND(4)GOTO1960,1980,1990,1980 1960 PRINT"KABOOM! IT EXPLODES":Q=RND(6):GOSUB4150:ON1-(ST<1)GOTO1940,4180 1980 Q=RND(1000):PRINT"FIND ";Q;" GOLD PIECES":GP=GP+Q:GOTO1940 1990 PRINT"GAS! YOU STAGGER FROM THE ROOM":GOSUB6:POKEI,1:T=T+20:O$=MID$("NSEW",RND(4),1):GOTO1300 2010 GOSUB6:IFPEEK(I)<>11THENPRINT"** NO ORB - NO GAZE":GOTO880 2020 PRINT"YOU SEE ";:ONRND(6)GOTO2030,2050,2060,2070,2090,2120 2030 PRINT"YOURSELF IN A BLOODY HEAP":ST=ST-RND(2):ON1-(ST<1)GOTO880,4180 2050 PRINT"YOURSELF DRINKING FROM A POOL AND BECOMING ";C$(12+RND(13)):GOTO880 2060 PRINTC$(12+RND(13));" GAZING BACK AT YOU":GOTO880 2070 A=X:B=Y:C=Z:X=RND(8):Y=RND(8):Z=RND(8):GOSUB6:Q=I:GOSUB7:POKEQ,I:PRINTC$(I);" AT (";X;",";Y;") LEVEL ";Z:X=A:Y=B:Z=C:GOTO880 2090 A=RND(8):B=RND(8):C=RND(8):IFRND(8)<4THENA=O1:B=O2:C=O3 2110 PRINT"THE ORB OF ZOT AT (";A;",";B;") LEVEL ";C:GOTO880 2120 PRINT"A SOAP OPERA RERUN":GOTO880 2130 IFRF=0THENPRINT"** YOU CAN'T TELEPORT WITHOUT THE RUNESTAFF!":GOTO880 2150 Z$="X-COORD (1=FAR NORTH 8=FAR SOUTH) ":GOSUB8060:X=Q:Z$="Y-COORD (1=FAR WEST 8=FAR EAST ) ":GOSUB8060:Y=Q:Z$="LEVEL (1=TOP 8=BOTTOM ) ":GOSUB8060:Z=Q:O$="T":GOTO2740 2190 PRINT"DO YOU REALLY WANT TO QUIT ";:GOSUB8010:IFO$<>"Y"THENPRINT"** THEN DON'T SAY YOU DO":GOTO880::ELSEGOTO4280 2740 IFBL=0THENGOSUB8110 2745 PRINT"ST= ";ST;" IQ= ";IQ;" DX= ";DX;" FLARES= ";FL;" GP's= ";GP:PRINTW$(WV+1);" / ";W$(AV+5);:IFLF=1THENPRINT" / A LAMP"; 2750 PRINT:WC=0:GOSUB6:Q=I:GOSUB7:POKEQ,I:Z$="YOU HAVE ":PRINT"HERE YOU FIND ";C$(I):Q=I:IF(Q<7)OR(Q=11)OR(Q=12)THEN880 2780 IFQ=7THENGP=GP+RND(10):PRINTZ$;GP:GOTO1940 2790 IFQ=8THENFL=FL+RND(5):PRINTZ$;FL:GOTO1940 2800 IFQ>9THEN2860 2805 IF(O1=X)AND(O2=Y)AND(O3=Z)THENON1-(O$="T")GOTO1300,4410 2850 X=RND(8):Y=RND(8):Z=RND(8):GOTO2740 2860 IFQ=10THENI=Z+1:GOSUB8:Z=I:GOTO2740 2900 IFQ>25ANDQ<34THENPRINT"ITS NOW YOURS":T(Q-25)=1:TC=TC+1:GOTO1940 2905 GOSUB6:A=PEEK(I)-12:WC=0:IF(A<13)OR(VF=1)THEN3572 2910 PRINT"YOU MAY TRADE WITH, ATTACK, OR IGNORE THE VENDOR":GOSUB8005:IFO$="I"THEN880 2940 IFO$="A"THENVF=1:PRINT"YOU'LL BE SORRY YOU DID THAT":GOTO3572 2950 IFO$<>"T"THENPRINT"** NICE SHOT, ";R$(RC):GOTO2910 2970 FORQ=1TO8:A=RND(Q*1500):IFT(Q)=0THEN3020 2980 PRINT"DO YOU WANT TO SELL ";C$(Q+25);" FOR ";A;" GP's ";:GOSUB8010:IFO$="Y"THENTC=TC-1:T(Q)=0:GP=GP+A:GOTO3020 3010 IFO$<>"N"THENPRINTY$:GOTO2980 3020 NEXTQ:IFGP<1E3THENPRINT"YOU'RE TOO POOR TO TRADE, ";R$(RC):GOTO880 3040 IFGP<1250THEN3240 3050 PRINT"OK, ";R$(RC);", YOU HAVE ";GP;" GOLD PIECES AND ";W$(AV+5) 3060 Z$="ARMOR":GOSUB8100:PRINT"NOTHING<0> LEATHER<1250> ";:IFGP>1499THENPRINT"CHAINMAIL<1500> ";:IFGP>1999THENPRINT"PLATE<2000>"; 3080 PRINT:GOSUB8005:IFO$="N"THEN3130 3090 IFO$="L"THENGP=GP-1250:AV=1:AH=7:GOTO3130 3095 IFO$="C"ANDGP<1500THENPRINT"** YOU HAVEN'T GOT THAT MUCH CASH":GOTO3060 3100 IFO$="C"THENGP=GP-1500:AV=2:AH=14:GOTO3130 3105 IFO$="P"ANDGP<2000THENPRINT"** YOU CAN'T AFFORD PLATE":GOTO3060 3110 IFO$="P"THENGP=GP-2000:AV=3:AH=21:GOTO3130 3125 PRINT"** DON'T BE SILLY. CHOOSE A SELECTION":GOTO3080 3130 IFGP<1250THEN3240 3135 PRINT"YOU HAVE ";GP;" GP's LEFT WITH ";W$(WV+1);" IN HAND" 3140 Z$="WEAPONS":GOSUB8100:PRINT"NOTHING<0> DAGGER<1250> ";:IFGP>1499THENPRINT"MACE<1500> ";:IFGP>1999THENPRINT"SWORD<2000>"; 3160 PRINT:GOSUB8005:IFO$="N"THEN3240 3180 IFO$="D"THENGP=GP-1250:WV=1:GOTO3240 3190 IFO$="M"ANDGP<1500THENPRINT"** SORRY SIR, I DON'T GIVE CREDIT":GOTO3140 3200 IFO$="M"THENGP=GP-1500:WV=2:GOTO3240 3210 IFO$="S"ANDGP<2000THENPRINT"** DUNGEON EXPRESS CARD - YOU LEFT HOME WITHOUT IT!":GOTO3140 3215 IFO$="S"ANDGP<2000THENPRINT"YOU LEFT HOME WITHOUT IT!":GOTO3140 3220 IFO$="S"THENGP=GP-2000:WV=3:GOTO3240 3235 PRINT"** TRY CHOOSING A SELECTION":GOTO3160 3240 IFGP<1000THEN880 3250 Z$=ST$:GOSUB8080:IFO$<>"Y"THEN3290 3270 GP=GP-1E3:I=ST+RND(6):GOSUB9:ST=I:Q=ST:GOSUB8090:GOTO3240 3290 IFO$<>"N"THENPRINTY$:GOTO3250 3300 IFGP<1000THEN880 3310 Z$=IQ$:GOSUB8080:IFO$<>"Y"THEN3360 3340 GP=GP-1E3:I=IQ+RND(6):GOSUB9:IQ=I:Q=IQ:GOSUB8090:GOTO3300 3360 IFO$<>"N"THENPRINTY$:GOTO3310 3370 IFGP<1000THEN880 3380 Z$=DX$:GOSUB8080:IFO$<>"Y"THEN3420 3400 GP=GP-1E3:I=DX+RND(6):GOSUB9:DX=I:Q=DX:GOSUB8090:GOTO3370 3420 IFO$<>"N"THENPRINTY$:GOTO3380 3470 IF(GP<1000)OR(LF=1)THEN880 3480 PRINT"WANT A LAMP";Q$;:GOSUB8010:IFO$<>"Y"THEN3510 3500 GP=GP-1000:LF=1:PRINT"ITS GUARANTEED TO OUTLIVE YOU!":GOTO880 3510 IFO$<>"N"THENPRINTY$:GOTO3480 3520 GOTO880 3572 Q1=1+INT(A/2):Q2=A+2:Q3=1:IF(C(1,4)>T(1))OR(BL=1)OR(DX<RND(9)+RND(9))THEN4030 3580 PRINT:PRINT"YOU'RE FACING ";C$(A+12):PRINT"YOU MAY ATTACK OR RETREAT";:IFQ3=1THENPRINT", OR BRIBE";:IFIQ>14THENPRINT", OR CAST A SPELL"; 3590 PRINT:PRINT"YOUR ";ST$;" IS ";ST;" AND ";DX$;" IS ";DX:GOSUB8005:IFO$<>"A"THEN3730 3611 IFWV=0THENPRINT"** POUNDING ON A MONSTER WON'T HURT IT":GOTO4030 3615 IFBF=1THENPRINT"** YOU CAN'T BEAT IT TO DEATH WITH A BOOK":GOTO4030 3620 IFDX<RND(20)+(BL*3)THENPRINT" DRAT! MISSED":GOTO4030 3630 PRINT" YOU HIT THE LOUSY ";RIGHT$(C$(A+12),LEN(C$(A+12))-2):Q2=Q2-WV:IF(A=9ORA=12)ANDRND(8)=1THENPRINT"OH NO! YOUR ";W$(WV+1);" BROKE":WV=0 3645 IFQ2>0THEN4030 3670 MC=MC-1:PRINTC$(A+12);" LIES DEAD AT YOUR FEET":IFHT>T-60THEN3690 3685 PRINT"YOU SPEND AN HOUR EATING ";C$(A+12);E$(RND(8)):HT=T 3690 IFX<>R1ORY<>R2ORZ<>R3THENON1-(A=13)GOTO3710,4640 3700 PRINT"GREAT ZOT! YOU'VE FOUND THE RUNESTAFF":R1=0:RF=1 3710 Q=RND(1000):PRINT"YOU NOW GET HIS HOARD OF ";Q;" GP's":GP=GP+Q:GOTO1940 3730 IFO$="R"THEN4030 3740 IF(O$<>"C")THEN3860 3750 IFIQ<15ORQ3>1THENPRINT"** YOU CAN'T CAST A SPELL NOW!":GOTO3580 3760 PRINT"WHICH SPELL (WEB, FIREBALL, OR DEATHSPELL) ";:GOSUB8010:IFO$<>"W"THEN3800 3780 ST=ST-1:WC=RND(8)+1:ON1-(ST<1)GOTO4030,4180 3800 IFO$<>"F"THEN3830 3810 Q=RND(7)+7:ST=ST-1:IQ=IQ-1:IF(IQ<1)OR(ST<1)THEN4180 3815 PRINT" IT DOES ";Q;" POINTS OF DAMAGE.":Q2=Q2-Q:GOTO3645 3830 IFO$<>"D"THENPRINT"** TRY ONE OF THE OPTIONS GIVEN":GOTO3580 3840 PRINT"DEATH - - - ";:IFIQ<15+RND(4)THENPRINT"YOURS":IQ=0:GOTO4180 3850 PRINT"HIS":Q2=0:GOTO3670 3860 IFO$<>"B"ORQ3>1THENPRINT"** CHOOSE ONE OF THE LISTED OPTIONS":GOTO3580 3870 IFTC=0THENPRINT"'ALL I WANT IS YOUR LIFE OR JOHN LITVIN'S GIRLFRIEND'":GOTO4030 3880 Q=RND(8):IFT(Q)=0THEN3880 3890 PRINT"I WANT ";C$(Q+25);", WILL YOU GIVE IT TO ME ";:GOSUB8010:IFO$="N"THEN4030 3896 IFO$<>"Y"THENPRINTY$:GOTO3890 3900 T(Q)=0:TC=TC-1:PRINT"OK, JUST DON'T TELL ANYONE":GOSUB6:VF=VF+(PEEK(I)=25):GOTO880 4030 Q3=2:IFWC>0THENWC=WC-1:IFWC=0THENPRINT"THE WEB JUST BROKE!" 4040 Z$=RIGHT$(C$(12+A),LEN(C$(12+A))-2):IFWC<=0THEN4047 4045 PRINT"THE ";Z$;" IS STUCK AND CAN'T ATTACK":GOTO4070 4047 PRINT"THE ";Z$;" ATTACKS":IFDX<RND(7)+RND(7)+RND(7)+BL*3THEN4060 4055 PRINT" HAH! HE MISSED YOU":GOTO4070 4060 PRINT" OUCH! HE HIT YOU":Q=Q1:GOSUB4150:IFST<1THEN4180 4070 IFO$<>"R"THEN3580 4080 PRINT"YOU HAVE ESCAPED" 4090 PRINT"DO YOU GO NORTH, SOUTH, EAST, OR WEST ";:GOSUB8010:IF(O$="N")OR(O$="S")OR(O$="E")OR(O$="W")THEN1300 4140 PRINT"** DON'T PRESS YOUR LUCK ";R$(RC):GOTO4090 4150 IFAV=0THEN4175 4160 Q=Q-AV:AH=AH-AV:IFQ<0THENAH=AH-Q:Q=0 4165 IFAH<=0THENAH=0:AV=0:PRINT"YOUR ARMOR IS DESTROYED - GOOD LUCK" 4175 ST=ST-Q:RETURN 4180 FORQ=1TO750:NEXTQ:CLS:PRINTSTRING$(64,"="):PRINT"A NOBLE EFFORT, OH FORMERLY LIVING ";R$(RC) 4200 PRINT"BESIDES DYING FROM BEING A HOSEHEAD, YOU DIED FROM A LACK OF ";:IFST<1THENPRINTST$::ELSEIFIQ<1THENPRINTIQ$::ELSEPRINTDX$ 4230 Q3=1:PRINT"WHEN YOU DIED YOU HAD:":GOTO4310 4240 Q3=0:PRINT"YOU LEFT THE CASTLE WITH";:IFOF=0THENPRINT"OUT"; 4250 PRINT" THE ORB OF ZOT":IFOF=0THEN4280 4260 PRINT"A GLORIOUS VICTORY!":PRINT"YOU ALSO GOT OUT WITH THE FOLLOWING:":GOTO4300 4280 PRINT"A LESS THAN AWE-INSPIRING DEFEAT.":PRINT"WHEN YOU LEFT THE CASTLE YOU HAD:" 4300 IFQ3=0THENPRINT"YOUR MISERABLE LIFE" 4310 FORQ=1TO8:IFT(Q)=1THENPRINTC$(Q+25), 4320 NEXTQ:PRINT:PRINTW$(WV+1):PRINTW$(AV+5):IFLF=1THENPRINT"A LAMP" 4340 PRINTFL;" FLARES":PRINTGP;" GP's":IFRF=1THENPRINT"THE RUNESTAFF" 4350 PRINT"AND IT TOOK YOU ";T;" TURNS!" 4354 IF OF<> 0 THEN QP=0 : QU=T : GS$="CASTLES/DAT" : GOSUB 65000 4360 PRINT:PRINT"PLAY AGAIN";:GOSUB8010:IFO$="Y"THENPRINT"SOME ";R$(RC);"S NEVER LEARN":PRINT:FORQ=1TO1000:NEXTQ:GOTO20 4380 IFO$<>"N"THENPRINTY$:GOTO4360 4390 PRINT"MAYBE DUMB ";R$(RC);" NOT SO DUMB AFTER ALL":PRINT:GOTO 62000 4410 PRINT"GREAT UNMITIGATED ZOT!":PRINT"YOU JUST FOUND THE ORB OF ZOT":PRINT"THE RUNESTAFF IS GONE":RF=0:OF=1:O1=0:GOTO1940 4480 DATAAN EMPTY ROOM,THE ENTRANCE,STAIRS GOING UP,STAIRS GOING DOWN,A POOL,A CHEST,GOLD PIECES,FLARES,A WARP,A SINKHOLE,A CRYSTAL ORB,A BOOK,A KOBOLD,AN ORC,A WOLF,A GOBLIN,A HALFLING,A TROLL,A JACKEL,A MINOTAUR,A VAMPIRE,A CHIMERA,A NYMPH 4500 DATAA DRAGON,A VENDOR,THE RUBY RED,THE NORN STONE,THE PALE PEARL,THE OPAL EYE,THE GREEN GEM,THE BLUE FLAME,THE PALANTIR,THE SILMARIL,".E[\PC$FSOBkowghtjmvcndVTTTTTTTT?",NO WEAPON,WICH,DAGGER," STEW",MACE," SOUP",SWORD," BURGER" 4515 DATANO ARMOR," ROAST",LEATHER," MUNCHY",CHAINMAIL," TACO",PLATE," PIE",HOBBIT,ELF,MAN,DWARF,T,I,A,L,I,Z,I,N," ",C,A 4640 PRINT"YOU GET ALL HIS WARES:":PRINT"PLATE ARMOR":AV=3:AH=21:PRINT"A SWORD":WV=3:PRINT"A ";ST$;" POTION":I=ST+RND(6):GOSUB9:ST=I:PRINT"AN ";IQ$;" POTION":I=IQ+RND(6):GOSUB9:IQ=I 4680 PRINT"A ";DX$;" POTION":I=DX+RND(6):GOSUB9:DX=I:IFLF=0THENPRINT"A LAMP":LF=1 4710 GOTO3710 8005 PRINT"YOUR CHOICE "; 8010 INPUTO$:O$=LEFT$(O$,1):O$=CHR$(ASC(O$)+32*(ASC(O$)>94)):RETURN 8020 PRINT"HOW MANY POINTS DO YOU ADD TO ";Z$;:INPUTO$:Q=VAL(O$):IF(Q=0)AND(ASC(O$)<>48)THENQ=-1 8035 IF(Q<0)OR(Q>OT)OR(Q<>INT(Q))THENPRINT"** ";:GOTO8020 8040 OT=OT-Q:RETURN 8060 PRINTZ$;:INPUTO$:Q=INT(VAL(O$)):IF(Q>0)AND(Q<9)THENRETURN 8070 PRINT"** TRY A NUMBER FROM 1 TO 8":GOTO8060 8080 PRINTX$;Z$;Q$;:GOTO8010 8090 PRINT"YOUR ";Z$;" IS NOW ";Q:RETURN 8100 PRINT"HERE IS A LIST OF ";Z$;" YOU CAN BUY (WITH COST IN <>)":RETURN 8110 PRINT"YOU ARE AT (";X;",";Y;") LEVEL ";Z:RETURN 10000 FS$="CASDUN/DAT" 10010 INPUT"WHAT FILE IS THE CASTLE IN (<ENTER> FOR DEFAULT)";FS$ 10020 ON ERROR GOTO 10200 10030 OPEN"I",1,FS$,"MU" 10040 FOR Q = 0 TO 7 10050 GET 1,,64350 10060 NEXT Q 10070 GET 1,,,O1,O2,O3; 10075 GET1,,,R1,R2,R3; 10080 FOR Q = 1 TO 3 10090 GET 1,,64340 10100 NEXT Q 10105 CLOSE 10110 RETURN 10200 RESUME10010 62000 PRINT:PRINT"Press <ENTER> to return to the menu page." 62010 RUN"MENU" 64000 'The following subroutine is used to save a game in progress. 64010 ON ERROR GOTO 64310 64020 INPUT"Name";NA$ 64030 IF NA$ = "" THEN PRINT"Everyone has a name, now what's yours?" : GOTO 64020 64040 FOR XZ = 1 TO LEN(NA$) 64050 IF ASC( MID$( NA$,XZ,1 ) ) > 94 THEN MID$(NA$,XZ,1)=CHR$(ASC(MID$(NA$,XZ,1))-32) 64060 NEXT XZ 64070 OPEN"R",1,"CASTLE/DAT","MU" 64080 IF LOC (1)$ = -1 AND IM=0 THEN PRINT"NO PREVIOUS GAME SAVED!" : CLOSE 1 :GOTO 87 64090 IF LOC(1)$ = -1 AND IM=1 THEN 64130 64100 GET 1,,,NC$; 64110 IF NC$ = NA$ THEN 64150 64120 IF LOC (1)$ = -1 AND IM=0 THEN 64280 64130 IF IM=1 AND LOC(1)$=-1 THEN PUT 1,!%,,STRING$(35," "); : PUT 1,#,,NA$; : GOTO 64150 64140 GOTO 64100 64150 IF IM=0 THEN GET 1,*,64330 :ELSE PUT 1,*,64330 64160 FOR Q = 1 TO 3 64170 IF IM=0 THEN GET 1,*,64340 :ELSE PUT 1,*,64340 64180 NEXT Q 64190 FOR Q = 1 TO 8 64200 IF IM=0 THEN GET 1,*,,T(Q); :ELSE PUT 1,*,,T(Q); 64210 NEXT Q 64220 FOR Q = 1 TO 3 64230 IF IM=0 THEN GET 1,*,,O(Q),R(Q); :ELSE PUT 1,*,,O(Q),R(Q); 64240 NEXT Q 64250 FOR Q = 0 TO 7 : IF IM=0 THEN GET 1,*,64350 :ELSE PUT 1,*,64350 64260 NEXT Q:CLOSE 1 64270 IF IM=0 THEN 2740 :ELSE 1080 64280 CLOSE 1 64290 PRINT"I can't find your name in my records. If this is your correct name : '";NA$;"',":INPUT"then you don't have a game saved. Is it ( Y / N )";X$:IFX$ = "N"ORX$ = "n" THEN 64020 :ELSE 87 64300 END 64310 IF ERR > 40 THEN PRINT"DISK ERROR HAS OCCURRED. Returning to main program..." : FOR L = 1 TO 2000 : NEXT : CLOSE : OPEN"O",1,"ERROR/DAT":PUT1,!%,,"CASTLE",ERL,ERR;:CLOSE: GOTO 64270 64320 END 64330 X%,Y%,Z%,BF%,VF%,LF%,RF%,OF%,BL%,ST%,IQ%,DX%,OT%,AV%,AH%,WV%,TC%,GP!,FL%,HT%,T%,RC%,O1%,O2%,O3%,R1%,R2%,R3%,O$; 64340 C%(Q,1),C%(Q,2),C%(Q,3),C%(Q,4); 64350 K#(Q,0),K#(Q,1),K#(Q,2),K#(Q,3),K#(Q,4),K#(Q,5),K#(Q,6),K#(Q,7); 65000 'The following subroutine is used to save high scores of players. The calling subroutine must suppy GS$ which is the name of the game and NS which is equal to the NEW SCORE. 65010 'High score save from htest/v1 4/30/82 19:15 65020 ' Changes ON ERROR GOTO address. 65030 INPUT"DO YOUR WANT YOUR NAME IN THE RECORDS ( Y OR N )";QN$ 65040 IF QN$ = "" THEN PRINT"TRY AGAIN..." : GOTO 65030 65050 IF CHR$(ASC(QN$)+32*(ASC(QN$)>91)) = "N" THEN RETURN 65060 ON ERROR GOTO 65350 65065 IF QP = 0 THEN DEFINT Q 65066 IF QP = 1 THEN DEFSNG Q 65067 IF QP = 2 THEN DEFDBL Q 65068 CMD"F=ERASE",DN$(1),QS(1) : QM = 400 : DIM DN$(QM), QS(QM) 65070 CLS:PRINT 65080 INPUT"NAME";QA$ 65090 IF QA$ = "" THEN PRINT"EVERYONE HAS A NAME, NOW WHAT'S YOURS?" : GOTO 65080 65100 IF INSTR (QA$, " ") = 0 THEN INPUT"WHAT IS YOUR LAST NAME";N1$ : QA$ = QA$ + " " + Q1$ 65110 CLS 65115 'CMD"BREAK,Y" 'Enable break key while drive is running. 65120 OPEN"R",1,GS$,"MU" 65130 PO% = 0 : X$ = "N" : FS% = 0 65140 IF LOC(1)$ <> -1 THEN 65220 65150 PRINT"The data base for high score saves is NOT 65160 PRINT"on this diskette. 65170 INPUT"Do you want to (S)tart a new data base, or (R)eturn back to the game (S/R)";QB$ 65180 IF QB$ = "" THEN 65170 65190 QB$ = CHR$(ASC(QB$)+32*(ASC(QB$)>91)) 65200 IF QB$="R" THEN CLOSE :KILL GS$ : RETURN 65210 IF QB$ <> "S" THEN 65170 65215 GOTO 65270 65220 FOR L% = 1 TO QM 65230 GET 1,,,DN$(L%),QS(L%); 65240 IF DN$(L%) = QA$ THEN PO% = L% : FS% = LOC(1)# 65250 IF LOC(1)$ = -1 THEN LS% = L% : L% = QM 65260 NEXT L% 65270 IF PO% = 0 THENPRINT"I CAN'T FIND YOUR NAME IN MY RECORDS. IF THIS IS YOUR CORRECT NAME : '";QA$;"'," : INPUT"I'LL PUT IT IN MY RECORDS ( Y / N )";X$ : CLS 65280 IF PO% = 0 AND (ASC (X$) = 78 OR ASC (X$) = 110) THEN CLOSE 1 : GOTO 65080 65290 IF PO% = 0 THEN PUT 1,!%,,QA$,QU; : LS% = LS% + 1 : DN$(LS%) = QA$ : QS(LS%) = QU : GOTO 65310 65300 IF QU < QS(PO%) THEN PRINT"I'M SORRY, YOUR OLD SCORE OF";QS(PO%);"IS A BETTER SCORE." :ELSE PRINT"YOUR SCORE HAS IMPROVED FROM";QS(PO%) : PUT1,!FS%,,QA$,QU; : QS(PO%) = QU 65310 CMD"O",LS%,QS(1),DN$(1) 65320 IF QS(1) > QU THEN PRINT"YOU HAVE BEATEN THE OLD HIGH SCORE OF";QS(1);"SET BY " : IF DN$(1) = QA$ THEN DN$(1) = "YOU" : DN$(PO%) = "YOU" 65330 IF QS(1) > QU THEN PRINT DN$(1); ", CONGRADULATIONS!" 65340 CLOSE 1 : GOSUB 65410 : RETURN 65350 IF ERL = 65535 THEN ON ERROR GOTO 0 65360 PRINT"ERROR HAS OCCURED!!! PROGRAMMER WILL BE NOTIFIED. RETURNING TO MAIN PROGRAM..." 65370 CLOSE 65380 FOR L = 1 TO 2000 : NEXT 'GIVE TIME TO PRESS BREAK KEY. 65390 OPEN"R",1,"ERRORFIL/DAT","MU" 65400 PUT 1,!%,,GS$,ERR/2+1,ERL; : CLOSE : RETURN 65410 CLS 65412 FOR L% = 1 TO LS% 65414 IF QA$ = DN$(L%) THEN RA% = L% : L% = LS% 65416 NEXT L% 65420 PRINT TAB(24);"NUMBER OF TURNS:" 65430 FOR L% = 1 TO -13*(LS%>13)-(LS%<14)*LS% 65440 PRINTTAB(16); : PRINTUSING"% %";DN$(L%);:PRINT QS(L%) 65450 NEXT L% 65455 PRINT TAB(16);"Your current ranking is";RA%;CHR$(24);MID$("stndrdth",-(RA%*2)*(RA%<4)-(RA%>3)*8-1,2);" out of";LS%;CHR$(24);"." 65460 PRINTTAB(16); :RETURN ' :CMD"BREAK,N":RETURN