zompiexx / wargames

Wargames Simulator (Wargames Movie, 1983) by Andy Glenn - WOPR, Union Marine Bank, Pan-AM, School Computer, Tic-Tac-Toe Programs included in project
94 stars 13 forks source link

YouTube questions #1

Closed Tehotaone closed 1 year ago

Tehotaone commented 3 years ago

Hello I am trying to run this sim in CP/m Basic or MBASIC (Basic-80) I am not too familiar with these or SYSGEN 64 and it's use. I would like to run this on this computer https://vintagecomputer.com/kaypro-10.html. As a proof of concept short film. Can you assist or tell me how to try to run it? I will provide a full credit in the production, it will also be featured in a national computer enthusiasts distribution. Thank you

zompiexx commented 3 years ago

Hi. Ok, are you able to boot the machine to a CP/M prompt using a system boot floppy disk? If so, you need to run the command "DIR" and look for the file "SURVEY.COM". This might be on a different disk, depending on which version of CP/M you are using and how the disks have been organised. If you can find "SURVEY.COM", then run it by simply entering the command "SURVEY" from the command prompt.

Ideally, you need 56K of available RAM (after CP/M and BIOS) to run the Wargames program in BASIC-80, but you may get away with a little less.

If you have 56K available, then the next thing you need to do is get BASIC-80. If you have this on a disk already, great. If not, there are plenty of good CP/M archives online (google is your friend here).

