IMD 1.16: 31/05/2007 19:41:00 FOGCPM.094 --FOGCPM094BATLSHIPBAS4 JETSIM BASV JETSIM DOCu !"#JETSIMB BAS$%&'()*+,-./0123JETSIMB BAS/456789-07-00 86 LIFE COM :;LIFE INS<=LIFE AQMK>?@ABCDEFGOSZ-JEDIBASxHIJKLMNOPQRSTUVWHEEL DOCWXYZWHEEL INS&[\]^_EVENT DAT`PEOPLE DAT abPERSON DATcPHRASE DATdefPLACE DATgQUOTE DAThRANDOM DATiTHING DATjTITLE DATkWHEEL-EXBASlmnopqrstuvwxyz{WHEEL-EXBASb|}~-CPM094 DOCWHEEL-O1BASWHEEL-O1BASRThis is the disk name. 10 ' BATTLESHIP PROGRAM -- SUBMITTED BY CARL WARNER 20 ' SOURCE UNKNOWN -- ORIGINALLY IN H89 FORMAT 30 ' SET UP FOR AN 80 COLUMN OSBORNE 1 SCREEN 40 ' CONVERTED FROM H89 FORMAT TO O1 FORMAT ON 3/24/84 50 CLEAR 2500 60 ES$=CHR$(27):CL$=CHR$(26):GR$=ES$+"g" 70 RG$=ES$+"G":RV$=ES$+")":VR$=ES$+"(" 80 VT$=CHR$(11):RT$=CHR$(9):BL$=" ":BE$=CHR$(7) 90 ML$=BL$+VT$+BL$+VT$+BL$+VT$+BL$+VT$+BL$+VT$ 100 ML$=ML$+BL$+VT$+BL$+VT$+BL$+VT$+BL$+VT$+BL$+VT$+BL$+VT$ 110 NO$="1"+BL$+"2"+BL$+"3"+BL$+"4"+BL$+"5" 120 NO$=NO$+BL$+"6"+BL$+"7"+BL$+"8"+BL$+"9"+BL$+"10" 130 PRINT CL$:FOR I=1 TO 5:PRINT:NEXT:PRINT TAB(34);RV$;"BATTLESHIP";VR$ 140 PRINT:PRINT:PRINT TAB(25);"PLEASE SELECT OPTION 1,2 OR 3!" 150 PRINT:PRINT:PRINT TAB(30);"GAME DIRECTIONS - 1" 160 PRINT:PRINT TAB(30); "START GAME - 2" 170 PRINT:PRINT TAB(30); "END GAME - 3" 180 T$=INKEY$ 190 IF T$="" THEN SEED=SEED+1:GOTO 180 200 U=VAL(T$) 210 IF U<1 OR U>3 THEN PRINT BE$:GOTO 10 220 ON U GOTO 240,450,1750 230 IF T<=0 OR T>=4 THEN PRINT BE$:GOTO 200 240 PRINT CL$;TAB(28);RV$;"BATTLESHIP";VR$:PRINT 250 PRINT"This is a guessing game to locate the hidden ships. A map will be 260 PRINT"drawn on the screen with numbers over each column and down each row. 270 PRINT"The description of each ship and its symbol will be displayed to 280 PRINT"the right of the map for your information. The game will start by 290 PRINT"randomly selecting the hidden locations for the ships. During this 300 PRINT"time, a message will be displayed asking you to wait while the ships 310 PRINT"maneuver. To the left of the screen, you will be asked your selection 320 PRINT"for the columns with the prompt - OVER?. Please answer with a number 330 PRINT"between 1 and 10 and hit the key. Next you will be asked 340 PRINT"your selection for the rows with the prompt - DOWN?. Please answer 350 PRINT"with a number between 1 and 10. If you locate a ship one of the 360 PRINT"symbols for the ships will appear at the guessed location and a beep 370 PRINT"will sound. If you miss, an '*' will appear in the location. If you 380 PRINT"pick a location that was previously chosen, you will see a message 390 PRINT"to TRY AGAIN along with 2 beeps. The shots, hits and misses will be 400 PRINT"displayed for you. There are a possible 100 shots. You will be rated 410 PRINT"by your score at the end of the game as the map is cleared of '*'s' 420 PRINT"to reveal the ship locations.":PRINT 430 PRINT"= = = = = = = = = = = = = = = = = =>>>";RV$;"To start the game press";VR$;" ANY";RV$;" key";VR$:PRINT 440 A$=INPUT$(1) 450 PRINT CL$:PRINT GR$;TAB(5);RV$;"BATTLESHIP";VR$;TAB(23);NO$;RG$ 460 FOR I=1 TO 10:PRINT GR$;TAB(20) STRING$(40,97);RG$ 470 PRINT GR$;TAB(12)I;TAB(16)ML$;RG$:NEXT I 480 PRINT GR$;TAB(20) STRING$(40,97);RG$ 490 FOR U=302 TO 1102 STEP 80 500 N=U:READ CH$:GOSUB 1180:NEXT U 510 FOR U=241 TO 561 STEP 80 520 N=U:READ CH$:GOSUB 1180:NEXT U 530 DIM A(10,10):DIM K(16) 540 FOR B=1 TO 10:FOR E=1 TO 10 550 READ A(B,E):NEXT E:NEXT B 560 PRINT RV$;BE$ 570 N=1262:CH$="SHIPS MANEUVERING":GOSUB 1180 580 N=1342:CH$="PLEASE WAIT":GOSUB 1180 590 RANDOMIZE SEED 600 FOR C=5 TO 1 STEP -1 610 FOR F=1 TO 2 620 W=INT(RND*2):T=INT(RND*11) 630 IF T<1 OR T>10 THEN 620 640 B(F)=T 650 NEXT F 660 G=C:O=B(1):D=B(2):H=1 670 FOR G=G TO 1 STEP -1 680 FOR J=1 TO 15 690 N=A(D,O) 700 IF K(J)<>N THEN 790 710 IF C=4 THEN J=6 720 IF C=3 THEN J=10 730 IF C=2 THEN J=13 740 IF C=1 THEN J=15 750 FOR K=J TO 15 760 K(K)=0 770 NEXT K 780 GOTO 610 790 IF K(J)<>0 THEN 860 800 K(J)=N 810 IF W=0 THEN D=D+H 820 IF W=1 THEN O=O+H 830 IF D=11 THEN D=D-C 840 IF O=11 THEN O=O-C 850 GOTO 870 860 NEXT J 870 NEXT G 880 NEXT C 890 PRINT VR$;BE$ 900 T=0:N=1262:CH$=" ":GOSUB 1180 910 N=1342:GOSUB 1180 920 CH$="OVER":T=0:N=962:GOSUB 1180 930 INPUT O 940 CH$=" ":N=1042:GOSUB 1180 950 IF O>0 AND O<11 THEN 970 960 GOSUB 1040:GOTO 920 970 CH$="DOWN":N=1122:GOSUB 1180 980 INPUT D 990 CH$=" ":N=1202:GOSUB 1180 1000 IF D>0 AND D<11 THEN 1020  1010 GOSUB 1040:GOTO 970 1020 N=A(D,O) 1030 IF N<>0 THEN 1070 ELSE GOTO 960 1040 CH$="TRY AGAIN":N=801::PRINT RV$;BE$:GOSUB 1180 1050 PRINT VR$:FOR X=1000 TO 1 STEP -1:NEXT X:PRINT BE$ 1060 CH$=" ":N=801:GOSUB 1180:RETURN 1070 RESTORE 1740 1080 S=1:T=1 1090 FOR J=1 TO 15 1100 READ CH$ 1110 IF K(J)=N THEN 1140 1120 NEXT J 1130 CH$="*":S=0 1140 GOSUB 1180 1150 A(D,O)=0 1160 S=0 1170 GOTO 920 1180 X=(N-(INT(N/80)*80)+1):Y=INT(N/80)+1 1190 IF S<>1 THEN 1210 1200 PRINT RV$;BE$ 1210 PRINT ES$+"="+CHR$(Y+31)+CHR$(X+30);CH$ 1220 IF T=0 THEN RETURN 1230 C(1)=C(1)+S:C(3)=C(3)+1:C(2)=C(3)-C(1) 1240 PRINT RV$ 1250 FOR L=321 TO 641 STEP 160 1260 M=(L-161)/160:N=L 1270 GOSUB 1300:NEXT L:PRINT VR$ 1280 IF C(1)=15 THEN 1330 1290 RETURN 1300 X=(N-(INT(N/80)*80)+1):Y=INT(N/80)+1 1310 PRINT ES$+"="+CHR$(Y+31)+CHR$(X+30);C(M) 1320 RETURN 1330 RESTORE 1730 1340 T=0:PRINT RV$;BE$:N=1262:CH$="RATING :":GOSUB 1180 1350 FOR T=25 TO 85 STEP 15 1360 READ CH$ 1370 IF C(3)<=T THEN 1390 1380 NEXT T 1390 N=1342:T=0:GOSUB 1180 1400 N=1502:CH$="CLEARING MISSES":GOSUB 1180 1410 N=1582:CH$="TO REVEAL PATTERN":GOSUB 1180 1420 PRINT VR$;BE$ 1430 RESTORE 1630 1440 T=0:S=3 1450 FOR B=1 TO 10 1460 FOR E=1 TO 10 1470 READ A(B,E) 1480 FOR J=1 TO 15 1490 IF K(J)=A(B,E) THEN 1520 1500 NEXT J 1510 CH$=" ":N=A(B,E):GOSUB 1180 1520 NEXT E 1530 NEXT B 1540 N=1502:CH$=" ":GOSUB 1180 1550 N=1582:GOSUB 1180 1560 RESTORE 1590 1570 PRINT:PRINT:PRINT TAB(21);RV$;"Press any key to return to main menu. ";VR$; 1580 X$=INPUT$(1):GOTO 10 1590 DATA "CARRIER = CCCCC","BATTLESHIP = BBBB","DESTROYER = DDD" 1600 DATA "SUBMARINE = SS","PT BOAT = P"," ","NO. OF SHOTS = 100" 1610 DATA "MISS = *","HIT = C,B,D,S OR P","SHIPS MAY BE VERT." 1620 DATA "OR HORZ.","HITS"," ","MISSES"," ","SHOTS" 1630 DATA 260,264,268,272,276,280,284,288,292,296 1640 DATA 420,424,428,432,436,440,444,448,452,456 1650 DATA 580,584,588,592,596,600,604,608,612,616 1660 DATA 740,744,748,752,756,760,764,768,772,776 1670 DATA 900,904,908,912,916,920,924,928,932,936 1680 DATA 1060,1064,1068,1072,1076,1080,1084,1088,1092,1096 1690 DATA 1220,1224,1228,1232,1236,1240,1244,1248,1252,1256 1700 DATA 1380,1384,1388,1392,1396,1400,1404,1408,1412,1416 1710 DATA 1540,1544,1548,1552,1556,1560,1564,1568,1572,1576 1720 DATA 1700,1704,1708,1712,1716,1720,1724,1728,1732,1736 1730 DATA "FLEET COMMANDER","ADMIRAL","CAPTAIN","ENSIGN","SWAB" 1740 DATA "C","C","C","C","C","B","B","B","B","D","D","D","S","S","P" 1750 END MMANDER",return to main menu. ";VR$; 1580 X$=INPUT$(1):GOTO 10 1590 DATA "CARRIER = CCCCC","BATTLESHIP = BBBB","DESTROYER = DDD" 1600 DATA "SUBMARINE = SS","PT BOAT = P"," ","NO. OF SHOTS = 100" 1610 DATA "MISS = *","HIT = C,B,D,S OR P","SHIPS MAY BE VERT." 1620 DATA "OR HORZ.","HITS"," ","MISSES"," ","SHOTS" 1630 DATA 260,264,268,272,276,280,284,288,292,296 1640 DATA 420,424,428,432,436,440,444,448,452,456 1650 DATA 580,584,588,592,596,600,604,608,612,616 1660 DATA 740,744,748,752,756,760,764,768,772,776 10 CLEAR ,,1000:CL$=CHR$(26):PRINT CL$:Q$=CHR$(27)+"=" 15 PRINT"IFR JET FLIGHT SIMULATOR" 20 PRINT:PRINT"PRESS ANY KEY TO CONTINUE" 25 REM *CREATED BY GENE SZYMANSKI. PUBLISHED IN BYTE, NOV.82 30 REM *OSBORNE VERSION BY R.A. FELDMAN, CHICAGO'S FIRST OSBORNE GROUP, JAN.83 35 REM *TAKE-OFF MODULE 40 DIM F(9) 45 A$=INKEY$:SS=SS+1:IF A$="" THEN 45 50 RANDOMIZE SS 55 GOTO 80 60 REM *MOVE TO FLIGHT MODULE AFTER TAKEOFF 65 PRINT CL$;"LOADING THE FLIGHT AND LANDING MODULE" 70 CHAIN "B:JETSIMB" 75 REM *TAKEOFF MODULE STARTS HERE 80 PRINT CL$:KR=57.2958 85 DIM XM(13),WM(13) 90 DIM P$(31),M$(20) 95 DATA 37,35,32,30,27,25,22,20,17,15,12,10,7,5 100 DATA 6,11,16,21,26,31,36,41,46,51,56,61,66,71 105 FOR I=0 TO 13:READ XM(I):NEXT 110 FOR I=0 TO 13:READ WM(I):NEXT 115 M$=CHR$(152) 120 DIM XE(13),WE(13) 125 K1=29:K2=23 130 FOR I=0 TO 13:XE(I)=K1:WE(I)=K2:K1=K1-2:K2=K2+4:NEXT 135 IO=40:RN=RND(0):RS=1:IF RN<.5 THEN RS=-1 140 W1=75:IF RS=-1 THEN W1=255 145 W2=INT(20*RND(0)+1):W3=RS*W2 150 DIM XL(14),XR(14) 155 J=31:K=49 160 FOR I=0 TO 14:XL(I)=J:XR(I)=K:J=J-2:K=K+2:NEXT 165 DATA FUEL,LBS,%,VHF,MHZ,THRUST,MAX,IDLE,REV 170 DATA PITCH," +"," -",DEG,FLAPS,UP,DWN,WHEELS,UP,MID,DOWN 175 DATA COMPASS,AIRSPEED,KTS," VERT",SPEED,FPM 180 DATA ALTITUDE,FEET,CLOCK,BRAKE,SET,REL 185 FOR I=0 TO 31:READ P$(I):NEXT 190 DIM S$(25) 195 FOR I=1 TO 25:S$(I)=SPACE$(I):NEXT 200 FOR I=0 TO 9:F(I)=0:NEXT 205 REM *INIT VARIABLES FOR TAKEOFF 210 FU=200000!:FP=0:CC=75:PDQ=0:RC=0:AL=0:TD=28740 215 MZ=77:TR=6:FL=2:FA=0:WH=13:IX=40:HY=8:BR=11:BK=11:AB=0 220 PRINT Q$;CHR$(40);CHR$(40);"UNITED 312 CLEARED AS FILED" 225 PRINT:PRINT:PRINT"SURFACE WINDS VARIABLE, GUSTING TO 15." 230 PRINT"MINIMUM CEILING CONDITIONS ARE IN EFFECT." 235 PRINT"SKY CONDITIONS AT 20,000 ARE SCATTERED." 240 PRINT" AT 30,000 ARE BROKEN.":PRINT:PRINT 245 PRINT"UPON TAKEOFF, MAINTAIN HEADING OF 075 TO 3,000 THEN PROCEED AS FILED." 250 PRINT:PRINT:PRINT"STANDBY FOR TAKEOFF CLEARANCE." 255 TQ=7000:GOSUB 1315:PRINT CL$ 260 PRINT Q$;CHR$(42);CHR$(49);"UNITED 312":PRINT:PRINT 265 PRINT"YOU ARE CLEARED FOR TAKEOFF AT 0800 HOURS" 270 TQ=3000:GOSUB 1315:PRINT CL$:GOSUB 1325:TL=TD 275 GOSUB 305:GOSUB 390 280 GOSUB 445 285 GOSUB 570:K$=INKEY$:IF LEN(K$)=0 GOTO 295 290 GOSUB 735 295 GOTO 950 300 REM *DISPLAY PANEL HEADERS 305 PRINT Q$;CHR$(32);CHR$(35);P$(0);S$(4);P$(5);S$(3);P$(9);S$(12);P$(20) 310 PRINT Q$;CHR$(42);CHR$(91);P$(13);S$(3);P$(16);S$(2);P$(29) 315 PRINT Q$;CHR$(43);CHR$(93);P$(14);S$(6);P$(14);S$(6);P$(30) 320 PRINT Q$;CHR$(45);CHR$(93);P$(15);S$(5);P$(15);S$(5);P$(31) 325 IF F(9)=1 THEN RETURN 330 PRINT Q$;CHR$(33);CHR$(45);P$(6);S$(6);P$(10);S$(6) 335 PRINT Q$;CHR$(33);CHR$(100);P$(28) 340 PRINT Q$;CHR$(34);CHR$(33);P$(1);S$(4);P$(2);S$(21);S$(3);S$(13);P$(23) 345 PRINT Q$;CHR$(35);CHR$(54);P$(11);S$(13);P$(21);S$(2);P$(24);S$(2);P$(26) 350 PRINT Q$;CHR$(36);CHR$(32);P$(3) 355 PRINT Q$;CHR$(37);CHR$(71);P$(22);S$(6);P$(25);S$(5);P$(27) 360 PRINT Q$;CHR$(38);CHR$(32);P$(4);S$(10);P$(7);S$(3);P$(12);S$(7) 365 PRINT Q$;CHR$(39);CHR$(45);P$(8) 370 FOR Y=1 TO 7:PRINT Q$;CHR$(Y+32);CHR$(44);CHR$(95):NEXT Y 375 FOR Y=1 TO 3:PRINT Q$;CHR$(Y+32);CHR$(53);CHR$(95):NEXT Y 380 RETURN 385 REM *DISPLAY HORIZONTAL LINE 390 IF F(9)=0 GOTO 405 395 PRINT Q$;CHR$(41);CHR$(32);SPACE$(80); 400 IF HY=20 GOTO 415 405 PRINT Q$;CHR$(HY+32);CHR$(32);STRING$(80,152) 410 RETURN 415 OH=9:HY=9:PRINT Q$;CHR$(40);CHR$(32);SPACE$(80) 420 FOR I=HY TO 21 425 PRINT Q$;CHR$(OH+32);CHR$(32);SPACE$(80) 430 PRINT Q$;CHR$(I+32);CHR$(32);STRING$(80,152) 435 OH=I:NEXT:RETURN 440 REM *DISPLAY RUNWAY 445 IF F(4)=1 GOTO 485 450 S=10:X=29 455 FOR Y=10 TO 21 460 PRINT Q$;CHR$(Y+32);CHR$(X+32);"*";SPACE$(S);" ";SPACE$(S);"*" 465 X=X-2:S=S+2 470 NEXT Y 475 S$=S$(13):RETURN 480 *PRINT RUNWAY GRAPHICS 485 IF N>3 GOTO 550 490 PRINT Q$;CHR$(OY+32);CHR$(OX+32);SPACE$(WM) 495 PRINT Q$;CHR$(NY+32);CHR$(NX+32);MK$ 500 OY=NY:OX=NX:WM=FW 505 RETURN 510 *ENTRY WHEN SHIP IN FINAL ZONE 515 PRINT Q$;CHR$(OY+32);CHR$(OX+32);SPACE$(WM):IF F(9)=1 THEN RETURN 520 FOR I=10 TO NY-1 525 PRINT Q$;CHR$(I+32);CHR$(XE(J)+32);SPACE$(WE(J)) 530 NEXT 535 IF N>4 THEN RETURN 540 PRINT Q$;CHR$(NY+32);CHR$(NX+32);MK$ 545 RETURN 550 IF F(2)=1 GOTO 515 ELSE F(2)=1 555 FOR I=10 TO 13:PRINT Q$;CHR$(I+32);CHR$(91);SPACE$(21):NEXT 560 GOTO 515 565 REM *DISPLAY INSTRMT READINGS 570 YP=1:XP=0:F$="######":V1=FU:GOSUB 1360 575 YP=1:XP=7:F$="###":V1=FP:GOSUB 1360 580 YP=1:XP=39:V1=CC:GOSUB 1360 585 YP=4:XP=39:V1=PDQ:GOSUB 1360 590 YP=4:XP=46:F$="######":V1=RC:GOSUB 1360 595 YP=4:XP=55:F$="##,###":V1=AL:GOSUB 1360 600 YP=5:XP=0:F$="###":V1=MZ:GOSUB 1360 605 REM *DISPLAY THRUST 610 FOR I=1 TO 7 615 PRINT Q$;CHR$(I+32);CHR$(43);CHR$(127) 620 NEXT 625 PRINT Q$;CHR$(TR+32);CHR$(43);">"; 630 REM *DISPLAY PITCH 635 FOR I=1 TO 3:PRINT Q$;CHR$(I+32);CHR$(52);CHR$(127):NEXT 640 PRINT Q$;CHR$(FL+32);CHR$(52);">" 645 F$="+###" 650 YP=5:XP=20:V1=FA:GOSUB 1360 655 REM *DISPLAY FLAPS 660 IF F(2)=1 GOTO 710 665 FOR I=11 TO 13:PRINT Q$;CHR$(I+32);CHR$(91);CHR$(127):NEXT 670 PRINT Q$;CHR$(BR+32);CHR$(91);">" 675 REM *DISPLAY WHEELS 680 FOR I=11 TO 13:PRINT Q$;CHR$(I+32);CHR$(99);CHR$(127):NEXT 685 PRINT Q$;CHR$(WH+32);CHR$(99);">" 690 REM *DISPLAY BRAKES 695 FOR I=11 TO 13:PRINT Q$;CHR$(I+32);CHR$(107);CHR$(127):NEXT 700 PRINT Q$;CHR$(BK+32);CHR$(107);">" 705 REM *DISPLAY RUNWAY ALIGNMENT INDEX 710 IF F(9)=1 THEN RETURN 715 PRINT Q$;CHR$(55);CHR$(IO+32);" "; 720 PRINT Q$;CHR$(55);CHR$(IX+32);CHR$(141); 725 IO=IX:RETURN 730 REM *KEY POLL SUBROUTINE 735 IF K$="F" THEN KK=1:GOTO 770 740 IF K$="," OR K$="." THEN KK=2:GOTO 770 745 IF K$="B" THEN KK=3:GOTO 770 750 IF ASC(K$)=10 OR ASC(K$)=11 THEN KK=4:GOTO 770 755 IF K$="L" THEN KK=5:GOTO 770 760 IF K$="W" THEN KK=6:GOTO 770 765 IF K$="S" THEN KK=7:GOTO 770 770 ON KK GOSUB 800,820,845,860,910,935,785 775 RETURN 780 REM *THRUST KEY (DECREASE) 785 IF F(7)=1 AND BR=11 THEN TR=4 790 RETURN 795 REM *THRUST KEY (INCREASE) 800 IF F(7)=1 THEN RETURN 805 IF F(0)=0 THEN RETURN 810 F(1)=1:TR=1:RETURN 815 REM *RUDDER KEYS 820 IF F(7)=1 THEN RETURN 825 IF PDQ<=50 THEN RETURN 830 IF K$="," THEN CC=CC-1 ELSE CC=CC+1 835 RETURN 840 REM *BRAKES 845 IF F(0)=1 THEN RETURN 850 F(0)=1:BK=13:RETURN 855 REM *PITCH 860 IF F(7)=1 THEN RETURN 865 IF PDQ<=50 THEN RETURN 870 FD=-10:IF K$=CHR$(10) THEN FD=10 875 FA=FA+FD 880 IF FA>60 THEN FA=60 885 IF FA<-60 THEN FA=-60 890 IF FA>0 THEN FL=1:RETURN 895 IF FA=0 THEN FL=2:RETURN 900 FL=3:RETURN 905 REM *FLAPS 910 IF F(7)=1 AND WH=11 THEN BR=11:RETURN 915 IF F(3)=1 THEN RETURN 920 IF F(3)=0 THEN F(3)=1:BR=13:RETURN 925 RETURN 930 REM *WHEELS 935 IF F(7)=1 THEN WH=11 940 RETURN 945 REM *SITUATION UPDATE ROUTINE 950 GOSUB 1325:TJ=TD-TL:TL=TD 955 IF F(9)=1 GOTO 1380 960 IF F(0)=1 GOTO 970 965 GOSUB 1065:GOTO 285 970 IF F(4)=1 GOTO 980 975 F(4)=1:XX=0:YY=0:TX=TD:V0=0:N=1:OY=22:OX=5:WM=71 980 A=(118-18*TR)*.04028 985 GOSUB 1105 990 IF AL>0 GOTO 1025 995 IF YY>10500 OR ABS(XX)>100 GOTO 1195 1000 IF FA<=0 GOTO 1040 1005 IF PDQ<150 GOTO 1190 1010 IF FA>10 GOTO 1190 1015 IF F(3)=0 GOTO 1040 1020 AL=25:GOSUB 1065:GOSUB 1075:GOSUB 1155:GOTO 280 1025 F(9)=1:GOSUB 1065:GOSUB 1075:GOSUB 1090 1030 FOR I=10 TO 21:PRINT Q$;CHR$(I+32);CHR$(32);SPACE$(80):NEXT 1035 HY=20:GOSUB 390:GOTO 1055 1040 GOSUB 1065:GOSUB 1155 1045 GOTO 280 1050 REM *NOW DO DEPARTURE PROCEDURES 1055 GOTO 285 1060 REM *UPDATE FUEL 1065 FU=FU-40*TJ:FP=FU/3120:RETURN 1070 REM *UPDATE RATE OF CLIMB 1075 RC=PDQ*SIN(ABS(FA/57.3))*1.693*60:IF FA<0 THEN RC=-1*RC 1080 RETURN 1085 REM *UPDATE ALTITUDE 1090 AL=AL+TJ*RC/60:IF AL<=0 THEN AL=0 1095 RETURN 1100 REM *EQUATIONS OF MOTION 1105 T=TJ:V=V0+A*T:VB=(V+V0)/2:V0=V:S=VB*T:IF TD<(TX+18) GOTO 1115 1110 TX=TD:WB=RS*RND(2):CC=CC+WB 1115 DA=(CC-75)/57.3:DY=S*COS(ABS(DA)):DX=S*SIN(ABS(DA)) 1120 IF DA<0 THEN DX=-1*DX 1125 YY=YY+DY:XX=XX+DX:PDQ=V/1.69278:IF PDQ>20 THEN PDQ=PDQ+WS 1130 IX=40+FIX(XX*7/20):IF IX>79 THEN IX=79 1135 IF IX<0 THEN IX=0 1140 ZP=FIX(YY-2500*(N-1)):IF ZP>2500 THEN N=N+1:GOTO 1140 1145 RETURN 1150 REM *VARIABLES FOR RUNWAY GRAPHICS 1155 MP=FIX(10+(13*ZP)/2500):IF N>3 THEN GOTO 1180 1160 NY=MP:J=NY-10:NX=XM(J):FW=WM(J):S$=SPACE$(J) 1165 MK$=M$+S$(J)+M$+S$(J)+M$+S$(J)+M$+S$(J)+M$+S$(J)+M$ 1170 RETURN 1175 REM *IN ZONE 4 MARKER IS RUNWAY EDGE 1180 NY=MP:J=NY-10:NX=XE(J):IF N>4 THEN RETURN 1185 MK$=STRING$(WE(J),152):RETURN 1190 AB=1:GOTO 1215 1195 AB=2:IF YY<10500 GOTO 1215 1200 FOR I=10 TO 21:PRINT Q$;CHR$(I+32);CHR$(32);SPACE$(80):NEXT 1205 GOTO 1215 1210 REM *ABORT TAKEOFF 1215 FOR I=10 TO 22:PRINT Q$;CHR$(I+32);CHR$(32);SPACE$(80):NEXT 1220 PRINT Q$;CHR$(42);CHR$(61);"TAKEOFF FAILED":PRINT:PRINT 1225 ON AB GOSUB 1240,1260 1230 PRINT Q$;CHR$(51);CHR$(66);"END OF PROGRAM" 1235 END 1240 PRINT"YOU PULLED BACK ON THE STICK AT TOO SLOW A SPEED, OR YOU" 1245 PRINT"PULLED BACK THE STICK TOO FAR WHEN AT PROPER SPEED." 1250 PRINT"AS A RESULT THE TAIL END OF THE FUSELAGE SCRAPED THE RUNWAY" 1255 PRINT"AND THE AIRCRAFT SPUN OUT OF CONTROL.":RETURN 1260 IF YY>10500 GOTO 1280 1265 PRINT"YOU FAILED TO STAY WITHIN THE RUNWAY BOUNDRIES." 1270 PRINT"AS A RESULT YOU VEERED OFF THE RUNWAY AND COLLIDED WITH" 1275 PRINT"THE RUNWAY LIGHTS.":RETURN 1280 PRINT"YOU RAN OUT OF RUNWAY. AS A RESULT YOU ROLLED INTO THE" 1285 PRINT"MARSHLANDS LOCATED";FIX(YY)-10500;"FEET PAST THE END OF THE RUNWAY." 1290 IF F(3)=1 THEN RETURN 1295 PRINT:PRINT:PRINT"YOU FORGOT TO LOWER THE FLAPS." 1300 PRINT"AS A RESULT THE AIRCRAFT COULD NOT DEVELOP SUFFICIENT LIFT." 1305 RETURN 1310 REM *TIME DELAY PAD 1315 FOR I=1 TO TQ:NEXT:RETURN 1320 REM *CLOCK UPDATE 1325 HRS=FIX(TD/3600):MIN=FIX((TD-3600*HRS)/60):SEC=TD-(3600*HRS+60*MIN) 1330 TD=TD+1 1335 YP=0:XP=66:F$="##.":V1=HRS:GOSUB 1360 1340 YP=0:XP=69:F$="##.":V1=MIN:GOSUB 1360 1345 YP=0:XP=72:F$="##":V1=SEC:GOSUB 1360 1350 RETURN 1355 REM *PLOT VARIABLE 1360 PRINT Q$;CHR$(YP+32);CHR$(XP+32); 1365 PRINT USING F$;V1 1370 RETURN 1375 REM *DEPARTURE ROUTINE 1380 IF F(7)=1 GOTO 1390 ELSE F(7)=1 1385 GOSUB 310:F(2)=0 1390 IF WH<>11 GOTO 1405 ELSE PDQ=PDQ+5 1395 IF BR<>11 GOTO 1405 ELSE PDQ=PDQ+5 1400 IF TR=4 AND AL>1800 GOTO 65 ELSE GOTO 1440 1405 IF AL<1200 GOTO 1440 1410 PRINT Q$;CHR$(44);CHR$(32);"FLIGHT ABORTED":PRINT:PRINT 1415 PRINT"YOU FAILED TO PERFORM CRUCIAL TRIM MANEUVERS FOLLOWING LIFTOFF." 1420 PRINT"THE PROPER TRIM SEQUENCE, WHICH MUST BE COMPLETED BELOW 1200 FEET, IS" 1425 PRINT"1- RAISE LANDING GEAR":PRINT"2- RETRACT FLAPS" 1430 PRINT"3- REDUCE THRUST":PRINT:PRINT"END OF PROGRAM" 1435 END 1440 GOSUB 1065:GOSUB 1075:GOSUB 1090:GOTO 285 1445 REM *END OF LISTING CE THRUST":PRINT:PRINT"ND OF PROGRAM" 1435 END 1440 GOSUB 1065:GOSUB 1075:GOSUB 1090:GOTO 285 144u REM *END OF LISTI1=HRS:GOSUB 1360 1340 YP=0:XP=69:F$="##.":V1=MIN:GOSUB 1360 1345 YP=0:XP=72:F$="##":V1=SEC:GOSUB 1360 1350 RETURN 1355 REM *PLOT VARIABLE 1360 PRINT Q$;CHR$(YP+32);CHR$(XP+32); 1365 PRINT USING F$;V1 1370 RETURN 1375 REM *DEPARTURE ROUTINE 1 JETSIM.DOC OSBORNE-01 & OSBORNE EXECUTIVE-1 COMPUTERS MBASIC PROGRAM INSTRUCTIONS 1. OVERVIEW:  Th JETSIM.BA AN JETSIMB.BA program simulate th Take-off Flight and Landin o Boein 74 Airplane flyin IFR JETSIM.BAS/JETSIMB.BA i CP/ version Writte i MBASI b Rober A Feldma (CFOG) o JETSET.BAS writte b Eugen Szymansk an publishe i BYT magazine Novembe 1982. Yo shoul consul th origina articl fo additiona dat an instruction (especiall drawing illustratin th IL system) 2. FILES: "TAKE-OFF", "FLIGHT" & "LANDING:  a) JETSIM.BA i th Take-of modul b) JETSIMB.BA i th Fligh an Landin module Runnin JETSIM.BA wil automaticall loa an ru JETSIMB.BA (whic mus b i driv B o seperat dis t Autoloa) i th "Take-off" wa successful However i i no necessar t star wit JETSIM.BAS as al variable ar reinitialize t se values Thus afte yo ca sucessful tak off yo ca ski th tak of proceedures whic ar fairl simpl an routine an ge o t th mor dificul an interesting parts  3. SETTING-UP, LOADING AND RUNNING:  a Cop th fil JETSIMB.BA t 2nd disk t b use i Driv B. b) Place your MBASIC Disk in Drive A. c) Load MBASIC by typing MBASIC d) Afte i loads yo wil hav a "OK Prompt Remov th MBASI Disk from Drive A. e) Plac th Dis wit JETSIM.BA i Driv an th Dis wit JETSIMB.BAS in Drive B. f Se th ALPHA-LOC ke "On"an leav i "On" (MBASIC Requires all entries to in CAPS) g) Start the Flight by typing RUN "JETSIM.BAS" NOTE: Use the " " MARKS AS SHOWN. h) Th scree displa i designe fo 8 columns bu i i possibl t us 5 characte scree (whic make landin bi mor difficult, while scrolling the screen). FILE...: JETSIM.DOC (cont'd)  4. TAKE-OFF OVERVIEW:  Th take-of i fro Philadelphia an landin ca b mad a JFK Boston Buffalo Philadelphia Philipsburg PA an Saul Ste Mari M (?!) Ther ar 1 VO navigatio station (th V an V array i th listing bu onl landin site (th V array o possibl 1 ar include a present Additiona landin parameter ca b adde fo th remainin 1 site b fillin i th V array VG(X,0 i th initia approac radia an VG(X,1 th runwa localize direction Fo JFK thes value ar 23 (th reciproca o th 5 degre VO setting an 2 (th localize directio o landin heading). -------------------------------------------------------------------- KEY FUNCTIONS F Increase thrust* / Rudder cancel S Decrease thrust* L Flaps Q Reverse thrust W Wheels UP arrow Pitch down* B Brakes DOWN arro Pitc up Misse approach RIGHT arrow Pitch cancel V VOR frequency tune < Rudder left* (NOT ARROW KEY) R VOR radial select > Rudder right*(NOT ARROW KEY) A VOR auto select  NOTE: * means the key press can be repeated. --------------------------------------------------------------------  5. TAKE-OFF PROCEDURES:  se sequenc o ke response i require fo successfu tak off Th sequenc is: (Lower Flaps) (Brakes Release) (Ful Throttle) Afte th Brake ar Released (usin B th ai spee wil slowl increase a resul o th engine' idl thrust. Afte Ful Throttl i applied (usin F),th ai spee wil increas an runwa marking wil mov down-screen. Durin take-off wind ca blo th je of course s rudde corrections usin th o key wil b neede t kee th airplan positio marke (th do a th botto o th screen centered.  NOTE: THESE < > KEYS ARE NOT THE ARROW KEYS!  FILE...: JETSIM.DOC (cont'd)  Whe you Ground-spee reache 15 kts pres th DOW Arrow-ke onc t lift-of th runway Thi wil tak plac nea th en o th runway. NOTE Critica Proceedure: Afte lift-off bu befor 120 fee altitude yo must get the: Wheel Raised Ke (t go th wheel ou o th airstrea an reduc drag Flap Raised Ke (t chang flap fro Dow o Tak Of (ma lift) to Up position, less drag for speed) Slo Throttle Ke (t cu th throttl becaus o nois abate- men law when flying ove Cities) A 190 feet th scree wil clea an yo wil b aske i yo wan t spee u th simulatio whe th je i abov 500 feet Afte answering th ful instrumen pane wil b displayed.  6. CROSS-COUNTRY FLYING:   Yo wil b flyin unde IF (Instrumen Fligh Rules) usin you compas an VO indicator a TUNIN TH VO RADI STATIONS Firs pres t tun i VO statio (115. fo JFK) the R t se VO radia (th reciproca o headin ou fro th VO station 5 fo JFK) Nort i 0 eas 90 etc Th maximu VO distanc i 30 nm.(NAUTICA MILES Whic i 1. Miles) Onc thi i done th RANG wil sa T an DM (Distanc Measurin Equipment wil chang t sho th distanc t th VO station. Th marke o th VO RADIA dia wil deflect showin whic directio th rudde need t b shifte towards Maintai you 7 degre take-of headin unti 300 feet the (fo JFK swin nort t abou 24 Th wil mov towar th cente a yo ar gettin close t th radial Whe i i centered swin th rudde t brin th compas t agre wit th VO radial Th fligh shoul b uneventful excep tha wind wil begi blowin th je of course s rudde adjustment wil b needed. I yo ar unsur wher yo ar i relatio t th VO station pres A an th RADIA wil automaticall "rotate t th radia yo ar on. Durin th flight th rudde keys an > chang th headin b degre fo th firs press 1 degree fo th second 2 fo th third etc Pressin wil sna th rudde bac t center. Th pitc control (DOW an U arrows chang th pitc b degree fo eac press Th RIGH arro bring th pitc t (leve flight). T fl lon distances yo g fro on VO statio t another Se th firs VO frequenc an radia (ideall thos specifie b th FA a je routes bu thes wer no liste i th article) Fl toward i unti DM near 15-2 nm The tun i th nex VO an ente th ne radial Whe th radia needl centers stee t th ne heading. FILE...: JETSIM.DOC (cont'd) I yo fl o th radia toward th VO station DM wil reac n whe yo ar directl ove th "transmitter. A thi point th DM wil begi t increas an th RANG wil chang fro T t FROM. Th RANG indicato wil displa OU i n statio i tune in a incorrec frequenc ha bee tuned o yo ar mor tha 30 n fro th transmitter. 7 LANDING:  Begi landin procedure as follows: a) A 3 n fro destination star descent t abou 180 feet b) A 2 nm slo t 30 kts (S Key) which reduces the Throttles, lowe th wheels(W Key) lowe th flaps, (L Key) Thse wil dro th ai spee t 12 kts c A 1 nm th MARKE ligh shoul g on Thi mean tha th je ha com t th IL Oute Marker Yo mus quickl stee t th runwa localize directio (2 fo JFK) Thi mus b don withi abou 1 o 2 seconds o yo wil fl ou o th "IL cone. I th tur i successful th RADA AL  wil displa readin an th IL displa wil begi t change A thi poin pitc dow degree ( presse o U arrow whic onl change degre fo eac pres durin landing). d A thi point fl usin th IL needle (line o +'s) Th vertica needl give th horizonta positio o th je i th IL cone You positio i th O s i th needl move lef o center yo ar righ o th prope cours an mus us th t tur left However unlik durin flying eac pres o o move th headin onl on degree s t swin fro 2 t 20 yo nee t pres times coordinatin wit th scree refres (an loop throug th ke pol subroutine). Th horizonta IL needl show you positio i relatio t th correc descen glid slope I th i abov th line yo ar no descendin fas enough. A 60 feet landin runwa displa wil appea i th lowe righ corne o th screen I show you relation side-to-side t th runway Stee usin thi display no th ILS Thing wil happe fas no (landin i th mos difficul par o rea flight). Whe th RADA AL read 20 feet yo pas ove th Middl Marker an th MARKE lam wil com o again Thi i th go/no-g point I yo ar no line u fo saf landing pres M th Misse Approac key. FILE...: JETSIM.DOC (cont'd) Doin thi end th progra ru wit "Yo don right message recommen no pressin M an seein wher yo crash i yo ar unabl t stee ont th runwa i time. A 10 feet cu th throttl b pressin S. A 5 feet pres th RIGH arrow whic shift th pitc t + degree. Th resul i tha th je stall (th STAL ligh come on) an settle t th runwa (i everythin ha bee don properly). Whe RADA AL indicate 0 pres Q reversin th thrust an wai whil th ai spee drop t 0 A thi point th displa wil clea an you landin stat wil b displayed. I yo crash o lan improperly th appropriat messag wil b displayed. Rober A Feldman Februar 5 1983 Rev.001: 1 Tec Writin Proceedure applie t tex o _JETSIM.DO Fil t ai i findin data. 2 Configuration/Revisio Bloc wa adde t ai i trackin revisions purpose an wh mad th revision Kenni L Smith SINGER-LIN Simulatio Sys Div. Augus 20 1984 FILE...: JETSIM.DOC (cont'd) ------------------------------------------------------------------ KEY FUNCTIONS ------------------------------------------------------------------ F Increase thrust* / Rudder cancel S  Decrease thrust* L Flaps Q Reverse thrust W Wheels UP arrow Pitch down* B Brakes DOWN arro Pitc up Misse approach RIGHT arrow Pitch cancel V VOR frequency tune < Rudder left* (NOT ARROW KEY) R VOR radial select > Rudder right*(NOT ARROW KEY) A VOR auto select NOTE: * means the key press can be repeated. ------------------------------------------------------------------ VOR STATIONS ------------------------------------------------------------------- SITE FREQ LAT(N) LONG(W) ------ ------- -------- --------- 0. JFK Airport, NY 115.9 40:38 73:46 1. Newark, NJ (?) 113.8 40:12 74:27 2. Boston, MA 112.7 42:22 70:59 3. Martha's Vinyard, MA (?) 117.7 41:17 70:02 4. Albany, NY (?) 117.8 42:45 73:48 5. Sault Ste. Marie, MI (?) 112.2 46:25 84:19 6. Huntington, WV (?) 117.4 38:21 81:46 7. Philipsburgh. PA 115.5 40:55 77:59 8. Buffalo, NY 116.4 42:55 78:39 9. Cleveland, OH 113.6 41:22 82:10 10. Flint, MI 116.9 42:58 83:44 11. Green Bay, WI 117.0 44:33 88:12 12. Joliet, IL 112.3 41:33 88:19 13. Baltimore, MD (?) 117.9 39:30 76:59 14. Detroit, MI (?) 115.7 42:03 83:27 15. Philadelphia, PA 112.8 39:38 75:18 ------------------------------------------------------------------- ILS HEADINGS ------------------------------------------------------------------- SITE IAR VOR  RUNWAY ------ ----- ----- -------- 0. JFK Airport, NY 238 58 28 2. Boston, MA 240 60 30 5. S.Ste. Marie, MI 90 270 217 7. Philipsburgh, PA 299 119 164 8. Buffalo, NY 116 346 42 15. Philadelphia, PA 341 161 75 IAR = Initial Approach Radial VOR = VOR setting for the IAR ------------------------------------------------------------------- ------------ MD (?) 117.9 39:30 76:59 14. Detroit, MI (?) 115.7 42:03 83:27 15. Philadelphia, PA 112.8 39:38 75:18 ------------------------------------------------------------------- ILS HEADINGS ------------------------------------------------------------------- SITE IAR VOR10 REM IFR JET FLIGHT SIMULATOR 15 REM FLIGHT AND LANDING MODULE 20 REM CREATED BY GENE SZYMANSKI; PUBLISHED IN BYTE, NOV. 82 25 REM OSBORNE VERSION BY ROBERT A. FELDMAN, JANUARY, 1983 30 REM CHICAGO'S FIRST OSBORNE GROUP 35 CLEAR ,,5000:CL$=CHR$(26):PRINT CL$ 40 PRINT "IFR JET FLIGHT SIMULATOR" 45 PRINT "FLIGHT AND LANDING MODULE" 50 PRINT:PRINT 55 DIM RS$(3), F(9), PDQ(2), FA(2), CC(2), AL(2), DP(7), LL(1), GL(1) 60 DIM LS(1), GS(1), VO(5), VO$(1), GX(1), GY(1), TW(1), BL(5), LB(6) 65 DIM KM(3), TM(3), N$(3), CP(7) 70 PRINT"SPEED UP TIME (5X) WHEN ABOVE 5000 FT (Y/N)?" 75 B$=INKEY$:SS=SS+1:IF B$="" THEN 75 80 RANDOMIZE SS:PRINT CL$ 85 REM *BEGIN CRUISE MODULE 90 KR=57.2958:XQ=64:Q$=CHR$(27)+"=":RS=1:IF RND(0)<.5 THEN RS=-1 95 RW=(15-5)*RND(0)+5:RW=RS*RW:TD=28905 100 REM *SET UP WIND TABLE 105 DIM M$(20), WA(10,1) 110 FOR I=0 TO 7:WA(I,0)=INT(359*RND(0)+1):NEXT 115 FOR I=8 TO 10:WA(I,0)=90*RND(0)+225:NEXT 120 A=0 125 FOR I=1 TO 10:WA(I,1)=25*RND(0)+A:A=A+25:NEXT 130 REM *LANDING RUNWAY VARIABLES 135 RS$(0)=STRING$(31,152):RS$(1)=SPACE$(13)+"* *"+SPACE$(13) 140 RS$(2)=SPACE$(11)+"* *":RS$(3)=SPACE$(9)+STRING$(13,152) 145 REM *VOR STATION FREQUENCY TABLE 150 DIM VF(15) 155 VF(0)=115.9:VF(1)=113.8:VF(2)=112.7:VF(3)=117.7:VF(4)=117.8 160 VF(5)=112.2:VF(6)=117.4:VF(7)=115.5:VF(8)=116.4:VF(9)=113.6 165 VF(10)=116.9:VF(11)=117!:VF(12)=112.3:VF(13)=117.9 170 VF(14)=115.7:VF(15)=112.8 175 REM *ILS CONSTANTS FOR AIRPORTS 180 DIM VG(15,1) 185 VG(0,0)=238:VG(0,1)=28:VG(2,0)=240:VG(2,1)=30:VG(5,0)=90:VG(5,1)=217 190 VG(7,0)=299:VG(7,1)=164:VG(8,0)=166:VG(8,1)=42:VG(15,0)=341:VG(15,1)=75 195 REM *VOR STATION COORDINATES 200 DIM VP(15,1) 205 VP(0,0)=40.633:VP(0,1)=73.773:VP(1,0)=40.202:VP(1,1)=74.495 210 VP(2,0)=42.358:VP(2,1)=70.993:VP(3,0)=41.282:VP(3,1)=70.027 215 VP(4,0)=42.743:VP(4,1)=73.802:VP(5,0)=46.412:VP(5,1)=84.315 220 VP(6,0)=38.35:VP(6,1)=81.77:VP(7,0)=40.917:VP(7,1)=77.993 225 VP(8,0)=42.928:VP(8,1)=78.647:VP(9,0)=41.358:VP(9,1)=82.162 230 VP(10,0)=42.967:VP(10,1)=83.742:VP(11,0)=44.555:VP(11,1)=88.195 235 VP(12,0)=41.547:VP(12,1)=88.318:VP(13,0)=39.495:VP(13,1)=76.978 240 VP(14,0)=42.048:VP(14,1)=83.458:VP(15,0)=39.637:VP(15,1)=75.303 245 REM *PANEL HEADERS 250 DATA FUEL,LBS,%,VHF,MHZ,THRUST,MAX,IDLE,REV 255 DATA PITCH," +"," -",DEG,FLAPS,UP,DWN,WHEELS,UP,MID,DOWN 260 DATA COMPASS,AIRSPEED,KTS," VERT",SPEED,FPM 265 DATA ALTITUDE,FEET,CLOCK 270 DIM P$(28):FOR I=0 TO 28:READ P$(I):NEXT 275 DIM S$(25):FOR I=1 TO 25:S$(I)=SPACE$(I):NEXT 280 FOR I=0 TO 9:F(I)=0:NEXT 285 REM *INITIALIZE VARIABLES AFTER TAKEOFF 290 FU=195480!:FP=63:CC=75:PDQ=380:RC=6704:AL=1900 295 MZ=77:TR=4:FL=1:FA=10:BR=10:WH=10 300 RA=0:PDQ(1)=380:FA(1)=10:CC(1)=75:AL(1)=1900:RP=40 305 DP(4)=39:DP(5)=52:DP(6)=75:DP(7)=15 310 L1=39.8667:G1=75.25:LL(1)=L1:GL(1)=G1:LS(1)=L1:GS(1)=G1 315 VO(1)=0!:VO$(1)="OUT ":VO(3)=0:VO(4)=999.9 320 GX(0)=0:GY(0)=0:XO=36481!:YO=0 325 GOSUB 2870:TL=TD:TW(1)=TD:GOSUB 355 330 GOSUB 580 335 K$=INKEY$:IF LEN(K$)=0 GOTO 345 340 GOSUB 825 345 GOSUB 1120 350 REM *DISPLAY RANEL HEADERS 355 PRINT Q$;CHR$(32);CHR$(35);P$(0);S$(4);P$(5);S$(3);P$(9);S$(12);P$(20) 360 PRINT Q$;CHR$(41);CHR$(86);P$(13);S$(3);P$(16) 365 PRINT Q$;CHR$(42);CHR$(88);P$(14);S$(6);P$(14) 370 PRINT Q$;CHR$(44);CHR$(88);P$(15);S$(5);P$(15) 375 PRINT Q$;CHR$(33);CHR$(45);P$(6);S$(6);P$(10);S$(6) 380 PRINT Q$;CHR$(33);CHR$(100);P$(28) 385 PRINT Q$;CHR$(34);CHR$(33);P$(1);S$(4);P$(2);S$(21);S$(3);S$(13);P$(23) 390 PRINT Q$;CHR$(35);CHR$(54);P$(11);S$(13);P$(21);S$(2);P$(24);S$(2);P$(26) 395 PRINT Q$;CHR$(36);CHR$(32);P$(3) 400 PRINT Q$;CHR$(37);CHR$(71);P$(22);S$(6);P$(25);S$(5);P$(27) 405 PRINT Q$;CHR$(38);CHR$(32);P$(4);S$(10);P$(7);S$(3);P$(12);S$(7) 410 PRINT Q$;CHR$(39);CHR$(45);P$(8) 415 PRINT Q$;CHR$(35);CHR$(100);"VLF OMEGA" 420 PRINT Q$;CHR$(36);CHR$(97);"LAT" 425 PRINT Q$;CHR$(37);CHR$(96);"LONG" 430 PRINT Q$;CHR$(38);CHR$(64);". . . . : . . . ." 435 PRINT Q$;CHR$(40);CHR$(71);"RUD" 440 PRINT Q$;CHR$(41);CHR$(64);STRING $(17,95) 445 FOR X=32 TO 48 STEP 16:FOR Y=10 TO 22 450 PRINT Q$;CHR$(Y+32);CHR$(X+32);CHR$(124); 455 NEXT Y:NEXT X 460 PRINT Q$;CHR$(55);CHR$(64);STRING$(17,95); 465 PRINT Q$;CHR$(42);CHR$(71);"VOR" 470 PRINT Q$;CHR$(43);CHR$(76);"MHZ" 475 PRINT Q$;CHR$(46);CHR$(70);"RANGE" 480 PRINT Q$;CHR$(48);CHR$(67);".....:....." 485 PRINT Q$;CHR$(51);CHR$(70);"RADIAL" 490 PRINT Q$;CHR$(53);CHR$(71);"DME" 495 PRINT Q$;CHR$(54);CHR$(76);"NM"; 500 FOR Y=1 TO 7:PRINT Q$;CHR$(Y+32);CHR$(44);CHR$(95):NEXT 505 FOR Y=1 TO 3:PRINT Q$;CHR$(Y+32);CHR$(53);CHR$(95):NEXT 510 PRINT Q$;CHR$(46);CHR$(32);STRING$(17,95) 515 FOR X=0 TO 16 STEP 16:FOR Y=15 TO 21 520 PRINT Q$;CHR$(Y+32);CHR$(X+32);CHR$(124); 525 NEXT Y:NEXT X 530 PRINT Q$;CHR$(54);CHR$(32);STRING$(17,95) 535 PRINT Q$;CHR$(45);CHR$(39);"ILS" 540 PRINT Q$;CHR$(49);CHR$(51);"MARKER" 545 PRINT Q$;CHR$(50);CHR$(52);"> <" 550 GX(1)=0:GY(1)=0:GOSUB 2305 555 PRINT Q$;CHR$(42);CHR$(38);" " 560 PRINT Q$;CHR$(41);CHR$(36);"RADAR ALT";S$(6);"STALL" 565 PRINT Q$;CHR$(42);CHR$(50);"> <" 570 RETURN 575 REM *DISPLAY INSTRUMENT READINGS 580 GOTO 760 585 YP=1:XP=0:F$="######":V1=FU:GOSUB 2910 590 YP=1:XP=7:F$="###":V1=FP:GOSUB 2910 595 YP=1:XP=39:V1=CC:GOSUB 2910 600 YP=4:XP=39:V1=PDQ:GOSUB 2910 605 YP=4:XP=46:F$="######":V1=RC:GOSUB 2910 610 YP=4:XP=55:F$="##,###":V1=AL:GOSUB 2910 615 YP=5:XP=0:F$="###":V1=MZ:GOSUB 2910 620 IF F(2)=1 THEN YP=10:XP=6:F$="#####":V1=AL:GOSUB 2910 625 REM *DISPLAY THRUST 630 FOR I=1 TO 7:PRINT Q$;CHR$(I+32);CHR$(43);CHR$(127):NEXT 635 PRINT Q$;CHR$(TR+32);CHR$(43);">"; 640 REM *DISPLAY FLAPS 645 FOR I=1 TO 3:PRINT Q$;CHR$(I+32);CHR$(52);CHR$(127):NEXT 650 PRINT Q$;CHR$(FL+32);CHR$(52);">" 655 F$="+###":YP=5:XP=20:V1=FA:GOSUB 2910 660 IF F(6)=0 THEN SX=25:ST$=" ":GOTO 675 665 IF SX=25 THEN SX=26:ST$=STRING$(5,150):GOTO 675 670 SX=25 675 IF F(7)=0 THEN PRINT Q$;CHR$(42);CHR$(51);ST$ 680 REM *DISPLAY BRAKES 685 FOR I=10 TO 12:PRINT Q$;CHR$(I+32);CHR$(86);CHR$(127):NEXT 690 PRINT Q$;CHR$(BR+32);CHR$(86);">" 695 REM *DISPLAY WHEELS 700 FOR I=10 TO 12:PRINT Q$;CHR$(I+32);CHR$(94);CHR$(127):NEXT 705 PRINT Q$;CHR$(WH+32);CHR$(94);">" 710 IF F(2)=1 GOTO 770 715 REM *DISPLAY LAT/LONG 720 YP=4:XP=69:F$="###":V1=DP(4):GOSUB 2910 725 YP=4:XP=73:F$="##.#":V1=DP(5):GOSUB 2910 730 YP=5:XP=69:F$="###":V1=DP(6):GOSUB 2910 735 YP=5:XP=73:F$="##.#":V1=DP(7):GOSUB 2910 740 PRINT Q$;CHR$(36);CHR$(110);"N" 745 PRINT Q$;CHR$(37);CHR$(110);"W" 750 GOTO 770 755 REM *DISPLAY RUDDER 760 PRINT Q$;CHR$(39);CHR$(64);STRING$(17,127) 765 PRINT Q$;CHR$(39);CHR$(RP+32);"^":GOTO 585 770 IF F(2)=1 THEN RETURN 775 REM *DISPLAY VOR 780 YP=11:XP=38:F$="###.#":V1=VO(1):GOSUB 2910 785 PRINT Q$;CHR$(45);CHR$(71);VO$(1) 790 YP=18:XP=39:F$="###":V1=VO(3):GOSUB 2910 795 YP=22:XP=38:F$="###.#":V1=VO(4):GOSUB 2910 800 PRINT Q$;CHR$(49);CHR$(66);STRING$(13,127) 805 IF VO$(1)="OUT " GOTO 815 810 PRINT Q$;CHR$(49);CHR$(VO(2)+32);"^" 815 RETURN 820 REM *KEY POLL SUBROUTINE 825 IF K$="F" OR K$="S" THEN KK=1:GOTO 885 830 IF K$="," OR K$="." THEN KK=2:GOTO 885 835 IF K$="/" THEN RA=0:GOTO 890 840 IF ASC(K$)=10 OR ASC(K$)=11 THEN KK=3:GOTO 885 845 IF K$="W" THEN KK=4:GOTO 885 850 IF K$="V" THEN KK=5:GOTO 885 855 IF K$="R" THEN KK=6:GOTO 885 860 IF K$="L" THEN KK=7:GOTO 885 865 IF K$="A" THEN KK=8:GOTO 885 870 IF K$="Q" THEN KK=9:GOTO 885 875 IF K$="M" THEN KK=10:GOTO 885 880 IF ASC(K$)=12 THEN KK=11:GOTO 885 885 ON KK GOSUB 900,925,955,995,1010,1030,1050,1065,1075,1090,1105 890 RETURN 895 REM *THRUST KEY 900 IF K$="F" THEN TR=TR-1 ELSE TR=TR+1 905 IF TR<1 THEN TR=1:RETURN 910 IF TR>6 THEN TR=6:RETURN 915 RETURN 920 REM *RUDDER KEYS 925 IF K$="," GOTO 940 ELSE RA=RA+1 930 IF RA>4 THEN RA=4 935 RETURN 940 RA=RA-1:IF RA<-4 THEN RA=-4 945 RETURN 950 REM *ELEVATOR KEYS 955 J=5:IF BR=12 THEN J=1 960 IF K$=CHR$(10) THEN FA=FA+J ELSE FA=FA-J 965 IF FA>40 THEN FA=40 970 IF FA<-40 THEN FA=-40 975 IF FA>0 THEN FL=1:RETURN 980 IF FA=0 THEN FL=2:RETURN 985 FL=3:RETURN 990 REM *WHEEL KEYS 995 IF WH=10 THEN WH=12:RETURN 1000 IF WH=12 THEN WH=10:RETURN 1005 REM *SET VOR FREQ 1010 PRINT Q$;CHR$(46);CHR$(87); 1015 LINE INPUT "VOR FREQ ";VX$:VO(1)=VAL(VX$) 1020 PRINT Q$;CHR$(46);CHR$(87);SPACE$(16):RETURN 1025 REM *SET RADIAL 1030 PRINT Q$;CHR$(46);CHR$(87); 1035 LINE INPUT "VOR RADIAL ";VX$:VO(3)=VAL(VX$) 1040 PRINT Q$;CHR$(46);CHR$(87);SPACE$(14):RETURN 1045 REM *FLAPS KEY 1050 IF BR=10 THEN BR=12:RETURN 1055 IF BR=12 THEN BR=10:RETURN 1060 REM *AUTO OBS KEY 1065 F(3)=1:RETURN 1070 REM *REVERSE THRUST KEY 1075 IF F(7)=1 THEN TR=7 1080 RETURN 1085 REM *MISSED APPROACH KEY 1090 IF F(2)=1 THEN F(5)=1 1095 RETURN 1100 REM *FLARE KEY 1105 IF F(2)=0 THEN FA=0:FL=2:RETURN 1110 FA=1:FL=1:RETURN 1115 REM *SITUATION UPDATE ROUTINE 1120 GOSUB 2870:TJ=TD-TL:TL=TD 1125 GOSUB 1320:GOSUB 1405:GOSUB 1480 1130 IF TR=7 THEN GOSUB 2185 ELSE GOSUB 1390 1135 GOSUB 1330:GOSUB 1360 1140 IF F(2)=1 GOTO 1995 1145 GOSUB 1720:GOSUB 1805 1150 IF AL<=0 THEN AF=1 :GOTO 2390 1155 IF F(2)=0 GOTO 1310 1160 IF AL>0 GOTO 1235 1165 IF F(7)=1 GOTO 1290 1170 F(7)=1 1175 TY=YN:TX=XN-750 1180 IF FA>1 THEN AF=2:GOTO 2390 1185 IF FA<0 THEN AF=3:GOTO 2390 1190 IF F(6)=0 GOTO 1230 1195 IF AX>100 THEN AF=4:GOTO 2390 1200 IF AX>80 THEN AF=5:GOTO 2390 1205 IF WH=10 THEN AF=6:GOTO 2390 1210 IF TX>0 THEN AF=7:GOTO 2390 1215 IF TX<-10550 THEN AF=7:GOTO 2390 1220 IF ABS(TY)>100 THEN AF=7:GOTO 2390 1225 GOTO 1310 1230 AF=8:GOTO 2390 1235 IF F(5)=1 GOTO 1280 1240 IF FA>0 GOTO 1255 1245 IF FA<0 THEN F(6)=0 1250 GOTO 1310 1255 IF F(6)=0 THEN AX=AL:F(6)=1 1260 IF TR=6 GOTO 1275 1265 IF FA<2 THEN RC=-1800:GOTO 1310 1270 FA=2:FL=1:RC=-1800:GOTO 1310 1275 FA=1:FL=1:RC=-300:GOTO 1310 1280 IF AL<20 THEN AF=9:GOTO 2390 1285 TR=3:FA=0:FL=2:AF=10:GOTO 2390 1290 IF XN<-9750 OR ABS(YN)>100 GOTO 1305 1295 IF PDQ>0 GOTO 1310 1300 AF=0:GOTO 2390 1305 AF=9:GOTO 2390 1310 GOTO 2175 1315 REM *UPDATE FUEL 1320 FU=FU-(14-TR)*TJ:IF FU<0 THEN FU=0 1325 FP=FU/3120:RETURN 1330 IF F(7)=1 THEN RC=0:RETURN 1335 IF F(6)=1 THEN RETURN 1340 RC=PDQ*SIN(ABS(FA/KR))*101.6 1345 IF FA<0 THEN RC=-1*RC 1350 RETURN 1355 REM *UPDATE ALTITUDE 1360 IF F(7)=1 THEN RETURN 1365 AL=AL+TJ*RC/60 1370 IF AL<0 THEN AL=0:RETURN 1375 IF AL>45000! THEN AL=45000! 1380 RETURN 1385 REM *UPDATE AIRSPEED 1390 PDQ=800-100*TR:PDQ=PDQ-2*FA 1395 IF BR=10 THEN RETURN 1400 PDQ=PDQ/3+20:RETURN 1405 IF F(5)=1 GOTO 1415 1410 IF F(2)=1 GOTO 1460 1415 IF RA=0 THEN RT=0:RETURN 1420 IF RA<0 THEN J=-1 ELSE J=1 1425 RA=ABS(RA):IF RA=1 THEN RT=1:GOTO 1440 1430 IF RA=2 THEN RT=10:GOTO 1440 1435 IF RA=3 THEN RT=20 ELSE RT=30 1440 RT=J*RT:RA=J*RA:CC=CC+RT 1445 IF CC=>360 THEN CC=CC-360:RETURN 1450 IF CC<0 THEN CC=360+CC 1455 RETURN 1460 IF RA=0 THEN RETURN 1465 IF RA<0 THEN CC=CC-1 ELSE CC=CC+1 1470 RA=0:GOTO 1445 1475 REM *UPDATE RUDDER POSITION VARIABLE 1480 RP=40+RA+RA:RETURN 1485 REM *COMPUTE DISTANCE AND BEARING 1490 VL=ABS(LB-LC):BL(5)=-1:IF LB=>LC THEN BL(5)=1 1495 VG=ABS(GB-GC):BL(4)=1:IF GB=>GC THEN BL(4)=-1 1500 LA=LC:GOSUB 2350:M1=MP:LA=LB:GOSUB 2350 1505 M2=MP:DM=ABS(M2-M1):IF DM=0 GOTO 1520 1510 QO=VG/(DM/60):IF QO>114.59 GOTO 1520 1515 CA=KR*ATN(QO):DR=VL*(1/COS(CA/KR)):GOTO 1525 1520 CA=90:DR=VG*COS(LC/KR) 1525 DR=DR*60:IF BL(5)=-1 GOTO 1540 1530 IF BL(4)=1 THEN CR=CA ELSE CR=360-CA 1535 RETURN 1540 IF BL(4)=1 THEN CR=180-CA ELSE CR=180+CA 1545 RETURN 1550 REM *GET WIND FACTOR FOR ALTITUDE 1555 I=FIX(AL/4000):IF I=>10 THEN I=10 1560 WD=WA(I,0):WV=WA(I,1):RETURN 1565 REM *SOLVE WIND TRIANGLE 1570 A=CC:L=AJ:GOSUB 1605 1575 MX=LX:MY=LY:GOSUB 1555 1580 A=WD+180:IF A=>360 THEN A=A-360 1585 L=WV:GOSUB 1605 1590 MX=MX+LX:MY=MY+LY:GOSUB 1655 1595 TK=MA:GS=VZ:RETURN 1600 REM *RESOLVE VECTOR TO RECT COOR 1605 IF A<=90 THEN Q=1:B=90-A:GOTO 1625 1610 IF A<=180 THEN Q=2:B=A-90:GOTO 1625 1615 IF A<=270 THEN Q=3:B=270-A:GOTO 1625 1620 Q=4:B=A-270 1625 LX=L*COS(B/KR):LY=L*SIN(B/KR) 1630 IF Q=1 THEN RETURN 1635 IF Q=2 THEN LY=-1*LY:RETURN 1640 IF Q=3 THEN LX=-1*LX:LY=-1*LY:RETURN 1645 LX=-1*LX:RETURN 1650 REM *COMPOSES X,Y INTO POLAR VECTOR 1655 VZ=SQR(MX^2+MY^2) 1660 IF MX<=0 GOTO 1675 1665 IF MY<=0 THEN Q=2 ELSE Q=1 1670 GOTO 1680 1675 IF MY<=0 THEN Q=3 ELSE Q=4 1680 IF MX=0 THEN MA=90:GOTO 1695 1685 MQ=ABS(MY/MX) 1690 MA=ATN(MQ)*KR 1695 IF Q=1 THEN MA=90-MA:RETURN 1700 IF Q=2 THEN MA=90+MA:RETURN 1705 IF Q=3 THEN MA=270-MA:RETURN 1710 MA=270+MA:RETURN 1715 REM *GET POSIT FOR OMEGA 1720 PDQ(2)=PDQ:FA(2)=FA:CC(2)=CC:AL(2)=AL:PDQ=PDQ(1):FA=FA(1):CC=CC(1):AL=AL(1) 1725 IF PDQ(2)<>PDQ OR FA(2)<>FA GOTO 1770 1730 IF CC(2)<>CC OR AL(2)<>AL GOTO 1770 1735 F(0)=1:IF TD300 GOTO 1915 1835 IF CR=>360 THEN CR=CR-360 1840 GOTO 1980 1845 VO$(1)="FROM" 1850 VO(5)=CR-VO(3):IF VO(5)<=180 GOTO 1860 1855 VO(5)=VO(5)-360:GOTO 1865 1860 IF VO(5)<-180 THEN VO(5)=VO(5)+360 1865 IF ABS(VO(5))>90 THEN I1=VO(3):GOTO 1900 1870 IF VO$(1)="FROM" THEN I=-1 ELSE I=1 1875 IF I=1 THEN VO(3)=I1 1880 VO(2)=40+I*INT(VO(5)):VO(4)=DR 1885 IF VO(2)<35 THEN VO(2)=34 1890 IF VO(2)>45 THEN VO(2)=46 1895 GOTO 1945 1900 VO$(1)=" TO ":VO(3)=VO(3)+180 1905 IF VO(3)=>360 THEN VO(3)=VO(3)-360 1910 GOTO 1850 1915 VO$(1)="OUT ":VO(4)=999.9:F(3)=0:RETURN 1920 IF DR>12 OR DR<10 THEN MK=0:GOTO 1845 1925 IF AL>4000 THEN MK=0:GOTO 1845 1930 I F F(1)=1 THEN J=9 ELSE J=2.5 1935 IF CR>AR+J OR CRLL+1 OR CC0 THEN RETURN 1970 F(1)=0:F(2)=1 1975 GOTO 1915 1980 IF F(3)=1 THEN VO(3)=CR:F(3)=0 1985 GOTO 1920 1990 REM *ILS ROUTINE 1995 ZN=AL:TH=2.82471:MK=1:DW=1.69*RW*TJ:IF F(7)=1 THEN DW=0 2000 IF F(7)=1 THEN CC=LL:RA=0 2005 CJ=CC:IF CJ>180 THEN CJ=360-CJ:CJ=-1*CJ 2010 HA=LO+CJ:DC=360-HA:TS=1:IF HA<180 THEN DC=HA:TS=-1 2015 IF DC<0 THEN DC=-1*DC:TS=-1*TS 2020 TL$="W":IF TS=1 THEN TL$="E" 2025 DD=1.69*PDQ*TJ:DY=DD*SIN(DC/KR):DX=DD*COS(DC/KR) 2030 XN=XO-DX:IF TL$="E" THEN DY=-1*DY 2035 YN=YO+DY+DW:LM=KR*ATN(AL/XN) 2040 BE=KR*ATN(ABS(YN)/ABS(XN)):IF BE>2.5 THEN MK=0 2045 J=(LM-TH)/.25:J=FIX(J) 2050 IF J>3 THEN J=3 2055 IF J<-3 THEN J=-3 2060 BE=BE/.25:BE=FIX(BE):IF BE<-7 THEN BE=-7 2065 IF BE>7 THEN BE=7 2070 IF YN=>0 THEN BE=-1*BE 2075 IF MK=0 GOTO 2095 2080 IF XN>34960! AND XN<38000! GOTO 2095 2085 IF XN>2534 AND XN<5574 GOTO 2095 2090 MX=0 2095 GX(1)=BE:GY(1)=J:GOSUB 2305 2100 IF MK=1 THEN MRK$=CHR$(150) ELSE MRK$=" " 2105 PRINT Q$;CHR$(50);CHR$(53);MRK$;MRK$ 2110 XO=XN:YO=YN:IF F8=1 GOTO 2135 2115 IF XN>12000 GOTO 2135 2120 F8=1 2125 REM *LANDING RUNWAY DISPLAY 2130 FOR I=0 TO 3:PRINT Q$;CHR$(45+I);CHR$(81);RS$(I):NEXT 2135 IF F8=0 GOTO 2170 2140 PRINT Q$;CHR$(49);CHR$(XQ+32);" " 2145 YU=FIX(YN/16.7):XC=64+YU 2150 IF XC<49 THEN XC=49 2155 IF XC>79 THEN XC=79 2160 PRINT Q$;CHR$(49);CHR$(XC+32);CHR$(141) 2165 XQ=XC 2170 GOTO 1155 2175 GOTO 330 2180 REM *REVERSE THRUST 2185 IF F(4)=1 GOTO 2195 2190 VO=PDQ*1.152*1.47:F(4)=1 2195 V=VO-(3.23636)*TJ:IF V<=0 THEN V=0 2200 VO=V:PDQ=V/(1.152*1.47):RETURN 2205 REM *COMPUTES NEW POSITION 2210 IF CN=0 THEN CA=0:LB(5)=1:LB(6)=1:GOTO 2235 2215 IF CN>0 AND CN<90 THEN CA=CN:LB(5)=1:LB(6)=1:GOTO 2235 2220 IF CN>90 AND CN<180 THEN CA=180-CN:LB(5)=-1:LB(6)=1:GOTO 2235 2225 IF CN>180 AND CN<270 THEN CA=CN-180:LB(5)=-1:LB(6)=-1:GOTO 2235 2230 CA=360-CN:LB(5)=1:LB(6)=-1 2235 IF CA>89.5 THEN GOTO 2265 2240 DL=DN*COS(CA/KR):DL=DL/60:LB(3)=LB(5) 2245 IF LB(3)=1 THEN L2=L1+DL:GOTO 2255 2250 L2=ABS(L1-DL) 2255 LA=L1:GOSUB 2350:M1=MP:LA=L2:GOSUB 2350 2260 M2=MP:DM=ABS(M1-M2):DG=DM*TAN(CA/KR):GOTO 2270 2265 L2=L1:DG=DN/COS(L1/KR) 2270 DG=DG/60:LB(4)=LB(6) 2275 IF LB(4)=-1 GOTO 2285 2280 G2=ABS(G1-DG):GOTO 2290 2285 G2=G1+DG 2290 CP(4)=FIX(L2):CP(5)=(L2-CP(4))*60:CP(6)=FIX(G2):CP(7)=(G2-CP(6))*60 2295 RETURN 2300 REM *PLOT GLIDESLOPE CROSSHAIRS 2305 IF XO<=750 THEN RETURN 2310 X0=8+GX(0):X1=8+GX(1):Y0=18+GY(0):Y1=18+GY(1) 2315 FOR Y=15 TO 21:PRINT Q$;CHR$(Y+32);CHR$(X0+32);" ":NEXT Y 2320 PRINT Q$;CHR$(Y0+32);CHR$(33);STRING$(15,32) 2325 FOR Y=15 TO 21:PRINT Q$;CHR$(Y+32);CHR$(X1+32);CHR$(43):NEXT Y 2330 PRINT Q$;CHR$(Y1+32);CHR$(33);STRING$(15,43) 2335 PRINT Q$;CHR$(50);CHR$(40);"O" 2340 GX(0)=GX(1):GY(0)=GY(1):RETURN 2345 REM *COMPUTES MERIDIONAL PARTS, MP 2350 KM(0)=7915.704468#:KM(1)=23.268932#:KM(2)=.0525:KM(3)=.000213 2355 IF LA=0 THEN LA=0+1/60 2360 IF LA>(89+59/60) THEN LA=89+59/60 2365 S1=SIN(LA/KR):S2=S1*S1:S3=S1*S2 2370 TM(0)=TAN((45+LA/2)/KR):TM(0)=KM(0)*LOG(TM(0))/LOG(10) 2375 TM(1)=KM(1)*S1:TM(2)=KM(2)*S3:TM(3)=KM(3)*S2*S3 2380 MP=TM(0)-TM(1)-TM(2)-TM(3):RETURN 2385 REM *ABORT ROUTINES 2390 M$(1)="----------A CRASH HAS OCCURRED----------" 2395 M$(2)="YOU ACCIDENTALLY STALLED THE AIRCRAFT DURING FINAL APPROACH." 2400 M$(3)="THE STALL OCCURRED AT AN ALTITUDE OF" 2405 M$(4)="THE AIRCRAFT STRUCK THE GROUND IN A NOSE-HIGH ATTITUDE." 2410 M$(5)="THE IMPACT RUPTURED THE TAIL SECTION OF THE FUSELAGE." 2415 M$(6)=" LOCATION OF CRASH":M$(7)=" LANDING POSITION" 2420 M$(8)=" PITCH ANGLE=":M$(9)=" AIRSPEED=" 2425 M$(10)="YOU FLARED AT TOO HIGH AN ALTITUDE DURING FINAL APPROACH." 2430 M$(11)="THE RESULTING STALL OCCURRED AT AN ALTITUDE OF" 2435 M$(12)="THE IMPACT RUPTURED THE " 2440 M$(13)="YOU FORGOT TO LOWER THE LANDING GEAR." 2445 M$(14)="YOU FAILED TO TOUCH DOWN INSIDE THE RUNWAY." 2450 M$(15)="---AN IMPROPER LANDING WAS MADE---" 2455 M$(16)="NO DAMAGE OR INJURIES OCCURRED." 2460 RL=0:IF TX>0 THEN RL=1 2465 RW=0:IF ABS(TY)>100 THEN RW=1 2470 N$(2)="FEET INSIDE OF RUNWAY" 2475 IF TX=>0 THEN N$(2)="FEET SHORT OF RUNWAY" 2480 N$(3)="FEET TO LEFT OF RUNWAY CENTERLINE" 2485 IF TY=>0 THEN N$(3)="FEET RIGHT OF RUNWAY CENTERLINE" 2490 RX=FIX(TX):RX=ABS(RX):RY=FIX(TY):RY=ABS(RY) 2495 IF AF=0 THEN GOTO 2760:AX=INT(AX):FA=INT(FA):PDQ=INT(PDQ) 2500 ON AF GOTO 2505,2535,2550,2580,2595,2645,2670,2685,2710,2745 2505 GOSUB 2815 2510 YP=4:XP=55:F$="##,###":V1=AL:GOSUB 2910 2515 PRINT Q$;CHR$(45);CHR$(32);M$(1) 2520 PRINT"YOU FLEW INTO THE GROUND." 2525 PRINT"THE INSTRUMENT READINGS AT THE TIME OF THE CRASH ARE SHOWN ABOVE." 2530 END 2535 PRINT CL$;M$(1):PRINT M$(2):PRINT M$(3);AX;"FEET." 2540 PRINT M$(4):PRINT M$(5):N$(1)=M$(6):GOSUB 2830 2545 END 2550 PRINT CL$;M$(1) 2555 PRINT"YOU FLEW INTO THE GROUND DURING FINAL APPROACH." 2560 PRINT"AT TIME OF CRASH, THE AIRCRAFT PROFILE WAS AS FOLLOWS:" 2565 PRINT M$(8);FA;"DEGREES":PRINT M$(9);PDQ 2570 N$(1)=M$(6):GOSUB 2830 2575 END 2580 PRINT CL$;M$(1):PRINT M$(10):PRINT M$(11);AX;"FEET." 2585 PRINT M$(12);"FUSELAGE.":N$(1)=M$(6):GOSUB 2830 2590 END 2595 PRINT CL$ 2600 IF WH=10 THEN PRINT M$(1) 2605 IF WH=12 THEN PRINT"---A MINOR CRASH HAS OCCURRED---" 2610 PRINT M$(10):PRINT M$(11);AX;"FEET." 2615 IF WH=10 THEN PRINT M$(13) 2620 IF WH=10 THEN PRINT M$(12);"FUSELAGE." 2625 IF WH=12 THEN PRINT"THE IMPACT DAMAGED THE LANDING GEAR." 2630 IF WH=12 THEN PRINT"ALL PASSENGERS HAVE BEEN SAFELY EVACUATED." 2635 N$(1)=M$(6):GOSUB 2830 2640 END 2645 PRINT CL$ 2650 PRINT M$(1):PRINT M$(13);"THE AIRCRAFT LANDED ON ITS BELLY, CAUSING MODERATE DAMAGE." 2655 PRINT"ALL PASSENGERS HAVE BEEN SAFELY EVACUATED." 2660 N$(1)=M$(6):GOSUB 2830 2665 END 2670 PRINT CL$;M$(15):PRINT M$(14) 2675 N$(1)=M$(7):GOSUB 2830 2680 END 2685 PRINT CL$;M$(15) 2690 PRINT"YOU FAILED TO EXECUTE A PROPER FLARE PRIOR TO TOUCHING DOWN." 2695 PRINT"THIS IS A VIOLATION OF COMPANY PROCEDURES." 2700 PRINT M$(16):N$(1)=M$(7):GOSUB 2830 2705 END 2710 PRINT CL$;M$(15) 2715 PRINT"YOU ROLLED OFF THE RUNWAY AFTER TOUCHING DOWN." 2720 PRINT M$(16):N$(1)=M$(7):GOSUB 2830 2725 PRINT 2730 IF XN<-9750 THEN PRINT"YOU ROLLED PAST FAR END OF RUNWAY" 2735 IF ABS(YN)>100 THEN PRINT"YOU ROLLED THROUGH RUNWAY SIDE BORDERS" 2740 END 2745 PRINT CL$;"YOUR MISSED APPROACH SIGNAL IS ACKNOWLEDGED" 2750 PRINT"YOU HAVE FOLLOWED PROPER PROCEDURES." 2755 END 2760 PRINT CL$;"***YOU HAVE SUCCESSFULLY COMPLETED THE FLIGHT***" 2765 PRINT"ALL PROCEDURES WERE PROPERLY EXECUTED." 2770 N$(1)=M$(7) 2775 PRINT"CONGRATULATIONS ON A SUCCESSFUL FLIGHT." 2780 GOSUB 2830:PRINT 2785 XN=ABS(XN):JN=FIX(XN+750):YN=ABS(YN):YN=FIX(YN) 2790 PRINT"YOUR AIRCRAFT CAME TO REST AT THE FOLLOWING POSITION:" 2795 PRINT JN;"FEET INSIDE THE RUNWAY" 2800 PRINT YN;"FEET FROM THE RUNWAY CENTERLINE" 2805 END 2810 REM *CLEAR LOWER PART OF DISPLAY 2815 FOR I=9 TO 23:PRINT Q$;CHR$(I+32);CHR$(32);CHR$(27);"T";:NEXT 2820 RETURN 2825 REM *LANDING STATS 2830 PRINT:PRINT SPACE$(26);N$(1):PRINT 2835 IF RL=0 THEN PRINT RX;N$(2) 2840 IF RL=1 THEN PRINT RX;N$(2) 2845 PRINT 2850 IF RW=0 THEN PRINT RY;N$(3) 2855 IF RW=1 THEN PRINT RY;N$(3) 2860 PRINT:PRINT"RUNWAY IS 10,500 X 200 FEET":RETURN 2865 REM *CLOCK UPDATE ROUTINE 2870 HRS=FIX(TD/3600):MIN=FIX((TD-3600*HRS)/60):SEC=TD-(3600*HRS+60*MIN) 2875 IF B$="Y" AND AL=>5000 THEN TA=15 ELSE TA=3 2880 TD=TD+TA 2885 YP=0:XP=66:F$="##.":V1=HRS:GOSUB 2910 2890 YP=0:XP=69:F$="##.":V1=MIN:GOSUB 2910 2895 YP=0:XP=72:F$="##":V1=SEC:GOSUB 2910 2900 RETURN 2905 REM *PLOT VARIABLE 2910 PRINT Q$;CHR$(YP+32);CHR$(XP+32); 2915 PRINT USING F$;V1 2920 RETURN 2925 END 2930 REM *END OF LISTING  VARIABLE 2910 PRINT Q$;CHR$(YP+32);CHR$(XP+3FOLLOWING POSITION:" 2795 PRINT JN;"FEET INSIDE THE RUNWAY" 2800 PRINT YN;"FEET FROM THE RUNWAY CENTERLINE" 2805 END 2810 RE!9"1U > xGʹgkkͩ{2>z2=y2<x2;&.  ( u=&. &.?& ¦#|ÒONʹGG&.  *U !U!U>>Fh#Fh#FhFh#Ff#FhFh#Fh#Fh@D?R>KR>Aw#|AU!U !U~ʼ>w Ô>w |uʠ}ʧg}?oO|#|qͩ{2Sz2Ry2Qx2Pxy&.?SG  =\>!Uw#w#w#w#w#w#w#w#w@wwwwww?wwwwwwA}o>wwwwww>!Uwwww@w wwww@w& .>2  ʦ/B /  BP'FU>2|>gþ>2}*>Noþ>2,}O>.þ>2$|Q&þ _ a*|qw?gU { ‰>Ë>w:/By0:_y0:Wx0:Ox0:G LIFE R.A.R ver 1.61 5/10/84 $ GENERATION: POPULATION: $#Fh#FhFh#Ff#FhFh#Fh#Fh@D?R>KR>Aw#|AU!U !U~ʼ>w Ô>w |uʠ}ʧg}?oO|#|qͩ{2Sz2Ry2Qx2Pxy&.?SG  =\>!Uw#w#w#w#w#w#w#w#w@wwwwww?wwwwwwA}o>wwwwww>!Uwwww@w wwww@w& .>2  ʦ/B /  BP'FU>2|>gþ>2}*>Noþ>2,}O>.þ>2$|Q&þ _ a*|qw?gU { ‰>Ë>w:/By0:_y0:Wx0:Ox0:G Thi listin wil giv th instruction fo operatin th gam o LIF tha wrot durin th sprin o 1983. Th gam ca b calle u b simpl typin th progra nam afte th CP/ promt Th scree wil b cleare an th curso place i th middl o th screen Entr o th patter ca b don wit th us o th directio key (eithe CP/ o W format whic wil chang th directio o curso motion An ke wil (bu spacebar F P C an th directio keys wil prin character. Spaceba - clear alread ocupie space. Ơ - add tw floater t pattern an start game. Р - add store patter t arra an start game Thi patter wil di afte 2 generation i nothing else is in field. C - starts game processing. Onc th gam ha bee started i ca b stoppe b hittin an key '? appear i th lowe lef corne fo u t fiv seconds I n othe characte i entere th gam continues Th followin character wil hal th play: - reset an start ne game ^C - return t CP/M an othe characte resume play If th populatio goe t zer th progra automaticall reset an put th curso i th middl o th scree s tha yo ca ente ne pattern. Th populatio an generatio counte ar displaye o th botto o th scree i hexadecima format Th fiel wrap aroun s tha pattern tha disapea of th scree ma reappea o th opposit sid o th screen Ther i als hidde portio o th fiel tha i no displayed. R.A.R. 6/21/83  generation i nothing else is in field. C - starts game processing. Onc th gam ha bee started i ca b stoppe b hittin an key '? appear i th lowe lef corne fo u t fiv seconds I n othe characte i envLIFE.ASMD  !"#$%&'()*+,-./0123456789:;o<=>?@ABCmx[ 3ix2 Fr /ٳJg" 8L᠕r%TN Z j&zM; :̇PA ӄxY AiB@Z]w ̇V72\B*a/Zb7̇܁~#lJX׬ :%vS|WA (З؛`Fkh@_J37zߨQ 汩iBoƅ5YVl@x5ol@V ԌT\y`z j&$1՘oԨT0a%g8ꮂl7jO*ば&d QkzU [ZSs<MnԚܢa*X_߁8BxcS|8TA ӄ%z [43ǝs-DMZ]_x)ތo7LGZo7 嬂 [) Qs@75'RA ӄ-Ŭ8N-lѸPH_~QAmok&T2/H kl"JW[4>Lklp虌s-D<6̇cZO0MXbWbE8s9BT0>~#lq:B ըi–bVA]z&b ^ސ-.@9r`>c}}z&\ Q%f7MS;3JFiss<-q\ QS|WSQ׿=Rg+n*f+n72)ʹi–bz즂p g JFE5L38Lľ?W![\slqQ|8g2^7lMÑlF!B9i–bzB-pCb x5b!vS;Qs@D;r E5L 8;hE+җ_TPcȸPB5**XTTtoLMs<tll>SQA]'}ݛAI @/dWi*X<0;h-b ^56{zK\0^' p 9&kl9NąB j&l)fȸPB5**|@D;sU9GI|- ! LľUwΑkl"2=ڠ3q!JS+`N g UT|[ P|8h\~#c5, :%vS|8h@1ķ5iBgjT%U2/[B1-.*]%[\T|[ P|8h\~#c5, :%vS|8h@1ķ5iBgjT%U0=qǦpL멂 K*@Alhg;Z #-̤p/*aU0)!N)/@qg CJrVA^ƤBU:k+2oy)RJ _T:?\hx/q|F%ǦȵP0boa|F%Ǧ{F5*<6x^2[w*L-t\Cpl<)5^ͨ`z8Һ]NOS BR* c۵TЧ 嬂4Ч}6ΡU0=cݮ}~#w*R*J=\y`=[,n*4~#-rT0@5^ͨ`>zN {K^;WjFEiY/*HΏS<6TAmo)ec9z-N}iRPн%zpHP*Hκ ͍~QAp~|@b TAmo)x{` m8677>ןcEi}}5ƿ?W~7 RHH@EȍƓ7RApmon|? ҆k0\7 =0T6u1>>cc>W>UPBJ =0T6u1>>cc>W~7 RHH@EȍƓ7RApmon|? ҆k0TAmo)x{` m8677>ןcEi}}5\TAmo)x{` m8677>ןcEi}}5\R *Hκ ͍uSAp~C/oؼzT?"g"k`|9=};ȟ>M* LľD9mld,5o@[4T>}0~'4ǦyA56vxz&bߙ߹KVK{C}ܢqͼ]pb!.ɲJK\0~#zB8T(g,W@ @Ι-rfTTBBzH-rHP*y @ q\c3jUr `F!B9so*Zhf즂9PA' g"oV(? ^fs\h`*] ޽d'[nޚǝkߩtLǶ)5^ͨ`z8Һ]N}!qXCJrVpuʟ9Ч 嬂4Ч}6ΡB4R0m}}}JͨpZJH) $!%cTPBvx7bD3*CKL2/\G(jw ̀on*'uPx5Ǧ9l`>:Q(\G(x3,qs-DCJrVrb7@XwoL@w/|颬2U gIi뷡7,ś=;onT toL 嬲oDpmon: m8MC/oX7{Yq&SAHW{fj_8T(gxWXгBEs< 72~ 4*MeA-PLkzCrg"|+ s-DM/ t9G@X3_V(As-D x}TPH@syH˕6px5 Ku-/śqjTTod\Ռ o~ K\0^([,!B9=8T(g@X3ηB j1T/IC/3 ܢq`%.cSA ӄD5&zk 汩`J@Arug-p#d X9kRA%.O*ばVd XTuSA%.MK\FK\)Ǧ9tl|- ޾.soT"49kQ6W*}1RA]'}ߨD.dWi*( `N g UT0=qǦpL멂pz虌%TUP4a9yfqs`>u}}~[q [72#P >w ^ސ-.@9rηpJFƔkXH5Leu=SK즂pz݁~#cjo%,kVA ӄxY@PKe^MAk+2okq##P [оpǦmJ0*\c"̙7.tlTT /汱gԌwo\٨P6汱gԌwo\٨Ye 9u j&,1׫` J̇@d__i–bz [YL|m%^"/1yl\cQ6ƞ9S3߽qgC ~ƞ9S3߽qg“Jg߹ETU0=i}=_)q3YVA !%S<9S珓GlG8m 5&L8dAҙr]^׾^uP!O-qxPm\ݹDU:ﱰ \ Q%f7U|s  x+*V0`uiB D5&⃊y /1yl*ばгBruWAcSs<֤lǢ9I5LU'1TkxcS-␫ OO@X E_T0=i]o70MR*(dz!JSYo7 mUiÝ*cApg m ҆?UJVeވ-rqJfo9Q9LruW7*{B7F7ruBvFq]J*]%Qu5oTT0=zN g%HÑuP8[nys<*x+}ocSyAOT_y*m *ばVx? xAs<M%w<~wn96x+H*xBrazjTxkߩ m8S*n׾SAqHP*}d*HΔ RHH@)E)YiÙPkzXT6;  gJCs<0AiùCiÙPkPAp m8S*y @ ҆s m8S*y @ ҆_Hz8{&SAp4TBBzH-rHP*HΔ x`^гB즂i m8S*y *Hm*HΔ x`^ ҆SiÙPkzXT6|CiÙPkzXT6*(d**=_[y#ȡVZs-De _x`Ftl1+Ч{s0̇cZ_}!77?T0~=70qB<6d H^-b7,W@ vSS˼m JPD ӄ%z/1yl\cQ=1>>Ds-ljPHPA ӄ- JFEuqi=\ ^ސb#{].}=U/o{9[\TP1w.~7 SA]Lľ ע8z&byTvSA]z&b9ůM/oHkSA]g@D; S߆.s@D;_ ^p-*1wh7aTP3)~m*xyC_ 8虈}E/oZHuq3λ ^ѫ ^BW-ʵ`>a}=qBs(TT- yzXT72)Ys<9_T/ڬjTA]g"ߨD7\S+}9qA'T9k-O,W@ ^BKn׫XT& +3'/Tylw~U0nȮ#Ph'x`Z +  bJ0̇#@dP'd H^-b7,qPIs<Iuqg"ߨD7 {`>z {bP˼ [(va>aL jϡ|RQAb!vS x+*ばLľ 1S%ůC/lة-{E]9wKl@[4EMwg2EKyAw"Ǧwg2NTc odR* + gM˕s8(50Z0P>U%UP4ax3#P FuQQ 8T(g,W@ vSuq0l;}:Q(| ҆n=-g2T6}Tb(yn\6L/"[(t߹N "Ǧ@dsƙ77 뤒-@h}@ײP-`AXyl*mݮ}{K= !%!B9`J@qEuq%bPI/ >;hEM t9GyAo@EM%-%T9Ob 汩d9l{w**R@B5L'/* :~ ע8^^Oh7aTPoTa*)~m*xyC_ ^BJuP8[*(dz!JS* RSAk+2o9Q]F%7ruW7*{B7F;4J썷i%D5&FSJٸM>^' C|MbQAHs}!Ww3ηB jHO-"Ǧ[-4S3QQIO9SJٸM9k=oD*(yn**( BsPAHs.0T2# $ǯ*s<֠9O+e6_B/F*qC!9ϡ8Pˌw@] x od<6(o_TPBQA E%PT܇ BrCuqC!9~UIm *(d**qJyAxUAx?UURo׾SQ*-̄Lc=PAp|'.?ow gzJ; *H{*Ԓ*HQcܨ5 w*H[rM<]%[6;x"mxn ҆^?y PVޑ6<@io<PAp;jw]N)<ϡ];B-PK*!vP\&NR+\|k8ԜXNRQ\cI@ײP-`AXyl*mݮ}{K= !%!B9`J@qEuq%bPI/ >;hEM t9GyAo@EM%-%T9Ob 汩d9l{w**R@B5L'/* :~ ע8^^Oh7aTPoTa*)~m*xyC_ ^BJuP8[*(dz!JS* RSAk+2o9Q]F%7ruW7*{B7F;4J썷i%D5&FSJٸM>^' C|MbQAHs}!Ww3ηB jHO-"Ǧ[-4S3QQIO9SJٸM9k=oD*(yn**( BsPAHs.0T2# $ǯ*s<֠9O+e6_B/F*qC!9ϡ8Pˌw@] x od<6(o_TPB100 REM STARWAR3 - STARWARS GAME MODIFIED TO WORK ON OSBORNE 1 SCREEN 105 REM OSBORNE 1 SHOULD BE IN 80 COLUMN MODE 110 REM UTILIZES THE INKEY$ FUNCTION OF MICROSOFT'S MBASIC 115 REM MODIFIED FOR THE OSBORNE 1 BY CARL WARNER ON 8/14/83 1000 WIDTH 80 1010 CL$=CHR$(26):REM CLEARS SCREEN & HOMES CURSOR 1020 HY$=CHR$(27)+CHR$(41):REM HALF-INTENSITY ENABLED 1030 HN$=CHR$(27)+CHR$(40):REM FULL INTENSITY RESTORED 1040 GY$=CHR$(27)+CHR$(103):REM GRAPHIC MODE ENABLED 1050 GN$=CHR$(27)+CHR$(71):REM GRAPHIC MODE DISABLED 1060 LET E$=CHR$(27):PRINT CL$;E$;"=#'"; 1070 PRINT GY$;TAB(15);"faaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaf";GN$ 1080 PRINT TAB(18);GY$;"`";SPC(43);"`";GN$ 1090 PRINT TAB(18);GY$;"`";GN$;" 'S T A R W A R S' ";GY$;"`";GN$ 1100 PRINT TAB(18);GY$;"`";SPC(43);"`";GN$ 1110 PRINT TAB(18);GY$;"`";GN$;" This program presented courtesy of "; 1120 PRINT GY$;"`";GN$ 1130 PRINT TAB(18);GY$;"`";SPC(43);"`";GN$ 1140 PRINT TAB(18);GY$;"`";GN$;HY$;" C U S T O M S O F T W A R E G R O U P "; 1150 PRINT HN$;GY$;"`";GN$ 1160 PRINT TAB(18);GY$;"`";GN$;" Specializing in custom programming for "; 1170 PRINT E$;"g";"`";GN$ 1180 PRINT TAB(18);GY$;"` HEATH/ZENITH DATA SYSTEMS `";GN$ 1190 PRINT TAB(18);GY$;"`";GN$;SPC(5);"(Modified by Carl Warner 8/14/83)";SPC(5);GY$;"`";GN$ 1200 PRINT TAB(18);GY$;"`";GN$;SPC(12);"(For the Osborne 1)";SPC(12);GY$;"`";GN$ 1210 PRINT TAB(18);GY$;"` `";GN$ 1220 PRINT TAB(18);GY$;"` CUSTOM SOFTWARE GROUP `";GN$ 1230 PRINT TAB(18);GY$;"` BELLEVUE, NE 68005 `";GN$ 1240 PRINT TAB(18);GY$;"` PHONE 291-4622 `";GN$ 1250 PRINT TAB(18);GY$;"` 291-5819 `";GN$ 1260 PRINT TAB(18);GY$;"`";SPC(43);"`";GN$ 1270 PRINT TAB(18);GY$;"raaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar";GN$ 1280 PRINT TAB(28);"PRESS RETURN TO CONTINUE" 1290 A$=INPUT$(1) 1300 PRINT GN$ 1310 CLEAR 1000 1320 CL$=CHR$(26):REM CLEARS SCREEN & HOMES CURSOR 1330 HY$=CHR$(27)+CHR$(41):REM HALF-INTENSITY ENABLED 1340 HN$=CHR$(27)+CHR$(40):REM FULL INTENSITY RESTORED 1350 GY$=CHR$(27)+CHR$(103):REM GRAPHIC MODE ENABLED 1360 GN$=CHR$(27)+CHR$(71):REM GRAPHIC MODE DISABLED 1370 E$=CHR$(27) 1380 PRINT CL$;E$;"=! " 1390 PRINT ," ******** ********** ****** *********" 1400 PRINT ," ** ** ** ** ** ** **" 1410 PRINT ," ** ** ** ** ** **" 1420 PRINT ," ******** ** ********** *********" 1430 PRINT ," ** ** ** ** ** **" 1440 PRINT ," ** ** ** ** ** ** **" 1450 PRINT ," ******** ** ** ** ** **" 1460 PRINT:PRINT 1470 PRINT ," ** ** ****** ********* ********" 1480 PRINT ," ** ** ** ** ** ** ** **" 1490 PRINT ,"  ** ** ** ** ** ** **" 1500 PRINT ," ** ** ** ********** ********* ********" 1510 PRINT ," ** ** ** ** ** ** ** **" 1520 PRINT ," ******** ** ** ** ** ** **" 1530 PRINT ," ** ** ** ** ** ** ********" 1540 FOR I=1 TO 1000:NEXT I 1550 PRINT E$;"=7 " 1560 PRINT ,"A LONG TIME AGO IN A GALAXY FAR, FAR AWAY, A GREAT" 1570 FOR I=1 TO 1000:NEXT I:PRINT 1580 PRINT ,"ADVENTURE TOOK PLACE. IT IS A PERIOD OF CIVIL WAR." 1590 FOR I=1 TO 1000:NEXT I:PRINT 1600 PRINT ,"REBEL SPACE SHIPS STRIKING FROM A HIDDEN BASE HAVE" 1610 FOR I=1 TO 1000:NEXT I:PRINT 1620 PRINT ,"WON THEIR FIRST VICTORY AGAINST THE EVIL GALACTIC" 1630 FOR I=1 TO 1000:NEXT I:PRINT 1640 PRINT ,"EMPIRE. DURING THE BATTLE, REBEL SPIES MANAGED TO" 1650 FOR I=1 TO 1000:NEXT I:PRINT 1660 PRINT ,"STEAL SECRET PLANS TO THE EMPIRE'S ULTIMATE WEAPON" 1670 FOR I=1 TO 1000:NEXT I:PRINT 1680 PRINT ,"THE DEATH STAR, AN ARMOURED SPACE STATION WITH THE" 1690 FOR I=1 TO 1000:NEXT I:PRINT 1700 PRINT ,"FIRE POWER TO DESTROY AN ENTIRE PLANET. " 1710 FOR I=1 TO 1000:NEXT I:PRINT:PRINT 1720 PRINT ," YOUR MISSION AS ONE OF THE REBEL PILOTS IS TO" 1730 FOR I=1 TO 1000:NEXT I:PRINT 1740 PRINT ,"ATTACK AND DESTROY THE 'DEATH STAR'. WHILE MAKING" 1750 FOR I=1 TO 1000:NEXT I:PRINT 1760 PRINT ,"YOUR ATTACK YOU HAVE ENCOUNTERED 'DARTH VADER' AND" 1770 FOR I=1 TO 1000:NEXT I:PRINT 1780 PRINT ,"HIS IMPERIAL STORM TROOPERS IN THEIR TIE FIGHTERS." 1790 FOR I=1 TO 1000:NEXT I:PRINT 1800 PRINT ,"YOU MUST DESTROY THEM BEFORE THEY CAN DESTROY YOU." 1810 FOR I=1 TO 1000:NEXT I:PRINT:PRINT 1820 PRINT ," GOOD LUCK AND MAY THE 'FORCE' BE WITH YOU " 1830 FOR I=1 TO 2000:NEXT I 1840 PRINT CL$ 1850 REM 1860 REM .........................INSTRUCTIONS ROUTINE....................... 1870 REM 1880 PRINT E$;"=*6";"DO YOU NEED:":PRINT 1890 PRINT TAB(30);"FULL INSTRUCTIONS ?" 1900 PRINT TAB(30);"BRIEF INSTRUCTIONS ?" 1910 PRINT TAB(30);"NO INSTRUCTIONS ?" 1920 A$=INPUT$(1):IF A$="F" THEN 2010 1930 IF A$="B" THEN 2410 1940 IF A$="N" THEN 1950 ELSE 1920 1950 PRINT CL$ 1960 PRINT:PRINT TAB(29);"WHAT IS YOUR SKILL RATING?" 1970 A$=INPUT$(1):IF A$<"1" OR A$>"9" THEN 1990 1980 LET A$=A$+"0":LET A9=CVI(A$):LET A9=A9-12336:GOTO 2680 1990 PRINT:PRINT TAB(26);"EVIDENTLY YOU NEED INSTRUCTIONS!" 2000 FOR I=1 TO 500:NEXT I:PRINT 2010 PRINT CL$;E$;"=! " 2020 PRINT "YOU HAVE BEEN EQUIPPED WITH AN X-WING "; 2030 PRINT " AS IN A REAL DOG-FIGHT YOU MUST LEAD" 2040 PRINT "FIGHTER BY THE REBEL ALLIANCE. YOUR "; 2050 PRINT " THE TARGET WHEN FIRING YOUR LASER. IF" 2060 PRINT "FIGHTER IS COMPUTER CONTROLLED BY THE "; 2070 PRINT " YOU WAIT UNTIL HE IS EXACTLY CENTERED" 2080 PRINT "NUMERIC KEYPAD ON YOUR KEY BOARD. THE "; 2090 PRINT " TO FIRE, THEN YOU WILL MISS HIM. YOU" 2100 PRINT "DISPLAY YOU WILL SEE IS YOUR ONBOARD "; 2110 PRINT " MAY CONTINUE TO FIRE AT HIM, BUT WHEN" 2120 PRINT "SCANNER. IN ORDER TO KILL AN ENEMY "; 2130 PRINT " YOU ARE FIRING YOUR WEAPON, YOUR CON-" 2140 PRINT "FIGHTER HE MUST RECEIVE A DIRECT HIT "; 2150 PRINT " TROL OF DIRECTION IS NOT AS GOOD AS" 2160 PRINT "OR MULTIPLE DAMAGING HITS. HE WILL "; 2170 PRINT " WHEN YOU AREN'T FIRING AND THE TARGET" 2180 PRINT "RECEIVE DAMAGE IF HIT WHEN HE IS +/- "; 2190 PRINT " MAY FLY OUT OF YOUR SIGHTS. " 2200 PRINT "10 DEGREES IN ELEVATION AND HE IS +/- "; 2210 PRINT " " 2220 PRINT "9 DEGREES IN BEARING. IN ADDITION TO "; 2230 PRINT " IN ORDER TO CENTER YOUR TARGET ON THE" 2240 PRINT "THIS HE MUST BE WITHIN 6500 KMS. "; 2250 PRINT " SCANNER YOU MUST FLY TOWARDS HIM. " 2260 PRINT " "; 2270 PRINT " TO DO THIS YOU PRESS THE KEY ON THE" 2280 PRINT "WARNING: THE 'TIE' FIGHTER HAS THE "; 2290 PRINT " NUMERIC KEY PAD THAT IS IN HIS DIREC-" 2300 PRINT "CAPABILITY TO POP IN AND OUT OF HYP- "; 2310 PRINT " TION. IE: IF HE IS IN THE UPPER-RIGHT" 2320 PRINT "ERSPACE.  THEREFORE HE MAY DISAPPEAR "; 2330 PRINT " QUADRANT YOU WOULD PRESS KEY 9 TO FLY" 2340 PRINT "RIGHT FROM BEFORE YOUR SIGHTS. "; 2350 PRINT " TOWARDS HIM. IF HE IS BELOW, PRESS 2." 2360 PRINT " "; 2370 PRINT " " 2380 PRINT " MAY THE FORCE BE WITH YOU "; 2390 PRINT " PRESS RETURN TO CONT "; 2400 LINE INPUT A$ 2410 PRINT CL$ 2420 PRINT GY$; 2430 PRINT ," UP & UP UP &";GN$ 2440 PRINT E$;"g"," LEFT fkkkkkg fkkkkkg fkkkkkg RIGHT";GN$ 2450 PRINT E$;"g"," ` 7 ` ` 8 ` ` 9 `";GN$ 2460 PRINT E$;"g"," rkkkkkt rkkkkkt rkkkkkt";GN$ 2470 PRINT E$;"g"," fkkkkkg fkkkkkg fkkkkkg";GN$ 2480 PRINT E$;"g"," LEFT ` 4 ` ` 5 ` ` 6 ` RIGHT";GN$ 2490 PRINT E$;"g"," rkkkkkt rkkkkkt rkkkkkt";GN$ 2500 PRINT E$;"g"," fkkkkkg fkkkkkg fkkkkkg";GN$ 2510 PRINT E$;"g"," ` 1 ` ` 2 ` ` 3 `";GN$ 2520 PRINT E$;"g","  DOWN rkkkkkt rkkkkkt rkkkkkt RIGHT";GN$ 2530 PRINT E$;"g"," LEFT fkkkkkg DOWN DOWN";GN$ 2540 PRINT E$;"g"," ` 0 `";GN$ 2550 PRINT E$;"g"," rkkkkkt";GN$ 2560 PRINT ," FIRE" 2570 PRINT TAB(18);"<>":PRINT 2580 PRINT TAB(23);"ENTER A SKILL RATING FROM 1 TO 9" 2590 PRINT TAB(27);"NOVICE.................1" 2600 PRINT TAB(27);"EXPERT.................9":PRINT 2610 PRINT "AFTER SCANNER CONSTRUCTION IS COMPLETE, PRESS ANY CONTROL KEY TO" 2620 PRINT "START YOUR SCAN" 2630 A$=INPUT$(1):IF A$<"1" OR A$>"9" THEN 2630 2640 LET A$=A$+"0":LET A9=CVI(A$):LET A9=A9-12336 2650 REM 2660 REM ......................GRID CONSTRUCTION ROUTINE.................... 2670 REM 2680 PRINT CL$ 2690 GY$=CHR$(27)+CHR$(103) 2700 GN$=CHR$(27)+CHR$(71) 2710 PRINT TAB(16);GY$;"RANGE:m9999 KM ELEVATION:m90 DEG BEARING:m90 DEG";GN$ 2720 PRINT:ED=0 2730 PRINT TAB(8);GY$;"-90 -75 -60 -45 -30 -15 0 +15 +30 +45 +60 +75 +90";GN$ 2740 PRINT TAB(5);GY$;"+90 bhhhhbhhhhbhhhhbhhhhbhhhhbhhhhbhhhhbhhhhbhhhhbhhhhbhhhhbhhhhb +90";GN$ 2750 PRINT TAB(9);GY$;"v";SPC(59);"v";GN$:PRINT TAB(9);GY$;"v";SPC(59);"v";GN$ 2760 PRINT TAB(5);GY$;"+60 k";SPC(59);"k +60";GN$ 2770 PRINT TAB(9);GY$;"v";SPC(59);"v";GN$:PRINT TAB(9);GY$;"v";SPC(59);"v";GN$ 2780 PRINT TAB(5);GY$;"+30 k";SPC(59);"k +30";GN$ 2790 PRINT TAB(9);GY$;"v";SPC(59);"v";GN$:PRINT TAB(9);GY$;"v";SPC(59);"v";GN$ 2800 PRINT TAB(6);GY$;"0 k";SPC(59);"k 0";GN$ 2810 PRINT TAB(9);GY$;"v";SPC(59);"v";GN$:PRINT TAB(9);GY$;"v";SPC(59);"v";GN$ 2820 PRINT TAB(5);GY$;"-30 k";SPC(59);"k -30";GN$ 2830 PRINT TAB(9);GY$;"v";SPC(59);"v";GN$:PRINT TAB(9);GY$;"v";SPC(59);"v";GN$ 2840 PRINT TAB(5);GY$;"-60 k";SPC(59);"k -60";GN$ 2850 PRINT TAB(9);GY$;"v";SPC(59);"v";GN$:PRINT TAB(9);GY$;"v";SPC(59);"v";GN$ 2860 PRINT GY$;" -90 buuuubuuuubuuuubuuuubuuuubuuuubuuuubuuuubuuuubuuuubuuuubuuuub -90";GN$ 2870 PRINT GY$;" -90 -75 -60 -45 -30 -15 0 +15 +30 +45 +60 +75 +90";GN$ 2880 REM 2890 REM ......................INPUT CONTROL SCAN ROUTINE................... 2900 REM 2910 CD=200+INT(200*RND(1)):FL$="5" 2920 IF CT=CD THEN 4020 ELSE CT=CT+1 2930 IF FL$="0" THEN 3050 2940 KP$=INKEY$ 2950 IF KP$>="0" AND KP$<="9" THEN FL$=KP$ ELSE IF KP$<>"" THEN DM$=KP$ 2960 KP$=INKEY$ 2970 IF KP$>"0" AND KP$<="9" THEN FL$=KP$ ELSE IF KP$<>"" THEN DM$=KP$ 2980 GOSUB 3440:REM ..FIGHTER UPDATE 2990 PRINT E$;"=&3+";E$;"=23+";E$;"=)=+";E$;"=/=+";E$;"=,G+";E$;"=)Q+";E$;"=/Q+";E$;"=&[+";E$;"=2[+" 3000 FOR I=1 TO 100:NEXT I 3010 GOTO 2920 3020 REM 3030 REM .......................FIRE WEAPON ROUTINE........................ 3040 REM 3050 FOR I=8 TO 1 STEP -1 3060 PRINT E$;"=";CHR$(44+I);CHR$(71-I);GY$;"b";GN$ 3070 PRINT E$;"=";CHR$(44+I);CHR$(71+I);GY$;"n";GN$ 3080 IF I > 6 THEN 3110 3090 PRINT E$;"=";CHR$(46+I);CHR$(69-I);" " 3100 PRINT E$;"=";CHR$(46+I);CHR$(73+I);" " 3110 NEXT I 3120 PRINT E$;"=.E ";E$;"=.I ";E$;"=-F ";E$;"=-H " 3130 IF FX<>44 OR FY<>70 THEN 3290 3140 IF KM>5000 THEN 2960 3150 PRINT HY$;E$;"=8? ENEMY DESTROYED ":DG=0 3160 PRINT HY$:ED=ED+1 3170 PRINT E$;"=";CHR$(FX-1);CHR$(FY);"<|>" 3180 PRINT E$;"=";CHR$(FX);CHR$(FY-1);" " 3190 PRINT HN$;E$;"=";CHR$(FX+1);CHR$(FY);"<|>" 3200 FOR I=1 TO 25:PRINT CHR$(7);:NEXT I 3210 PRINT E$;"=";CHR$(FX);CHR$(FY);"***" 3220 FOR I=1 TO 25: NEXT I 3230 PRINT E$;"=";CHR$(FX-1);CHR$(FY);" " 3240 PRINT E$;"=";CHR$(FX);CHR$(FY-1);"***" 3250 PRINT E$;"=";CHR$(FX+1);CHR$(FY);" " 3260 FOR I=1 TO 25: NEXT I 3270 PRINT E$;"=";CHR$(FX);CHR$(FY);" " 3280 FQ=0:IF ED=5 THEN 3960 ELSE 2960 3290 IF FX<43 OR FX>45 THEN 3410 3300 IF FY<68 OR FY>72 THEN 3410 3310 LET DG=DG+1:IF DG=3 THEN 3150 3320 PRINT E$;"=";CHR$(FX-1);CHR$(FY);"[=]" 3330 PRINT E$;"=";CHR$(FX);CHR$(FY-1);"I" 3340 PRINT E$;"=";CHR$(FX);CHR$(FY+3);"I" 3350 PRINT E$;"=";CHR$(FX+1);CHR$(FY);"[=]" 3360 FOR I=1 TO 250: NEXT I 3370 PRINT E$;"=";CHR$(FX-1);CHR$(FY);" " 3380 PRINT E$;"=";CHR$(FX);CHR$(FY-1);" " 3390 PRINT E$;"=";CHR$(FX);CHR$(FY+3);" " 3400 PRINT E$;"=";CHR$(FX+1);CHR$(FY);" ":GOTO 2960 3410 PRINT E$;"=8 ";E$;"T" 3420 GOTO 2960 3430 REM 3440 REM ...................FIGHTER POSITION UPDATE ROUTINE................ 3450 REM 3460 IF FQ=1 THEN 3530 ELSE FQ=1 3470 LET FX=INT(100*RND(1)) 3480 IF FX<36 OR FX>52 THEN 3470 3490 LET FY=INT(200*RND(1)) 3500 IF FY<44 OR FY>97 THEN 3490 3510 LET KM=INT(10000*RND(1)) 3520 FZ=INT(16*RND(1)) 3530 IF INT(100*RND(1))>6 THEN 3550 3540 FZ=INT (16*RND(1)) 3550 IF INT(10*RND(1))0 THEN 3570 ELSE X=FX-1:Y=FY+1 3570 IF FZ<>1 THEN 3580 ELSE S=FX:Y=FY+1 3580 IF FZ<>2 THEN 3590 ELSE X=FX+1:Y=FY+1 3590 IF FZ<>3 THEN 3600 ELSE X=FX+1:Y=FY 3600 IF FZ<>4 THEN 3610 ELSE X=FX+1:Y=FY-1 3610 IF FZ<>5 THEN 3620 ELSE X=FX:Y=FY-1 3620 IF FZ<>6 THEN 3630 ELSE X=FX-1:Y=FY-1 3630 IF FZ<>7 THEN 3640 ELSE X=FX-1:Y=FY 3640 IF FZ<>8 THEN 3650 ELSE X=FX-1:Y=FY+2 3650 IF FZ<>9 THEN 3660 ELSE X=FX-1:Y=FY+3 3660 IF FZ<>10 THEN 3670 ELSE X=FX+1:Y=FY+3 3670 IF FZ<>11 THEN 3680 ELSE X=FX+1:Y=FY+2 3680 IF FZ<>12 THEN 3690 ELSE X=FX+1:Y=FY-2 3690 IF FZ<>13 THEN 3700 ELSE X=FX+1:Y=FY-3 3700 IF FZ<>14 THEN 3710 ELSE X=FX-1:Y=FY-3 3710 IF FZ<>15 THEN 3720 ELSE X=FX-1:Y=FY-2 3720 IF FL$<>"1" THEN 3730 ELSE X=X-1:Y=Y+1 3730 IF FL$<>"2" THEN 3740 ELSE X=X-2:Y=Y 3740 IF FL$<>"3" THEN 3750 ELSE X=X-1:Y=Y-1 3750 IF FL$<>"4" THEN 3760 ELSE X=X:Y=Y+2 3760 IF FL$<>"6" THEN 3770 ELSE X=X:Y=Y-2 3770 IF FL$<>"7" THEN 3780 ELSE X=X+1:Y=Y+1 3780 IF FL$<>"8" THEN 3790 ELSE X=X+2:Y=Y 3790 IF FL$<>"9" THEN 3800 ELSE X=X+1:Y=Y-1 3800 IF X>39 AND X<50 AND Y>55 AND Y<87 THEN 3840 3810 IF SGN(KM)=+1 THEN KM=KM+INT(200*RND(1)) 3820 IF SGN(KM)=-1 THEN KM=KM-INT(200*RND(1)) 3830 IF KM<10000 THEN 3860 ELSE 3930 3840 IF SGN(KM)=+1 THEN KM=KM-INT(200*RND(1)) 3850 IF SGN(KM)=-1 THEN KM=KM+INT(200*RND(1)) 3860 IF X<36 OR X>52 OR Y<42 OR Y>98 THEN 3930 3870 IF X=FX AND Y=FY THEN RETURN 3880 PRINT E$;"=";CHR$(FX);CHR$(FY);" ":FX=X:FY=Y 3890 PRINT E$;"=";CHR$(FX);CHR$(FY);GY$;"hmj";GN$ 3900 PRINT E$;"= 5";KM 3910 EV=10*(44-FX):PRINT E$;"= K";EV 3920 BR=3*(FY-70):PRINT E$;"= \";BR:RETURN 3930 PRINT E$;"=";CHR$(FX);CHR$(FY);" " 3940 FQ=0:RETURN 3950 PRINT E$;"=8 ";E$;"T":RETURN 3960 FOR I=1 TO 500:NEXT I:PRINT E$;"= ";CL$ 3970 PRINT HN$;E$;"=( ";GN$ 3980 PRINT CL$ 3990 PRINT ,"CONGRATULATIONS ON A JOB WELL DONE. YOU HAVE" 4000 PRINT ,"DESTROYED DARTH VADER AND HIS STORM TROOPERS " 4010 PRINT ,"AND HAVE SAVED THE REBELLION.":GOTO 4070 4020 PRINT E$;"=( " 4030 PRINT CL$ 4040 PRINT ,"YOU HAVE ONLY DESTROYED";ED;"TIE FIGHTERS AND" 4050 PRINT ,"YOU LET DARTH VADER GET AWAY. OH WELL,I GUESS";GN$ 4060 PRINT ,"WE WANT HIM AROUND FOR THE SEQUEL ANYWAY!" 4070 PRINT:PRINT ,"DO YOU WANT TO PLAY AGAIN ?" 4080 A$=INPUT$(1):IF A$="Y" THEN 1950 ELSE IF A$<>"N"THEN 4080 ELSE 4090 4090 PRINT CL$ 4100 PRINT:PRINT:PRINT:PRINT:PRINT 4110 PRINT " FIGHTING EVIL CAN BE TIRING. COME BACK WHEN YOU'RE READY FOR ACTION!" 4120 END :PRINT:PRINT:PRINT:PRINT 4110 P "WHEEL" (c) D. D. Harrington Hoosier Osborne Group 1986 "WHEEL" is an MBASIC game similar to a currently popular TV game show. Any number of players and any number of games in a series may be played. The objective of the game is to solve the `unknown' in one of several catagories selected at random: TITLE, PHRASE, QUOTE, PERSON, PEOPLE, THING, EVENT The program randomly selects: (1) the first player, (2) the catagory, and (3) the value of `consonants' The players accumulate `$' for each correct `consonant' guessed during a game which he/she `wins' if he/she solves the unknown. Winnings are cummulative, and the total winnings of each player is displayed at the end of the selected series of games. A player who has accumulated at least $200 during a game is given the option of buying a vowel. To make the game more interesting, players may become BANKRUPT or LOSE a TURN if they elect not to solve the unknown. The game also keeps track of `USED LETTERS' and displays these. Players must solve the unknown when all consonants have been guessed and `ONLY VOWELS REMAIN'. ***** WARNING ***** NEVER PRESS Ctrl C (^C) WHILE THE DRIVES ARE RUNNING ..... since you may interupt the computer while it is accessing the `RANDOM.DAT' file or one of the files containing the `unknowns'. This results in a failure to `CLOSE' the file and loss of data. Thus when you attempt to run the program again, you receive an error message. If this should happen, simply exit MBASIC and use the NON-DOCUMENT mode of your text editor (WordStar, VDO, VDE, etc) to re-enter the data. Most often it is the `RANDOM.DAT' file that fails to close. This file contains only a single number which is used as a `SEED' for randomization. If on inspection the file is empty, simply enter a number (e.g. 100), followed by a carriage return , then save the file as usual.  EDITING `UNKNOWN' DATA FILES" Because the files containing the `unknowns' are text files, you can delete, add to, or modify the unknowns using your text editor in the NON-DOCUMENT mode. Just remember to change the `number' in the first line of each file to correspond to the TOTAL number of `unknowns' in the file. This is the number `WHEEL' uses to determine how many unknowns there are in the file from which it can `randomly' select. OSBORNE 1 (WHEEL-O1.BAS) vs OSBORNE EXECUTIVE (WHEEL-EX.BAS) versions Except for the main program, all files used by WHEEL are the same. The Executive version of WHEEL differs from the O-1 version in that it takes advantage of the Executive's `Windowing, Reverse Video, and `Blinking' features. Poke's to the screen also use Bank Switching. NOTE The main program contains numerous REM statements. This was done so users might take advantage of the subroutines in their development of other programs. I believe the subroutines developed in this `GAME' could be incorporated into `educational' programs. Please take advantage of them. If you wish the program to run faster, remove REM's.  unknowns there are in the file from which it can `randomly' select. OSBORNE 1 (WHEEL-O1.BAS) vs OSBORNE EXECUTIVE (WHEEL-EX.BAS) versions Except for the main program, all files used by WHEEL are the same. The Executive version of WHEEL differs from the O-1 version in that it takes advantage of the Executive's `Windowing, Reverse Video, and `Blinking' features. Poke's to the screen also use Bank Switching. NOTE The main program contains numerous REM statements. This was done so users mi10 COMMON DK$, VERSION$ 20 PRINT CHR$(26) 30 PRINT TAB(25)"Instructions for `WHEEL'" 40 PRINT:PRINT 50 PRINT"WHEEL is a game similar to a currently popular TV game show. 60 PRINT"Any number of players and any number of games in a series may 70 PRINT"be played. 80 PRINT 90 PRINT"The objective of the game is to solve the `unknown' in one of 100 PRINT"several catagories selected at random: TITLE, PHRASE, QUOTE, 110 PRINT"PERSON, PEOPLE, THING, EVENT. 120 PRINT 130 PRINT"The program randomly selects: 140 PRINT"(1) the first player, 150 PRINT"(2) the catagory, and 160 PRINT"(3) the value of `consonants' 170 PRINT 180 PRINT"The players accumulate `$' for each correct `consonant' guessed 190 PRINT"during a game which he/she `wins' if he/she solves the unknown. 200 PRINT"Winnings are cummulative, and the total winnings of each player 210 PRINT"is displayed at the end of the selected series of games. 220 PRINT 230 PRINT" 240 Z$= INKEY$ 250 IF INKEY$="" THEN 250 260 PRINT CHR$(26) 270 PRINT"A player who has accumulated at least $200 during a game is 280 PRINT"given the option of buying a vowel. 290 PRINT 300 PRINT"To make the game more interesting, players may become BANKRUPT 310 PRINT"or LOSE a TURN if they elect not to solve the unknown. 320 PRINT 330 PRINT"The game also keeps track of `USED LETTERS' and displays these. 340 PRINT 350 PRINT"Players must solve the unknown when all consonants have been guessed 360 PRINT"and `ONLY VOWELS REMAIN'. 370 PRINT 380 PRINT" 390 Z$= INKEY$ 400 IF INKEY$="" THEN 400 410 PRINT CHR$(26) 420 PRINT" **** WARNING **** 430 PRINT 440 PRINT"NEVER PRESS Ctrl C (^C) WHILE THE DRIVES ARE RUNNING since you may 450 PRINT"interupt the computer while it is accessing the `RANDOM.DAT' file or 460 PRINT"one of the files containing the `unknowns'. This results in a failure 470 PRINT"to `CLOSE' the file and loss of data. Thus when you attempt to run 480 PRINT"the program again, you receive an error message. 490 PRINT 500 PRINT"If this should happen, simply exit MBASIC and use the NON-DOCUMENT 510 PRINT"mode of your text editor (WordStar, VDO, VDE, etc) to re-enter the data. 520 PRINT"Most often it is the `RANDOM.DAT' file that fails to close. This file 530 PRINT"contains only a single number which is used as a `SEED' for randomization. 540 PRINT"If on inspection the file is empty, simply enter a number (e.g. 100), 550 PRINT"followed by a carriage return, then save the file as usual. 560 PRINT 570 PRINT" 580 Z$=INKEY$ 590 IF INKEY$="" THEN 590 600 PRINT CHR$(26) 610 PRINT" EDITING `UNKNOWN' DATA FILES" 620 PRINT 630 PRINT"Because the files containing the `unknowns' are text files, you can 640 PRINT"delete, add to, or modify the unknowns using your text editor in the 650 PRINT"NON-DOCUMENT mode. 660 PRINT"Just remember to change the `number' in the first line of each file to 670 PRINT"correspond to the TOTAL number of `unknowns' in the file. This is the 680 PRINT"number `WHEEL' uses to determine how many unknowns there are in the file 690 PRINT"from which it can `randomly' select. 700 PRINT 710 PRINT" OSBORNE 1 (WHEEL-O1.BAS) 720 PRINT" vs 730 PRINT" OSBORNE EXECUTIVE (WHEEL-EX.BAS) 740 PRINT" versions 750 PRINT 760 PRINT"Except for the main program, all files used by WHEEL are the same. 770 PRINT 780 PRINT"The Executive version of WHEEL differs from the O-1 version in that it 790 PRINT"takes advantage of the Executive's `Windowing, Reverse Video, and 800 PRINT"Blinking' features. Poke's to the screen also use Bank Switching. 810 PRINT 820 PRINT" 830 Z$= INKEY$ 840 IF INKEY$="" THEN 840 850 PRINT CHR$(26) 860 PRINT" NOTE 870 PRINT 880 PRINT"The main program contains numerous REM statements. This was done 890 PRINT"so users might take advantage of the subroutines in their development 900 PRINT"of other programs. 910 PRINT"I believe the subroutines developed in this `GAME' could be incorporated 920 PRINT"into `educational' programs. Please take advantage of them. 930 PRINT 940 PRINT"If you wish the program to run faster, remove REM's. 950 PRINT 960 PRINT" TO START GAME 970 PRINT" PRESS ANY KEY 980 Z$= INKEY$ 990 IF INKEY$="" THEN 990 995 PRINT CHR$(26) 997 PRINT " STANDBY WHILE `WHEEL' IS BEING LOADED" 1000 CHAIN DK$+":"+VERSION$,ALL HEN 990 995 PRINT CHR$(26) 997 PRINT " STANDBY WHILE `WHEEL' IS BEING LOADED" 1000 CHAIN DK$+"e Bank Switching. 810 PRINT 820 PRINT" 830 Z$= INKEY$ 840 IF INKEY$="" THEN 840 850 PRINT CHR$(26) 860 PRINT" NOTE 870 PRINT 880 PRINT"The main program contains numero43 INDEPENDENCE DAY WORLD SERIES THE OSCARS WAR OF THE ROSES MISS AMERICA PAGEANT THE STANLEY CUP PLAYOFFS EASTER SOFTBALL GAME MOTHER'S DAY LANDING OF FIRST MAN ON THE MOON SILVER WEDDING ANNIVERSARY LABOR DAY BASKETBALL PLAYOFFS WORLD WAR II VJ DAY WINTER OLYMPIC GAMES THE AMERICUS CUP RACES THE JERRY LEWIS TELETHON SOLAR ECLIPSE THE SUPER BOWEL ROYAL WEDDING HALEY'S COMET'S RETURN GRADUATION DAY FATHER'S DAY ATTACK ON PEARL HARBOR CHRISTMAS HOLIDAYS ERUPTION OF MOUNT SAINT HELEN THE GREAT SAN FRANCISCO EARTHQUAKE AMERICAN CIVIL WAR NEW YEARS DAY AMERICAN REVOLUTION NEW YEARS EVE WEDDING DAY INDIANAPOLIS FIVE-HUNDRED RACE WASHINGTON'S BIRTHDAY OLYMPIC GAMES KENTUCKY DERBY VE DAY THE SUMMER OLYMPIC GAMES SPACE SHOT HOCKEY GAME HIGH SCHOOL PROM BATTLE OF THE BULGE YMPIC GAMES KENTUCKY DERBY VE DAY THE SUMMER OLYMPIC GAMES SPACE SHOT H67 BASEBALL PLAYER BUSINESSMAN MOVIE STAR FISHERMAN GARBAGE MAN INDIANAPOLIS COLTS BROTHER-IN-LAW TRUMPET PLAYER STATE SENATOR BROTHER WEDDING GUEST DIRT FARMER BAND DIRECTOR BANK MANAGER MOUNTAIN CLIMBER MORMAN TABERNACLE CHOIR ELECTRICIAN TRAIN CONDUCTOR TELEVISION DIRECTOR HORSE BACK RIDER CARPENTER AIRLINE HOSTESS RODEO COWBOY BEAUTY CONSULTANT TEETOTALER TELEVISION PERSONALITY RADIO ANNOUNCER OCCUPATIONAL THERAPIST CIVIL ENGINEER PLUMBER COURT CLERK DOCTOR OF PHILOSOPHY GRANDFATHER SISTER-IN-LAW CHICAGO BEARS HUMAN RACE NEWS COMMENTATOR UNIVERSITY PROFESSOR DEPARTMENT STORE SALESPERSON SHORT ORDER COOK GRAVE ROBBER VETERINARIAN SUPREME COURT JUDGE SON-IN-LAW REAL ESTATE AGENT UNCLE FACTORY WORKER SECRETARY OF STATE THE SURGEON GENERAL CONSENTING ADULTS FOOTBALL COACH STATE REPRESENTATIVE SCIENCE TEACHER NEWS PAPER REPORTER HOCKEY PLAYER SISTER CONGRESSMAN CIRCUS CLOWN MOTHER-IN-LAW FREE LANCE PHOTOGRAPHER HIGH SCHOOL TEACHER WEATHER FORECASTER FATHER-IN-LAW MAN ABOUT TOWN CITY SLICKER PACIFIC ISLANDER BRITISH CITIZEN PHER HIGH SCHOOL TEACHER WEATHER FORECASTERSENATOR BROTHER WEDDING GUEST DIRT FARMER BAND DIRECTOR BANK MANAGER MOUNTAIN CLIMBER MORMAN TABERNACLE CHOIR ELECTRICIAN TRAIN CONDUCTOR TELEVISION DIRECTOR HORSE BACK RIDER CARPENTER AIRLINE HOSTESS RODEO COWBOY BEAUTY CONSULTANT TEETOTALER TELEVISION PERSONALITY RADIO ANNOUNCER OCCUPATIONAL THERAPIST CIVIL ENGINEER PLUMBER COURT CLERK DOCTOR OF PHILOSOPHY GRANDFATHER SISTER-IN-LAW CHICAGO BEARS HUMAN RACE NEWS COMMENTATOR UNIVERSITY PROFESSOR DEPARTMENT STORE SALESPERSON SHORT ORDER COOK GRAVE ROBBER VETERINARIAN SUPREME COURT JUDGE SON-IN-LAW REAL ESTATE AGENT UNCLE FACTORY WORKER SECRETARY OF STATE THE SURGEON GENERAL CONSENTING ADULTS FOOTBALL COACH STATE REPRESENTATIVE SCIENCE TEACHER NEWS PAPER REPORTER HOCKEY PLAYER SISTER CONGRESSMAN CIRCUS CLOWN MOTHER-IN-LAW FREE LANCE PHOTOGRAPHER HIGH SCHOOL TEACHER WEATHER FORECASTER34 GEORGE WASHINGTON JOHN PAUL JONES MICKEY MOUSE MISTER RODGERS WILLIAM F BUCKLEY MISTER WIPPLE JOHN Q PUBLIC MARGARET THACHER JOAN OF ARC BILL COSBY DON KNOTTS GENERAL CUSTER JONNY CARSON HENRY WINKLER CLARK GABLE ROBERT LEWIS STEVENSON TOM THUMB SANTA CLAUS DAVID LETTERMAN BIG BIRD SHERLOCK HOLMS WILL RODGERS HER MAJESTY THE QUEEN JOHN F KENNEDY WILLIAM HENRY HARRISON STEPHEN KING INDIANA JONES MICHAEL JACKSON BABE RUTH ALBERT EINSTEIN GRANDMA MOSES THE PRESIDENT OF THE UNITED STATES BOB HOPE PHIL SILVERS JONES MICHAEL JACKSON BABE RUTH ALBERT EINSTEIN GRANDMA MOSES THE PRESIDENT OF THE 99 SWEETS FOR THE SWEET YOU CAN'T TAKE IT WITH YOU AN APPLE A DAY KEEPS THE DOCTOR AWAY BITING THE BULLET LOVE OF MONEY IS THE ROOT OF ALL EVIL DON'T DO AS I DO WHAT GOES UP MUST COME DOWN KEEP A STIFF UPPER LIP DOUBLE OR NOTHING BELIEVE IT OR NOT PENNY FOR YOUR THOUGHTS STRAIGHT AS AN ARROW EVERY MAN FOR HIMSELF IT'S A DEAL IF I HAD IT TO DO OVER AGAIN HOLD YOUR HORSES I WISH I HAD A NICKEL TIN WHAT YOU CAN AND CAN WHAT YOU CAN'T TO BE OR NOT TO BE FEELING YOUR OATS YOU CAN'T TEACH AN OLD DOG NEW TRICKS MONKEY SEE MONKEY DO IN LIKE FLINN LIKE COMPARING APPLES AND ORANGES SINCERELY YOURS CLIPPED IN THE BUD GENTLEMEN START YOUR ENGINES EQUAL OPPROTUNITY EMPLOYER SLIPPERY AS AN EEL CLEAR THE DECKS UP THE CREEK WITHOUT A PADDLE LIKE BRAND NEW IT'S NO BIG DEAL GIVE IT ALL YOU'VE GOT THE GREATEST SHOW ON EARTH GIVE IT TO ME STRAIGHT KEEPING UP WITH THE JONES MAN YOUR BATTLE STATIONS PIPE DOWN THE THRILL OF VICTORY THE AND THE AGONY OF DEFEAT WOULD YOU BELIEVE I WAS'T BORN YESTERDAY IT'S A SMALL WORLD WHEN I WAS YOUR AGE MAKING A MOUNTAIN OUT OF A MOLE HILL HAVE A HAPPY DAY HOLY SMOKES I COULD'COULDN'T BELIEVE MY EYES LIKE FINDING A NEEDLE IN A HAY STACK YOU COULD HAVE FOOLED ME BREAKING THE ICE YOUR EYES ARE BIGGER THAN YOUR STOMACH SEEING IS BELIEVING LETS SHAKE ON THAT A DAYS WORK FOR A DAYS PAY IT SEEMS LIKE ONLY YESTERDAY WASTE NOT WANT NOT YOU COULD HAVE KNOCKED ME OVER WITH A FEATHER RAINING CATS AND DOGS THAT SOUNDS FISHY TO ME YOUR PULLING MY LEG HONESTY IS THE BEST POLICY BETTER LATE THAN NEVER VERY TRULY YOURS DOWN THE HATCH HERE'S MUD IN YOUR EYE PLAYING THE ODDS ITS IN THE BAG DON'T MUDDY THE WATERS HOLY TOLEDO GET TO THE POINT I'LL BE A MONKEY'S UNCLE IF YOU CAN'T SAY SOMETHING NICE I BEFORE E EXCEPT AFTER C HERE'S WHERE I GET OFF BOTTOMS UP I WOULD'T COUNT ON IT DON'T BE A SAP OUT OF THE FRYING PAN AND INTO THE FIRE LOOK BEFORE YOU LEAP SINCERELY YOURS HAPPY BIRTHDAY GETTING THE COLD SHOULDER LOVE ALWAYS CONQUERS GIVE ME A BREAK EATING YOU OUT OF HOUSE AND HOME SOME PEOPLE NEVER LEARN THERE SHE BLOWS WHERE'S THE BEEF YOU'VE GOT TO BE KIDDING BEST OF LUCK ONE FOR THE MONEY TWO FOR THE SHOW ABSENCE MAKES THE HEART GROW FONDER THERE'S NO TIME LIKE THE PRESENT WHAT'S YOUR BEEF MERRY CHRISTMAS AND HAPPY NEW YEAR WHEN IT RAINS IT POURS YOU BET YOUR LIFE WHO WOULD HAVE THOUGHT SENT WHANOT WANT NOT YOU COULD HAVE KNOCKED ME OVER WITH A FEATHER RAINING CATS AND DOGS THAT SOUNDS FISHY TO ME YOUR PULLING MY LEG HONESTY IS THE BEST POLICY BETTER LATE THAN NEVER VERY TRULY YOURS DOWN THE HATCH HERE'S MUD IN YOUR EYE PLAYING THE ODDS ITS IN THE BAG DON'T MUDDY THE WATERS HOLY TOLEDO GET TO THE POINT I'LL BE A MONKEY'S UNCLE IF YOU CAN'T SAY SOMETHING NICE I BEFORE E EXCEPT AFTER C HERE'S WHERE I GET OFF BOTTOMS UP I WOULD'T COUNT ON IT DON'T BE A SAP OUT OF THE FRYING PAN AND INTO THE FIRE LOOK BEFORE YOU LEAP SINCERELY YOURS HAPPY BIRTHDAY GETTING THE COLD SHOULDER LOVE ALWAYS CONQUERS GIVE 35 NEW YORK CITY THE FLORIDA KEYS HOLLYWOOD CALIFORNIA HARVARD UNIVERSITY LONG ISLAND NEW YORK PARIS FRANCE THE VIRGIN ISLANDS MIAMI BEACH FLORIDA THE BIG APPLE TOLEDO OHIO MISSION CONTROL PARIS FRANCE FRENCH RIVIERA THE SAHARA DESERT WALT DISNEY WORLD MEXICO CITY THE GRAND CANYON UNIVERSITY OF SOUTHERN CALIFORNIA THE GREAT SALT LAKE ATLANTIC CITY NEW JERSEY FAST FOOD RESTAURANT MOUNT SAINT HELEN KEY WEST FLORIDA SAHARA DESERT WEST LAFAYETTE INDIANA PEARL HARBOR NIAGRA FALLS NEW YORK DETROIT MICHIGAN PURDUE UNIVERSITY BEVERLY HILLS YELLOW STONE NATIONAL PARK SAN FRANCISCO THE STATE OF OHIO WALLA WALLA WASHINGTON BISMARK NORTH DAKOTA TY BEVERLY HILLS YELLOW STONE NATIONAL PARK SAN FRANCISCO THE STATE OF OHIO WALLA WAL16 THERE'S A SUCKER BORN EVERY MINUTE MANY ARE CALLED BUT FEW ARE CHOSEN MUCH ADO ABOUT NOTHING WE THE PEOPLE GIVE ME LIBERTY OR GIVE ME DEATH THE GREATEST SHOW ON EARTH FOUR SCORE AND SEVEN YEARS AGO EAST IS EAST AND WEST IS WEST PENNY WISE POUND FOOLISH NEVER THE TWAINS SHALL MEET A PENNY SAVED IS A PENNY EARNED YOU CAN FOOL SOME OF THE PEOPLE SOME OF THE TIME A FOOL AND HIS MONEY ARE SOON PARTED I NEVER MET A MAN I DIDN'T LIKE IF YOU CAN'T STAND THE HEAT GET OUT OF THE KITCHEN A BIRD IN THE HAND IS WORTH TWO IN THE BUSH EVER MET A MAN I DIDN'T LIKE IF YOU CAN'T STAND THE HEAT GET OUT OF THE KITCHEN A BIRD IN T-19926 ATRANDOM BAK s>?HVDE OM/@ABCDEPHRASE FKJETSIMB BAS$%&'()*+,-./0123JETSIMB BAS/456789LIFE COM :;LIFE INS<=LIFE AQMK>?@ABCDEFGOSZ-JEDIBASxHIJKLMNOPQRSTUVWHEEL DOCWXYZWHEEL INS&[\]^_EVENT DAT`PEOPLE DAT abPERSON DATcPHRASE DATdefPLACE DATgQUOTE DAThRANDOM $$$58 APPLE PIE HIGH SCHOOL A NOTE FROM YOUR MOTHER POWDERED DONUTS COLOR TELEVISION SET BLAZING FIRE ONE-DOLLAR BILL SCHOOL BOOKS FIRE HYDRANT FIRM HANDSHAKE THE LIBERTY BELL DINNER ENTRE JACKRABBIT BOY SCOUT TENT BEDROOM SUITE THE EMPIRE STATE BUILDING CANOPY BED FORK AND KNIFE LINEN CLOSET BALLOON PAYMENT THE STATUE OF LIBERTY SHOWER CURTAIN MUSICAL INSTRUMENTS FINGERNAIL POLISH THE WASHINGTON MONUMENT FLANNEL PAJAMAS THE ROCKY MOUNTAINS BARBECUE PIT CAR KEYS NIGHT LIGHT RUBBER BAND THE GREAT LAKES SET OF ENCYCLOPEDIA THE OLD OAKEN BUCKET HIKER'S BACK PACK POOL TABLE SPRING SHOWER BICYCLE OCEAN BEACH COMPUTER GOLF COURSE FAMILY AUTOMOBILE VACATION TRIP LAWN MOWER DOG HOUSE SWIMMING POOL BASEBALL DIAMOND COMMERCIAL AIRLINE INTERSTATE HIGHWAY ICE CREAM CONE THE MISSISSIPPI RIVER HAMBURGER PEANUT BUTTER SANDWICH HOT DOG ROLLER COASTER RIDE KITCHEN TABLE GARAGE DOOR MAPLE TREE HE MISSISSIPPI RIVER HAMBURGER PEANUT BUTTER SANDWICH HOT DOG ROLLER COAST50 THE TALE OF TWO CITIES AIRPLANE AIRPORT THE HOLY BIBLE WAR OF THE WORLDS BREAKFAST AT TIFFANY'S TO KILL A MOCKING BIRD ALICE IN WONDERLAND YOU ARE MY SUNSHINE THE BLUE AND THE GRAY AS THE WORLD TURNS AMERICAN GRAFFITI MARY POPPINS THE FRENCH CONNECTION RUDOLPH THE RED NOSE RAIN DEER ROW ROW ROW YOUR BOAT MY FAIR LADY SILENT NIGHT SINGING IN THE RAIN HARK THE HERALD ANGLES THE OLD MAN AND THE SEA ON GOLDEN POND STAR WARS DECK THE HALLS THE PRINCE AND PAUPER THE PINK PANTHER SIXTEEN CANDLES GONE WITH THE WIND ROBIN HOOD JINGLE BELLS REBEL WITHOUT A CAUSE RAIDER OF THE LOST ARK SEVEN BRIDES FOR SEVEN BROTHERS A MIDSUMMER'S NIGHT DREAM TREASURE ISLAND EAST OF EDEN OKLAHOMA NINETY-NINE BOTTLES OF BEER ON THE WALL CHARIOTS OF FIRE BLACK BEAUTY OLD MCDONALD HAD A FARM KING KONG THE KING AND I THE ODD COUPLE WAR AND PEACE FIDDLER ON THE ROOF PARADISE LOST HENRY THE VIII HOUSE OF SEVEN GABLES THE KARATE KID D I THE ODD COUPLE WAR AND PEACE FIDDLER ON THE ROOF 10 COMMON DK$, VERSION$ :REM - COMMON VARIABLES FOR CHAINING TO INSTRUCTIONS 20 VERSION$="WHEEL-EX.BAS" 30 CLS$=CHR$(26) :REM - CLEAR SCREEN 40 ESC$=CHR$(27) :REM - ESCAPE 50 SET$=ESC$+"s" :REM - `SET' USED TO SET WINDOWS 60 H$=CHR$(96) :REM - `BLOCK' GRAPHIC CHARACTER 70 REM ---------------------------------- 80 REM DEFINE VARIOUS EXECUTIVE WINDOWS 90 REM 100 W0$=ESC$+"s"+"0" :REM - SET WINDOW "0" (FULL SCREEN) 110 PRINT ESC$+"z"+"1"+CHR$(10+32)+CHR$(42+32)+CHR$(11+32)+CHR$(61+32) :REM- #1 120 PRINT ESC$+"z"+"2"+CHR$(10+32)+CHR$(62+32)+CHR$(11+32)+CHR$(80+32) :REM- #2 130 PRINT ESC$+"z"+"3"+CHR$(11+32)+CHR$(0+32)+CHR$(24+32)+CHR$(80+32) :REM- #3 140 PRINT ESC$+"z"+"4"+CHR$(8+32)+CHR$(62+32)+CHR$(14+32)+CHR$(80+32) :REM- #4 150 REM ---------------------------------- 160 REM `SIGN ON MESSAGE' 170 PRINT W0$ 180 PRINT CLS$ 190 PRINT TAB(30) ESC$+"g" H$H$H$H$H$H$H$H$H$H$H$H$H$H$H$H$H$H$H$H$H$ ESC$+"G" 200 PRINT TAB(30) ESC$+"g" H$H$H$H$H$H$H$ ESC$+"G" " WHEEL " ESC$+"g" H$H$H$H$H$H$H$ ESC$+"G" 210 PRINT TAB(30) ESC$+"g" H$H$H$H$H$H$H$H$H$H$H$H$H$H$H$H$H$H$H$H$H$ ESC$+"G" 220 PRINT:PRINT:PRINT:PRINT TAB(19) "Osborne Executive, Version EXC 1.0, 1/20/86 230 PRINT:PRINT:PRINT:PRINT TAB(30) ESC$+"g" CHR$(19) ESC$+"G" " By D. D. Harrington 240 PRINT TAB(30) "Hoosier Osborne Group 250 FOR Z=1 TO 8:PRINT:NEXT 260 INPUT "Which Drive contains the `WHEEL' game and `Data' disk (A/B) :";DK$ 270 IF DK$="" THEN 260 280 IF ASC(DK$)>91 THEN DK$=CHR$(ASC(DK$)-32) :REM- CONVERT TO UPPER CASE 290 'IF DK$<>"A" AND DK$<>"B" THEN PRINT "Enter A or B": GOTO 260 300 INPUT"DO YOU NEED INSTRUCTIONS (Y/N)";YN$ 310 IF YN$="Y" OR YN$="y" THEN 320 ELSE 330 320 CHAIN DK$+":WHEEL.INS",ALL 330 REM ---------------------------------- 340 PRINT W0$ :REM - SET WINDOW "0" (FULL SCREEN) 350 REM- ROUTINE TO GET NEW PLAYERS NAMES 360 PRINT CLS$ 370 INPUT "HOW MANY PLAYERS: ";Y% 380 IF Y%<1 THEN PRINT "ENTER THE `NUMBER' OF PLAYER":GOTO 370 390 REM ---------------------------------- 400 REM- ROUTINE TO SELECT NUMBER OF GAMES `GM' TO PLAY 410 REM 420 PRINT:INPUT "HOW MANY GAMES DO YOU WANT TO PLAY IN THIS ROUND";GM 430 IF GM<1 THEN PRINT "ENTER `NUMBER' OF GAMES":GOTO 420 440 G1=1 :REM- SET INITIAL GAME = #1 450 REM ----------------------------------- 460 REM- ROUTINE TO GET NAMES OF PLAYERS 470 REM 480 PRINT 490 FOR PX= 1 TO Y% 500 PRINT "ENTER NAME OF PLAYER #"PX" BELOW:" 510 INPUT PL$(PX) 520 NEXT 530 PRINT:PRINT 540 REM ---------------------------------- 550 REM- INITIALIZE NEW GAME 560 REM 570 PRINT TAB(13) ESC$+"j" "PLEASE STANDBY WHILE NAMES ARE SAVED AND RANDOMIZED" ESC$+"k" 580 GOSUB 3500 :REM- SUBROUTINE TO RANDOMIZE PLAYERS TO BE SELECTED 590 PRINT:PRINT TAB(26) ESC$+")" ESC$+"^"ESC$+"j" " PLAYER #";PX;" WILL GO FIRST. " ESC$+"k" ESC$+"q" ESC$+"(" :FOR K=1 TO 3000:NEXT 600 CT%= 1 :REM- CT% IS PLAYER INPUT LETTER CKECKER. INITIALLY SET TO 610 REM- ZERO SO CPU WILL PRINT BLANKS ON SCREEN 620 REM------------------------------------ 630 PRINT:PRINT TAB(19) ESC$+"j" "PLEASE STANDBY FOR SELECTION OF CATEGORY" ESC$+"k" 640 REM ------------------------------------------------ 650 DIM UL(26) :REM- ARRAY FOR USED LETTERS = A, B, C, ..... Z (26 LETTERS) 660 REM 670 REM -------------------------------- 680 REM- ROUINTE TO SELECT CATEGORY 690 REM 700 GOSUB 3380 :REM- GO GET RANDOM NUMBER 710 RD=INT(8*RND) :REM- `8' CATAGORIES 720 IF RD >8 OR RD <=0 THEN 700 730 REM- USE RANDOM (RD) TO SELECT FILE$ (CATEGORY) TO OPEN 740 IF RD=1 THEN FILE$ ="TITLE" 750 IF RD=2 THEN FILE$ ="EVENT" 760 IF RD=3 THEN FILE$ ="PEOPLE" 770 IF RD=4 THEN FILE$ ="PHRASE" 780 IF RD=5 THEN FILE$ ="PLACE" 790 IF RD=6 THEN FILE$ ="THING" 800 IF RD=7 THEN FILE$ ="PERSON" 810 IF RD=8 THEN FILE$ ="QUOTE" 820 REM --------------------------------- 830 REM- ROUTINE TO 1st GET NUMBER OF RECORDS (I%) FROM DISK FILE, 840 REM THEN TO READ INDIVIDUAL RECORDS (D$) FROM DISK FILE 850 REM 860 REM- OPEN UP SEQUENTIAL FILE NAMED FILE$ 870 OPEN "I", #1, DK$+":"+ FILE$+".DAT" 880 REM- 1st `RECORD' GIVES NUMBER OF RECORDS IN FILE 890 INPUT #1, I% :REM- I% = NUMBER OF RECORDS IN FILE 900 REM- NOW READ INDIVIDUAL RECORDS INTO ARRAY D$(Z) 910 DIM D$(I%) 920 FOR Z = 1 TO I% 930 INPUT #1, D$(Z) 940 NEXT Z 950 CLOSE #1 960 REM ---------------------------------- 970 REM- ROUTINE TO SELECT ONE OF RECORDS FROM FILE$ FOR GAME 980 REM USING RANDOM NUMBER 990 REM 1000 GOSUB 3380 :REM- GET RANDOM NUMBER 1010 IR%= I% :REM- IR% USED TO GENERATE RANDOM NUMBER 1020 REM- GENERATE RANDOM NUMBER 1030 RD=INT(IR%*RND) 1040 IF RD > I% OR RD <=0 THEN 1000 :REM- SEE IF EXCEEDS NUMBER OF RECORDS; IF SO GET NEW RANDOM NUMBER 1050 REM- SET CATEGORY ITEM C$ = TO SELECTED RECORD (D$(RD)) 1060 C$ = D$(RD) 1070 REM ----------------------------------- 1080 REM- ROUTINE TO COUNT NUMBER OF CHARACTERS IN SELECTED ITEM C$ 1090 REM 1100 L%=LEN(C$) 1110 REM ----------------------------------- 1120 REM- DEMINSION ARRAY A$ EQUAL TO NUMBER OF CHARACTERS IN ITEM C$ AND 1130 REM PUT IN ITEM C$ (NEED THIS ARRAY FOR COMPARISON TO ARRAY W$ BELOW) 1140 REM 1150 DIM A$(L%) 1160 FOR K=1 TO L% 1170 A$(K)= MID$(C$,K,1) 1180 NEXT K 1190 REM ----------------------------------- 1200 REM- DEMINSION 2nd ARRAY W$ EQUAL TO NUMBER OF CHARACTER IN ITEM C$ 1210 REM TO BE USED TO PUT IN `BLANKS', HYPHENS, ETC FOR SCREEN DISPLAY 1220 REM 1230 DIM W$(L%) 1240 FOR K=1 TO L% 1250 REM 1260 REM- IF CHARACTER IN C$ IS A `LETTER', PRINT A `BLANK' ON SCREEN 1270 IF MID$(C$,K,1)>=CHR$(65) AND MID$(C$,K,1)<=CHR$(90) THEN W$(K)=CHR$(95) 1280 REM- IF CHARACTER IN C$ IS A `DASH', PRINT A `DASH' 1290 IF MID$(C$,K,1) = CHR$(45) THEN W$(K)=CHR$(45) 1300 REM- IF CHARACTER IN C$ IS A `HYPHEN', PRINT A `HYPHEN' 1310 IF MID$(C$,K,1) = CHR$(39) THEN W$(K)=CHR$(39) 1320 REM- IF CHARACTER IN C$ IS A `SPACE', PRINT A `SPACE' 1330 IF MID$(C$,K,1) = CHR$(32) THEN W$(K)=CHR$(32) 1340 NEXT 1350 REM ---------------------------------- 1360 REM- ROUTINE TO PRINT CURRENT PLAYER & WINNINGS ON SCREEN 1370 REM 1380 TU$="" :REM- RESET TU$ `BANKRUPT/LOSE TURN' = `NULL' 1390 GOSUB 4020 :REM- GET NEW VALUE S1% FOR EACH CORRECT LETTER 1400 PRINT CLS$ 1410 PRINT W0$ :REM- SET WINDOW #0 1420 PRINT CLS$ :REM- CLEAR SCREEN FOR NEXT PLAYER IF USE WINDOWS 1430 GOSUB 5380 :REM- WINDOW #4 & PRINT "WHEEL VALUE" 1440 PRINT W0$ :REM- SET WINDOW #0 1450 PRINT "CURRENT PLAYER: "ESC$+"^" ESC$+"l" ;PL$(PX) ESC$+"q" ESC$+"m" ; TAB(67) "GAME #";G1 1460 PRINT "CURRENT SCORE SO FAR THIS ROUND: $";S1%(PX) 1470 REM ---------------------------------- 1480 REM- ROUTINE TO PRINT BLANKS AND CHARACTERS ON SCREEN 1490 REM- CT%= 0 WHEN PLAYER READY TO INPUT A LETTER 1500 REM- GOSUB 47000 :REM- WINDOW #0 1510 PRINT:PRINT 1520 PRINT TAB(15) 1530 FOR K=1 TO L% 1540 IF W$(K)=CHR$(95) AND A$(K)=N$ THEN CT%=1 :REM- CORRECT GUESS !! 1550 IF W$(K)=CHR$(95) AND A$(K)=N$ THEN W$(K)=N$ 1560 IF W$(K)=CHR$(95) AND W$(K)<>N$ THEN W$(K)=CHR$(95) 1570 IF W$(K)=CHR$(39) THEN W$(K)=CHR$(39) 1580 IF W$(K)=CHR$(32) THEN W$(K)=CHR$(32) 1590 PRINT W$(K); :REM- THIS PRINT THE CHARACTER 1600 NEXT K 1610 REM ----------------------------- 1620 REM- ROUTINE TO PRINT CATEGORY 1630 REM 1640 PRINT:PRINT 1650 PRINT TAB(15) 1660 PRINT "CATEGORY: ";FILE$ 1670 REM ----------------------------- 1680 REM- ROUTINE TO ASK PLAYER TO SPIN WHEEL 1690 REM 1700 IF CT%= 0 THEN 2200 :REM- INCORRECT LETTER INPUT 1710 IF SI%(PX)= 0 AND CK$= "ONLY VOWELS REMAINING" THEN GOTO 2050 1720 REM ----------------------------- 1730 PRINT 1740 INPUT "DO YOU WANT TO `SOLVE' IT (Y/N): ";YN$ 1750 IF YN$="y" THEN YN$="Y" 1760 IF YN$<>"Y" THEN N$= "" :REM- RESET FOR PREVIOUS VOWEL ENTRY 1770 IF YN$<>"Y" THEN SP$= "SPINNING WHEEL --->" 1780 IF YN$="Y" THEN GOSUB 4760 :REM- PRINT USED LETTERS 1790 IF YN$="Y" THEN 2400 1800 REM ----------------------------- 1810 REM- ROUTINE TO ASK PLAYER IF WANTS TO 1820 REM BUY VOWEL IF HE HAS AT LEAST $200 1830 REM 1840 IF S1%(PX)>199 THEN 1860 ELSE 1910 1850 REM PRINT 1860 INPUT "DO YOU WANT TO BUY A `VOWEL' (Y/N): ";YN$ 1870 IF YN$="y" THEN YN$="Y" 1880 IF YN$<>"Y" THEN SP$= "SPINNING WHEEL --->" 1890 IF YN$="Y" THEN GOSUB 4760 :REM- PRINT USED LETTERS 1900 IF YN$="Y" THEN 2930 ELSE 1910 1910 REM ----------------------------- 1920 REM- ROUTINE TO SET "SPINNING WHEEL .." MESSAGE 1930 REM TO `NULL' ("") IF VOWEL SELECTED 1940 REM 1950 IF CT%= 0 THEN SP$= "" :REM- DON'T PRINT "SPINNING.." IF GUESS WRONG LETTER 1960 REM --------------------------- 1970 REM- ROUTINE TP CHECK IF `ONLY VOWELS REMAINING'. 1980 REM IF SO, PLAYER REQUIRED TO `SOLVE' QUESTION. 1990 GOSUB 4620 :REM- SUBROUTINE TO CHECK FOR NUMBER OF VOWELS LEFT 2000 IF CK$= "ONLY VOWELS REMAINING" THEN GOSUB 4740 :REM- PRINT `USE LETTERS' 2010 PRINT 2020 IF CK$= "ONLY VOWELS REMAINING" GOTO 2410 2030 REM ---------------------------- 2040 REM- PRINT "SPINNING WHEEL .." (SP$) IF APPROPRIATE 2050 GOSUB 5050 :REM- WINDOW #1, "SPINNING WHEEL" MESSAGE 2060 GOSUB 3740 :REM- GET NEW VALUE OF CONSONANT 2070 GOSUB 5140 :REM- SPIN WHEEL SUBROUTINE 2080 IF SI%(PX)= 0 AND CK$= "ONLY VOWELS REMAINING" THEN GOTO 1990 2090 REM FOR K= 1 TO 1000 :NEXT :REM - LEAVE MESSAGE ON FOR AWHILE 2100 REM ---------------------------- 2110 REM- CHECK "TU$" FOR "BANKRUPT/LOOSE TURN" 2120 REM AND TAKE APPROPRIATE ACTION IF SO 2130 IF TU$= " BANKRUPT" THEN GOTO 4170 2140 IF TU$= "LOSE TURN" THEN GOTO 4260 2150 FOR K= 1 TO 3000 :NEXT :REM- LEAVE MESSAGE ON FOR AWHILE 2160 REM PRINT 2170 IF CT%= 0 THEN 2200 :REM- NO PRINT VALUE IF GUESS INCORRECT 2180 REM IF NS%=1 THEN VC= VV :REM- NS%=1 MEANS VOWEL; NO CHANGE IN VC "$"; VV= ORIGINAL VALUE (VC) OF CONSONANT BEFORE SELECTED VOWEL 2190 PRINT "VALUE OF CONSONANTS IS "ESC$+"j""$";VC ESC$+"k":REM- PRINT VALUE OF CONSONANTS 2200 REM ----------------------------- 2210 REM- ROUTINE TO SEE IF PLAYER GUESSED A CORRECT LETTER. 2220 REM IF SO THEN THEN CT%=1 & PLAYER GETS ANOTHER GUESS. 2230 IF CT%=1 THEN 2290 2240 IF N$<>"" AND CT%<>1 THEN PRINT:PRINT:PRINT:PRINT:PRINT:PRINT ESC$+"^" " SORRY, NO LETTER `";N$;"' OR LETTER USED ALREADY ... YOU LOSE YOUR TURN ..." ESC$+"q":PRINT CHR$(7) : DP$= "" : AV$= "" : FOR K= 1 TO 5000: NEXT 2250 REM 2260 GOSUB 3740 :REM- GET NEW VALUE FOR CONSTANT FOR NEXT PLAYER 2270 GOTO 2820 :REM- NEXT PLAYER 2280 PRINT 2290 REM ----------------------------- 2300 REM- ROUTINE TO PRINT `USED LETTERS' 2310 REM 2320 GOSUB 4760 :REM- SUBROUTINE TO PRINT `USED LETTERS' 2330 REM ----------------------------- 2340 REM- ROUTINE TO CHECK IF PLAYER WANTS 2350 REM TO `SOLVE' OR ENTER A `CHARACTER' 2360 REM 2370 REM- ROUTINE TO SEE IF PLAYER WANT TO SOLVE 2380 REM PRINT:PRINT 2390 GOTO 2870 :REM- TEMPORARY BY-PASS TO REQUEST CONSONANT 2400 PRINT 2410 PRINT:PRINT ESC$+"j" "TYPE IN YOUR ANSWER `EXACTLY' BELOW USING `UPPER CASE LETTERS ONLY'" ESC$+"k" 2420 PRINT TAB(15): INPUT X$ 2430 REM ------------------------------ 2440 REM- CHECK IF ANSWER IS CORRECT & UPDATE PLAYERS WINNINGS 2450 IF S1%(PX)= 0 AND CK$= "ONLY VOWELS REMAINING" THEN S1%(PX)= VC 2460 IF X$=C$ THEN PRINT:PRINT TAB(20) ESC$+"^""YOU WIN !!! $";S1%(PX) ESC$+"q" ELSE 2770 :REM-- ELSE = "WRONG" 2470 FOR K= 1 TO 5: PRINT CHR$(7) :NEXT :REM- RING BELL 2480 FOR K= 1 TO 4000: NEXT :REM- LEAVE MESSAGE ON FOR AWHILE 2490 PRINT CLS$ :REM- CLEAR SCREEN FOR NEXT CATEGORY & PLAYER 2500 REM- WINNINGS = CURRENT VALUE WN%(PX) 2510 GOSUB 4150 :REM- UPDATE WINNINGS CURRENT PLAYER 2520 REM- ALL PLAYERS START WITH $0 FOR NEXT ROUND 2530 FOR K= 1 TO Y% 2540 S1%(K)=0 2550 NEXT 2560 REM -------------------------------- 2570 REM- ADD 1 TO GM; IF MAX, THEN PRINT FINAL SCORE PLAYERS 2580 REM G1 IS THE GAME COUNTER; GM IS MAX. NUMBER OF GAMES 2590 REM 2600 G1= G1+ 1: IF G1> GM THEN 2610 ELSE 2720 2610 REM FOR K= 1 TO 4000: NEXT 2620 REM PRINT CHR$(26) :REM- CLEAR SCREEN & GET NEW CATEGORY 2630 GOSUB 3660 :REM- PRINT PLAYERS & FINAL WINNINGS 2640 INPUT"DO YOU WANT TO PLAY AGAIN (Y/N)";YN$ 2650 IF ASC(YN$)>91 THEN YN$=CHR$(ASC(YN$) :REM- CONVERT TO UPPER CASE 2660 IF YN$<>"Y" AND YN$<>"N" THEN 2640 2670 IF YN$="N" THEN PRINT SET$+"0" :REM- SET WINDOW #0 2680 IF YN$="N" THEN END ELSE 2690 2690 CLS$:RESTORE: CLEAR: GOTO 330 :REM- CLEAR ALL & START NEW GAME 2700 GOSUB 3580 :REM- GET NUMBER OF NEXT PLAYER 2710 REM- IF WIN THEN USE THIS ROUTINE TO GET NEW PLAYER (PL$(PX)), HIS CURRENT SCORE & NEW CATEGORY 2720 PRINT CLS$ :REM- CHEAR SCREEN 2730 GOSUB 3580 :REM- NEXT PLAYERS TURN 2740 ERASE D$, A$, W$, UL :N$= "" :REM- CLEAR ARRAYS FOR NEXT ITEM 2750 GOTO 630 :REM- SELECT NEW CATEGORY 2760 REM -------------------------------- 2770 PRINT:PRINT TAB(35) ESC$+"j" ESC$+")" ESC$+"^" " WRONG !!! " ESC$+"q" ESC$+"(" ESC$+"k" 2780 PRINT CHR$(7) CHR$(7) CHR$(7) :FOR J= 1 TO 4500 :NEXT 2790 REM -------------------------------- 2800 REM- ROUTINE TO GET NEXT PLAYER 2810 REM 2820 REM NX$= "NEW PLAYER" :REM- USE SO `N$' NOT CARRIED OVER 2830 N$= "" :REM- RESET INPUT `N$' = `NULL' 2840 CT%= 1 :REM- TEMP. RESET SO PLAYER GETS SAME QUESTION 2850 GOSUB 3580 :REM- NEXT PLAYERS TURN 2860 GOTO 1400 :REM- NEXT PLAYER CONTINUES ON SAME ITEM 2870 REM -------------------------------- 2880 CT%= 0 :REM- SET LETTER CHECKER = 0 BEFORE NEXT PLAYER STARTS TURN 2890 REM -------------------------------- 2900 REM- ROUTINE TO ALLOW SELECTION OF `VOWEL' IF PLAYER HAS $200 2910 REM 2920 GOTO 3180 :REM- TEMP BY-PASS REQUEST FOR VOWEL 2930 S1%(PX)= S1%(PX)- 200 :REM- SUTRACT 200 FROM CURRENT GAME SCORE 2940 PRINT:PRINT: INPUT "WHICH `VOWEL' DO YOU WANT: ";N$ 2950 IF ASC(N$)>91 THEN N$=CHR$(ASC(N$)-32) :REM- CONVERT TO UPPER CASE 2960 IF N$= "" THEN 2940 :REM- NEEDS TO ENTER SOMETHING 2970 IF N$<>"A" AND N$<>"E" AND N$<>"I" AND N$<>"O" AND N$<>"U" THEN GOTO 3090 2980 REM -------------------------------- 2990 REM- ROUTINE TO CHECK & ADD CHARACTERS TO `USED LETTER' ARRAY 3000 REM 3010 GOSUB 4380 :REM- SUBROUTINE FOR USED LETTER ARRAY `UL' 3020 GOSUB 4840 :REM- SUBROUTINE TO CHECK FOR `DUPLICATE VOWEL' INPUT 3030 GOSUB 4970 :REM- SUBROUTINE TO CHECK `ABSENTS OF VOWEL' INPUTED 3040 IF DP$="DUPLICATE" THEN PRINT ESC$+"^" "THAT VOWEL HAS BEEN USED BEFORE... SORRY ";PL$(PX)" ... YOU LOSE YOUR TURN ..." ESC$+"q":GOTO 3110 3050 GOTO 1350 3060 REM -------------------------------- 3070 REM- ERROR MESSAGE & LOSS OF TURN IF ASKED FOR VOWEL & INPUT CONSONANT 3080 REM 3090 PRINT:PRINT ESC$+"^" "YOU INDICATED YOU WANTED A VOWEL ...." 3100 PRINT:PRINT "SORRY ";PL$(PX)", YOU LOSE YOUR TURN ..." ESC$+"q" 3110 PRINT CHR$(7) :REM- RING BELL 3120 FOR K= 1 TO 5500 :NEXT :REM- LEAVE MESSAGE ON AWHILE 3130 N$= "" :REM- RESET LETTER INPUT N$ TO `NULL' FOR NEXT PLAYER 3140 GOTO 2790 :REM- GET NEXT PLAYER 3150 REM -------------------------------- 3160 REM- ROUTINE TO ASK FOR CONSONANT 3170 REM 3180 PRINT:PRINT:INPUT "ENTER CONSONANT: ";N$ 3190 IF ASC(N$)>91 THEN N$=CHR$(ASC(N$)-32) :REM- CONVERT TO UPPER CASE 3200 IF N$= "" THEN 3180 :REM- NEEDS TO ENTER SOMETHING 3210 REM -------------------------------- 3220 REM- ROUTINE TO CHECK & ADD CHARACTERS TO `USED LETTER' ARRAY 3230 REM 3240 IF N$="A" OR N$="E" OR N$="I" OR N$="O" OR N$="U" THEN GOTO 3300 3250 GOSUB 4380 :REM- SUBROUTINE FOR USED LETTER ARRAY `UL' 3260 IF N$="A" OR N$="E" OR N$="I" OR N$="U" THEN 3300 ELSE GOTO 1350 3270 REM -------------------------------- 3280 REM- ERROR MESSAGE & LOSS OF TURN IF ASKED CONSONANT & INPUT VOWEL 3290 REM 3300 PRINT:PRINT ESC$+"^" "YOU SHOULD HAVE ENTERED A CONSONANT ...." 3310 PRINT:PRINT "SORRY, YOU LOSE YOUR TURN ..." ESC$+"q":PRINT CHR$(7):FOR K=1 TO 5500: NEXT K:N$="" : GOTO 2790 :REM -- GO TO NEXT PLAYER 3320 REM -------------------------------- 3330 REM- RANDOM NUMBER GENERATING SUBROUTINE 3340 REM FROM "PORTABLE COMPANION" 3350 REM SEPTEMBER, 1983 3360 REM PAGES 36-37 3370 REM 3380 OPEN "I", #1, DK$+":"+"RANDOM.DAT" 3390 INPUT #1, SEED 3400 CLOSE #1 3410 RANDOMIZE (SEED) 3420 SEED=SEED+1: IF SEED=>30000 THEN SEED=-30000 3430 OPEN "O", #1, DK$+":"+"RANDOM.DAT 3440 PRINT #1, SEED 3450 CLOSE #1 3460 RETURN 3470 REM -------------------------------- 3480 REM- SUBROUTINE TO RANDOMIZE PLAYERS 3490 REM Y% = NUMBERS OF PLAYERS 3500 GOSUB 3380 3510 PX= INT(100*RND) 3520 IF PX<=0 OR PX>Y% THEN 3510 3530 REM- PX IS NUMBER IF PLAYER SELECTED 3540 RETURN 3550 REM -------------------------------- 3560 REM- SUBROUTINE TO SELECT NEXT PLAYER 3570 REM 3580 PX= PX+ 1 3590 IF PX > Y% THEN PX= 1 3600 RETURN 3610 REM -------------------------------- 3620 REM 3630 REM- SUBROUTINE TO LIST FINAL SCORE 3640 REM OF ALL PLAYERS AT END OF GAME 3650 REM 3660 PRINT CLS$ 3670 FOR PX= 1 TO Y% 3680 PRINT "PLAYER: ";PL$(PX);", WINNINGS: $";WN%(PX) 3690 NEXT 3700 RETURN 3710 REM -------------------------------- 3720 REM- SUBROUTINE TO DETERMINE VALUE OF 3730 REM CONSONANTS RANDOMONLY 3740 GOSUB 3380 :REM- GET RANDOM NUMBER 3750 WH= INT(100*RND) 3760 IF WH>=1 AND WH<=10 THEN VC= 100 3770 IF WH>=11 AND WH<=20 THEN VC= 150 3780 IF WH>=21 AND WH<=25 THEN TU$= "LOSE TURN" 3790 IF WH>=26 AND WH<=30 THEN VC= 200 3800 IF WH>=31 AND WH<=40 THEN VC= 300 3810 IF WH>=41 AND WH<=50 THEN VC= 400 3820 IF WH>=51 AND WH<=55 THEN VC= 500 3830 IF WH>=56 AND WH<=60 THEN VC= 550 3840 IF WH>=61 AND WH<=65 THEN VC= 600 3850 IF WH>=66 AND WH<=70 THEN VC= 700 3860 IF WH>=71 AND WH<=75 THEN VC= 800 3870 IF WH>=76 AND WH<=80 THEN VC= 900 3880 IF WH>=81 AND WH<=85 THEN VC= 1000 3890 IF WH>=86 AND WH<=88 THEN VC= 5000 3900 IF WH>=89 AND WH<=95 THEN TU$= " BANKRUPT" :REM- BANKRUPT 3910 IF WH>=96 AND WH<=100 THEN TU$= "LOSE TURN" :REM- LOSE TURN 3920 RETURN 3930 REM -------------------------------- 3940 REM- SUBROUTINE TO `ZERO' PLAYER PL$(PX)'S 3950 REM CURRENT ROUND SCORE DUE TO `BANKRUPT' 3960 REM 3970 S1%(PX)=0 3980 RETURN 3990 REM -------------------------------- 4000 REM- SUBROUTINE TO CALCULATE VALUE 4010 REM OF CORRECTLY ENTERED LETTERS 4020 IF TU$<>"" THEN N$= "" :REM - NO CREDIT IF BANKRUPT/LOOSE TURN 4030 IF N$="A" OR N$="E" OR N$="I" OR N$="O" OR N$="U" THEN SP$= "" :REM- DON'T PRINT "SPINNING WHEEL ....." MESSAGE FOR VOWELS 4040 IF N$="A" OR N$="E" OR N$="I" OR N$="O" OR N$="U" THEN VV= VC :REM- USEVV TO PRINT SAME VALUE FOR CONSONAT AS BEFORE SINCE VOWEL SELECTED 4050 IF N$="A" OR N$="E" OR N$="I" OR N$="O" OR N$="U" THEN VC= 0 :REM- NO CREDIT FOR VOWELS 4060 FOR K= 1 TO L% 4070 IF W$(K)=CHR$(95) AND A$(K)=N$ THEN S1%(PX) = S1%(PX) + VC 4080 NEXT 4090 RETURN 4100 REM -------------------------------- 4110 REM- KEEP TRACK OF WINNINGS AS GO FROM 4120 REM ONE GAME TO NEXT 4130 REM 4140 REM WN%(PX)= WINNINGS OF PLAYER PX 4150 WN%(PX)= WN%(PX) + S1%(PX) 4160 RETURN 4170 REM -------------------------------- 4180 REM- ROUTINE FOR `BANKRUPT' 4190 REM 4200 PRINT CHR$(7) :REM- RING BELL 4210 PRINT:PRINT ESC$+"^" "SORRY ";PL$(PX);" ... BAD LUCK ... YOUR'RE BANKRUPT !! ....." ESC$+"q" 4220 FOR K= 1 TO 5000:NEXT :REM- LEAVE MESSAGE FOR AWHILE 4230 S1%(PX)= 0 :REM- ZERO PLAYER'S SCORE FOR THIS ROUND 4240 TU$= "" :REM- RESET TU$ TO `NULL' 4250 GOTO 2780 4260 REM -------------------------------- 4270 REM- ROUTINE FOR `LOSE TURN' 4280 REM 4290 PRINT CHR$(7) :REM- RING BELL 4300 PRINT:PRINT ESC$+"^" "TOUGH LUCK ";PL$(PX);" ... YOU LOSE YOUR TURN ...." ESC$+"q" 4310 FOR K= 1 TO 5000: NEXT :REM- LEAVE MESSAGE ON FOR AWHILE 4320 TU$= "" :REM- RESET TU$ TO `NULL' 4330 GOTO 2780 :REM- NEXT PLAYER 4340 REM -------------------------------- 4350 REM- SUBROUTINE SERIES TO ADD CHARACTERS 4360 REM- TO `USED LETTER' (UL) ARRAY, AND CONVERT 4370 REM- INPUT LETTER N$ TO ASCII DECIMAL # 4380 A = (ASC(N$)-64) 4390 REM- COUNT NUMBER OF CHARACTERS CURRENTLY IN ARRAY UL 4400 Z= 0 :REM- RESET LETTER COUNTER `Z' TO ZERO 4410 FOR K= 1 TO 26 :REM- 26 LETTERS; `A' CAN BE 1 TO 26 4420 IF UL(K)<>0 THEN Z= Z+1 4430 NEXT 4440 REM- NOW ADD `NEW' LETTER TO ARRAY UL IF NOT PRESENT 4450 ND$= "" :REM- RESET 4460 FOR K= 1 TO Z+1 :REM- ONE MORE THAN NOW PRESENT 4470 IF UL(K)<>0 AND UL(K)=A THEN ND$= "DUPLICATE" 4480 IF UL(K)<>0 AND UL(K)=A THEN K= Z+1 4490 IF UL(K)<>0 AND UL(K)=A THEN GOTO 4510 4500 IF UL(K)<>A AND UL(K)=0 THEN UL(K)=A 4510 NEXT K 4520 REM- SET COUNTER `LT' USED IN PRINT ROUTINE 4530 LT= Z+1 4540 IF ND$= "DUPLICATE" THEN LT= Z 4550 IF ND$= "DUPLICATE" THEN UL(Z+1)= 0 :REM- RESET TO `0' 4560 RETURN 4570 REM -------------------------------- 4580 REM- SUBROUTINE TO SEE IF ONLY 4590 REM VOWELS LEFT IN UNKNOWN. IF SO 4600 REM PLAYER `MUST SOLVE' UNKNOWN 4610 REM 4620 CK$= "" :REM- RESET `CK$' TO `NULL' 4630 BK= 0 :REM- `BK' = NUMBER OF BLANK SPACES LEFT. RESET TO `0' 4640 FOR K= 1 TO L% 4650 IF W$(K)= CHR$(95) AND A$(K)<>"A" AND A$(K)<>"E" AND A$(K)<>"I" AND A$(K)<>"O" AND A$(K)<>"U" THEN BK= BK+1 4660 IF A$(K)= CHR$(45) OR A$(K)= CHR$(32) OR A$(K)= CHR$(39) THEN BK=BK 4670 IF W$(K)= CHR$(45) OR W$(K)= CHR$(32) OR W$(K)= CHR$(39) THEN BK=BK 4680 NEXT K 4690 IF BK>0 THEN CK$= "" ELSE CK$= "ONLY VOWELS REMAINING" 4700 IF CK$= "ONLY VOWELS REMAINING" THEN PRINT CHR$(7) :REM- RING BELL 4710 IF CK$= "ONLY VOWELS REMAINING" THEN PRINT:PRINT ESC$+"j" TAB(5) "ALL REMAINING LETTERS ARE VOWELS. YOU MUST NOW SOLVE IT." ESC$+"k" 4720 IF CK$= "ONLY VOWELS REMAINING" THEN PRINT :REM- LINE FEED 4730 RETURN 4740 REM -------------------------------- 4750 REM- SUBROUTINE TO PRINT `USED LETTERS' 4760 PRINT:PRINT "USED LETTERS: "; 4770 FOR K= 1 TO LT :REM- LT = LETTER COUNTER 4780 IF UL(K)<>0 THEN PRINT CHR$(UL(K) + 64)" "; 4790 NEXT 4800 RETURN 4810 REM -------------------------------- 4820 REM- SUBROUTINE TO CHECK FOR DUPLICATION 4830 REM OF `VOWEL' INPUT BY PLAYER 4840 DP$="" :REM- INITIALIZE DP$ = `NULL' AT BEGINNING 4850 FOR K= 1 TO L% 4860 IF W$(K)="A" AND N$="A" THEN DP$="DUPLICATE" 4870 IF W$(K)="E" AND N$="E" THEN DP$="DUPLICATE" 4880 IF W$(K)="I" AND N$="I" THEN DP$="DUPLICATE" 4890 IF W$(K)="O" AND N$="O" THEN DP$="DUPLICATE" 4900 IF W$(K)="U" AND N$="U" THEN DP$="DUPLICATE" 4910 NEXT 4920 IF DP$="DUPLICATE" THEN CT%=1 4930 RETURN 4940 REM -------------------------------- 4950 REM- SUROUTINE TO CKECK FOR INPUT OF 4960 REM A `VOWEL' NOT PRESENT IN UNKNOWN 4970 CT%= 0 4980 FOR K= 1 TO L% 4990 IF N$=A$(K) THEN CT%= 1 5000 NEXT 5010 RETURN 5020 REM -------------------------------- 5030 REM- EXECUTIVE WINDOW #1 5040 REM- USED FOR "SPINNING WHEEL --->" MESSAGE 5050 PRINT ESC$+"^" :REM- START BLINK MODE 5060 PRINT SET$+"1" :REM - SET WINDOW #1 5070 PRINT SP$ 5080 PRINT SET$+"0" :REM- SET WINDOW #0 5090 PRINT ESC$+"q" :REM- END BLINK MODE 5100 RETURN 5110 REM -------------------------------- 5120 REM- EXECUTIVE WINDOW #2 5130 REM 5140 PRINT ESC$+"j" :REM- START INVERSE 5150 PRINT ESC$+"."+"0" :REM- START INVISIBLE CURSOR 5160 PRINT SET$+"2" :REM - SET WINDOW #2 5170 GOSUB 5520 5180 IF TU$<>"" THEN PRINT ">"TU$ 5190 IF TU$="" AND VC<1000 THEN PRINT "> "VC 5200 IF TU$="" AND VC>900 THEN PRINT "> "VC 5210 PRINT SET$+"1" :REM - SET WINDOW #1 5220 PRINT" " :REM- BLANK WINDOW #1 5230 PRINT ESC$+"."+"4" :REM- START UNDERLINE CURSOR 5240 GOSUB 5300 :REM- TURN ON WINDOW #3 5250 RETURN 5260 REM 5270 REM --------------------------- 5280 REM- EXECUTIVE WINDOW #3 5290 REM 5300 PRINT SET$+"3" :REM- SET WINDOW #3 5310 PRINT ESC$+"k" :REM- END INVERSE MODE 5320 PRINT CLS$ 5330 REM 5340 RETURN 5350 REM -------------------------------- 5360 REM- EXECUTIVE WINDOW #4 5370 REM 5380 PRINT ESC$+"j" :REM- START INVERSE MODE 5390 PRINT ESC$+")" :REM- START DIM MODE 5400 PRINT SET$+"4" :REM - SET WINDOW #4 5410 PRINT " WHEEL " 5420 PRINT " VALUE " 5430 PRINT "$$$$$$$$$$" 5440 PRINT ESC$+"q" :REM- END BLINK 5450 PRINT ESC$+"(" :REM- END DIM MODE 5460 PRINT ESC$+"k" :REM- END INVERSE MODE 5470 RETURN 5480 REM -------------------------------- 5490 REM- SUBROUTINE TO PRINT "WHEEL VALUES" IN 5500 REM WINDOW #2 (SIMULATE RANDOM SELECTION ON SCREEN) 5510 REM 5520 FOR K=1 TO 2 5530 PRINT "> 100":FOR K1=1 TO 200:NEXT:PRINT 5540 PRINT "> 150":FOR K1=1 TO 200:NEXT:PRINT 5550 PRINT ">LOSE TURN":FOR K1=1 TO 200:NEXT:PRINT 5560 PRINT "> 200":FOR K1=1 TO 200:NEXT:PRINT 5570 PRINT "> 1000":FOR K1=1 TO 200:NEXT:PRINT 5580 PRINT "> 300":FOR K1=1 TO 200:NEXT:PRINT 5590 PRINT "> 400":FOR K1=1 TO 200:NEXT:PRINT 5600 PRINT "> BANKRUPT":FOR K1=1 TO 200:NEXT:PRINT 5610 PRINT "> 500":FOR K1=1 TO 200:NEXT:PRINT 5620 PRINT "> 550":FOR K1=1 TO 200:NEXT:PRINT 5630 PRINT "> 600":FOR K1=1 TO 200:NEXT:PRINT 5640 PRINT "> 700":FOR K1=1 TO 200:NEXT:PRINT 5650 PRINT ">LOSE TURN":FOR K1=1 TO 200:NEXT:PRINT 5660 PRINT "> 800":FOR K1=1 TO 200:NEXT:PRINT 5670 PRINT "> 900":FOR K1=1 TO 200:NEXT:PRINT 5680 PRINT "> 1000":FOR K1=1 TO 200:NEXT:PRINT 5690 PRINT "> 200":FOR K1=1 TO 200:NEXT:PRINT 5700 PRINT "> 5000":FOR K1=1 TO 200:NEXT:PRINT 5710 PRINT "> BANKRUPT":FOR K1=1 TO 200:NEXT:PRINT 5720 PRINT ">LOSE TURN":FOR K1=1 TO 200:NEXT:PRINT 5730 PRINT "> 400":FOR K1=1 TO 200:NEXT:PRINT 5740 NEXT 5750 RETURN 5760 REM -------------------------------- 5770 END 5780 REM -------------------------------- 5790 REM ------ VARIABLES ------ 5800 REM 5810 REM' Y% = NUMBER OF PLAYERS 5820 REM' K = `COUNTER' USED IN VARIOUS `FOR/NEXT' LOOPS IN PROGRAM 5830 REM' A = VARIABLE USED IN `USED LETTER' SUBROUTINE 5840 REM' Z = VARIABLE USED IN `USED LETTER' SUBROUTINE 5850 REM' LT = COUNTER USED IN `USED LETTER' SUBROUTINE TO `PRINT USED LETTERS' 5860 REM' BK = COUNTER USED IN `USED/UNUSED VOWELS' SUBROUTINE 5870 REM' PL$(PX) = NAMES OF INDIVIDUAL PLAYERS 5880 REM' PX = PLAYER NUMBER 5890 REM' S1%(PX) = CUMMULATIVE SCORE OF PLAYER `PX' DURING `CURRENT GAME' 5900 REM' WN%(PX) = TOTAL `WINNINGS' PLAYER `PX' WON IN ALL GAMES `CURRENT SERIES' 5910 REM' RD = RANDOM NUMBER GENERATED & USED IN VARIOUS ROUTINES 5920 REM' FILE$ = FILE NAME OF CATEGORY SELECTED RANDOMLY 5930 REM' I% = FIRST ITEM (AN INTEGER) IN ALL CATEGORY DATA FILES WHICH INDICATE 5940 REM' TOTAL NUMBER OF ITEMS IN THE CATEGORY. I% USED TO SELECT ITEMS RANDOMLY 5950 REM' C$ = "UNKNOWN ITEM" (PHRASE, TITLE, ETC.) SELECTED FROM CATEGORY `FILE$' 5960 REM' A$ = "STRING ARRAY" IDENTICAL TO `C$' USED WITH W$ ARRAY TO PRINT UNKNOWN 5970 REM' W$ = "STRING ARRAY" USED TO PRINT `BLANKS, LETTERS, HYPHEN ..." ON SCREEN 5980 REM' X$ = `SOLVE' INPUT BY PLAYER. IS COMPARED TO `C$' TO SEE IF CORRECT 5990 REM' N$ = `GUESSED LETTER' INPUTED BY PLAYER 6000 REM' D$(RD) = TEMPORARY ITEM IDENIFICATION USED DURING SELECTION. C$ = D$(RD) 6010 REM' L% = NUMBER OF CHARACTERS, SPACES, ETC IN SELECTED ITEM 6020 REM' GM = GAME NUMBER 6030 REM' NS% = TOGGLE SET TO `1' IF VOWEL SELECTED SO NO CHANGE IN VALUE CONSONANT 6040 REM' VC = RANDOM SELECTION NUMBER OF `VALUE' FOR CONSONANTS 6050 REM' VV = `VALUE' OF CONSONANT WHEN `VOWEL' SELECTED BY PLAYER 6060 REM' WH = VARIABLE USED IN RANDOM CONSONANT `VALUE' SELECTION PROCESS 6070 REM' CT% = TOGGLE. CT% = 1 IF CORRECT LETTER `GUESS', ELSE CT% = 0 6080 REM' UL(26) = "DIMENSIONED ARRAY" USED TO LIST `USED LETTERS' (ALPHABET) 6090 REM' YN$ = `YES/NO' RESPONSE BY PLAYER TO VARIOUS QUESTIONS 6100 REM' TU$ = SET TO "BANKRUPT" OR "LOSE TURN" ON RANDOM `WHEEL' (WH) `SPIN' 6110 REM' DP$ = TOGGLE USED TO INDICATE "DUPLICATE" (USED) VOWEL INPUT 6120 REM' SP$ = "SPINNING ..........' MESSAGE --> RANDOM `VALUE' SELECTION PROCESS 6130 REM' CK$ = TOGGLE SET TO "ONLY VOWELS REMAIN" & FORCES PLAYER TO SOLVE 6140 REM' ND$ = TOGGLE FOR "DUPLICATE" USED IN `USED LETTER' SUBROUTINE 6150 REM' CLS$ = CLEAR SCREEN 6160 REM' ESC$ = ESCAPE 6170 REM' H$ = `BLOCK' GRAPHIC CHARACTER FOR `SIGN ON MESSAGE' 6180 REM' W0$, W1$, W2$, W3$, W4$ = VARIOUS EXECUTVE `WINDOWS' VALUE' OF CONSONANT WHEN `VOWEL' SELECTED BY PLAYER 6060 REM' WH = VARIABLE USED IN RANDOM CONSONANT `VALUE' SELECTION PROCESS 6070 REM' CT% = TOGGLE. CT% = 1 IF CORRECT LETTER `GUESS', ELSE CT% = 0 6080 REM' UL(26) = "DIMENSIONED ARRAY" USED TO LIST `USED LETTERS' (ALPHABET) 6090 REM' YN$ = `YES/NO' RESPONSE BY PLAYER TO VARIOUS QUESTIONS 6100 REM' TU$ = SET TO "BANKRUPT" OR "LOSE TURN" ON RANDOM `WHEEL' (WH) `SPIN' 6110 REM' DP$ = TOGGLE USED TO INDICATE "DUPLICATE" (USED) VOWEL INPUT 6120 REM' SP$ = "SPINNING ..........' MESSAGE --> RANDOM `VALUE' SELECTION PROCESS 6130 REM' CK$ = TOGGLE SET TO "ONLY VOWELS REMAIN" & FORCES PLAYER TO SOLVE 6140 REM' ND$ = TOGGLE FOR "DUPLICATE" USED IN `USED LETTER' SUBROUTINE 6150 REM' CLS$ = CLEAR SCREEN 616010 COMMON DK$, VERSION$ :REM- COMMON VARIABLES USE IN CHAINING TO INSTRUCTIONS 20 VERSION$="WHEEL-O1.BAS" 30 ESC$=CHR$(27) 40 CLS$=CHR$(26) 50 PRINT CLS$ 55 REM ------------ 56 REM SIGN-ON MESSAGE 57 REM 60 PRINT TAB(30) "*********************" 70 PRINT TAB(30)"******* WHEEL *******" 80 PRINT TAB(30)"*********************" 90 PRINT:PRINT TAB(22)"Osborne 1, Vesion OSB-1.10, 1/20/86 100 PRINT:PRINT:PRINT:PRINT TAB(29) "(c) By D. D. Harrington" 110 PRINT TAB(30) "Hoosier Osborne Group" 120 FOR Z=1 TO 8:PRINT:NEXT 130 INPUT "Which Drive contains the `WHEEL' game and `DATA' disk (A/B) :";DK$ 140 IF ASC(DK$)>91 THEN DK$=CHR$(ASC(DK$)-32) :REM- CONVERT TO UPPER CASE 150 'IF DK$<>"A" AND DK$<>"B" THEN PRINT "Enter A or B": GOTO 130 160 INPUT"DO YOU NEED INSTRUCTIONS (Y/N)";YN$ 170 IF YN$="Y" OR YN$="y" THEN 180 ELSE 200 180 ' 190 CHAIN DK$+":WHEEL.INS",ALL 200 REM ------------ 210 REM - START OF MAIN PROGRAM 220 PRINT CLS$ 230 REM: - ROUTINE TO GET NEW PLAYERS NAMES 240 PRINT CLS$ 250 INPUT "HOW MANY PLAYERS: ";Y% 260 IF Y%<=0 THEN 250 270 REM ------------ 280 REM: - ROUTINE TO SELECT NUMBER OF GAMES `GM' TO PLAY 290 PRINT:INPUT "HOW MANY GAMES DO YOU WANT TO PLAY IN THIS ROUND";GM 300 IF GM<1 THEN 290 310 G1=1 :REM -- SET INITIAL GAME = #1 320 PRINT 330 FOR PX= 1 TO Y% 340 PRINT "ENTER NAME OF PLAYER #"PX" BELOW:" 350 INPUT PL$(PX) 360 IF PL$(PX)="" THEN 340 370 NEXT 380 PRINT:PRINT 390 REM ------------ 400 REM - INITIALIZE NEW GAME 410 PRINT TAB(13) "PLEASE STANDBY WHILE NAMES ARE SAVED AND RANDOMIZED" 420 GOSUB 3150 :REM - SUBROUTINE TO RANDOMIZE PLAYERS TO BE SELECTED 430 PRINT:PRINT TAB(25) ESC$+")"" PLAYER #";PX;" WILL GO FIRST." ESC$+"(" :FOR K=1 TO 1000:NEXT 440 CT%= 1 :REM - CT% IS PLAYER INPUT LETTER CKECKER. INITIALLY SET TO 450 REM ZERO SO CPU WILL PRINT BLANKS ON SCREEN 460 REM ------------- 470 PRINT:PRINT TAB(19) "PLEASE STANDBY FOR SELECTION OF CATEGORY" 480 REM ------------- 490 DIM UL(26) :REM -- ARRAY FOR USED LETTERS = A, B, C, ..... Z (26 LETTERS) 500 REM 510 REM - ROUINTE TO SELECT CATEGORY 520 GOSUB 2950 :REM - GO GET RANDOM NUMBER 530 RD=INT(8*RND) :REM - `8' CATAGORIES 540 IF RD>8 OR RD <=0 THEN 520 550 REM - USE RANDOM (RD) TO SELECT FILE$ (CATEGORY) TO OPEN 560 IF RD=1 THEN FILE$ ="TITLE" 570 IF RD=2 THEN FILE$ ="EVENT" 580 IF RD=3 THEN FILE$ ="PEOPLE" 590 IF RD=4 THEN FILE$ ="PHRASE" 600 IF RD=5 THEN FILE$ ="PLACE" 610 IF RD=6 THEN FILE$ ="THING" 620 IF RD=7 THEN FILE$ ="PERSON" 630 IF RD=8 THEN FILE$ ="QUOTE" 640 REM ------------- 650 REM - ROUTINE TO 1st GET NUMBER OF RECORDS (I%) FROM DISK FILE, 660 REM THEN TO READ INDIVIDUAL RECORDS (D$) FROM DISK FILE 670 REM - OPEN UP SEQUENTIAL FILE NAMED FILE$ 680 OPEN "I", #1, DK$+":"+FILE$+".DAT" 690 REM - 1st `RECORD' GIVES NUMBER OF RECORDS IN FILE 700 INPUT #1, I% :REM - I% = NUMBER OF RECORDS IN FILE 710 REM - NOW READ INDIVIDUAL RECORDS INTO ARRAY D$(Z) 720 DIM D$(I%) 730 FOR Z = 1 TO I% 740 INPUT #1, D$(Z) 750 NEXT Z 760 CLOSE #1 770 REM ------------- 780 REM - ROUTINE TO SELECT ONE OF RECORDS FROM FILE$ FOR GAME 790 REM USING RANDOM NUMBER 800 GOSUB 2950 :REM - GET RANDOM NUMBER 810 IR%= I% :REM - IR% USED TO GENERATE RANDOM NUMBER 820 REM - GENERATE RANDOM NUMBER 830 RD=INT(IR%*RND) 840 IF RD > I% OR RD <=0 THEN 800 :REM - SEE IF EXCEEDS NUMBER OF RECORDS; IF SO GET NEW RANDOM NUMBER 850 REM - SET CATEGORY ITEM C$ = TO SELECTED RECORD (D$(RD)) 860 C$ = D$(RD) 870 REM ------------- 880 REM - ROUTINE TO COUNT NUMBER OF CHARACTERS IN SELECTED ITEM C$ 890 L%=LEN(C$) 900 REM ------------- 910 REM - DEMINSION ARRAY A$ EQUAL TO NUMBER OF CHARACTERS IN ITEM C$ AND 920 REM PUT IN ITEM C$ (NEED THIS ARRAY FOR COMPARISON TO ARRAY W$ BELOW) 930 DIM A$(L%) 940 FOR K=1 TO L% 950 A$(K)= MID$(C$,K,1) 960 NEXT K 970 REM ------------- 980 REM - DEMINSION 2nd ARRAY W$ EQUAL TO NUMBER OF CHARACTER IN ITEM C$ 990 REM TO BE USED TO PUT IN `BLANKS', HYPHENS, ETC FOR SCREEN DISPLAY 1000 DIM W$(L%) 1010 FOR K=1 TO L% 1020 REM ------------- 1030 REM - IF CHARACTER IN C$ IS A `LETTER', PRINT A `BLANK' ON SCREEN 1040 IF MID$(C$,K,1)>=CHR$(65) AND MID$(C$,K,1)<=CHR$(90) THEN W$(K)=CHR$(95) 1050 REM - IF CHARACTER IN C$ IS A `DASH', PRINT A `DASH' 1060 IF MID$(C$,K,1) = CHR$(45) THEN W$(K)=CHR$(45) 1070 REM IF CHARACTER IN C$ IS A `HYPHEN', PRINT A `HYPHEN' 1080 IF MID$(C$,K,1) = CHR$(39) THEN W$(K)=CHR$(39) 1090 REM - IF CHARACTER IN C$ IS A `SPACE', PRINT A `SPACE' 1100 IF MID$(C$,K,1) = CHR$(32) THEN W$(K)=CHR$(32) 1110 NEXT 1120 REM ------------- 1130 REM - ROUTINE TO PRINT CURRENT PLAYER & WINNINGS ON SCREEN 1140 TU$="" :REM - RESET TU$ `BANKRUPT/LOSE TURN' = `NULL' 1150 GOSUB 3670 :REM - GET NEW VALUE S1% FOR EACH CORRECT LETTER 1160 PRINT CLS$ 1170 PRINT "CURRENT PLAYER: " ESC$+")" ;PL$(PX) ESC$+"(" ; TAB(67) "GAME #";G1 1180 GOSUB 3410 :REM - GET VALUE OF CONSTANT 1190 PRINT "CURRENT SCORE SO FAR THIS ROUND: $";S1%(PX) 1200 REM ------------- 1210 REM - ROUTINE TO PRINT BLANKS AND CHARACTERS ON SCREEN 1220 REM - CT%= 0 WHEN PLAYER READY TO INPUT A LETTER 1230 PRINT:PRINT:PRINT 1240 PRINT TAB(15) 1250 FOR K=1 TO L% 1260 IF W$(K)=CHR$(95) AND A$(K)=N$ THEN CT%=1 :REM - CORRECT GUESS !! 1270 IF W$(K)=CHR$(95) AND A$(K)=N$ THEN W$(K)=N$ 1280 IF W$(K)=CHR$(95) AND W$(K)<>N$ THEN W$(K)=CHR$(95) 1290 IF W$(K)=CHR$(39) THEN W$(K)=CHR$(39) 1300 IF W$(K)=CHR$(32) THEN W$(K)=CHR$(32) 1310 PRINT W$(K); :REM - THIS PRINT THE CHARACTER 1320 NEXT K 1330 REM - ROUTINE TO PRINT CATEGORY 1340 REM 1350 PRINT:PRINT 1360 PRINT TAB(15) 1370 PRINT "CATEGORY: ";FILE$ 1380 REM ------------- 1390 REM - ROUTINE TO ASK PLAYER TO SPIN WHEEL 1400 REM 1410 IF CT%= 0 THEN GOTO 1930 :REM - INCORRECT LETTER SELECTED 1420 IF S1%(PX)= 0 AND CK$= "ONLY VOWELS REMAINING" THEN 1760 1430 REM ------------- 1440 PRINT 1450 INPUT "DO YOU WANT TO `SOLVE' IT (Y/N): ";YN$ 1460 LI$="" :REM - RESET 1470 IF YN$<>"Y" THEN N$= "" :REM - RESET FOR PREVIOUS VOWEL ENTRY 1480 IF YN$<>"Y" THEN SP$= "SPINNING WHEEL ------------------->" 1490 IF YN$="Y" THEN GOSUB 4400 :REM - PRINT USED LETTERS 1500 IF YN$="Y" THEN 2120 1510 REM ------------- 1520 REM - ROUTINE TO ASK PLAYER IF WANTS TO 1530 REM BUY VOWEL IF HE HAS AT LEAST $200 1540 REM 1550 IF S1%(PX)>199 THEN GOTO 1570 ELSE 1620 1560 PRINT 1570 INPUT "DO YOU WANT TO BUY A `VOWEL' (Y/N): ";YN$ 1575 IF YN$="y" THEN YN$="Y" 1580 LI$="TRUE" 1590 IF YN$<>"Y" THEN SP$= "SPINNING WHEEL ------------------>" 1600 IF YN$="Y" THEN GOSUB 4400 :REM - PRINT USED LETTERS 1610 IF YN$="Y" THEN 2600 ELSE 1620 1620 REM ------------- 1630 REM - ROUTINE TO SET "SPINNING WHEEL .." MESSAGE 1640 REM TO `NULL' ("") IF VOWEL SELECTED 1650 REM 1660 IF CT%= 0 THEN SP$= "" :REM - NO PRINT "SPINNING.." IF GUESS WRONG LETTER 1670 REM ------------- 1680 REM - ROUTINE TP CHECK IF `ONLY VOWELS REMAINING'. 1690 REM IF SO, PLAYER REQUIRED TO `SOLVE' QUESTION. 1700 GOSUB 4280 :REM - SUBROUTINE TO CHECK FOR NUMBER OF VOWELS LEFT 1710 IF CK$= "ONLY VOWELS REMAINING" THEN GOSUB 4400 :REM - PRINT `USE LETTERS' 1720 PRINT 1730 IF CK$= "ONLY VOWELS REMAINING" GOTO 2130 1740 REM ------------- 1750 REM - PRINT "SPINNING WHEEL .." (SP$) IF APPROPRIATE 1760 IF LI$="TRUE" THEN GOTO 1770 ELSE 1800 1770 PRINT ESC$+")" SP$ ESC$+"(" 1780 LI$="FALSE" 1790 GOTO 1810 1800 PRINT:PRINT ESC$+")" SP$ ESC$+"(" 1810 GOSUB 4710 :REM - SUBROUTINE TO POKE "SIMULATE" WHEEL SELECTION 1820 IF S1%(PX)= 0 AND CK$= "ONLY VOWELS REMAINING" THEN GOTO 1700 1830 FOR K= 1 TO 1000 :NEXT :REM - LEAVE MESSAGE ON FOR AWHILE 1840 REM ------------- 1850 REM - CHECK "TU$" FOR "BANKRUPT/LOSE TURN" 1860 REM AND TAKE APPROPRIATE ACTION IF SO 1870 IF TU$= " BANKRUPT" THEN GOTO 3840 1880 IF TU$= "LOSE TURN" THEN GOTO 3920 1890 FOR K= 1 TO 3000 :NEXT :REM - LEAVE MESSAGE ON FOR AWHILE 1900 PRINT 1910 IF CT%= 0 THEN GOTO 1930 :REM - NO PRINT VALUE IF GUESS INCORRECT 1920 PRINT "VALUE OF CONSONANTS IS " ESC$+")" "$" ;VC ESC$+"(" :REM - PRINT VALUE OF CONSONANTS 1930 REM -------------   1940 REM - ROUTINE TO SEE IF PLAYER GUESSED A CORRECT LETTER. IF SO THEN 1950 REM THEN CT%=1 AND PLAYER GETS ANOTHER GUESS ! 1960 IF CT%=1 THEN GOTO 2020 1970 IF N$<>"" AND CT%<>1 THEN PRINT:PRINT " SORRY, NO LETTER `";N$;"' OR LETTER USED ALREADY ... YOU LOSE YOUR TURN ..." :PRINT CHR$(7) : DP$= "" : AV$= "" : FOR K= 1 TO 5000: NEXT 1980 ' 1990 GOSUB 3430 :REM - GET NEW VALUE FOR CONSTANT FOR NEXT PLAYER 2000 GOTO 2500 :REM - NEXT PLAYER 2010 PRINT 2020 REM ------------- 2030 REM - ROUTINE TO PRINT `USED LETTERS' 2040 REM 2050 GOSUB 4400 :REM - SUBROUTINE TO PRINT `USED LETTERS' 2060 REM ------------- 2070 REM - ROUTINE TO CHECK IF PLAYER WANTS 2080 REM TO `SOLVE' OR ENTER A `CHARACTER' 2090 REM 2100 REM - ROUTINE TO SEE IF PLAYER WANT TO SOLVE 2110 GOTO 2540 :REM - TEMPORARY BY-PASS TO REQUEST CONSONANT 2120 PRINT 2130 PRINT:PRINT ESC$+")" "TYPE IN YOUR ANSWER `EXACTLY' BELOW USING `UPPER CASE LETTERS'" ESC$+"(" 2140 PRINT TAB(15): INPUT X$ 2150 REM ------------- 2160 REM - CHECK IF ANSWER IS CORRECT & UPDATE PLAYERS WINNINGS 2170 IF X$=C$ THEN PRINT:PRINT TAB(20) " YOU WIN !!! $";S1%(PX) ELSE GOTO 2450 :REM - ELSE = "WRONG" 2180 FOR K= 1 TO 10: PRINT CHR$(7) :NEXT :REM - RING BELL 2190 FOR Z=1 TO 5000: NEXT :REM - LEAVE MESSAGE ON AWHILE 2200 REM - WINNINGS = CURRENT VALUE M1%(PX) 2210 GOSUB 3780 :REM - UPDATE WINNINGS THIS PLAYER 2220 REM - ALL PLAYERS START WITH $0 FOR NEXT ROUND 2230 FOR K= 1 TO Y% 2240 S1%(K)=0 2250 NEXT 2260 REM ------------- 2270 REM - ADD 1 TO GM; IF MAX, THEN PRINT FINAL SCORE PLAYERS 2280 REM - G1 IS THE GAME COUNTER; GM IS MAX. NUMBER OF GAMES 2290 REM 2300 G1= G1+ 1: IF G1> GM THEN 2310 ELSE 2400 2310 PRINT:FOR K= 1 TO 4000: NEXT 2320 PRINT CLS$ :REM - CLEAR SCREEN & GET NEW CATEGORY 2330 PRINT: GOSUB 3320 :REM - PRINT PLAYERS & FINAL WINNINGS 2340 INPUT "DO YOU WANT TO PLAY AGAIN (Y/N)";YN$ 2345 IF ASC(YN$)>91 THEN YN$=(CHR$(ASC(YN$)-32) :REM-CONVERT TO UPPER CASE 2350 IF YN$<>"Y" AND YN$<>"N" THEN 2340 2360 IF YN$="N" THEN END ELSE 2370 2370 CLS$:RESTORE: CLEAR: GOTO 240 :REM - CLEAR ALL & START NEW GAME 2380 GOSUB 3210 :REM - GET NUMBER OF NEXT PLAYER 2390 REM - IF WIN THEN USE THIS ROUTINE TO GET NEW PLAYER (PL$(PX)), HIS CURRENT SCORE & NEW CATEGORY 2400 GOSUB 3210 :REM - NEXT PLAYERS TURN 2410 ERASE D$, A$, W$, UL :N$= "" :REM - CLEAR ARRAYS FOR NEXT ITEM 2420 PRINT CLS$ :REM - CLEAR SCREEN FOR NEXT PLAYER 2430 GOTO 460 :REM - SELECT NEW CATEGORY 2440 REM ------------- 2450 PRINT:PRINT TAB(35) ESC$+")" " WRONG !!! " ESC$+"(" :REM - PLAYER BLEW IT 2460 PRINT CHR$(7) :FOR J= 1 TO 2500 :NEXT 2470 REM ------------- 2480 REM - ROUTINE TO GET NEXT PLAYER 2490 REM 2500 N$= "" :REM - RESET INPUT `N$' = `NULL' 2510 CT%= 1 :REM - TEMP. RESET SO PLAYER GETS SAME QUESTION 2520 GOSUB 3210 :REM - NEXT PLAYERS TURN 2530 GOTO 1160 :REM - NEXT PLAYER CONTINUES ON SAME ITEM 2540 REM ------------- 2550 CT%= 0 :REM - SET LETTER CHECKER = 0 BEFORE NEXT PLAYER STARTS TURN 2560 REM ------------- 2570 REM - ROUTINE TO ALLOW SELECTION OF `VOWEL' IF PLAYER HAS $200 2580 REM 2590 GOTO 2830 :REM - TEMP BY-PASS REQUEST FOR VOWEL 2600 S1%(PX)= S1%(PX)- 200 :REM - SUTRACT 200 FROM CURRENT GAME SCORE 2610 PRINT: PRINT:INPUT "WHICH `VOWEL' DO YOU WANT: ";N$ 2620 IF ASC(N$)>91 THEN N$=CHR$(ASC(N$)-32) :REM- CONVERT TO UPPER CASE 2630 IF N$= "" THEN 2610 :REM - NEEDS TO ENTER SOMETHING 2640 IF N$<>"A" AND N$<>"E" AND N$<>"I" AND N$<>"O" AND N$<>"U" THEN GOTO 2740 2650 REM - ROUTINE TO CHECK & ADD CHARACTERS TO `USED LETTER' ARRAY 2660 GOSUB 4000 :REM - SUBROUTINE FOR USED LETTER ARRAY `UL' 2670 GOSUB 4470 :REM - SUBROUTINE TO CHECK FOR `DUPLICATE VOWEL' INPUT 2680 GOSUB 4600 :REM - SUBROUTINE TO CHECK `ABSENTS OF VOWEL' INPUTED 2690 IF DP$="DUPLICATE" THEN PRINT:PRINT "THAT VOWEL HAS BEEN USED BEFORE ... SORRY ";PL$(PX)" ... YOU LOSE YOUR TURN ..." :GOTO 2760 2700 GOTO 1120 2710 REM ------------- 2720 REM - ERROR MESSAGE & LOSS OF TURN IF ASKED FOR VOWEL & INPUT CONSONANT 2730 REM 2740 PRINT:PRINT "YOU INDICATED YOU WANTED A VOWEL ...." 2750 PRINT:PRINT " SORRY, ";PL$(PX)", YOU LOSE YOUR TURN .... " 2760 PRINT CHR$(7) :REM - RING BELL 2770 FOR K= 1 TO 5000 :NEXT :REM - LEAVE MESSAGE ON AWHILE 2780 N$= "" :REM - RESET LETTER INPUT N$ TO `NULL' FOR NEXT PLAYER 2790 GOTO 2470 :REM - GET NEXT PLAYER 2800 REM ------------- 2810 REM - ROUTINE TO ASK FOR CONSONANT 2820 REM 2830 PRINT:PRINT:INPUT "ENTER CONSONANT: ";N$ 2840 IF ASC(N$)>91 THEN N$=CHR$(ASC(N$)-32) :REM- CONVERT TO UPPER CASE 2850 IF N$= "" THEN 2830 :REM - NEEDS TO ENTER SOMETHING 2860 REM - ROUTINE TO CHECK & ADD CHARACTERS TO `USED LETTER' ARRAY 2870 IF N$="A" OR N$="E" OR N$="I" OR N$="O" OR N$="U" THEN GOTO 2930 2880 GOSUB 4000 :REM - SUBROUTINE FOR USED LETTER ARRAY `UL' 2890 GOTO 1120 2900 REM ------------- 2910 REM - ERROR MESSAGE & LOSS OF TURN IF ASKED CONSONANT & INPUT VOWEL 2920 REM 2930 PRINT:PRINT "YOU SHOULD HAVE ENTERED A CONSONANT ...." 2940 PRINT:PRINT "SORRY, Y!OU LOSE YOUR TURN ..." :PRINT CHR$(7):FOR K=1 TO 5500: NEXT K:N$="" : GOTO 2470 :REM - GO TO NEXT PLAYER 2950 REM ------------- 2960 REM - RANDOM NUMBER GENERATING SUBROUTINE 2970 REM FROM "PORTABLE COMPANION" 2980 REM SEPTEMBER, 1983 2990 REM PAGES 36-37 3000 REM ------------- 3010 OPEN "I", #1, DK$+":"+"RANDOM.DAT" 3020 INPUT #1, SEED 3030 CLOSE #1 3040 RANDOMIZE (SEED) 3050 SEED=SEED+1: IF SEED=>30000 THEN SEED=-30000 3060 OPEN "O", #1, DK$+":"+"RANDOM.DAT 3070 PRINT #1, SEED 3080 CLOSE #1 3090 RETURN 3100 REM 3110 REM 3120 REM ------------- 3130 REM - SUBROUTINE TO RANDOMIZE PLAYERS 3140 REM Y% = NUMBERS OF PLAYERS 3150 GOSUB 3010 3160 PX= INT(100*RND) 3170 IF PX<=0 OR PX>Y% THEN 3160 3180 REM - PX IS NUMBER IF PLAYER SELECTED 3190 RETURN 3200 REM 3210 REM ------------- 3220 REM - SUBROUTINE TO SELECT NEXT PLAYER 3230 REM 3240 PX= PX+ 1 3250 IF PX > Y% THEN PX= 1 3260 RETURN 3270 REM 3280 REM ------------- 3290 REM - SUBROUTINE TO LIST FINAL SCORE 3300 REM OF ALL PLAYERS AT END OF GAME 3310 REM 3320 PRINT CLS$ 3330 FOR PX= 1 TO Y% 3340 PRINT "PLAYER: ";PL$(PX);", WINNINGS: $";WN%(PX) 3350 NEXT 3360 RETURN 3370 REM 3380 REM ------------- 3390 REM - SUBROUTINE TO DETERMINE VALUE OF 3400 REM CONSONANTS RANDOMONLY 3410 REM 3420 GOSUB 2950 :REM - GET RANDOM NUMBER 3430 WH= INT(100*RND) 3440 IF WH<1 OR WH>100 THEN GOTO 3420 3450 IF WH>=1 AND WH<=10 THEN VC= 100 3460 IF WH>=11 AND WH<=20 THEN VC= 150 3470 IF WH>=21 AND WH<=25 THEN TU$= "LOSE TURN" 3480 IF WH>=26 AND WH<=30 THEN VC= 200 3490 IF WH>=31 AND WH<=40 THEN VC= 300 3500 IF WH>=41 AND WH<=50 THEN VC= 400 3510 IF WH>=51 AND WH<=55 THEN VC= 500 3520 IF WH>=56 AND WH<=60 THEN VC= 550 3530 IF WH>=61 AND WH<=65 THEN VC= 600 3540 IF WH>=66 AND WH<=70 THEN VC= 700 3550 IF WH>=71 AND WH<=75 THEN VC= 800 3560 IF WH>=76 AND WH<=80 THEN VC= 900 3570 IF WH>=81 AND WH<=85 THEN VC= 1000 3580 IF WH>=86 AND WH<=88 THEN VC= 5000 3590 IF WH>=89 AND WH<=95 THEN TU$= " BANKRUPT" :REM -- BANKRUPT 3600 IF WH>=96 AND WH<=100 THEN TU$= "LOSE TURN" :REM -- LOSE TURN 3610 RETURN 3620 REM ------------- 3630 REM - SUBROUTINE TO `ZERO' PLAYER PL$(PX)'S 3640 REM CURRENT ROUND SCORE DUE TO `BANKRUPT' 3650 S1%(PX)=0 3660 RETURN 3670 REM ------------- 3680 REM - SUBROUTINE TO CALCULATE VALUE 3690 REM OF CORRECTLY ENTERED LETTERS 3700 IF TU$<>"" THEN N$= "" :REM - NO CREDIT IF BANKRUPT/LOSE TURN 3710 IF N$="A" OR N$="E" OR N$="I" OR N$="O" OR N$="U" THEN SP$= "" :REM - DON'T PRINT "SPINNING WHEEL ....." MESSAGE FOR VOWELS 3720 IF N$="A" OR N$="E" OR N$="I" OR N$="O" OR N$="U" THEN VV= VC :REM - USEVV TO PRINT SAME VALUE FOR CONSONAT AS BEFORE SINCE VOWEL SELECTED 3730 IF N$="A" OR N$="E" OR N$="I" OR N$="O" OR N$="U" THEN VC= 0: REM - NO CREDIT FOR VOWELS 3740 FOR K= 1 TO L% 3750 IF W$(K)=CHR$(95) AND A$(K)=N$ THEN S1%(PX) = S1%(PX) + VC 3760 NEXT 3770 RETURN 3780 REM ------------- 3790 REM - KEEP TRACK OF WINNINGS AS GO FROM 3800 REM ONE GAME TO NEXT 3810 REM WN%(PX)= WINNINGS OF PLAYER PX 3820 WN%(PX)= WN%(PX) + S1%(PX) 3830 RETURN 3840 REM ------------- 3850 REM - ROUTINE FOR `BANKRUPT' 3860 PRINT CHR$(7) :REM - RING BELL 3870 PRINT:PRINT "SORRY ";PL$(PX);" ... BAD LUCK ... YOUR'RE BANKRUPT !! ........" 3880 FOR K= 1 TO 5000: NEXT :REM - LEAVE MESSAGE FOR AWHILE 3890 S1%(PX)= 0 :REM - ZERO PLAYER'S SCORE FOR THIS ROUND 3900 TU$= "" :REM - RESET TU$ TO `NULL' 3910 GOTO 2460 3920 REM ------------- 3930 REM - ROUTINE FOR `LOSE TURN' 3940 REM 3950 PRINT CHR$(7) :REM - RING BELL 3960 PRINT:PRINT "TOUGH LUCK ";PL$(PX);" ... YOU LOSE YOUR TURN ...." 3970 FOR K= 1 TO 5000: NEXT :REM - LEAVE MESSAGE ON FOR AWHILE 3980 TU$= "" :REM - RESET TU$ TO `NULL' 3990 GOTO 2460 :REM - NEXT PLAYER 4000 REM ------------- 4010 REM - SUBROUTINE SERIES TO ADD CHARACTERS 4020 REM TO `USED LETTER' (UL) ARRAY 4030 REM - CONVERT INPUT LETTER N$ TO ASCII DECIMAL # 4040 A = (ASC(N$)-64) 4050 REM - COUNT NUMBER OF CHARACTERS CURRENTLY IN ARRAY UL 4060 Z= 0 :REM - RESET LETTER COUNTER `Z' TO ZERO 4070 FOR K= 1 TO 26 :REM- 26 LETTERS; `A' CAN BE 1 TO 26 4080 IF UL(K)<>0 THEN Z= Z+1 4090 NEXT 4100 REM - NOW ADD `NEW' LETTER TO ARRAY UL IF NOT PRESENT 4110 ND$= "" :REM - RESET 4120 FOR K= 1 TO Z+1 :REM - ONE MORE THAN NOW PRESENT 4130 IF UL(K)<>0 AND UL(K)=A THEN ND$= "DUPLICATE" 4140 IF UL(K)<>0 AND UL(K)=A THEN K= Z+1 4150 IF UL(K)<>0 AND UL(K)=A THEN GOTO 4170 4160 IF UL(K)<>A AND UL(K)=0 THEN UL(K)=A 4170 NEXT K 4180 REM - SET COUNTER `LT' USED IN PRINT ROUTINE 4190 LT= Z+1 4200 IF ND$= "DUPLICATE" THEN LT= Z 4210 IF ND$= "DUPLICATE" THEN UL(Z+1)= 0 :REM - RESET TO `0' 4220 RETURN 4230 REM ------------- 4240 REM - SUBROUTINE TO SEE IF ONLY 4250 REM VOWELS LEFT IN UNKNOWN. IF SO 4260 REM PLAYER `MUST SOLVE' UNKNOWN 4270 REM 4280 CK$= "" :REM - RESET `CK$' TO `NULL' 4290 BK= 0 :REM - `BK' = NUMBER OF BLANK SPACES LEFT. RESET TO `0' 4300 FOR K= 1 TO L% 4310 IF W$(K)= C"HR$(95) AND A$(K)<>"A" AND A$(K)<>"E" AND A$(K)<>"I" AND A$(K)<>"O" AND A$(K)<>"U" THEN BK= BK+1 4320 IF A$(K)= CHR$(45) OR A$(K)= CHR$(32) OR A$(K)= CHR$(39) THEN BK=BK 4330 IF W$(K)= CHR$(45) OR W$(K)= CHR$(32) OR W$(K)= CHR$(39) THEN BK=BK 4340 NEXT K 4350 IF BK>0 THEN CK$= "" ELSE CK$= "ONLY VOWELS REMAINING" 4360 IF CK$= "ONLY VOWELS REMAINING" THEN PRINT CHR$(7) :REM - RING BELL 4370 IF CK$= "ONLY VOWELS REMAINING" THEN PRINT:PRINT CHR$(27)+")" TAB(5) "ALL REMAINING LETTERS ARE VOWELS. YOU MUST NOW SOLVE IT." CHR$(27)+"(" 4380 IF CK$= "ONLY VOWELS REMAINING" THEN PRINT :REM - LINE FEED 4390 RETURN 4400 REM ------------- 4410 REM - SUBROUTINE TO PRINT `USED LETTERS' 4420 PRINT:PRINT "USED LETTERS: "; 4430 FOR K= 1 TO LT :REM - LT = LETTER COUNTER 4440 IF UL(K)<>0 THEN PRINT CHR$(UL(K) + 64)" "; 4450 NEXT 4460 RETURN 4470 REM ------------- 4480 REM - SUBROUTINE TO CHECK FOR DUPLICATION 4490 REM OF `VOWEL' INPUT BY PLAYER 4500 DP$="" :REM - INITIALIZE DP$ = `NULL' AT BEGINNING 4510 FOR K= 1 TO L% 4520 IF W$(K)="A" AND N$="A" THEN DP$="DUPLICATE" 4530 IF W$(K)="E" AND N$="E" THEN DP$="DUPLICATE" 4540 IF W$(K)="I" AND N$="I" THEN DP$="DUPLICATE" 4550 IF W$(K)="O" AND N$="O" THEN DP$="DUPLICATE" 4560 IF W$(K)="U" AND N$="U" THEN DP$="DUPLICATE" 4570 NEXT 4580 IF DP$="DUPLICATE" THEN CT%=1 4590 RETURN 4600 REM ------------- 4610 REM - SUROUTINE TO CHECK FOR INPUT OF 4620 REM A `VOWEL' NOT PRESENT IN UNKNOWN 4630 CT%= 0 4640 FOR K= 1 TO L% 4650 IF N$=A$(K) THEN CT%= 1 4660 NEXT 4670 RETURN 4680 REM ------------- 4690 REM - SUBROUTINE TO POKE "SIMULATION" OF 4700 REM RANDOM WHEEL SELECTION OF VALUE 4710 REM 4720 REM - POKE LOCATIONS FOR WHEEL VALUES. FIRST ONE IS 50852 = ">" 4730 POKE(63139!),62:POKE(63140!),32:POKE(63141!),32:POKE(63142!),32:POKE(63143!),32:POKE(63144!),32:POKE(63145!),32:POKE(63146!),53:POKE(63147!),48:POKE(63148!),48 4740 FOR Z= 1 TO 300:NEXT 4750 POKE(63139!),62:POKE(63140!),32:POKE(63141!),32:POKE(63142!),32:POKE(63143!),32:POKE(63144!),32:POKE(63145!),32:POKE(63146!),49:POKE(63147!),48:POKE(63148!),48 4760 FOR Z= 1 TO 300:NEXT 4770 POKE(63139!),62:POKE(63140!),32:POKE(63141!),32:POKE(63142!),32:POKE(63143!),32:POKE(63144!),32:POKE(63145!),49:POKE(63146!),48:POKE(63147!),48:POKE(63148!),48 4780 FOR Z= 1 TO 300:NEXT 4790 POKE(63139!),62:POKE(63140!),32:POKE(63141!),32:POKE(63142!),32:POKE(63143!),32:POKE(63144!),32:POKE(63145!),32:POKE(63146!),54:POKE(63147!),48:POKE(63148!),48 4800 FOR Z= 1 TO 300:NEXT 4810 POKE(63139!),62:POKE(63140!),32:POKE(63141!),32:POKE(63142!),32:POKE(63143!),32:POKE(63144!),32:POKE(63145!),32:POKE(63146!),50:POKE(63147!),48:POKE(63148!),48 4820 FOR Z= 1 TO 300:NEXT 4830 POKE(63139!),62:POKE(63140!),32:POKE(63141!),32:POKE(63142!),32:POKE(63143!),32:POKE(63144!),32:POKE(63145!),32:POKE(63146!),52:POKE(63147!),48:POKE(63148!),48 4840 FOR Z= 1 TO 300:NEXT 4850 POKE(63139!),62:POKE(63140!),32:POKE(63141!),32:POKE(63142!),32:POKE(63143!),32:POKE(63144!),32:POKE(63145!),32:POKE(63146!),56:POKE(63147!),48:POKE(63148!),48 4860 FOR Z= 1 TO 300:NEXT 4870 POKE(63139!),62:POKE(63140!),32:POKE(63141!),32:POKE(63142!),32:POKE(63143!),32:POKE(63144!),32:POKE(63145!),32:POKE(63146!),49:POKE(63147!),48:POKE(63148!),48 4880 FOR Z= 1 TO 300:NEXT 4890 POKE(63139!),62:POKE(63140!),32:POKE(63141!),66:POKE(63142!),65:POKE(63143!),78:POKE(63144!),75:POKE(63145!),82:POKE(63146!),85:POKE(63147!),80:POKE(63148!),84 4900 FOR Z= 1 TO 300:NEXT 4910 POKE(63139!),62:POKE(63140!),32:POKE(63141!),32:POKE(63142!),32:POKE(63143!),32:POKE(63144!),32:POKE(63145!),32:POKE(63146!),51:POKE(63147!),48:POKE(63148!),48 4920 FOR Z= 1 TO 300:NEXT 4930 POKE(63139!),62:POKE(63140!),32:POKE(63141!),32:POKE(63142!),32:POKE(63143!),32:POKE(63144!),32:POKE(63145!),53:POKE(63146!),48:POKE(63147!),48:POKE(63148!),48 4940 FOR Z= 1 TO 300:NEXT 4950 POKE(63139!),62:POKE(63140!),76:POKE(63141!),79:POKE(63142!),83:POKE(63143!),69:POKE(63144!),32:POKE(63145!),84:POKE(63146!),85:POKE(63147!),82:POKE(63148!),78 4960 FOR Z= 1 TO 300:NEXT 4970 POKE(63139!),62:POKE(63140!),32:POKE(63141!),32:POKE(63142!),32:POKE(63143!),32:POKE(63144!),32:POKE(63145!),32:POKE(63146!),53:POKE(63147!),53:POKE(63148!),48 4980 FOR Z= 1 TO 300:NEXT 4990 POKE(63139!),62:POKE(63140!),32:POKE(63141!),32:POKE(63142!),32:POKE(63143!),32:POKE(63144!),32:POKE(63145!),32:POKE(63146!),57:POKE(63147!),48:POKE(63148!),48 5000 FOR Z= 1 TO 300:NEXT 5010 POKE(63139!),62:POKE(63140!),76:POKE(63141!),79:POKE(63142!),83:POKE(63143!),69:POKE(63144!),32:POKE(63145!),84:POKE(63146!),85:POKE(63147!),82:POKE(63148!),78 5020 FOR Z= 1 TO 300:NEXT 5030 POKE(63139!),62:POKE(63140!),32:POKE(63141!),32:POKE(63142!),32:POKE(63143!),32:POKE(63144!),32:POKE(63145!),32:POKE(63146!),54:POKE(63147!),48:POKE(63148!),48 5040 FOR Z= 1 TO 300:NEXT 5050 POKE(63139!),62:POKE(63140!),32:POKE(63141!),66:POKE(63142!),65:POKE(63143!),78:POKE(63144!),75:POKE(63145!),82:POKE(63146!),85:POKE(63147!),80:POKE(63148!),84 5060 FOR Z= 1 TO 300:NEXT 5070 GOSUB 5170 :REM - PRINT ACTUAL VALUE OF CONSONANT 5080 REM - ROUTINE TO `BLANK'# BLINKING "SPINNING WHEEL ...." MESSAGE. 5090 FOR Z= 1 TO 35 5100 POKE(63103!+Z),32 5110 NEXT 5120 REM 5130 RETURN 5140 REM ------------- 5150 REM - SUBROUTINE TO PRINT RANDOMLY SELECTED 5160 REM CONSONANT VALUE NEXT TO `>' 5170 IF TU$="BANKRUPT" THEN GOTO 5180 ELSE 5190 5180 POKE(63139!),62:POKE(63140!),32:POKE(63141!),66:POKE(63142!),65:POKE(63143!),78:POKE(63144!),75:POKE(63145!),82:POKE(63146!),85:POKE(63147!),80:POKE(63148!),84:RETURN 5190 IF TU$="LOSE TURN" THEN GOTO 5200 ELSE 5210 5200 POKE(63139!),62:POKE(63140!),76:POKE(63141!),79:POKE(63142!),83:POKE(63143!),69:POKE(63144!),32:POKE(63145!),84:POKE(63146!),85:POKE(63147!),82:POKE(63148!),78:RETURN 5210 IF VC=100 THEN 5220 ELSE 5230 5220 POKE(63139!),62:POKE(63140!),32:POKE(63141!),32:POKE(63142!),32:POKE(63143!),32:POKE(63144!),32:POKE(63145!),32:POKE(63146!),49:POKE(63147!),48:POKE(63148!),48:RETURN 5230 IF VC=150 THEN 5240 ELSE 5250 5240 POKE(63139!),62:POKE(63140!),32:POKE(63141!),32:POKE(63142!),32:POKE(63143!),32:POKE(63144!),32:POKE(63145!),32:POKE(63146!),49:POKE(63147!),53:POKE(63148!),48:RETURN 5250 IF VC=200 THEN 5260 ELSE 5270 5260 POKE(63139!),62:POKE(63140!),32:POKE(63141!),32:POKE(63142!),32:POKE(63143!),32:POKE(63144!),32:POKE(63145!),32:POKE(63146!),50:POKE(63147!),48:POKE(63148!),48:RETURN 5270 IF VC=300 THEN 5280 ELSE 5290 5280 POKE(63139!),62:POKE(63140!),32:POKE(63141!),32:POKE(63142!),32:POKE(63143!),32:POKE(63144!),32:POKE(63145!),32:POKE(63146!),51:POKE(63147!),48:POKE(63148!),48:RETURN 5290 IF VC=400 THEN 5300 ELSE 5310 5300 POKE(63139!),62:POKE(63140!),32:POKE(63141!),32:POKE(63142!),32:POKE(63143!),32:POKE(63144!),32:POKE(63145!),32:POKE(63146!),52:POKE(63147!),48:POKE(63148!),48:RETURN 5310 IF VC=500 THEN 5320 ELSE 5330 5320 POKE(63139!),62:POKE(63140!),32:POKE(63141!),32:POKE(63142!),32:POKE(63143!),32:POKE(63144!),32:POKE(63145!),32:POKE(63146!),53:POKE(63147!),48:POKE(63148!),48:RETURN 5330 IF VC=600 THEN 5340 ELSE 5350 5340 POKE(63139!),62:POKE(63140!),32:POKE(63141!),32:POKE(63142!),32:POKE(63143!),32:POKE(63144!),32:POKE(63145!),32:POKE(63146!),54:POKE(63147!),48:POKE(63148!),48:RETURN 5350 IF VC=700 THEN 5360 ELSE 5370 5360 POKE(63139!),62:POKE(63140!),32:POKE(63141!),32:POKE(63142!),32:POKE(63143!),32:POKE(63144!),32:POKE(63145!),32:POKE(63146!),55:POKE(63147!),48:POKE(63148!),48:RETURN 5370 IF VC=800 THEN 5380 ELSE 5390 5380 POKE(63139!),62:POKE(63140!),32:POKE(63141!),32:POKE(63142!),32:POKE(63143!),32:POKE(63144!),32:POKE(63145!),32:POKE(63146!),56:POKE(63147!),48:POKE(63148!),48:RETURN 5390 IF VC=900 THEN 5400 ELSE 5410 5400 POKE(63139!),62:POKE(63140!),32:POKE(63141!),32:POKE(63142!),32:POKE(63143!),32:POKE(63144!),32:POKE(63145!),32:POKE(63146!),57:POKE(63147!),48:POKE(63148!),48:RETURN 5410 IF VC=1000 THEN 5420 ELSE 5430 5420 POKE(63139!),62:POKE(63140!),32:POKE(63141!),32:POKE(63142!),32:POKE(63143!),32:POKE(63144!),32:POKE(63145!),49:POKE(63146!),48:POKE(63147!),48:POKE(63148!),48:RETURN 5430 IF VC=5000 THEN 5440 ELSE 5450 5440 POKE(63139!),62:POKE(63140!),32:POKE(63141!),32:POKE(63142!),32:POKE(63143!),32:POKE(63144!),32:POKE(63145!),53:POKE(63146!),48:POKE(63147!),48:POKE(63148!),48 5450 RETURN 5460 REM ------------- 5470 END 46!),55:POKE(63147!),48:POKE(63148!),48:RETURN 5370 IF VC=800 THEN 5380 ELSE 5390 5380 POKE(63139!),62:POKE(63140!),32:POKE(63141!),32:POKE(63142!),32:POKE(63143!),32:POKE(63144!),32:POKE(63145!),32:POKE(63146!),56:POKE(63147!),48:POKE(63148!),48:RETURN 5390 IF VC=900 THEN 5400 ELSE 5410 5400 POKE(63139!),62:POKE(63140!),32:POKE(63141!),32:POKE(63142!),32:POKE(63143!),32:POKE(63144!),32:POKE(63145!),32:POKE(63146!),57:POKE(63147!),48:POKE(63148!),48:RETURN 5410 IF VC=1000 THEN 5420 ELSE 5430 5420 POKE(63139!),62:POKE(63140!),32:POKE(63141!),32:POKE(63142!),32:POKE(63143!),32:POKE(63144!),32:POKE(63145!),49:POKE(63146!),48:POKE(63147!),48:POKE(63148!),48:RETURN 5430 IF VC=5000 THEN 5440 ELSE 5450 5440 POKE(63139!),62:POKE(63140!),32:POKE(63141!),32:PO This is the release date of the disk. QUOTE DAT hRANDOM DAT iTHING DAT jTITLE DAT kWHEEL-EXBAS lqHEEL-EXBAS |1-CPM094 DOC WHEEL-O1BAS iHEEL-O1BAS )WHEEL .INS A3 6A 4864 38 EVENT .DAT 74 A7 896 7 PEOPLE .DAT B2 38 1152 9 PERSON .DAT 96 B2 640 5 PHRASE .DAT 78 23 2432 19 PLACE .DAT F1 45 768 6 QUOTE .DAT 68 44 640 5 RANDOM .DAT 84 F4 128 1 THING .DAT 16 C9 1024 8 TITLE .DAT D4 29 1024 8 WHEEL-EX.BAS B7 5A 28928 226 WHEEL-O1.BAS 38 3D 26880 210 $ Fog Library Disk FOG-CPM.094 Copyright (1986) by Fog International Computer Users Group to the extent not copyrighted by the original author for the exclusive use and enjoyment of its members. Any reproduction or distribution for profit or personal gain is strictly forbidden. For information, contact FOG, P. O. Box 3474, Daly City, CA. 94015-0474. as part of the description of a file indicates that the program is distributed on a "try first, pay if you like it" basis. If you find the program(s) meet your need, please refer to the author's documentation for information on becoming a registered user. Only by registering and paying for the programs you like and use will the authors of such programs continue development. Often, more complete documentation, additional modules, and new releases are available only to registered users. MBasic games for Osborne 1 and Executive (source available for many so they can be modified for other computers).  Filename Description -07-00 .86 This is the release date of the disk. -CPM094 .DOC This is the description of the disk contents. BATLSHIP.BAS 81A6 7K A version of the old board game. JETSIM .BAS 3D7E 11K [Jet Simulator 1 of 3] A flight and landing simulator. JETSIM .DOC 7958 15K [Jet Simulator 2 of 3] JETSIMB .BAS 2FA6 22K [Jet Simulator 3 of 3] LIFE .COM EDED 2K [LIFE 1 of 3] This game allows you to track the growth of cells. ASseMbler source included. LIFE .INS E935 2K [LIFE 2 of 3] LIFE .AQM A34D 10K [LIFE 3 of 3] OSZ-JEDI.BAS 2A44 15K Star Wars game for 80 column Osborne computers with MBasic. WHEEL .DOC 5794 4K [Wheel_of_Fortune 1 of 13] Similar to the TV show of the same name. Two MBasic games (one for Osborne 1 and one for Executive) are included. WHEEL .INS A36A 5K [Wheel_of_Fortune 2 of 13] EVENT .DAT 74A7 1K [Wheel_of_Fortune 3 of 13] PEOPLE .DAT B238 2K [Wheel_of_Fortune 4 of 13] PERSON .DAT 96B2 1K [Wheel_of_Fortune 5 of 13] PHRASE .DAT 7823 3K [Wheel_of_Fortune 6 of 13] PLACE .DAT F145 1K [Wheel_of_Fortune 7 of 13] QUOTE .DAT 6844 1K [Wheel_of_Fortune 8 of 13] RANDOM .DAT 84F4 1K [Wheel_of_Fortune 9 of 13] THING .DAT 16C9 1K [Wheel_of_Fortune 10 of 13] TITLE .DAT D429 1K [Wheel_of_Fortune 11 of 13] WHEEL-EX.BAS B75A 29K [Wheel_of_Fortune 12 of 13] WHEEL-O1.BAS 383D 27K [Wheel_of_Fortune 13 of 13] E .DAT 7823 3K [Wheel_of_Fortune 6 of 13] PLACE .DAT F145 1K [Wheel_of_Fortune 7 of 13] QUOTE .DAT 6844 1K [Wheel_of_Fortune 8 of 13] RANDOM .DAT 84F4 1K [Wheel_of_Fortune 9 of 13] THING .DAT 16C9 1K [W%&'