Source:Universal Check Files
Jump to navigation
Jump to search
This page is a verbatim reproduction of original source material and should not be edited except for maintenance. | |
Description |
The Applesoft BASIC source code of the Eamon utility program Universal Check Files. |
---|---|
Source | |
Date |
23 June 1995 |
Author | |
License |
The use of this item is permitted on the grounds that it's free or in the public domain. |
1 REM
EAMON UNIVERSAL CHECK FILES PROGRAM
3 REM 6/23/95
7 REM
EAMON ADVENTURERS GUILD
7625 HAWKHAVEN DR.
CLEMMONS, NC 27012
10 HOME : VTAB 5: PRINT " UNIVERSAL EAMON FILE CHECK PROGRAM": HTAB 15: PRINT "VERSION 2.0"
15 VTAB 10: PRINT "INSERT ADVENTURE TO BE TESTED FOR VALID TEXT FILES AND PRESS ANY KEY TO CONTINUE": VTAB 23: GET A$: PRINT
20 D$ = CHR$ (4)
25 PRINT D$"OPEN EAMON.NAME": PRINT D$"READ EAMON.NAME": INPUT DU$
30 DV = 4:LT = 0:LT$ = "NO"
33 ONERR GOTO 47
35 INPUT ND
37 DV = 0
45 INPUT DV:DV$ = STR$ (DV): IF DV > 5 THEN LT = 1:LT$ = "YES":A8 = 1: GOTO 60
47 IF NOT ND THEN DV = 4:LT = 0:LT$ = "NO"
50 IF ND AND NOT DV THEN DV = 5
60 POKE 216,0: PRINT D$"CLOSE":DL = 256:RO = 0:AO = 100:EO = 200:MO = 300:LR = 64:LN = 64:LA = 128:LM = 128:D7 = (DV = > 7):DV$ = STR$ (DV): IF D7 THEN DL = 242:RO = 0:AO = 200:EO = 400:MO = 600
65 IF NOT ND THEN ND = 6
68 IF DU$ = "SANCTUARY" THEN SR = 1:D7 = 1:DL = 242:RO = 0:AO = 200:EO = 400:MO = 600:DV$ = "7.0R":ND = 6: PRINT CHR$ (7)"INSERT DISK 2": INPUT " AND PRESS <RETURN> TO CONTINUE";Z$
70 PRINT D$"OPEN EAMON.DESC,L"DL: PRINT D$"READ EAMON.DESC,R0": INPUT NR,NA,NE,NM: IF D7 THEN INPUT LR,LM,LA
80 POKE 216,0: PRINT D$"CLOSE": GOTO 2000
99 REM PRINT INFO SCREEN
100 PRINT D$: HOME : INVERSE : PRINT DU$: NORMAL : PRINT : PRINT "MAIN.PGM VERSION: ";DV$: PRINT "DIRECTIONS: ";ND: PRINT "ROOM LIGHTING: ";LT$
115 PRINT : HTAB 22: PRINT "EAMON.DESC"
120 PRINT "NO. OF RECORDS:";: HTAB 22: PRINT "RECORD OFFSETS:"
122 PRINT " ROOMS: ";NR;: HTAB 25: PRINT "ROOMS: ";RO
124 PRINT " ARTIFACTS: ";NA;: HTAB 25: PRINT "ARTIFACTS: ";AO
126 PRINT " EFFECTS: ";NE;: HTAB 25: PRINT "EFFECTS: ";EO
128 PRINT " MONSTERS ";NM;: HTAB 25: PRINT "MONSTERS: ";MO
130 PRINT : PRINT "RECORD LENGTHS:": PRINT " EAMON.DESC: ";DL: IF NOT D7 THEN PRINT " EAMON.ROOM NAMES: ";LN$
140 PRINT " EAMON.ROOMS: ";LR$: PRINT " EAMON.ARTIFACTS: ";LA$: PRINT " EAMON.MONSTERS ";LM$
160 VTAB 22: POKE - 16338,0: HTAB 7: PRINT "HIT ANY KEY TO CONTINUE:";: GET A$: PRINT A$: IF A$ = CHR$ (3) THEN END
199 REM VERIFY EAMON.DESC
200 PRINT D$: HOME : PRINT "VERIFYING:": PRINT " ";: INVERSE : PRINT DU$: NORMAL
210 ONERR GOTO 1000
220 PRINT D$"OPEN EAMON.DESC,L"DL: PRINT : PRINT "EAMON.DESC: ROOM ": FOR X = 1 TO NR: VTAB 4: HTAB 22: PRINT X: PRINT D$"READ EAMON.DESC,R";X + RO: INPUT DE$: NEXT
230 VTAB 6: HTAB 13: PRINT "ARTIFACT ": FOR X = 1 TO NA: VTAB 6: HTAB 22: PRINT X: PRINT D$"READ EAMON.DESC,R";X + AO: INPUT DE$: NEXT
240 VTAB 8: HTAB 15: PRINT "EFFECT "
250 IF NE = 0 THEN VTAB 8: HTAB 22: PRINT "(NONE)": GOTO 270
260 FOR X = 1 TO NE: VTAB 8: HTAB 22: PRINT X: PRINT D$"READ EAMON.DESC,R";X + EO: INPUT DE$: NEXT
270 VTAB 10: HTAB 14: PRINT "MONSTER ": IF NOT SB THEN FOR X = 1 TO NM: VTAB 10: HTAB 22: PRINT X: PRINT D$"READ EAMON.DESC,R";X + MO: INPUT DE$: NEXT
275 IF SB THEN FOR X = 1 TO 7: VTAB 10: HTAB 22: PRINT X: PRINT D$"READ EAMON.DESC,R";X + MO: INPUT DE$: NEXT : FOR X = 53 TO 99: VTAB 10: HTAB 22: PRINT X: PRINT D$"READ EAMON.DESC,R";X + MO: INPUT DE$: NEXT
280 PRINT D$"CLOSE"
299 REM VERIFY DATA FILES
300 IF NOT D7 THEN PRINT D$"OPEN EAMON.ROOM NAMES,L"LN: VTAB 13: PRINT " EAMON.ROOM NAMES:": FOR R = 1 TO NR: VTAB 13: HTAB 22: PRINT R: PRINT D$"READ EAMON.ROOM NAMES,R";R: INPUT RN$: NEXT : PRINT D$"CLOSE"
310 IF NOT D7 THEN VT = 17: PRINT D$"OPEN EAMON.ROOMS,L"LR: VTAB 15: HTAB 9: PRINT "EAMON.ROOMS:": FOR R = 1 TO NR: VTAB 15: HTAB 22: PRINT R: PRINT D$"READ EAMON.ROOMS,R";R: FOR D = 1 TO ND + LT: INPUT RD%: NEXT : NEXT : PRINT D$"CLOSE"
320 IF D7 THEN VT = 15: PRINT D$"OPEN EAMON.ROOMS,L"LR: VTAB 13: HTAB 9: PRINT "EAMON.ROOMS:": FOR R = 1 TO NR: VTAB 13: HTAB 22: PRINT R: PRINT D$"READ EAMON.ROOMS,R";R: INPUT RN$: FOR D = 1 TO ND + LT: INPUT RD%: NEXT : NEXT : PRINT D$"CLOSE"
321 IF D3 THEN 400
322 IF SR THEN VTAB VT: HTAB 5: PRINT CHR$ (7)"INSERT DISK 1": INPUT " AND PRESS <RETURN> TO CONTINUE";Z$
323 IF SA = 0 THEN 330
325 PRINT D$"OPEN EAMON.ARTIFACTS": PRINT D$"READ EAMON.ARTIFACTS": VTAB VT: HTAB 5: PRINT "EAMON.ARTIFACTS:": INPUT NA: FOR M = 1 TO NA: VTAB VT: HTAB 22: PRINT M: INPUT AN$: FOR X = 1 TO 4: INPUT A%: IF X = 2 THEN T% = A%
326 NEXT : IF T% > 1 OR D7 OR A8 THEN FOR X = 1 TO 4: INPUT A%: NEXT
327 NEXT : PRINT D$"CLOSE": GOTO 352
330 PRINT D$"OPEN EAMON.ARTIFACTS,L"LA: VTAB VT: HTAB 5: PRINT "EAMON.ARTIFACTS:": FOR M = 1 TO NA: VTAB VT: HTAB 22: PRINT M: PRINT D$"READ EAMON.ARTIFACTS,R";M: INPUT AN$: FOR X = 1 TO 4: INPUT A%: IF X = 2 THEN T% = A%
340 NEXT : IF T% > 1 OR D7 OR A8 THEN FOR X = 1 TO 4: INPUT A%: NEXT
350 NEXT : PRINT D$"CLOSE"
352 IF SM = 0 THEN 360
355 VT = VT + 2: PRINT D$"OPEN EAMON.MONSTERS": PRINT D$"READ EAMON.MONSTERS": VTAB VT: HTAB 6: PRINT "EAMON.MONSTERS:": INPUT NM: FOR M = 1 TO NM: VTAB VT: HTAB 22: PRINT M: INPUT MN$: FOR F = 1 TO 12 - D7: INPUT X: NEXT : NEXT : GOTO 370
360 VT = VT + 2: PRINT D$"OPEN EAMON.MONSTERS,L"LM: VTAB VT: HTAB 6: PRINT "EAMON.MONSTERS:": FOR M = 1 TO NM: VTAB VT: HTAB 22: PRINT M: PRINT D$"READ EAMON.MONSTERS,R";M: INPUT MN$: FOR F = 1 TO 12 - D7: INPUT X: NEXT : NEXT
370 PRINT D$"CLOSE"
400 PRINT : PRINT : PRINT "VERIFICATION COMPLETE.": END
1000 REM VERIFICATION ERROR
1010 POKE 216,0: PRINT D$"CLOSE"
1020 PRINT CHR$ (7): INVERSE : PRINT "VERIFICATION ERROR!": NORMAL
1030 PRINT : PRINT "IT IS POSSIBLE THAT THIS ADVENTURE USES DIFFERENT RECORD LENGTHS THAN THE ONES LISTED ON THE FIRST SCREEN OF THIS PROGRAM."
1040 PRINT : PRINT "IT IS RECOMMENDED THAT YOU LIST THE MAIN.PGM TO VERIFY THESE RECORD LENGTHS.IF THEY ARE IN FACT CORRECT, THEN YOU HAVE A BAD FILE."
1050 END
2000 REM CHECK FOR NON-STANDARD FILES
2005 MV$ = DV$ + " (MODIFIED)"
2010 IF DU$ = "THROR'S RING" THEN DV$ = MV$:LR = 32:LN = LR: GOTO 2900
2020 IF DU$ = "DUNGEON OF DOOM" THEN DV$ = MV$:LR = 30:LN = 40:RO = 0:AO = 161:EO = 322:MO = 483:SA = 1:SM = 1:LR$ = STR$ (LR):LN$ = STR$ (LN):LA$ = "SEQUENTIAL":LM$ = LA$:OF = 1: GOTO 100
2030 IF DU$ = "THE ALTERNATE ZONE" THEN DV$ = MV$:RO = 0:AO = 99:EO = 199:MO = 299:OF = 1: GOTO 2900
2040 IF DU$ = "THE LAST DRAGON" THEN DV$ = MV$:LR = 32:LN = 32: GOTO 2900
2050 IF DU$ = "OPERATION ENDGAME" THEN DV$ = MV$:LR = 32:LN = 64:LA = 90:LM = 100:EO = 300:MO = 200: GOTO 3100
2060 IF DU$ = "ANIMAL FARM" THEN DV$ = MV$:LR = 32:LN = 64:LA = 90:LM = 90:AO = 149:OF = 1: GOTO 2900
2070 IF DU$ = "THE BOY AND THE BARD" THEN DV$ = MV$:LR = 32:LN = 40:LA = 64:LM = 80: GOTO 2900
2080 IF DU$ = "CAVERNS OF LANST" THEN ND = 10: GOTO 2900
2090 IF DU$ = "BUCCANEER!" THEN DV$ = MV$: GOTO 3000
2100 IF DU$ = "A TRIP TO FORT SCOTT" THEN DV = 5:LT = 0:LT$ = "NO"
2110 IF DU$ = "TOMB OF THE VAMPIRE" THEN DV = 5:LT = 0:LT$ = "NO"
2120 IF DU$ = "BEGINNER'S CAVE II" THEN DV = 6:D7 = 0:DL = 256:RO = 0:AO = 100:EO = 200:MO = 300:LR = 64:LN = 64:LA = 128:LM = 128: GOTO 2900
2130 IF DU$ = "MEAN STREETS" THEN DV$ = MV$:LR = 32: GOTO 2900
2150 IF DU$ = "B I Z A R R O" THEN DV = 5:LT = 0:LT$ = "NO"
2160 IF DU$ = "STORM BREAKER" THEN DV$ = MV$: GOTO 3200
2170 IF DU$ = "THE BEGINNERS CAVE" THEN NE = 6: GOTO 2900
2900 LR$ = STR$ (LR):LN$ = STR$ (LN):LA$ = STR$ (LA):LM$ = STR$ (LM): GOTO 100
3000 REM BUCCANEER!
3010 PRINT D$: HOME
3020 PRINT "'BUCCANEER!' IS A TWO-DISK ADVENTURE. HOWEVER, THE SECOND ADVENTURE ON SIDE TWO USES NON-STANDARD FILE NAMES!"
3030 PRINT "SIDE ONE CAN BE CHECKED NORMALLY, BUT TOCHECK SIDE TWO, YOU MUST FOLLOW THESE STEPS:"
3040 PRINT : PRINT "MAKE A COPY OF SIDE TWO TO A BLANK DISK.YOU *MUST* MAKE A COPY BECAUSE YOU ARE GOING TO MAKE CHANGES TO IT FOR TESTING."
3050 PRINT "RENAME THESE FILES ON THE COPY:"
3060 PRINT : PRINT "E.1 EAMON.NAMES": PRINT "E.2 EAMON.ROOMS": PRINT "E.3 EAMON.ROOM NAMES": PRINT "E.4 EAMON.MONSTERS": PRINT "E.5 EAMON.ARTIFACTS": PRINT "E.6 EAMON.DESC"
3070 PRINT : PRINT "RUN THIS PROGRAM ON THE MODIFIED COPY."
3080 PRINT : PRINT "HIT 'C' TO CONTINUE OR 'S' TO STOP.";: GET Z$: PRINT Z$: IF Z$ = "C" THEN POKE - 16368,0: GOTO 2900
3100 REM OPERATION ENDGAME
3110 ONERR GOTO 3130
3120 DT$ = "OPERATION ENDGAME - DISK TWO": PRINT D$"VERIFY"DT$:DU$ = DT$: POKE 216,0: GOTO 2900
3130 POKE 216,0
3140 DT$ = "OPERATION ENDGAME - DISK THREE": PRINT D$"VERIFY"DT$:DU$ = DT$:D3 = 1: GOTO 2900
3200 REM STORM BREAKER
3210 ONERR GOTO 3230
3220 DT$ = "DISK 2": PRINT D$"VERIFY"DT$:DU$ = DU$ + " - " + DT$: POKE 216,0: GOTO 2900
3230 POKE 216,0
3240 DT$ = "DISK 3": PRINT D$"VERIFY"DT$:DU$ = DU$ + " - " + DT$:D3 = 1:SB = 1:NA = 49: GOTO 2900