10 '  Dungeon Game by AO
20 DIM FL$(18):DIM FR$(18):DIM FM$(10):DIM MR$(10):DIM ML$(10):DIM MM$(6)
30 DIM BL$(6):DIM BR$(6)
40 INPUT "Would you like to use a custom wall design";A$
50 IF MID$(A$,1,1)="Y" OR MID$(A$,1,1)="y" THEN GOTO 70
60 CLS:LET WALLFILE$="default.wal":GOTO 110
70 INPUT "Enter the name of the file (default extension .WAL)";WALLFILE$
80 IF LEN(WALLFILE$)<4 THEN 100
90 IF MID$(WALLFILE$,(LEN(WALLFILE$)-3),1)="." THEN 110
100 LET WALLFILE$=WALLFILE$+".wal"
110 OPEN WALLFILE$ FOR INPUT AS #1:CLS
120 FOR X=1 TO 18
130 LINE INPUT #1,FL$(X)
140 NEXT X
150 FOR X=1 TO 18
160 LINE INPUT #1,FR$(X)
170 NEXT X
180 FOR X=1 TO 10
190 LINE INPUT #1,FM$(X)
200 NEXT X
210 FOR X=1 TO 10
220 LINE INPUT #1,ML$(X)
230 NEXT X
240 FOR X=1 TO 10
250 LINE INPUT #1,MR$(X)
260 NEXT X
270 FOR X=1 TO 6
280 LINE INPUT #1,MM$(X)
290 NEXT X
300 FOR X=1 TO 6
310 LINE INPUT #1,BL$(X)
320 NEXT X
330 FOR X=1 TO 6
340 LINE INPUT #1,BR$(X)
350 NEXT X
355 CLOSE #1
360 INPUT "Your name, bold adventurer";NME$
370 INPUT "Strength";STRE
380 INPUT "Intelligence";INTE
390 INPUT "Dexterity";DEXT
400 INPUT "Wisdom";WISD
410 INPUT "Constitution";CONS
420 INPUT "Charisma";CARI
430 RANDOMIZE
440 INPUT "Would you like to read the instructions";A$
450 A$=MID$(A$,1,1)
460 IF A$="y" THEN GOSUB 1850
470 IF A$="Y" THEN GOSUB 1850
480 LET HP=STRE+CONS+INT(RND*12)+1
490 LET SX=INT(RND*10)+1
500 IF ABS(SX-5)<3 GOTO 490
510 LET SY=INT(RND*10)+1
520 IF ABS(SY-5)<3 GOTO 510
530 DIM RPG(20,20)
540 ' 0 = empty room    7 = H+T+M
550 ' 1 = monster       8 = wall
560 ' 2 = treasure
570 ' 3 = t+m
580 ' 4 = Healing Potion
590 ' 5 = H+M
600 ' 6 = H+T
610 FOR X=2 TO 19
620 FOR Y=2 TO 19
630 LET RPG(X,Y)=INT(RND*12)
640 IF RPG(X,Y)=9 THEN LET RPG(X,Y)=8
650 IF RPG(X,Y)=10 THEN LET RPG(X,Y)=0
660 IF RPG(X,Y)=11 THEN LET RPG(X,Y)=1
670 IF INT(RND*2)=0 AND RPG(X,Y)>3 THEN LET RPG(X,Y)=RPG(X,Y)-4
680 IF INT(RND*2)=0 AND RPG(X,Y)=4 THEN LET RPG(X,Y)=8
690 IF X=2 THEN LET RPG(X,Y)=8
700 IF Y=2 THEN LET RPG(X,Y)=8
710 IF X=19 THEN LET RPG(X,Y)=8
720 IF Y=19 THEN LET RPG(X,Y)=8
730 NEXT Y
740 NEXT X
750 LET PX=10: LET PY=10
760 IF RPG(PX,PY)=8 THEN LET PY=PY+1:GOTO 760
770 LET RPG(SX,SY)=0
780 GOSUB 2070
790 IF PX=SX AND PY=SY THEN GOSUB 4000:IF RPG(PX,PY) MOD 2=0 THEN 4090
800 COMM$=INKEY$:IF COMM$="" THEN 800
810 LET CNUM=0:IF ASC(MID$(COMM$,1,1))=0 THEN LET CNUM=ASC(MID$(COMM$,2,1))
820 IF CNUM=71 THEN LET COMM$="7"
830 IF CNUM=72 THEN LET COMM$="8"
840 IF CNUM=73 THEN LET COMM$="9"
850 IF CNUM=75 THEN LET COMM$="4"
860 IF CNUM=77 THEN LET COMM$="6"
870 IF CNUM=76 THEN LET COMM$="5"
880 IF CNUM=81 THEN LET COMM$="3"
890 IF CNUM=79 THEN LET COMM$="1"
900 IF CNUM=80 THEN LET COMM$="2"
910 IF COMM$="4" THEN LET DRCTN=DRCTN-1:GOSUB 2070
920 IF COMM$="6" THEN LET DRCTN=DRCTN+1:GOSUB 2070
930 IF DRCTN>4 THEN LET DRCTN=DRCTN-4
940 IF DRCTN<1 THEN LET DRCTN=DRCTN+4
950 IF DRCTN MOD 4=0 THEN LET EIGHT$="Nz":LET TWO$="Sz"
960 IF DRCTN MOD 4=1 THEN LET EIGHT$="Ez":LET TWO$="Wz"
970 IF DRCTN MOD 4=2 THEN LET EIGHT$="Sz":LET TWO$="Nz"
980 IF DRCTN MOD 4=3 THEN LET EIGHT$="Wz":LET TWO$="Ez"
990 IF COMM$="8" THEN LET COMM$=EIGHT$
1000 IF COMM$="2" THEN LET COMM$=TWO$
1010 IF COMM$="Nz" THEN GOSUB 1160
1020 IF COMM$="Sz" THEN GOSUB 1240
1030 IF COMM$="Ez" THEN GOSUB 1310
1040 IF COMM$="Wz" THEN GOSUB 1380
1050 IF COMM$="Q" OR COMM$="q" THEN SYSTEM
1060 IF COMM$="F" OR COMM$="f" THEN GOSUB 1450
1070 IF COMM$="5" THEN GOSUB 1450
1080 IF COMM$="7" THEN GOSUB 1530
1090 IF COMM$="9" THEN GOSUB 2020
1100 IF COMM$="H" OR COMM$="h" THEN CLS:GOSUB 1890:GOSUB 2070
1110 IF COMM$="3" THEN GOSUB 1650
1120 IF COMM$="1" THEN GOSUB 1780
1130 IF COMM$="I" OR COMM$="i" THEN GOSUB 1580
1140 IF COMM$="~" THEN GOTO 4110
1150 GOTO 790
1160 IF RPG(PX-1,PY)=8 THEN GOSUB 3900:RETURN
1170 LET SILENT=1
1180 IF RPG(PX,PY) MOD 2=1 THEN GOSUB 1730
1190 IF SILENT=0 THEN GOSUB 3910:RETURN
1200 LET PX=PX-1
1210 IF RPG(PX,PY) MOD 2=1 THEN LET MONS=INT(RND*5)+1
1220 GOSUB 2070:IF TEMP=1 THEN GOSUB 4030
1230 LET TEMP=0:RETURN
1240 IF RPG(PX+1,PY)=8 THEN GOSUB 3900:RETURN
1250 LET SILENT=1
1260 IF RPG(PX,PY) MOD 2=1 THEN GOSUB 1730
1270 IF SILENT=0 THEN GOSUB 3910:RETURN
1280 LET PX=PX+1
1290 IF RPG(PX,PY) MOD 2=1 THEN LET MONS=INT(RND*5)+1
1300 GOSUB 2070:RETURN
1310 IF RPG(PX,PY+1)=8 THEN GOSUB 3900:RETURN
1320 LET SILENT=1
1330 IF RPG(PX,PY) MOD 2=1 THEN GOSUB 1730
1340 IF SILENT=0 THEN GOSUB 3910:RETURN
1350 LET PY=PY+1
1360 IF RPG(PX,PY) MOD 2=1 THEN LET MONS=INT(RND*5)+1
1370 GOSUB 2070:RETURN
1380 IF RPG(PX,PY-1)=8 THEN GOSUB 3900:RETURN
1390 LET SILENT=1
1400 IF RPG(PX,PY) MOD 2=1 THEN GOSUB 1730
1410 IF SILENT=0 THEN GOSUB 3910:RETURN
1420 LET PY=PY-1
1430 IF RPG(PX,PY) MOD 2=1 THEN LET MONS=INT(RND*5)+1
1440 GOSUB 2070:RETURN
1450 IF RPG(PX,PY) MOD 2=0 THEN GOSUB 3930:RETURN
1460 LET A=INT(RND*STRE)
1470 IF A>7 THEN GOSUB 3920:  LET MONS=MONS-1
1480 LET N=INT(RND*3)+1
1490 IF A<8 THEN GOSUB 3960:LET HP=HP-N
1500 IF MONS=0 THEN LET RPG(PX,PY)=RPG(PX,PY)-1:GOSUB 3970
1510 IF HP<1 THEN GOSUB 4020: STOP
1520 RETURN
1530 IF RPG(PX,PY) MOD 4<2 THEN GOSUB 3940:RETURN
1540 IF RPG(PX,PY) MOD 4=3 THEN GOSUB 4010:RETURN
1550 LET TREAS=TREAS+INT(RND*50)+CARI
1560 LET RPG(PX,PY)=RPG(PX,PY)-2
1570 GOSUB 3980:RETURN
1580 CLS:COLOR 3:PRINT "Your current stats are: "
1590 PRINT "  STR:";STRE;"  WIS:";WISD
1600 PRINT "  INT:";INTE;"  CON:";CONS
1610 PRINT "  DEX:";DEXT;"  CHA:";CARI
1620 PRINT " HP:";HP;"   GP:";TREAS;"  Potions Available:";POTIONS
1630 A$=INKEY$:IF A$="" THEN 1630
1640 COLOR 7:GOSUB 2070:RETURN
1650 IF RPG(PX,PY)<4 AND POTIONS=0 GOTO 1720
1660 IF RPG(PX,PY)<4 THEN LET POTIONS=POTIONS-1:GOTO 1690
1670 IF RPG(PX,PY) MOD 2=1 THEN GOSUB 4010:RETURN
1680 IF RPG(PX,PY)>3 THEN LET RPG(PX,PY)=RPG(PX,PY)-4
1690 LET HP=HP+INT((RND*10+10)/HP)+1
1700 IF INT(RND*10)=0 THEN LET STRE=INT(STRE+50/STRE)
1710 GOSUB 3990:RETURN
1720 GOSUB 3950:RETURN
1730 LET N=INT(RND*5)+DEXT
1740 LET M=RND*30
1750 IF M<N THEN LET TEMP=1:RETURN
1760 LET SILENT=0
1770 RETURN
1780 IF TREAS<1 THEN GOSUB 4050:RETURN
1790 IF NOT RPG(PX,PY) MOD 2=1 THEN GOSUB 3930:RETURN
1800 GOSUB 2070:LOCATE 21,10:INPUT "How much gold do you offer";GTEMP
1810 IF GTEMP+INT(RND*CARI)*100<INT(RND*50)*100 THEN GOSUB 4070:RETURN
1820 IF GTEMP>TREAS THEN GOSUB 4080:RETURN
1830 GOSUB 4060:LET RPG(PX,PY)=RPG(PX,PY)-1:LET TREAS=TREAS-GTEMP
1840 RETURN
1850 PRINT "  Welcome, noble adventurer, to the caves of Morfax Terre."
1860 PRINT "Your object is to discover the mystical Sword of Taerdall,"
1870 PRINT "a legendary healer.  Your journey will be impeded by mons-"
1880 PRINT "ters, dead ends, treasure and magical elixirs."
1890 PRINT "  The commands you may use are as follows:"
1900 PRINT "                  __________________________
1910 PRINT "                 |  Get   |        |  Get   |      "
1920 PRINT "  H = this       |Treasure| Ahead  | Potion |      "
1930 PRINT "      message    |________|________|________|      "
1940 PRINT "                 |        |        |        |      "
1950 PRINT "  Q = Quit       |  Left  | Fight  | Right  |      "
1960 PRINT "                 |________|________|________|      "
1970 PRINT "  I = Stats      | Bribe  |        | Drink  |      "
1980 PRINT "                 | Monster|  Back  | Potion |      "
1990 PRINT "                 |________|________|________|      "
2000 A$=INKEY$:IF A$="" GOTO 2000
2010 RETURN
2020 IF RPG(PX,PY)<4 THEN GOSUB 3950:RETURN
2030 IF RPG(PX,PY) MOD 2=1 THEN GOSUB 4010:RETURN
2040 LET RPG(PX,PY)=RPG(PX,PY)-4
2050 LET POTIONS=POTIONS+1:GOSUB 4040
2060 RETURN
2070 CLS
2080 PRINT"        .-----------------------------------------------.   "
2090 PRINT"        |                                               |  Stats "
2100 PRINT"        |                                               |"
2110 PRINT"        |                                               | Str:";STRE
2120 PRINT"        |                                               | Int:";INTE
2130 PRINT"        |                                               | Wis:";WISD
2140 PRINT"        |                                               | Dex:";DEXT
2150 PRINT"        |                                               | Con:";CONS
2160 PRINT"        |                                               | Cha:";CARI
2170 PRINT"        |                                               |"
2180 PRINT"        |                                               | GP:";TREAS
2190 PRINT"        |                                               | "
2200 PRINT"        |                                               | HP:";HP
2210 PRINT"        |                                               | "
2220 PRINT"        |                                               | Potions:";POTIONS
2230 PRINT"        |                                               | "
2240 PRINT"        |                                               | "
2250 PRINT"        |                                               | "
2260 PRINT"        |                                               | "
2270 PRINT"        l--------------------------------------.=/-\=.--l "
2280 PRINT"        l                                      |(   )|  | "
2290 PRINT"        `--------------------------------------`=\-/='--' "
2300 IF RPG(PX,PY) MOD 2=1 THEN GOSUB 3530       ' monster
2310 IF PX=SX AND PY=SY THEN GOSUB 3860          ' Sword
2320 IF RPG(PX,PY)>3 THEN GOSUB 3580             ' potion
2330 IF RPG(PX,PY) MOD 4=2 THEN GOSUB 3630       ' treasure
2340 IF RPG(PX,PY) MOD 4=3 THEN GOSUB 3630       ' treasure
2350 IF DRCTN MOD 4=0 THEN LOCATE 21,51:PRINT "A":GOSUB 2400
2360 IF DRCTN MOD 4=1 THEN LOCATE 21,51:PRINT ">":GOSUB 2570
2370 IF DRCTN MOD 4=2 THEN LOCATE 21,51:PRINT "V":GOSUB 2740
2380 IF DRCTN MOD 4=3 THEN LOCATE 21,51:PRINT "<":GOSUB 2910
2390 RETURN
2400 IF RPG(PX-2,PY)>3 THEN GOSUB 3680           ' far potion
2410 IF RPG(PX-2,PY) MOD 2=1 THEN GOSUB 3700     ' far monster
2420 IF RPG(PX-2,PY) MOD 4>1 THEN GOSUB 3720     ' far treasure
2430 IF PX-2=SX AND PY=SY THEN GOSUB 3840        ' far Sword
2440 IF RPG(PX-1,PY) MOD 4>1 THEN GOSUB 3810     ' near treasure
2450 IF RPG(PX-1,PY)>3 THEN GOSUB 3740           ' near potion
2460 IF PX-1=SX AND PY=SY THEN GOSUB 3850        ' near Sword
2470 IF RPG(PX-2,PY-1)=8 THEN GOSUB 3080         ' back left wall
2480 IF RPG(PX-2,PY+1)=8 THEN GOSUB 3120         ' back right wall
2490 IF RPG(PX-2,PY)=8 THEN GOSUB 3190           ' mid facing wall
2500 IF RPG(PX-1,PY) MOD 2=1 THEN GOSUB 3770     ' near monster
2510 IF RPG(PX-1,PY-1)=8 THEN GOSUB 3230         ' mid left wall
2520 IF RPG(PX-1,PY+1)=8 THEN GOSUB 3270         ' mid right wall
2530 IF RPG(PX-1,PY)=8 THEN GOSUB 3350           ' front facing wall
2540 IF RPG(PX,PY-1)=8 THEN GOSUB 3390           ' front left wall
2550 IF RPG(PX,PY+1)=8 THEN GOSUB 3430           ' front right wall
2560 RETURN
2570 IF RPG(PX,PY+2)>3 THEN GOSUB 3680           ' far potion
2580 IF RPG(PX,PY+2) MOD 2=1 THEN GOSUB 3700     ' far monster
2590 IF RPG(PX,PY+2) MOD 4>1 THEN GOSUB 3720     ' far treasure
2600 IF PX=SX AND PY+2=SY THEN GOSUB 3840        ' far Sword
2610 IF RPG(PX,PY+1) MOD 4>1 THEN GOSUB 3810     ' near treasure
2620 IF RPG(PX,PY+1)>3 THEN GOSUB 3740           ' near potion
2630 IF PX=SX AND PY+1=SY THEN GOSUB 3850        ' near Sword
2640 IF RPG(PX-1,PY+2)=8 THEN GOSUB 3080         ' back left wall
2650 IF RPG(PX+1,PY+2)=8 THEN GOSUB 3120         ' back right wall
2660 IF RPG(PX,PY+2)=8 THEN GOSUB 3190           ' mid facing wall
2670 IF RPG(PX-1,PY+1)=8 THEN GOSUB 3230         ' mid left wall
2680 IF RPG(PX+1,PY+1)=8 THEN GOSUB 3270         ' mid right wall
2690 IF RPG(PX,PY+1)=8 THEN GOSUB 3350           ' front facing wall
2700 IF RPG(PX,PY+1) MOD 2=1 THEN GOSUB 3770     ' near monster
2710 IF RPG(PX-1,PY)=8 THEN GOSUB 3390           ' front left wall
2720 IF RPG(PX+1,PY)=8 THEN GOSUB 3430           ' front right wall
2730 RETURN
2740 IF RPG(PX+2,PY)>3 THEN GOSUB 3680           ' far potion
2750 IF RPG(PX+2,PY) MOD 2=1 THEN GOSUB 3700     ' far monster
2760 IF RPG(PX+2,PY) MOD 4>1 THEN GOSUB 3720     ' far treasure
2770 IF PX+2=SX AND PY=SY THEN GOSUB 3840        ' far Sword
2780 IF RPG(PX+1,PY)>3 THEN GOSUB 3740           ' near potion
2790 IF RPG(PX+1,PY) MOD 4>1 THEN GOSUB 3810     ' near treasure
2800 IF PX+1=SX AND PY=SY THEN GOSUB 3850        ' near Sword
2810 IF RPG(PX+2,PY+1)=8 THEN GOSUB 3080         ' back left wall
2820 IF RPG(PX+2,PY-1)=8 THEN GOSUB 3120         ' back right wall
2830 IF RPG(PX+2,PY)=8 THEN GOSUB 3190           ' mid facing wall
2840 IF RPG(PX+1,PY+1)=8 THEN GOSUB 3230         ' mid left wall
2850 IF RPG(PX+1,PY-1)=8 THEN GOSUB 3270         ' mid right wall
2860 IF RPG(PX+1,PY)=8 THEN GOSUB 3350           ' front facing wall
2870 IF RPG(PX+1,PY) MOD 2=1 THEN GOSUB 3770     ' near monster
2880 IF RPG(PX,PY+1)=8 THEN GOSUB 3390           ' front left wall
2890 IF RPG(PX,PY-1)=8 THEN GOSUB 3430           ' front right wall
2900 RETURN
2910 IF RPG(PX,PY-2)>3 THEN GOSUB 3680           ' far potion
2920 IF RPG(PX,PY-2) MOD 2=1 THEN GOSUB 3700     ' far monster
2930 IF RPG(PX,PY-2) MOD 4>1 THEN GOSUB 3720     ' far treasure
2940 IF PX=SX AND PY-2=SY THEN GOSUB 3840        ' far Sword
2950 IF 8>RPG(PX,PY-1) AND RPG(PX,PY-1)>3 THEN GOSUB 3740 ' near potion
2960 IF RPG(PX,PY-1) MOD 4>1 THEN GOSUB 3810     ' near treasure
2970 IF PX=SX AND PY-1=SY THEN GOSUB 3850        ' near Sword
2980 IF RPG(PX+1,PY-2)=8 THEN GOSUB 3080         ' back left wall
2990 IF RPG(PX-1,PY-2)=8 THEN GOSUB 3120         ' back right wall
3000 IF RPG(PX,PY-2)=8 THEN GOSUB 3190           ' mid facing wall
3010 IF RPG(PX+1,PY-1)=8 THEN GOSUB 3230         ' mid left wall
3020 IF RPG(PX-1,PY-1)=8 THEN GOSUB 3270         ' mid right wall
3030 IF RPG(PX,PY-1)=8 THEN GOSUB 3350           ' front facing wall
3040 IF RPG(PX,PY-1) MOD 2=1 THEN GOSUB 3770     ' near monster
3050 IF RPG(PX+1,PY)=8 THEN GOSUB 3390           ' front left wall
3060 IF RPG(PX-1,PY)=8 THEN GOSUB 3430           ' front right wall
3070 RETURN
3080 FOR Z=1 TO 6
3090 LOCATE (Z+4),10:PRINT BL$(Z)
3100 NEXT Z
3110 RETURN
3120 LOCATE 5,37:PRINT BR$(1)
3130 LOCATE 6,35:PRINT BR$(2)
3140 LOCATE 7,35:PRINT BR$(3)
3150 LOCATE 8,35:PRINT BR$(4)
3160 LOCATE 9,35:PRINT BR$(5)
3170 LOCATE 10,37:PRINT BR$(6)
3180 RETURN
3190 FOR Z=1 TO 6
3200 LOCATE (Z+4),29:PRINT MM$(Z)
3210 NEXT Z
3220 RETURN
3230 FOR Z=1 TO 10
3240 LOCATE (Z+2),10:PRINT ML$(Z)
3250 NEXT Z
3260 RETURN
3270 LOCATE 3,41:PRINT MR$(1)
3280 LOCATE 4,39:PRINT MR$(2)
3290 FOR Z=1 TO 6
3300 LOCATE (Z+4),38:PRINT MR$(Z+2)
3310 NEXT Z
3320 LOCATE 11,39:PRINT MR$(9)
3330 LOCATE 12,41:PRINT MR$(10)
3340 RETURN
3350 FOR Z=1 TO 10
3360 LOCATE (Z+2),24:PRINT FM$(Z)
3370 NEXT Z
3380 RETURN
3390 FOR Z=1 TO 18
3400 LOCATE (Z+1),10:PRINT FL$(Z)
3410 NEXT Z
3420 RETURN
3430 FOR Z=1 TO 12
3440 LOCATE (Z+1),43:PRINT FR$(Z)
3450 NEXT Z
3460 LOCATE 14,45:PRINT FR$(13)
3470 LOCATE 15,47:PRINT FR$(14)
3480 LOCATE 16,49:PRINT FR$(15)
3490 LOCATE 17,51:PRINT FR$(16)
3500 LOCATE 18,53:PRINT FR$(17)
3510 LOCATE 19,55:PRINT FR$(18)
3520 RETURN
3530 LOCATE 14,27:PRINT ".:0;."
3540 LOCATE 15,27:PRINT "|i\!|"
3550 LOCATE 16,27:PRINT "`|||'"
3560 LOCATE 17,28:PRINT "I'I"
3570 RETURN
3580 LOCATE 15,37:PRINT "__"
3590 LOCATE 16,35:PRINT ".-||-."
3600 LOCATE 17,35:PRINT "`/^^\'"
3610 LOCATE 18,36:PRINT "`--'"
3620 RETURN
3630 LOCATE 16,21:PRINT ".---."
3640 LOCATE 17,18:PRINT ".-'-./X|"
3650 LOCATE 18,18:PRINT "|`-'|X/'"
3660 LOCATE 19,18:PRINT "`~~~~'"
3670 RETURN
3680 LOCATE 9,34:PRINT "+"
3690 RETURN
3700 LOCATE 9,33:PRINT "i"
3710 RETURN
3720 LOCATE 9,32:PRINT "%"
3730 RETURN
3740 LOCATE 11,36:PRINT ".i."
3750 LOCATE 12,36:PRINT "(_)"
3760 RETURN
3770 LOCATE 10,32:PRINT "_o_"
3780 LOCATE 11,32:PRINT "ISI"
3790 LOCATE 12,32:PRINT "!";CHR$(34);"!"
3800 RETURN
3810 LOCATE 11,28:PRINT "/~7"
3820 LOCATE 12,27:PRINT "`-'"
3830 RETURN
3840 LOCATE 9,34:PRINT "r":RETURN
3850 LOCATE 11,35:PRINT "_":LOCATE 12,34:PRINT "/`":RETURN
3860 LOCATE 16,30:PRINT "._,/"
3870 LOCATE 17,31:PRINT "/`-"
3880 LOCATE 18,29:PRINT "/'"
3890 RETURN
3900 GOSUB 2070:LOCATE 21,12:PRINT "You can't go that way!         ":RETURN
3910 GOSUB 2070:LOCATE 21,12:PRINT "The monster blocks your way!   ":RETURN
3920 GOSUB 2070:LOCATE 21,12:PRINT "You strike, slashing wildly.   ":RETURN
3930 GOSUB 2070:LOCATE 21,12:PRINT " You see no monster here.      ":RETURN
3940 GOSUB 2070:LOCATE 21,12:PRINT " There is no treasure here.    ":RETURN
3950 GOSUB 2070:LOCATE 21,12:PRINT " You see no potion here.       ":RETURN
3960 GOSUB 2070:LOCATE 21,12:PRINT "The beast lunges, wounding you.":RETURN
3970 GOSUB 2070:LOCATE 21,12:PRINT "The monster lies slain.        ":RETURN
3980 GOSUB 2070:LOCATE 21,12:PRINT "You put the gold in your pouch.":RETURN
3990 GOSUB 2070:LOCATE 21,12:PRINT "You feel invigorated.          ":RETURN
4000 GOSUB 2070:LOCATE 21,12:PRINT "You have reached the Sword!    ":RETURN
4010 GOSUB 2070:LOCATE 21,12:PRINT " The monster prevents you.     ":RETURN
4020 GOSUB 2070:LOCATE 21,12:PRINT " You have died.                ":RETURN
4030 GOSUB 2070:LOCATE 21,12:PRINT "You slip by the ravening beast.":RETURN
4040 GOSUB 2070:LOCATE 21,12:PRINT "You put the flask in your pack.":RETURN
4050 GOSUB 2070:LOCATE 21,12:PRINT "You have no gold to offer!     ":RETURN
4060 GOSUB 2070:LOCATE 21,12:PRINT "The monster accepts your bribe.":RETURN
4070 GOSUB 2070:LOCATE 21,12:PRINT "The monster refuses your money.":RETURN
4080 GOSUB 2070:LOCATE 21,12:PRINT " You don't have that much gold!":RETURN
4090 '  Endgame sequence goes here.
4100 STOP
4110 CLS:INPUT "Name of Gamefile";GAM$
4120 OPEN GAM$ FOR INPUT AS #1
4140 FOR X=2 TO 19
4150 LINE INPUT #1, A$
4160 FOR Y=2 TO 19
4170 LET RPG(X,Y)=ASC(MID$(A$,Y,1))-48
4180 NEXT Y
4190 NEXT X
4200 INPUT #1, PX,PY
4210 INPUT #1, SX,SY
4220 GOTO 780
4230 END