home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Glitch Apple Disk Collection
/
2014.glitch.apple.collection.zip
/
indexed
/
IMPERIUM.DSK
/
IMCOM.bas
< prev
next >
Wrap
BASIC Source File
|
2014-09-09
|
26KB
|
484 lines
1 REM IMCOM
2 Q = 0:Q1 = 1:Q2 = 2:Q3 = 3:Q4 = 4:Q5 = 5:Q6 = 6:Q7 = 7:Q8 = 8:Q9 = 9:B4 = 16:B5 = 32:B6 = 64:B7 = 128:B8 = 256
3 C = 20:C1 = 50:C2 = 255:C3 = 10:C4 = 14:C5 = 28:C6 = 100:C7 = 75:C8 = 74:C9 = 13:CA = 21:CB = 22:CC = 15:CD = 11:CE = 25
5 DIM S(7),P(2),A(3)
6 U5 = 2822:U8 = 2831:U9 = 2834
7 UA = 2837:UB = 2840:UC = 2843:UD = 2846:UE = 2849:UF = 2852:UH = 2855:UI = 2858
8 UN = 2870:UR = 22793
9 D = 16384:D1 = 17884:D2 = 18584:D4 = 21656:D5 = 21912:D6 = 21932
10 D8 = 22144:D9 = 22297:DA = 22272:DB = 768:DC = 22528:DD = DB +Q3
11 M = 785:M1 = 22365:M2 = 22369:M3 = 791:M4 = 22275:M5 = 796:M6 = 22366:M7 = 8
12 A$ = "ATTACK":T$ = "TASK FORCE"
13 DEF FN A(F6) = PEEK(D6 +F5 *C5 +F6 *Q7 +Q5)
14 DEF FN B(F6) = PEEK(D6 +F6 *C5 +F5 *Q7 +Q5)
18 & RECALL "ICASS": & RECALL "ICASS2"
19 GOTO 10000
20 K = Q:K1 = DC +W *B5: RETURN
21 CALL U5: HTAB Q1: VTAB 21: RETURN
24 PRINT "PRESS ANY KEY TO CONTINUE.";
25 POKE -16368,0
26 IF PEEK( -16384) <B7 THEN 26
27 KY = PEEK( -16384) -B7: POKE -16368,0: RETURN
28 K = Q:K1 = D9 +W *17: IF W = Q4 THEN PRINT "INDEPENDENT WORLD";: RETURN
29 IF PEEK(K1 +K) = B5 AND PEEK(K1 +K +Q1) = B5 THEN 31
30 PRINT CHR$( PEEK(K1 +K));:K = K +Q1: IF K <17 THEN 29
31 RETURN
32 FOR Z = 1 TO 500: NEXT : RETURN
33 K1 = D8 +W *B5 +Q4 *S1: FOR K = Q TO Q3: PRINT CHR$( PEEK(K1 +K));: NEXT K: RETURN
43 GOSUB 20:R1 = Q
44 TF = PEEK(K1 +K): IF TF = B5 THEN 47
45 IF TF <B5 OR EN THEN R1 = R1 + PEEK(D2 +W *B8 +(TF -B6 *(TF >B5)) *Q8)
46 K = K +Q1: GOTO 44
47 RETURN
48 POKE DA +2,S: POKE M4 +Q1,W: CALL 2873: GOSUB 20
49 TF = PEEK(K1 +K): IF TF = B5 THEN 55
50 IF TF >B5 THEN 54
51 POKE K1 +K,TF +B6:TA = D2 +W *B8 +TF *Q8 +Q7: IF PEEK(M7) = Q1 AND TM = Q AND MI = Q2 THEN 54
53 POKE TA,Q9: IF MI = Q2 AND TM = Q THEN POKE TA,Q
54 K = K +Q1: IF K <B5 THEN 49
55 RETURN
60 FOR S1 = Q TO Q2:S2 = PEEK(DB +S1): POKE DB +S1, PEEK(DD +S1): POKE DD +S1,S2: NEXT S1: RETURN
64 GOSUB 21: PRINT A$;"ERS ";N$;" PLANET #";PP;" OF": GOSUB 128: GOTO 32
74 W = PEEK(DB +Q3 *TM +I): RETURN
75 TZ = ( PEEK(TA +Q7) = Q4 OR PEEK(TA +Q7) = Q5): RETURN
100 POKE M4 +Q1,C3: POKE DA +Q2,S: POKE M7,TU: CALL UN:PP = PEEK(M +C): IF PP = Q THEN 102
101 S2 = Q: FOR I = Q TO Q3:H = INT(PP/Q2) *Q2:S(I) = (PP < >H):S2 = S2 +(PP < >H):PP = H/Q2: NEXT I:PP = Q1
102 RETURN
108 POKE M7, PEEK(PA +Z): POKE M4,W: CALL UH:Z = PEEK(M7): RETURN
122 PA = D +P *C:W2 = INT( PEEK(PA +Q9)/B5):W1 = PEEK(PA +Q9) -W2 *B5 -Q1:W2 = W2 -Q1: RETURN
128 FOR K = Q5 TO C9: PRINT CHR$( PEEK(SA +K));: NEXT K: RETURN
214 HOME : PRINT "ALL PLAYERS BUT ";: GOSUB 28: PRINT : PRINT "TURN AWAY. ";: GOTO 24
375 POKE 22278,HM: POKE 22279,MX: CALL 2060: RETURN
1000 TM = Q1:P1 = Q1:P(Q1) = C7:P(Q2) = C7: IF MI = Q3 THEN 1080
1010 FOR I = Q TO Q2: GOSUB 74:TP = Q1: IF W = Q4 THEN I = Q2: GOTO 1040
1020 Z = PEEK(SA +TP) - INT( PEEK(SA +TP)/B7) *B7: IF Z <C7 THEN IF INT( PEEK(D +Z *C +Q9)/B5) -Q1 = W THEN P(TP) = Z:P1 = Q
1030 IF TP = Q1 THEN TP = Q2: GOTO 1020
1040 NEXT I: IF P1 AND TM = Q1 THEN TM = Q: GOTO 1010
1050 IF TM = Q1 OR P1 THEN 1080
1055 S1 = PEEK(M): POKE M, PEEK(M +Q1): POKE M +Q1,S1
1070 GOSUB 60
1080 FOR I = Q TO Q2:S1 = PEEK(DB +I): IF S1 = Q4 THEN I = Q2: GOTO 1096
1081 FOR I1 = Q TO Q2:S2 = PEEK(DD +I1): IF S2 = Q4 THEN I1 = Q2: GOTO 1095
1082 IF S2 = Q5 THEN 1095
1083 Z = D6 +S2 *C5 +S1 *Q7: IF PEEK(Z +Q5) = Q THEN POKE Z +Q5,Q3
1084 TK = Q4: IF PEEK(Z +Q5) >Q1 THEN TK = Q1: IF PEEK(Z +Q5) = Q3 THEN TK = C2
1085 TK = TK + PEEK(Z) +Q5: IF S = S2 THEN TK = TK +Q5
1086 IF TK >C2 THEN TK = C2
1087 POKE Z,TK: FOR S3 = Q TO Q3: IF S3 = S1 OR S3 = S2 OR PEEK(D6 +S3 *C5 +S2 *Q7) <Q2 THEN 1090
1088 TK = PEEK(D6 +C5 *S3 +S1 *Q7) -Q2: IF TK <Q THEN TK = Q
1089 POKE D6 +C5 *S3 +Q7 *S1,TK
1090 NEXT S3
1095 NEXT I1
1096 NEXT I
1200 RETURN
1250 TK = PEEK(Z) + PEEK(Z +Q1) *B8 +40: IF TK >64000 THEN TK = 64000
1260 POKE Z +Q1, INT(TK/B8): POKE Z,TK - INT(TK/B8) *B8: RETURN
1300 W = INT( PEEK(PA +Q9)/B5) -Q1: IF W = Q4 OR W <Q THEN 1380
1305 FOR I = Q TO Q2:I1 = PEEK(DB +I): IF I1 = Q4 THEN I = Q2: GOTO 1370
1310 Z = D6 +W *C5 +I1 *Q7:TK = PEEK(Z) +C3: IF S = W THEN TK = TK +30
1320 IF TK >C2 THEN TK = C2
1330 POKE Z,TK:Z = Z +Q3: GOSUB 1250
1350 Z = D6 +I1 *C5 +W *Q7 +Q1: GOSUB 1250
1370 NEXT I
1380 RETURN
2010 TA = D2 +W *B8 +TF *Q8: IF PEEK(TA +Q7) <Q9 AND PEEK(TA +Q5) = S THEN 2030
2020 TF = TF +Q1: IF TF <B5 THEN 2010
2030 RETURN
2040 EN = Q: HOME : GOSUB 28: HTAB 1: VTAB 3: PRINT "TYPE NUM EFF"
2050 POKE DA +96,127: POKE M4,W: FOR S1 = Q TO Q7: POKE M5,S1: CALL U9
2060 HTAB 1: VTAB 4 +S1: GOSUB 33: IF NOT PEEK(M1) THEN PRINT " 0 0": GOTO 2080
2070 HTAB 6: PRINT PEEK(M1);: HTAB 10: PRINT INT(( PEEK(M6) + PEEK(M1 +Q2) *B8) *Q4/ PEEK(M1))
2080 NEXT S1: GOSUB 43: HTAB 1: VTAB 13: PRINT "TRANSPORTS:";R1
2081 W1 = W: FOR K = Q TO Q3:A(K) = Q: NEXT K: FOR K = Q TO Q2:W = PEEK(DB +TM *Q3 +K): IF W = Q4 THEN K = Q2: GOTO 2086
2082 IF W = W1 THEN 2086
2083 POKE DA +96,C2: POKE M4,W: FOR S1 = Q TO Q7: POKE M5,S1: CALL U9
2084 FOR K1 = Q TO Q2:A(K1) = A(K1) + PEEK(D4 +B6 *W +Q8 *S1 +K1) * PEEK(M1): NEXT K1:A(Q3) = A(Q3) + PEEK(M1): NEXT S1
2086 NEXT K: IF NOT A(Q3) THEN 2090
2087 HTAB 21: VTAB 3: PRINT "ALLIED FORCES": HTAB 21: VTAB 5: PRINT "# ALLIED SHIPS:";A(Q3)
2088 N$ = " PB:NRG: MS:": FOR K1 = Q TO Q2: HTAB 32: VTAB 6 +K1: PRINT MID$ (N$,K1 *4 +1,4);A(K1)/A(Q3): NEXT K1
2090 W = W1: HTAB 1: VTAB 15: PRINT T$;"S ENGAGED:":K = Q:K1 = DC +W *B5
2100 TF = PEEK(K1 +K): IF TF = B5 THEN 2130
2110 HTAB (K - INT(K/Q9) *Q9) *Q4 +1: VTAB INT(K/Q9) +16
2113 IF TF >B5 THEN INVERSE
2115 PRINT TF -B6 *(TF >B5) +1;: NORMAL
2120 K = K +Q1: GOTO 2100
2130 RETURN
2140 HOME : PRINT T$;" ";TF +Q1: POKE M7,TF: POKE M4,W
2145 HTAB 4: VTAB 3: PRINT "POSITION:";:SA = PEEK(TA +Q4): IF SA < >C1 THEN SA = D1 +SA *C4: GOSUB 128
2150 HTAB 1: VTAB 4: PRINT "DESTINATION:";:SA = PEEK(TA +Q5) - INT( PEEK(TA +Q5)/B6) *B6: IF SA < >C1 THEN SA = D1 +SA *C4: GOSUB 128
2155 HTAB 9: VTAB 5: PRINT "ETA:";: IF SA < >C1 THEN PRINT INT( PEEK(TA +Q5)/B6)
2160 N$ = "GGRPCEMMMW": HTAB 5: PRINT "MISSION:"; MID$ (N$, PEEK(TA +Q7) +1,1)
2165 N$ = "TRANSPORTS: ARMIES: COLONISTS:"
2170 FOR Z = Q TO Q2: HTAB 24: VTAB 3 +Z: PRINT MID$ (N$,Z *11 +1,11); PEEK(TA +Z): NEXT Z
2175 N$ = "ID TYPE EFF": HTAB 1: VTAB 8: PRINT N$;: HTAB 21: PRINT N$:S2 = Q
2180 V = Q8:H = Q2:S3 = S2: POKE M1,Q8: CALL UD: POKE M3,S2
2185 CALL UC:S2 = PEEK(M3): IF NOT PEEK(M6) THEN S2 = -Q1: GOTO 2215
2190 HTAB H -1: VTAB V +1: PRINT S2;: HTAB H +Q3:S1 = PEEK(M5): GOSUB 33: PRINT " "; PEEK(M6) *Q4
2195 IF S2 = C2 THEN S2 = -Q1: GOTO 2215
2200 POKE M3,S2 +Q1:V = V +Q1: IF V <19 THEN 2185
2210 IF H = Q2 THEN V = Q8:H = 21: GOTO 2185
2215 RETURN
2220 GOSUB 2140
2225 GOSUB 21: GOSUB 24: IF S2 > = Q THEN S2 = S2 +Q1: GOSUB 2180: GOTO 2225
2230 RETURN
2240 EN = Q1: HOME : GOSUB 28: HTAB 21:F5 = W:K = FN A(W1)
2250 N$ = "FRIEND NEUTRAL ENEMY SURPRISED": PRINT MID$ (N$,K *Q9 +Q1,9)
2260 HTAB 1: VTAB 3: PRINT "TYPE SZ NUM": FOR K1 = Q TO Q3:A(K1) = Q: NEXT K1
2270 POKE DA +96,C2: POKE M4,W:H = Q: FOR S1 = Q TO Q7: POKE M5,S1
2275 CALL U9: IF NOT PEEK(M1) THEN 2310
2280 HTAB 1: VTAB Q4 +H: GOSUB 33:K = D4 +B6 *W +Q8 *S1
2285 FOR K1 = Q TO Q2:A(K1) = A(K1) + PEEK(K +K1) * PEEK(M1): NEXT K1
2290 N$ = "LMS": HTAB 6: PRINT MID$ (N$, PEEK(K +Q7) +Q1,1);
2300 HTAB 9: PRINT PEEK(M1):H = H +Q1:A(Q3) = A(Q3) + PEEK(M1)
2310 NEXT S1:N$ = " PB:NRG: MS:": FOR K1 = Q TO Q2: HTAB 1: VTAB Q5 +H +K1: PRINT MID$ (N$,K1 *Q4 +Q1,4);
2315 Z = A(K1) *( RND(1) +.5): IF A(Q3) >Q THEN PRINT INT(Z/A(Q3))
2316 NEXT K1
2320 GOSUB 43: HTAB 21: VTAB 13: PRINT "TRANSPORTS:";R1
2330 RETURN
3030 V = H *C3: HTAB 1: VTAB V +1: PRINT "PLANET #";H +Q1
3060 HTAB 15: VTAB V +1: PRINT "OWNER:";:W = W2: GOSUB 28: HTAB 11: VTAB V +Q2
3072 IF W1 < >W2 THEN W = W1: PRINT "OLD OWNER:";: GOSUB 28
3075 IF N >Q THEN HTAB 11: VTAB V +Q3: PRINT "INVADING ARMIES:";N;
3102 HTAB 3: VTAB V +Q5: PRINT "AG:"; PEEK(PA +Q1): HTAB 2: PRINT "POP:"; PEEK(PA +Q3)
3112 PRINT "MINE:"; PEEK(PA +Q5)
3120 HTAB Q2: PRINT "IND:"; PEEK(PA +Q7)
3130 HTAB 17: VTAB V +Q5: PRINT "GUERILLAS:"; PEEK(PA +C9): HTAB 20: VTAB V +Q6: PRINT "ARMIES:"; PEEK(PA +12)
3132 HTAB 23: VTAB V +Q7: PRINT "SDF:"; PEEK(PA +C3): HTAB 23: VTAB V +Q8: PRINT "PDF:"; PEEK(PA +CD)
3142 HTAB Q1: VTAB V +Q3: PRINT "ENVT:"; PEEK(PA): HTAB Q1: VTAB V +Q4: PRINT "RSRC:"; PEEK(PA +Q4)
3150 RETURN
3160 POKE M1,Q: POKE M +Q2,Q1 -TM: CALL UR:Z3 = PEEK(M -Q3) + PEEK(M -Q2) *B8: RETURN
3165 POKE M1,Q1
3170 POKE M +Q2,TM: CALL UR:Z2 = PEEK(M -Q3) + PEEK(M -Q2) *B8:TR = PEEK(M6): RETURN
3180 IF TM = Q THEN AP = Q: GOTO 3190
3185 DP = Q
3190 GOSUB 21: PRINT "TARGET THE ENEMY TRANSPORTS (Y OR N)?"
3195 GOSUB 25: IF KY < >89 AND KY < >78 THEN 3195
3200 IF KY = 89 THEN POKE M2 +TM,Q1
3205 RETURN
3210 PP = Q: GOSUB 21: PRINT "(E)NGAGE ENEMY,": IF P(Q1) <C7 THEN PRINT N$;" PLANET #(1),"
3215 IF P(Q2) <C7 THEN PRINT N$;" PLANET #(2),"
3220 PRINT "OR (L)OOK AT PLANETS?";
3225 GOSUB 25: IF KY = 69 THEN 3260
3230 IF KY = 49 OR KY = 50 THEN IF P(KY -48) <C7 THEN PP = KY -48: GOTO 3260
3240 IF KY < >76 THEN 3225
3245 GOSUB 3261
3255 GOSUB 21: GOSUB 24: GOTO 3210
3260 RETURN
3261 TP = Q1: HOME :H = Q
3262 IF P(TP) <C7 THEN P = P(TP): GOSUB 122: GOSUB 3030:H = H +Q1
3265 IF TP = Q1 THEN TP = Q2: GOTO 3262
3270 RETURN
3900 FOR I = Q TO Q3:W = PEEK(DD +I): POKE DD +I,Q4: IF W = Q4 THEN 3910
3905 K = DC +B5 *W: FOR I1 = Q TO 31: POKE K +I1,B5: NEXT I1: POKE DB +Q6 +W,Q
3910 NEXT I: POKE M +Q1,Q: RETURN
3920 POKE M +Q2,Q: POKE M1,B7 -127 *DS: CALL UR:Z6 = PEEK(M -Q3) + PEEK(M -Q2) *B8: IF Z6 = Q THEN 3960
3925 N$ = "BOMBING": GOSUB 64
3930 IF RND(1) >.25 AND PEEK(PA +Q7) >Q THEN POKE PA +Q7, PEEK(PA +Q7) -Q1: GOTO 3950
3935 IF RND(1) <.25 AND PEEK(PA +Q5) >Q THEN POKE PA +Q5, PEEK(PA +Q5) -Q1: GOTO 3950
3940 IF RND(1) <.07 AND PEEK(PA +Q1) >Q THEN POKE PA +Q1, PEEK(PA +Q1) -Q1: GOTO 3950
3945 IF RND(1) <.25 AND PEEK(PA +12) >Q THEN POKE PA +12, PEEK(PA +12) -Q1
3950 IF RND(1) <.5 AND PEEK(PA +Q3) >Q THEN POKE PA +Q3, PEEK(PA +Q3) -Q1
3955 Z6 = Z6 -Q1: IF Z6 >Q THEN 3930
3956 IF PEEK(PA +Q3) = Q THEN POKE PA +Q1,Q: POKE PA +Q9,Q: POKE PA +12,Q: POKE PA +C9,Q
3960 RETURN
3961 GOSUB 3966
3962 IF PP = Q THEN TP = D +P(Q1) *C:PP = Q1: IF PEEK(D +P(Q2) *C +C3) + PEEK(D +P(Q2) *C +CD) > PEEK(TP +C3) + PEEK(TP +CD) THEN PP = Q2
3965 RETURN
3966 PP = Q2 *(P(Q1) = C7) +(P(Q2) = C7): RETURN
3970 GOSUB 3966
3980 IF PP = Q THEN TP = D +P(Q1) *C:PP = Q1: IF PEEK(D +P(Q2) *C +C3) + PEEK(D +P(Q2) *C +CD) < PEEK(TP +C3) + PEEK(TP +CD) THEN PP = Q2
3985 RETURN
3990 PA = D +P(PP) *C: RETURN
4000 PP = Q: POKE M3 +CB,Q: POKE M3 +30,Q1: IF MI = Q2 THEN 4060
4010 IF DP = Q AND AP = Q THEN POKE M3 +CA,Q: GOTO 4130
4020 IF AP >Q AND DP >Q AND AP < >DP THEN GOSUB 3900:PP = AP: GOTO 4050
4030 IF AP >Q THEN PP = AP: GOTO 4050
4040 PP = DP
4050 GOSUB 3990: POKE M3 +CA, PEEK(PA +C3): GOTO 4130
4060 PP = AP: GOSUB 3990
4070 IF PEEK(PA +C3) >Q OR PEEK(PA +CD) >Q THEN 4100
4080 IF PEEK(M2) = Q1 THEN 4086
4082 IF DP = Q1 THEN GOSUB 3920
4084 GOTO 4140
4086 N$ = "PURGING": GOSUB 64
4088 GOSUB 1300
4090 POKE PA +Q1,Q: POKE PA +Q3,Q: POKE PA +Q5,Q: FOR K = Q7 TO 19: POKE PA +K,Q: NEXT K:N = Q: POKE PA +C4,S: GOTO 4315
4100 POKE M3 +CA, PEEK(PA +C3): IF DS = Q THEN POKE M3 +CB, PEEK(PA +CD) +B7
4110 ON DP +Q1 GOTO 4140,4130
4120 POKE M3 +30,Q
4130 POKE DA +B4,(CT >Q): CALL U8: IF PP THEN POKE PA +C3, PEEK(M3 +CA)
4132 IF PP AND PEEK(M3 +CB) > = B7 THEN POKE PA +CD, PEEK(M3 +CB) -B7
4140 IF MI = Q2 THEN 4170
4150 IF AP >Q THEN GOSUB 3920
4160 GOTO 4320
4170 IF DP = Q1 AND PEEK(M2) = Q1 THEN GOSUB 3920
4190 IF DP < >Q2 OR N >Q THEN 4250
4200 FOR I = Q TO Q2:W = PEEK(DB +I): IF W = Q4 THEN I = Q2: GOTO 4240
4210 K = DC +B5 *W: FOR I1 = Q TO 31: IF PEEK(K +I1) = B5 THEN I1 = 31: GOTO 4230
4220 TA = D2 +W *B8 +Q8 * PEEK(K +I1):N = N + PEEK(TA +Q1): POKE TA +Q1,Q
4230 NEXT I1
4240 NEXT I
4250 IF N = Q THEN 4320
4260 Z = Q: IF DP = Q2 THEN POKE M +Q2,Q: POKE M1,B7 -127 *DS:Z = PEEK(M -Q3) + PEEK(M -Q2) *B8: IF Z >N THEN Z = N
4270 AM = PA +12:IN = N +Z:Z = PEEK(PA +C3) + PEEK(PA +CD): IF Z > PEEK(AM) THEN Z = PEEK(AM)
4280 IC = (Z + PEEK(AM)) *Q3/Q2
4285 IN = IN - INT(( INT( RND(1) *4) +Q5) *IN/C3): IF IN > PEEK(AM) THEN IN = PEEK(AM)
4290 IC = IC - INT(( INT( RND(1) *4) +Q5) *IC/C3): IF IC >N THEN IC = N
4295 N = N -IC: POKE AM, PEEK(AM) -IN
4300 IF N = Q OR PEEK(AM) >Q THEN 4320
4305 GOSUB 21: PRINT "PLANET #";PP;" OF ";: GOSUB 128: PRINT " CAPTURED!": GOSUB 32: IF N >255 THEN N = 255
4306 POKE AM,N:N = Q:W = INT( PEEK(PA +Q9)/B5):W1 = PEEK(PA +Q9) -W *B5: IF W1 = MP THEN POKE PA +Q9,MP *B5 +B5: GOTO 4315
4310 POKE PA +C9, PEEK(PA +Q1): POKE PA +Q9,MP *B5 +B5 +W
4315 IF PA = D +P(Q1) *C THEN P(Q1) = C7
4316 IF PA = D +P(Q2) *C THEN P(Q2) = C7
4317 IF P(Q1) = C7 AND P(Q2) = C7 THEN P1 = Q1
4318 GOSUB 1300
4320 IF N >Q AND (( PEEK(PA +C3) = Q AND PEEK(PA +CD) = Q) OR PEEK(DB) = Q4) THEN 4305
4325 CT = CT +Q1: RETURN
4350 FOR TM = Q TO Q1: FOR I = Q TO Q2: GOSUB 74: IF W = Q4 THEN I = Q2: GOTO 5100
4360 IF PEEK(D5 +B4 +W) = Q2 THEN 4720
4365 IF CT = Q THEN 5100
4370 POKE M4,W: POKE DA +C3,TM: POKE DA +11,(MI >Q5) +B7: CALL UA
4380 GOSUB 3160: GOSUB 3170: IF TM = Q1 OR P1 < >Q THEN 4385
4382 GOSUB 3961: IF MI = Q2 THEN GOSUB 3970
4383 GOSUB 3990:Z3 = Z3 + PEEK(PA +C3)
4385 IF P1 = Q THEN Z2 = Z2 *Q5: IF TM = Q THEN Z3 = Z3 *Q4
4390 IF Z2 > = Z3 THEN 5100
4420 GOSUB 48: GOTO 5100
4720 GOSUB 214
4725 GOSUB 74: GOSUB 2040
4730 GOSUB 21: PRINT "EXAMINE (F)RIENDLY ";T$;",";: IF MI < >Q2 THEN PRINT "(E)NEMY";
4735 PRINT : IF MI < >Q2 THEN PRINT "FLEET,";
4736 PRINT "(L)OOK AT TARGETABLE PLANETS,"
4737 IF CT >Q THEN PRINT "RETREAT (1) OR (A)LL YOUR ";T$;","
4739 PRINT "OR E(X)IT?";
4740 GOSUB 25: IF KY = 88 THEN 5100
4742 IF KY = 65 AND CT >Q THEN GOSUB 48: GOTO 5100
4744 IF KY = 70 THEN 4800
4746 IF KY = 69 THEN 4770
4747 IF KY = 76 THEN HOME : GOSUB 3261: HTAB 1: VTAB 21: GOSUB 24: GOTO 4725
4748 IF KY < >49 OR CT = Q THEN 4740
4750 ONERR GOTO 4750
4751 GOSUB 21: PRINT "WITHDRAW WHICH ";T$;: INPUT N$
4752 TF = VAL(N$) -Q1: IF TF <Q OR TF > = B5 THEN 4750
4754 GOSUB 20:K = Q
4756 IF PEEK(K1 +K) = B5 THEN 4762
4758 IF PEEK(K1 +K) = TF THEN POKE K1 +K,TF +B6: POKE D2 +W *B8 +TF *Q8 +Q7,Q9 *(MI >Q5 OR ( NOT TM AND MI < >Q2)): GOTO 4725
4760 K = K +Q1: IF K <B5 THEN 4756
4762 GOTO 4730
4770 W1 = W: FOR I1 = Q TO Q2:W = PEEK(DB +Q3 *(Q1 -TM) +I1): IF W = Q4 THEN I1 = Q2: GOTO 4790
4780 GOSUB 2240: GOSUB 21: GOSUB 24
4790 NEXT I1:W = W1: GOTO 4725
4800 ONERR GOTO 4800
4805 GOSUB 21: PRINT "EXAMINE ";T$;: INPUT N$: IF N$ = "" THEN 4730
4810 TF = VAL(N$) -Q1: IF TF <Q OR TF > = B5 THEN 4800
4812 GOSUB 20
4814 IF PEEK(K1 +K) = B5 THEN 4730
4816 IF PEEK(K1 +K) < >TF AND PEEK(K1 +K) < >TF +B6 THEN K = K +Q1: GOTO 4814
4820 TA = D2 +B8 *W +TF *Q8: GOSUB 2140
4830 GOSUB 21: PRINT "(J)OIN OR (S)PLIT THE ";T$;","
4840 PRINT "(N)EXT SCREEN OR E(X)IT?"
4842 GOSUB 25: IF KY = 88 THEN 4725
4844 IF KY = 83 THEN 4860
4846 IF KY = 74 THEN 4890
4848 IF KY < >78 THEN 4842
4850 S2 = S2 +Q1: GOSUB 2180: GOTO 4830
4860 POKE M4,W: POKE DA +C3,TM: POKE DA +11,C3: POKE DB +46,C2: CALL UB:T2 = PEEK(M1)
4870 GOSUB 21: IF T2 = B7 THEN PRINT "NO MORE ";T$;"S AVAILABLE.": GOSUB 24: GOTO 4830
4880 PRINT "NEW ";T$;"=";T2 +Q1: GOSUB 32: POKE DA +11, PEEK(TA +Q7): GOTO 4910
4890 ONERR GOTO 4890
4891 GOSUB 21: PRINT "TRANSFER TO WHICH ";T$;: INPUT N$: IF N$ = "" THEN 4830
4892 T2 = VAL(N$) -Q1: IF T2 <Q OR T2 > = B5 THEN 4890
4894 GOSUB 20
4896 IF PEEK(K1) = B5 THEN PRINT T$;" NOT ENGAGED": GOSUB 32: GOTO 4890
4898 IF PEEK(K1) < >T2 AND PEEK(K1) < >T2 +B6 THEN K1 = K1 +Q1: GOTO 4896
4899 IF PEEK(D2 +W *256 +T2 *8 +7) = 2 THEN PRINT T$;" ON REPAIR": GOSUB 32: GOTO 4890
4900 POKE M4,W: POKE M6,Q: POKE DA +C3,TM
4910 GOSUB 21: PRINT "TRANSFER (T)RANSPORTS,WARSHIPS BY"
4915 PRINT "(E)FFICIENCY OR (I)D, OR E(X)IT?"
4920 GOSUB 25: IF KY = 88 THEN S2 = S3: GOSUB 2180: GOTO 4830
4930 ON KY = 84 GOTO 5070: ON KY = 69 GOTO 5030: ON KY < >73 GOTO 4920
4960 ONERR GOTO 4960
4965 GOSUB 21: PRINT "WHICH SHIPS?";:H = 13
4970 GOSUB 20000: IF N$ = "" THEN 4910
4980 ON K >255 GOTO 4970: POKE M3,K: POKE M3 +1,K:H = PEEK(36) +1: IF B$ < >"," THEN 5020
4990 GOSUB 20000: IF B$ = "," THEN 4990
5000 ON K >255 GOTO 4990: POKE M3 +1,K
5020 POKE DB +46,26: GOTO 5060
5030 POKE M3,Q: POKE M3 +Q1,C2
5040 GOSUB 21: PRINT "TRANSFER SHIPS AT EFFICIENCY"
5045 ONERR GOTO 5040
5047 PRINT "BELOW (1-100)";: INPUT K: IF K <Q1 OR K >C6 THEN 5040
5050 POKE DB +46, INT((K +Q3)/Q4)
5060 POKE M1,T2: POKE M7,TF: CALL UE: GOTO 4910
5070 POKE M1,T2: POKE M7,TF: POKE M3, PEEK(TA): CALL UF:TN = PEEK(M1): IF TN = B7 THEN S2 = S3: GOSUB 2180: GOTO 4830
5080 IF PEEK(TA +Q6) THEN 4910
5090 GOTO 4725
5100 NEXT I: NEXT TM: GOTO 7000
5180 HOME : IF TM THEN PRINT "DEFENDERS ";
5190 IF NOT TM THEN PRINT A$;"ERS ";
5200 PRINT "DEAD OR FLED.": GOSUB 32
5210 FOR I = Q TO 127: POKE DC +I,B5: NEXT I
5220 CALL 2054
5230 FOR I = Q TO Q3: POKE DB +Q6 +I,Q: POKE M +I,Q: NEXT I: RETURN
6000 POKE M2 +TM,Q:W = PEEK(DB +Q3 *TM): IF PEEK(D5 +W +B4) = Q2 THEN 6190
6010 IF MI = Q3 OR P1 THEN 6080
6020 IF MI = Q2 THEN 6100
6030 IF TM = Q1 THEN GOSUB 3961:DP = PP: GOTO 6900
6080 IF TM = Q THEN AP = Q: GOTO 6900
6090 DP = Q: GOTO 6900
6100 GOSUB 3970:AP = PP:PP = P(AP)
6110 PA = D +C *PP: IF PEEK(PA +CD) >Q OR PEEK(PA +C3) >Q THEN 6160
6120 IF PEEK(PA +Q7) <Q1 THEN DP = Q1: POKE M2,Q1: GOTO 6900
6130 GOSUB 3165: IF TR *Q2 > PEEK(PA +Q1) *Q5 THEN DP = Q2:DS = Q: GOTO 6900
6135 IF PEEK(PA +Q9) <160 THEN DP = Q1: POKE M2,Q1: GOTO 6900
6140 AP = Q: GOTO 6900
6160 DS = Q:DP = Q1: POKE M1,Q
6170 GOSUB 3170: IF Z2 <Q4 *( PEEK(PA +C3) + PEEK(PA +CD))/Q5 THEN AP = Q
6180 GOTO 6900
6190 GOSUB 214: IF MI = Q3 OR P1 THEN GOSUB 3180: GOTO 6900
6220 IF MI = Q2 THEN 6270
6230 N$ = A$: IF TM = Q1 THEN N$ = "DEFEND"
6240 GOSUB 3210: IF PP = Q THEN GOSUB 3180: GOTO 6900
6250 IF TM = Q THEN AP = PP: POKE M2 +TM,Q1: GOTO 6900
6260 DP = PP: GOTO 6900
6270 IF N >Q THEN 6330
6280 AP = Q: IF P(Q1) = C7 THEN AP = Q2: GOTO 6330
6290 IF P(Q2) = C7 THEN AP = Q1: GOTO 6330
6300 GOSUB 21: PRINT A$;" WHICH PLANET (1 OR 2)?"
6310 GOSUB 25: IF KY < >50 AND KY < >49 THEN 6310
6320 AP = KY -48
6330 PA = D +C *P(AP)
6340 IF PEEK(PA +C3) >Q OR PEEK(PA +CD) >Q THEN 6400
6350 DS = Q: GOSUB 21: PRINT "(B)OMB,(P)URGE, (C)APTURE THE PLANET, OR(G)ARRISON?"
6360 GOSUB 25: IF KY = 67 THEN DP = Q2: GOTO 6900
6365 IF KY = 71 THEN AP = Q: GOTO 6910
6370 IF KY < >66 AND KY < >80 THEN 6360
6380 DP = Q1: IF KY = 80 THEN POKE M2,Q1
6390 GOTO 6900
6400 GOSUB 21: IF N >Q THEN PRINT "(A)RMY ";A$;",";
6410 PRINT "(F)LEET AND ARMY ";A$: PRINT A$;" THE PLANET'S (D)EFENSES, (B)OMB EXTRA (NON-MILITARY) TARGETS, OR"
6411 PRINT "(G)ARRISON?";
6420 GOSUB 25: IF KY = 65 AND N >Q THEN DP = Q: GOTO 6900
6425 IF KY = 71 THEN AP = Q: GOTO 6910
6430 IF KY = 70 THEN DP = Q2: GOTO 6600
6440 IF KY < >68 AND KY < >66 THEN 6420
6450 DP = Q1: IF KY = 66 THEN POKE M2,Q1
6460 GOSUB 21: PRINT A$;" FROM (S)PACE OR (A)TMOSPHERE?"
6470 GOSUB 25: IF KY = 83 THEN DS = Q1: GOTO 6900
6480 IF KY < >65 THEN 6470
6490 DS = Q: GOTO 6900
6600 IF N = Q THEN DS = Q: GOTO 6900
6610 GOTO 6460
6900 IF AP = Q AND DP = Q THEN DS = Q1
6910 RETURN
7000 POKE DA +2,S: POKE 795,TU: POKE 22283,MI: CALL 2048
7010 IF PEEK(DB) <Q4 THEN 7020
7012 IF N = Q THEN TM = Q: GOTO 5180
7014 GOSUB 4260:TM = Q: GOTO 5180
7020 IF PEEK(DD) <Q4 THEN 7050
7030 IF TU = C3 OR P1 THEN TM = Q1: GOTO 5180
7040 MI = Q2: GOTO 7170
7050 IF PEEK(M) = Q AND CT THEN TM = Q: GOSUB 8000: GOTO 5180
7060 IF PEEK(M +Q1) >Q THEN 7170
7070 TM = Q1: ON CT = Q GOTO 7170: GOSUB 8000: IF P1 THEN 5180
7080 MI = Q2
7170 IF MI >Q2 THEN TM = Q1: GOSUB 6000
7180 TM = Q: GOSUB 6000: IF MI = Q2 AND AP = Q THEN GOSUB 8000: GOTO 5180
7190 GOSUB 4000
7200 CT = CT +Q1: IF MI = Q6 AND AP >Q THEN TM = Q: GOSUB 8000: GOTO 5180
7210 IF PEEK(DB) = Q4 THEN TM = Q: GOTO 5180
7220 IF PEEK(DD) <Q4 THEN 7250
7230 IF TU = C3 OR P1 THEN TM = Q1: GOTO 5180
7240 MI = Q2: GOTO 4350
7250 IF PEEK(M) = Q THEN TM = Q: GOSUB 8000: GOTO 5180
7260 IF PEEK(M +Q1) >Q THEN 4350
7270 TM = Q1: GOSUB 8000: IF P1 THEN 5180
7280 MI = Q2: GOTO 4350
8000 FOR I = Q TO Q2: GOSUB 74: IF W = Q4 THEN I = Q2: GOTO 8020
8010 GOSUB 48
8020 NEXT I: RETURN
8100 FOR I = 0 TO 2: GOSUB 74:TF = -1: IF W = 4 THEN I = 2: GOTO 8120
8110 GOSUB 2020: IF TF < >B5 THEN POKE TA +7,9: GOTO 8110
8120 NEXT I: RETURN
10000 TU = PEEK(DA +98): TEXT : HOME
10900 ON TU +Q1 GOTO 10902,10903
10901 PRINT "POST NEGOTIATION ";: GOTO 10904
10902 PRINT "FIRST ";: GOTO 10904
10903 PRINT "SECOND ";
10904 PRINT "COMBAT PHASE": FOR S = Q TO 49:SA = D1 +C4 *S
10905 GOSUB 100: IF PP = Q THEN 11100
10910 IF S2 <Q2 THEN 11050
10915 FOR I = 0 TO 3: POKE 22284 +I,S(I): NEXT I
10920 HM = Q: CALL 2054: POKE 22278,HM: CALL 2057:MI = 6
10930 HM = PEEK(22278):MX = PEEK(22279): IF HM = Q3 AND MX = Q3 AND PEEK(DB) = Q4 THEN 10960
10940 POKE 22283,134: POKE DA +2,S: POKE 795,TU: CALL 2048: IF TU = C3 OR ( PEEK(DB) < >Q4 AND PEEK(DD) < >Q4) THEN 10945
10943 CALL 2054: GOSUB 375: GOTO 10930
10945 IF TU = C3 AND ( PEEK(M) = Q OR PEEK(DD) = Q4) THEN CALL 2054: GOSUB 375: GOTO 10930
10950 GOTO 11000
10960 HM = Q: CALL 2054: POKE 22278,HM: CALL 2057:MI = 3
10970 HM = PEEK(22278):MX = PEEK(22279): IF HM = Q3 AND MX = Q3 AND PEEK(DB) = Q4 THEN 11050
10980 POKE 22283,131: POKE DA +2,S: POKE 795,TU: CALL 2048: IF TU < >C3 AND ( PEEK(DB) = Q4 OR PEEK(DD) = Q4) THEN CALL 2054: GOSUB 375: GOTO 10970
10985 IF TU = C3 AND ( PEEK(M) >Q AND PEEK(DD) < >Q4) THEN 11000
10990 IF TU = C3 THEN HOME : POKE DB,HM: PRINT "FLEET WITHDRAWS FROM ";:SA = D1 +C4 *S: GOSUB 128:TM = Q: GOSUB 8100: GOTO 10905
11000 HOME : PRINT "FLEET ENGAGEMENT AT ";:SA = D1 +C4 *S: GOSUB 128: PRINT
11005 GOSUB 1000: GOSUB 1070: GOSUB 60:CT = Q:MP = PEEK(DB):N = Q: IF TU = C3 THEN MI = Q6
11010 PRINT A$: HTAB C: VTAB 2: PRINT "DEFENDERS"
11020 FOR TM = Q TO Q1: FOR I = Q TO Q2: GOSUB 74: IF W = Q4 THEN I = Q2: GOTO 11040
11030 HTAB TM *19 +Q1: VTAB I +Q3: GOSUB 28
11040 NEXT I: NEXT TM: GOSUB 32: GOSUB 4350: GOTO 10905
11050 POKE DA +2,S: CALL 25603
11100 NEXT S: ON TU = C3 GOTO 12001: FOR S = Q TO 49:SA = D1 +C4 *S
11105 GOSUB 100: IF PP = Q THEN 11500
11110 HM = INT( RND(1) *4):MP = HM
11120 IF S(MP) = Q THEN 11490
11121 POKE DA +2,S: POKE DA +4,MP: POKE 795,TU: FOR I = 0 TO 3: POKE 22284 +I,S(I): NEXT I: CALL 25600
11130 P(1) = PEEK(22278):P(2) = PEEK(22279)
11135 IF P(1) = C7 AND P(2) = C7 THEN 11490
11140 TM = Q: POKE M1,Q: GOSUB 3170: IF TR = Q AND Z2 <Q1 THEN 11490
11310 P1 = 0: GOSUB 1080: POKE DB +Q4,Q4: POKE DD,Q4:MI = Q2
11325 GOSUB 21: FOR I = Q TO Q3:W = PEEK(DB +I): IF W = Q4 THEN I = Q3: GOTO 11345
11330 IF I THEN PRINT ", ";
11335 GOSUB 28: IF PEEK(36) >19 THEN PRINT
11345 NEXT I
11350 PRINT " ";A$;"ING ";: GOSUB 128: GOSUB 32:CT = Q1:N = Q: GOSUB 4350
11490 MP = MP +Q1: IF MP >Q3 THEN MP = Q
11495 IF MP < >HM THEN 11120
11500 P1 = Q1
11510 P = PEEK(SA +P1) - INT( PEEK(SA +P1)/B7) *B7: IF P = C7 THEN 11630
11520 PA = P *C +D:W = INT( PEEK(PA +Q9)/B5): IF PEEK(PA +Q9) -W *B5 = W THEN 11630
11530 Z = PEEK(PA +12):TK = PEEK(PA +C9):S1 = Z:S2 = TK:S3 = PEEK(PA +Q3)
11540 IF Z = Q OR TK = Q THEN 11600
11550 IF S1 >Q AND RND(1) <.25 THEN TK = TK -Q1
11560 IF S1 >Q THEN S1 = S1 -Q1: IF RND(1) <.12 AND S3 >Q THEN S3 = S3 -Q1
11565 IF S3 = Q THEN POKE PA +Q3,Q: GOSUB 3956: GOTO 11600
11570 IF S2 >Q THEN S2 = S2 -Q1: IF RND(1) <.12 THEN Z = Z -Q1
11580 IF S1 >Q OR S2 >Q THEN 11540
11590 POKE PA +Q3,S3: POKE PA +C9,TK: POKE PA +12,Z: GOTO 11630
11600 IF TK = Q THEN POKE PA +Q9,W *33: POKE PA +C9,Q: GOTO 11630
11610 W = PEEK(PA +Q9) -W *B5: POKE PA +Q9,W *33: POKE PA +C9,Q: POKE PA +12,Q: POKE PA +17,C2: POKE PA +B4,Q:W = W -Q1
11620 GOSUB 21: GOSUB 28: PRINT " RECAPTURES ";: GOSUB 128: GOSUB 32
11630 IF P1 = Q1 THEN P1 = Q2: GOTO 11510
12000 NEXT S
12001 GOSUB 21: PRINT "DO YOU WISH TO SAVE THE GAME (Y OR N)?"
12002 GOSUB 25: IF KY < >78 AND KY < >89 THEN 12002
12003 IF KY = 78 THEN 12010
12004 ONERR GOTO 12004
12005 POKE DA +98,TU: & RUN "GSAVE
12010 ON TU +Q1 GOTO 12040,12060
12020 POKE DA +98,Q: GOTO 12050
12040 POKE DA +98,Q1
12050 ONERR GOTO 12050
12055 POKE 22288,3: & RUN "VECTOR",44800
12060 ONERR GOTO 12060
12065 POKE 22288,0: & RUN "VECTOR",44800
20000 N$ = "": HTAB H: PRINT " ";: HTAB H
20010 GET B$: IF B$ = CHR$(13) OR B$ = "," THEN 20070
20020 IF B$ = CHR$(8) THEN 20050
20025 IF LEN(N$) >2 THEN 20000
20030 IF ASC(B$) <48 OR ASC(B$) >57 THEN 20010
20040 N$ = N$ +B$: PRINT B$;: GOTO 20010
20050 ON LEN(N$) +1 GOTO 20010,20000
20060 N$ = LEFT$(N$, LEN(N$) -1): HTAB PEEK(36): PRINT " ";: HTAB PEEK(36): GOTO 20010
20070 IF B$ = "," THEN PRINT B$;
20080 K = VAL(N$): RETURN