Compucolor.org – Virtual Media

Listing of file='CIVIL.BAS;01' on disk='vmedia/chip_16-sector.ccvf'

7 CLEAR 250
8 PLOT 12
10 PRINT ,,"* *  C I V I L   W A R  * *"
15 PRINT :PRINT :PRINT
50 DIM S(4),C$(14),M1(14),M2(14),C1(14),C2(14),M(14)
70 S(1)= 25:S(2)= 25:S(3)= 25:S(4)= 25
80 RESTORE
84 FOR D= 1TO 14
86 READ C$(D),M1(D),M2(D),C1(D),C2(D),M(D)
88 NEXT D
89 D= RND (- 1* (PEEK (33209)+ 10* PEEK (33210)+ 100* PEEK (33211)))
160 PRINT :PRINT ,"THIS IS A CIVIL WAR SIMULATION."
255 GOSUB 260:GOTO 370
260 PRINT ,,"CHOICES FOR STRATEGY ARE:"
265 PRINT
270 PRINT ,"OFFENSIVE";TAB( 40);"DEFENSIVE"
275 PRINT
276 PRINT "   ";
280 PRINT "  ARTILLERY ATTACK";TAB( 31);"(1)   ARTILLERY ATTACK"
285 PRINT "   ";
290 PRINT "  FRONTAL ATTACK";TAB( 31);"(2)   FORTIFY FRONTAL"
300 PRINT "     FLANKING MANEUVER";TAB( 31);"(3)   FORTIFY FLANKS"
310 PRINT "     ENCIRCLE";TAB( 31);"(4)   FALL BACK"
320 PRINT ,,"YOU MAY SURRENDER BY ENTERING 5."
365 RETURN
370 PRINT :PRINT ,:INPUT "ARE THERE 2 GENERALS PRESENT (Y/N) ? ";B$
400 IF B$= "Y"THEN 430
410 IF B$< > "N"THEN 370
415 PRINT
416 PRINT
420 PRINT ,,"YOU ARE THE CONFEDERACY; GOOD LUCK!"
425 PRINT
430 D= 1:IF B$< > "Y"THEN 460
450 D= 2
460 PRINT ,"SELECT A BATTLE BY ENTERING A NUMBER FROM 1 TO 14"
470 PRINT ,"WHEN REQUESTED.  ANY OTHER NUMBER ENDS THE SIMULATION"
480 PRINT :PRINT ,"BUT ENTERING 0 REPLAYS THE LAST BATTLE."
500 PRINT :PRINT ,"A NEGATIVE FOOD ENTRY USES ENTRIES FROM LAST BATTLE"
540 PRINT ,,:INPUT "DO YOU WANT BATTLE DESCRIPTIONS (Y/N) ?";X$
580 IF X$= "Y"THEN 600
590 IF X$< > "N"THEN 540
600 L= 0:W= 0:R1= 0:Q1= 0:M3= 0:M4= 0:P1= 0:P2= 0:T1= 0:T2= 0
610 F(2)= 0:H(2)= 0:B(2)= 0:R2= 0:Q2= 0:C6= 0:F= 0:W0= 0:Y= 0:Y2= 0:U= 0:U2= 0
620 PRINT "


