1 REM ***** BRIDGE ***** 5 DV=PEEK(186):IFDV<8THENDV=8 40 SYS57812"F.BRIDGE",DV,0:POKE780,0:POKE781,0:POKE782,8: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:FC%=0:FL%=0:FU%=0:FT%=1000:GL%=0:GT=0:GW=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 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),FL$(3),VT%(3,4),FM%(3) 160 DL%(1)=1:DL%(2)=12:DL%(3)=24:DL$(1)="[211][197][195][212][207][210] =":DL$(2)=":[199][210][201][196] = " 165 DL$(3)=":%[198][213][197][204] =":HD$(1)="[204]IVERPOOL.":HD$(2)="[211]OUTHAMPTON.": 170 HD$(3)="ON THE ROCKS":HD$(4)="BY ENEMY ACTION":HE$(1)="DUE":HE$(2)="AND" 175 SA%(1)=-1:SA%(2)=1:SA%(3)=-9:SA%(4)=9:SA%(5)=-10:SA%(6)=10:SA%(7)=-11 180 SA%(8)=11:FL$(1)=".EX":FL$(2)=".FC":FL$(3)=".AG" 185 KF$="[136][140][133][135][134]^_[138][139][137]*" 190 SD$(1)="[206]ORTH":SD$(2)="[206]ORTHEAST":SD$(3)="[211]OUTHEAST":SD$(4)="[211]OUTH" 195 SD$(5)="[197]AST":SP$(1)="5 [203]NOTS":SP$(2)="10 [203]NOTS":SP$(3)="15 [203]NOTS" 200 SP$(4)="20 [203]NOTS":SD$(0)="[211]TOPPED":SP$(0)="[200]OVE TO" 205 VT%(1,4)=120:VT%(1,3)=180:VT%(1,2)=240:VT%(1,1)=300 210 VT%(2,4)=180:VT%(2,3)=240:VT%(2,2)=300:VT%(2,1)=360 215 VT%(3,4)=240:VT%(3,3)=300:VT%(3,2)=360:VT%(3,1)=420:FM%(1)=-10:FM%(2)=-20 800 REM ***** STARTUP ***** 805 MS$="[207]RGANIZING [206]AVIGATION [205]APS.[144]":V=10:GOSUB5210 810 DF$="AC.GAME":DR=DV:GOSUB5115:IFPR<>3THEN5515 815 OPEN3,DV,3,"L:"+DF$:INPUT#3,NM$,B$,A$:CLOSE3:RA%=VAL(A$):GOSUB5740 820 GOSUB7705:IFQF<>1THENGOTO5515 825 DF$="NAVIGATION DATA":DR=DV:GOSUB5115:IFPR<>3THEN5505 830 OPEN3,DV,3,"L:"+DF$+",P,R" 835 FORX=0TO1:FORY=0TO20:INPUT#3,MD$(X,Y):NEXT:NEXT 840 FORX=0TO99:INPUT#3,GL$(X):NEXT:CLOSE3 1000 REM ***** BRIDGE ***** 1005 PRINT"[147]":BD=1:BK=1:CH=0:GOSUB5005 1010 ZS=2:GOSUB6105:MS$=MD$(0,0):GOSUB5208 1015 H=8:FORV=2TO16:MS$=MD$(0,V-1):GOSUB5070:NEXT 1020 H=3:V=7:MS$=MD$(0,16):GOSUB5070:H=32:V=5:MS$=MD$(0,17):GOSUB5070 1025 V=9:MS$=MD$(0,18):GOSUB5070:H=1:FORV=17TO18:MS$=MD$(0,V+2):GOSUB5070:NEXT 1030 GOSUB5225:SS=5:SS$="S":GOSUB5405 1032 GOSUB6955 1035 GOSUB1405:GOSUB1410 1040 IFSE%<>100THENGOSUB1445:GOTO1060 1045 MS$="[217]OU ARE IN [200]ALIFAX [200]ARBOUR.":GOSUB5208 1050 MS$="[193]NY KEY EXITS HARBOUR.":CS=4:Q=0:GOSUB5300:SP%=1:SD%=5:SE%=2:GL%=40 1055 GOSUB1445:FORX=0TO5:GOSUB1505:NEXT 1060 GOSUB1805:GOSUB5034:AS$="[195]HANGE [195]OURSE/[211]PEED? (C/S)" 1070 GOSUB1415:GOSUB1420:GOSUB1425:GOSUB1430:GOSUB1375 1075 MS$=AS$:GOSUB5205:ZS=3 1100 CH$="CS":GOSUB6505:ONQFGOTO1105,1175,1100,1705,1100,3205,1170,1140 1105 IFF%=2THEN1125 1110 GOSUB5034:MS$="[195][207][213][210][211][197]: 1 = [206]ORTH, 2 = [206]ORTHEAST,":GOSUB5206 1115 MS$="3 = [211]OUTHEAST, 4 = [211]OUTH, 5 = [197]AST.":GOSUB5205 1120 CH$="12345":GOSUB6510:SD%=F%:GOSUB1420:GOSUB5034:GOTO1060 1125 GOSUB5034:MS$="[211][208][197][197][196](KNOTS): [193] = 5, [194] = 10,":GOSUB5206 1130 MS$="[195] = 15, [196] = 20.":GOSUB5205 1135 CH$="ABCD":GOSUB6510:SP%=F%:IFDS%<>0ANDSP%>1THENSP%=SP%-1 1137 GOSUB5034:GOTO1060 1140 GOSUB5034:MN%=SP% 1145 GOSUB1505:ONSD%GOSUB3005,3105,3135,3035,3065 1150 A=QF/2:ONAGOTO1205,1705,3205 1155 GOSUB1450:MN%=MN%-1:GOSUB1235:IFMN%<1THEN1060 1160 GOTO1145 1170 GOSUB5034:GOSUB5245:GOTO5515 1175 GOSUB5034:GOSUB5245:GOTO5505 1200 REM ***** LOST CONVOY ***** 1205 LV%=TV%/2:TV%=TV%-LV%:GOSUB5034 1210 MS$="[217]OU LOOSE "+STR$(LV%)+" SHIPS DUE TO BAD":GOSUB5206 1215 MS$="WEATHER AND FAULTY NAVIGATION.":GOSUB5205 1220 MS$="[195]ONVOY STOPS TO REGROUP. [193]NY KEY.":CS=4:Q=0:V=24:GOSUB5305 1225 GOSUB5034:SP%=0:SD%=0:GOSUB1405:GOSUB1415:GOSUB1420:GOTO1060 1230 REM ***** SAILING PROBLEMS ***** 1235 E=1:IFST%(SE%)=1ANDUB%(SE%)=1THENE=3:B%=L1%(SE%):D%=L2%(SE%):GOTO1265 1240 IFST%(SE%)=1THENB%=L1%(SE%):GOTO1265 1245 IFUB%(SE%)=1THEND%=L2%(SE%):GOTO1270 1250 RETURN 1260 REM ***** PROBLEM FILTER/ACTION ***** 1265 C%=0:A%=B%:D=1:A=0:GOSUB1290:IFA=1THEN1275 1270 C%=0:A%=D%:D=2:A=0:GOSUB1290:IFA=1THEN1275 1272 GOSUB5043:RETURN 1275 GOSUB1305 1276 GOSUB6020:RN%=RND(0)*4+1:IFRN%<>C%THENONDGOSUB1355,1365 1280 IFE=3ANDD=1THEN1270 1281 GOSUB5034:RETURN 1290 IFGL%=A%THENC%=2:A=1:RETURN 1291 FORX=1TO8:IFGL%=(A%+SA%(X))THENC%=1:X=8:NEXT:A=1:RETURN 1295 RETURN 1300 REM ***** WARNINGS/COURSE CHANGE ***** 1305 MS$="[217]OU ARE ENTERING A STORM.":CN=2 1307 IFD=2THENMS$="[217]OU ARE IN A [213]-BOAT AREA.":CN=4 1310 GOSUB2005:GOSUB5205:RN%=RND(0)*5+1:IFRN%=SD%THENRETURN 1312 A=1 1315 A%=RND(0)*8+1:B%=GL%+SA%(A%) 1320 IFB%>9ANDB%<90THENGL%=B%:GOSUB1445:GOTO1335 1325 A=A+1:IFA<5THEN1315 1326 RETURN 1335 GOSUB6010:A$="[211]TORM PATH":IFD=2THENA$="[213]-BOAT SIGHTING" 1340 MS$=A$+" CAUSES COURSE CHANGE.":GOSUB5206:SD%=RN%:GOSUB1415 1345 RETURN 1350 REM ***** LOSSES ***** 1355 CN=2:GOSUB2005:RN%=RND(9)*2+1:IFRN%=2THEN1358 1356 MS$="[211]TORM DAMAGE TO "+STR$(C%)+" VESSEL(S).":IFSP%>1THENSP%=SP%-1 1357 DS%=DS%+C%:GOTO1360 1358 MS$="[211]TORM SINKS"+STR$(C%)+" VESSEL(S).":TV%=TV%-C% 1360 GOSUB5206:GOSUB1405:GOSUB1420:GOSUB1425 1361 GOSUB6020:GOSUB5034:IFE=3THEN1270 1362 RETURN 1365 FORF=1TOC%:CN=3:GOSUB2005:NEXTF 1366 MS$="[213]BOATS SINK "+STR$(C%)+" VESSEL(S).":TV%=TV%-C%:GOSUB5206 1367 GOSUB1405:GOSUB6020:GOTO5034 1370 REM ***** HQ ALERT ***** 1375 MS$="[198]8 = [200][209] OBSTACLE REPORTS.":V=18:GOTO5210 1380 REM ***** FUEL CONSUMPTION ***** 1385 QF=1:FC%=FC%+MF%:FU%=(1000-FC%)*100/1000:IFFU%<1THENFU%=0:QF=4 1390 Q=8:IFQF<>4ANDMF%<10THEN1475 1395 RETURN 1400 REM ***** PRINT STATUS DATA ***** 1405 A$=STR$(TV%):V=6:GOTO1435 1410 A$=STR$(EV%):V=7:GOTO1435 1415 A$=SD$(SD%):V=8:GOTO1435 1420 A$=SP$(SP%):V=9:GOTO1435 1425 A$=STR$(DS%):V=10:GOTO1435 1430 A$=STR$(US%):V=11 1435 H=28:MS$=" ":GOSUB5070:MS$=A$:GOTO5070 1440 REM ***** PRINT STATUS LINE ***** 1445 GOSUB5040:FORX=1TO3:H=DL%(X):MS$=DL$(X):GOSUB5070:NEXT 1450 A%=1:Q=8 1455 ONA%GOTO1460,1465,1475 1460 H=9:E$=" ":A$=STR$(SE%):GOTO1480 1465 H=20:E$=" ":A$=GL$(GL%):GOTO1480 1475 H=32:E$=" ":A$=STR$(FU%):GOTO1480 1480 V=0:MS$=E$:GOSUB5070:MS$=A$:GOSUB5070:IFQ<>8THENRETURN 1485 A%=A%+1:IFA%<4THEN1455 1490 RETURN 1500 REM ***** SET/UNSET PROBLEM LOCATIONS ***** 1505 PL%=4-RA%:SS=0:MS$="[210]EVIEWING SITUATION - BE PATIENT.":GOSUB5205 1510 A%=RA%:OT=OT+1:IFOT>3THENOT=1 1511 RN%=RND(0)*48+1 1512 ONOTGOTO1515,1520,1525 1515 ST%(RN%)=0:L1%(RN%)=0:A%=A%-1:IFA%=0THEN1530 1516 GOTO1511 1520 UB%(RN%)=0:L2%(RN%)=0:A%=A%-1:IFA%=0THEN1530 1521 GOTO1511 1525 DS%=DS%-RA%:IFDS%=<0THENDS%=0 1526 GOSUB1425 1530 PA%=PA%+1:IFPA%=3THENPA%=1 1535 QF=1:SN%=RND(0)*48+1:IFSN%<7ORSN%=SE%THEN1535 1540 IFPA%=1THEN1550 1545 ST%(SN%)=1:GOTO1555 1550 UB%(SN%)=1 1555 RN%=RND(0)*88+1:FORX=1TO8:IFRN%>X*10ANDRN%CHR$(57)THENA=2 1623 NEXT:IFA=2THEN1615 1624 SS%=VAL(W$):IFSS%<0ORSS%>48THEN1615 1625 H=1:MS$="[211]EARCH [199]RID LOCATION =":GOSUB5043:GOSUB5070:GOSUB6180 1630 H=24:V=23:GOSUB5015:LL=2:GOSUB5715:IFW$=""THEN1609 1632 A=1:FORX=1TO2:IFMID$(W$,X,1)CHR$(57)THENA=2 1633 NEXT:IFA=2THEN1625 1634 SG%=VAL(W$):IFSG%<0ORSG%>99THEN1625 1635 IFSS%=SE%THEN1646 1640 AR%=SE%/7:IFSS%>AR%+7THEN1646 1645 MS$="[194]AD CHOICE. [212]RY AGAIN. [193]NY KEY.":CS=4:Q=0:GOSUB5300:GOTO1615 1646 FM%(0)=2:MF%=0:CN=1:GOSUB2005:MS$="[200]UNTING":GOSUB5206 1647 A=0:B=4-RA%:IFUB%(SS%)=0THENGOSUB6010:GOTO1660 1649 Z=5*RA%:IFL2%(SS%)=SG%THENA=3:B=1:GOTO1660 1650 FORX=1TOZ:IFL2%(SS%)+X=SG%THENA=2:B=X+1:X=Z:L2%(SS%)=0:GOTO1655 1652 NEXT:FORX=1TOZ:IFL2%(SS%)-X=SG%THENA=2:B=X+1:X=Z:L2%(SS%)=0 1655 NEXT:IFRA%=3ANDUS%=0ANDA<1THENA=1 1657 A%=RND(0)*25+1:IFA%=(GL%+1)/4THENEV%=EV%-1:CN=3:GOSUB2005:GOTO1690 1660 MF%=B*25:GOSUB1385:MF%=0:GOSUB1475 1661 IFA=0THENMS$="[206]O [213]BOAT FOUND.":GOTO1676 1665 IFL2%(SS%)=0THENUB%(SS%)=0:GOSUB1555 1670 FORF=1TOA:US%=US%+1:CN=5:GOSUB2005:NEXTF 1675 MS$="[197]SCORTS SINK"+STR$(A)+" [213]BOAT(S)" 1676 GOSUB5034:GOSUB5206:MF%=Z*3*(4-RA%):GOSUB1385 1677 IFA>0THENGOSUB6010:GOSUB5042:GOTO1609 1678 GOSUB1475:MS$="[195]ONTINUE SEARCH? (Y/N)":CS=1:Q=0:GOSUB5300 1680 GOSUB5034:ONQFGOTO1609,1625 1685 PRINT"[147]":SS=6:SS$="R":GOSUB5405:GOTO1430 1690 MS$="[217]OU LOSE AN ESCORT VESSEL." 1695 IFEV%<1THENMS$="[217]OU JUST LOST YOUR LAST ESCORT." 1696 GOSUB5206:IFEV%<1THENGOSUB5225:GOTO1685 1697 ONRA%GOSUB6005,6010,6015 1698 GOTO1677 1700 REM ***** GAME FAIL ***** 1705 PRINT"[147]":BD=2:BK=1:CH=0:GOSUB5005 1710 MS$="[217][207][213] [194][204][197][215] [201][212]![144]":V=1:GOSUB5210 1715 MS$="[217]OU RAN OUT OF FUEL." 1720 IFTV%=0THENMS$="[217]OU WENT DOWN WITH THE LAST SHIP." 1725 V=10:GOSUB5210 1730 MS$="[196]O YOU WISH TO [210]EDO, RE[211]TART, OR":V=15:GOSUB5210 1735 MS$="[209]UIT? (R/S/Q)" 1740 CH$="RSQ":SP%=0:GOSUB6510:IFF%=3THENGOSUB5220:ONQFGOTO1740,5505 1745 IFF%=2THEN5515 1750 GOSUB7705:ONQFGOTO1032,5515 1760 REM ***** ATTACK DISPLAY ***** 1765 H=1:FORV=4TO13:MS$=MD$(1,V-1):GOSUB5070:NEXT:RETURN 1770 A$(1)="([199]RID [204]ETTER: [193] = 0,":A$(2)="[202] = 9. [204]OCATION = [210]OW" 1775 A$(3)="[206]UMBER-1, TIMES 10,":A$(4)="PLUS [204]ETTER VALUE.)" 1776 A$(5)="[205]IN 2 DIGITS. EG:8=08":GOTO1790 1780 A$(1)="[211] = [211]ECTOR [205]AP":A$(2)="[203] = [200][209][160][196]ATA" 1785 A$(3)="^ = [211]EARCH":A$(4)="_ = [206]AV BRIDGE":A$(5)="" 1790 D$=" ":H=16:FORV=5TO9:MS$=D$:GOSUB5070 1795 MS$=A$(V-4):GOSUB5070:NEXT:RETURN 1800 REM ***** COLLECT GARBAGE ***** 1805 QF=1:IFPEEK(52)>PEEK(50)+2THENRETURN 1810 QF=2:MS$="[206]UMBER [207]NE RE-EVALUATING CONVOY DATA.":V=18:GOSUB5210 1815 SYS45949 1816 GOTO1375 1820 REM ***** ATTACK SCREEN ***** 1825 PRINT"[147]":SYSAD+3,0,39,1,1,160,0 1830 SYSAD+3,0,39,20,20,160,0 1835 RETURN 1850 REM ***** ATTACK SECTOR MAP ***** 1855 SS=7:SS$="S":GOSUB5405:PRINT"[147]":SS=5:SS$="R":GOSUB5405 1860 MS$="[195]ONVOY IS IN [211]ECTOR"+STR$(SE%)+". [193]NY KEY.":CS=4:Q=0:GOSUB5300 1865 PRINT"[147]":SS=7:SS$="R":GOSUB5405:RETURN 1900 REM ***** HQ REPORT ***** 1905 MS$="[208]ATIENCE - ORGANIZING DATA.":V=18:GOSUB5210:GOSUB5086 1910 B%=3:SS=7:FORX=3TO6:A$="":NEXT 1911 A%=0:A$(B%)="":FORX=SSTO48:IFST%(X)=0THEN1925 1915 A$(B%)=A$(B%)+STR$(X):A%=A%+1:IFX=48THEN1925 1920 IFA%=12THENSS=X:B%=B%+1:X=48:NEXT:GOTO1911 1925 NEXT:B%=9:SS=7:FORX=9TO12:A$="":NEXT 1930 A%=0:A$(B%)="":FORX=SSTO48:IFUB%(X)=0THEN1945 1935 A$(B%)=A$(B%)+STR$(X):A%=A%+1:IFX=48THEN1945 1940 IFA%=12THENSS=X:B%=B%+1:X=48:NEXT:GOTO1930 1945 NEXT:A$(0)="[200][197][193][196][209][213][193][210][212][197][210]'[211] [210][197][208][207][210][212]":A$(2)="[211][212][207][210][205] [211]ECTORS:-" 1950 A$(8)="[213][194][207][193][212] [211]ECTORS:-" 1955 V=18:GOSUB5045:SS=7:SS$="S":GOSUB5405:PRINT"[147]" 1960 MS$=A$(0):GOSUB5208:H=1:V=2:MS$=A$(2):GOSUB5070 1965 FORV=3TO6:MS$=A$(V):GOSUB5070:NEXT:V=8:MS$=A$(8):GOSUB5070 1970 FORV=9TO12:MS$=A$(V):GOSUB5070:NEXT:GOSUB5225 1975 PRINT"[147]":SS=7:SS$="R":GOSUB5405:RETURN 2000 REM ***** SOUND S/R ***** 2005 ONCNGOSUB2025,2045,2065,2085,2115 2010 FORX=0TO24:POKES+X,0:NEXT:RETURN 2020 **** ATTACK **** 2025 FORX=1TO5:FORY=70TO100STEP5:POKES+1,Y:POKES+5,15:POKES+6,10:POKES+24,15 2030 POKES+4,17:FORZ=0TO5:NEXT:NEXT:NEXT:POKES+4,16:RETURN 2040 **** STORM **** 2045 POKES+24,15:POKES+5,12:POKES+6,240:POKES+1,96:POKES,0:POKES+4,129 2050 FORX=0TO5000:NEXT:POKES+4,128:RETURN 2060 **** TORPEDO STRIKE **** 2065 POKES+5,17:POKES+6,240:POKES+1,1:FORX=2TO12STEP.25:POKES+4,129 2070 POKES+24,X/2+9:POKES+1,X:NEXT:FORY=0TO250:NEXT:POKES+4,128:RETURN 2080 **** UBOAT WARNING **** 2085 POKES+24,15:POKES+5,0:POKES+6,240:POKES+1,150:POKES,0:POKES+4,17 2090 POKES+5+7,0:POKES+6+7,240:POKES+1+7,75:POKES+7,0:POKES+4+7,33 2095 FORA=1TO6:FORB=150TO70STEP-8:POKES+1,B:POKES+1+3+4,B*1.5:POKES+0,0:NEXT 2100 FORB=70TO150STEP6:POKES+1,B:POKES+1+3+4,B*1.3:POKES+0,0:NEXT:NEXT 2105 POKES+11,0:POKES+4,16:RETURN 2110 **** UBOAT KILL **** 2115 POKES+5,17:POKES+6,112:POKES+4,17:FORX=15TO1STEP-.2:POKES+24,X 2120 POKES+1,X*10:NEXT:POKES+4,16:POKES+24,15:POKES+4,129:FORX=15TO1STEP-.4 2125 POKES+24,X:POKES+1,INT(RND(1)*3+X):NEXT:POKES+4,128:RETURN 3000 REM ***** NORTH ***** 3005 QF=1:NS%=SE%:NL%=GL%-10 3010 IFNL%<0THENNL%=(NL%+1)+90:NS%=SE%-1:IFNS%<0THENSP%=0:SD%=0:QF=2:RETURN 3015 GL%=NL%:IFNS%<>SE%THENSE%=NS% 3020 FM%(0)=1:GOTO1385 3030 REM ***** SOUTH ***** 3035 QF=1:NS%=SE%:NL%=GL%+10 3040 IFNL%>99THENNL%=NL%-100:NS%=SE%+1:IFNS%>48THENSP%=0:SD%=0:QF=2:RETURN 3045 GL%=NL%:IFNS%<>SE%THENSE%=NS% 3050 FM%(0)=1:GOTO1385 3060 REM ***** EAST ***** 3065 QF=1:NS%=SE%:NL%=GL%+1:A%=GL%/10:B%=A%*10 3070 IFNL%>B%+9THENNL%=B%:GOTO3080 3075 FM%(0)=1:GL%=NL%:GOTO1385 3080 NS%=SE%+7:IFNS%>48THENNS%=NS%-7:QF=6:RETURN 3085 FM%(0)=1:GL%=NL%:SE%=NS%:GOTO1385 3100 REM ***** NORTH EAST ***** 3105 GOSUB3065:IFQF=6THENRETURN 3110 GOTO3005 3130 REM ***** SOUTH EAST ***** 3135 GOSUB3035:IFQF=2THENRETURN 3140 GOTO3065 3200 REM ***** GAME END ***** 3205 ED%=NS%-41:IFED%=1ORED%=3THENF%=3:LV%=TV%/2:GOTO3230 3210 IFED%<>2ANDED%<>4THENF%=4:LV%=(TV%/5)*(E%-4):GOTO3230 3215 F%=ED%/2:A$(1)="[217]OU ARRIVE SAFELY AT "+HD$(F%) 3220 A$(2)="":IFTV%<30THENA$(2)="[195]ANNOT SAY AS MUCH FOR THE CONVOY." 3225 GOTO3245 3230 IFLV%<0THENLV%=0 3231 TV%=TV%-LV%:IFTV%<0THENTV%=0:GOTO1705 3232 A$(1)="":A$(2)="" 3233 IFLV%=0THEN3245 3234 A$(1)="[217]OU LOSE "+STR$(LV%)+" SHIPS "+HD$(F%) 3235 A$(2)=HE$(F%-2)+" TO YOUR FAULTY NAVIGATION." 3245 A$(3)="[217]OU MAKE PORT WITH"+STR$(TV%)+" TRANSPORTS" 3247 A$(4)="AND"+STR$(EV%)+" ESCORTS AFTER SINKING" 3250 A$(5)="A TOTAL OF"+STR$(US%)+" [213]BOATS." 3255 A$(6)="[215]ELL LET US SEE HOW THE [193]DMIRALTY" 3260 A$(7)="AND [195][200][193][198] VIEW YOUR PERFORMANCE." 3265 A$(8)="[193]NY KEY TAKES YOU TO THE REVIEW BOARD." 3270 GOSUB3305:PRINT"[147]":BD=1:BK=1:CH=0:GOSUB5005 3275 H=1:FORV=8TO9:MS$=A$(V-7):GOSUB5070:NEXT:GOSUB6015 3280 FORV=11TO13:MS$=A$(V-8):GOSUB5070:NEXT:GOSUB6015 3285 FORV=15TO17:MS$=A$(V-9):GOSUB5070:NEXT 3290 A$="":GETA$:IFA$=""THEN3290 3295 GOSUB5033:GOSUB7805:GOTO5515 3300 REM ***** SCORING ***** 3305 EL%=11:IFTV%>5THENEL%=10 3310 IFTV%>10THENEL%=9 3315 IFTV%>15THENEL%=8 3320 IFTV%>20THENEL%=7 3325 IFTV%>25THENEL%=6 3330 IFTV%>30THENEL%=5 3335 IFTV%>35THENEL%=4 3340 IFTV%>40THENEL%=3 3345 IFTV%>45THENEL%=2 3350 IFTV%>48THENEL%=1 3355 UC%=US%:IFUC%>40THENUC%=40 3360 TS%=(TV%*100)+(EV%*200)+(UC%*500)+(FU%*50):RETURN 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=0:BL=24:GOTO5035 :REM * SCREEN 5031 TL=2:BL=6:GOTO5035 :REM * WINDOW1 5032 V=8:GOTO5035 :REM * WINDOW2 5033 TL=17:BL=19:GOTO5035:REM * WINDOW3 5034 TL=21:BL=24:GOTO5035:REM * WINDOW4 5035 FORV=TLTOBL:GOSUB5045:NEXT:RETURN 5036 GOSUB5031:GOSUB5032:GOSUB5033:GOTO5034:REM * WINDOWS 1 TO 4 5037 GOSUB5032:GOSUB5033:GOTO5034:REM * WINDOWS 2 TO 4 5038 GOSUB5033:GOTO5034 :REM * WINDOWS 3 & 4 5039 GOSUB5031:GOTO5032 :REM * WINDOWS 1 & 2 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 5050 TL=12:BL=19:GOTO5035 5055 TL=14:BL=24:GOTO5035 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 5086 TL=1:BL=22:GOTO5085 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:GOTO5300READY. 5220 SZ=ZS:MS$="[193]RE YOU SURE YOU WANT TO QUIT?(Y/N)":CS=5: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 5245 MS$="[211]AVE GAME TO DATE? (Y/N)":CS=6:Q=0: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 5325 ZS=SZ:IFCS=4THENA$="":V=ZZ:GOTO5045 5330 IFCS=3THENV=ZZ:GOTO5045 5335 QF=1:IFA$<>"Y"ANDA$<>"N"THENGOSUB6985:GOTO5306 5340 IFCS=6ANDA$="Y"THENGOSUB7805 5345 IFCS=5ANDA$="Y"THENA=1:GOTO5245 5350 IFCS=2ANDA$="N"THENQF=2 5355 IFCS=1ANDA$="Y"THENQF=2 5357 IFA=1THENA=0:QF=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 - SECTOR MAP 5435 SP=216:GOTO5450 :REM - TEMP 1 5440 SP=224:GOTO5450 :REM - TEMP 2 5445 SP=232 :REM - TEMP 3 5450 M=6:IFSS$="R"THENM=9 5455 SYSAD+M,SP 5460 RETURN 5500 REM ***** MODULE LOAD ***** 5503 IFDR=25THENPOKE186,DV:Q=64:GOTO5546 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$="1":IFTS%<>0THENX$="2" 5520 QF=1:DF$="HARBOUR":DR=DV:GOSUB5115:IFPR<>3THENQ=64:GOTO5546 5525 DL$=DF$:GOTO5565 5530 PRINT"[147]":BD=0:BK=0:CH=1:GOSUB5005 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:PRINTCHR$(9):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=2THEN5595 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 5596 GOSUB5740:DF$=DL$:GOTO5530 5600 REM ***** BLOAD ***** 5605 DF$="H.CONVOY"+STR$(ZS):GW=0:GOTO5635 5610 DF$="GETWORD 1000":IFGW=1THENRETURN 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 IFQ=1THENQ=0:GOTO5740 5736 QF=1:MS$="[193]RE YOU SURE YOU WANT TO DELETE?(Y/N)":CS=2:GOSUB5300 5737 IFQF=2THENRETURN 5740 GOSUB5258:OPEN15,DV,15,"S:"+DF$:INPUT#15,ER,A$,A,A:CLOSE15:GOSUB5043 5745 IFER=62ORER<20THENQF=1:PR=2:RETURN 5750 QF=2:RETURN 6000 REM ***** TIMER ***** 6005 X=60:GOTO6085 6010 X=90:GOTO6085 6015 X=120:GOTO6085 6020 X=180:GOTO6085 6025 X=210:GOTO6085 6030 X=240:GOTO6085 6035 X=270:GOTO6085 6040 X=300:GOTO6085 6045 X=330:GOTO6085 6050 X=360:GOTO6085 6055 X=390:GOTO6085 6060 X=420:GOTO6085 6065 X=480:GOTO6085 6070 X=510:GOTO6085 6075 X=540:GOTO6085 6080 X=600 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 6116 GOSUB5610:GOTO6120 6118 ONZGOSUB6130 6120 GOSUB5225:PRINT"[147]":SS=6:SS$="R":GOSUB5405:RETURN 6125 MS$="[198]UNCTION CANNOT BE USED WITH AVAILABLE":V=10:GOSUB5210 6126 MS$="DATA/INFORMATION --- [207][210] ---":V=11:GOSUB5210 6127 MS$="[210]EQUESTED FILE NOT AVAILABLE":V=12:GOSUB5210 6128 MS$="--- [207][210] --- NOT USED WITH THIS OPTION.":V=13:GOSUB5210:RETURN 6160 REM ***** INFO LINE DATA ***** 6165 MS$="^ = [200]ELP.":GOTO5207 6170 MS$="_ = [193]BORT.":GOTO5207 6175 MS$="OR [200][207][212] KEYS.":GOTO5207 6180 MS$="[210][197][212][213][210][206] = [193]BORT.":GOTO5207 6500 REM ***** BRANCHER ***** 6505 TL=V:BM$=MS$:K=LEN(CH$):BH$=CH$+KF$:QN$="A":GOTO6515 6510 TL=V:BM$=MS$:K=LEN(CH$):BH$=CH$:QN$="" 6515 V=TL:MS$=BM$:GOSUB5205:IFQN$="A"THENGOSUB6175 6516 A=1:POKE198,0:A%=0:QF=1:TI$="000000" 6517 A$="":GETA$:IFA$<>""THEN6521 6518 IFSP%=0ORTIMID$(BH$,X,1)THENNEXT:GOTO6515 6522 F%=X:X=LEN(BH$):NEXT:IFF%28ANDSE%<>29THENGOSUB5230:GOTO6515 6567 C%=RND(0)*12+1:IFC%>9THEN6570 6568 C%=RND(0)*3+1:MS$="[212]RANSPORTS ON ROCKS = "+STR$(C%):GOSUB5206:GOSUB5225 6569 TV%=TV%-C%:GOSUB1405:GOTO6580 6570 C%=RND(0)*12+1:IFC%>9THEN6580 6571 C%=RND(0)*3+1:CN=3:FORF=1TOC%:GOSUB2005:NEXTF 6572 MS$="[213]-BOATS SINK "+STR$(C%)+" VESSELS.":GOSUB5206:GOSUB5225 6575 TV%=TV%-C%:GOSUB1405 6580 GOSUB5042:SE%=28:GL%=6:SP%=0:SD%=0:FC%=0:MF%=0:GOSUB1385:GOSUB1415 6581 GOSUB1420:GOSUB1445 6582 MS$="[210]EFUEL IN [201]CELAND.":GOSUB5206:GOTO6515 6585 MS$="[206]O NEARBY BASE. [193]NY KEY.":CS=4:Q=0:GOSUB5300 6590 PRINT"[147]":SS=7:SS$="R":GOSUB5405:RETURN 6595 RETURN 6950 REM ***** BRIDGE SCREEN ***** 6955 PRINT"[147]":BD=0:BK=1:CH=0:GOSUB5005 6960 SYSAD+3,0,39,1,1,160,0 6965 SYSAD+3,0,39,20,20,160,0 6970 H=1:FORV=2TO14:MS$=MD$(1,V-2):GOSUB5070:NEXT 6975 H=16:FORV=6TO11:MS$=MD$(1,V+7):GOSUB5070:NEXT:RETURN 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 6996 GOTO5034 7700 REM ***** LOAD GAME ***** 7705 QF=1:DF$="CG."+NM$+FL$(RA%):DR=DV:GOSUB5115:IFPR<>3THENQF=4:GOTO7770 7715 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$) 7721 SE%=VAL(C$):SD%=VAL(D$):SP%=VAL(E$):US%=VAL(F$) 7725 TV%=VAL(G$):GC%=VAL(H$):DS%=VAL(I$):FU%=VAL(J$):EL%=VAL(K$):FC%=VAL(L$) 7730 TS%=VAL(M$):UC%=VAL(N$):FORX=0TO48:INPUT#3,A$,B$,C$,D$:L1%(X)=VAL(A$) 7735 L2%(X)=VAL(B$):ST%(X)=VAL(C$):UB%(X)=VAL(D$):NEXT 7740 INPUT#15,ER,A$,A,A:CLOSE3:CLOSE15:GOSUB5043:QF=1:IFER<20ORER=63THEN7755 7745 QF=2:RETURN 7755 IFQF=1ANDGC%=0ANDTS%=0THENRETURN 7760 QF=2:RETURN 7800 REM ***** SAVE GAME ***** 7805 DF$="CG."+NM$+FL$(RA%):DR=DV:GOSUB5115 7806 IFPR=3THENGOSUB5740:ONQFGOTO7815,7855 7810 IFPR<>2THEN7860 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 10000 DV=PEEK(186):OPEN15,DV,15,"S:BRIDGE":CLOSE15:SAVE"BRIDGE",DV:END 20000 A%=RND(0)*12+1:PRINTA%