home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
SIMTEL
/
CPMUG
/
CPMUG033.ARK
/
CASPGAME.BAS
< prev
next >
Wrap
BASIC Source File
|
1984-04-29
|
20KB
|
508 lines
REM THIS IS THE PROGRAM 'CASPGAME.BAS'
REM (COMPUTER AIDED SEARCH AND RESCUE PLANNING GAME)
REM
REM WRITTEN BY MAJOR BOB GREGOIRE,OPERATIONS OFFICER,GROUP 30,
REM PENNSYLVANIA WING,CIVIL AIR PATROL
REM
REM THIS PROGRAM IS ESSENTIALLY IDENTICAL TO THE WORKING PROGRAM 'BITCASP'
REM AND WAS WRITTEN TO DEMONSTRATE THAT PROGRAM. TO USE THIS PROGRAM A SCENARIO
REM MUST BE WRITTEN FOR A TYPICAL SAR SITUATION AND THEN THE INSTRUCTOR
REM MUST RUN THIS GAME TO THE EXTENT OF INPUTING ALL POT'S FOR THAT SCENNARIO.
REM THE USER THEN ATTEMPTS TO RECONSTRUCT THAT POT MAP FROM THE SCENNARIO AND
REM FIND THE TARGET (WHICH HAS BEEN RANDOMLY PLACED ON THE MAP WITH RESPECT TO
REM THE INITIAL POT MAP) USING POD'S.
REM
REM THE PURPOSE OF THIS PROGRAM IS TO RECORD AND CALCULATE THE VARIOUS
REM PROBABILITIES OF A SEARCH TARGET BASED UPON THE ESTIMATED TRACK, AREA
REM AND SEARCH RESULTS. THIS PROGRAM INTERFACES WITH A DIGITIZER IN ORDER
REM TO REDUCE MAP TRACKS, AREAS AND GRID POINTS TO MANAGEABLE FORM. THE
REM OUTPUT FROM THIS PROGRAM IS TABULAR SUMMARY OF THE PROBABILITY OF
REM TARGET OF ALL GRIDS WITHIN THE MAP AREA. WITH THESE RESULTS THE MISSION
REM COORDINATOR IS ABLE TO MORE EFFECTIVELY DISTRIBUTE HIS SEARCH FORCES.
REM
REM THIS PROGRAM REQUIRES A 35K CP/M SYSTEM AND USES THE 'CBASIC' COMPILER
REM SPECIAL EQUIPMENT IS A SUMMAGRAPHICS 'BITPAD' WITH THE I/O DRIVER
REM FOR ITS PORT MODIFIED TO CHANGE ANY 'LINE FEED' CHARACTER TO 'SPACE'.
REM THIS WAS DONE BECAUSE 'CARRIAGE RETURN' IS THE OUTPUT DELIMITER IN
REM CBASIC AND BASIC-E. THEREFORE THE 'LINEFEED' IS STORED IN THE UART
REM AND ADDED AS THE FIRST CHARACTER OF THE NEXT BITPAD DATA SEQUENCE. THIS
REM CAUSES THE FIRST COORDINATE (IE XXXX) TO BE IGNORED BY THE COMPILER.
REM THE SYSTEM IS CONFIGURED WITH THE BIT PAD AT 'IOBYTE'=DECIMAL '3'
REM THE CONSOLE AND PRINTER ARE AT 'IOBYTE'=DECIMAL '129'
REM AN ADM-3 TERMINAL HAS BEEN MODIFIED TO CLEAR SCREEN WITH 'CHR$(25)'.
REM THE LINE "OUT 0,184" CHANGES MY 3P+S I/O FROM THE NORMAL 110 BAUD TO
REM THE ALTERNATE 9600 BAUD. THE LINE "POKE 35513,201" INSERTS 'RET (IE.C9)
REM AS THE FIRST INSTRUCTION OF THE 3P+S OUTPUT DRIVER IN BIOS. THE LINE
REM "POKE 35501,0" ACTIVATES A LINE-FEED CHARACTER TO SPACE CHARACTER
REM CONVERSION ROUTINE IN THE 3P+S INPUT ROUTINE.
REM
REM THE BITPAD USED HAD AN RS232 OUTPUT OF 13 ASCII DIGITS (XXXX,YYYY,ZCL)
REM WHERE XXXX IS THE NUMBER OF INCHES FROM THE LOWER LEFT TIMES 200
REM YYYY=Y COORD, Z=PEN DOWN FLAG, C=CARRIAGE RETURN, L=LINE FEED
REM A SERIOUS PROBLEM IS THAT THE BIOS ATTEMPTS TO ECHO ALL BITPAD INPUT
REM TO THE BITPAD OUTPUT PORT. THIS CUTS THE THROUGHPUT CONSIDERABLY.
REM AT TIMES THE INPUT DATA WILL OVERRUN THE PROCESSING TIME AND WILL
REM CAUSE THE COMPILER TO OUTPUT AN ERROR MESSAGE TO THE BITPAD OUTPUT
REM PORT. TIMEWISE THIS WILL MESS UP THE INPUT OF THE NEXT DATA POINT
REM (WHICH CAUSES ANOTHER MESSAGE ETC ETC). AT RATE 4 (8 DATA POINTS PER
REM SECOND)THE THROUGHPUT IS ABOUT 3 DATA POINTS PER SECOND.IF THE CALLING
REM ADDRESS OF THE BITPAD OUTPUT DRIVER HAS 'C9' (RETURN) PATCHED TO IT,
REM RATES 4,5 WILL GIVE AN HONEST THROUGHPUT OF 6 OR 12.5 DATA POINTS
REM PER SECOND (IE. 16 OR 8 SECONDS PER TRACK). THE BITPAD BAUD RATE WAS
REM SET TO 9600 (1 STOP BIT).
REM
REM THIS PROGRAM HAS BEEN DESIGNED TO USE A PENNSYLVANIA MAP WHICH IS
REM GRIDDED ON 15 MINUTE (LAT+LONGITUDE) CENTERS. THERE ARE THEREFORE
REM 9(NORTH-SOUTH) BY 23(EAST-WEST) GRIDS. FOR PRINTING CONVENIENCE
REM THE PENNSYVANIA MAP WAS ORIENTED WITH EAST AT THE TOP OF THE BITPAD.
REM FOR OTHER MAPS CHANGE THE VARIABLES 'NX' AND 'NY'.
REM **********************************************************************
REM VARIABLES:
REM NY=THE NUMBER OF HORIZONTAL ROWS
REM NX=THE NUMBER OF VERTICAL ROWS
REM AX,AY=UPPER LEFT MAP COORDINATE
REM BX,BY=UPPER RIGHT MAP COORDINATE
REM CX,CY=LOWER LEFT MAP COORDINATE
REM NUMPTS=THE NUMBER OF DATA POINTS PER TRACK LINE
REM POT=PROBABILITY OF TARGET FOR A SINGLE TRACK OR GRID
REM SPOT=THE SUM OF POT'S FOR ALL GRIDS IN THE IPOT( ) MATRIX
REM TPOF=THE TOTAL PROBABILITY OF FAILURE FOR THE MAP AREA
REM POD=PROBABILITY OF DETECTION
REM ANS$=DUMMY STRING VARIABLE
REM TX,TY,Z=DUMMY VARIABLES
REM TEMP( )=MATRIX HOLDING TEMPORARY ONE TRACK POT'S
REM IPOT( )=MATRIX HOLDING THE INITIAL POT FOR ALL TRACKS/POT AREAS
REM COVF( )=MATRIX HOLDING COVERAGE FACTORS
REM APOT( )=MATRIX HOLDING THE POT'S ADJUSTED FOR POD
REM XTARGET,YTARGET=X+Y COORDINATES OF THE SECRET TARGET
REM TARGET=RANDOM NUMBER USED TO SELECT THE TARGET AND THEN USED AS MIN POD
REM
REM NOTE: GRID '0,0' IS AT LOWER LEFT; GRID 'NX-1,NY-1' IS AT THE UPPER RIGHT
REM
REM ************************************************************************
REM
REM LOAD INITIAL DATA
REM
OUT 0,184 REM COMMAND WORD TO BITPAD I/O PORT
POKE 35513,201:POKE 35501,0 REM 35K SYSTEM PATCH
PRINT CHR$(25) REM CLEAR SCREEN
NY=23 : NX=9 : NUMPTS=100 REM MAP SIZE
XTARGET=-1:YTARGET=-1:TPOF=1
DIM DX(NUMPTS),DY(NUMPTS)
DIM TEMP(NX-1,NY-1),IPOT(NX-1,NY-1),COVF(NX-1,NY-1),APOT(NX-1,NY-1)
REM
REM ****************************************************************
REM
REM PROPERLY ORIENT THE MAP ,LESS THAN .15 INCH TILT ALLOWED
REM
PRINT "SWITCH BITPAD TO MODE 3 AND PRESS 'CLEAR'"
105 PRINT "TOUCH PROBE TO UPPER LEFT CORNER,UPPER RIGHT,LOWER LEFT"
POKE 3,3 REM BIT I/0 IS CONSOLE
INPUT AX,AY,Z REM UPPER LEFT
INPUT BX,BY,Z REM UPPER RIGHT
INPUT CX,CY,Z REM LOWER LEFT
POKE 3,129 REM VTR IS CONSOLE
IF AX=0 THEN PRINT "TRY AGAIN":GOTO 105
IF ABS(BY-AY)>30 THEN PRINT CHR$(7);"STRAIGHTEN THE MAP":GOTO 105
PRINT "THE COORDINATES ARE ";AX/200;",";AY/200,BX/200;",";BY/200
PRINT " ";CX/200;",";CY/200
INPUT "OK? (Y/N)";ANS$
IF LEFT$(ANS$,1)<>"Y" THEN GOTO 105
TX=NX/(BX-AX) : TY=NY/(AY-CY) REM GRID WIDTH+HEIGHT
REM
REM **********************************************************************
REM
REM COMMAND MENUE
REM
150 PRINT CHR$(25);FRE REM CLEAR SCREEN
PRINT "CURRENT SEARCH EFFECTIVENESS=";INT(1000*(1-TPOF)+.5)/10;"%"
PRINT "YOU HAVE THE FOLLOWING OPTIONS:":PRINT
PRINT "1.ADD A NEW TRACK LINE POT";TAB(33);"4.ADD NEW POD"; \
TAB(50);"5.LIST INITIAL POT MAP"
PRINT "2.ADD A NEW GENERAL AREA POT";TAB(50);"6.LIST POD MAP"
PRINT "3.ADD AN AREA OF EMPHASIS";TAB(50);"7.LIST ADJUSTED POT MAP"
PRINT TAB(50);"8.IDENTIFY GRID POT'S":PRINT
PRINT"9.START GAME";TAB(20);"10.SAVE SCENNARIO";TAB(50);"11.QUIT GAME"
INPUT "WHICH ONE (1-11)?";COMMAND
IF COMMAND<1 OR COMMAND>11 THEN GOTO 150
ON COMMAND GOSUB 180,180,180,700,600,1000,900,1100,2000,3000,5000
GOTO 150
REM
REM **********************************************************************
REM
REM INPUT GENERAL AREA OR TRACK LINE POT
REM
180 GOSUB 475 REM ZERO TEMP( )
GOSUB 200 REM INPUT DATA POINTS
GOSUB 300 REM CHECK FOR OFF-MAP
GOSUB 350 REM REM ASSIGN POT'S
IF COMMAND=2 OR COMMAND=3 THEN GOSUB 550 REM ASSIGN AREA POT'S
IF COMMAND<>3 THEN GOSUB 375 ELSE GRIDCOUNT=1 REM COUNT # OF GRIDS
GOSUB 400 REM PRINT ROUTINE
INPUT "ARE YOU SATISFIED WITH THIS AREA/TRACK?";ANS$
IF LEFT$(ANS$,1)<>"Y" THEN GOTO 180 REM START AGAIN
PRINT "WAIT"
IF COMMAND<>3 THEN GOSUB 450 ELSE GOSUB 1200 REM LOAD IPOT( )
GOSUB 500 REM DELPHI SCALE IPOT()
INPUT "DO YOU HAVE ANOTHER AREA/TRACK TO ADD?";ANS$
IF LEFT$(ANS$,1)="Y" THEN GOTO 180
GOSUB 800 REM RECALCULATE APOT()
RETURN
REM
REM ***********************************************************************
REM
REM INPUT THE TRACK POT OR AREA DATA POINTS
REM
200 INPUT "WHAT IS THE POT?";POT REM IN %
PRINT "SWITCH TO MODE '1' AND RATE '4'"
PRINT "DRAW AT WRITING SPEED" REM SWITCH STREAM MODE
POKE 3,3 REM XFER TO BITPAD
FOR Q=1 TO NUMPTS REM FOR ALL DATA POINTS
INPUT DX(Q),DY(Q),Z REM INPUT FROM BITPAD
NEXT Q
POKE 3,129:PRINT CHR$(7);"WAIT" REM 'BEEP'
RETURN
REM
REM ***********************************************************************
REM
REM CHANGES OFF-MAP DATA POINTS TO ON-MAP POINTS AT THE BOUNDARIES
REM
300 FOR Q=1 TO NUMPTS
IF DX(Q)<=AX THEN DX(Q)=AX+1 REM LEFT SIDE
IF DY(Q)<=CY THEN DY(Q)=CY+1 REM BOTTOM
IF DX(Q)>=BX THEN DX(Q)=BX-1 REM RIGHT SIDE
IF DY(Q)>=AY THEN DY(Q)=AY-1 REM TOP
NEXT Q
RETURN
REM
REM ***********************************************************************
REM
REM ASSIGN THE POT TO A GRID IF ANY DATA POINT IS WITHIN THAT GRID
REM
350 FOR Q=1 TO NUMPTS REM FOR ALL DATA POINTS
TEMP(INT((DX(Q)-AX)*TX),INT((DY(Q)-CY)*TY))=POT
NEXT Q
RETURN
REM
REM ***********************************************************************
REM
REM THIS ROUTINE COUNTS THE # OF GRIDS AFFECTED BY THE TRACK/AREA IN ORDER
REM TO APPORTION POT TO THESE GRIDS IN THE 'XFER POT' ROUTINE
REM
375 GRIDCOUNT=0 REM RESET
FOR R=0 TO NY-1 REM FOR ALL GRIDS
FOR S=0 TO NX-1
IF TEMP(S,R)<>0 THEN GRIDCOUNT=GRIDCOUNT+1
NEXT S
NEXT R
RETURN
REM
REM**********************************************************************
REM
REM PRINT THE GRID POT'S ASSIGNED BY THIS TRACK
REM
400 FOR R=NY-1 TO 0 STEP -1 REM PRINT FROM TOP DOWN
FOR S=0 TO NX-1 REM FOR ALL GRIDS
IF TEMP(S,R)<>0 THEN \
PRINT TAB(1+9*S);INT(10*TEMP(S,R)/GRIDCOUNT)/10;"%";\
ELSE PRINT TAB(1+9*S);" *";
NEXT S:PRINT
NEXT R
RETURN
REM
REM *********************************************************************
REM
REM TRANSFER TEMP( ) TO IPOT( ) TEMP() HOLDS THIS-TRACK/AREA POT
REM NOTE:ALL TEMP( ) ENTRIES ARE SCALED DOWN BY 'GRIDCOUNT'
REM
450 FOR R=0 TO NY-1
FOR S=0 TO NX-1 REM 'SPOT' IS PRE-THIS-TRACK 'SPOT'
IPOT(S,R)=SPOT*IPOT(S,R)+TEMP(S,R)/GRIDCOUNT
NEXT S
NEXT R
RETURN
REM
REM *******************************************************************
REM
REM ZERO THE TEMP( ) MATRIX
REM
475 PRINT "WAIT"
FOR R=0 TO NY-1 REM FOR ALL GRIDS
FOR S=0 TO NX-1
TEMP(S,R)=0
NEXT S
NEXT R
RETURN
REM
REM ***********************************************************************
REM DELPHI EVALUATION -FOR ALL GRIDS, SUMS IPOT() THEN DIVIDES BY SUM
REM
500 SPOT=0 REM RECALCULATE SPOT
FOR R=0 TO NY-1 REM SUM ALL IPOT ENTRIES
FOR S=0 TO NX-1 REM IN THE VARIABLE 'SPOT'
SPOT=SPOT+IPOT(S,R)
NEXT S
NEXT R
REM
REM DELPHI SCALING ROUTINE
REM
FOR R=0 TO NY-1 REM SCALE DOWN ALL IPOT ENTRIES
FOR S=0 TO NX-1 REM 0<=IPOT( )<=1.00
IPOT(S,R)=IPOT(S,R)/SPOT
NEXT S
NEXT R
RETURN
REM
REM **********************************************************************
REM
REM BILL LOWERY'S AREA POT TECHNIQUE -FILLS AN AREA BOUNDED BY DATA POINTS
REM
550 FOR S=0 TO NX-1
FIRST=-1:SECOND=-1
FOR R=0 TO NY-1
IF TEMP(S,R)=0 THEN GOTO 580
IF FIRST=-1 THEN FIRST=R:GOTO 580
SECOND=R
580 NEXT R
IF FIRST=-1 OR SECOND=-1 THEN GOTO 595
590 TEMP(S,FIRST)=POT
IF FIRST<>SECOND THEN FIRST=FIRST+1:GOTO 590
595 NEXT S
RETURN
REM
REM ********************************************************************
REM
REM PRINT THE INITIAL ALL-TRACK POT'S MATRIX
REM
600 LPRINTER REM HARD COPY
FOR R=NY-1 TO 0 STEP -1 REM FOR ALL GRIDS
FOR S=0 TO NX-1
PRINT TAB(10+7*S);INT(1000*IPOT(S,R))/10;"%";
NEXT S:PRINT:PRINT
NEXT R
PRINT CHR$(12):CONSOLE REM CONSOLE I/O
RETURN
REM
REM ************************************************************************
REM
REM POD INPUT ROUTINE
REM
REM THE FOLLOWING ROUTINE REQUIRES THE USER TO DESIGNATE BOTH THE POD AND
REM GRID USING THE BITPAD IN SINGLE DATA POINT MODE. THE POD IS EQUAL TO THE
REM HEIGHT OF THE DATA POINT (IN INCHES) ABOVE THE LOWER LEFT REFERENCE POINT
REM TIMES 10. THIS ROUTINE IS EXITED BY POINTING TO A DATA POINT OUTSIDE THE
REM UPPER OR LOWER OR RIGHT BOUNDARIES. THE POD AND GRID MAY BE DESIGNATED IN
REM EITHER ORDER.
REM
700 PRINT:PRINT "TOUCH GRID+POD,MODE 3"
POD=-1 : X1=-1
710 POKE 3,3 REM BITPAD I/O
INPUT X,Y,Z REM DATA POINT
POKE 3,129 REM CONSOLE I/O
IF X>BX OR Y<CY OR Y>AY THEN GOTO 800 REM EXIT
IF X<AX THEN POD=(Y-CY)/20 ELSE X1=INT((X-AX)*TX):Y1=INT((Y-CY)*TY)
IF POD<0 OR X1<0 THEN GOTO 710 REM NEED BOTH
COVF(X1,Y1)=COVF(X1,Y1)+LOG(1-POD/100)
PRINT CHR$(7);"GRID";X1+1;",";Y1+1;"WITH POD=";POD;"%"
REM GAME ROUTINE FOLLOWS
NUMSORTIE=NUMSORTIE+1 REM COUNT SORTIES
IF X1<>XTARGET OR Y1<>YTARGET THEN GOTO 700 REM ON TARGET?
IF TARGET>(1-EXP(COVF(X1,Y1))) THEN GOTO 700 REM POD BIG ENOUGH?
PRINT "YOU FOUND HIM !!!! ON THE NUMBER";NUMSORTIE;"SORTIE"
FOR X=1 TO 200 : PRINT CHR$(7); : NEXT X:PRINT
GOTO 800
REM
REM **************************************************************************
REM
REM POT ADJUSTMENT ROUTINE
REM
800 TPOF=0 : PRINT "WAIT"
FOR R=0 TO NY-1 REM FOR ALL GRIDS
FOR S=0 TO NX-1
TPOF=TPOF+IPOT(S,R)*EXP(COVF(S,R)) REM RECALC TPOF
NEXT S
NEXT R
REM
FOR R=0 TO NY-1 REM FOR ALL GRIDS
FOR S=0 TO NX-1
APOT(S,R)=IPOT(S,R)*EXP(COVF(S,R))/TPOF
NEXT S
NEXT R
RETURN
REM
REM *************************************************************************
REM
REM ADJUSTED POT OUTPUT ROUTINE
REM
900 LPRINTER REM HARD COPY
FOR R=NY-1 TO 0 STEP -1 REM FOR ALL GRIDS
FOR S=0 TO NX-1
PRINT TAB(10+7*S);INT(1000*APOT(S,R)+.5)/10;"%";
NEXT S : PRINT:PRINT
NEXT R
PRINT CHR$(12):CONSOLE REM CONSOLE I/O
RETURN
REM
REM *************************************************************************
REM
REM POD OUTPUT ROUTINE
REM
1000 LPRINTER REM HARD COPY
FOR R=NY-1 TO 0 STEP -1 REM FOR ALL GRIDS
FOR S=0 TO NX-1
PRINT TAB(10+7*S);INT(100*(1-EXP(COVF(S,R)))+.5);"%";
NEXT S : PRINT:PRINT
NEXT R
PRINT CHR$(12):CONSOLE REM CONSOLE I/O
RETURN
REM
REM *************************************************************************
REM
REM ROUTINE TO IDENTIFY GRID COMPOSITE POT'S
REM IF OFF-MAP POINT IS IDENTIFIED, ROUTINE RETURNS TO COMMAND MENUE
REM
1100 PRINT "SWITCH TO MODE 3"
1105 PRINT:PRINT "TOUCH THE PROBE TO ANY GRID"
POKE 3,3 REM BITPAD I/O
INPUT X,Y,Z REM DATA POINT
POKE 3,129 REM CONSOLE I/O
PRINT CHR$(7)
IF X<AX OR X>BX OR Y<CY OR Y>AY THEN RETURN REM ONLY EXIT
X=INT((X-AX)*TX) : Y=INT((Y-CY)*TY) REM WHAT GRID?
PRINT "FOR GRID";X+1;",";Y+1
PRINT "THE INITIAL POT WAS";INT(1000*IPOT(X,Y))/10;"%"
PRINT "THE TOTAL POD IS";INT(100*(1-EXP(COVF(X,Y)))+.5);"%"
PRINT "THE COMPOSITE POT IS";INT(1000*APOT(X,Y)+.5)/10;"%"
PRINT : GOTO 1105 REM AGAIN
RETURN
REM
REM ************************************************************************
REM
REM ROUTINE TO INCREASE IPOT( ) IN AN AREA OF EMPHASIS
REM POT IS A MULTIPLIER IN THIS ROUTINE
REM
1200 FOR R=0 TO NY-1 REM FOR ALL GRIDS
FOR S=0 TO NX-1
IPOT(S,R)=IPOT(S,R)*(1+TEMP(S,R)/100)
NEXT S
NEXT R
RETURN
REM
REM *************************************************************************
REM
REM ROUTINE TO RETRIEVE GAME SCENNARIO FROM DISC FILE
REM
2000 INPUT "WHAT IS THE NAME OF YOUR EXERCISE?";ANS$
RANDOMIZE
ANS$=LEFT$(ANS$,8)+".GME"
FILE ANS$ REM SEQUENTIAL FILE
IF END #1 THEN 2080 REM NO SUCH FILE
TARGET=RND : TOTAL=0
FOR R=0 TO NY-1
FOR S=0 TO NX-1
READ #1;TEMP(S,R)
NEXT S
NEXT R
PRINT "WAIT"
FOR R=0 TO NY-1
FOR S=0 TO NX-1
TOTAL=TOTAL + TEMP(S,R)
REM IF TEMP(S,R)<>0 THEN PRINT "GRID=";S+1;",";R+1;\
REM " VALUE=";INT(100*TEMP(S,R));\
REM " TARGET=";INT(100*TARGET);" TOTAL=";INT(100*TOTAL)
IF TOTAL>TARGET THEN XTARGET=S:YTARGET=R:TARGET=2
NEXT S
NEXT R
TARGET=RND
IF TARGET>.6 THEN TARGET =.4+.2*TARGET REM MAKES IT EASY
REM PRINT"THE TARGET IS GRID";XTARGET+1;",";YTARGET+1;\
REM "AND THE MIN POD IS";INT(100*TARGET);"%"
GOTO 2099
2080 PRINT "SOMETHING WRONG HERE"
2099 CLOSE (1) : RETURN
REM
REM *************************************************************************
REM
REM ROUTINE TO SAVE IPOT( ) AS A GAME
REM
3000 INPUT "WHAT NAME DO YOU WANT TO GIVE THIS SCENNARIO (8 CHAR MAX)?";ANS$
ANS$=LEFT$(ANS$,8)+".GME"
FILE ANS$
IF END #1 THEN 3099
FOR R=0 TO NY-1
FOR S=0 TO NX-1
PRINT #1;IPOT(S,R)
NEXT S
NEXT R
3099 CLOSE (1) :RETURN
REM *************************************************************************
REM
REM QUIT GAME ROUTINE
REM
5000 PRINT:PRINT
PRINT"YOU QUIT AFTER";NUMSORTIE;"SORTIES WITH A SEARCH EFFECTIVENESS OF";\
INT(1000*(1-TPOF)+.5)/10;"%"
PRINT"THE TARGET WAS IN GRID (";XTARGET+1;",";YTARGET+1;") YOU DINGALING"
PRINT"A COMPOSITE GRID POD OF";INT(100*TARGET);"% WOULD HAVE FOUND HIM"
INPUT "DO YOU STILL WANT TO QUIT?";ANS$
IF LEFT$(ANS$,1)<>"Y" THEN RETURN
END
REM
GENERAL PROCEDURE TO USE THIS PROGRAM:
1. TAPE A REGULARLY GRIDDED MAP ONTO THE BITPAD
2. WHEN REQUESTED, SWITCH THE BITPAD TO MODE '3' AND TOUCH THE STYLUS TO
THE UPPER LEFT, UPPER RIGHT, AND THEN LOWER LEFT CORNERS OF THE MAP (IN THAT
ORDER). YOU WILL BE INFORMED IF THE MAP NEEDS STRAIGHTENING.
3. SELECT OPTION '1' (TRACK LINE). AFTER ENTERING THE ESTIMATED POT
(PROBABILITY OF THE TARGET) ON THE CONSOLE, SELECT MODE '1' ON THE BITPAD
AND THEN TRACE THE TRACKLINE ON THE MAP. HOLD THE PEN DOWN UNTIL THE CONSOLE
BEEPS. IF NECESSARY, RETRACE THE TRACKLINE.
4. SELECT OPTION '2' (GENERAL AREA). FOR THIS OPTION YOU MAY ELECT TO
EITHER OUTLINE THE BOUNDARIES OF THE AREA (AND RELY ON THE PROGRAM TO CENTER
FILL) OR PUT A DATA POINT IN EVERY GRID. YOU SHOULD AVOID VERY IRREGULAR
AREAS. EITHER SUBDIVIDE THESE AREAS AND ENTER THEM SEPARATELY OR USE OPTION '1'
(WHICH DOES NOT CENTER FILL) AND PUT A DATA POINT IN EVERY AFFECTED GRID. ONCE
AGAIN THE CONSOLE WILL BEEP AFTER 100 DATA POINTS ARE ENTERED.
5. SELECT OPTION '3' (AREA OF EMPHASIS) - IN MODE '1' TRACE AN AREA'S
BOUNDARIES. THIS OPTION IS INTENDED TO BE USED FOR INCREASING THE POT OF A
PORTION OF A TRACK LINE WHERE THE TRACK LINE CROSSES MOUNTAINS OR A STORM
FRONT. A TYPICAL POT FOR THIS OPTION IS 200% TO 500%. THIS ENTRY IS A
MULTIPLIER FOR THE EXISTING GRID POT'S AND SHOULD ONLY BE USED AFTER ALL
TRACKS/GENERAL AREAS HAVE BEEN ENTERED. THINK OF IT AS AN AREA OF INCREASED
DANGER.
6. SELECT OPTION '4' (ADD NEW POD). THIS OPTION IS USED TO ENTER ACTUAL
SEARCH RESULTS IE. POD(PROBABILITY OF DETECTION). WHEN AN AREA IS SEARCHED, THE
PROBABILITY THAT THE UNDISCOVERED TARGET STILL IS IN THAT AREA, DECREASES.
SIMILIARLY, THE PROBABILITY THAT THE TARGET IS ELSEWHERE (IN A DIFFERENT GRID),
INCREASES. THEREFORE THE POD IS USED TO MODIFY THE INITIAL POT AND CREATE
THE ADJUSTED POT MATRIX.
THE USER SHOULD SWITCH THE BITPAD TO MODE '3' AND POINT TO THE POD
(ON THE LEFT SIDE OF THE MAP) AND THEN TO THE PARTICULAR GRID. THE CONSOLE WILL
BEEP TO INDICATE THAT A POD/GRID PAIR HAS BEEN ENTERED. TO EXIT THIS ROUTINE,
POINT TO A LOCATION THAT IS ABOVE, BELOW OR TO THE RIGHT OF THE MAP.
7. SELECT OPTION '5' OR '6' OR'7' - THESE OPTIONS CAUSE HARD COPY OUTPUT
OF THE "INITIAL POT MAP","POD MAP" OR "COMPOSITE ADJUSTED POT MAP" RESPECTIVELY
THE COMPOSITE ADJUSTED POT MAP IS DERIVED FROM THE INITIAL POT MAP WITH
ADJUSTMENTS FOR POD'S.
8. SELECT OPTION '8' - THIS OPTION CAUSES THE POD AND INITIAL/COMPOSITE
POT'S FOR THE GRID INDICATED, TO BE LISTED ON THE CONSOLE SCREEN. TO EXIT
THIS ROUTINE, POINT TO AN AREA OUTSIDE THE MAP BOUNDARIES. GRID (1,1) IS AT
THE LOWER LEFT.
9. GENERAL COMMENTS -THIS PROGRAM WORKS BEST IF THE TRACKS/AREAS HAVE BEEN
PRE-SKETCHED ON THE MAP. IT IS SOMETIMES POSSIBLE TO CANCEL A POT TRACK LINE/
AREA BY ENTERING A NEGATIVE POT AND THE SAME TRACK AS BEFORE. HOWEVER, STRANGE
THINGS WILL HAPPEN IF THE EXACT TRACK IS NOT FOLLOWED.
IN BITPAD MODE '1' (SWITCH STREAM) DATA RATES 1 THROUGH 5 ARE AVAILABLE
THIS CORRESPONDS TO 1,2,4,8, OR 16 DATA POINTS PER SECOND. ALTERNATELY 120,60,
30,15 OR 8 SECONDS FOR 100 DATA POINTS. RATE '4' (16 SECONDS PER TRACK) SEEMS
TO WORK BEST FOR TRACKS 5 TO 10 INCHES LONG.