Source:File Dump KQ
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 File Dump KQ. |
---|---|
Source | |
Date |
c. 2000 |
Author | |
License |
The use of this item is permitted on the grounds that it's free or in the public domain. |
1 REM
KNIGHTQUEST --> EAMON DELUXE
DATABASE DUMP
BY FRANK KUNZE
10 TEXT : HOME : PRINT "INSERT KNIGHTQUEST DISK IN DRIVE 1": GET A$: PRINT : HOME
20 D$ = CHR$ (4)
30 PRINT D$"OPEN KQ.DESC,D1": PRINT D$"READ KQ.DESC": INPUT NR,NA,NE,NM: PRINT D$"CLOSE": DIM R$(NR),R%(NR,11),A$(NA),A%(NA,8),M$(NM),M%(NM,12)
35 DIM A1%(NA,8),M1%(NM,12)
40 PRINT D$"OPEN KQ.NAME": PRINT D$"READ KQ.NAME": INPUT N$,ND
70 POKE 216,0: PRINT D$"CLOSE"
90 VTAB 7: PRINT "DUMPING: "N$: PRINT
100 PRINT "ADD DIRECTIONS TO ROOM NAMES? (Y/N):";: GET A$: PRINT A$
110 IF A$ = "Y" THEN ADD = 1
120 PRINT "ADD 'YOU ARE ' TO ROOM NAMES? (Y/N):";: GET A$: PRINT A$
130 IF A$ = "Y" THEN AY = 1
135 PRINT "ADD PERIODS TO END OF ROOM NAMES?(Y/N):";: GET A$: PRINT A$: IF A$ = "Y" THEN P1 = 1
140 GOSUB 1000: GOSUB 500: GOSUB 5000: END
500 PRINT D$"OPEN KQ.DESC,L256": RETURN
1000 REM
LOAD ROOMS
1010 HOME : FOR R = 1 TO NR:R%(R,11) = 1: NEXT
1020 PRINT D$"OPEN KQ.ROOMS,L64"
1030 FOR R = 1 TO NR: VTAB 9: PRINT "READING ROOM# "R"/"NR
1040 PRINT D$"READ KQ.ROOMS,R"R: INPUT R$(R): IF AY = 1 THEN R$(R) = "YOU ARE " + R$(R)
1045 IF P1 = 1 THEN R$(R) = R$(R) + "."
1050 FOR X = 1 TO ND: INPUT R%(R,X): NEXT : INPUT R%(R,11)
1054 IF R%(R,11) < 3 THEN R%(R,11) = 0
1055 IF R%(R,11) > 2 THEN R%(R,11) = 1
1060 IF ADD = 1 THEN GOSUB 21000
1070 NEXT : PRINT D$"CLOSE"
2000 REM
ARTIFACTS
2010 PRINT D$"OPEN KQ.ART,L128"
2020 FOR A = 1 TO NA: VTAB 10: PRINT "READING ART# "A"/"NA
2030 PRINT D$"READ KQ.ART,R"A: INPUT A$(A)
2040 FOR X = 0 TO 8: INPUT A1%(A,X): NEXT : GOSUB 20500
2050 NEXT : PRINT D$"CLOSE"
3000 REM
MONSTERS
3010 PRINT D$"OPEN KQ.MON,L128"
3020 FOR M = 1 TO NM: VTAB 11: PRINT "READING MON# "M"/"NM
3030 PRINT D$"READ KQ.MON,R"M: INPUT M$(M): FOR X = 0 TO 12: INPUT M1%(M,X): NEXT : GOSUB 20800
3040 NEXT : PRINT D$"CLOSE": RETURN
5000 REM
DUMP TO PRINTER/FILE
5010 GOSUB 20000
5015 HOME : VTAB 5: PRINT "DUMPING FILE............"
5020 PRINT D$"PR#1": PRINT N$: PRINT NR;",";NA;",";NE","NM: PRINT ND: PRINT 6: PRINT
5040 IF NE > 0 THEN FOR A = 1 TO NE: PRINT D$"READ KQ.DESC,R"A + 200: INPUT A$: PRINT D$: PRINT : PRINT "E"A: PRINT A$: NEXT
5050 FOR M = 1 TO NM: PRINT D$"READ KQ.DESC,R"M + 300: INPUT A$: PRINT D$: PRINT : PRINT "M"M
5060 PRINT M$(M): FOR X = 1 TO 11: PRINT M%(M,X)",";: NEXT : PRINT M%(M,12): PRINT A$: NEXT
5070 FOR A = 1 TO NA: PRINT D$"READ KQ.DESC,R"A + 100: INPUT A$: PRINT D$: PRINT : PRINT "A"A
5080 PRINT A$(A): FOR X = 1 TO 7: PRINT A%(A,X)",";: NEXT : PRINT A%(A,8): PRINT A$: NEXT
5090 FOR R = 1 TO NR: PRINT D$"READ KQ.DESC,R"R: INPUT A$: PRINT D$: PRINT : PRINT "R"R
5100 PRINT R$(R): FOR X = 1 TO ND: PRINT R%(R,X)",";: NEXT : PRINT R%(R,11): PRINT A$: NEXT
5110 PRINT D$"PR#0": RETURN
20000 REM
ADJUST V6.X DATA
20010 FOR R = 1 TO NR: FOR R2 = 1 TO ND: IF R%(R,R2) > 100 AND R%(R,R2) < 200 THEN R%(R,R2) = R%(R,R2) + 900
20020 NEXT : NEXT
20030 FOR A = 1 TO NA: IF A%(A,4) > 100 AND A%(A,4) < 200 THEN A%(A,4) = A%(A,4) + 900
20040 IF A%(A,4) > 200 AND A%(A,4) < 300 THEN A%(A,4) = A%(A,4) + 1800
20050 IF A%(A,4) > 300 AND A%(A,4) < 400 THEN A%(A,4) = A%(A,4) + 1700
20070 IF A%(A,2) = 6 THEN A%(A,5) = A%(A,6):A%(A,6) = A%(A,7):A%(A,7) = 1:A%(A,8) = 0
20080 NEXT : RETURN
20500 REM
CONVT KQ --> EAMON 6
20504 REM ARTIFACT CONVT
20505 IF A1%(A,1) > 100 THEN A1%(A,1) = A1%(A,1) - 100
20510 A%(A,1) = A1%(A,3):A%(A,2) = A1%(A,1):A%(A,3) = A1%(A,2):A%(A,4) = A1%(A,0)
20515 IF A%(A,4) < - 100 THEN A%(A,4) = A%(A,4) + 99: REM MAKE 'HIDDEN ON MONSTER' INTO 'CARRIED BY MONSTER'
20520 A%(A,2) = 1: IF A1%(A,1) = 2 OR A1%(A,1) = 20 THEN A%(A,2) = 2
20530 IF A1%(A,1) = 17 THEN A%(A,2) = 4
20540 IF A1%(A,1) = 5 THEN A%(A,2) = 5
20550 IF A1%(A,1) = 6 OR A1%(A,1) = 22 OR A1%(A,1) = 20 THEN A%(A,2) = 6
20560 IF A1%(A,1) = 8 THEN A%(A,2) = 7
20570 IF A1%(A,1) = 11 THEN A%(A,2) = 8
20580 IF A%(A,2) = 2 THEN A%(A,5) = A1%(A,6):A%(A,6) = A1%(A,5):A%(A,7) = A1%(A,7):A%(A,8) = A1%(A,8)
20590 IF A%(A,2) = 4 THEN A%(A,5) = A1%(A,5)
20600 IF A%(A,2) = 5 THEN A%(A,5) = A1%(A,5)
20610 IF A%(A,2) = 6 THEN A%(A,6) = A1%(A,7)
20620 IF A%(A,2) = 7 THEN A%(A,5) = A1%(A,6):A%(A,6) = A1%(A,7)
20630 IF A%(A,2) = 8 THEN A%(A,5) = A1%(A,7)
20790 RETURN
20800 REM MONSTER CONVT
20810 M%(M,1) = M1%(M,1):M%(M,2) = M1%(M,2):M%(M,3) = M1%(M,3):M%(M,4) = M1%(M,5)
20820 M%(M,5) = M1%(M,0):M%(M,7) = M1%(M,7):M%(M,8) = M1%(M,8):M%(M,9) = M1%(M,9):M%(M,10) = M1%(M,10):M%(M,11) = M1%(M,11):M%(M,12) = M1%(M,12)
20890 RETURN
21000 REM
ADD DIR. TO R. NAMES
21010 SL = 0:PT = 0
21020 FOR X = 1 TO ND: IF R%(R,X) > 0 AND R%(R,X) < = NR AND PT = 0 THEN PT = 1:R$(R) = R$(R) + " ("
21030 IF R%(R,X) > 0 AND R%(R,X) < = NR AND SL = 1 THEN R$(R) = R$(R) + "/"
21040 IF R%(R,X) > 0 AND R%(R,X) < = NR AND X < 7 THEN R$(R) = R$(R) + MID$ ("NSEWUD",X,1):SL = 1
21050 IF R%(R,X) > 0 AND R%(R,X) < = NR AND X > 6 THEN R$(R) = R$(R) + MID$ ("NENWSESW",(X - 7) * 2 + 1,2):SL = 1
21060 NEXT : IF PT = 1 THEN R$(R) = R$(R) + ")"
21070 RETURN