"
621 PRINT ,,"PRESS <RETURN> TO ENTER";:INPUT "";Y9$
625 PLOT 12
630 PRINT ,,"WHICH BATTLE DO YOU WANT (1-14) ? ";:INPUT A
650 IF A< > 0THEN 660
651 R= 1
655 IF R< > 0THEN 1140
660 IF A< = 0THEN 2860
665 IF A> = 15THEN 2860
670 C$= C$(A):M1= M1(A):M2= M2(A):C1= C1(A):C2= C2(A):M= M(A):U= 0
980 I1= 10+ (L- W)* 2:I2= 10+ (W- L)* 2
1010 D(1)= 100* INT ((M1* (100- I1)/ 2000)* (1+ (R1- Q1)/ (R1+ 1))+ .5)
1020 D(2)= 100* INT (M2* (100- I2)/ 2000+ .5)
1030 IF B$< > "Y"THEN 1050
1040 D(2)= 100* INT ((M2* (100- I2)/ 2000)* (1+ (R2- Q2)/ (R2+ 1))+ .5)
1050 REM
1060 M5= INT (M1* (1+ (P1- T1)/ (M3+ 1)))
1070 M6= INT (M2* (1+ (P2- T2)/ (M4+ 1)))
1080 F1= 5* M1/ 6
1090 PRINT
1100 PRINT :PRINT ,"THIS IS THE BATTLE OF ";C$;""
1105 PRINT
1110 IF X$= "N"THEN 1150
1120 IF A> 11THEN 1130
1125 ON AGOTO 3580,3620,3650,3690,3720,3750,3780,3800,3830,3860,3890
1130 ON A- 11GOTO 3920,3950,3980,
1140 PRINT ,"";C$;" INSTANT REPLAY"
1150 PRINT
1155 PRINT ,
1160 PRINT " ","CONFEDERACY","UNION"
1170 PRINT "  MEN";TAB( 17);M5;TAB( 33);M6
1180 PRINT "  MONEY";TAB( 16);"$";D(1);TAB( 32);"$";D(2)
1190 PRINT "  INFLATION";TAB( 17);I1+ 15;" %";TAB( 33);I2;" %"
1195 PRINT
1220 FOR I= 1TO D:IF B$< > "Y"THEN 1260
1240 IF I= 2THEN 1260
1250 PRINT :PRINT ,,"CONFEDERATE GENERAL.....";
1255 PRINT ""
1260 PRINT ,"HOW MUCH DO YOU WISH TO SPEND FOR"
1270 PRINT ,,"- FOOD .......";:INPUT "$ ";F
1290 IF F> = 0THEN 1360
1300 IF R1< > 0THEN 1330
1310 PRINT ,,,"NO PREVIOUS ENTRIES"
1320 GOTO 1270
1330 PRINT ,,," KEEP SAME ALLOCATIONS"
1340 PRINT :GOTO 1510
1360 F(I)= F
1370 PRINT ,,"- SALARIES ...";:INPUT "$ ";H(I)
1390 N= 1
1400 IF H(I)< 0THEN 1490
1410 PRINT ,,"- AMMUNITION..";:INPUT "$ ";B(I):N= 2:IF B(I)< 0THEN 1490
1450 PRINT :IF F(I)+ H(I)+ B(I)< = D(I)THEN 1510
1470 PRINT ,,,"*** YOU ONLY HAVE $";D(I);"  ***":GOTO 1270
1490 PRINT ,,,"+++ NEGATIVE VALUES NOT ALLOWED +++":ON NGOTO 1370,1410
1510 IF B$< > "Y"THEN 1550
1520 IF I= 2THEN 1550
1530 PRINT :PRINT ,,"UNION GENERAL.....";
1535 PRINT ""
1540 NEXT I
1550 FOR Z= 1TO D:IF B$< > "Y"THEN 1620
1570 ON ZGOTO 1580,1600
1580 PRINT ,"CONFEDERATE ";:GOTO 1620
1600 PRINT ,"UNION ";
1620 O= ((2* F(Z)^ 2+ H(Z)^ 2)/ F1^ 2+ 1)
1630 IF O< 10THEN 1660
1640 PRINT "MORALE IS HIGH"
1650 GOTO 1700
1660 IF O< 5THEN 1690
1670 PRINT "MORALE IS FAIR":GOTO 1700
1690 PRINT "MORALE IS POOR"
1700 IF B$< > "Y"THEN 1760
1710 O(Z)= O:NEXT Z
1730 O2= O(2):O= O(1)
1750 PRINT :PRINT ,,"CONFEDERATE GENERAL..."
1760 REM
1770 IF M< > 3THEN 1800
1780 PRINT ,"YOU ARE ON THE OFFENSIVE"
1790 GOTO 1840
1800 IF M< > 1THEN 1830
1810 PRINT ,"YOU ARE ON THE DEFENSIVE":GOTO 1840
1830 PRINT ,"BOTH SIDES ARE ON THE OFFENSIVE"
1840 PRINT
1845 GOSUB 260
1860 IF B$< > "Y"THEN 1910
1870 FOR I= 1TO 2:ON IGOTO 1890,1920
1890 PRINT ,"CONFEDERATE STRATEGY ";:GOTO 1920
1910 PRINT ,"YOUR STRATEGY ";
1920 INPUT Y
1930 IF ABS (Y- 3)< 3THEN 1960
1935 IF Y= 0THEN GOSUB 260:GOTO 1910
1940 PRINT ,,"STRATEGY NOT ALLOWED":GOTO 1910
1960 IF B$= "Y"THEN 2000
1970 IF Y= 5THEN 2830
1980 GOSUB 3110:GOTO 2170
2000 IF I= 2THEN 2040
2010 Y1= Y
2020 PRINT ,"UNION STRATEGY ";:NEXT I
2040 Y2= Y:Y= Y1:IF Y2= 5THEN 2020
2080 C6= (2* C2/ 5)* (1+ 1/ (2* (ABS (Y2- Y)+ 1)))
2090 C6= C6* (1.28+ (5* M2/ 6)/ (B(2)+ 1))
2100 C6= INT (C6* (1+ 1/ O2)+ .5)
2120 E2= 100/ O2:IF INT (C6+ E2)< M6THEN 2190
2140 C6= INT (13* M6/ 20):E2= 7* C6/ 13:U2= 1
2170 REM
2180 PRINT
2190 PRINT "


