home *** CD-ROM | disk | FTP | other *** search
/ Between Heaven & Hell 2 / BetweenHeavenHell.cdr / 100 / 23 / war.bas < prev    next >
BASIC Source File  |  1985-03-24  |  31KB  |  948 lines

  1. 10 'WAR  GLOBAL THERMONUCLEAR WAR
  2. 20 DEFINT A-Z
  3. 30 RANDOMIZE TIMER
  4. 40 KEY OFF
  5. 50 GOSUB 8410 'TITLE
  6. 60 GOSUB 330 'SETUP TABLES, VARIABLES
  7. 70  FOR SIDE = 1 TO 2
  8. 80    GOSUB 780 'ESCALATION
  9. 90  NEXT
  10. 100  IF FIRST =  0 THEN GOTO 70
  11. 110 GOSUB 2390 'SYMBOLS
  12. 120 GOSUB 6480 'SHOW COMMANDS
  13. 130 GOSUB 2670 'LOAD & DRAW MAP
  14. 140 GOSUB 2770 'DRAW CITIES
  15. 150 GOSUB 4330 'PLACE SYMBOLS
  16. 160 FOR SIDE = 1 TO 2
  17. 170   FOR X = 1 TO 7
  18. 180     FOR Y=1 TO WEAPONS(X,SIDE)
  19. 190       Z=RANGE(X,1) + (Y-1)
  20. 200       T.STAT(Z,SIDE)=1
  21. 210     NEXT Y
  22. 220   NEXT X
  23. 230 NEXT SIDE
  24. 240 SIDE = FIRST
  25. 250 FOR X=83 TO 106
  26. 260   T.STAT(X,1)=1: T.STAT(X,2)=1
  27. 270 NEXT X
  28. 280 GOSUB 6700 'PLAY PLAYERS TURN
  29. 290 IF SIDE=1 THEN SIDE=2 ELSE SIDE=1
  30. 300 GOTO 280
  31. 310 END
  32. 320 '
  33. 330 'SETUP TABLES, VARIABLES
  34. 340 '
  35. 350 DIM WEAPONS(7,2)
  36. 360 DIM COST(7,2)
  37. 370 COST(1,1)=3000: COST(1,2)=3000
  38. 380 COST(2,1)=200: COST(2,2)=200
  39. 390 COST(3,1)=2: COST(3,2)=2
  40. 400 COST(4,1)=300: COST(4,2)=300
  41. 410 COST(5,1)=100: COST(5,2)=100
  42. 420 COST(6,1)=500: COST(6,2)=500
  43. 430 COST(7,1)=160: COST(7,2)=160
  44. 440 DIM W.NAME$(7)
  45. 450 W.NAME$(1)="1. BALISTIC SUBMARINES"
  46. 460 W.NAME$(2)="2. ICBM'S"
  47. 470 W.NAME$(3)="3. CRUISE MISSILES"
  48. 480 W.NAME$(4)="4. BOMBERS"
  49. 490 W.NAME$(5)="5. AIRBORNE HQ"
  50. 500 W.NAME$(6)="6. UNDERGROUND HQ"
  51. 510 W.NAME$(7)="7. AIR DEFENSE"
  52. 520 DIM RANGE(8,2) 'SUBSCRIPT RANGE FOR TYPES
  53. 530 RANGE(1,1)=1: RANGE(1,2)=16
  54. 540 RANGE(2,1)=17: RANGE(2,2)=28
  55. 550 RANGE(3,1)=29: RANGE(3,2)=48
  56. 560 RANGE(4,1)=49: RANGE(4,2)=60
  57. 570 RANGE(5,1)=61: RANGE(5,2)=62
  58. 580 RANGE(6,1)=63: RANGE(6,2)=64
  59. 590 RANGE(7,1)=65: RANGE(7,2)=82
  60. 600 RANGE(8,1)=83: RANGE(8,2)=106
  61. 610 DIM MAX(7)
  62. 620 MAX(1)=2
  63. 630 MAX(2)=12
  64. 640 MAX(3)=20
  65. 650 MAX(4)=12
  66. 660 MAX(5)=2
  67. 670 MAX(6)=2
  68. 680 MAX(7)=18
  69. 690 'ARRAYS SHOW STATUS  0=UNTOUCHED 1-998=LAUNCHED 999=DESTROYED
  70. 700 DIM STAT(106,2)
  71. 710 DIM LCN(106,2,2)
  72. 720 DIM SV(8002)
  73. 730 DIM TGT(106,2,3) 'TARGET LOCATIONS & SUBSCRIPT
  74. 740 DIM T.STAT(106,2) '1=EXISTS 2=TARGETED
  75. 750 US.BUDGET=16000*((90+(INT(RND*20)+1))/100)
  76. 760 RED.BUDGET=16000*((90+(INT(RND*20)+1))/100)
  77. 770 RETURN
  78. 780 '
  79. 790 'ESCALATION
  80. 800 '
  81. 810 IF SIDE = 1 THEN GOSUB 1700 ELSE GOSUB 1290
  82. 820 GOSUB 9200
  83. 830 PRINT ,,,"9. START CONFLICT"
  84. 840 IF SIDE=1 THEN PRINT "MILITARY BUDGET (IN MILLIONS OF DOLLARS)",US.BUDGET
  85. 850 IF SIDE=2 THEN PRINT "MILITARY BUDGET (IN MILLIONS OF RUBLES)",RED.BUDGET
  86. 860 PRINT: PRINT
  87. 870 XFACT=0: COST=0: QUAN=1
  88. 880 INPUT "WHAT ITEM ",I
  89. 890 IF I=0 THEN GOTO 1150'END
  90. 900 IF I<>9 THEN GOTO 930
  91. 910 IF FIRST = 0 THEN FIRST = SIDE 'SAVE SIDE THAT MOVES FIRST
  92. 920 GOTO 1150
  93. 930 IF I>7 THEN GOTO 880
  94. 940 COST=COST(I,SIDE)
  95. 950 IF WEAPONS(I,SIDE) = 0 THEN GOTO 980
  96. 960 INPUT "HOW MANY ",QUAN
  97. 970 GOTO 1010
  98. 980 XFACT=(RND*100)+1: COST=COST+(COST*(XFACT/100))
  99. 990 IF XFACT=100 THEN PRINT "BAD NEWS,RESEARCH FAILED":                               GOTO 1010
  100. 1000 COST(I,SIDE)=COST(I,SIDE)+((COST(I,SIDE)*(XFACT/100))/2)
  101. 1010 IF SIDE=1 THEN BUDGET=US.BUDGET ELSE BUDGET=RED.BUDGET
  102. 1020 IF (COST*QUAN) > BUDGET THEN LOCATE 23,26: PRINT "YOU DON'T HAVE THE MONEY": GOTO 1180
  103. 1030 IF XFACT=100 THEN GOTO 1180
  104. 1040 IF (WEAPONS(I,SIDE)+QUAN) =< MAX(I) THEN GOTO 1080
  105. 1050 QUAN = MAX(I)-WEAPONS(I,SIDE)
  106. 1060 LOCATE 22,15: PRINT "YOUR FACTORIES CAN ONLY PRODUCE ";QUAN:                       SV.TIMER!=TIMER+2
  107. 1070 IF TIMER < SV.TIMER! THEN GOTO 1070
  108. 1080 BUDGET=BUDGET-(COST*QUAN)
  109. 1090 IF SIDE=1 THEN US.BUDGET=BUDGET ELSE RED.BUDGET=BUDGET
  110. 1100 IF XFACT=100 THEN GOTO 1150
  111. 1110 WEAPONS(I,SIDE)=WEAPONS(I,SIDE)+QUAN
  112. 1120 GOSUB 9200
  113. 1130 IF I<>6 THEN GOTO 1150
  114. 1140 IF STAT(63,SIDE)=0 THEN STAT(63,SIDE)=1                                           ELSE STAT(64,SIDE)=1
  115. 1150 LOCATE 21,26: PRINT "ACTUAL COST WAS ";COST;" EACH "
  116. 1160 IF SIDE=1 THEN PRINT "MILITARY BUDGET (IN MILLIONS OF DOLLARS)",US.BUDGET
  117. 1170 IF SIDE=2 THEN PRINT "MILITARY BUDGET (IN MILLIONS OF RUBLES)",RED.BUDGET
  118. 1180 GOSUB 1210 'WAIT
  119. 1190 RETURN
  120. 1200 '
  121. 1210 'WAIT FOR REPLY
  122. 1220 '
  123. 1230 LOCATE 25,1: PRINT "HIT ANY KEY TO CONTINUE";
  124. 1240 DEF SEG=0: POKE(1050),PEEK(1052) 'CLEAR K/B BUFFER
  125. 1250 REPLY$=INKEY$: IF REPLY$="" THEN GOTO 1250
  126. 1260 RETURN
  127. 1270 '
  128. 1280 '
  129. 1290 'DRAW RED FLAG
  130. 1300      SCREEN 1: COLOR 0,0: CLS
  131. 1310      PALETTE 1,14
  132. 1320      PALETTE 2,4
  133. 1330      PALETTE 3,7
  134. 1340      DEFINT A-Z
  135. 1350      LINE (20,20)-(300,180),2,BF
  136. 1360 DRAW "DM65,35"
  137. 1370 STAR$="M+7,17 M-17,-12 M+20,0 M-17,12 M+7,-17"
  138. 1380 DRAW "C1;BM-2,0;XSTAR$;"
  139. 1390  DRAW "BD02"
  140. 1400  DRAW "P1,1"
  141. 1410 DRAW "BD08"
  142. 1420 DRAW "P1,1"
  143. 1430 DRAW "BL5;BU3"
  144. 1440 DRAW "P1,1"
  145. 1450 DRAW "BR10"
  146. 1460 DRAW "P1,1"
  147. 1470 DRAW "BD04BL2"
  148. 1480 DRAW "P1,1"
  149. 1490 DRAW "BL07"
  150. 1500 DRAW "P1,1"
  151. 1510     CIRCLE (95,75),30,1,4.1,1.35
  152. 1520     CIRCLE (95,75),29,1,4.1,1.4
  153. 1530     CIRCLE (95,75),28,1,4.1,1.45
  154. 1540     CIRCLE (95,75),27,1,4.1,1.5
  155. 1550     LINE (80,94)-(76,104),1
  156. 1560     LINE (81,94)-(77,104),1
  157. 1570     LINE (82,94)-(78,104),1
  158. 1580     LINE (98,78)-(101,72),1
  159. 1590     LINE (98,79)-(102,71),1
  160. 1600     LINE (98,79)-(103,70),1
  161. 1610     LINE (98,79)-(104,69),1
  162. 1620     LINE (97,77)-(104,69),1
  163. 1630     LINE (100,74)-(140,100),1
  164. 1640     LINE (101,73)-(140,99),1
  165. 1650 SV.TIMER!=TIMER+2
  166. 1660 IF SV.TIMER!>TIMER THEN GOTO 1660
  167. 1670 RETURN
  168. 1680 '
  169. 1690 '
  170. 1700 ' DRAW US FLAG
  171. 1710 '
  172. 1720      SCREEN 1: COLOR 0,0: CLS
  173. 1730      PALETTE 1,4
  174. 1740      PALETTE 2,7
  175. 1750      PALETTE 3,1
  176. 1760      LINE (20,20)-(280,150),1,BF
  177. 1770      LINE (20,20)-(120,80),3,BF
  178. 1780      FOR X=30 TO 70 STEP 20
  179. 1790        LINE (120,X)-(280,X+10),2,BF
  180. 1800     NEXT
  181. 1810     FOR X=90 TO 130 STEP 20
  182. 1820       LINE (20,X)-(280,X+10),2,BF
  183. 1830     NEXT X
  184. 1840     FOR X=25 TO 115 STEP 10
  185. 1850       FOR Y = 25 TO 75 STEP 10
  186. 1860         PSET (X,Y),2
  187. 1870       NEXT Y
  188. 1880     NEXT X
  189. 1890 SV.TIMER!=TIMER+2
  190. 1900 IF SV.TIMER!>TIMER THEN GOTO 1900
  191. 1910 RETURN
  192. 1920 '
  193. 1930 '
  194. 1940 'DRAW ICBM
  195. 1950     DRAW "C=SIDE;"
  196. 1960     DRAW "BM=LCN(X,SIDE,1);,=LCN(X,SIDE,2);"
  197. 1970 DRAW "BR4"       'DRAW A MISSILE
  198. 1980 DRAW "D7 L3 E3 F3 L3"
  199. 1990 RETURN
  200. 2000 '
  201. 2010 'DRAW SUB
  202. 2020     DRAW "C=SIDE;"
  203. 2030     DRAW "BM=LCN(X,SIDE,1);,=LCN(X,SIDE,2);"
  204. 2040 DRAW "BR3 BD3"    'DRAW A SUB
  205. 2050 DRAW "R2 D2 R3 L8 R3 U1"
  206. 2060 RETURN
  207. 2070 '
  208. 2080 '
  209. 2090 DRAW "BR3"    'DRAW AIRBORNE HQ
  210. 2100 DRAW "R1 D3 R3 D1 L3 D3 R1 L3 R1 U3 L3 U1 R3 U3"
  211. 2110 RETURN
  212. 2120 '
  213. 2130 'DRAW CRUISE MISSILE
  214. 2140     DRAW "C=SIDE;"
  215. 2150     DRAW "BM=LCN(X,SIDE,1);,=LCN(X,SIDE,2);"
  216. 2160 DRAW "BD3"  'DRAW A CRUISE MISSILE
  217. 2170 DRAW "R8 U4 G3 L2"
  218. 2180 RETURN
  219. 2190 '
  220. 2200 '
  221. 2210 DRAW "R3 D3 L3 U3" 'DRAW HQ
  222. 2220 RETURN
  223. 2230 '
  224. 2240 'DRAW AIR DEFENSE
  225. 2250     DRAW "C=SIDE;"
  226. 2260     DRAW "BM=LCN(X,SIDE,1);,=LCN(X,SIDE,2);"
  227. 2270 DRAW "BR7"  'DRAW AIR DEFENSE
  228. 2280 DRAW "G7 U3 R3 E3"
  229. 2290 RETURN
  230. 2300 '
  231. 2310 'DRAW A BOMBER
  232. 2320     DRAW "C=SIDE;"
  233. 2330     DRAW "BM=LCN(X,SIDE,1);,=LCN(X,SIDE,2);"
  234. 2340 DRAW "BD4"  'DRAW BOMBER
  235. 2350 DRAW "R2 E4 D3 R1 L1 D3 H3 L2 R7 D1 L8"
  236. 2360 RETURN
  237. 2370 '
  238. 2380 '
  239. 2390 'SYMBOLS USED
  240. 2400    SCREEN 1: COLOR 0,0: CLS
  241. 2410    PALETTE 1,1
  242. 2420    PALETTE 2,4
  243. 2430    PALETTE 3,14
  244. 2440    LOCATE 1,10: PRINT "SYMBOLS USED"
  245. 2450    DRAW "BM 32,16"
  246. 2460    GOSUB 1970 'DRAW MISSILE
  247. 2470    LOCATE 3,7: PRINT "ICBM"
  248. 2480    DRAW "BM 32,32": GOSUB 2040
  249. 2490    LOCATE 5,7: PRINT "BALISTIC SUBMARINE"
  250. 2500    DRAW "BM 32,48": GOSUB 2160
  251. 2510    LOCATE 7,7: PRINT "CRUISE MISSILE"
  252. 2520    DRAW "BM 32,64": GOSUB 2340
  253. 2530    LOCATE 9,7: PRINT "BOMBER"
  254. 2540    DRAW "BM 32,80": GOSUB 2270
  255. 2550    LOCATE 11,7: PRINT "AIR DEFENSE UNIT"
  256. 2560    DRAW "BM 32,96": GOSUB 2090
  257. 2570    LOCATE 13,7: PRINT "AIRBORNE HQ"
  258. 2580    DRAW "BM 32,112": GOSUB 2210
  259. 2590    LOCATE 15,7: PRINT "UNDERGROUND HQ"
  260. 2600    LOCATE 17,7
  261. 2610    PRINT "DUE TO MAP SCALE, A SYMBOL MAY "
  262. 2620    PRINT "REPRESENT SEVERAL CLOSELY SPACED"
  263. 2630    PRINT "UNITS."
  264. 2640    GOSUB 1210 'WAIT
  265. 2650 RETURN
  266. 2660 '
  267. 2670 'LOAD & DRAW MAP
  268. 2680 '
  269. 2690 OPEN "MAP" FOR INPUT AS #1
  270. 2700 CLS
  271. 2710 IF EOF(1) THEN GOTO 2750
  272. 2720 INPUT #1,PH,PV,H,V
  273. 2730 LINE (PH,PV)-(H,V),3
  274. 2740 GOTO 2710
  275. 2750 RETURN
  276. 2760 '
  277. 2770 '
  278. 2780 'DRAW CITIES
  279. 2790  DIM CITY$(24,2)
  280. 2800  DIM POP!(24,2)
  281. 2810  CITY$(1,1)="SEATTLE"
  282. 2820 POP!(1,1)=557087!
  283. 2830  CITY$(2,1)="SAN FRANCISCO"
  284. 2840 POP!(2,1)=742855!
  285. 2850  CITY$(3,1)="LOS ANGELES"
  286. 2860 POP!(3,1)=2479015!
  287. 2870  CITY$(4,1)="SAN DEIGO"
  288. 2880 POP!(4,1)=573224!
  289. 2890  CITY$(5,1)="PORTLAND"
  290. 2900 POP!(5,1)=372676!
  291. 2910  CITY$(6,1)="SALT LAKE CITY"
  292. 2920 POP!(6,1)=184454!
  293. 2930  CITY$(7,1)="EL PASO"
  294. 2940 POP!(7,1)=276687!
  295. 2950  CITY$(8,1)="DENVER"
  296. 2960 POP!(8,1)=493887!
  297. 2970  CITY$(9,1)="DALLAS"
  298. 2980 POP!(9,1)=679684!
  299. 2990  CITY$(10,1)="HOUSTON"
  300. 3000 POP!(10,1)=934219!
  301. 3010  CITY$(11,1)="MINNEAPOLIS"
  302. 3020 POP!(11,1)=482872!
  303. 3030  CITY$(12,1)="DULUTH"
  304. 3040 POP!(12,1)=106884!
  305. 3050  CITY$(13,1)="MILWAUKEE"
  306. 3060 POP!(13,1)=741324!
  307. 3070  CITY$(14,1)="CHICAGO"
  308. 3080 POP!(14,1)=3550404!
  309. 3090  CITY$(15,1)="ST. LOUIS"
  310. 3100 POP!(15,1)=750526!
  311. 3110  CITY$(16,1)="NEW ORLEANS"
  312. 3120 POP!(16,1)=1670144!
  313. 3130  CITY$(17,1)="DETROIT"
  314. 3140 POP!(17,1)=1670144!
  315. 3150  CITY$(18,1)="ATLANTA"
  316. 3160 POP!(18,1)=407600!
  317. 3170  CITY$(19,1)="BOSTON"
  318. 3180 POP!(19,1)=697197!
  319. 3190  CITY$(20,1)="NEW YORK"
  320. 3200 POP!(20,1)=6782304#
  321. 3210  CITY$(21,1)="PHILADELPHIA"
  322. 3220 POP!(21,1)=2002512!
  323. 3230  CITY$(22,1)="WASHINGTON D.C."
  324. 3240 POP!(22,1)=763956!
  325. 3250  CITY$(23,1)="SAVANNAH"
  326. 3260 POP!(23,1)=149245!
  327. 3270  CITY$(24,1)="CLEVELAND"
  328. 3280 POP!(24,1)=2519000!
  329. 3290  CITY$(1,2)="MURMANSK"
  330. 3300 POP!(1,2)=262000!
  331. 3310  CITY$(2,2)="LENINGRAD"
  332. 3320 POP!(2,2)=3636000!
  333. 3330  CITY$(3,2)="RIGA"
  334. 3340 POP!(3,2)=657000!
  335. 3350  CITY$(4,2)="MINSK"
  336. 3360 POP!(4,2)=707000!
  337. 3370  CITY$(5,2)="KIEV"
  338. 3380 POP!(5,2)=1332000!
  339. 3390  CITY$(6,2)="ODESSA"
  340. 3400 POP!(6,2)=735000!
  341. 3410  CITY$(7,2)="MOSCOW"
  342. 3420 POP!(7,2)=6427000!
  343. 3430  CITY$(8,2)="ARCHANGEL"
  344. 3440 POP!(8,2)=256000!
  345. 3450  CITY$(9,2)="KHARKOV"
  346. 3460 POP!(9,2)=1070000!
  347. 3470  CITY$(10,2)="VOLGOGRAD"
  348. 3480 POP!(10,2)=701000!
  349. 3490  CITY$(11,2)="KAMCHATSKIY"
  350. 3500 POP!(11,2)=701000!
  351. 3510  CITY$(12,2)="NIKOLAYEVSK"
  352. 3520 POP!(12,2)=701000!
  353. 3530  CITY$(13,2)="VLADIVOSTOK"
  354. 3540 POP!(13,2)=353000!
  355. 3550  CITY$(14,2)="YAKUTSK"
  356. 3560 POP!(14,2)=74000!
  357. 3570  CITY$(15,2)="IRKUTSK"
  358. 3580 POP!(14,2)=74000!
  359. 3590  CITY$(16,2)="KRASNOYARSK"
  360. 3600 POP!(16,2)=2614000!
  361. 3610  CITY$(17,2)="KHATANGA"
  362. 3620 POP!(17,2)=614000!
  363. 3630  CITY$(18,2)="TOMSK"
  364. 3640 POP!(18,2)=293000!
  365. 3650  CITY$(19,2)="OMSK"
  366. 3660 POP!(19,2)=733000!
  367. 3670  CITY$(20,2)="TSELINOGRAD"
  368. 3680 POP!(20,2)=150000!
  369. 3690  CITY$(21,2)="GORKI"
  370. 3700 POP!(21,2)=150000!
  371. 3710  CITY$(22,2)="KUYBYSHEV"
  372. 3720 POP!(22,2)=942000!
  373. 3730  CITY$(23,2)="DUDINKA"
  374. 3740 POP!(23,2)=942000!
  375. 3750  CITY$(24,2)="NOVOSIBIRSK"
  376. 3760 POP!(24,2)=1013000!
  377. 3770 LCN(83,1,1)=51    :LCN(83,1,2)=74
  378. 3780 LCN(84,1,1)=52    :LCN(84,1,2)=81
  379. 3790 LCN(85,1,1)=53    :LCN(85,1,2)=87
  380. 3800 LCN(86,1,1)=54    :LCN(86,1,2)=89
  381. 3810 LCN(87,1,1)=54    :LCN(87,1,2)=79
  382. 3820 LCN(88,1,1)=60    :LCN(88,1,2)=83
  383. 3830 LCN(89,1,1)=64    :LCN(89,1,2)=89
  384. 3840 LCN(90,1,1)=70    :LCN(90,1,2)=81
  385. 3850 LCN(91,1,1)=74    :LCN(91,1,2)=90
  386. 3860 LCN(92,1,1)=76    :LCN(92,1,2)=92
  387. 3870 LCN(93,1,1)=78    :LCN(93,1,2)=76
  388. 3880 LCN(94,1,1)=81    :LCN(94,1,2)=74
  389. 3890 LCN(95,1,1)=83    :LCN(95,1,2)=79
  390. 3900 LCN(96,1,1)=83    :LCN(96,1,2)=80
  391. 3910 LCN(97,1,1)=81    :LCN(97,1,2)=82
  392. 3920 LCN(98,1,1)=80    :LCN(98,1,2)=93
  393. 3930 LCN(99,1,1)=88    :LCN(99,1,2)=79
  394. 3940 LCN(100,1,1)=88    :LCN(100,1,2)=88
  395. 3950 LCN(101,1,1)=99    :LCN(101,1,2)=79
  396. 3960 LCN(102,1,1)=102   :LCN(102,1,2)=76
  397. 3970 LCN(103,1,1)=101   :LCN(103,1,2)=75
  398. 3980 LCN(104,1,1)=95    :LCN(104,1,2)=85
  399. 3990 LCN(105,1,1)=90    :LCN(105,1,2)=92
  400. 4000 LCN(106,1,1)=93    :LCN(106,1,2)=76
  401. 4010 LCN(83,2,1)=194   :LCN(83,2,2)=40
  402. 4020 LCN(84,2,1)=193   :LCN(84,2,2)=54
  403. 4030 LCN(85,2,1)=185   :LCN(85,2,2)=57
  404. 4040 LCN(86,2,1)=194   :LCN(86,2,2)=60
  405. 4050 LCN(87,2,1)=196   :LCN(87,2,2)=64
  406. 4060 LCN(88,2,1)=183   :LCN(88,2,2)=69
  407. 4070 LCN(89,2,1)=198   :LCN(89,2,2)=58
  408. 4080 LCN(90,2,1)=200   :LCN(90,2,2)=42
  409. 4090 LCN(91,2,1)=196   :LCN(91,2,2)=65
  410. 4100 LCN(92,2,1)=204   :LCN(92,2,2)=67
  411. 4110 LCN(93,2,1)=306   :LCN(93,2,2)=63
  412. 4120 LCN(94,2,1)=281   :LCN(94,2,2)=63
  413. 4130 LCN(95,2,1)=282   :LCN(95,2,2)=77
  414. 4140 LCN(96,2,1)=278   :LCN(96,2,2)=48
  415. 4150 LCN(97,2,1)=250   :LCN(97,2,2)=60
  416. 4160 LCN(98,2,1)=230   :LCN(98,2,2)=55
  417. 4170 LCN(99,2,1)=256   :LCN(99,2,2)=34
  418. 4180 LCN(100,2,1)=239   :LCN(100,2,2)=55
  419. 4190 LCN(101,2,1)=226   :LCN(101,2,2)=59
  420. 4200 LCN(102,2,1)=223   :LCN(102,2,2)=63
  421. 4210 LCN(103,2,1)=210   :LCN(103,2,2)=60
  422. 4220 LCN(104,2,1)=214   :LCN(104,2,2)=67
  423. 4230 LCN(105,2,1)=236   :LCN(105,2,2)=34
  424. 4240 LCN(106,2,1)=237   :LCN(106,2,2)=58
  425. 4250 FOR SIDE = 1 TO 2
  426. 4260   FOR X=1 TO 24
  427. 4270    Y=X+82
  428. 4280     PSET (LCN(Y,SIDE,1),LCN(Y,SIDE,2)),SIDE
  429. 4290   NEXT X
  430. 4300 NEXT SIDE
  431. 4310 RETURN
  432. 4320 '
  433. 4330 '
  434. 4340 'PLACE SYMBOLS ON MAP
  435. 4350 '
  436. 4360 'SUBS
  437. 4370 LCN(1,1,1)=300: LCN(1,1,2)=84
  438. 4380 LCN(2,1,1)=300: LCN(2,1,2)=84
  439. 4390 LCN(3,1,1)=300: LCN(3,1,2)=84
  440. 4400 LCN(4,1,1)=300: LCN(4,1,2)=84
  441. 4410 LCN(5,1,1)=300: LCN(5,1,2)=84
  442. 4420 LCN(6,1,1)=300: LCN(6,1,2)=84
  443. 4430 LCN(7,1,1)=300: LCN(7,1,2)=84
  444. 4440 LCN(8,1,1)=300: LCN(8,1,2)=84
  445. 4450 LCN(9,1,1)=170: LCN(9,1,2)=20
  446. 4460 LCN(10,1,1)=170: LCN(10,1,2)=20
  447. 4470 LCN(11,1,1)=170: LCN(11,1,2)=20
  448. 4480 LCN(12,1,1)=170: LCN(12,1,2)=20
  449. 4490 LCN(13,1,1)=170: LCN(13,1,2)=20
  450. 4500 LCN(14,1,1)=170: LCN(14,1,2)=20
  451. 4510 LCN(15,1,1)=170: LCN(15,1,2)=20
  452. 4520 LCN(16,1,1)=170: LCN(16,1,2)=20
  453. 4530 LCN(1,2,1)=32:  LCN(1,2,2)=76
  454. 4540 LCN(2,2,1)=32:  LCN(2,2,2)=76
  455. 4550 LCN(3,2,1)=32:  LCN(3,2,2)=76
  456. 4560 LCN(4,2,1)=32:  LCN(4,2,2)=76
  457. 4570 LCN(5,2,1)=32:  LCN(5,2,2)=76
  458. 4580 LCN(6,2,1)=32:  LCN(6,2,2)=76
  459. 4590 LCN(7,2,1)=32:  LCN(7,2,2)=76
  460. 4600 LCN(8,2,1)=32:  LCN(8,2,2)=76
  461. 4610 LCN(9,2,1)=112: LCN(9,2,2)=82
  462. 4620 LCN(10,2,1)=112: LCN(10,2,2)=82
  463. 4630 LCN(11,2,1)=112: LCN(11,2,2)=82
  464. 4640 LCN(12,2,1)=112: LCN(12,2,2)=82
  465. 4650 LCN(13,2,1)=112: LCN(13,2,2)=82
  466. 4660 LCN(14,2,1)=112: LCN(14,2,2)=82
  467. 4670 LCN(15,2,1)=112: LCN(15,2,2)=82
  468. 4680 LCN(16,2,1)=112: LCN(16,2,2)=82
  469. 4690 FOR SIDE = 1 TO 2
  470. 4700   IF WEAPONS (1,SIDE)>0 THEN X=1: GOSUB 2010
  471. 4710   IF WEAPONS (1,SIDE)=2 THEN X=9: GOSUB 2010
  472. 4720 NEXT SIDE
  473. 4730 'ICBM
  474. 4740 LCN(17,1,1)=62:  LCN(17,1,2)=64
  475. 4750 LCN(18,1,1)=62:  LCN(18,1,2)=64
  476. 4760 LCN(19,1,1)=62:  LCN(19,1,2)=64
  477. 4770 LCN(20,1,1)=62:  LCN(20,1,2)=64
  478. 4780 LCN(21,1,1)=62:  LCN(21,1,2)=72
  479. 4790 LCN(22,1,1)=62:  LCN(22,1,2)=72
  480. 4800 LCN(23,1,1)=62:  LCN(23,1,2)=72
  481. 4810 LCN(24,1,1)=62:  LCN(24,1,2)=72
  482. 4820 LCN(25,1,1)=80:  LCN(25,1,2)=80
  483. 4830 LCN(26,1,1)=80: LCN(26,1,2)=80
  484. 4840 LCN(27,1,1)=80: LCN(27,1,2)=80
  485. 4850 LCN(28,1,1)=80: LCN(28,1,2)=80
  486. 4860 LCN(17,2,1)=250: LCN(17,2,2)=70
  487. 4870 LCN(18,2,1)=250: LCN(18,2,2)=70
  488. 4880 LCN(19,2,1)=250: LCN(19,2,2)=70
  489. 4890 LCN(20,2,1)=250: LCN(20,2,2)=70
  490. 4900 LCN(21,2,1)=240: LCN(21,2,2)=70
  491. 4910 LCN(22,2,1)=240: LCN(22,2,2)=70
  492. 4920 LCN(23,2,1)=240: LCN(23,2,2)=70
  493. 4930 LCN(24,2,1)=240: LCN(24,2,2)=70
  494. 4940 LCN(25,2,1)=290: LCN(25,2,2)=40
  495. 4950 LCN(26,2,1)=290: LCN(26,2,2)=40
  496. 4960 LCN(27,2,1)=290: LCN(27,2,2)=40
  497. 4970 LCN(28,2,1)=290: LCN(28,2,2)=40
  498. 4980 FOR SIDE = 1 TO 2
  499. 4990   IF WEAPONS (2,SIDE)>0 THEN X=17: GOSUB 1940
  500. 5000   IF WEAPONS (2,SIDE)>4 THEN X=21: GOSUB 1940
  501. 5010   IF WEAPONS (2,SIDE)>8 THEN X=25: GOSUB 1940
  502. 5020 NEXT SIDE
  503. 5030 'BOMBERS
  504. 5040 LCN(49,1,1)=20:  LCN(49,1,2)=42
  505. 5050 LCN(50,1,1)=20:  LCN(50,1,2)=42
  506. 5060 LCN(51,1,1)=20:  LCN(51,1,2)=42
  507. 5070 LCN(52,1,1)=20:  LCN(52,1,2)=42
  508. 5080 LCN(53,1,1)=20:  LCN(53,1,2)=42
  509. 5090 LCN(54,1,1)=20:  LCN(54,1,2)=42
  510. 5100 LCN(55,1,1)=170: LCN(55,1,2)=45
  511. 5110 LCN(56,1,1)=170: LCN(56,1,2)=66
  512. 5120 LCN(57,1,1)=170: LCN(57,1,2)=66
  513. 5130 LCN(58,1,1)=170: LCN(58,1,2)=66
  514. 5140 LCN(59,1,1)=170: LCN(59,1,2)=66
  515. 5150 LCN(60,1,1)=170: LCN(60,1,2)=66
  516. 5160 LCN(49,2,1)=212: LCN(49,2,2)=50
  517. 5170 LCN(50,2,1)=212: LCN(50,2,2)=50
  518. 5180 LCN(51,2,1)=212: LCN(51,2,2)=50
  519. 5190 LCN(52,2,1)=212: LCN(52,2,2)=50
  520. 5200 LCN(53,2,1)=212: LCN(53,2,2)=50
  521. 5210 LCN(54,2,1)=212: LCN(54,2,2)=50
  522. 5220 LCN(55,2,1)=305: LCN(55,2,2)=36
  523. 5230 LCN(56,2,1)=305: LCN(56,2,2)=36
  524. 5240 LCN(57,2,1)=305: LCN(57,2,2)=36
  525. 5250 LCN(58,2,1)=305: LCN(58,2,2)=36
  526. 5260 LCN(59,2,1)=305: LCN(59,2,2)=36
  527. 5270 LCN(60,2,1)=305: LCN(60,2,2)=36
  528. 5280 FOR SIDE = 1 TO 2
  529. 5290   IF WEAPONS (4,SIDE)>0 THEN X=49: GOSUB 2310
  530. 5300   IF WEAPONS (4,SIDE)>6 THEN X=55: GOSUB 2310
  531. 5310 NEXT SIDE
  532. 5320 'HQ
  533. 5330 LCN(63,1,1)=64: LCN(63,1,2)=80
  534. 5340 LCN(64,1,1)=88: LCN(64,1,2)=80
  535. 5350 LCN(63,2,1)=192: LCN(63,2,2)=56
  536. 5360 LCN(64,2,1)=232: LCN(64,2,2)=48
  537. 5370 FOR X = 1 TO 2
  538. 5380   FOR SIDE = 1 TO 2
  539. 5390     IF X > WEAPONS(6,SIDE) THEN GOTO 5440
  540. 5400     DRAW "C=SIDE;"
  541. 5410     Y=X+62
  542. 5420     DRAW "BM=LCN(Y,SIDE,1);,=LCN(Y,SIDE,2);"
  543. 5430     GOSUB 2210
  544. 5440   NEXT SIDE
  545. 5450 NEXT
  546. 5460 'CRUISE MIS
  547. 5470 LCN(29,1,1)=20:  LCN(29,1,2)=50
  548. 5480 LCN(30,1,1)=20:  LCN(30,1,2)=50
  549. 5490 LCN(31,1,1)=20:  LCN(31,1,2)=50
  550. 5500 LCN(32,1,1)=20:  LCN(32,1,2)=50
  551. 5510 LCN(33,1,1)=20:  LCN(33,1,2)=50
  552. 5520 LCN(34,1,1)=20:  LCN(34,1,2)=50
  553. 5530 LCN(35,1,1)=20:  LCN(35,1,2)=50
  554. 5540 LCN(36,1,1)=20:  LCN(36,1,2)=50
  555. 5550 LCN(37,1,1)=20:  LCN(37,1,2)=50
  556. 5560 LCN(38,1,1)=20:  LCN(38,1,2)=50
  557. 5570 LCN(39,1,1)=184: LCN(39,1,2)=40
  558. 5580 LCN(40,1,1)=184: LCN(40,1,2)=40
  559. 5590 LCN(41,1,1)=184: LCN(41,1,2)=40
  560. 5600 LCN(42,1,1)=184: LCN(42,1,2)=40
  561. 5610 LCN(43,1,1)=184: LCN(43,1,2)=40
  562. 5620 LCN(44,1,1)=184: LCN(44,1,2)=40
  563. 5630 LCN(45,1,1)=184: LCN(45,1,2)=40
  564. 5640 LCN(46,1,1)=184: LCN(46,1,2)=40
  565. 5650 LCN(47,1,1)=184: LCN(47,1,2)=40
  566. 5660 LCN(48,1,1)=184: LCN(48,1,2)=40
  567. 5670 LCN(29,2,1)=290: LCN(29,2,2)=32
  568. 5680 LCN(30,2,1)=290: LCN(30,2,2)=32
  569. 5690 LCN(31,2,1)=290: LCN(31,2,2)=32
  570. 5700 LCN(32,2,1)=290: LCN(32,2,2)=32
  571. 5710 LCN(33,2,1)=290: LCN(33,2,2)=32
  572. 5720 LCN(34,2,1)=290: LCN(34,2,2)=32
  573. 5730 LCN(35,2,1)=290: LCN(35,2,2)=32
  574. 5740 LCN(36,2,1)=290: LCN(36,2,2)=32
  575. 5750 LCN(37,2,1)=290: LCN(37,2,2)=32
  576. 5760 LCN(38,2,1)=290: LCN(38,2,2)=32
  577. 5770 LCN(39,2,1)=203: LCN(39,2,2)=44
  578. 5780 LCN(40,2,1)=203: LCN(40,2,2)=44
  579. 5790 LCN(41,2,1)=203: LCN(41,2,2)=44
  580. 5800 LCN(42,2,1)=203: LCN(42,2,2)=44
  581. 5810 LCN(43,2,1)=203: LCN(43,2,2)=44
  582. 5820 LCN(44,2,1)=203: LCN(44,2,2)=44
  583. 5830 LCN(45,2,1)=203: LCN(45,2,2)=44
  584. 5840 LCN(46,2,1)=203: LCN(46,2,2)=44
  585. 5850 LCN(47,2,1)=203: LCN(47,2,2)=44
  586. 5860 LCN(48,2,1)=203: LCN(48,2,2)=44
  587. 5870 FOR SIDE = 1 TO 2
  588. 5880   IF WEAPONS (3,SIDE)>0 THEN X=29: GOSUB 2130
  589. 5890   IF WEAPONS (3,SIDE)>10 THEN X=39: GOSUB 2130
  590. 5900 NEXT SIDE
  591. 5910 'AIRBOURNE HQ
  592. 5920 LCN(61,1,1)=80: LCN(61,1,2)=64
  593. 5930 LCN(62,1,1)=100: LCN(62,1,2)=80
  594. 5940 LCN(61,2,1)=210: LCN(61,2,2)=70
  595. 5950 LCN(62,2,1)=260: LCN(62,2,2)=40
  596. 5960 FOR X = 1 TO 2
  597. 5970   FOR SIDE = 1 TO 2
  598. 5980     IF X > WEAPONS(5,SIDE) THEN GOTO 6030
  599. 5990     DRAW "C=SIDE;"
  600. 6000     Y=X+60
  601. 6010     DRAW "BM=LCN(Y,SIDE,1);,=LCN(Y,SIDE,2);"
  602. 6020     GOSUB 2090
  603. 6030   NEXT SIDE
  604. 6040 NEXT
  605. 6050 'AIR DEF
  606. 6060 LCN(65,1,1)=50:  LCN(65,1,2)=60
  607. 6070 LCN(66,1,1)=50:  LCN(66,1,2)=60
  608. 6080 LCN(67,1,1)=50:  LCN(67,1,2)=60
  609. 6090 LCN(68,1,1)=50:  LCN(68,1,2)=60
  610. 6100 LCN(69,1,1)=50:  LCN(69,1,2)=60
  611. 6110 LCN(70,1,1)=50:  LCN(70,1,2)=60
  612. 6120 LCN(71,1,1)=50:  LCN(71,1,2)=60
  613. 6130 LCN(72,1,1)=50:  LCN(72,1,2)=60
  614. 6140 LCN(73,1,1)=50:  LCN(73,1,2)=60
  615. 6150 LCN(74,1,1)=100: LCN(74,1,2)=60
  616. 6160 LCN(75,1,1)=100: LCN(75,1,2)=60
  617. 6170 LCN(76,1,1)=100: LCN(76,1,2)=60
  618. 6180 LCN(77,1,1)=100: LCN(77,1,2)=60
  619. 6190 LCN(78,1,1)=100: LCN(78,1,2)=60
  620. 6200 LCN(79,1,1)=100: LCN(79,1,2)=60
  621. 6210 LCN(80,1,1)=100: LCN(80,1,2)=60
  622. 6220  MH=LCN(X,ENEMY,1)-INT(ABS(LCN(X,ENEMY,1)-TGT(X,ENEMY,1))*F!)
  623. 6230 LCN(82,1,1)=100: LCN(82,1,2)=60
  624. 6240 LCN(65,2,1)=310: LCN(65,2,2)=38
  625. 6250 LCN(66,2,1)=310: LCN(66,2,2)=38
  626. 6260 LCN(67,2,1)=310: LCN(67,2,2)=38
  627. 6270 LCN(68,2,1)=310: LCN(68,2,2)=38
  628. 6280 LCN(69,2,1)=310: LCN(69,2,2)=38
  629. 6290 LCN(70,2,1)=310: LCN(70,2,2)=38
  630. 6300 LCN(71,2,1)=310: LCN(71,2,2)=38
  631. 6310 LCN(72,2,1)=310: LCN(72,2,2)=38
  632. 6320 LCN(73,2,1)=310: LCN(73,2,2)=38
  633. 6330 LCN(74,2,1)=180: LCN(74,2,2)=62
  634. 6340 LCN(75,2,1)=180: LCN(75,2,2)=62
  635. 6350 LCN(76,2,1)=180: LCN(76,2,2)=62
  636. 6360 LCN(77,2,1)=180: LCN(77,2,2)=62
  637. 6370 LCN(78,2,1)=180: LCN(78,2,2)=62
  638. 6380 LCN(79,2,1)=180: LCN(79,2,2)=62
  639. 6390 LCN(80,2,1)=180: LCN(80,2,2)=62
  640. 6400 LCN(81,2,1)=180: LCN(81,2,2)=62
  641. 6410 LCN(82,2,1)=180: LCN(82,2,2)=62
  642. 6420 FOR SIDE = 1 TO 2
  643. 6430   IF WEAPONS (7,SIDE)>0 THEN X=65: GOSUB 2240
  644. 6440   IF WEAPONS (7,SIDE)>9 THEN X=74: GOSUB 2240
  645. 6450 NEXT SIDE
  646. 6460 RETURN
  647. 6470 '
  648. 6480 'DISPLAY COMMANDS
  649. 6490    CLS
  650. 6500 PRINT "             COMMANDS": PRINT
  651. 6510 PRINT "1. LAUNCH SUBMARINE MISSILES"
  652. 6520 PRINT "2. LAUNCH ICBM'S"
  653. 6530 PRINT "3. LAUNCH CRUISE MISSILES"
  654. 6540 PRINT "4. LAUNCH BOMBERS"
  655. 6550 PRINT "5. LAUNCH AIRBORNE HQ"
  656. 6560 PRINT "6. HELP"
  657. 6570 PRINT "7. STATUS"
  658. 6575 PRINT "8. PASS TURN"
  659. 6580 PRINT "9. QUIT"
  660. 6590 PRINT
  661. 6600 PRINT "             TARGETS": PRINT
  662. 6610 PRINT "2. ENEMY ICBMS"
  663. 6620 PRINT "4. ENEMY BOMBER BASES"
  664. 6630 PRINT "5. ENEMY AIRBORNE HQ BASES"
  665. 6640 PRINT "6. EMENY UNDERGROUND HQ"
  666. 6650 PRINT "7. ENEMY AIR DEFENSE"
  667. 6660 PRINT "8. ENEMY CITIES"
  668. 6670 GOSUB 1210 'WAIT
  669. 6680 RETURN
  670. 6690 '
  671. 6700 'PLAYERS TURN
  672. 6710 '
  673. 6720 A=0
  674. 6730 IF SIDE=1 THEN ENEMY=2 ELSE ENEMY=1
  675. 6740 GOSUB 7480 'LAUNCH DETECTED
  676. 6750 GOSUB 7850
  677. 6760 IF SIDE=1 THEN MSG$="USA" ELSE MSG$="SOVIET"
  678. 6770 LOCATE 25,1: PRINT SPACE$(39);
  679. 6780 LOCATE 25,1: PRINT MSG$;
  680. 6790 GOSUB 7340 'GET A COMMAND
  681. 6795 IF COMD=8 THEN GOTO 7320 'PASS TURN
  682. 6800 IF COMD=6 THEN GET (0,0)-(319,199),SV: GOSUB 6480: PUT (0,0),SV,PSET:             GOTO 6790 'HELP
  683. 6810 IF COMD=7 THEN GET (0,0)-(319,199),SV: GOSUB 9200: GOSUB 1210: SCREEN 1: COLOR 0,0: CLS: PALETTE 1,1: PALETTE 2,4: PALETTE 3,14: PUT (0,0),SV,PSET:               GOTO 6790 'STATUS
  684. 6820 IF COMD=9 THEN GOTO 9300 'QUIT
  685. 6830 IF COMD<1 OR COMD>5 THEN GOSUB 7430: GOTO 6790
  686. 6840 LOCATE 25,1: PRINT SPACE$(39);
  687. 6850 W=COMD 'SAVE WEAPON
  688. 6860 LOCATE 25,1: PRINT "HOW MANY ";W.NAME$(W);
  689. 6870 GOSUB 7340
  690. 6880 'CALC PROBABILITY OF SUCESSFUL LAUNCH
  691. 6890 HQ=0
  692. 6900 FOR X=61 TO 64
  693. 6910   IF STAT(X,SIDE)>0 AND STAT(X,SIDE)<999 THEN HQ=HQ+1
  694. 6920 NEXT
  695. 6930 IF HQ<1 THEN PROB!=.1: GOTO 6970 'NO HQ REMAINING
  696. 6940 O.FACT!=(INT(RND*10)+90+HQ)/100 'PROB OF ORDERS RECEIVED
  697. 6950 L.FACT!=(INT(RND*10)+90)/100 'PROB OF SUCESSFUL LAUNCH
  698. 6960 PROB!=O.FACT!*L.FACT!
  699. 6970 IF COMD>WEAPONS(W,SIDE) THEN NBR=WEAPONS(W,SIDE) ELSE NBR=COMD 'SAVE HOW MANY
  700. 6980 WEAPONS(W,SIDE)=WEAPONS(W,SIDE)-NBR
  701. 6990 NBR.L=0
  702. 7000 FOR PP = 1 TO NBR
  703. 7010   LAUNCH!=RND
  704. 7020   IF LAUNCH! < PROB! THEN NBR.L=NBR.L+1
  705. 7030 NEXT
  706. 7040 ENEMY.W=W: ENEMY.L=NBR.L
  707. 7050 IF W<>5 THEN GOTO 7120
  708. 7060 IF NBR.L = 0 THEN GOTO 7170
  709. 7070 IF STAT(61,SIDE)=0 THEN STAT(61,SIDE)=1: GOTO 7080
  710. 7080 IF STAT(62,SIDE)=0 THEN STAT(62,SIDE)=1
  711. 7090 IF NBR.L <> 2 THEN GOTO 7110
  712. 7100 IF STAT(62,SIDE)=0 THEN STAT(62,SIDE)=1
  713. 7110 GOTO 7170 'HQ
  714. 7120 LOCATE 25,1: PRINT SPACE$(39);
  715. 7130 LOCATE 25,1: PRINT "WHAT TARGET?";
  716. 7140 GOSUB 7340
  717. 7150 IF COMD<2 OR COMD>8 OR COMD=3 THEN GOSUB 7430: GOTO 7140 'INVALID TARGET
  718. 7160 T=COMD 'SAVE TARGET
  719. 7170 IF W=1 THEN NBR.L=NBR.L*8
  720. 7180 MSG$=STR$(NBR.L)
  721. 7190 MSG$=MSG$+" LAUNCHED"
  722. 7200 LOCATE 25,1: PRINT SPACE$(39);
  723. 7210 LOCATE 25,1: PRINT MSG$;
  724. 7220 SV.TIMER!=TIMER+2
  725. 7230 FOR X = 1 TO NBR.L       'FIND A WEAPON TO LAUNCH
  726. 7240    FOR Y = RANGE(W,1) TO RANGE(W,2)
  727. 7250            IF STAT(Y,SIDE)<> 0 GOTO 7290
  728. 7260            STAT(Y,SIDE)=1
  729. 7270            IF W <> 5 THEN GOSUB 7670 'GET A TARGET
  730. 7280            GOTO 7300
  731. 7290    NEXT Y
  732. 7300 NEXT X
  733. 7310 IF TIMER<SV.TIMER! THEN GOTO 7310
  734. 7320 RETURN
  735. 7330 '
  736. 7340 'GET A COMMAND
  737. 7350 '
  738. 7360 DEF SEG=0: POKE 1050,PEEK(1052) 'CLEAR KEYBOARD BUFFER
  739. 7370 REPLY$=INKEY$: IF REPLY$="" THEN GOTO 7370
  740. 7380 IF REPLY$="H" THEN REPLY$="6"
  741. 7390 COMD=VAL(REPLY$)
  742. 7400 IF COMD=0 THEN GOTO 7370 'INVALID REPLY
  743. 7410 RETURN
  744. 7420 '
  745. 7430 'INVALID REPLY
  746. 7440 '
  747. 7450 LOCATE 25,1: PRINT "INVALID COMMAND";
  748. 7460 RETURN
  749. 7470 '
  750. 7480 'ENEMY LAUNCH DETECTED
  751. 7490 '
  752. 7500 MSG$=""
  753. 7510 LOCATE 25,1: PRINT SPACE$(39);
  754. 7520 FOR X = 1 TO 60
  755. 7530   IF X < 29 AND STAT(X,ENEMY)=1 THEN GOSUB 7930: LOCATE 25,1: PRINT "ENEMY LAUNCH DETECTED";: CIRCLE (LCN(X,ENEMY,1)+4,LCN(X,ENEMY,2)+4),4,ENEMY: GOTO 7570
  756. 7540   IF X<29 THEN GOTO 7570
  757. 7550   IF STAT(X,ENEMY)<4 OR  STAT(X,ENEMY)>8 THEN GOTO 7570
  758. 7560   GOSUB 8800 'FLIGHT PATH
  759. 7570   IF X<17 AND STAT(X,ENEMY)=2 THEN GOSUB 8040: GOTO 7640
  760. 7580   IF X<29 AND STAT(X,ENEMY)=4 THEN GOSUB 8040: GOTO 7640
  761. 7590   IF STAT(X,ENEMY) <> 8 THEN GOTO 7640
  762. 7600   CIRCLE (TGT(X,ENEMY,1),TGT(X,ENEMY,2)),4,3
  763. 7610   PSET (TGT(X,ENEMY,1),TGT(X,ENEMY,2)),0
  764. 7620   PAINT (TGT(X,ENEMY,1),TGT(X,ENEMY,2)),3,3
  765. 7630   GOSUB 8590 'FLASH
  766. 7640 NEXT X
  767. 7650 RETURN
  768. 7660 '
  769. 7670 'FIND A TARGET
  770. 7680 '
  771. 7690 FOR S=RANGE(T,1) TO RANGE(T,2)
  772. 7700   IF T.STAT(S,ENEMY) <> 1 GOTO 7750
  773. 7710   TGT(Y,SIDE,1)=LCN(S,ENEMY,1)
  774. 7720   TGT(Y,SIDE,2)=LCN(S,ENEMY,2)
  775. 7730   T.STAT(S,ENEMY)=2: TGT(Y,SIDE,3)=S
  776. 7740   GOTO 7830
  777. 7750 NEXT S
  778. 7760 FOR S=RANGE(T,1) TO RANGE(T,2)
  779. 7770   IF T.STAT(S,ENEMY) <> 2 GOTO 7820
  780. 7780   TGT(Y,SIDE,1)=LCN(S,ENEMY,1)
  781. 7790   TGT(Y,SIDE,2)=LCN(S,ENEMY,2)
  782. 7800   T.STAT(S,ENEMY)=2: TGT(Y,SIDE,3)=S
  783. 7810   GOTO 7830
  784. 7820 NEXT S
  785. 7830 RETURN
  786. 7840 '
  787. 7850 'UPDATE WEAPON FLIGHT
  788. 7860 '
  789. 7870 FOR X=1 TO 60
  790. 7880   IF STAT(X,SIDE) > 0 AND STAT(X,SIDE) < 999 THEN STAT(X,SIDE)=STAT(X,SIDE)+1
  791. 7890 NEXT X
  792. 7900 RETURN
  793. 7910 '
  794. 7920 '
  795. 7930 'SOUND ALARM
  796. 7940  IF A>0 THEN GOTO 8020
  797. 7950  A=1
  798. 7960 FOR S = 1 TO 5
  799. 7970   SOUND 500,12
  800. 7980   SOUND 32000,4
  801. 7990   SOUND 650,7
  802. 8000   SOUND 32000,4
  803. 8010 NEXT
  804. 8020 RETURN
  805. 8030 '
  806. 8040 'MISSILE FLIGHT
  807. 8050 '
  808. 8060   PI=3.141593
  809. 8070 IF LCN(X,ENEMY,1) < TGT(X,ENEMY,1) THEN AH=LCN(X,ENEMY,1): AV=LCN(X,ENEMY,2)
  810. 8080 IF LCN(X,ENEMY,1) < TGT(X,ENEMY,1) THEN CH=TGT(X,ENEMY,1): CV=TGT(X,ENEMY,2)
  811. 8090 IF LCN(X,ENEMY,1) > TGT(X,ENEMY,1) THEN AH=TGT(X,ENEMY,1): AV=TGT(X,ENEMY,2)
  812. 8100 IF LCN(X,ENEMY,1) > TGT(X,ENEMY,1) THEN CH=LCN(X,ENEMY,1): CV=LCN(X,ENEMY,2)
  813. 8110  IF AH<CH AND AV>CV THEN GOTO 8130
  814. 8120  IF AH<CH AND AV<CV THEN GOTO 8270
  815. 8130 BH=CH: BV=AV
  816. 8140 MH=INT((CH-AH)/2)+AH
  817. 8150 MV=INT((AV-CV)/2)+CV
  818. 8160 AB=CH-AH: BC=AV-CV
  819. 8170 R=INT(SQR(AB^2+BC^2)/2)
  820. 8180 STRT=TAN(BC/(R+R))
  821. 8190 FIN=STRT+PI
  822. 8200 CIRCLE (MH,MV),R,3,STRT,FIN
  823. 8210 CIRCLE (TGT(X,ENEMY,1),TGT(X,ENEMY,2)),4,3
  824. 8220 PSET (TGT(X,ENEMY,1),TGT(X,ENEMY,2)),0
  825. 8230 PAINT (TGT(X,ENEMY,1),TGT(X,ENEMY,2)),3,3
  826. 8240 GOSUB 8590 'FLASH
  827. 8250 GOTO 8390
  828. 8260 '
  829. 8270 MH=INT((CH-AH)/2)+AH
  830. 8280 MV=INT((AV-CV)/2)+CV
  831. 8290 AB=CH-AH: BC=AV-CV
  832. 8300 R=INT(SQR(AB^2+BC^2)/2)
  833. 8310 STRT=TAN(BC/(R+R))
  834. 8320 FIN=STRT+PI
  835. 8330 STRT=(2*PI)+STRT
  836. 8340 CIRCLE (MH,MV),R,3,STRT,FIN
  837. 8350 CIRCLE (TGT(X,ENEMY,1),TGT(X,ENEMY,2)),4,3
  838. 8360 PSET (TGT(X,ENEMY,1),TGT(X,ENEMY,2)),0
  839. 8370 PAINT (TGT(X,ENEMY,1),TGT(X,ENEMY,2)),3,3
  840. 8380 GOSUB 8590 'FLASH
  841. 8390 RETURN
  842. 8400 '
  843. 8410 'TITLE
  844. 8420 SCREEN 1: COLOR 0,0: CLS
  845. 8430 PALETTE 1,1: PALETTE 2,4: PALETTE 3,14
  846. 8440 CIRCLE (164,170),29,3,-6.283186,-3.141593
  847. 8450 PAINT (164,168),3,3
  848. 8460 COLOR 14,0
  849. 8470 COLOR 0,0
  850. 8480 PALETTE 1,1: PALETTE 2,4: PALETTE 3,14
  851. 8490 LINE (149,40)-(179,170),3,BF
  852. 8500 CIRCLE (164,20),150,3,,,5/36
  853. 8510 PAINT (164,20),3,3
  854. 8520 LOCATE 7,19: PRINT "GLOBAL"
  855. 8530 LOCATE 9,15: PRINT "THERMONUCLEAR"
  856. 8540 LOCATE 11,20: PRINT "WAR"
  857. 8550 SV.TIMER!=TIMER+6
  858. 8560 IF TIMER<SV.TIMER! THEN GOTO 8560
  859. 8570 RETURN
  860. 8580 '
  861. 8590 'SAVE,FLASH,RESTORE
  862. 8600 GET (0,0)-(319,199),SV
  863. 8610 COLOR 14,0
  864. 8620 COLOR 0,0
  865. 8630 PALETTE 1,1: PALETTE 2,4: PALETTE 3,14
  866. 8640 PUT (0,0),SV,PSET
  867. 8650   STAT(X,ENEMY)=999
  868. 8660   H.FACT=INT(RND*9)+1
  869. 8670    IF TGT(X,ENEMY,3) < 48 OR TGT(X,ENEMY,3) = 63 OR TGT(X,ENEMY,3)=64                 THEN GOTO 8680 ELSE GOTO 8700
  870. 8680    IF X > 16 THEN GOTO 8700
  871. 8690    H.FACT=H.FACT-8
  872. 8700    IF (TGT(X,ENEMY,3) = 63 OR TGT(X,ENEMY,3)=64) AND STAT(TGT(X,ENEMY,3),SIDE)<999 THEN GOTO 8720
  873. 8710    IF STAT(TGT(X,ENEMY,3),SIDE) > 0 THEN GOTO 8790
  874. 8720   IF H.FACT < 2 THEN GOTO 8790
  875. 8730 IF TGT(X,ENEMY,3) > 83 THEN GOSUB 9380: GOTO 8780 'CITY
  876. 8740 FOR PP = 1 TO 7
  877. 8750   IF TGT(X,ENEMY,3) > RANGE(PP,2) THEN GOTO 8770
  878. 8760   IF STAT(TGT(X,ENEMY,3),SIDE)=0 THEN WEAPONS(PP,SIDE)=WEAPONS(PP,SIDE)-1:        LOCATE 25,1: PRINT W.NAME$(PP);: GOTO 8790
  879. 8770 NEXT
  880. 8780   STAT(TGT(X,ENEMY,3),SIDE)=999
  881. 8790 RETURN
  882. 8800 'FLIGHT OF BOMBERS AND CRUISE MISSILES
  883. 8810   LOCATE 25,1: PRINT SPACE$(39);
  884. 8820   IF X<49 THEN MSG$="ENEMY CRUISE MISSILE" ELSE MSG$="ENEMY BOMBERS"
  885. 8830   LOCATE 25,1: PRINT MSG$;
  886. 8840   GOSUB 7930
  887. 8850   IF LCN(X,ENEMY,1) > TGT(X,ENEMY,1) THEN GOSUB 9110: GOTO 8880
  888. 8860   GOSUB 9020
  889. 8870   SV.TIMER!=TIMER+1
  890. 8880   FOR AD = 65 TO 82
  891. 8890     IF T.STAT(AD,SIDE) <> 1 THEN GOTO 8990
  892. 8900     T.STAT(AD,SIDE)=999: STAT(AD,SIDE)=999
  893. 8910     HIT=INT(RND*2)+1
  894. 8920     IF HIT <> 1 THEN GOTO 8990
  895. 8930     STAT(X,ENEMY)=999 'SHOT DOWN
  896. 8940     CIRCLE (MH,MV),2,3
  897. 8950     LOCATE 25,1: PRINT SPACE$(39);
  898. 8960     LOCATE 25,1: PRINT "SHOT DOWN";
  899. 8970     IF TIMER<SV.TIMER! GOTO 8970
  900. 8980     GOTO 9000
  901. 8990   NEXT AD
  902. 9000 RETURN
  903. 9010 '
  904. 9020 'DRAW FLIGHT PATH LEFT TO RIGHT
  905. 9030 '
  906. 9040  F!=STAT(X,ENEMY)/8
  907. 9050  MH=INT(ABS(LCN(X,ENEMY,1)-TGT(X,ENEMY,1))*F!)+LCN(X,ENEMY,1)
  908. 9060  IF LCN(X,ENEMY,2)<TGT(X,ENEMY,2) THEN                                             MV=INT(ABS(LCN(X,ENEMY,2)-TGT(X,ENEMY,2))*F!)+LCN(X,ENEMY,2)
  909. 9070  IF LCN(X,ENEMY,2)>TGT(X,ENEMY,2) THEN                                             MV=INT(ABS(LCN(X,ENEMY,2)-TGT(X,ENEMY,2))*F!)+TGT(X,ENEMY,2)
  910. 9080  LINE (LCN(X,ENEMY,1),LCN(X,ENEMY,2))-(MH,MV),3
  911. 9090 RETURN
  912. 9100 '
  913. 9110 'DRAW FLIGHT PATH RIGHT TO LEFT
  914. 9120 '
  915. 9130   F!=STAT(X,ENEMY)/8
  916. 9140  MH=LCN(X,ENEMY,1)-INT(ABS(LCN(X,ENEMY,1)-TGT(X,ENEMY,1))*F!)
  917. 9150  IF LCN(X,ENEMY,2)<TGT(X,ENEMY,2) THEN                                             MV=INT(ABS(LCN(X,ENEMY,2)-TGT(X,ENEMY,2))*F!)+LCN(X,ENEMY,2)
  918. 9160  IF LCN(X,ENEMY,2)>TGT(X,ENEMY,2) THEN                                             MV=INT(ABS(LCN(X,ENEMY,2)-TGT(X,ENEMY,2))*F!)+TGT(X,ENEMY,2)
  919. 9170   LINE (MH,MV)-(LCN(X,ENEMY,1),LCN(X,ENEMY,2)),3
  920. 9180 RETURN
  921. 9190 '
  922. 9200 'DISPLAY STATUS
  923. 9210 '
  924. 9220 SCREEN 0: WIDTH 80: COLOR 0,2,2: CLS
  925. 9230 PRINT: PRINT "US","USSR","EST COST": PRINT
  926. 9240 FOR X=1 TO 7
  927. 9250     PRINT WEAPONS(X,1),WEAPONS(X,2),COST(X,SIDE),W.NAME$(X)
  928. 9260     PRINT
  929. 9270 NEXT
  930. 9280 RETURN
  931. 9290 '
  932. 9300 'END
  933. 9310 GOSUB 9200 'PRINT STATS
  934. 9320 PRINT INT(KILLED!(1)/1000),INT(KILLED!(2)/1000),,"CIVILIAN CASUAULTIES"
  935. 9330 PRINT ,,,"(IN THOUSANDS)"
  936. 9340 GOSUB 1210 'WAIT
  937. 9350 CLOSE
  938. 9360 END
  939. 9370 '
  940. 9380 'CITY HIT
  941. 9390 ZZ=TGT(X,ENEMY,3): ZZ=ZZ-83
  942. 9400 MSG$=SPACE$(39): LSET MSG$=CITY$(ZZ,SIDE)
  943. 9410 LOCATE 25,1: PRINT MSG$;
  944. 9420 SV.TIMER!=TIMER+1
  945. 9430 IF TIMER < SV.TIMER! THEN GOTO 9430
  946. 9440 KILLED!(SIDE)=KILLED!(SIDE)+INT(POP!(ZZ,SIDE)*.75)
  947. 9450 RETURN
  948.