home *** CD-ROM | disk | FTP | other *** search
- 10 PRINT:PRINT:PRINT:PRINT:
- 20 PRINT"****ADVEN-80.BAS an ADVENTURE data base conversion utility ***"
- 30 PRINT".......version 9/7/83........................................"
- 40 DEFINT A-Z
- 50 CPM=0
- 60 PRINT
- 70 INPUT "Enter name of Database File (assumed ext .DAT)";FC$
- 80 IF FC$="" THEN PRINT "Invalid name";GOTO 70
- 90 IF INSTR(FC$,".")=0 THEN 110
- 100 FC$=LEFT$(FC$,INSTR(FC$,".")-1)
- 110 F$=FC$+".DAT"
- 120 MC$=FC$+".MAC"
- 130 TEST=0
- 140 PRINT "Input file = ";F$
- 150 PRINT "Output file = ";MC$
- 160 PRINT
- 170 OPEN "I",1,F$
- 180 OPEN "O",2,MC$
- 200 PRINT#2,".Z80"
- 210 PRINT#2,".PRINTX *COMPILING A DATABASE FOR ";F$;" SYSTEM*"
- 220 PRINT #2,"; ADVENTURE Z80 DATABASE SYSTEM"
- 230 PRINT #2,"; This file called ";MC$
- 231 READ W$:IF W$<>"EOF" THEN PRINT #2,W$:GOTO 231
- 240 REM
- 250 LINE INPUT #1,Q$
- 260 GOSUB 1580
- 270 IF Q$="" THEN 250
- 280 IF LEFT$(Q$,1)=" " THEN Q$=MID$(Q$,2):GOTO 280
- 290 IF LEFT$(Q$,1)=CHR$(9) THEN Q$=MID$(Q$,2):GOTO 280
- 300 IF LEFT$(Q$,1)="*" THEN 250
- 310 REM
- 320 IF RIGHT$(Q$,1)=" " THEN Q$=LEFT$(Q$,LEN(Q$)-1):GOTO 320
- 330 IF LEFT$(Q$,6)="OBJLOC" THEN TEST=TEST+1:GOTO 450
- 340 IF LEFT$(Q$,6)="OBJDES" THEN TEST=TEST+2:GOTO 510
- 350 IF LEFT$(Q$,6)="MATCHW" THEN TEST=TEST+4:GOTO 540
- 360 IF LEFT$(Q$,3)="MSG" THEN TEST=TEST+8:GOTO 640
- 370 IF LEFT$(Q$,5)="UMESS" THEN TEST=TEST+16:GOTO 740
- 380 IF LEFT$(Q$,3)="LOC" THEN TEST=TEST+32:GOTO 780
- 390 IF LEFT$(Q$,6)="TABKEY" THEN TEST=TEST+64:GOTO 870
- 400 IF LEFT$(Q$,5)="TITL1" THEN TEST=TEST+128:GOTO 1100
- 410 IF LEFT$(Q$,4)="FLAG" THEN TEST=TEST+256:GOTO 1170
- 415 IF LEFT$(Q$,6)="OBJDSK" THEN TEST=TEST+512:GOTO 1261
- 416 IF LEFT$(Q$,6)="OBPROP" THEN TEST=TEST+1024:GOTO 1091
- 420 IF LEFT$(Q$,8)="ENDGAME" AND TEST=2047 THEN PRINT"[EOF] ALL CORRECT":GOTO 1620
- 430 IF LEFT$(Q$,8)<>"ENDGAME" THEN PRINT "BAD LINE":PRINT Q$:CLOSE:GOTO 1620
- 440 PRINT "MISSING SECTION MET AT END OF GAME":CLOSE:GOTO 1620
- 450 PRINT"Processing OBJLOC table."
- 460 PRINT #2,"OBJLOC:";
- 470 GOSUB 1480
- 480 IF LEFT$(Q$,8)="ENDTABLE" THEN PRINT #2," DEFB 00,00":GOTO 250
- 485 MID$(Q$,INSTR(Q$," "),1)=","
- 490 PRINT#2," DEFB ";Q$
- 500 GOTO 470
- 510 PRINT "Processing OJBDES table."
- 520 PRINT#2,"OBJDES:";
- 530 GOTO 470
- 540 PRINT"Processing MATCHW table."
- 550 PRINT#2,"MATCHW:";
- 560 GOSUB 1480
- 570 IF LEFT$(Q$,8)="ENDTABLE" THEN GOTO 480
- 580 IF Q$="MATCHALL" THEN PRINT#2," DEFB 255,255":GOTO 560
- 590 IF LEFT$(Q$,5)<>"MATCH" AND LEFT$(Q$,4)<>"TEST" THEN 610
- 600 PRINT#2," DEFB ";MID$(Q$,INSTR(Q$," ")+1):GOTO 560
- 610 IF LEFT$(Q$,6)<>"ACTION" THEN CLOSE:PRINT"COND/ACTION FAULT":PRINT Q$:GOTO 1620
- 620 PRINT#2," DEFB 255,";MID$(Q$,INSTR(Q$," ")+1);",255"
- 630 GOTO 560
- 640 PRINT"Processing MSG table."
- 650 PRINT#2,"MSG:";
- 660 WE$="MES"
- 670 GOSUB 1480
- 680 IF LEFT$(Q$,8)="ENDTABLE" THEN GOTO 480
- 690 IF LEFT$(Q$,1)<>"'" THEN 710
- 700 PRINT#2," DEFB ";Q$:GOTO 670
- 710 PRINT#2," DEFB 00"
- 720 PRINT#2," DEFB ";MID$(Q$,INSTR(Q$," ")+1)
- 730 GOTO 670
- 740 PRINT"Processing UMESS table."
- 750 PRINT#2,"UMESS:";
- 760 WE$="UMES"
- 770 GOTO 670
- 780 PRINT"Processing LOC table."
- 790 PRINT#2,"LOC:";
- 800 GOSUB 1480
- 810 IF LEFT$(Q$,8)="ENDTABLE" THEN GOTO 480
- 820 IF LEFT$(Q$,1)<>"'" THEN 840
- 830 PRINT#2," DEFB ";Q$:GOTO 800
- 840 PRINT#2," DEFB 00"
- 850 PRINT#2," DEFB ";MID$(Q$,INSTR(Q$," ")+1);",255"
- 860 GOTO 800
- 870 PRINT"Processing TABKEY table."
- 880 CNT=0
- 890 PRINT#2,"TABKEY:"
- 900 GOSUB 1480
- 910 IF LEFT$(Q$,8)="ENDTABLE" THEN 1030
- 920 IF INSTR(Q$," ")=0 THEN CNT=CNT+1:PRINT#2,Q$;" EQU ";CNT:GOTO 900
- 930 Q1$=LEFT$(Q$,INSTR(Q$," ")-1)
- 940 Q$=MID$(Q$,INSTR(Q$," ")+1)
- 950 IF LEFT$(Q$,1)=" " THEN Q$=MID$(Q$,2):GOTO 950
- 960 CNT=CNT+1
- 970 PRINT#2,Q1$;" EQU ";CNT
- 980 PRINT#2," DEFB ";CNT
- 990 IF LEFT$(Q$,1)="'" AND RIGHT$(Q$,1)="'" THEN 1010
- 1000 CLOSE:PRINT"INCORRECT KEYS ";Q$:GOTO 1620
- 1010 PRINT#2," DC ";Q$
- 1020 GOTO 900
- 1030 PRINT#2,"THEN EQU 250":PRINT#2," DEFB 250"
- 1040 PRINT#2," DC 'THENAND ALSO'"
- 1050 PRINT#2,"IT EQU 251":PRINT#2," DEFB 251"
- 1060 PRINT#2," DC 'IT THEM'"
- 1070 PRINT#2," AGAIN EQU 252":PRINT#2," DEFB 252"
- 1080 PRINT#2," DC 'AGAIREPE'"
- 1090 GOTO 480
- 1091 PRINT"Processing OBPROP table."
- 1092 PRINT#2,"OBPROP:";
- 1093 GOTO 1263
- 1100 PRINT"Processing TITL1 table."
- 1110 PRINT#2,"TITL1:";
- 1120 GOSUB 1480
- 1130 IF LEFT$(Q$,8)="ENDTABLE" THEN GOTO 480
- 1140 IF LEFT$(Q$,5)<>"CHR$(" THEN 1160
- 1150 Q$=MID$(Q$,6):Q$=LEFT$(Q$,LEN(Q$)-1)
- 1160 PRINT#2," DEFB ";Q$:GOTO 1120
- 1170 PRINT"Processing FLAG table."
- 1180 PRINT#2,"FLAG: DEFB 00"
- 1190 GOSUB 1480
- 1200 IF LEFT$(Q$,8)="ENDTABLE" THEN GOTO 480
- 1210 IF VAL(Q$)=0 THEN CLOSE:PRINT Q$:PRINT"INVALID FLAG":GOTO 1620
- 1220 IF LEFT$(Q$,2)="14" THEN PRINT#2,"FL14:";
- 1230 IF LEFT$(Q$,2)="20" THEN PRINT#2,"FL20:";
- 1240 IF LEFT$(Q$,2)="21" THEN PRINT#2,"FL21:";
- 1250 PRINT#2," DEFB ";MID$(Q$,INSTR(Q$," ")+1)
- 1260 GOTO 1190
- 1261 PRINT"Processing OBJDSK table."
- 1262 PRINT#2,"OBJDSK:";
- 1263 GOSUB 1480:IF LEFT$(Q$,1)<>"'" THEN PRINT#2," DEFB 00"
- 1265 IF LEFT$(Q$,8)="ENDTABLE" THEN GOTO 480
- 1266 MID$(Q$,INSTR(Q$," "),1)=","
- 1267 PRINT#2," DEFB ",Q$
- 1268 GOTO 1263
- 1270 DATA " PUBLIC OBJLOC"," PUBLIC OBJDES"
- 1271 DATA " PUBLIC MATCHW"," PUBLIC OBPROP"," PUBLIC OBJDSK"
- 1280 DATA " PUBLIC TITL1"," PUBLIC MSG"," PUBLIC UMESS"
- 1290 DATA " PUBLIC LOC"," PUBLIC TABKEY"," PUBLIC FLAG"
- 1300 DATA " PUBLIC FL14"," PUBLIC FL20"," PUBLIC FL21"
- 1310 DATA "RTN EQU 249","ANY EQU 255","INP EQU 00"
- 1320 DATA "NULL EQU 00","NORMAL EQU 255","NOEXIT EQU 254"
- 1330 DATA "DARK EQU 253","DARKNO EQU 252","CL EQU 1"
- 1340 DATA "NCL EQU 2","OP EQU 3","OC EQU 4","OW EQU 5"
- 1350 DATA "OWC EQU 6","OH EQU 7","ONP EQU 8","ONC EQU 9"
- 1360 DATA "ONW EQU 10","NWC EQU 11","ONH EQU 12","OE EQU 13"
- 1370 DATA "ONE EQU 14","@L EQU 15","N@L EQU 16","RND EQU 17"
- 1380 DATA "TF EQU 18","NTF EQU 19","GE EQU 20","LT EQU 21"
- 1390 DATA "C2 EQU 22","C3 EQU 23","NC2 EQU 24","NC3 EQU 25"
- 1400 DATA "INV EQU 1","TKE EQU 2","WR EQU 3","DR EQU 4"
- 1410 DATA "PR EQU 5","PRM EQU 6","DL EQU 7","SF EQU 8"
- 1420 DATA "DSCOB EQU 9","SWP EQU 10","MV EQU 11","OK EQU 12","QT EQU 13"
- 1430 DATA "INF EQU 14","DEF EQU 15","EX EQU 16","SC EQU 17"
- 1440 DATA "PU EQU 18","CR EQU 19","DES EQU 20","FLIP EQU 21"
- 1450 DATA "LA EQU 22","SMA EQU 23","SMB EQU 24","WT EQU 25"
- 1460 DATA "PF EQU 26","ATF EQU 27","SFF EQU 28","GRUN EQU 29"
- 1470 DATA "EOF"
- 1480 LINE INPUT#1,Q$
- 1490 GOSUB 1580
- 1500 IF LEFT$(Q$,1)=" " THEN Q$=MID$(Q$,2):GOTO 1500
- 1510 IF LEFT$(Q$,1)=CHR$(9) THEN Q$=MID$(Q$,2):GOTO 1500
- 1520 IF LEFT$(Q$,1)="*" THEN 1480
- 1530 IF INSTR(Q$,CHR$(9))=0 THEN 1550
- 1540 Q$=LEFT$(Q$,INSTR(Q$,CHR$(9))-1)+" "+MID$(Q$,INSTR(Q$,CHR$(9))+1):GOTO 1530
- 1550 IF RIGHT$(Q$,1)=" " THEN Q$=LEFT$(Q$,LEN(Q$)-1):GOTO 1550
- 1560 IF Q$="" THEN 1480
- 1570 RETURN
- 1580 IF INSTR(Q$,"/*")=0 THEN RETURN
- 1590 IF INSTR(Q$,"*/")=0 THEN CLOSE:PRINT "BAD COMMENT":PRINT Q$:GOTO 1620
- 1600 Q$=LEFT$(Q$,INSTR(Q$,"/*")-1)+MID$(Q$,INSTR(Q$,"*/")+2)
- 1610 GOTO 1580
- 1620 PRINT"Returning to CP/M operating system."
- 1630 SYSTEM