"
2195 PRINT ,,"CONFEDERACY";TAB( 30);"UNION"
2196 PRINT ""
2200 C5= (2* C1/ 5)* (1+ 1/ (2* (ABS (Y2- Y)+ 1)))
2210 C5= INT (C5* (1+ 1/ O)* (1.28+ F1/ (B(1)+ 1))+ .5)
2220 E= 100/ O
2230 IF C5+ 100/ O< M1* (1+ (P1- T1)/ (M3+ 1))THEN 2270
2240 C5= INT (13* M1/ 20* (1+ (P1- T1)/ (M3+ 1)))
2250 E= 7* C5/ 13:U= 1
2270 IF D= 1THEN 2500
2280 PRINT "  CASUALTIES:";TAB( 20);C5;TAB( 31);C6
2290 PRINT "  DESERTIONS:";TAB( 20);INT (E);TAB( 31);INT (E2)
2300 PRINT
2310 IF B$< > "Y"THEN 2530
2320 PRINT ,"COMPARED TO ACTUAL CASUALTIES AT ";C$
2330 PRINT ,,"CONFEDERATE:";INT (100* (C5/ C1)+ .5);"% OF THE ORIGINAL"
2340 PRINT ,,"      UNION:";INT (100* (C6/ C2)+ .5);"% OF THE ORIGINAL"
2350 PRINT
2370 IF U< > 1THEN 2380
2375 IF U2= 1THEN 2460
2380 IF U= 1THEN 2420
2390 IF U2= 1THEN 2440
2400 IF C5+ E= C6+ E2THEN 2460
2410 IF C5+ E< C6+ E2THEN 2440
2420 PRINT ,,"***  THE UNION WINS ***";C$
2430 GOTO 2600
2440 PRINT ,,"***  THE CONFEDERACY WINS  *** ";C$
2450 GOTO 2660
2460 PRINT ,,"- - - BATTLE OUTCOME UNRESOLVED - - -"
2470 W0= W0+ 1:IF A= 0THEN 2790
2490 GOTO 2680
2500 C6= INT (17* C2* C1/ (C5* 20))
2510 E2= 5* O:GOTO 2280
2530 PRINT ,"YOUR CASUALTIES WERE:";INT (100* (C5/ C1)+ .5);"% THE ACTUAL
2540 PRINT ,,"AT ";C$
2550 PRINT
2570 IF U= 1THEN 2590
2580 IF C5+ E< 17* C2* C1/ (C5* 20)+ 5* OTHEN 2630
2590 PRINT ,,"YOU LOSE AT ";C$
2600 IF A= 0THEN 2790
2610 L= L+ 1:GOTO 2680
2630 PRINT ,,"* * *  YOU WIN  * * * ";C$
2660 IF A= 0THEN 2790
2670 W= W+ 1
2680 T1= T1+ C5+ E:T2= T2+ C6+ E2:P1= P1+ C1:P2= P2+ C2
2720 Q1= Q1+ (F(1)+ H(1)+ B(1))
2730 Q2= Q2+ F(2)+ H(2)+ B(2)
2740 R1= R1+ M1* (100- I1)/ 20
2750 R2= R2+ M2* (100- I2)/ 20
2760 M3= M3+ M1:M4= M4+ M2:GOSUB 3300
2790 U= 0:U2= 0:PRINT ,,"------------------------------":GOTO 620
2830 PRINT ,,,"THE CONFEDERACY HAS SURRENDERED":GOTO 2860
2850 PRINT ,,,"THE UNION HAS SURRENDERED"
2860 PRINT "



