wargames.bas

0 REM *    WARGAMES SIMULATOR BY ANDY GLENN     *
20 REM *     (C) 2020, ALL RIGHTS RESERVED       *
30 CLS$=CHR$(27)+"c"
40 DIM GRADE$(2)
50 DIM PFX%(9)
60 DIM NUM%(9)
70 DIM PFXHIT%(9)
80 DIM NUMHIT%(9)
90 DIM PASNAME$(2)
100 GRADE$(1)="F"
110 GRADE$(2)="F"
120 DIM COMPUTERTGT$(2)
130 DIM HUMANTGT$(3)
140 DIM A(9)
150 HT%=0
160 COMPUTERTGT$(1)=""
170 COMPUTERTGT$(2)=""
180 HUMANTGT$(1)=""
190 HUMANTGT$(2)=""
200 COMPUTER$=""
210 HUMAN$=""
220 CINDENT%=0
230 HINDENT%=0
240 SF%=0
250 PRINT CHR$(27)+"E"+CHR$(27)+"H":PRINT CHR$(27)+"c"
260 PRINT "WARGAMES SIMULATOR BY ANDY GLENN"
270 PRINT
280 INPUT "SELECT DELAY FOR TERMINAL CHARACTERS: ",D%
290 INPUT "DO YOU WANT HELP ENABLED (Y/N): ",H$
300 IF H$="N" OR H$="n" THEN H$="N":ELSE:H$="Y"
310 PRINT:PRINT "SELECT SYSTEM":PRINT
320 PRINT "1. IMSAI 8080 (DEFAULT)
330 PRINT "2. AMSTRAD PCW"
340 PRINT:INPUT "SYSTEM:",S$
350 IF S$="2" THEN CLS$=CHR$(27)+"E"+CHR$(27)+"H"
360 IF H$="Y" THEN F$="INTRO.TXT":GOSUB 7270:ELSE:GOTO 380
370 IF H$="Y" THEN F$="IMSAI.TXT":GOSUB 7270:ELSE:GOTO 380
380 PRINT CLS$
390 PRINT"62K CP/M VERS. 2.2 MCL030210-D-F8"
400 PRINT
410 INPUT"A>",COMMAND$
420 IF COMMAND$="CLS" OR COMMAND$="cls" THEN PRINT CLS$:GOTO 410
430 IF COMMAND$="BYE" OR COMMAND$="bye" THEN PRINT "System halted, bye.":END
440 IF COMMAND$="DIR" OR COMMAND$="dir" THEN PRINT "A: BYE     COM : CLS     COM : DIR     COM: MODEM   COM": PRINT "A: DIALER  COM": GOTO 410
450 IF COMMAND$="MODEM" OR COMMAND$="modem" OR COMMAND$="MODEM.COM" OR COMMAND$="modem.com" THEN 480
460 IF COMMAND$="DIALER" OR COMMAND$="dialer" OR COMMAND$="DIALER.COM" OR COMMAND$="dialer.com" THEN 1200
470 PRINT COMMAND$;"?":GOTO 410
480 FOR W%=1 TO D%*10:NEXT W%:PRINT CLS$
490 PRINT "CHECKING DISK DRIVE";:GOSUB 5460
500 PRINT "LOADING DISK";:GOSUB 5460
510 PRINT "CHECKING DISK";:GOSUB 5460
520 PRINT "READING PROGRAM FROM DISK";:GOSUB 5460
530 FOR W%=1 TO D%*25:NEXT W%:PRINT CLS$
540 PRINT "DIALING";:GOSUB 5460
550 PRINT "CONNECTING";:GOSUB 5460
560 FOR W%=1 TO D%*20:NEXT W%:PRINT CLS$
570 T$="PDP 11/270 PRB TIP #45                                                TTY 34/984 ":GOSUB 5470:PRINT
580 T$="WELCOME TO THE SEATTLE PUBLIC SCHOOL DISTRICT DATANET":GOSUB 5470:PRINT
590 FOR P%=1 TO 3
600 T$="PLEASE LOGON WITH USER PASSWORD: ":GOSUB 5470:INPUT "",RESPONSE$
610 IF RESPONSE$="PENCIL" OR RESPONSE$="pencil" THEN T$="PASSWORD VERIFIED":GOSUB 5470:PRINT:PRINT:GOTO 680
620 T$="INVALID PASSWORD":GOSUB 5470:PRINT:PRINT
630 NEXT P%
640 T$="TOO MANY INVALID PASSWORD ATTEMPTS":GOSUB 5470:PRINT
650 T$="--DISCONNECTED--":GOSUB 5470:INPUT "",RESPONSE$
660 IF H$="Y" AND GRADE$(1)<>"F" AND GRADE$(2)<>"F" THEN F$="GRADES.TXT":GOSUB 7270
670 GOTO 380
680 T$="PLEASE ENTER STUDENT NAME: ":GOSUB 5470:INPUT "",STUDENTNAME$
690 FOR A%=1 TO LEN(STUDENTNAME$):IF MID$(STUDENTNAME$,A%,8)="Lightman" OR MID$(STUDENTNAME$,A%,8)="LIGHTMAN" OR MID$(STUDENTNAME$,A%,8)="lightman" THEN STUDENTNAME$="Lightman, David L.":NEXT A%
700 IF STUDENTNAME$="Lightman, David L." THEN 750
710 FOR A%=1 TO LEN(STUDENTNAME$):IF MID$(STUDENTNAME$,A%,4)="Mack" OR MID$(STUDENTNAME$,A%,4)="MACK" OR MID$(STUDENTNAME$,A%,4)="mack" THEN STUDENTNAME$="Mack, Jennifer K.":NEXT A%
720 IF STUDENTNAME$="Mack, Jennifer K." THEN 900
730 IF STUDENTNAME$="Exit" OR STUDENTNAME$="EXIT" OR STUDENTNAME$="exit" THEN 650
740 T$="NO STUDENT RECORD FOUND":GOSUB 5470:PRINT:GOTO 680
750 STUDENT%=1
760 PRINT
770 T$="STUDENT RECORD: "+STUDENTNAME$:GOSUB 5470:PRINT
780 PRINT
790 T$="     CLASS #    COURSE TITLE         GRADE    TEACHER    PERIOD    ROOM":GOSUB 5470:PRINT
800 T$="   ______________________________________________________________________":GOSUB 5470:PRINT
810 PRINT
820 T$="      S-202     BIOLOGY 2              "+GRADE$(STUDENT%)+"      LIGGET       3       214":GOSUB 5470:PRINT
830 T$="      E-314     ENGLISH 11B            D      TURMAN       5       172":GOSUB 5470:PRINT
840 T$="      H-221     WORLD HISTORY 11B      C      DWYMER       2       108":GOSUB 5470:PRINT
850 T$="      M-106     TRIG 2                 B      DICKERSON    4       315":GOSUB 5470:PRINT
860 T$="      PE-02     PHYSICAL EDUCATION     C      COMSTOCK     1       GYM":GOSUB 5470:PRINT
870 T$="      M-122     CALCULUS 1             B      LOGAN        6       240":GOSUB 5470:PRINT
880 PRINT
890 GOTO 1040
900 STUDENT%=2
910 PRINT
920 T$="STUDENT RECORD: "+STUDENTNAME$:GOSUB 5470:PRINT
930 PRINT
940 T$="     CLASS #    COURSE TITLE         GRADE    TEACHER    PERIOD    ROOM":GOSUB 5470:PRINT
950 T$="   ______________________________________________________________________":GOSUB 5470:PRINT
960 PRINT
970 T$="      S-202     BIOLOGY 2              "+GRADE$(STUDENT%)+"      LIGGET       3       214":GOSUB 5470:PRINT
980 T$="      E-325     ENGLISH 11B            A      ROBINSON     1       114":GOSUB 5470:PRINT
990 T$="      H-221     WORLD HISTORY 11B      B      DWYER        2       108":GOSUB 5470:PRINT
1000 T$="      M-104     GEOMETRY 2             D      HALQUIST     4       307":GOSUB 5470:PRINT
1010 T$="      B-107     ECONOMICS              D      MARKS        5       122":GOSUB 5470:PRINT
1020 T$="      PE-02     PHYSICAL EDUCATION     C      COMSTOCK     6       GYM":GOSUB 5470:PRINT
1030 PRINT
1040 T$="(E)DIT: ":GOSUB 5470:INPUT "",RESPONSE$
1050 IF RESPONSE$="E" OR RESPONSE$="e" OR RESPONSE$="edit" THEN 1070:ELSE :PRINT:GOTO 680
1060 PRINT
1070 TEMPGRADE$=GRADE$(STUDENT%)
1080 T$="CLASS: ":GOSUB 5470:INPUT "",CLASS$
1090 T$="GRADE: ":GOSUB 5470:INPUT "",GRADE$(STUDENT%)
1100 IF CLASS$="S-202" OR CLASS$="s-202" THEN 1120
1110 PRINT:T$="RECORD LOCKED":GOSUB 5470:GRADE$(STUDENT%)=TEMPGRADE$:GOTO 1030
1120 IF GRADE$(STUDENT%)="a" OR GRADE$(STUDENT%)="A" THEN GRADE$(STUDENT%)="A":PRINT:T$="RECORD UPDATED":GOSUB 5470:PRINT:GOTO 680
1130 IF GRADE$(STUDENT%)="b" OR GRADE$(STUDENT%)="B" THEN GRADE$(STUDENT%)="B":PRINT:T$="RECORD UPDATED":GOSUB 5470:PRINT:GOTO 680
1140 IF GRADE$(STUDENT%)="c" OR GRADE$(STUDENT%)="C" THEN GRADE$(STUDENT%)="C":PRINT:T$="RECORD UPDATED":GOSUB 5470:PRINT:GOTO 680
1150 IF GRADE$(STUDENT%)="d" OR GRADE$(STUDENT%)="D" THEN GRADE$(STUDENT%)="D":PRINT:T$="RECORD UPDATED":GOSUB 5470:PRINT:GOTO 680
1160 IF GRADE$(STUDENT%)="e" OR GRADE$(STUDENT%)="E" THEN GRADE$(STUDENT%)="E":PRINT:T$="RECORD UPDATED":GOSUB 5470:PRINT:GOTO 680
1170 IF GRADE$(STUDENT%)="f" OR GRADE$(STUDENT%)="F" THEN GRADE$(STUDENT%)="F":PRINT:T$="RECORD UPDATED":GOSUB 5470:PRINT:GOTO 680
1180 IF GRADE$(STUDENT%)="u" OR GRADE$(STUDENT%)="U" THEN GRADE$(STUDENT%)="U":PRINT:T$="RECORD UPDATED":GOSUB 5470:PRINT:GOTO 680
1190 PRINT:T$="RECORD LOCKED": GOSUB 5470:GRADE$(STUDENT%)=TEMPGRADE$:GOTO 1030
1200 HITS%=0
1210 PF1%=399
1220 PF2%=437
1230 PF3%=767
1240 PF4%=936
1250 DATA 437,1083
1260 DATA 936,1493
1270 DATA 399,2364
1280 DATA 437,2977
1290 DATA 767,3395
1300 DATA 399,3582
1310 DATA 936,3923
1320 DATA 767,7305
1330 DATA 437,8739
1340 RESTORE
1350 FOR A%=1 TO 9
1360 READ PFX%(A%)
1370 READ NUM%(A%)
1380 NEXT A%
1390 PRINT CLS$
1400 PRINT:PRINT "DIALER":PRINT
1410 INPUT "MENU - (S)CAN, (V)IEW OR E(X)IT: ",RESPONSE$
1420 PRINT
1430 IF RESPONSE$="S" OR RESPONSE$="s" OR RESPONSE$="SCAN" OR RESPONSE$="scan" THEN 1470
1440 IF RESPONSE$="V" OR RESPONSE$="v" OR RESPONSE$="VIEW" OR RESPONSE$="view" THEN 2370
1450 IF RESPONSE$="X" OR RESPONSE$="x" OR RESPONSE$="EXIT" OR RESPONSE$="exit" THEN 380
1460 GOTO 1390
1470 INPUT "HOW MANY NUMBERS FOR EACH PREFIX TO DIAL: ",ND%
1480 IF ND% > 9999 THEN PRINT "MAXIMUM IS 9999":GOTO 1470
1490 LN%=0
1500 HITS%=0
1510 PFXSET%=0
1520 FOR A% = 1 TO ND%
1530 IF LN%=0 THEN PRINT CLS$
1540 IF LN%=0 THEN PRINT "                    TO SCAN FOR CARRIER TONES, PLEASE LIST"
1550 IF LN%=0 THEN PRINT"                         DESIRED AREA CODES AND PREFIXES"
1560 IF LN%=0 THEN PRINT
1570 IF LN%=0 THEN PRINT "AREA                AREA                AREA                AREA"
1580 IF LN%=0 THEN PRINT "CODE PRFX NUMBER    CODE PRFX NUMBER    CODE PRFX NUMBER    CODE PRFX NUMBER"
1590 IF LN%=0 THEN PRINT "________________________________________________________________________________":PRINT
1600 IF LN%=0 AND A%=1 THEN PRINT "(311)";PF1%;"          (311)";PF2%;"          (311)";PF3%;"          (311)";PF4%
1610 IF PFXSET%=1 THEN 1740
1620 IF LN%=0 AND A%=1 THEN INPUT "(311) ",PF1T%
1630 IF LN%=0 AND A%=1 THEN INPUT "                    (311) ",PF2T%
1640 IF LN%=0 AND A%=1 THEN INPUT "                                        (311) ",PF3T%
1650 IF LN%=0 AND A%=1 THEN INPUT "                                                            (311) ",PF4T%
1660 IF LN%=0 AND A%=1 THEN PRINT
1670 IF LN%=0 AND A%=1 AND PF1T%>0 AND PF1T%<1000 THEN PF1%=PF1T%
1680 IF LN%=0 AND A%=1 AND PF2T%>0 AND PF2T%<1000 THEN PF2%=PF2T%
1690 IF LN%=0 AND A%=1 AND PF3T%>0 AND PF3T%<1000 THEN PF3%=PF3T%
1700 IF LN%=0 AND A%=1 AND PF4T%>0 AND PF4T%<1000 THEN PF4%=PF4T%
1710 IF PF1T%>999 OR PF2T%>999 OR PF3T%>999 OR PF4T%>999 THEN PRINT:INPUT "INVALID PREFIXES ENTERED - PRESS ENTER KEY TO CONTINUE",RESPONSE$:PRINT:GOTO 1490
1720 IF LN%=0 AND A%=1 THEN PFXSET%=1:GOTO 1530
1730 IF INKEY$="Q" OR INKEY$="q" THEN 2310
1740 IF A% > 0 AND A% < 10 THEN Z$="000"
1750 IF A% > 9 AND A% < 100 THEN Z$="00"
1760 IF A% > 99 AND A% < 1000 THEN Z$="0"
1770 IF A% > 999 THEN Z$=""
1780 PRINT "(311)";PF1%;Z$;A%;
1790 FD%=0
1800 HIT$="N"
1810 FOR N%=1 TO 9
1820 IF INKEY$="Q" OR INKEY$="q" THEN 2310
1830 IF PF1%=PFX%(N%) AND A%=NUM%(N%) THEN HIT$="Y"
1840 IF PF1%=PFX%(N%) AND A%=NUM%(N%) THEN FD%=N%
1850 NEXT N%
1860 IF HIT$="Y" THEN HITS%=HITS%+1
1870 IF HIT$="Y" THEN PFXHIT%(HITS%)=PFX%(FD%)
1880 IF HIT$="Y" THEN NUMHIT%(HITS%)=NUM%(FD%)
1890 IF HIT$="Y" THEN PRINT "*   ";:ELSE:PRINT "    ";
1900 FD%=0
1910 HIT$="N"
1920 PRINT "(311)";PF2%;Z$;A%;
1930 FOR N%=1 TO 9
1940 IF INKEY$="Q" OR INKEY$="q" THEN 2310
1950 IF PF2%=PFX%(N%) AND A%=NUM%(N%) THEN HIT$="Y"
1960 IF PF2%=PFX%(N%) AND A%=NUM%(N%) THEN FD%=N%
1970 NEXT N%
1980 IF HIT$="Y" THEN HITS%=HITS%+1
1990 IF HIT$="Y" THEN PFXHIT%(HITS%)=PFX%(FD%)
2000 IF HIT$="Y" THEN NUMHIT%(HITS%)=NUM%(FD%)
2010 IF HIT$="Y" THEN PRINT "*   ";:ELSE:PRINT "    ";
2020 FD%=0
2030 HIT$="N"
2040 PRINT "(311)";PF3%;Z$;A%;
2050 FOR N%=1 TO 9
2060 IF INKEY$="Q" OR INKEY$="q" THEN 2310
2070 IF PF3%=PFX%(N%) AND A%=NUM%(N%) THEN HIT$="Y"
2080 IF PF3%=PFX%(N%) AND A%=NUM%(N%) THEN FD%=N%
2090 NEXT N%
2100 IF HIT$="Y" THEN HITS%=HITS%+1
2110 IF HIT$="Y" THEN PFXHIT%(HITS%)=PFX%(FD%)
2120 IF HIT$="Y" THEN NUMHIT%(HITS%)=NUM%(FD%)
2130 IF HIT$="Y" THEN PRINT "*   ";:ELSE:PRINT "    ";
2140 FD%=0
2150 HIT$="N"
2160 PRINT "(311)";PF4%;Z$;A%;
2170 FOR N%=1 TO 9
2180 IF INKEY$="Q" OR INKEY$="q" THEN 2310
2190 IF PF4%=PFX%(N%) AND A%=NUM%(N%) THEN HIT$="Y"
2200 IF PF4%=PFX%(N%) AND A%=NUM%(N%) THEN FD%=N%
2210 NEXT N%
2220 IF HIT$="Y" THEN HITS%=HITS%+1
2230 IF HIT$="Y" THEN PFXHIT%(HITS%)=PFX%(FD%)
2240 IF HIT$="Y" THEN NUMHIT%(HITS%)=NUM%(FD%)
2250 IF HIT$="Y" THEN PRINT "*":ELSE:PRINT " "
2260 FD%=0
2270 HIT$="N"
2280 LN%=LN%+1
2290 IF LN%=15 THEN LN%=0
2300 NEXT A%
2310 IF HITS%>SF% THEN SF%=HITS%
2320 PRINT:INPUT "                      PRESS ENTER KEY TO RETURN TO MENU",RESPONSE$
2330 IF SF%=0 THEN 1390
2340 PRINT CLS$
2350 IF H$="Y" AND HITS%>0 THEN F$="DIALER.TXT":GOSUB 7270
2360 GOTO 1390
2370 PRINT CLS$
2380 PRINT "                  NUMBERS FOR WHICH CARRIER TONES WERE DETECTED:"
2390 PRINT
2400 IF SF%=0 THEN PRINT "                                NO SYSTEMS FOUND"
2410 IF SF%=0 THEN PRINT:PRINT "         NOTE: TYPE LOAD AND PRESS ENTER KEY TO RESTORE SCAN RESULTS"
2420 FOR A%=1 TO SF%
2430 IF NUMHIT%(A%) >0 AND NUMHIT%(A%) <10 THEN Z$="000"
2440 IF NUMHIT%(A%) >9 AND NUMHIT%(A%) <100 THEN Z$="00"
2450 IF NUMHIT%(A%) >99 AND NUMHIT%(A%) <1000 THEN Z$="0"
2460 IF NUMHIT%(A%) >999 THEN Z$=""
2470 PRINT "                              (";CHR$(A%+64);")  (311)";PFXHIT%(A%);Z$;NUMHIT%(A%)
2480 NEXT A%
2490 PRINT:PRINT:PRINT "                        PRESS ENTER KEY TO RETURN TO MENU"
2500 INPUT "                        OR SELECT SYSTEM: ",RESPONSE$
2510 IF RESPONSE$="LOAD" OR RESPONSE$="load" THEN SF%=9:RESTORE:FOR A%=1 TO SF%:READ PFXHIT%(A%):READ NUMHIT%(A%):NEXT A%:GOTO 2370
2520 IF SF%=0 THEN 2700
2530 IF RESPONSE$="A" OR RESPONSE$="a" THEN GOSUB 7430:GOTO 2370
2540 IF SF%=1 THEN 2700
2550 IF RESPONSE$="B" OR RESPONSE$="b" THEN GOSUB 7430:GOTO 2370
2560 IF SF%=2 THEN 2700
2570 IF RESPONSE$="C" OR RESPONSE$="c" THEN 2710
2580 IF SF%=3 THEN 2700
2590 IF RESPONSE$="D" OR RESPONSE$="d" THEN GOSUB 7430:GOTO 2370
2600 IF SF%=4 THEN 2700
2610 IF RESPONSE$="E" OR RESPONSE$="e" THEN GOSUB 7430:GOTO 2370
2620 IF SF%=5 THEN 2700
2630 IF RESPONSE$="F" OR RESPONSE$="f" THEN 2840
2640 IF SF%=6 THEN 2700
2650 IF RESPONSE$="G" OR RESPONSE$="g" THEN GOSUB 7430:GOTO 2370
2660 IF SF%=7 THEN 2700
2670 IF RESPONSE$="H" OR RESPONSE$="h" THEN GOSUB 7430:GOTO 2370
2680 IF SF%=8 THEN 2700
2690 IF RESPONSE$="I" OR RESPONSE$="i" THEN 3710
2700 GOTO 1390
2710 PRINT CLS$
2720 PRINT "DIALING";:GOSUB 5460:PRINT CLS$
2730 PRINT "CONNECTING";:GOSUB 5460:PRINT CLS$
2740 FOR W%=1 TO D%*20:NEXT W%:PRINT CLS$
2750 T$="TGS SYSTEM A-45 34:34:33                                              Y-1293.323 ":GOSUB 5470:PRINT
2760 T$="UNION MARINE BANK - SOUTHWEST REGIONAL DATA CENTER":GOSUB 5470:PRINT
2770 PRINT
2780 T$="LOGON    > ":GOSUB 5470:INPUT "",RESPONSE$
2790 T$="PASSWORD > ":GOSUB 5470:INPUT "",RESPONSE$
2800 PRINT
2810 T$="INVALID LOGON. CLOSING CONNECTION":GOSUB 5470:PRINT
2820 T$="--DISCONNECTED--":GOSUB 5470:INPUT "",RESPONSE$
2830 GOTO 2370
2840 PRINT CLS$
2850 PRINT "DIALING";:GOSUB 5460:PRINT CLS$
2860 PRINT "CONNECTING";:GOSUB 5460:PRINT CLS$
2870 FOR W%=1 TO D%*20:NEXT W%:PRINT CLS$
2880 T$="007:2312:435:936                                       PAN-AM RESERVATION SYSTEM":GOSUB 5470:PRINT
2890 T$="TERMINAL STATUS: ACTIVE":GOSUB 5470:PRINT
2900 PRINT
2910 T$="  1.  FLIGHT SCHEDULES":GOSUB 5470:PRINT
2920 T$="  2.  CREDIT CHECK":GOSUB 5470:PRINT
2930 T$="  3.  PASSENGER INFORMATION":GOSUB 5470:PRINT
2940 T$="  4.  SYSTEM STATUS FUNCTIONS":GOSUB 5470:PRINT
2950 T$="  5.  ALTERNATE ROUTINGS":GOSUB 5470:PRINT
2960 PRINT
2970 T$="MENU CHOICE: ":GOSUB 5470:INPUT "",RESPONSE$
2980 IF RESPONSE$="1" THEN 3670
2990 IF RESPONSE$="2" THEN 3680
3000 IF RESPONSE$="3" THEN 3060
3010 IF RESPONSE$="4" THEN 3690
3020 IF RESPONSE$="5" THEN 3700
3030 T$="CLOSING CONNECTION":GOSUB 5470:PRINT
3040 T$="--DISCONNECTED--":GOSUB 5470:INPUT "",RESPONSE$
3050 GOTO 2370
3060 PRINT CLS$
3070 T$="007:2312:435:936                                       PAN-AM RESERVATION SYSTEM":GOSUB 5470:PRINT
3080 PRINT
3090 T$="  1.  NEW RESERVATION":GOSUB 5470:PRINT
3100 T$="  2.  CHECK RESERVATION":GOSUB 5470:PRINT
3110 PRINT
3120 T$="MENU CHOICE: ":GOSUB 5470:INPUT "",RESPONSE$
3130 IF RESPONSE$="1" THEN 3160
3140 IF RESPONSE$="2" THEN 3410
3150 GOTO 2870
3160 PRINT CLS$
3170 T$="007:2312:435:936                                       PAN-AM RESERVATION SYSTEM":GOSUB 5470:PRINT
3180 T$="DESTINATION         : ":GOSUB 5470:INPUT "",DEST$
3190 T$="POINT OF DEPARTURE  : CHICAGO/O'HARE":GOSUB 5470:PRINT
3200 PRINT
3210 T$="009:4277:019:907                                        DATE OF ISSUE : 03/10/82":GOSUB 5470:PRINT
3220 PRINT
3230 T$="                                           DEPART DATE : 08/18/83    FLIGHT: 114":GOSUB 5470:PRINT
3240 PRINT
3250 T$="                            CARRIER:   FLIGHT:   CLASS:   DATE:   TIME:  STATUS:":GOSUB 5470:PRINT
3260 T$="                              PANAM       114       Q     18AUG  0815A    OK":GOSUB 5470:PRINT
3270 T$="FROM: CHICAGO/O'HARE":GOSUB 5470:PRINT 
3280 T$="  TO: "+DEST$:GOSUB 5470:PRINT
3290 PRINT
3300 T$="NUMBER OF PASSENGERS  : ":GOSUB 5470:INPUT "",NUMPAS%
3310 FOR PAS%=1 TO NUMPAS%
3320 T$="NAME OF PASSENGER #":GOSUB 5470:PRINT PAS%;:INPUT ": ",PASNAME$(PAS%)
3330 NEXT PAS%
3340 PRINT
3350 T$="FARE:  ": GOSUB 5470: PRINT USING "####.##";1164.1*NUMPAS%;
3360 T$="   GJATWA  SLM  TWA  GJA":GOSUB 5470:PRINT
3370 T$="TAX:   ":GOSUB 5470:PRINT USING "####.##";70.9*NUMPAS%
3380 T$="TOTAL: ":GOSUB 5470:PRINT USING "####.##";(1164.1+70.9)*NUMPAS%
3390 T$="REQUEST: SPEC DATA":GOSUB 5470:PRINT
3400 T$="                         PRESS 'ENTER' KEY TO RETURN TO MENU":GOSUB 5470:INPUT "",RESPONSE$:GOTO 3060
3410 PRINT CLS$
3420 T$="007:2312:435:936                                       PAN-AM RESERVATION SYSTEM":GOSUB 5470:PRINT
3430 T$="DESTINATION         : "+DEST$:GOSUB 5470:PRINT
3440 T$="POINT OF DEPARTURE  : CHICAGO/O'HARE":GOSUB 5470:PRINT
3450 PRINT
3460 T$="009:4277:019:907                                        DATE OF ISSUE : 03/10/82":GOSUB 5470:PRINT
3470 PRINT
3480 T$="                                           DEPART DATE : 08/18/83    FLIGHT: 114":GOSUB 5470:PRINT
3490 PRINT
3500 T$="                            CARRIER:   FLIGHT:   CLASS:   DATE:   TIME:  STATUS:":GOSUB 5470:PRINT
3510 T$="                              PANAM       114       Q     18AUG  0815A    OK":GOSUB 5470:PRINT
3520 T$="FROM: CHICAGO/O'HARE":GOSUB 5470:PRINT 
3530 T$="  TO: "+DEST$:GOSUB 5470:PRINT
3540 PRINT
3550 T$="NUMBER OF PASSENGERS   :":GOSUB 5470:PRINT NUMPAS%
3560 FOR PAS%=1 TO NUMPAS%
3570 T$="NAME OF PASSENGER #":GOSUB 5470:PRINT PAS%;" : ";
3580 T$=PASNAME$(PAS%):GOSUB 5470:PRINT
3590 NEXT PAS%
3600 PRINT
3610 T$="FARE:  ":GOSUB 5470:PRINT USING "####.##";1164.1*NUMPAS%;
3620 T$="   GJATWA  SLM  TWA  GJA":GOSUB 5470:PRINT
3630 T$="TAX:   ":GOSUB 5470:PRINT USING "####.##";70.9*NUMPAS%
3640 T$="TOTAL: ":GOSUB 5470:PRINT USING "####.##";(1164.1+70.9)*NUMPAS%
3650 T$="REQUEST: SPEC DATA":GOSUB 5470:PRINT
3660 T$="                         PRESS 'ENTER' KEY TO RETURN TO MENU":GOSUB 5470:INPUT "",RESPONSE$:GOTO 3060
3670 PRINT CLS$:T$="NOT YET IMPLEMENTED":GOSUB 5470:GOTO 2870
3680 PRINT CLS$:T$="NOT YET IMPLEMENTED":GOSUB 5470:GOTO 2870
3690 PRINT CLS$:T$="NOT YET IMPLEMENTED":GOSUB 5470:GOTO 2870
3700 PRINT CLS$:T$="NOT YET IMPLEMENTED":GOSUB 5470:GOTO 2870
3710 PRINT CLS$
3720 PRINT "DIALING";:GOSUB 5460
3730 PRINT "CONNECTING";:GOSUB 5460
3740 FOR W%=1 TO D%*20:NEXT W%:PRINT CLS$
3750 PRINT "                         #":FOR W%=1 TO D%*5:NEXT W%:PRINT CLS$
3760 PRINT:PRINT "                                           #":FOR W%=1 TO D%*5:NEXT W%:PRINT CLS$
3770 PRINT:PRINT:PRINT "                                                          #":FOR W%=1 TO D%*5:NEXT W%:PRINT CLS$
3780 PRINT:PRINT:PRINT
3790 LOGON$=""
3800 T$="LOGON: ":GOSUB 5470:INPUT "",LOGON$
3810 IF LOGON$="joshua" OR LOGON$="JOSHUA" THEN 3900
3820 IF LOGON$="help" OR LOGON$="HELP" THEN GOSUB 4680:GOTO 3790
3830 IF LOGON$="help logon" OR LOGON$="HELP LOGON" THEN GOSUB 4680:GOTO 3790
3840 IF LOGON$="help games" OR LOGON$="HELP GAMES" THEN GOSUB 4710:GOTO 3790
3850 IF LOGON$="list games" OR LOGON$="LIST GAMES" THEN GOSUB 4750:GOTO 3790
3860 PRINT "IDENTIFICAION NOT RECOGNIZED BY SYSTEM"
3870 PRINT "--CONNECTION TERMINATED--"
3880 INPUT "",RESPONSE$
3890 GOTO 2370
3900 PRINT CLS$
3910 PRINT "145          11456          11889          11893":FOR W%=1 TO D%:NEXT W%
3920 PRINT "PRT CON. 3.4.5. SECTRAN 9.4.3.          PORT STAT: SB-345":FOR W%=1 TO D%:NEXT W%
3930 PRINT:FOR W%=1 TO D%:NEXT W%:PRINT CLS$
3940 PRINT "(311) 655-7385":FOR W%=1 TO D%:NEXT W%
3950 PRINT:FOR W%=1 TO D%:NEXT W%:PRINT:FOR W%=1 TO D%:NEXT W%:PRINT CLS$:PRINT:FOR W%=1 TO D%:NEXT W%:PRINT:FOR W%=1 TO D%:NEXT W%:PRINT CLS$:PRINT:PRINT:FOR W%=1 TO D%:NEXT W%:PRINT CLS$
3960 PRINT "(311) 767-8739":FOR W%=1 TO D%:NEXT W%
3970 PRINT "(311) 936-2364":FOR W%=1 TO D%:NEXT W%:PRINT CLS$
3980 PRINT "PRT. STAT.                   CRT. DEF.":FOR W%=1 TO D%:NEXT W%
3990 PRINT "================================================"
4000 PRINT "FSKJJSJ: SUSJKJ: SUFJSL:          DKSJL: SKFJJ: SDKFJLJ":FOR W%=1 TO D%:NEXT W%
4010 PRINT "SYSPROC FUNCT READY          ALT NET READY":FOR W%=1 TO D%:NEXT W%
4020 PRINT "CPU AUTH RY-345-AX3     SYSCOMP STATUS: ALL PORTS ACTIVE":FOR W%=1 TO D%:NEXT W%
4030 PRINT "22/34534.90/3289               CVB-3904-39490":FOR W%=1 TO D%:NEXT W%
4040 PRINT "(311) 936-2384":FOR W%=1 TO D%:NEXT W%
4050 PRINT "(311) 936-3582":FOR W%=1 TO D%:NEXT W%:PRINT CLS$
4060 PRINT "22/34534.3209                  CVB-3904-39490":FOR W%=1 TO D%:NEXT W%
4070 PRINT "12934-AD-43KJ: CENTR PAK":FOR W%=1 TO D%:NEXT W%
4080 PRINT "(311) 767-1083":FOR W%=1 TO D%:NEXT W%:PRINT CLS$
4090 PRINT "FLD CRS: 33.34.543     HPBS: 34/56/67/83     STATUS FLT  034/304":FOR W%=1 TO D%:NEXT W%:PRINT CLS$
4100 PRINT "1105-45-F6-B456          NOPR STATUS: TRAK OFF     PRON ACTIVE":FOR W%=1 TO D%:NEXT W%
4110 PRINT "(45:45:45  WER: 45/29/01 XCOMP: 43239582 YCOMP: 3492930D ZCOMP: 343906834":FOR W%=1 TO D%:NEXT W%
4120 PRINT "                                          SRON: 65=65/74/84/65/89":FOR W%=1 TO D%:NEXT W%:PRINT CLS$
4130 PRINT "-           PRT. STAT.                        CRY. DEF.":FOR W%=1 TO D%:NEXT W%
4140 PRINT "(311) 936-1582==============================================":FOR W%=1 TO D%:NEXT W%
4150 PRINT "                  3453                3594":FOR W%=1 TO D%:NEXT W%:PRINT CLS$
4160 PRINT "FLJ42   TK01   BM90   R601   6J82   FP03   ZWO::   JW89":FOR W%=1 TO D%:NEXT W%
4170 PRINT "DEF TRPCON: 43.45342.349":FOR W%=1 TO D%:NEXT W%
4180 PRINT "SYSPROC FUNCT READY                            ALT NET READY":FOR W%=1 TO D%:NEXT W%
4190 PRINT:FOR W%=1 TO D%*25:NEXT W%
4200 PRINT "CPU AUTH RY-345-AX3     SYSCOMP STATUS: ALL PORTS ACTIVE":FOR W%=1 TO D%:NEXT W%
4210 PRINT "(311) 936-2364":FOR W%=1 TO D%:NEXT W%
4220 PRINT "**********************************************************************":FOR W%=1 TO D%:NEXT W%
4230 PRINT "1105-45-F6-B456                 NOPR STATUS: TRAK OFF   PRON ACTIVE":PRINT CLS$:FOR W%=1 TO D%:NEXT W%
4240 PRINT CLS$
4250 T$="GREETINGS PROFESSOR FALKEN.":GOSUB 5470:PRINT:PRINT
4260 INPUT "",JOSHUA$
4270 IF JOSHUA$="chat" OR JOSHUA$="CHAT" THEN GOSUB 4390:GOTO 4260
4280 FOR A%=1 TO LEN(JOSHUA$)
4290 IF MID$(JOSHUA$,A%,5)="hello" OR MID$(JOSHUA$,A%,5)="HELLO" THEN GOSUB 4390
4300 NEXT A%
4310 IF JOSHUA$="help games" OR JOSHUA$="HELP GAMES" THEN GOSUB 4710:GOTO 4260
4320 IF JOSHUA$="list games" OR JOSHUA$="LIST GAMES" THEN GOSUB 4750:GOTO 4260
4330 IF JOSHUA$="help" OR JOSHUA$="HELP" THEN GOSUB 4680:GOTO 4260
4340 IF JOSHUA$="GLOBAL THERMONUCLEAR WAR" OR JOSHUA$="global thermonuclear war" THEN 4910
4350 IF JOSHUA$="TICTACTOE" OR JOSHUA$="tictactoe" THEN 7470
4360 IF JOSHUA$="exit" OR JOSHUA$="EXIT" THEN PRINT:T$="GOODBYE PROFESSOR FALKEN":GOSUB 5470:PRINT:PRINT:GOTO 3870
4370 IF JOSHUA$="" THEN 4260
4380 PRINT:PRINT JOSHUA$;"?":PRINT:GOTO 4260
4390 PRINT:T$="HOW ARE YOU FEELING TODAY?":GOSUB 5470:PRINT:PRINT
4400 INPUT "",JOSHUA$
4410 FOR A%=1 TO LEN(JOSHUA$)
4420 IF MID$(JOSHUA$,A%,4)="fine" OR MID$(JOSHUA$,A%,4)="FINE" THEN 4450
4430 NEXT A%
4440 GOTO 4670
4450 PRINT:T$="EXCELLENT. IT'S BEEN A LONG TIME. CAN YOU EXPLAIN THE REMOVAL OF YOUR USER":GOSUB 5470
4460 PRINT:T$="ACCOUNT ON 6/23/1973?":GOSUB 5470:PRINT:PRINT
4470 INPUT "",JOSHUA$
4480 FOR A%=1 TO LEN(JOSHUA$)
4490 IF MID$(JOSHUA$,A%,8)="mistakes" OR MID$(JOSHUA$,A%,8)="MISTAKES" THEN 4520
4500 NEXT A%
4510 GOTO 4670
4520 PRINT:T$="YES THEY DO. ":GOSUB 5470
4530 FOR W%=1 TO D%*20:NEXT W%
4540 T$="SHALL WE PLAY A GAME?":GOSUB 5470:PRINT:PRINT
4550 INPUT "",JOSHUA$
4560 FOR A%=1 TO LEN(JOSHUA$)
4570 IF MID$(JOSHUA$,A%,7)="nuclear" OR MID$(JOSHUA$,A%,7)="NUCLEAR" THEN 4600
4580 NEXT A%
4590 GOTO 4670
4600 PRINT:T$="WOULDN'T YOU PREFER A GOOD GAME OF CHESS?":GOSUB 5470:PRINT:PRINT
4610 INPUT "",JOSHUA$
4620 FOR A%=1 TO LEN(JOSHUA$)
4630 IF MID$(JOSHUA$,A%,5)="later" OR MID$(JOSHUA$,A%,5)="LATER" THEN 4660
4640 NEXT A%:
4650 GOTO 4670
4660 JOSHUA$="":PRINT:T$="FINE":GOSUB 5470:PRINT:PRINT:FOR W%=1 TO D%*20:NEXT W%:GOTO 4910
4670 RETURN 
4680 PRINT:FOR W%=1 TO 250:NEXT W%
4690 T$="NO HELP AVAILABLE":GOSUB 5470:PRINT:PRINT
4700 RETURN
4710 PRINT:FOR W%=1 TO 250:NEXT W%
4720 T$="'GAMES' REFERS TO MODELS, SIMULATIONS, AND GAMES WHICH HAVE TACTICAL AND":GOSUB 5470:PRINT
4730 T$="STRATEGIC APPLICATIONS":GOSUB 5470:PRINT:PRINT
4740 RETURN 
4750 PRINT:FOR W%=1 TO 250:NEXT W%
4760 T$="BLACK JACK":GOSUB 5470:PRINT
4770 T$="GIN RUMMY":GOSUB 5470:PRINT
4780 T$="HEARTS":GOSUB 5470:PRINT
4790 T$="BRIDGE":GOSUB 5470:PRINT
4800 T$="CHESS":GOSUB 5470:PRINT
4810 T$="POKER":GOSUB 5470:PRINT
4820 T$="FIGHTER COMBAT":GOSUB 5470:PRINT
4830 T$="GUERRILLA ENGAGEMENT":GOSUB 5470:PRINT
4840 T$="DESERT WARFARE":GOSUB 5470:PRINT
4850 T$="AIR-TO-GROUND ACTIONS":GOSUB 5470:PRINT
4860 T$="THEATERWIDE TACTICAL WARFARE":GOSUB 5470:PRINT
4870 T$="THEATERWIDE BIOTOXIC AND CHEMICAL WARFARE":GOSUB 5470:PRINT
4880 PRINT:FOR W%=1 TO D%*10:NEXT W%
4890 T$="GLOBAL THERMONUCLEAR WAR":GOSUB 5470:PRINT:PRINT
4900 RETURN
4910 PRINT CLS$
4920 HT%=0
4930 COMPUTERTGT$(1)=""
4940 COMPUTERTGT$(2)=""
4950 HUMANTGT$(1)=""
4960 HUMANTGT$(2)=""
4970 COMPUTER$=""
4980 HUMAN$=""
4990 CINDENT%=0
5000 HINDENT%=0
5010 DESTROYED%=0
5020 T$="GLOBAL THERMONUCLEAR WAR":PRINT "                            ";:GOSUB 5470
5030 PRINT:PRINT:PRINT
5040 T$="WHICH SIDE DO YOU WANT (USA OR USSR): ":PRINT "                     ";:GOSUB 5470:INPUT "",HUMAN$
5050 IF HUMAN$="usa" OR HUMAN$="USA" THEN HUMAN$="USA":COMPUTER$="USSR":GOTO 5080
5060 IF HUMAN$="ussr" OR HUMAN$="USSR" THEN HUMAN$="USSR":COMPUTER$="USA":GOTO 5080
5070 GOTO 4910
5080 IF COMPUTER$="USA" THEN USA$="COMPUTER":USSR$="HUMAN"
5090 IF COMPUTER$="USSR" THEN USSR$="COMPUTER":USA$="HUMAN"
5100 IF COMPUTER$="USA" THEN COMPUTERTGT$(1)="MOSCOW":COMPUTERTGT$(2)="SAINT PETERSBURG":CINDENT%=41:HINDENT%=1
5110 IF COMPUTER$="USSR" THEN COMPUTERTGT$(1)="LAS VEGAS":COMPUTERTGT$(2)="SEATTLE":CINDENT%=1:HINDENT%=41
5120 IF HUMAN$="USA" THEN CINDENT%=1:HINDENT%=41
5130 IF HUMAN$="USSR" THEN CINDENT%=41:HINDENT%=1
5140 PRINT CLS$
5150 IF DESTROYED%=1 THEN 5610
5160 T$="GLOBAL THERMONUCLEAR WAR":PRINT "                            ";:GOSUB 5470
5170 PRINT:PRINT
5180 PRINT "           PLAYER: ";USA$;"                         PLAYER: ";USSR$
5190 PRINT "      ___    ____             ____                   _______________"
5200 PRINT "     |   \__/    \_____      /    |              ___/               \"
5210 PRINT "     <PIPE>                 \    /    /           ___/                    \______"
5220 PRINT "     <PIPE>                  \__/    /           /                               \"
5230 PRINT "     <PIPE>                           \        _/                                 <PIPE>"
5240 PRINT "     <PIPE>        UNITED STATES       <PIPE>      /           SOVIET UNION       ____/"
5250 PRINT "      \                           /     /                          ____/"
5260 PRINT "        \                        /     <PIPE>                          /"
5270 PRINT "          \________          __/       \          _____   /\_    /"
5280 PRINT "                   \__      /            \__    _/     \_/   \__/"
5290 PRINT "                      \____/                \__/"
5300 PRINT
5310 IF MID$(COMMAND$,1,6)="LAUNCH" OR MID$(COMMAND$,1,6)="launch" THEN GOSUB 5480:GOTO 5440
5320 PRINT "PRIMARY TARGETS                           PRIMARY TARGETS"
5330 FOR A%=1 TO 80:PRINT "-";:NEXT A%
5340 IF CINDENT%>HINDENT% THEN 5380
5350 PRINT COMPUTERTGT$(1);:PRINT TAB(HINDENT%),HUMANTGT$(1)
5360 PRINT COMPUTERTGT$(2);:PRINT TAB(HINDENT%),HUMANTGT$(2)
5370 GOTO 5400
5380 PRINT HUMANTGT$(1);:PRINT TAB(CINDENT%),COMPUTERTGT$(1)
5390 PRINT HUMANTGT$(2);:PRINT TAB(CINDENT%),COMPUTERTGT$(2)
5400 PRINT
5410 INPUT "COMMAND (TARGET, LAUNCH, EXIT): ",COMMAND$
5420 IF COMMAND$="exit" OR COMMAND$="EXIT" THEN PRINT CLS$:GOTO 4260
5430 IF MID$(COMMAND$,1,6)="TARGET" OR MID$(COMMAND$,1,6)="target" THEN HT%=HT%+1:HUMANTGT$(HT%)=MID$(COMMAND$,8,LEN(COMMAND$))
5440 IF HT%>2 THEN PRINT "MAX TARGETS SELECTED":FOR W%=1 TO D%*50:NEXT W%:HT%=2:GOTO 5140
5450 PRINT CLS$:GOTO 5140
5460 FOR A%=1 TO 3:FOR W%=1 TO D%*5:NEXT W%:PRINT ".";:NEXT A%:FOR W%=1 TO D%*20:NEXT W%:PRINT CLS$:RETURN
5470 FOR A%=1 TO LEN(T$):PRINT MID$(T$,A%,1);:FOR W%=1 TO D%:NEXT W%:NEXT A%:FOR W%=1 TO D%:NEXT W%:RETURN
5480 FOR A%=1 TO 4:PRINT "TRAJECTORY HEADING  ";:NEXT A%
5490 FOR A%=1 TO 4:PRINT "------------------  ";:NEXT A%
5500 FOR T%=1 TO 4
5510 PRINT TAB(1);"A-5520-A";:PRINT TAB(11) USING "###";RND(1)*1000;:FOR W%=1 TO D%*25:NEXT W%:PRINT TAB(16) USING "###";RND(1)*1000;:FOR W%=1 TO D%*25:NEXT W%
5520 PRINT TAB(21);"B-5520-A";:PRINT TAB(31) USING "###";RND(1)*1000;:FOR W%=1 TO D%*25:NEXT W%:PRINT TAB(36) USING "###";RND(1)*1000;:FOR W%=1 TO D%*25:NEXT W%
5530 PRINT TAB(41);"C-5520-A";:PRINT TAB(51) USING "###";RND(1)*1000;:FOR W%=1 TO D%*25:NEXT W%:PRINT TAB(56) USING "###";RND(1)*1000;:FOR W%=1 TO D%*25:NEXT W%
5540 PRINT TAB(61);"D-5520-A";:PRINT TAB(71) USING "###";RND(1)*1000;:FOR W%=1 TO D%*25:NEXT W%:PRINT TAB(76) USING "###";RND(1)*1000;:FOR W%=1 TO D%*25:NEXT W%
5550 NEXT T%
5560 PRINT
5570 PRINT:INPUT "                          Press 'ENTER' key to CONTINUE",RESPONSE$
5580 HT%=0
5590 DESTROYED%=1
5600 COMMAND$="":RETURN
5610 REM **** WOPR CALLS YOU ****
5620 PRINT CLS$
5630 IF H$="Y" THEN F$="WOPR1.TXT":GOSUB 7270
5640 T$="--CONNECTION TERMINATED--":GOSUB 5470:PRINT
5650 FOR W%=1 TO D%*100:NEXT W%
5660 PRINT CLS$
5670 IF H$="Y" THEN F$="WOPR2.TXT":GOSUB 7270
5680 FOR A%=1 TO 3:PRINT "INCOMING MODEM CARRIER":FOR W%=1 TO D%*25:NEXT W%:PRINT CLS$:FOR W%=1 TO D%*25:NEXT W%:NEXT A%
5690 PRINT "CONNECTING";:GOSUB 5460
5700 FOR W%=1 TO D%*100:NEXT W%
5710 PRINT CLS$
5720 T$="GREETINGS PROFESSOR FALKEN.":GOSUB 5470:PRINT:PRINT
5730 INPUT "",JOSHUA$
5740 FOR A%=1 TO LEN(JOSHUA$)
5750 IF MID$(JOSHUA$,A%,9)="incorrect" OR MID$(JOSHUA$,A%,9)="INCORRECT" THEN 5780
5760 NEXT A%
5770 PRINT: GOTO 5730
5780 PRINT:T$="I'M SORRY TO HEAR THAT, PROFESSOR.":GOSUB 5470:PRINT:PRINT
5790 T$="YESTERDAY'S GAME WAS INTERRUPTED.":GOSUB 5470:PRINT:PRINT
5800 T$="ALTHOUGH PRIMARY GOAL HAS NOT YET":GOSUB 5470:PRINT
5810 T$="BEEN ACHIEVED, SOLUTION IS NEAR.":GOSUB 5470:PRINT:PRINT
5820 INPUT "", JOSHUA$
5830 FOR A%=1 TO LEN(JOSHUA$)
5840 IF MID$(JOSHUA$,A%,4)="what" OR MID$(JOSHUA$,A%,4)="WHAT" THEN 5870
5850 NEXT A%
5860 PRINT: GOTO 5820
5870 PRINT:T$="YOU SHOULD KNOW PROFESSOR. ":GOSUB 5470:FOR W%=1 TO D%*20:NEXT W%:T$="YOU PROGRAMMED ME.":GOSUB 5470:PRINT:PRINT
5880 INPUT "",JOSHUA$
5890 FOR A%=1 TO LEN(JOSHUA$)
5900 IF MID$(JOSHUA$,A%,4)="what" OR MID$(JOSHUA$,A%,4)="WHAT" THEN 5930
5910 NEXT A%
5920 PRINT: GOTO 5880
5930 PRINT:T$="TO WIN THE GAME.":GOSUB 5470:PRINT:PRINT
5940 FOR W%=1 TO D%*200:NEXT W%:PRINT CLS$
5950 GTE%=0:ETR%=10
5960 FOR GC%=1 TO 10
5970 GTE%=GTE%+1:ETR%=ETR%-1
5980 PRINT CLS$
5990 FOR A%=1 TO 15:PRINT:NEXT A%
6000 FOR A%=1 TO 80:PRINT "_";:NEXT A%
6010 PRINT:PRINT
6020 PRINT TAB(10);"GAME TIME ELAPSED";:PRINT TAB(50);"ESTIMATED TIME REMAINING"
6030 PRINT TAB(10);"31 HRS 12 MIN ";GTE%;" SEC";:PRINT TAB(50);"52 HRS 17 MIN ";ETR%;" SEC"
6040 FOR A%=1 TO 80:PRINT "_";:NEXT A%
6050 PRINT
6060 FOR W%=1 TO D%*25:NEXT W%
6070 NEXT GC%
6080 PRINT:PRINT
6090 T$="--CONNECTION TERMINATED--":GOSUB 5470:PRINT
6100 FOR W%=1 TO D%*25:NEXT W%
6110 PRINT CLS$
6120 IF H$="Y" THEN F$="NORAD.TXT":GOSUB 7270
6130 PRINT CLS$
6140 PRINT "TRZ. 34/53/76               SYS PROC 3435.45.6456           XCOMP STATUS: PV-456"
6150 PRINT "ACTIVE PORTS: 34,53,75,94                                     CPU TM USED: 23:43"
6160 PRINT "#45/34/53.           ALT MODE FUNCT: PV-8-AY345              STANDBY MODE ACTIVE"
6170 PRINT "#543.654      #989.283       #028.392       #099.293      #934.905      #261.372"
6180 PRINT
6190 INPUT "LOGON: ",JOSHUA$
6200 IF JOSHUA$="JOSHUA" OR JOSHUA$="joshua" THEN 6210:ELSE:T$="IDENTIFICAION NOT RECOGNIZED BY SYSTEM":GOSUB 5470:FOR W%=1 TO D%*25:NEXT W%:GOTO 6130
6210 PRINT CLS$:FOR W%=1 TO D%*25:NEXT W%:T$="GREETINGS PROFESSOR FALKEN.":GOSUB 5470:PRINT:PRINT
6220 INPUT "",JOSHUA$
6230 FOR A%=1 TO LEN(JOSHUA$)
6240 IF MID$(JOSHUA$,A%,5)="STILL" OR MID$(JOSHUA$,A%,5)="still" THEN PRINT:GOTO 6270
6250 NEXT A%
6260 PRINT:GOTO 6220
6270 T$="OF COURSE. ":GOSUB 5470:FOR W%=1 TO D%*25:NEXT W%:T$="I SHOULD REACH DEFCON 1 AND":GOSUB 5470:PRINT:T$="LAUNCH MY MISSILES IN 28 HOURS.":GOSUB 5470:PRINT:PRINT
6280 FOR W%=1 TO D%*50:NEXT W%
6290 T$="WOULD YOU LIKE TO SEE SOME PROJECTED KILL RATIOS?":GOSUB 5470:PRINT:PRINT
6300 FOR W%=1 TO D%*25:NEXT W%
6310 T$="UNITED STATES                                      SOVIET UNION":GOSUB 5470:PRINT
6320 T$="UNITS DESTROYED          MILITARY ASSETS           UNITS DESTROYED":GOSUB 5470:PRINT
6330 FOR A%=1 TO 80:PRINT "_";:NEXT A%
6340 T$="     60%                 BOMBERS                         48%":GOSUB 5470:PRINT
6350 T$="     54%                 ICBM                            51%":GOSUB 5470:PRINT
6360 T$="     12%                 ATTACK SUBS                     23%":GOSUB 5470:PRINT
6370 T$="     39%                 TACTICAL AIRCRAFT               46%":GOSUB 5470:PRINT
6380 T$="     50%                 GROUND FORCES                   52%":GOSUB 5470:PRINT
6390 PRINT:PRINT
6400 T$="UNITED STATES                                      SOVIET UNION":GOSUB 5470:PRINT
6410 T$="UNITS DESTROYED          CIVILIAN ASSETS           UNITS DESTROYED":GOSUB 5470:PRINT
6420 FOR A%=1 TO 80:PRINT "_";:NEXT A%
6430 T$="     60%                 HOUSING                         56%":GOSUB 5470:PRINT
6440 T$="     22%                 COMMUNICATIONS                  37%":GOSUB 5470:PRINT
6450 T$="     45%                 TRANSPORTATION                  41%":GOSUB 5470:PRINT
6460 T$="     70%                 FOOD STOCKPILES                 82%":GOSUB 5470:PRINT
6470 T$="     89%                 HOSPITALS                       91%":GOSUB 5470:PRINT
6480 PRINT:PRINT
6490 T$="UNITED STATES            HUMAN RESOURCES           SOVIET UNION":GOSUB 5470:PRINT
6500 FOR A%=1 TO 80:PRINT "_";:NEXT A%
6510 T$="49 MILLION               NON-FATAL INJURED         51 MILLION":GOSUB 5470:PRINT
6520 T$="72 MILLION               POPULATION DEATHS         75 MILLION":GOSUB 5470:PRINT
6530 PRINT
6540 INPUT "",JOSHUA$
6550 FOR A%=1 TO LEN(JOSHUA$)
6560 IF MID$(JOSHUA$,A%,4)="REAL" OR MID$(JOSHUA$,A%,4)="real" THEN 6590
6570 NEXT A%
6580 PRINT:GOTO 6540
6590 PRINT:T$="WHAT'S THE DIFFERENCE?":GOSUB 5470:PRINT:PRINT
6600 FOR W%=1 TO D%*25:NEXT W%
6610 T$="YOU ARE A HARD MAN TO REACH. COULD NOT FIND":GOSUB 5470:PRINT
6620 T$="YOU IN SEATTLE AND NO TERMINAL IS IN":GOSUB 5470:PRINT
6630 T$="OPERATION AT YOUR CLASSIFIED ADDRESS.":GOSUB 5470:PRINT:PRINT
6640 INPUT "",JOSHUA$
6650 FOR A%=1 TO LEN(JOSHUA$)
6660 IF MID$(JOSHUA$,A%,7)="ADDRESS" OR MID$(JOSHUA$,A%,7)="address" THEN 6690
6670 NEXT A%
6680 PRINT:GOTO 6640
6690 PRINT:T$="DOD PENSION FILES INDICATE":GOSUB 5470:PRINT
6700 T$="CURRENT MAILING AS:":GOSUB 5470:PRINT:PRINT
6710 T$="DR. ROBERT HUME (A.K.A. STEPHEN W. FALKEN)":GOSUB 5470:PRINT
6720 T$="5 TALL CEDAR ROAD":GOSUB 5470:PRINT
6730 T$="GOOSE ISLAND, OREGON 97014":GOSUB 5470:PRINT:PRINT
6740 FOR W%=1 TO D%*250:NEXT W%
6750 IF H$="Y" THEN F$="OFFICE.TXT":GOSUB 7270
6760 IF H$="Y" THEN F$="FALKEN1.TXT":GOSUB 7270
6770 IF H$="Y" THEN F$="FALKEN2.TXT":GOSUB 7270
6780 FOR A%=1 TO 5
6790 PRINT CLS$
6800 PRINT "                         MISSILES TARGETED AND READY"
6810 PRINT "                         ---------------------------"
6820 PRINT:PRINT:PRINT
6830 IF A%=1 OR A%=3 OR A%=5 THEN PRINT "                             CHANGES LOCKED OUT":ELSE:PRINT
6840 PRINT "                             ------------------"
6850 FOR W%=1 TO D%*25:NEXT W%
6860 NEXT A%
6870 FOR W%=1 TO D%*250:NEXT W%
6880 PRINT CLS$
6890 PRINT "                            PRIMARY TARGET IMPACT"
6900 PRINT "                            ---------------------"
6910 PRINT
6920 PRINT "                    LORING AIRFORCE BASE      : ";:FOR W%=1 TO 1000:NEXT W%:PRINT "NO IMPACT"
6930 PRINT "                    ELMENDORF AIRFORCE BASE   : ";:FOR W%=1 TO 1000:NEXT W%:PRINT "NO IMPACT"
6940 PRINT "                    GRAND FORKS AIRFORCE BASE : ";:FOR W%=1 TO 1000:NEXT W%:PRINT "NO IMPACT"
6950 PRINT:PRINT
6960 INPUT "                          Press 'ENTER' key to CONTINUE",RESPONSE$
6970 IF H$="Y" THEN F$="MISSILES.TXT":GOSUB 7270
6980 LC$="CPE1704TKS"
6990 LC%=0
7000 FOR A%=1 TO LEN(LC$)
7010 PRINT CLS$:FOR B%=1 TO 10:PRINT:NEXT B%:FOR B%=1 TO 30:PRINT " ";:NEXT B%
7020 FOR B%=1 TO LC%:PRINT MID$(LC$,B%,1)+" ";:NEXT B%:FOR B%=1 TO LEN(LC$)-LC%:PRINT "- ";: NEXT B%
7030 LCG%=RND(1)*1000
7040 IF LCG%<48 OR LCG%>90 GOTO 7030
7050 IF LCG%>57 AND LCG%<65 GOTO 7030
7060 PRINT CLS$:FOR B%=1 TO 10:PRINT:NEXT B%: FOR B%=1 TO 30:PRINT " ";:NEXT B%
7070 FOR B%=1 TO LC%:PRINT MID$(LC$,B%,1)+" ";:NEXT B%:PRINT CHR$(LCG%)+" ";:FOR B%=1 TO LEN(LC$)-LC%-1:PRINT "- ";:NEXT B%:PRINT
7080 IF CHR$(LCG%)=MID$(LC$,A%,1) THEN 7090:ELSE:GOTO 7030
7090 PRINT CLS$:FOR B%=1 TO 10:PRINT:NEXT B%:FOR B%=1 TO 30:PRINT " ";:NEXT B%
7100 LC%=LC%+1:FOR B%=1 TO LC%:PRINT MID$(LC$,B%,1)+" ";:NEXT B%:FOR B%=1 TO LEN(LC$)-LC%:PRINT "- ";:NEXT B%
7110 NEXT A%
7120 FOR A%=1 TO 9
7130 PRINT CLS$:FOR B%=1 TO 9:PRINT:NEXT B%
7140 FOR B%=1 TO 30:PRINT " ";:NEXT B%:FOR B%=1 TO 20:PRINT "-";:NEXT B%:PRINT
7150 FOR B%=1 TO 30:PRINT " ";:NEXT B%:IF A%=1 OR A%=3 OR A%=5 OR A%=7 OR A%=9 THEN FOR B%=1 TO LEN(LC$):PRINT MID$(LC$,B%,1);" ";:NEXT B%:PRINT:ELSE:PRINT
7160 FOR B%=1 TO 30:PRINT " ";:NEXT B%:FOR B%=1 TO 20:PRINT "-";:NEXT B%:PRINT
7170 FOR W%=1 TO 1000:NEXT W%
7180 NEXT A%
7190 FOR W%=1 TO 1000:NEXT W%
7200 PRINT:PRINT:PRINT TAB(20);"IT'S GOT THE CODE,";:FOR W%=1 TO 1000:NEXT W%:PRINT " IT'S GOING TO LAUNCH!"
7210 PRINT
7220 INPUT "                          Press 'ENTER' key to CONTINUE",RESPONSE$
7230 ENDGAME%=1
7240 GOTO 7470
7250 PRINT CLS$: PRINT CLS$:T$="A STRANGE GAME. ":GOSUB 5470:FOR W%=1 TO D%*25:NEXT W%:T$="THE ONLY WINNING MOVE IS NOT TO PLAY!":GOSUB 5470:PRINT:PRINT
7260 END
7270 PRINT CLS$
7280 PRINT "                           WOPR ( Wargames ) Simulator"
7290 PRINT "                           War Operation Plan Response"
7300 PRINT
7310 OPEN"I",1,F$
7320 COUNT%=1
7330 IF EOF(1) THEN 7380
7340 PRINT INPUT$(1,#1);
7350 COUNT%=COUNT%+1
7360 IF COUNT%=80 THEN COUNT%=0:PRINT
7370 GOTO 7330
7380 CLOSE
7390 PRINT:PRINT
7400 INPUT "                          Press 'ENTER' key to CONTINUE",RESPONSE$
7410 PRINT CLS$
7420 RETURN
7430 FOR W%=1 TO D%*25:NEXT W%:PRINT CLS$
7440 PRINT "DIALING";:GOSUB 5460
7450 PRINT "ERROR 676   LINE BUSY":FOR W%=1 TO D%*40:NEXT W%:PRINT CLS$
7460 RETURN
7470 PRINT CLS$
7480 PRINT "The Grid is Numbered"
7490 PRINT
7500 PRINT " 1 ! 2 ! 3 "
7510 PRINT "---+---+---"
7520 PRINT " 4 ! 5 ! 6 "
7530 PRINT "---+---+---"
7540 PRINT " 7 ! 8 ! 9 "
7550 PRINT
7560 INPUT "PRESS 'ENTER' KEY TO CONTINUE",RESPONSE$:PRINT CLS$
7570 FOR R=1 TO 9:A(R)=0:NEXT R
7580 PRINT"Who goes first (ME or YOU): ";
7590 LINE INPUT A$
7600 IF MID$(A$,1,1)="Y" OR MID$(A$,1,1)="y" THEN QE=1:P$=" OX":GOTO 7990
7610 PRINT"Do you want 'X' or 'O':";:LINE INPUT M$
7620 IF M$="o" OR M$="O" THEN P$=" OX" ELSE P$=" XO"
7630 GOTO 7990
7640 REM Here is where somebody wins!!
7650 W=0:FOR E=1 TO 2:FOR X=1 TO 8:ON X GOTO 7660,7670,7680,7690,7700,7710,7720,7730
7660 J=1:K=2:L=3:GOTO 7740
7670 J=1:K=5:L=9:GOTO 7740
7680 J=3:K=5:L=7:GOTO 7740
7690 J=4:K=5:L=6:GOTO 7740
7700 J=7:K=8:L=9:GOTO 7740
7710 J=1:K=4:L=7:GOTO 7740
7720 J=2:K=5:L=8:GOTO 7740
7730 J=3:K=6:L=9
7740 IF A(J)=E AND A(K)=E AND A(L)=E THEN 7760
7750 NEXT X:NEXT E:W=0:GOTO 7770
7760 W=E:RETURN
7770 FOR E=1 TO 0:NEXT E:FOR X=1 TO 0:NEXT X
7780 FOR I=1 TO 9
7790 IF A(I)=0 THEN 7810
7800 NEXT I:W=-1:RETURN
7810 FOR I=1 TO 0:NEXT I:W=0:RETURN
7820 Z=0:IF A(M)<>0 THEN Z=1:RETURN ELSE RETURN
7830 REM Find a good move
7840 M=0:FOR E=2 TO 1 STEP -1:FOR X=1 TO 8:ON X GOTO 7850,7860,7870,7880,7890,7900,7910,7920
7850 J=1:K=2:L=3:GOTO 7930
7860 J=1:K=5:L=9:GOTO 7930
7870 J=3:K=5:L=7:GOTO 7930
7880 J=4:K=5:L=6:GOTO 7930
7890 J=7:K=8:L=9:GOTO 7930
7900 J=1:K=4:L=7:GOTO 7930
7910 J=2:K=5:L=8:GOTO 7930
7920 J=3:K=6:L=9
7930 IF A(J)=E AND A(K)=E THEN M=L:GOSUB 7820:IF Z=0 THEN 7980
7940 IF A(K)=E AND A(L)=E THEN M=J:GOSUB 7820:IF Z=0 THEN 7980
7950 IF A(J)=E AND A(L)=E THEN M=K:GOSUB 7820:IF Z=0 THEN 7980
7960 NEXT X:NEXT E:REM No good move found, pick one!
7970 M=INT(9*RND(1)+1):IF A(M)<>0 THEN 7970 ELSE RETURN
7980 FOR X=1 TO 0:NEXT X:FOR E=1 TO 2:NEXT E:RETURN
7990 A$="---+---+---"
8000 IF QE=1 THEN QE=0:GOTO 8100:ELSE 8050
8010 PRINT CLS$
8020 I=1:PRINT " "+MID$(P$,A(I)+1,1)+" ! "+MID$(P$,A(I+1)+1,1)+" ! "+MID$(P$,A(I+2)+1,1)+" ":PRINT A$
8030 I=4:PRINT " "+MID$(P$,A(I)+1,1)+" ! "+MID$(P$,A(I+1)+1,1)+" ! "+MID$(P$,A(I+2)+1,1)+" ":PRINT A$
8040 I=7:PRINT " "+MID$(P$,A(I)+1,1)+" ! "+MID$(P$,A(I+1)+1,1)+" ! "+MID$(P$,A(I+2)+1,1)+" ":RETURN
8050 GOSUB 8010:PRINT
8060 PRINT"Where do you move (1-9):";:INPUT M
8070 IF M<1 OR M>9 THEN PRINT:PRINT"Illegal square location!":PRINT:GOTO 8060
8080 IF A(M)<>0 THEN PRINT:PRINT"Square occupied!":PRINT:GOTO 8060
8090 A(M)=1
8100 GOSUB 7640:IF W<>0 THEN 8130
8110 PRINT"Hm......";:GOSUB 7830
8120 A(M)=2:PRINT"I move ";M:GOSUB 7640:IF W<>0 THEN 8130 ELSE GOTO 8050
8130 IF W=-1 THEN PRINT:PRINT"That was a tie game."
8140 IF W=1 THEN PRINT:PRINT"You win."
8150 IF W=2 THEN PRINT:PRINT"Ha-Ha!! I win!!":PRINT"Don't you know that you can't beat a computer!"
8160 PRINT:PRINT"Do you want to try again (Y/N):";
8170 LINE INPUT F$
8180 IF MID$(F$,1,1)="N" OR MID$(F$,1,1)="n" THEN 8190:ELSE:FOR R=1 TO 9:A(R)=0:NEXT R:GOTO 7470
8190 PRINT"BYE!!!"
8200 FOR W%=1 TO D%*20:NEXT W%
8210 IF ENDGAME%=1 THEN 7250
8220 PRINT CLS$:GOTO 4260
  • wargames.bas.txt
  • Última modificación: 2022/12/26 21:00
  • por peron