5 OPEN15,8,15:PRINT#15,"I":CLOSE15:POKE53281,0 7 OPEN8,8,8,"DISK,S,R":INPUT#8,XI,OX:CLOSE8:POKE832,XI:POKE833,OX 10 CLR:POKE53280,5:DIMD$(50),Q$(50):XI=PEEK(832):OX=PEEK(833) 15 A$=" ":PRINT"[147]";A$; 20 PRINT" DUNGEON UTILITIES ";:PRINTA$; 30 PRINT"[154]1[146] [158]COPY DUNGEON":PRINT" [154]2[146] [158]SCRATCH DUNGEON" 35 PRINT" [154]3[146] [158]VALIDATE DISK":PRINT" [154]4[146] [158]ERASE TREASURE" 36 D=XI+1:IFD=10THEND=8 37 A$=STR$(D):A$=RIGHT$(A$,LEN(A$)-1) 40 PRINT" [154]5[146] [158]ERASE TRAPS":PRINT" [154]6[146] [158]CHANGE DATA DISK TO  ";A$;" [146]" 45 PRINT" [154]7[146] [158]RENUMBER DRIVE":PRINT" [154]8[146] [158]FINISHED":POKE53265,27 50 GETA$:IFVAL(A$)=0ORVAL(A$)>8THEN50 55 ONVAL(A$)GOTO100,350,400,450,550,800,825,700 60 PRINT"[159]RETURN[146]"; 65 GETA$:IFA$<>"_"ANDA$<>CHR$(13)ANDPEEK(56320)<>111THEN65 70 IFA$="_"THEN10 75 PRINT"[157][157][157][157][157][157]RETURN":RETURN 100 PRINT"INSERT SOURCE DISK.";:GOSUB60:GOTO160 110 X=0:OPEN8,XI,8,"LIST,S,R":INPUT#8,X:IFX=0THENCLOSE8:GOTO10 115 FORG=1TOX:INPUT#8,D$(G),Q$(G):NEXT:CLOSE8 120 PRINT"[147][158]\ SELECT DUNGEON \":A=1 130 PRINT" " 135 PRINT"[145]";D$(A) 140 GETA$:IFA$=""THENJ=PEEK(56320):IFJ=127THEN140 145 IFA$=CHR$(13)ORJ=111THENDU$=D$(A):CR$=Q$(A):PRINT"[147][158]";DU$:RETURN 147 IFA$="_"THEN10 149 IFA$="[145]"ORJ=126THENK=-1:GOTO155 150 IFA$=""ORJ=125THENK=1:GOTO155 152 GOTO140 155 IFA+K<1ORA+K>XTHEN140 157 A=A+K:GOTO130 160 GOSUB110:PRINT"[154]READING..." 165 OPEN8,XI,8,DU$+",S,R" 170 DIM C$(20),D(678),E$(800),F(64),M$(500) 175 FORG=1TO3:INPUT#8,A$(G):NEXT 180 FORG=1TO5:INPUT#8,B(G):NEXT 185 FORG=1TOB(5):INPUT#8,C$(G):NEXT 190 FORG=1TO678:INPUT#8,D(G):NEXT:IFB(4)=0THEN200 195 FORG=1TO678+B(4):INPUT#8,E$(G):NEXT 200 FORG=1TO64:INPUT#8,F(G):NEXT 205 CLOSE8 210 OPEN3,XI,3,"M."+DU$:OPEN15,XI,15:R=0 220 R=R+1:H=INT(R/256):L=R-(H*256) 225 PRINT#15,"P"CHR$(3)CHR$(L)CHR$(H)CHR$(1):GOTO230 227 INPUT#3,M$(R):GOTO220 230 INPUT#15,A:IFA=0THEN227 233 IFA<>50THENPRINT"[147] DISK ERROR. [146]":FORG=1TO1000:GOTO10 235 CLOSE3:CLOSE15:R=R-1 250 PRINT"INSERT TARGET DISK.";:GOSUB60:PRINT"[154]WRITING..." 255 OPEN8,XI,8,DU$+",S,W" 260 FORG=1TO3:PRINT#8,A$(G):NEXT 262 FORG=1TO5:PRINT#8,B(G):NEXT 264 FORG=1TOB(5):PRINT#8,C$(G):NEXT 266 FORG=1TO678:PRINT#8,D(G):NEXT 268 FORG=1TO678+B(4):PRINT#8,E$(G):NEXT 270 FORG=1TO64:PRINT#8,F(G):NEXT 275 CLOSE8 280 A$="M."+LEFT$(DU$,14)+",L,":OPEN3,XI,3,A$+CHR$(38):OPEN15,XI,15 285 FORG=1TOR:H=INT(G/256):L=G-(H*256) 287 PRINT#15,"P"CHR$(3)CHR$(L)CHR$(H)CHR$(1):PRINT#3,M$(G):NEXTG:CLOSE3 290 INPUT#15,A:IFA<>0ANDA<>50THEN233 293 CLOSE15:GOSUB294:GOTO300 294 X=0:OPEN8,XI,8,"@0:LIST,S,R":INPUT#8,X:IFX=0THENCLOSE8:GOTO300 295 FORG=1TOX:INPUT#8,D$(G),Q$(G):NEXT:CLOSE8:RETURN 300 X=X+1:D$(X)=DU$:Q$(X)=CR$:GOSUB310:GOTO320 310 OPEN8,XI,8,"@0:LIST,S,W":PRINT#8,X:FORG=1TOX:PRINT#8,D$(G):PRINT#8,Q$(G) 315 NEXTG:CLOSE8:OPEN15,XI,15:INPUT#15,A:CLOSE15:IFA<>0THEN233 317 RETURN 320 GOTO575 350 PRINT"INSERT DATA DISK.";:GOSUB60:GOSUB110:PRINT"[154]SCRATCHING..." 355 OPEN15,XI,15:PRINT#15,"S0:"+DU$:PRINT#15,"S0:"+"M."+LEFT$(DU$,14):CLOSE15 360 GOSUB294:FORG=ATOX:D$(G)=D$(G+1):Q$(G)=Q$(G+1):NEXTG:X=X-1:GOSUB310 370 GOTO575 400 PRINT"INSERT DISK TO VALIDATE.";:GOSUB60 410 PRINT"[154]VALIDATING...":OPEN15,XI,15:PRINT#15,"V":CLOSE15:GOTO575 450 PRINT"[159]1[146] [155]WEAPONS":PRINT"[159]2[146] [155]MAGIC ITEMS" 455 PRINT"[159]3[146] [155]ARMOR" 460 GETA$:IFA$<>"_"ANDVAL(A$)=0ORVAL(A$)>3THEN460 465 IFA$="_"THEN10 470 ONVAL(A$)GOTO475,500,525 475 PRINT"ERASE WEAPONS. INSERT DISK.";:GOSUB60 477 PRINT"[154]ERASING WEAPONS..." 480 OPEN15,XI,15:PRINT#15,"S0:WEAPONS":CLOSE15 485 OPEN3,XI,3,"WEAPONS,L,"+CHR$(25):CLOSE3:GOSUB600:TW=0:GOSUB610:GOTO575 500 PRINT"ERASE MAGIC. INSERT DISK.";:GOSUB60 505 PRINT"[154]ERASING MAGIC..." 510 OPEN15,XI,15:PRINT#15,"S0:MAGIC":CLOSE15 515 OPEN3,XI,3,"MAGIC,L,"+CHR$(49):CLOSE3:GOSUB600:TM=0:GOSUB610:GOTO575 525 PRINT"ERASE ARMOR. INSERT DISK.";:GOSUB60 530 PRINT"[154]ERASING ARMOR..." 535 OPEN15,XI,15:PRINT#15,"S0:ARMOR":CLOSE15 540 OPEN3,XI,3,"ARMOR,L,"+CHR$(25):CLOSE3:GOSUB600:TA=0:GOSUB610:GOTO575 550 PRINT"ERASE TRAPS. INSERT DISK.";:GOSUB60 555 PRINT"[154]ERASING TRAPS..." 560 OPEN15,XI,15:PRINT#15,"S0:TRAPS":CLOSE15 565 OPEN3,XI,3,"TRAPS,L,"+CHR$(17):CLOSE3:GOSUB600:TR=0:GOSUB610 575 PRINT"COMPLETE.";:GOSUB60:GOTO10 600 OPEN8,XI,8,"TREASURE,S,R":INPUT#8,TW,TM,TA,TR:CLOSE8:RETURN 610 OPEN8,XI,8,"@0:TREASURE,S,W":PRINT#8,TW:PRINT#8,TM:PRINT#8,TA:PRINT#8,TR 615 CLOSE8:RETURN 700 POKE53280,0:IFDE=0ANDXI=9THENDE=1:GOTO720 702 PRINT"[147]INSERT 'DUNGEON' DISK. [RETURN]":GOSUB850 705 GETA$:IFA$<>"_"ANDA$<>CHR$(13)ANDPEEK(56320)<>111THEN705 710 IFA$="_"THEN10 720 PRINT"[147]":A=0:OPEN8,8,8,"MASTER DISK,S,R":INPUT#8,A:CLOSE8:IFA<>7THEN700 730 POKE53265,11:PRINT"LOAD";CHR$(34);"ME";CHR$(34);",8" 735 FORG=631TO633:POKEG,13:NEXT:POKE198,3:PRINT"RUN":CLR:END 800 PRINT"[147][158]JUST A MOMENT...":XI=XI+1:IFXI=10THENXI=8 805 POKE832,XI:OPEN15,8,15:PRINT#15,"S0:DISK":CLOSE15 807 OPEN8,8,8,"DISK,S,W":PRINT#8,XI:PRINT#8,OX:CLOSE8:IFXI=8THEN10 810 PRINT"RENUMBER A DRIVE? [154] Y/N [146]" 815 GETA$:IFA$=""THEN815 817 IFA$="N"ORA$="_"THEN10 820 IFA$<>"Y"THEN815 825 PRINT"[155]TURN OFF 'DUNGEON' DRIVE.";:GOSUB60 830 PRINT"[155]TURN ON 'DATA' DRIVE.";:GOSUB60 835 OPEN15,8,15:PRINT#15,"M-W"CHR$(119)CHR$(0)CHR$(2)CHR$(41)CHR$(73):CLOSE15 840 PRINT"[155]TURN ON 'DUNGEON' DRIVE.";:GOSUB60:PRINT:GOTO575 850 PRINT"PRESS [_] TO ESCAPE.":RETURN