"
2870 PRINT ,"THE CONFEDERACY ";
2880 PRINT "HAS WON";W;" BATTLES AND LOST";L;""
2890 IF Y= 5THEN 2940
2900 IF Y2= 5THEN 2920
2910 IF W< = LTHEN 2940
2915 IF Y= 5THEN 2940
2920 PRINT ,,"* * *  THE SOUTH HAS WON THE WAR  * * *"
2930 GOTO 2950
2940 PRINT ,,"* * *  THE NORTH HAS WON THE WAR   * * *"
2950 PRINT :IF R1= 0THEN 3100
2970 PRINT ,"FOR THE ";W+ L+ WO;" BATTLES FOUGHT (EXCEPT RERUNS)"
2980 PRINT TAB( 32);
2990 PRINT "CONFEDERACY","UNION"
3000 PRINT ,"HISTORICAL LOSSES:";TAB( 36);INT (P1+ .5);
3005 PRINT TAB( 48);
3008 PRINT INT (P2+ .5)
3010 PRINT ,"SIMULATED LOSSES:";"";"";TAB( 36);INT (T1+ .5);
3015 PRINT TAB( 48);
3018 PRINT INT (T2+ .5):PRINT
3030 PRINT ,,"% OF ORIGINAL:";TAB( 36);INT (100* (T1/ P1)+ .5);TAB( 48);INT (100* (T2/ P2)+ .5)
3040 IF B$= "Y"THEN 3100
3050 PRINT :PRINT ,,"UNION INTELLIGENCE SUGGESTS THAT THE SOUTH"
3070 PRINT ,,"USED STRATEGIES 1, 2, 3, 4 IN THE FOLLOWING %"
3075 PRINT ,
3080 PRINT ,S(1),S(2),S(3),S(4)
3100 GOTO 4010
3110 REM
3120 PRINT ,,"UNION STRATEGY IS: ";"";
3130 IF A< > 0THEN 3180
3140 INPUT "? ";Y2:IF Y2< = 0THEN 3160
3155 IF Y2< 5THEN 3290
3160 PRINT ,"ENTER 1, 2, 3, OR 4":GOTO 3140
3180 S0= 0:R= 100* RND (1)
3200 FOR I= 1TO 4:S0= S0+ S(I)
3240 IF R< S0THEN 3270
3250 NEXT I
3270 Y2= I:PRINT Y2;""
3290 RETURN
3300 REM
3330 S= 3:S0= 0:FOR I= 1TO 4
3360 IF S(I)< = 5THEN 3390
3370 S(I)= S(I)- S:S0= S0+ S
3390 NEXT I
3400 S(Y)= S(Y)+ S0
3410 RETURN
3440 DATA "BULL RUN ",18000,18500,1967,2708,1
3450 DATA "SHILOH",40000,44894,10699,13047,3
3460 DATA "SEVEN DAYS ",95000,115000,20614,15849,3
3470 DATA "SECOND BULL RUN ",54000,63000,10000,14000,2
3480 DATA "ANTIETAM ",40000,50000,10000,12000,3
3490 DATA "FREDERICKSBURG ",75000,120000,5377,12653,1
3500 DATA "MURFREESBORO ",38000,45000,11000,12000,1
3510 DATA "CHANCELLORSVILLE ",32000,90000,13000,17197,2
3520 DATA "VICKSBURG ",50000,70000,12000,19000,1
3530 DATA "GETTYSBURG",72500,85000,20000,23000,3
3540 DATA "CHICKAMAUGA ",66000,60000,18000,16000,2
3550 DATA "CHATTANOOGA ",37000,60000,36700,5800,2
3560 DATA "SPOTSYLVANIA ",62000,110000,17723,18000,2
3570 DATA "ATLANTA ",65000,100000,8500,3700,1
3580 PRINT ,"JUL 21,1861.  GEN BEAUREGARD, COM SOUTH, MET "
3590 PRINT ,"UNION FORCES UNDER GEN MCDOWELL IN A PREMATURE BATTLE"
3595 PRINT ,"AT BULL RUN.  GEN JACKSON HELPED PUSH BACK UNION ATTACK."
3610 GOTO 1150
3620 PRINT ,"4/5 - 4/7, 1862.  CSA SURPRISE ATTACK AT SHILOH"
3630 PRINT ,"FAILED DUE TO POOR ORGANIZATION."
3640 GOTO 1150
3650 PRINT ,"6/25 - 7/1 ,1862.  GEN LEE (CSA) HELD OFFENSIVE THRU"
3660 PRINT ,"THE BATTLE AND FORCED GEN MCCLELLAN AND UNION AWAY"
3670 PRINT ,"FROM RICHMOND."
3680 GOTO 1150
3690 PRINT ,"8/29 - 8/30, 1862.  COMBINED CSA FORCES UNDER LEE &"
3700 PRINT ,"JACKSON DROVE UNION FORCES BACK TO WASHINGTON."
3710 GOTO 1150
3720 PRINT ,"9/17, 1862.  SOUTH FAILED TO INCORPORATE MARYLAND"
3730 PRINT ,"INTO THE CSA."
3740 GOTO 1150
3750 PRINT ,"12/13, 1862.  CSA UNDER LEE REPULSED AN ATTACK BY"
3760 PRINT ,"THE UNION UNDER GEN BURNSIDE."
3770 GOTO 1150
3780 PRINT ,"12/31, 1862.  CSA UNDER GEN BRAGG WON A CLOSE BATTLE."
3790 GOTO 1150
3800 PRINT ,"5/1 - 5/6, 1863.  CSA HAD A COSTLY VICTORY AND LOST"
3810 PRINT ,"ONE OF THEIR FINEST GENERALS, 'STONEWALL' JACKSON."
3820 GOTO 1150
3830 PRINT ,"7/4, 1863.  A COSTLY DEFEAT FOR THE SOUTH BECAUSE"
3840 PRINT ,"IT GAVE THE NORTH ACCESS TO THE MISSISSIPPI."
3850 GOTO 1150
3860 PRINT ,"7/1 - 7/3, 1863.  A SOUTHERN MISTAKE BY LEE COST"
3870 PRINT ,"THEM ONE OF THE MOST CRUCIAL BATTLES OF THE WAR."
3880 GOTO 1150
3890 PRINT ,"9/15, 1863.  CONFUSION IN A FOREST LED TO A COSTLY"
3900 PRINT ,"SOUTHERN VICTORY."
3910 GOTO 1150
3920 PRINT ,"11/25, 1863.  AFTER THE CSA SIEGED GEN ROSENCRANS'"
3930 PRINT ,"ARMY FOR 3 MONTHS, GEN GRANT BROKE THE SIEGE."
3940 GOTO 1150
3950 PRINT ,"5/5, 1864.  GRANT'S PLAN TO ISOLATE LEE BEGAN TO FAIL"
3960 PRINT ,"HERE, AND CONTINUED AT COLD HARBOR & PETERSBURG."
3970 GOTO 1150
3980 PRINT ,"AUG 1864.  SHERMAN & 3 VETERAN ARMIES CONVERGED ON"
3990 PRINT ,"ATLANTA & DEALT THE DEATH BLOW TO THE CONFEDERACY."
4000 GOTO 1150
4010 END