1 REM ***** HARBOUR ***** 5 DV=PEEK(186):IFDV<8THENDV=8 40 SYS57812"F.HARBOUR",DV,0:POKE780,0:POKE781,0:POKE782,8:SYS65493 45 SYS57812"TOOLBOX117 C000",DV,0:POKE780,0:POKE781,0:POKE782,192:SYS65493 50 SYS57812"GETWORD 1000",DV,0:POKE780,0:POKE781,0:POKE782,16:SYS65493 60 CLR:DV=PEEK(186):IFDV<8THENDV=8 100 REM **** SET VARIABLES ***** 105 AD=49152:AG=4096:S=54272:POKE53272,19:PRINTCHR$(14):PRINTCHR$(8) 110 A$="":AT=0:B$="":BH$="":BD=0:BK=0:BL=0:C$="":CD%=0 115 CH=0:CS=0:CT=0:D=0:DF$="":DL$="":DR=0:DS=0:EL%=0:EV%=0 120 F%=0:FL%=250:FU%=0:FT%=250:GL%=0:GT=0:GW=1:HF=0:K=0 130 MS$="":NM$="":PC%=0 135 Q=0:Q$=CHR$(34):QF=0:RN%=0:SE%=0:RA%=0 140 SD%=0:SN%=0:P%=0:SZ=0:TS%=0:TV%=0:US%=0:VT=250:VT%=0 145 V=0:W$="":X=0:Y=0:Z=0:ZS=0:X$="" 150 DIMA$(24),GL$(99),L1%(48),L2%(48),MD$(2,20),SD$(5),SP$(5),ZL(5) 155 DIMST%(48),UB%(48),EL$(11),HL$(5),FL$(5) 160 FL$(1)=".EX":FL$(2)=".FC":FL$(3)=".AG":HL$(1)="[197]XPERT":HL$(2)="[211]ENIOR" 165 HL$(3)="[202]UNIOR":HL$(4)="[203][195][194]":HL$(5)="[214][195]":FL$(4)=".KCB":FL$(5)=".VC" 170 SH$(1)="[217]OUR HAVE BEEN REWARDED AS A [203][195][194]." 175 SH$(2)="[217]OU HAVE BEEN AWARDED A [214][195]." 800 REM ***** STARTUP ***** 805 DF$="AC.GAME":DR=DV:GOSUB5115:IFPR<>3THEN1005 810 OPEN3,DV,3,"L:"+DF$:INPUT#3,NM$,X$,A$:RA%=VAL(A$):CLOSE3:GOSUB5740 815 PRINT"":GOSUB7705:IFQF<>1THENX$="1" 820 IFX$="2"THENLS%=RA%:GF=1:GOTO8505 1000 REM ***** ADMINISTRATION ***** 1005 PRINT"[147]":BD=1:BK=1:CH=0:GOSUB5005:GF=0 1010 MS$="[156]*** [200][197][193][196][209][213][193][210][212][197][210][211] [207][208][212][201][207][206][211] ***[144]":V=2:GOSUB5210 1015 A$(4)="[193]. [210]EGISTRATION.":A$(9)="[198]. [210]EVIEW [194]RIDGE [208]LOT." 1020 A$(5)="[194]. [211]TART [206]EW [195]ONVOY.":A$(6)="[195]. [195]ONTINUE [195]ONVOY." 1025 A$(7)="[196]. [210]EVIEW [200]ALL [207]F [198]AME.":A$(12)="[216]. [197]XIT ([204]OADSTAR/[194][193][211][201][195])" 1030 A$(8)="[197]. [210]EVIEW [200][207][212] [203]EYS.":A$(10)="[199]. [210]EVIEW [211]AILING [201]NSTRUCTIONS." 1035 A$(11)="[200]. [210]EVIEW [193]TTACK [201]NSTRUCTIONS." 1040 H=2:TL=4:BL=12:GOSUB5065:GOSUB5085:SYSAD+54,0,39,1,13,8 1045 IFNM$<>""THENA=2:GOTO1555 1050 GOSUB5034:MS$="[211]ELECT [193] TO [200], [216], OR ^.":GOSUB5205:GOSUB6165 1055 ZS=1:CH$="ABCDGHE^XF":SYSAD+48,CH$ 1060 GOSUB5034:IFF%=10THENGOSUB1205:GOTO1050 1062 IFF%=9THENGOSUB5220:ONQFGOTO1050,5505 1065 IFF%=8THENGOSUB6105:GOTO1050 1070 IFF%=7THENZS=2:GOSUB6105:ZS=1:GOTO1050 1072 IFF%=5ORF%=6THENA=F%-4:GOSUB6905:GOTO1050 1075 IFF%>1ANDNM$=""THENGOSUB5240:GOTO1050 1080 R=0:ONF%GOTO1505,1085,1090,1095 1085 GOSUB5485:GOSUB1155:GOSUB7805:ONQFGOTO5515,1050 1090 GOSUB1155:GOSUB7705:ONQFGOTO5515,1050 1095 GOSUB1155:MS$="[204]OAD [199][193][205][197] FILE? (Y/N)":CS=2:Q=0:GOSUB5300:IFQF=2THEN1115 1100 GOSUB7705:IFQF<>2ANDTS%<>0THEN1115 1105 IFQF=2THEN1050 1110 MS$="[199]AME [201]NCOMPLETE. [193]NY KEY.":CS=4:Q=0:GOSUB5300:GOTO1050 1115 GOTO8505 1150 REM ***** SELECT RATING ***** 1155 GOSUB5034:A$(16)="[215]HAT IS YOUR RATING:-" 1160 A$(17)="[193]. [197]XPERIENCED [195]ONVOY COMMANDER." 1165 A$(18)="[194]. [197]XPERIENCED [195]APT. [198]IRST [195]ONVOY." 1170 A$(19)="[195]. [202]UST OUT OF [206]AVAL [193]CADEMY." 1175 H=1:TL=16:BL=19:GOSUB5065:GOSUB5085:SYSAD+48,"ABC" 1180 RA%=F%:TL=15:GOSUB5035:RETURN 1200 REM ***** BRIDGE SCREEN ***** 1205 SS=6:SS$="S":GOSUB5405:PRINT"[147]":POKE53280,0 1210 SYSAD+3,0,39,1,1,160,0 1215 SYSAD+3,0,39,20,20,160,0 1220 A$(2)=". [199][210][201][196] [205][193][208] [211][212][193][212][213][211]" 1225 A$(3)=". ======== ======" 1230 A$(4)=". [193][194][195][196][197][198][199][200][201][202]" 1235 A$(5)=". 1\\\\\\\\\\" 1240 A$(6)=". 2\\\\\\\\\\ [212]RANSPORTS =" 1245 A$(7)=". 3\\\\\\\\\\ [197]SCORTS =" 1250 A$(8)=". 4\\\\\\\\\\ [195]OURSE =" 1255 A$(9)=". 5\\\\\\\\\\ [211]PEED =" 1260 A$(10)=". 6\\\\\\\\\\ [211]LOW SHIPS =" 1265 A$(11)=". 7\\\\\\\\\\ [213]BOAT KILLS =" 1270 A$(12)=". 8\\\\\\\\\\" 1275 A$(13)=". 9\\\\\\\\\\" 1280 A$(14)=".10\\\\\\\\\\" 1285 MS$="[204]OCATION ([211]ECTOR,[199]RID) AND [198]UEL DATA.":GOSUB5208 1290 H=1:FORV=2TO14:MS$=A$(V):GOSUB5070:NEXT 1295 V=18:MS$="[198]8 = [200][209] PROBLEM REPORT.":GOSUB5210 1300 V=21:MS$="[212]HIS AREA IS COMMAND AND INFO AREA.":GOSUB5210 1305 V=22:MS$="[201]NFO = STORMS, UBOATS, SINKINGS, ETC.":GOSUB5210 1310 V=23:MS$="[193]NY KEY RETURNS TO MENU":CS=4:GOSUB5300 1315 PRINT"[147]":SS=6:SS$="R":GOSUB5405:RETURN 1500 REM ***** REGISTRATION ***** 1505 GOSUB5610:A=1:GOSUB5031:MS$="[200]AVE WE MET BEFORE?(Y/N)":CS=1:V=15 1510 GOSUB5305:IFQF=2THENA=2:GOTO1530 1515 MS$="[200]ELLO, AND WELCOME TO CONVOY [200].[209].":V=15:GOSUB5210 1520 MS$="[208]LEASE REGISTER FOR DUTY.":V=16:GOSUB5210 1530 MS$="([204]IMIT = 10 CHARACTERS)":V=19:GOSUB5210 1535 V=18:GOSUB5045:MS$="[217]OUR NAME PLEASE:":H=1:GOSUB5070:GOSUB5610 1540 H=20:GOSUB5015:LL=10:GOSUB5705:TL=15:BL=16:GOSUB5035 1545 NM$=W$:IFNM$=""THENGOSUB6985:GOTO1535 1550 A$(1)="[193] PLEASURE TO MEET YOU "+NM$+"." 1555 A$(2)="[215]ELCOME BACK "+NM$+"." 1560 TL=18:BL=19:GOSUB5035:MS$=A$(A):V=15:GOSUB5210 1565 GOTO1050 5000 REM ***** COLOUR SETUP ***** 5005 POKE53280,BD:POKE53281,BK:POKE646,CH:RETURN 5010 REM ***** CURSOR LOCATE ***** 5015 POKE211,H:POKE214,V:SYS58732 5020 RETURN 5025 REM ***** DELETE LINE(S) ***** 5030 TL=13:BL=19:GOTO5035 :REM * HI SCORE 5031 TL=14:BL=24:GOTO5035 :REM * ADMINISTRATION 5034 TL=21:BL=24:GOTO5035 :REM * WINDOW4 5035 FORV=TLTOBL:GOSUB5045:NEXT:RETURN 5040 V=0:GOTO5045 :REM * LINE0 5042 V=22:GOTO5045 :REM * LINE22 5043 V=23:GOTO5045 :REM * LINE23 5044 V=24:GOTO5045 :REM * LINE24 5045 POKE781,V:SYS59903 5046 RETURN 5060 REM ***** PRINT DATA/AT ***** 5065 FORV=TLTOBL:MS$=A$(V):GOSUB5070:NEXT:RETURN 5070 SYSAD+15,H,V,MS$ 5075 RETURN 5080 REM ***** DELETE DATA ***** 5085 FORX=TLTOBL:A$(X)="":NEXT:RETURN 5100 REM ***** CHECK DISK ***** 5105 D=1:GOTO5120 :REM - LOAD 5110 D=2:GOTO5120 :REM - SAVE 5115 D=3 :REM - CHECK 5120 GOSUB5258:OPEN15,DR,15,"R:"+DF$+"="+DF$:INPUT#15,ER,A$,A,A:CLOSE15 5130 GOSUB5043:IFER=62THENONDGOTO5145,5145,5170 5135 IFER=63THENONDGOTO5175,5150,5175 5140 IFD=3THEN5180 5145 MS$="":GOSUB5300:ONQFGOTO5120,5180,5180 5150 MS$="":GOSUB5300:ONQFGOTO5160,5180,5180 5160 GOSUB5735:ONQFGOTO5135,5180 5165 PR=1:RETURN 5170 PR=2:RETURN 5175 PR=3:RETURN 5180 PR=4:RETURN 5200 REM ***** CENTRE PRINT ***** 5205 V=23:GOTO5210 5206 V=22:GOTO5210 5207 V=24:GOTO5210 5208 V=0 5210 GOSUB5045 5211 GOSUB5370:RETURN 5215 MS$="[205]ENU? (Y/N)":CS=1:Q=0:GOTO5300 5220 SZ=ZS:MS$="[193]RE YOU SURE YOU WANT TO QUIT?(Y/N)":CS=1:Q=0:GOTO5300 5222 SZ=ZS:MS$="[196]ATA UNAVAILABLE. [193]NY KEY.":CS=4:Q=0:GOTO5300 5225 SZ=ZS:MS$="[193]NY KEY WHEN READY.":CS=4:Q=0:GOTO5300 5230 RETURN 5235 MS$="[195]HANGE DISK NOW. [193]NY KEY.":CS=4:Q=0:GOTO5300 5240 SZ=ZS:MS$="[198]UNCTION/FILE NOT AVAILABLE. [193]NY KEY.":CS=4:ZS=4:Q=8:GOTO5300 5250 SZ=ZS:MS$="[195]ONTINUE?(Y/N)":CS=2:Q=0:GOTO5300 5255 SZ=ZS:MS$="[193]RE YOU [210][197][193][204][204][217] SURE?(Y/N)":CS=2:Q=0:GOTO5300 5258 MS$="[195][193][213][212][201][207][206] - DRIVE ACTIVITY":Q=0:GOTO5205 5260 SZ=ZS:Q=0:IFER=26THENMS$="[215]RITE PROTECT ON! [210]EMOVED?(Y/N)":CS=2:GOTO5370 5280 IFER=62THENMS$="[198]ILE NOT FOUND. [206]EW DISK?(Y/N)":CS=5:GOTO5370 5285 IFER=63THENMS$="[198]ILE EXISTS. [210]EPLACE?(Y/N)":CS=2:GOTO5370 5290 IFER=74THENMS$="[196]RIVE UNREADY. [195]ORRECTED?(Y/N)":CS=2:GOTO5370 5295 MS$="[205]AJOR DRIVE/DISK ERROR. [193]NY KEY.":CS=4:QF=3:GOTO5370 5300 GOSUB5043:ZZ=V:B$=MS$:GOTO5306 5305 ZZ=V:B$=MS$:GOSUB5045 5306 IFQ=8THENGOSUB5044:GOSUB6165 5307 V=ZZ:MS$=B$:GOSUB5365 5310 POKE198,0:WAIT198,15:GETA$ 5315 SYSAD+24,A$ 5320 GOSUB5044:IFA$="^"ANDQ=8THENGOSUB6105:GOTO5306 5321 Q=0:IFA$="^"THENGOSUB6985:GOTO5306 5323 ZS=SZ:IFCS=6ANDA$<>" "THENGOSUB6985:GOTO5306 5325 IFCS=4ORCS=6THENA$="":V=ZZ:GOTO5045 5330 IFCS=3THENV=ZZ:GOTO5045 5335 QF=1:IFA$<>"Y"ANDA$<>"N"THENGOSUB6985:GOTO5306 5350 IFCS=2ANDA$="N"THENQF=2 5355 IFCS=1ANDA$="Y"THENQF=2 5360 A$="":V=ZZ:GOTO5045 5365 IFMS$=""THEN5260 5370 SYSAD+18,V,MS$ 5375 RETURN 5400 REM ***** SCREEN STASH ***** 5405 ONSSGOTO5410,5415,5420,5425,5430,5435,5440 5410 SP=160:GOTO5450 :REM - HELP/HARBOUR 5415 SP=168:GOTO5450 :REM - HOTKEYS 5420 SP=174:GOTO5450 :REM - HELP/BRIDGE 5425 SP=16:GOTO5450 :REM - HELP LOAD 5430 SP=208:GOTO5450 :REM - TEMP 1 5435 SP=216:GOTO5450 :REM - TEMP 2 5440 SP=224:GOTO5450 :REM - TEMP 3 5445 SP=232 :REM - TEMP 4 5450 M=6:IFSS$="R"THENM=9 5455 SYSAD+M,SP 5465 RETURN 5480 REM ***** RESET GAME ***** 5485 DS%=0:EL%=11:EV%=5:FC%=0:FU%=100:GL%=0:SD%=0:SE%=100:SP%=0:TV%=50 5487 GC%=0:TS%=0:UC%=0 5490 US%=0:FORX=0TO48:L1%(X)=0:L2%(X)=0:ST%(X)=0:UB%(X)=0:NEXT:RETURN 5500 REM ***** MODULE LOAD ***** 5503 IFDR=25THENPOKE186,DV:Q=64:GOTO5530 5505 OPEN2,DR,2:CLOSE2:IFST<-120THENDR=DR+1:GOTO5503 5510 QF=1:DF$="HELLO CONNECT":GOSUB5115:IFPR=3THEN5530 5512 DR=DR+1:GOTO5503 5515 X$="" 5520 QF=1:DF$="BRIDGE":DR=DV:GOSUB5115:IFPR<>3THENQ=64:GOTO5505 5525 DL$=DF$:GOTO5565 5530 PRINT"[147]":BD=0:BK=0:CH=1:GOSUB5005:IFQ=64THEN5546 5535 MS$="[197]NTERING "+DF$:GOSUB5205:POKE646,0 5540 PRINT"[144]LOAD"Q$DF$Q$","DV 5545 PRINT"RUN":IFDF$<>"HELLO CONNECT"THEN5548 5546 POKE44,8:POKE2048,0:POKE53272,23:PRINTCHR$(9) 5547 IFQ=64THENPRINT"[147]":POKE646,1:NEW 5548 PRINT"":POKE631,13:POKE632,13:POKE633,13:POKE198,3:END 5565 DF%=1:DF$="AC.GAME":DR=DV:GOSUB5115:IFPR=1ORPR=4THEN5595 5570 IFPR=3THENGOSUB5740:IFQF>1THEN5595 5575 GOSUB5258:OPEN3,DV,3,"L:"+DF$+",S,W":PRINT#3,NM$:PRINT#3,X$ 5580 PRINT#3,STR$(RA%):CLOSE3:DF$=DL$:GOSUB5043:GOTO5530 5595 MS$="[198]ILE (AC.GAME)/DISK PROBLEM. [193]NY.":CS=4:GOSUB5300:GOTO1050 5600 REM ***** BLOAD ***** 5605 DF$="H.CONVOY"+STR$(ZS):GW=0:GOTO5635 5610 IFGW=1THENRETURN 5615 DF$="GETWORD 1000" 5635 GOSUB5258:SYSAD+51,DF$,DV,4096 5640 IFDF$="GETWORD 1000"THENGW=1 5645 GOSUB5043:RETURN 5700 REM ***** DATA ENTRY ***** 5705 CH=0 5706 SYSAG,CH,5,LL :REM - ALPHA 5710 RETURN 5715 CH=0 5716 SYSAG+3,CH,7,LL :REM - NUMERIC 5720 RETURN 5730 REM ***** SCRATCH FILE ***** 5735 QF=1:IFQ=1THENQ=0:GOTO5740 5736 MS$="[193]RE YOU SURE YOU WANT TO DELETE?(Y/N)":CS=2:GOSUB5300:IFQF=2THENRETURN 5740 QF=1:GOSUB5258:OPEN15,DV,15,"S:"+DF$:INPUT#15,ER,A$,A,A:CLOSE15:GOSUB5043 5745 IFER=62ORER<20THENRETURN 5750 QF=3:RETURN 6000 REM ***** TIMER ***** 6005 X=100:GOTO6085 6010 X=200:GOTO6085 6015 X=300:GOTO6085 6020 X=400:GOTO6085 6025 X=500:GOTO6085 6030 X=1000:GOTO6085 6035 X=1500:GOTO6085 6040 X=2000:GOTO6085 6045 X=2500:GOTO6085 6050 X=3000:GOTO6085 6055 X=3500:GOTO6085 6060 X=4000:GOTO6085 6065 X=4500:GOTO6085 6070 X=5000:GOTO6085 6075 X=7500:GOTO6085 6080 X=10000 6085 TI$="000000" 6090 IFTI3THENZ=ZS-3:GOTO6118 6110 IFZL(ZS)=1THENSS=ZS:SS$="R":GOSUB5405:GOTO6120 6115 GOSUB5605:SS=4:SS$="R":GOSUB5405:ZL(ZS)=1:SS=ZS:SS$="S":GOSUB5405:GOTO6120 6118 ONZGOSUB6130 6120 GOSUB5225:PRINT"[147]":SS=7:SS$="R":GOSUB5405:RETURN 6130 MS$="[198]UNCTION CANNOT BE USED UNTIL YOU":V=10:GOSUB5210 6131 MS$="HAVE REGISTERED --- [207][210] ---":V=11:GOSUB5210 6132 MS$="FILE NOT AVAILABLE --- [207][210] --- NOT":V=12:GOSUB5210 6133 MS$="AVAILABLE WITH THIS OPTION.":V=13:GOSUB5210:GOTO6120 6160 REM ***** INFO LINE DATA ***** 6165 MS$="^ = [200]ELP.":GOTO5207 6170 MS$="_ = [193]BORT.":GOTO5207 6175 MS$="_ = [193]BORT. ^ = [200]ELP.":GOTO5207 6180 MS$="[208][201][206]:[210][197][212][213][210][206] = [196]EFAULT. (.) = [197]NTRY.":GOTO5207 6185 MS$="[210][197][212][213][210][206] = [193]BORT. [208][197][210][201][207][196] (.) = [200]ELP.":GOTO5207 6190 MS$="30 = [193]BORT. 1 = [200]ELP.":V=18:GOTO5210 6900 REM ***** INSTRUCTION READER ***** 6905 DF$="T.CONVOY SAILING":DH$="[211][193][201][204][201][206][199] [201][206][211][212][210][213][195][212][201][207][206][211]" 6906 IFA=2THENDF$="T.CONVOY ATTACK":DH$="[193][212][212][193][195][203] [201][206][211][212][210][213][195][212][201][207][206][211]" 6907 DR=DV:GOSUB5115:IFPR<>3THEN5240 6910 SS=5:SS$="S":GOSUB5405:PRINT"[147]":BD=1:BK=1:CH=0:GOSUB5005:GOSUB6930 6915 SYSAD+27,DF$,DV,40960,0,8,DH$ 6920 FORX=1TO3:ZL(X)=0:NEXT:PRINT"[147]":SS=5:SS$="R":GOSUB5405:RETURN 6925 REM ***** PRINTER CHECK ***** 6930 QF=1:OPEN4,4,7:CLOSE4:POKE186,DV:IFST<>-128THENRETURN 6935 QF=2 6940 MS$="[208]RINTER [206][207][212] ON. [195]ORRECTED?(Y/N)":CS=1:GOSUB5300:IFQF=2THEN6930 6945 RETURN 6970 H=1:FORV=2TO14:MS$=MD$(1,V-2):GOSUB5070:NEXT 6980 REM ***** REBUKE ***** 6985 GOSUB5034:MS$="[217]OU ARE BAD "+NM$+",":V=21:GOSUB5210 6990 MS$="FOLLOW INSTRUCTIONS.":V=22:GOSUB5210 6991 MS$="[193]NY KEY CONTINUES.":GOSUB5205 6992 A$="":GETA$:IFA$=""THEN6992 6995 GOTO5034 7700 REM ***** LOAD GAME ***** 7705 QF=1:DF$="CG."+NM$+FL$(RA%):DR=DV:GOSUB5115:IFPR=2THEN7770 7710 IFPR<>3THEN7775 7715 GC%=0:GOSUB5258:OPEN15,DV,15:OPEN3,DV,3,"L:"+DF$+",S,R" 7720 INPUT#3,A$,B$,C$,D$,E$,F$,G$,H$,I$,J$,K$,L$,M$,N$:EV%=VAL(A$):GL%=VAL(B$) 7722 SE%=VAL(C$):SD%=VAL(D$):SP%=VAL(E$):US%=VAL(F$):TV%=VAL(G$) 7725 GC%=VAL(H$):DS%=VAL(I$):FU%=VAL(J$):EL%=VAL(K$):FC%=VAL(L$):TS%=VAL(M$) 7730 UC%=VAL(N$):FORX=0TO48:INPUT#3,A$,B$,C$,D$:L1%(X)=VAL(A$):L2%(X)=VAL(B$) 7735 ST%(X)=VAL(C$):UB%(X)=VAL(D$):NEXT 7745 INPUT#15,ER,A$,A,A:CLOSE3:CLOSE15:GOSUB5043:IFER<20ORER=63THEN7760 7750 MS$="[204]OAD ERROR. [210]ETRY?(Y/N)":CS=2:Q=0:GOSUB5300:ONQFGOTO7705,7775 7760 IFGC%=0THENRETURN 7765 QF=2:MS$="[199]AME ALREADY CREDITED. [193]NY KEY.":CS=4:Q=0:GOTO5300 7770 QF=2:MS$="[206]O SUCH CONVOY LISTED. [193]NY KEY.":CS=4:Q=0:GOTO5300 7775 QF=2:MS$="[196]RIVE/[196]ISK ERROR. [193]NY KEY.":CS=4:Q=0:GOTO5300 7800 REM ***** SAVE GAME ***** 7805 DF$="CG."+NM$+FL$(RA%):DR=DV:GOSUB5115:A=PR-1:ONAGOTO7815,7870,7860 7810 GOSUB5735:ONQFGOTO7815,7865,7860 7815 QF=1:GOSUB5258:OPEN15,DV,15:OPEN3,DV,3,"L:"+DF$+",S,W" 7820 PRINT#3,STR$(EV%):PRINT#3,STR$(GL%):PRINT#3,STR$(SE%):PRINT#3,STR$(SD%) 7825 PRINT#3,STR$(SP%):PRINT#3,STR$(US%):PRINT#3,STR$(TV%):PRINT#3,STR$(GC%) 7830 PRINT#3,STR$(DS%):PRINT#3,STR$(FU%):PRINT#3,STR$(EL%):PRINT#3,STR$(FC%) 7835 PRINT#3,STR$(TS%):PRINT#3,STR$(UC%):FORX=0TO48:PRINT#3,STR$(L1%(X)) 7836 PRINT#3,STR$(L2%(X)):PRINT#3,STR$(ST%(X)):PRINT#3,STR$(UB%(X)):NEXT 7850 INPUT#15,ER,A$,A,A:CLOSE3:CLOSE15:GOSUB5043:IFER<20ORER=63THEN7865 7855 MS$="[211]AVE ERROR. [210]ETRY?(Y/N)":CS=2:GOSUB5300:ONQFGOTO7805,7865 7860 MS$="[196]RIVE ERROR. [210]ETRY?(Y/N)":CS=2:GOSUB5300:IFQF=1THEN7805 7865 RETURN 7870 IFGC%=1THENGOSUB5740:GOTO7815 7871 MS$="[195]ONVOY ALREADY AT SEA. [196]ELETE?(Y/N)":CS=2:Q=0:GOSUB5300 7875 IFQF=1THEN7810 7880 RETURN 8200 REM ***** HI-SCORE LOAD ***** 8205 GOSUB8435:IFPR<>3THEN8220 8210 QF=1:GOSUB5258:OPEN15,DV,15:OPEN3,DV,3,"L:"+DF$+",S,R" 8215 FORX=0TO9:INPUT#3,HN$(X),HQ$(X):NEXT 8216 CLOSE3:CLOSE15:GOTO5043 8220 IFPR=2THENGOSUB8405:GOTO8255 8225 QF=2:RETURN 8230 REM ***** HI-SCORE SAVE ***** 8235 GOSUB8435 8240 ONPRGOTO8250,8245,8250,8270 8245 GOSUB8405:GOTO8255 8250 GOSUB5258:OPEN15,DV,15,"S:"+DF$:CLOSE15:GOSUB5043:IFQF=2THEN8270 8255 QF=1:GOSUB5258:OPEN15,DV,15:OPEN3,DV,3,"L:"+DF$+",S,W" 8260 FORX=0TO9:PRINT#3,HN$(X):PRINT#3,HQ$(X):NEXT 8265 CLOSE3:CLOSE15:GOTO5043 8270 MS$="":GOSUB5300:IFQF=1THENDR=DV:GOSUB5115:GOTO8240 8275 RETURN 8300 REM ***** HIGH SCORE CHECK ***** 8305 GOSUB5030:CF=0:IFAH=3ORAS=0THEN8330 8310 W=-1:FORX=9TO0STEP-1:IFAS>VAL(HQ$(X))THENW=X:CF=1 8315 NEXT:IFW<0THEN8330 8320 FORX=9TOWSTEP-1:HQ$(X+1)=HQ$(X):HN$(X+1)=HN$(X):NEXT 8325 HQ$(W)=STR$(AS):HN$(W)="" 8330 GOSUB5030:MS$=HF$+" [195]HAMPIONS:-":H=1:V=13:GOSUB5070 8335 FORX=4TO0STEP-1:V=18-X 8340 H=1:MS$=HN$(4-X):GOSUB5070:H=12:MS$=HQ$(4-X):GOSUB5070 8345 H=20:MS$=HN$(9-X):GOSUB5070:H=32:MS$=HQ$(9-X):GOSUB5070:NEXT 8350 IFAH=3ORAS=0ORW<0THENRETURN 8355 MS$="[195]ONGRATULATIONS! [197]NTER YOUR NAME!":GOSUB5205 8360 V=14+W:IFV>18THENV=14+(W-5) 8365 H=20:IFW<5THENH=1 8370 GOSUB5015:LL=10:GOSUB5705:IFW$=""THEN8370 8375 HN$(W)=W$:GOSUB8250:GOSUB5043:GC%=1:GOTO7805 8400 REM ***** HI-SCORE CLEAR ***** 8405 FORX=0TO9:HN$(X)="..........":HQ$(X)=" 00000":NEXT:RETURN 8430 REM ***** HI-SCORE SELECT RECORDS/FILE CHECK ***** 8435 IFAH=3ORTS%=0ORGC%=1THEN8440 8436 IFUC%>1THENLS%=4 8437 IFUC%>29THENLS%=5 8438 Z$(1)="1. [212]RY FOR THE "+HL$(LS%)+" [200]ONOURS [204]IST.":GOTO8445 8440 Z$(1)="1. [206]/[193]" 8445 Z$(2)="2. [210]EVIEW "+HL$(LS%)+" [200]ONOURS [204]IST." 8450 Z$(3)="3. [195]LEAR "+HL$(LS%)+" [200]ONOURS [204]IST." 8455 Z$(4)="4. [210]EVIEW OTHER LISTINGS.":Z$(5)="5. [210]ETURN TO [200]EADQUARTERS." 8460 DF$="HS.CONVOY"+FL$(LS%):DR=DV:GOSUB5115:RETURN 8500 REM ***** HALL OF FAME ***** 8505 AH=1:GOSUB8405:GOSUB8205:IFQF=2THEN1050 8510 SS=6:SS$="S":GOSUB5405:PRINT"[147]":BD=8:BK=1:CH=0:GOSUB5005 8515 SYSAD+3,0,39,12,12,170,0 8516 SYSAD+3,0,39,20,20,170,0 8520 MS$="[195][207][206][214][207][217] [200][193][204][204] [207][198] [198][193][205][197][144]":V=0:GOSUB5210 8525 MS$="[199]OOD DAY "+NM$+".":V=2:GOSUB5210:B$="" 8526 IFTS%=0ORGC%=1ORAH=3THEN8535 8528 GOSUB8605:V=3:MS$=PD$:GOSUB5210:V=4:MS$=EL$(EL%):GOSUB5210 8529 IFHR>3THENMS$=SH$(HR-3):V=5:GOSUB5210 8530 TS$=STR$(TS%):B$="[217]OU HAVE SCORED"+TS$+". " 8535 MS$=B$+"[196]O YOU WISH TO:-":V=6:GOSUB5210 8540 H=6:FORV=7TO11:GOSUB5045:MS$=Z$(V-6):GOSUB5070:NEXT 8545 MS$="[211]ELECT 1 TO 5.":CS=3:GOSUB5300:F%=VAL(A$):IFF%<1ORF%>5THEN8545 8550 GOSUB5030:ONF%GOTO8555,8565,8570,8655,8595 8556 IFTS%=0ORGC%=1ORAH=3THENGOSUB6985:GOTO8545 8560 AS=TS%:GOSUB8305:GOTO8545 8565 AS=0:GOSUB8305:GOTO8545 8570 AS=0:GOSUB8305 8575 MS$="[195]LEAR LIST AND DISK FILE? (Y/N)":CS=2:GOSUB5300 8580 IFQF=2THEN8545 8585 GOSUB5255:IFQF=2THEN8545 8590 GOSUB5030:GOSUB8405:GOSUB8250:GOTO8545 8595 IFGF=1THEN1005 8596 PRINT"[147]":SS=6:SS$="R":GOSUB5405:GOTO1050 8600 REM ***** SET ADMIRALTY JUDGEMENT ***** 8605 EL$(1)="[193]DMIRAL OF THE [198]LEET.":EL$(2)="[193]DMIRAL.":EL$(3)="[214]ICE [193]DMIRAL." 8610 EL$(4)="[210]EAR [193]DMIRAL.":EL$(5)="[195]OMMODORE.":EL$(6)="[193]CTING [195]OMMODORE." 8615 EL$(7)="[195]APTAIN.":EL$(8)="[204]IEUTENANT.":EL$(9)="[208]ETTY [207]FFICER" 8620 EL$(10)="[211]WABBY (ORDINARY SEAMAN).":EL$(11)="LAND BASED LATRINE DUTY." 8625 PD$="[217]OU HAVE BEEN PROMOTED TO":IFEL%=6THENPD$="[217]OU RETAIN YOUR RANK AS" 8630 IFEL%>6THENPD$="[217]OU HAVE BEEN DEMOTED TO" 8635 RETURN 8650 REM ***** SELECT LISTING ***** 8655 GOSUB5034:GOSUB5030:H=1:MS$="[211]ELECT LISTING TO CHECK:-":V=14:GOSUB5070 8660 MS$="1. [197]XPERIENCED [195]ONVOY COMMANDER.":V=15:GOSUB5070 8665 MS$="2. [197]XPERIENCED [195]APT. [198]IRST [195]ONVOY.":V=16:GOSUB5070 8670 MS$="3. [202]UST OUT OF [206]AVAL [193]CADEMY.":V=17:GOSUB5070 8675 MS$="4. [203]NIGHT [207]RDER OF THE [194]ATH.":V=18:GOSUB5070 8680 MS$="5. [214]ICTORIA [195]ROSS.":V=19:GOSUB5070 8685 A$="":GETA$:IFVAL(A$)<1ORVAL(A$)>5THEN8675 8690 LS%=VAL(A$):AH=3:GOSUB8205:GOSUB5030:B$="":GOTO8535 10000 DV=PEEK(186):OPEN15,DV,15,"S:HARBOUR":CLOSE15 10005 SAVE"HARBOUR",DV:END 20000 A%=RND(0)*12+1:PRINTA%