To run BASIC-80, just ensure you have the correct disk mounted in your floppy drive (I'm assuming drive A or B) and run "MBASIC" from the command prompt.

If you have to download it, then you will need to find a way to transfer it onto a disk in the right format or transfer it via some other means, e.g. a null modem cable (for which you will need terminal software).

If you are struggling to get software onto disks in the right format, it may be easier to simulate (emulate) CP/M on a Linux PC, Mac, Raspberry PI or whatever using the Z80Pack (from Udo Munk) available here: https://www.autometer.de/unix4fun/z80pack/

The Z80Pack includes a number of disk images to get you started, including CP/M

Then, once you have that up and running, download everything you need - CP/M 2.2 (I'm assuming, but may be a different version), BASIC-80, Wargames files etc. Get it running on the simulator (emulator) as proof of concept. Then, familiarise yourself with CP/M Tools to create disk images and find a way to write the images to floppy disk or transfer via a null modem cable to the Kaypro.

What you are aiming for is to create a single floppy disk image / floppy disk which contains MBASIC.COM and all of the Wargames files from Github. Then, assuming the disk is mounted in drive A or B - simply change to the drive its mounted in and run the command "MBASIC WARGAMES".

Best regards,

Andy

Tehotaone commented 3 years ago

Thank you so much for taking the time to detail that. I use Hcx floppy emu to make disc images ( .hfe ) to run on my usb that is my floppy. I can Also copy the directory over to the HD inside. I will just need to create a compatible file from from your war games folder so it is formatted and accessible in Basic-80 / MBASIC

On Sep 15, 2021, at 8:36 AM, Andy Glenn @.***> wrote:

 Hi. Ok, are you able to boot the machine to a CP/M prompt using a boot floppy disk? If so, you need to run the command "DIR" and look for the file "SURVEY.COM". This might be on a different disk, depending on which version of CP/M you are using and how the disks have been organised. If you can find "SURVEY.COM", then run it by simply entering the command "SURVEY" from the command prompt.

You need 56K of available RAM (after CP/M and BIOS) to run the Wargames program in BASIC-80.

If you have 56K available, then the next thing you need to do is get BASIC-80. If you have this on a disk already, great. If not, there are plenty of good CP/M archives online (google is your friend here).

To run BASIC-80, just ensure you have the correct disk mounted in your floppy drive (I'm assuming drive A or B) and run "MBASIC" from the command prompt.

If you have to download it, then you will need to find a way to transfer it onto a disk in the right format or transfer it via some other means, e.g. a null modem cable (for which you will need terminal software).

If you are struggling to get software onto disks in the right format, it may be easier to simulate (emulate) CP/M on a Linux PC, Mac, Raspberry PI or whatever using the Z80Pack (from Udo Munk) available here: https://www.autometer.de/unix4fun/z80pack/

Then, once you have that up and running, download everything you need - BASIC-80, Wargames Program etc. Get it running on the simulator (emulator) as proof of concept. Then, familiarise yourself with CP/M Tools to create disk images and find a way to write the images to floppy disk or transfer via null modem to the Kaypro.

Best regards,

Andy

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android.

Tehotaone commented 2 years ago

Good morning Andy

So I am close, I have the files transferred. I have a large favor to ask… could you cut the program down for this part so it works from the dialing sequence… to the logon prompt and then ultimately to displaying the secret address portion.

This will make it cleaner to work with, I will use a screen print piece of basic to do the rest of the “ talking” I think I am savvy enough to change the selection and output text for some strings.

If I could play Biotoxic weapon simulation that would work…. Joshua actually “ meets” a few friends once I give him acces to the WWW, so through dialog the rest can be done…

Your program would be the best to give it the authentic feel to give the first few shots.

Thanks for any info or help you can provide.

These are the lines without the external calls in the program…..from my crude readover

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 " | \ / / / _" 5220 PRINT " | _/ / / \" 5230 PRINT " | \ _/ |" 5240 PRINT " | UNITED STATES | / SOVIET UNION /" 5250 PRINT " \ / / /" 5260 PRINT " \ / | /" 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

On Sep 15, 2021, at 8:36 AM, Andy Glenn @.***> wrote:

Hi. Ok, are you able to boot the machine to a CP/M prompt using a boot floppy disk? If so, you need to run the command "DIR" and look for the file "SURVEY.COM". This might be on a different disk, depending on which version of CP/M you are using and how the disks have been organised. If you can find "SURVEY.COM", then run it by simply entering the command "SURVEY" from the command prompt.

You need 56K of available RAM (after CP/M and BIOS) to run the Wargames program in BASIC-80.

If you have 56K available, then the next thing you need to do is get BASIC-80. If you have this on a disk already, great. If not, there are plenty of good CP/M archives online (google is your friend here).

To run BASIC-80, just ensure you have the correct disk mounted in your floppy drive (I'm assuming drive A or B) and run "MBASIC" from the command prompt.

If you have to download it, then you will need to find a way to transfer it onto a disk in the right format or transfer it via some other means, e.g. a null modem cable (for which you will need terminal software).

If you are struggling to get software onto disks in the right format, it may be easier to simulate (emulate) CP/M on a Linux PC, Mac, Raspberry PI or whatever using the Z80Pack (from Udo Munk) available here: https://www.autometer.de/unix4fun/z80pack/ https://www.autometer.de/unix4fun/z80pack/ Then, once you have that up and running, download everything you need - BASIC-80, Wargames Program etc. Get it running on the simulator (emulator) as proof of concept. Then, familiarise yourself with CP/M Tools to create disk images and find a way to write the images to floppy disk or transfer via null modem to the Kaypro.

Best regards,

Andy

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/zompiexx/wargames/issues/1#issuecomment-919980312, or unsubscribe https://github.com/notifications/unsubscribe-auth/AQ35O74NPFCAMLPW6B2FCBLUCCHORANCNFSM5ECHPWMQ. Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

Tehotaone commented 2 years ago

Good morning Andy ( sorry missed the. Cc on the first email )

So I am close, I have the files transferred. I have a large favor to ask… could you cut the program down for this part so it works from the dialing sequence… to the logon prompt and then ultimately to displaying the secret address portion.

This will make it cleaner to work with, I will use a screen print piece of basic to do the rest of the “ talking” I think I am savvy enough to change the selection and output text for some strings.

If I could play Biotoxic weapon simulation that would work…. Joshua actually “ meets” a few friends once I give him acces to the WWW, so through dialog the rest can be done…

Your program would be the best to give it the authentic feel to give the first few shots.

These are the lines I believe.

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 " | \ / / / _" 5220 PRINT " | _/ / / \" 5230 PRINT " | \ _/ |" 5240 PRINT " | UNITED STATES | / SOVIET UNION /" 5250 PRINT " \ / / /" 5260 PRINT " \ / | /" 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

On Sep 15, 2021, at 8:36 AM, Andy Glenn @.***> wrote:

Hi. Ok, are you able to boot the machine to a CP/M prompt using a boot floppy disk? If so, you need to run the command "DIR" and look for the file "SURVEY.COM". This might be on a different disk, depending on which version of CP/M you are using and how the disks have been organised. If you can find "SURVEY.COM", then run it by simply entering the command "SURVEY" from the command prompt.

You need 56K of available RAM (after CP/M and BIOS) to run the Wargames program in BASIC-80.

If you have 56K available, then the next thing you need to do is get BASIC-80. If you have this on a disk already, great. If not, there are plenty of good CP/M archives online (google is your friend here).

To run BASIC-80, just ensure you have the correct disk mounted in your floppy drive (I'm assuming drive A or B) and run "MBASIC" from the command prompt.

If you have to download it, then you will need to find a way to transfer it onto a disk in the right format or transfer it via some other means, e.g. a null modem cable (for which you will need terminal software).

If you are struggling to get software onto disks in the right format, it may be easier to simulate (emulate) CP/M on a Linux PC, Mac, Raspberry PI or whatever using the Z80Pack (from Udo Munk) available here: https://www.autometer.de/unix4fun/z80pack/ https://www.autometer.de/unix4fun/z80pack/ Then, once you have that up and running, download everything you need - BASIC-80, Wargames Program etc. Get it running on the simulator (emulator) as proof of concept. Then, familiarise yourself with CP/M Tools to create disk images and find a way to write the images to floppy disk or transfer via null modem to the Kaypro.

Best regards,

Andy

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/zompiexx/wargames/issues/1#issuecomment-919980312, or unsubscribe https://github.com/notifications/unsubscribe-auth/AQ35O74NPFCAMLPW6B2FCBLUCCHORANCNFSM5ECHPWMQ. Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

zompiexx commented 2 years ago

Hi,

Where exactly did you want the code to run from and to?

Did you want the dialer sequence or just from the LOGON: prompt?

So long as there are not any dependant variables in the code you jump over, you can use a GOTO statement to jump to wherever you want.

Best regards,

Andy

On 10 Oct 2021, at 15:30, Tehotaone @.***> wrote:

Good morning Andy ( sorry missed the. Cc on the first email )

So I am close, I have the files transferred. I have a large favor to ask… could you cut the program down for this part so it works from the dialing sequence… to the logon prompt and then ultimately to displaying the secret address portion.

This will make it cleaner to work with, I will use a screen print piece of basic to do the rest of the “ talking” I think I am savvy enough to change the selection and output text for some strings.

If I could play Biotoxic weapon simulation that would work…. Joshua actually “ meets” a few friends once I give him acces to the WWW, so through dialog the rest can be done…

Your program would be the best to give it the authentic feel to give the first few shots.

These are the lines I believe.

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 " | \ / / / _" 5220 PRINT " | _/ / / \" 5230 PRINT " | \ _/ |" 5240 PRINT " | UNITED STATES | / SOVIET UNION /" 5250 PRINT " \ / / /" 5260 PRINT " \ / | /" 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

On Sep 15, 2021, at 8:36 AM, Andy Glenn @.***> wrote:

Hi. Ok, are you able to boot the machine to a CP/M prompt using a boot floppy disk? If so, you need to run the command "DIR" and look for the file "SURVEY.COM". This might be on a different disk, depending on which version of CP/M you are using and how the disks have been organised. If you can find "SURVEY.COM", then run it by simply entering the command "SURVEY" from the command prompt.

You need 56K of available RAM (after CP/M and BIOS) to run the Wargames program in BASIC-80.

If you have 56K available, then the next thing you need to do is get BASIC-80. If you have this on a disk already, great. If not, there are plenty of good CP/M archives online (google is your friend here).

To run BASIC-80, just ensure you have the correct disk mounted in your floppy drive (I'm assuming drive A or B) and run "MBASIC" from the command prompt.

If you have to download it, then you will need to find a way to transfer it onto a disk in the right format or transfer it via some other means, e.g. a null modem cable (for which you will need terminal software).

If you are struggling to get software onto disks in the right format, it may be easier to simulate (emulate) CP/M on a Linux PC, Mac, Raspberry PI or whatever using the Z80Pack (from Udo Munk) available here: https://www.autometer.de/unix4fun/z80pack/ https://www.autometer.de/unix4fun/z80pack/ Then, once you have that up and running, download everything you need - BASIC-80, Wargames Program etc. Get it running on the simulator (emulator) as proof of concept. Then, familiarise yourself with CP/M Tools to create disk images and find a way to write the images to floppy disk or transfer via null modem to the Kaypro.

Best regards,

Andy

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/zompiexx/wargames/issues/1#issuecomment-919980312, or unsubscribe https://github.com/notifications/unsubscribe-auth/AQ35O74NPFCAMLPW6B2FCBLUCCHORANCNFSM5ECHPWMQ. Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/zompiexx/wargames/issues/1#issuecomment-939492263, or unsubscribe https://github.com/notifications/unsubscribe-auth/ARNG7MPEFE6NWYD35FLPCDLUGGPPHANCNFSM5ECHPWMQ.

Tehotaone commented 2 years ago

Hi again we are sooo close….. ,

So I was able to collaborate with another enthusiast (Paul Kimbrel) yesterday to get some code together to be able to have a simple back and forth “dialogue” with Joshua in Basic

But…….I still love your hyper-accurate recreation of the dialer, initial logon logic and preliminary “catch up “ phase noting the alias and address in Oregon ( which is the way into my extended story, so this context would be huge )

I would probably like to even use the games menu and routine to show the countries etc for nostalgia sake and recognition… then dump to using the generic dialog program created yesterday.

Sadly you were right I do not have enough memory to run your program.. I though this had it .

Could you cut the code down so it will start right at the dialer, find the WOPR connection and then flow right through to the first simulation of war?

Would you mind If I edited this code to do that if you don’t have the time ? It will take me a bit to track the goto(s) and sub calls… a lot of time :)

I am sure you could cut it fast since you made it and you can see the "pieces" better. I will be in syntax, err hell for a while cobbling it together.

This way we can also remove the calls to the text files, cut the program down so it will run to the recognizable first game.

I would greatly appreciate this, of course you will get a full credit at the end WOPR/Joshua Sim Code. —— Andy Glen for your amazing fastidious detail and clever implementation.

Please let me know either way,

Thank you for your time….

TJ

On Sep 15, 2021, at 8:36 AM, Andy Glenn @.***> wrote:

Hi. Ok, are you able to boot the machine to a CP/M prompt using a boot floppy disk? If so, you need to run the command "DIR" and look for the file "SURVEY.COM". This might be on a different disk, depending on which version of CP/M you are using and how the disks have been organised. If you can find "SURVEY.COM", then run it by simply entering the command "SURVEY" from the command prompt.

You need 56K of available RAM (after CP/M and BIOS) to run the Wargames program in BASIC-80.

If you have 56K available, then the next thing you need to do is get BASIC-80. If you have this on a disk already, great. If not, there are plenty of good CP/M archives online (google is your friend here).

To run BASIC-80, just ensure you have the correct disk mounted in your floppy drive (I'm assuming drive A or B) and run "MBASIC" from the command prompt.

If you have to download it, then you will need to find a way to transfer it onto a disk in the right format or transfer it via some other means, e.g. a null modem cable (for which you will need terminal software).

If you are struggling to get software onto disks in the right format, it may be easier to simulate (emulate) CP/M on a Linux PC, Mac, Raspberry PI or whatever using the Z80Pack (from Udo Munk) available here: https://www.autometer.de/unix4fun/z80pack/ https://www.autometer.de/unix4fun/z80pack/ Then, once you have that up and running, download everything you need - BASIC-80, Wargames Program etc. Get it running on the simulator (emulator) as proof of concept. Then, familiarise yourself with CP/M Tools to create disk images and find a way to write the images to floppy disk or transfer via null modem to the Kaypro.

Best regards,

Andy

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/zompiexx/wargames/issues/1#issuecomment-919980312, or unsubscribe https://github.com/notifications/unsubscribe-auth/AQ35O74NPFCAMLPW6B2FCBLUCCHORANCNFSM5ECHPWMQ. Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

zompiexx commented 2 years ago

Hi TJ:

I’ve modified the BASIC code so that it goes straight to the CP/M prompt - where all you need to do is type DIALER and hit return.

That will take you to the DIALER program (as before), but after you’ve scanned systems (or loaded the list) the only one that now works is WOPR (Option I). I’ve stripped out the code for the other systems, so that should allow you to create a few lines of code of your own.

I’ve also disabled the help pages/screens.

The “Game” still works as before.

You can modify the code for the “Joshua Chat” to suit your needs.

Please see revised code below:

10 REM WARGAMES SIMULATOR BY ANDY GLENN 20 REM (C) 2020, ALL RIGHTS RESERVED 30 CLS$=CHR$(27)+"c" 50 DIM PFX%(9) 60 DIM NUM%(9) 70 DIM PFXHIT%(9) 80 DIM NUMHIT%(9) 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 LET D%=25 300 LET H$="N" 350 LET CLS$=CHR$(27)+"c" 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 : DIALER COM": GOTO 410 460 IF COMMAND$="DIALER" OR COMMAND$="dialer" OR COMMAND$="DIALER.COM" OR COMMAND$="dialer.com" THEN 1200 470 PRINT COMMAND$;"?":GOTO 410 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 GOSUB 7430:GOTO 2370 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 GOSUB 7430:GOTO 2370 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 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 " | \ / / / _" 5220 PRINT " | _/ / / \" 5230 PRINT " | \ _/ |" 5240 PRINT " | UNITED STATES | / SOVIET UNION /" 5250 PRINT " \ / / /" 5260 PRINT " \ / | /" 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(9RND(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

If you only need/want the DIALER and GAME - then you can delete lines from 5580 onwards or modify to suit your needs.

I hope that helps you.

Cheers,

Andy

On 11 Oct 2021, at 15:20, Tehotaone @.***> wrote:

Hi again we are sooo close….. ,

So I was able to collaborate with another enthusiast (Paul Kimbrel) yesterday to get some code together to be able to have a simple back and forth “dialogue” with Joshua in Basic

But…….I still love your hyper-accurate recreation of the dialer, initial logon logic and preliminary “catch up “ phase noting the alias and address in Oregon ( which is the way into my extended story, so this context would be huge )

I would probably like to even use the games menu and routine to show the countries etc for nostalgia sake and recognition… then dump to using the generic dialog program created yesterday.

Sadly you were right I do not have enough memory to run your program.. I though this had it .

Could you cut the code down so it will start right at the dialer, find the WOPR connection and then flow right through to the first simulation of war?

Would you mind If I edited this code to do that if you don’t have the time ? It will take me a bit to track the goto(s) and sub calls… a lot of time :)

I am sure you could cut it fast since you made it and you can see the "pieces" better. I will be in syntax, err hell for a while cobbling it together.

This way we can also remove the calls to the text files, cut the program down so it will run to the recognizable first game.

I would greatly appreciate this, of course you will get a full credit at the end WOPR/Joshua Sim Code. —— Andy Glen for your amazing fastidious detail and clever implementation.

Please let me know either way,

Thank you for your time….

TJ

On Sep 15, 2021, at 8:36 AM, Andy Glenn @.***> wrote:

Hi. Ok, are you able to boot the machine to a CP/M prompt using a boot floppy disk? If so, you need to run the command "DIR" and look for the file "SURVEY.COM". This might be on a different disk, depending on which version of CP/M you are using and how the disks have been organised. If you can find "SURVEY.COM", then run it by simply entering the command "SURVEY" from the command prompt.

You need 56K of available RAM (after CP/M and BIOS) to run the Wargames program in BASIC-80.

If you have 56K available, then the next thing you need to do is get BASIC-80. If you have this on a disk already, great. If not, there are plenty of good CP/M archives online (google is your friend here).

To run BASIC-80, just ensure you have the correct disk mounted in your floppy drive (I'm assuming drive A or B) and run "MBASIC" from the command prompt.

If you have to download it, then you will need to find a way to transfer it onto a disk in the right format or transfer it via some other means, e.g. a null modem cable (for which you will need terminal software).

If you are struggling to get software onto disks in the right format, it may be easier to simulate (emulate) CP/M on a Linux PC, Mac, Raspberry PI or whatever using the Z80Pack (from Udo Munk) available here: https://www.autometer.de/unix4fun/z80pack/ https://www.autometer.de/unix4fun/z80pack/ Then, once you have that up and running, download everything you need - BASIC-80, Wargames Program etc. Get it running on the simulator (emulator) as proof of concept. Then, familiarise yourself with CP/M Tools to create disk images and find a way to write the images to floppy disk or transfer via null modem to the Kaypro.

Best regards,

Andy

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/zompiexx/wargames/issues/1#issuecomment-919980312, or unsubscribe https://github.com/notifications/unsubscribe-auth/AQ35O74NPFCAMLPW6B2FCBLUCCHORANCNFSM5ECHPWMQ. Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/zompiexx/wargames/issues/1#issuecomment-940076873, or unsubscribe https://github.com/notifications/unsubscribe-auth/ARNG7MPHQ3KFRRKLXBMC6XDUGLXETANCNFSM5ECHPWMQ.

Tehotaone commented 2 years ago

Thank you I will ge this into format an give it a go!

You are very kind to assist! I can’t say thanks enough!

TJ

On Oct 11, 2021, at 11:31 AM, Andy Glenn @.***> wrote:

Hi TJ:

I’ve modified the BASIC code so that it goes straight to the CP/M prompt - where all you need to do is type DIALER and hit return.

That will take you to the DIALER program (as before), but after you’ve scanned systems (or loaded the list) the only one that now works is WOPR (Option I). I’ve stripped out the code for the other systems, so that should allow you to create a few lines of code of your own.

I’ve also disabled the help pages/screens.

The “Game” still works as before.

You can modify the code for the “Joshua Chat” to suit your needs.

Please see revised code below:

10 REM WARGAMES SIMULATOR BY ANDY GLENN 20 REM (C) 2020, ALL RIGHTS RESERVED 30 CLS$=CHR$(27)+"c" 50 DIM PFX%(9) 60 DIM NUM%(9) 70 DIM PFXHIT%(9) 80 DIM NUMHIT%(9) 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 LET D%=25 300 LET H$="N" 350 LET CLS$=CHR$(27)+"c" 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 : DIALER COM": GOTO 410 460 IF COMMAND$="DIALER" OR COMMAND$="dialer" OR COMMAND$="DIALER.COM" OR COMMAND$="dialer.com" THEN 1200 470 PRINT COMMAND$;"?":GOTO 410 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 GOSUB 7430:GOTO 2370 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 GOSUB 7430:GOTO 2370 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 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 " | \ / / / _" 5220 PRINT " | _/ / / \" 5230 PRINT " | \ _/ |" 5240 PRINT " | UNITED STATES | / SOVIET UNION /" 5250 PRINT " \ / / /" 5260 PRINT " \ / | /" 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(9RND(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

If you only need/want the DIALER and GAME - then you can delete lines from 5580 onwards or modify to suit your needs.

I hope that helps you.

Cheers,

Andy

On 11 Oct 2021, at 15:20, Tehotaone @.***> wrote:

Hi again we are sooo close….. ,

So I was able to collaborate with another enthusiast (Paul Kimbrel) yesterday to get some code together to be able to have a simple back and forth “dialogue” with Joshua in Basic

But…….I still love your hyper-accurate recreation of the dialer, initial logon logic and preliminary “catch up “ phase noting the alias and address in Oregon ( which is the way into my extended story, so this context would be huge )

I would probably like to even use the games menu and routine to show the countries etc for nostalgia sake and recognition… then dump to using the generic dialog program created yesterday.

Sadly you were right I do not have enough memory to run your program.. I though this had it .

Could you cut the code down so it will start right at the dialer, find the WOPR connection and then flow right through to the first simulation of war?

Would you mind If I edited this code to do that if you don’t have the time ? It will take me a bit to track the goto(s) and sub calls… a lot of time :)

I am sure you could cut it fast since you made it and you can see the "pieces" better. I will be in syntax, err hell for a while cobbling it together.

This way we can also remove the calls to the text files, cut the program down so it will run to the recognizable first game.

I would greatly appreciate this, of course you will get a full credit at the end WOPR/Joshua Sim Code. —— Andy Glen for your amazing fastidious detail and clever implementation.

Please let me know either way,

Thank you for your time….

TJ

On Sep 15, 2021, at 8:36 AM, Andy Glenn @.***> wrote:

Hi. Ok, are you able to boot the machine to a CP/M prompt using a boot floppy disk? If so, you need to run the command "DIR" and look for the file "SURVEY.COM". This might be on a different disk, depending on which version of CP/M you are using and how the disks have been organised. If you can find "SURVEY.COM", then run it by simply entering the command "SURVEY" from the command prompt.

You need 56K of available RAM (after CP/M and BIOS) to run the Wargames program in BASIC-80.

If you have 56K available, then the next thing you need to do is get BASIC-80. If you have this on a disk already, great. If not, there are plenty of good CP/M archives online (google is your friend here).

To run BASIC-80, just ensure you have the correct disk mounted in your floppy drive (I'm assuming drive A or B) and run "MBASIC" from the command prompt.

If you have to download it, then you will need to find a way to transfer it onto a disk in the right format or transfer it via some other means, e.g. a null modem cable (for which you will need terminal software).

If you are struggling to get software onto disks in the right format, it may be easier to simulate (emulate) CP/M on a Linux PC, Mac, Raspberry PI or whatever using the Z80Pack (from Udo Munk) available here: https://www.autometer.de/unix4fun/z80pack/ https://www.autometer.de/unix4fun/z80pack/ Then, once you have that up and running, download everything you need - BASIC-80, Wargames Program etc. Get it running on the simulator (emulator) as proof of concept. Then, familiarise yourself with CP/M Tools to create disk images and find a way to write the images to floppy disk or transfer via null modem to the Kaypro.

Best regards,

Andy

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/zompiexx/wargames/issues/1#issuecomment-919980312, or unsubscribe https://github.com/notifications/unsubscribe-auth/AQ35O74NPFCAMLPW6B2FCBLUCCHORANCNFSM5ECHPWMQ. Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/zompiexx/wargames/issues/1#issuecomment-940076873, or unsubscribe https://github.com/notifications/unsubscribe-auth/ARNG7MPHQ3KFRRKLXBMC6XDUGLXETANCNFSM5ECHPWMQ.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/zompiexx/wargames/issues/1#issuecomment-940133750, or unsubscribe https://github.com/notifications/unsubscribe-auth/AQ35O72IEZ7ZJPENESTX2GTUGL7LPANCNFSM5ECHPWMQ. Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

zompiexx commented 2 years ago

Hi TJ:

Just one thing, if you are going to list me on your credits - please make sure you spell my name like this: Andy Glenn

Cheers,

Andy

Tehotaone commented 2 years ago

Sorry for your last name letter omission… I will get that correct

I got it going! .. the Ascii maps don’t display correctly probably due to screen resolution.

But it does run on real 1983 hardware.

I will be able to use most of the sim, I can use the dialer… I have to manually step through apron 5 return presses before the search of the 10-20 or whatever #s are scanned I then select I to connect WOPR in the View

The Basic Logon/ dialog works well., as expected

I tried adding a speed=30 to slow down the menus a touch.. not sure on the effect.

Thanks for the edit… I will see where this goes and send you a sample as I progress.

On Oct 11, 2021, at 12:15 PM, Andy Glenn @.***> wrote:

Hi TJ:

Just one thing, if you are going to list me on your credits - please make sure you spell my name like this: Andy Glenn

Cheers,

Andy

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/zompiexx/wargames/issues/1#issuecomment-940168551, or unsubscribe https://github.com/notifications/unsubscribe-auth/AQ35O73RHSPYMBDTKL45PLTUGMES7ANCNFSM5ECHPWMQ. Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.