PCjs Machines

Home of the original IBM PC emulator for browsers.

Logo

PC-SIG Diskette Library (Disk #37)

[PCjs Machine "ibm5150"]

Waiting for machine "ibm5150" to load....

Information about “GAME SERIES NO 6”

Yet another collection of games from the earlier years of PC-SIG.  All
these games have been in the library since the early 1980's.  These
programs are not only entertaining, but will show you the origins of
some of later programs in the library.  For the BASIC programmers among
you, these can be very informative if you yearn to write your own games
someday.

How to start:  For instructions on running BASIC programs, please refer
to the GETTING STARTED section in this catalog.

File Descriptions:

PERMUTE  BAS  Displays all possible permutations of a set of characters
SCRAMBLE BAS  Guess scrambled words in shortest time
ROMCHAR  BAS  Displays dot matrix characters from ROM patterns
SERPENT  BAS  Guide a serpent through obstacles
SPINOUT  BAS  High resolution version of breakout
SLOTMACH BAS  Play the slot machines
WILLTELL BAS  Music - An amazing musical selection
SURROUND BAS  Guide expanding character through a maze
MENU     BAS  Menu program - run it to assess other programs
ZAP'EM   BAS  Shoot the bugs
WILLTELL DAT  Data for WILLTELL.BAS
MATH     BAS  Addition, subtraction, multiplication & division problems
ATTACK   BAS  Destroy the Apple computer manufacturing plant
CHR      BAS  Displays complete character set on screen
BLACKBOX BAS  A game of strategy
INVEN    BAS  48K inventory program
GALLERY  BAS  Arcade game
EQNSOLVE BAS  Solves n linear equations in n unknowns, n <= 10
CIAGAME  BAS  An adventure to recover the stolen ruby

ATTACK.BAS

10 KEY OFF:SCREEN 0,1:COLOR 15,0,0:WIDTH 40:CLS:LOCATE 5,19:PRINT "IBM"
20 LOCATE 7,8 ,0:PRINT "General  utility  programs"
30 COLOR 9 ,0:LOCATE 10,9,0:PRINT CHR$(213)+STRING$(21,205)+CHR$(184)
40 LOCATE 11,9,0:PRINT CHR$(179)+"       ATTACK        "+CHR$(179)
50 LOCATE 12,9,0:PRINT CHR$(179)+STRING$(21,32)+CHR$(179)
60 COLOR 9,0:LOCATE 13,9,0:PRINT CHR$(179)+"     Version  1.1    "+CHR$(179)
70 BEEP
80 LOCATE 14,9,0:PRINT CHR$(212)+STRING$(21,205)+CHR$(190)
90 COLOR 15,0,1:LOCATE 17,7,0:PRINT "OCTOBER 7  1982   MOD-5-5-M "
100 COLOR 9,0:LOCATE 23,6,0:PRINT "Press space bar to continue..."
110 IF INKEY$ <> "" THEN GOTO 110
120 CMD$ = INKEY$
130 IF CMD$ = "" THEN GOTO 120
140 IF CMD$ = CHR$(27) THEN GOTO 160
150 IF CMD$ <> " " THEN GOTO 120
160 REM TRANSFER COMMAND
500 R1$=LEFT$(TIME$,2):R2$=RIGHT$(TIME$,2):R3$=MID$(TIME$,3,2)
510 RANDOMIZE VAL(R1$+R2$+R3$)
520 KEY OFF:SCREEN 0,1:SC=0:SF=60:BD=35:WIDTH 40:COLOR 7,0:CLS :DEF SEG=&H40:POKE &H17,&H40
530 LOCATE 1,1,0:PRINT "DO YOU WANT INSTRUCTIONS ?":I$=INKEY$:IF I$="" THEN 530 ELSE IF I$="Y" THEN GOSUB 1800
540 A$="_____/\_____/\__/\_______/\_/\____/\__/\___▄█▄_/\_____/\__∩∩▄█▄∩∩____/\___/\/\_┌╨┐___/\__/\▄▄▄▄▄/\___▄╫╫▄___/\___≤≥__/\__▄╥╥╥▄__▄┴┴┴▄_/\__/\__≤≥__/\______/\_____/\__/\_______/\_/\____/\__/\?"
550 CLS:IF SC=0 THEN DIM X(4),Y(4),R(4)
560 L=0:Y1=0:Q=1:Y(1)=14:X(1)=40:Q1=1:SE=0:B=-1:Z=0
570 Y=INT(RND(1)*14)+8
580 COLOR 1:LOCATE 5,10,0:PRINT "________________________________________";
590 M$=STRING$(36,196):N$=STRING$(36,32)
600 COLOR 7:LOCATE 4,3:PRINT "BOMBS -";BD;" SCORE -";SC;:LOCATE 4,28:PRINT"LASERS -";SF;"
610 COLOR 1:LOCATE 5,10,0:PRINT "________________________________________";
620 B$=MID$(A$,1,40)
625 DEF SEG=0:POKE 1047,32
630 COLOR 6:LOCATE 23,1+Z,0:PRINT B$;
640 GOSUB 2100
650 L=L+1:IF L=150 THEN SOUND 40,0:GOTO 1580
660 IF Z>0 THEN Z=Z-1
670 B$=MID$(A$,L+Z,40-Z)
680 COLOR 6:LOCATE 23,1+Z,0:PRINT B$;
690 IF Y5=1 THEN SOUND 1500,0:SOUND 1500,0.1:C$=INKEY$:GOTO 780
700 C$=INKEY$:IF C$="" THEN 800
710 IF C$="8" THEN Y1=-1
720 IF C$="2" THEN Y1=1
730 IF C$="5" THEN Y1=0
740 GOTO 780
780 IF BD>0 AND B=-1 AND Y<20 THEN IF C$="4" THEN GOSUB 1030
790 IF SF>0 AND C$="6" THEN GOSUB 1100
800 IF Y5<>1 THEN SOUND 32767,0.01:SOUND 45,0.01
810 IF Y+Y1=6 THEN Y5=1:Y1=1
820 IF Y+Y1=23 THEN SE=1:GOTO 1200
830 LOCATE Y,2:PRINT "   ";
840 Y=Y+Y1
850 COLOR 15:LOCATE Y,2:PRINT ">═";CHR$(26);
860 IF B=1 THEN GOSUB 1070
870 FOR Q=1 TO Q1
880 IF R(Q)<>1 THEN 910
890 IF R(Q)=1 AND INT(RND(1)*50)>45 THEN R(Q)=0:GOTO 910
900 IF Q<Q1 THEN Q=Q+1:GOTO 880 ELSE 1020
910 LOCATE Y(Q),X(Q):PRINT " "
920 X(Q)=X(Q)-2:Y(Q)=Y(Q)+Y1(Q)
930 IF X(Q)=0 THEN GOSUB 1410
940 COLOR 7:LOCATE Y(Q),X(Q):PRINT CHR$(27);
950 IF (Q1<4 AND X(Q)=30) THEN GOSUB 1430
960 IF Y(Q)<Y THEN Y1(Q)=1
970 IF Y(Q)>Y THEN Y1(Q)=-1
980 IF INT(RND(1)*40)>35 THEN Y1(Q)=-Y1(Q)
990 IF Y(Q)+Y1(Q)=23 OR Y(Q)+Y1(Q)=6 THEN Y1(Q)=0
1000 IF ((X(Q)=4 OR X(Q)=2) AND Y(Q)=Y) THEN 1200
1010 NEXT Q
1020 GOTO 650
1030 IF Y/2=INT(Y/2) THEN BY=Y+1 ELSE BY=Y
1040 COLOR 7:B=1:BD=BD-1:Y2=Y:LOCATE 4,3:PRINT "BOMBS -";BD
1050 COLOR 2:LOCATE BY,3:PRINT "¥";
1060 RETURN
1070 IF BY=21 THEN GOSUB 1450:RETURN
1080 COLOR 2:LOCATE BY,3:PRINT " ";:BY=BY+2:LOCATE BY,3:PRINT "¥";
1090 RETURN
1100 COLOR 4:LOCATE Y,5:PRINT M$;:SF=SF-1:COLOR 7:LOCATE 4,28:PRINT "LASERS -";SF
1110 SOUND 32767,0:SOUND 900,1:FOR D=1 TO 20:NEXT D:SOUND 32767,0
1120 LOCATE Y,5:PRINT N$;
1130 FOR W=1 TO Q1:IF Y=Y(W) AND X(W)>4 AND R(W)<>1 THEN 1160
1140 NEXT W
1150 RETURN
1160 SC=SC+20:COLOR 7:LOCATE 4,14:PRINT "SCORE -";SC
1170 LOCATE Y(W),X(W):PRINT "░";:FOR S=150 TO 160:SOUND S,0.1:NEXT S:LOCATE Y(W),X(W):PRINT " ";
1180 Y(W)=INT(RND(1)*16)+7:X(W)=40:R(W)=1
1190 RETURN
1200 SOUND 32767,0:LOCATE Y,2:PRINT "   ";
1210 COLOR 7
1220 IF SE=1 THEN Y=Y+Y1
1230 LOCATE Y,2:PRINT ">═";CHR$(26);:SOUND (RND(1)*99)*C+40,0.01
1240 FOR D=1 TO 100:NEXT D
1250 FOR C1=178 TO 176 STEP -1:FOR C=15 TO 0 STEP -1
1260 LOCATE Y,2:PRINT CHR$(C1);CHR$(C1);CHR$(C1);:SOUND (RND(1)*99)*C+40,0.01
1270 NEXT C:NEXT C1
1280 SOUND 39,0
1290 LOCATE Y,2:PRINT "   "
1295 IF SC>800 THEN FOR N=1 TO 15:COLOR N,N:CLS:SOUND N*37,7:FOR T=1 TO 115:NEXT T:NEXT N:COLOR 7,0:CLS:LOCATE 11,6:PRINT"G A M E    O V E R":PRINT:PRINT:PRINT"     GOOD JOB!!":DEF SEG=0:POKE 1047,0:END
1300 A$="YOU FAILED"
1310 FOR L=1 TO 10:B$=MID$(A$,L,1)
1320 LOCATE 10,14+L:PRINT B$;
1330 SOUND 60,0.1:SOUND 60,0:FOR D=1 TO 50:NEXT D
1340 NEXT L
1350 A$="YOUR MISSION"
1360 FOR L=1 TO 12:B$=MID$(A$,L,1)
1370 LOCATE 12,13+L:PRINT B$;
1380 SOUND 60,0.1:SOUND 60,0:FOR D=1 TO 50:NEXT D
1390 NEXT L
1400 DEF SEG=0:POKE 1047,0:END
1410 Y(Q)=INT(RND(1)*15)+8:X(Q)=40:R(Q)=1:Y1(Q)=0
1420 RETURN 1010
1430 Q1=Q1+1:Y(Q1)=INT(RND(1)*15)+8:X(Q1)=40:Y1(Q)=0
1440 RETURN
1450 B=-1
1460 BE=SCREEN(BY+2,3)
1470 LOCATE BY,3:PRINT " ";
1480 BY=BY+2
1490 SOUND 50,0
1500 FOR D=178 TO 176 STEP -1:FOR S=140 TO 142:LOCATE BY,1:COLOR INT(RND(1)*16+1):PRINT " ";STRING$(3,D):SOUND S,0.01:NEXT S:SOUND 40,0:NEXT D
1510 IF BE=210 OR BE=193 THEN SC=SC+(25-Y2)*12
1514 IF BE=>169 AND BE<>210 AND BE<>193 AND BE<>196 THEN SC=SC+INT(RND*30)+10
1520 COLOR 7:LOCATE 4,14:PRINT "SCORE -";SC
1530 Z=4
1540 LOCATE BY,2:PRINT "   "
1550 RETURN
1560 BY=BY+2
1570 SOUND 50,0
1580 'COLOR 7:LOCATE 7,1:PRINT "\   /";
1590 FOR D=1 TO 150:NEXT D
1600 COLOR 7:LOCATE 7,1:PRINT " \ /";
1610 FOR D=1 TO 150:NEXT D
1620 LOCATE 7,1:PRINT "/   \":COLOR 14
1630 FOR L=7 TO Y-1:LOCATE L,3:PRINT "█";
1640 FOR D=1 TO 100:NEXT D:SOUND L*100,0.1:NEXT L
1650 COLOR 15
1660 FOR L=Y-1 TO 7 STEP -1:LOCATE L+1,2:PRINT "   ";:LOCATE L,2:PRINT ">="+CHR$(26);
1670 FOR D=1 TO 100:NEXT D:SOUND L*100,0.1:NEXT L
1680 COLOR 7:LOCATE L+1,2:PRINT "   ";
1690 FOR D=1 TO 150:NEXT D
1700 LOCATE L+1,1:PRINT " \ / ";
1710 FOR D=1 TO 150:NEXT D
1720 LOCATE L+1,1:PRINT "     ";
1730 LOCATE L,2:PRINT "___";
1740 A$="MISSION COMPLETE"
1750 FOR L=1 TO 16:B$=MID$(A$,L,1)
1760 LOCATE 10,11+L:PRINT B$;
1770 SOUND 60,0.1:SOUND 60,0:FOR D=1 TO 50:NEXT D
1780 NEXT L
1790 IF SC>500 THEN SOUND 100,3:BEEP:SOUND 120,1:BEEP:SOUND 200,3:SOUND 400,3:SOUND 500,4:SOUND 600,5:SOUND 700,2:SOUND 800,3:SOUND 700,2:SOUND 200,3:GOTO 1795
1793 SOUND 100,2:SOUND 300,2:SOUND 500,3:END
1795 LOCATE 15,5:PRINT "ON TO THE NEXT ROUND!"
1797 FOR O=1 TO 1900:NEXT O
1799 GOTO 540
1800 CLS
1810 '                                            +
1820 PRINT "  YOUR MISSION IS TO ATTACK AND DESTROY"
1830 PRINT "THE APPLE COMPUTER MANUFACTURING PLANT."
1840 PRINT "YOU ARE ALLOTED 35 BOMBS AND 60 LASERS."
1850 PRINT "THERE ARE APPLE-OWNED FIGHTERS TRYING"
1860 PRINT "TO STOP YOU,YOU MUST DESTROY THEM WITH"
1870 PRINT "YOUR LASERS.IF YOU GET HIT BY THEM THEN"
1880 PRINT "YOU ARE DESTROYED,IF YOU HIT THE GROUND"
1890 PRINT "THEN YOU ARE DESTROYED.IF YOU GO OUT OF"
1900 PRINT "THE ATMOSPHERE (THE BLUE LINE),THEN YOU"
1910 PRINT "LOOSE ALL CONTROL EXCEPT LASERS AND"
1920 PRINT "BOMBS,AND YOUR SHIP WILL BEGIN FALLING."
1930 PRINT "  DROP BOMBS ON ALL STRUCTURES AND YOU"
1940 PRINT "WILL GET POINTS. THE APPLE PLANT (SHOWN"
1950 PRINT "BELOW) IS WORTH THE MOST POINTS."
1960 PRINT
1970 COLOR 6:PRINT "___≤≥__/\__▄╥╥╥▄__▄┴┴┴▄_/\__/\__≤≥__/\__";
1980 COLOR 7+16:PRINT "            ^^^    ^^^"
1990 COLOR 7:PRINT
2000 PRINT "  IF YOUR SCORE IS HIGH ENOUGH AFTER "
2010 PRINT "ROUND ONE THEN YOU ARE READY TO FACE "
2020 PRINT "ROUND TWO. "
2030 LOCATE 25,1,0:PRINT "press space bar to continue";
2040 A$=INKEY$:IF A$="" THEN 2040
2050 PRINT "  USE CURSOR CONTROL KEYS TO MOVE,8 TO"
2060 PRINT "  GO UP,2 TO GO DOWN,5 TO STOP,4 TO "
2070 PRINT "  DROP BOMBS, AND 6 TO FIRE THE LASER"
2080 A$=INKEY$:IF A$="" THEN 2080
2090 CLS:RETURN
2100 'COLOR 7:LOCATE 7,1:PRINT "\   /";
2110 FOR D=1 TO 150:NEXT D
2120 COLOR 7:LOCATE 7,1:PRINT " \ /";
2130 FOR D=1 TO 150:NEXT D
2140 LOCATE 7,1:PRINT "/   \":COLOR 14
2150 FOR L=7 TO Y-1:COLOR 14:LOCATE L,2:PRINT " █ ";:COLOR 15:LOCATE L+1,2:PRINT ">="+CHR$(26);
2160 FOR D=1 TO 100:NEXT D:SOUND L*100,0.1:NEXT L
2170 COLOR 15
2180 FOR L=Y-1 TO 7 STEP -1:LOCATE L,3:PRINT " ";
2190 FOR D=1 TO 100:NEXT D:SOUND L*100,0.1:NEXT L
2200 COLOR 7:LOCATE L+1,2:PRINT "   ";
2210 FOR D=1 TO 150:NEXT D
2220 LOCATE L+1,1:PRINT " \ / ";
2230 FOR D=1 TO 150:NEXT D
2240 LOCATE L+1,1:PRINT "     ";
2250 LOCATE L,2:PRINT "___";
2260 FOR D=1 TO 150:NEXT D:COLOR 1:LOCATE L,2:PRINT "___";
2270 RETURN

BLACKBOX.BAS

0 KEY OFF
100 GOSUB 770
110 RANDOMIZE VAL(RIGHT$(TIME$,2))
120 CLS:GOSUB 1190:DEF FNR(Z)=INT(8*RND(1)+1)
130 E=2:GOSUB 1270:LOCATE 23,32:INPUT ;N$
140 IF N$="" THEN N$="5":E=3:GOSUB 1270
150 IF N$<"1" OR N$>"9" THEN E=10:GOSUB 1270:GOTO 130
160 N=VAL(N$):IF N<2 OR N>10 THEN E=10:GOSUB 1270:GOTO 130
170 FOR J=0 TO 9: FOR I=0 TO 9:B(I,J)=0: NEXT I:NEXT J
180 FOR I=1 TO N
190 X=FNR(1): Y=FNR(1): IF B(X,Y)=1 THEN 190
200 B(X,Y)=1:NEXT I
210 S=0:C=0
220 LOCATE 25,1:PRINT "SCORE:";100-S;:LOCATE 1
230 E=4:GOSUB 1270:LOCATE 23,28:INPUT ;R$
240 IF R$="END" THEN END
250 IF R$="" THEN 540
260 IF R$<"1" OR R$>"9" THEN 220
270 R=VAL(R$)
280 IF R<1 OR R>32 THEN 220
290 ON (R-1)\8+1 GOTO 300,310,320,330
300 X=0   :Y=R   :U=1 :V=0 :GOTO 340    'LEFT SIDE
310 X=R-8 :Y=9   :U=0 :V=-1:GOTO 340    'BOTTOM
320 X=9   :Y=25-R:U=-1:V=0 :GOTO 340    'RIGHT SIDE
330 X=33-R:Y=0   :U=0 :V=1              'TOP
340 X1=X+U:Y1=Y+V
350 IF U=0 THEN X2=X1-1: X3=X1+1: Y2=Y1: Y3=Y1: GOTO 370
360 Y2=Y1-1:Y3=Y1+1: X2=X1: X3=X1
370 ON 8*B(X1,Y1)+B(X2,Y2)+2*B(X3,Y3)+1 GOTO 390,400,410,400
380 LOCATE 25,13:PRINT "   ABSORBED   ";:S=S+1:Z$=" A":GOTO 1380
390 X=X1: Y=Y1: GOTO 440
400 Z=1: GOTO 420
410 Z=-1
420 IF U=0 THEN U=Z:V=0:GOTO 440
430 U=0: V=Z
440 ON (X+15)\8 GOTO 480,460,490
450 STOP
460 ON (Y+15)\8 GOTO 500,340,510
470 STOP
480 Z=Y: GOTO 520
490 Z=25-Y: GOTO 520
500 Z=33-X: GOTO 520
510 Z=8+X
520 IF Z=R THEN  LOCATE 25,13:PRINT "   REFLECTED  ";:S=S+1:Z$=" R":GOTO 1380
530 LOCATE 25,13:PRINT USING "CAME OUT AT ##";Z;:LOCATE 1:S=S+2:Z$=RIGHT$(STR$(Z),2):GOTO 1380
540 E=5:GOSUB 1270
550 X=4:Y=4
560 Y$=CHR$(SCREEN(Y*2+3,X*3+6))
570 COLOR 31:LOCATE Y*2+3,X*3+6:PRINT Y$
580 X$=INKEY$:IF X$="" THEN 580
590 IF ASC(X$)=27 THEN END
600 IF LEN(X$)>1 THEN COLOR 7:E=6:GOSUB 1270:GOTO 580
610 COLOR 7:E=5:GOSUB 1270
620 Y1=Y:X1=X
630 LOCATE 25,1:PRINT "SCORE:";100-S;:LOCATE 1
640 IF X$="8" THEN Y1=Y-1:IF Y1<1 THEN Y1=8
650 IF X$="2" THEN Y1=Y+1:IF Y1>8 THEN Y1=1
660 IF X$="4" THEN X1=X-1:IF X1<1 THEN X1=8
670 IF Y$="*" THEN COLOR 15 ELSE COLOR 7
680 IF X$="6" THEN X1=X+1:IF X1>8 THEN X1=1
690 LOCATE Y*2+3,X*3+6:PRINT Y$
700 IF X$="5" THEN 740
710 IF X$=CHR$(13) THEN COLOR 7:GOTO 220
720 X=X1:Y=Y1
730 GOTO 560
740 IF B(X,Y)=0 THEN E=7:GOSUB 1270:S=S+5:GOTO 560
750 IF Y$="■" THEN Y$="*":C=C+1:LOCATE Y*2+3,X*3+6:COLOR 15:PRINT Y$:COLOR 7:IF C<N THEN E=8:GOSUB 1270:GOTO 570 ELSE E=9:GOSUB 1270:GOTO 1430
760 GOTO 560
770 WIDTH 40:SCREEN 0,0,0,1:CLS:COLOR 15:LOCATE 1,15,0
780 PRINT "BLACK BOX":COLOR 7:PRINT
790 PRINT "The BLACK BOX is an 8 X 8 square in":PRINT "which several atoms are hidden.":PRINT
800 PRINT "The object of the game is to discover"
810 PRINT "the position of the atoms by projecting"
820 PRINT "rays at them from the sides of the box":PRINT "and noticing how these rays react.":PRINT
830 PRINT "Rays may be deflected, reflected, or":PRINT "absorbed by the atoms in the box.":PRINT:PRINT "You send rays into the box from any of"
840 PRINT "32 spots along the sides of the box."
850 SCREEN 0,0,0,0:GOSUB 1020:SCREEN 0,0,1,0:CLS
860 PRINT "The path of a ray is governed by the":PRINT "following rules:":PRINT
870 PRINT "A rays that strikes an atom directly is":PRINT "absorbed.":PRINT
880 PRINT "A ray that hits an atom to one side is"
890 PRINT "diverted 90 degrees to that side.":PRINT
900 PRINT "A ray aimed between two atoms one":PRINT "square apart is reflected.":PRINT
910 PRINT "Rays otherwise travel in straight lines."
920 PRINT:PRINT "You will be told whether the ray hits":PRINT "an atom, is reflected, or comes out."
930 PRINT "If the ray comes out, you'll be told":PRINT "where.":PRINT
940 SCREEN 0,0,1,1:GOSUB 1020:SCREEN 0,0,0,1:CLS
950 PRINT "You begin by specifing how many atoms"
960 PRINT "are to be in the BLACK BOX."
970 PRINT:PRINT "At any time you may guess an atom's"
980 PRINT "location by pressing RETURN rather than":PRINT "entering one of the spot numbers."
990 PRINT "Then move the blinking cursor to the":PRINT "place where you believe an atom to be":PRINT "and press the '5' key on the keypad."
1000 PRINT:PRINT "Press the RETURN key to return to":PRINT "shooting rays.":PRINT:PRINT "You begin with a high score which":PRINT "decreases with each additional clue you":PRINT "need to solve the BLACK BOX."
1010 SCREEN 0,0,0,0:GOSUB 1020:RETURN
1020 LOCATE 25,1:PRINT "      Press any key to continue.       ";:LOCATE 1,1
1030 A$=INKEY$:IF A$="" THEN 1030 ELSE CLS:RETURN
1190 SCREEN 0,0,1,0:CLS:LOCATE 1,15:COLOR 15:PRINT "BLACK  BOX":COLOR 7:LOCATE 3
1200 PRINT       "       32 31 30 29 28 27 26 25"
1210 PRINT       "      ┌────────────────────────┐"
1220 FOR I=1 TO 8
1230 PRINT USING "     #│ ■  ■  ■  ■  ■  ■  ■  ■ │##";I,25-I
1240 PRINT       "      │                        │":NEXT I
1250 LOCATE 20:PRINT"      └────────────────────────┘"
1260 PRINT       "        9 10 11 12 13 14 15 16":SCREEN 0,0,1,1:RETURN
1270 LOCATE 23,1:ON E GOTO 1280,1290,1300,1310,1320,1330,1340,1350,1360,1370
1280 PRINT "                                       ";:LOCATE 1:RETURN
1290 PRINT "   HOW MANY ATOMS IN THE BOX           ";:LOCATE 1:RETURN
1300 PRINT "           I'LL ASSUME FIVE.           ";:LOCATE 1:RETURN
1310 PRINT "       WHICH RAY POSITION              ";:LOCATE 1:RETURN
1320 PRINT "MOVE THE CURSOR WITH THE NUMERIC KEYPAD";:LOCATE 1:RETURN
1330 PRINT "   Please press the  ";:COLOR 15:PRINT"NUM LOCK";:COLOR 7:PRINT"  key.    ";:FOR I=1 TO 3000:NEXT:E=5:GOTO 1270
1340 PRINT "THE MYSTERY DEEPENS AS YOU WERE FOOLED.";:LOCATE 1:RETURN
1350 PRINT "VERY GOOD.  YOU FOUND ONE OF THE ATOMS.";:LOCATE 1:RETURN
1360 PRINT "    THAT WAS THE LAST ATOM TO FIND.    ";:LOCATE 1:RETURN
1370 PRINT "PLEASE ENTER A NUMBER FROM 2 THROUGH 10";:LOCATE 1:FOR I=1 TO 5000:NEXT:RETURN
1380 Z=R:ON (Z-1)\8+1 GOTO 1390,1400,1410,1420
1390 LOCATE Z*2+3,3:PRINT Z$:GOTO 220
1400 Z=Z-8:LOCATE 22,Z*3+5:PRINT Z$:GOTO 220
1410 Z=25-Z:LOCATE Z*2+3,36:PRINT Z$:GOTO 220
1420 Z=33-Z:LOCATE 2,Z*3+5:PRINT Z$:GOTO 220
1430 LOCATE 25,1:PRINT "     DO WANT TO PLAY ANOTHER GAME ?    ";:LOCATE 1,1
1440 A$=INKEY$:IF A$="" THEN 1440 ELSE IF A$="y" OR A$="Y" THEN 120
1450 END
1460 FOR I=1 TO 8:FOR J=1 TO 8:PRINT B(J,I);:NEXT J:PRINT:NEXT

CHR.BAS

10 'program to display complete character set on monochrome display
20 '
30 'author:e.c. hume
40 '
50 COLOR 7,0:CLS:DEFINT I-N:KEY OFF
60 DEF SEG=&HB000                           'point to screen memory
70 FOR IROW=1 TO 24                         '24 rows
80 LOCATE IROW,1
90 FOR JCOL=1 TO 11                         '11 chars/row (7 spaces/char)
100 IJ=(IROW-1)*11+JCOL-1
110 IF IJ>255 GOTO 170
120 PRINT USING "###    ";IJ;:
130 NPOKE=(IROW-1)*160 +JCOL*14-6           'location for char. placement
140 POKE NPOKE+1,15                         'set attribute to high intensity
150 POKE NPOKE,IJ                           'place character ij
160 NEXT JCOL:NEXT IROW
170 LOCATE 25,27,0:COLOR 0,7:PRINT "   IBM character set   ";
180 LOCATE 25,1,0:COLOR 16,7:PRINT "  FLASH  ";
190 LOCATE 25,71,0:COLOR 9,0:PRINT "UNDERLINE";
200 COLOR 7,0:GOTO 200

CIAGAME.BAS

1 REM  Translated from TRS-80 version on CPMNET BBS
2 REM  Pete Wohlmut 10-3-82
3 DEF SEG= &H40
4 POKE(&H17),PEEK(&H17) OR &H20  ' set Num Lock
5 POKE (&H17),PEEK(&H17) OR &H40 ' set Caps Lock
6 DEF SEG
10 CLEAR:CLS:RANDOMIZE:DEFINT A-Z:GOTO 40
20 Z9=0:FOR R=1 TO 50:IF V1$=N$(R) AND (N(R)=LO OR N(R)=-1) THEN Z9=1:RETURN
30 NEXT:PRINT"I DON'T SEE THAT HERE.":Z9=2:RETURN
40 PRINT "        C.I.A  ADVENTURE"
50 DIM N1$(50),N$(50),N(50),V$(18),LO(30,4),LO$(30):FL=1:DR=0:DG=-1:T=0:EL=0:BU=0:DO=0:CA=0:BA=0:TE=0:GL=0
60 PA=0:RO=0:FOR R=1 TO 5:R1=INT(9*RND(9)):CO$=CO$+STR$(R1):NEXT:LO=1:A9$=">"+STRING$(62,"-")+"<"
70 R=LEN(CO$):CO$=RIGHT$(CO$,R-1)
80 FOR R=1 TO 50:READ N1$(R),N$(R),N(R):NEXT
90 FOR R=1 TO 30:READ LO$(R),LO(R,1),LO(R,2),LO(R,3),LO(R,4):NEXT
100 FOR R=1 TO 18:READ V$(R):NEXT
110 REM
120 PRINT"WE ARE ";LO$(LO);"."
130 FOR R=1 TO 46:IF N(R)=LO THEN PRINT"I CAN SEE ";N1$(R);"."
140 NEXT:B=0:FOR R=1 TO 4:IF LO(LO,R)>0 THEN B=1
150 NEXT:IF B=0 THEN 200
160 PRINT"WE COULD EASILY GO: ";:IF LO(LO,1)>0 THEN PRINT"NORTH  ";
170 IF LO(LO,2)>0 THEN PRINT"SOUTH  ";
180 IF LO(LO,3)>0 THEN PRINT"EAST  ";
190 IF LO(LO,4)>0 THEN PRINT"WEST  ";
200 PRINT:PRINT A9$
210 T=T+1:IF DG>0 THEN DG=DG-1
220 IF T=1 THEN INPUT"ENTER YOUR NAME PARTNER";NA$
230 GOTO 1760
240 N=0:FOR R=1 TO 46:IF N(R)=-1 THEN N=N+1
250 NEXT
260 PRINT:INPUT"WHAT DO YOU THINK WE SHOULD DO";A$
270 GOSUB 1890:V$=LEFT$(A$,3):GOSUB 1950:FOR R=1 TO 18:IF V$=V$(R) THEN 300 ELSE NEXT
280 IF V$="ORD" THEN 2210
290 PRINT"I DON'T KNOW HOW TO DO THAT.":GOTO 260
300 IF V$="QUI" THEN 1650
310 V=R:FOR R=1 TO LEN(A$):IF MID$(A$,R,1)=" " THEN 360 ELSE NEXT
320 IF V$="LOO" THEN 110
330 IF V$="BON" THEN 1670
340 IF V$="INV" THEN 1690
350 PRINT"PLEASE USE 2 WORD COMMANDS SO I CAN UNDERSTAND YOU.":GOTO 260
360 V1$=MID$(A$,R+1,3):FOR R=1 TO 49:IF V1$=N$(R) THEN 390 ELSE NEXT
370 IF V1$="NOR" OR V1$="SOU" OR V1$="EAS" OR V1$="WES" THEN 390
380 PRINT"I DON'T KNOW WHAT IT IS YOU ARE TALKING ABOUT.":GOTO 260
390 ON V GOTO 400,530,620,680,800,840,1040,1140,1300,1320,1360,1450,1490,1540,1600,1650,1670,1690
400 IF V1$="NOR" AND LO(LO,1)>0 THEN LO=LO(LO,1):GOTO 110
410 IF V1$="SOU" AND LO(LO,2)>0 THEN LO=LO(LO,2):GOTO 110
420 IF V1$="EAS" AND LO(LO,3)>0 THEN LO=LO(LO,3):GOTO 110
430 IF V1$="WES" AND LO(LO,4)>0 THEN LO=LO(LO,4):GOTO 110
440 IF V1$="NOR" OR V1$="SOU" OR V1$="EAS" OR V1$="WES" THEN 520
450 GOSUB 20:IF Z9=2 THEN 210
460 IF R=8 THEN LO=5:GOTO 110
470 IF R=37 AND RO=1 AND LO=20 THEN LO=21:GOTO 110
480 IF R=10 THEN LO=11:GOTO 110
490 IF R=14 THEN LO=13:GOTO 110
500 IF R=33 THEN LO=3:GOTO 110
510 IF R=34 AND DO=1 THEN LO=9:GOTO 110
520 PRINT"I CAN'T GO THAT WAY AT THE MOMENT.":GOTO 210
530 GOSUB 20:IF Z9=2 THEN 210
540 IF R=2 OR R=3 OR R=4 OR R=6 OR R=15 OR R=16 OR R=20 OR R=21 OR R=22 OR R=23 OR R=25 OR R=26 OR R=27 OR R=28 OR R=30 OR R=31 OR R=37 OR R=39 OR R=40 OR R=42 OR R=44 OR R=45 OR R=46 THEN 560
550 PRINT"I CAN'T CARRY THAT!":GOTO 210
560 IF N(R)=-1 THEN PRINT"I ALREADY HAVE IT.":GOTO 210
570 IF N>=5 THEN PRINT"I CAN'T CARRY ANYMORE.":GOTO 210
580 PRINT"O.K.":N(R)=-1
590 IF V1$="PAI" AND PA=0 THEN PRINT"SOMETHING FELL FROM THE FRAME!":N(31)=LO:PA=1
600 IF V1$="TEL" THEN TE=0
610 GOTO 210
620 FOR R=1 TO 46:IF V1$=N$(R) AND N(R)=-1 THEN 640 ELSE NEXT
630 PRINT"I DON'T SEEM TO BE CARRYING IT.":GOTO 210
640 IF R=30 THEN PRINT"I DROPPED THE CUP BUT IT BROKE INTO SMALL PEICES.":PRINT"THE COFFEE SOAKED INTO THE GROUND.":N(30)=0:DR=0:GOTO 210
650 IF R=45 THEN GL=0
660 IF R=31 AND N(30)=-1 THEN PRINT"O.K. I DROPPED IT.":PRINT"BUT IT FELL IN THE COFFEE!":N(31)=0:DR=1:GOTO 210
670 PRINT"O.K. I DROPPED IT.":N(R)=LO:GOTO 210
680 IF V1$="BUT" AND LO=3 AND DO=0 THEN PRINT"THE DOORS OPEN WITH A WHOOSH!":DO=1:GOTO 210
690 IF N(46)=-1 AND V1$="BUT" THEN PRINT"I PUSH THE BUTTON ON THE BOX AND":GOTO 770
700 GOSUB 20
710 IF Z9=2 THEN 210
720 IF R=17 AND GL<>1 THEN PRINT"THERE'S ELECTRICITY COURSING THRU THE SQUARE!":PRINT"I'M BEING ELECTROCUTED!":GOTO 2330
730 IF R=35 AND BU=0 THEN PRINT"THE BUTTON ON THE WALL GOES IN .....":PRINT"CLICK! SOMETHING SEEMS DIFFFERENT NOW.":BU=1:GOTO 210
740 IF R=47 AND FL<>1 THEN LO(9,1)=3:FL=1:GOTO 790
750 IF R=48 AND FL<>2 THEN LO(9,1)=8:FL=2:GOTO 790
760 IF R=49 AND FL<>3 THEN LO(9,1)=10:FL=3:GOTO 790
770 IF N(46)=-1 AND (LO=6 OR LO=29)THEN PRINT"THERE IS A BLINDING FLASH....":FORR=1TO3000:NEXT:LO=1:FL=1:LO(9,1)=3:GOTO 110
780 PRINT"NOTHING HAPPENS.":GOTO 210
790 PRINT"THE DOORS CLOSE AND I FEEL AS IF THE ROOM IS MOVING.":PRINT"SUDDENLY THE DOORS OPEN AGAIN.":FOR R=1 TO 5000:NEXT:GOTO 110
800 GOSUB 20:IF Z9=2 THEN 210
810 IF R=18 AND GL<>1 THEN PRINT"THE LEVER HAS ELECTRICITY COURSING THRU IT!":PRINT"I'M BEING ELECTROCUTED!":GOTO 2330
820 IF R=18 AND EL=0 THEN PRINT"THE LEVER GOES ALL THE WAY UP AND CLICKS.":PRINT"SOMETHING SEEMS DIFFERENT NOW.":EL=1:GOTO 210
830 PRINT"NOTHING HAPPENS.":GOTO 210
840 REM
850 IF V1$="DRA" AND LO=5 THEN PRINT"IT LOOKS FRAGILE.":GOTO 210
860 GOSUB 20:IF Z9=2 THEN 210
870 IF R=1 AND BA<>1 THEN PRINT"THERE'S NO POWER FOR IT.":GOTO 210
880 IF R=1 AND TE<>1 THEN PRINT"THERE'S NO T.V. TO WATCH ON.":GOTO 210
890 IF R=6 THEN PRINT"IT LOOKS HEAVY.":GOTO 210
900 IF R=7 THEN PRINT"IT'S LOCKED.":GOTO 210
910 IF R=13 THEN PRINT"IT'S A VERY STRONG BAG.":GOTO 210
920 IF R=19 THEN PRINT"I CAN SEE A LOCKED DRAWER IN IT.":GOTO 210
930 IF R=22 OR R=27 THEN PRINT"THERE'S WRITING ON IT.":GOTO 210
940 IF R=34 AND DO=1 THEN PRINT"THE DOORS ARE OPEN.":GOTO 210
950 IF R=24 THEN PRINT"I CAN SEE A GLEAMING STONE IN IT.":GOTO 210
960 IF R=9 THEN PRINT"THERE IS A SMALL SLIT NEAR THE DOOR.":GOTO 210
970 IF R=34 THEN PRINT"THERE'S A BUTTON NEAR THE DOORS.":GOTO 210
980 IF R=41 AND BU=1 THEN PRINT"THE SCREEN IS DARK.":GOTO 210
990 IF R=41 THEN PRINT"I SEE A METAL PIT 1000'S OF FEET DEEP ON ONE MONITOR.":PRINT"ON THE OTHER SIDE OF THE PIT,I SEE A LARGE HOOK.":GOTO 210
1000 IF R=43 AND BU=1 THEN PRINT"THE SCREEN IS DARK.":GOTO 210
1010 IF R=43 THEN PRINT"I SEE A ROOM WITH A CASE ON A PEDESTAL IN IT.":GOTO 210
1020 IF R=44 THEN PRINT"I SEE A PICTURE OF A GRINNING JACKAL.":GOTO 210
1030 PRINT"I SEE NOTHING OF INTEREST.":GOTO 210
1040 GOSUB 20:IF Z9=2 THEN 210
1050 IF R<>3 AND R<>2 AND R<>4 AND R<>28 THEN PRINT"I CAN'T INSERT THAT!":GOTO 210
1060 INPUT"TELL ME, IN ONE WORD, INTO WHAT";A3$:A3$=LEFT$(A3$,3)
1070 R1=R:V1$=A3$:GOSUB 20:IF Z9=2 THEN 210
1080 IF R1=3 AND R=1 THEN PRINT"O.K.":BA=1:N(3)=0:BA=1:GOTO 210
1090 IF R1=4 AND R=50 AND DG<=0 THEN PRINT"THE GUARD WON'T LET ME!":GOTO 210
1100 IF R1=2 AND R=1 THEN PRINT"O.K. THE TAPE IS IN THE RECORDER.":N(2)=0:TA=1:GOTO 210
1110 IF R1=4 AND R=50 THEN PRINT"POP! A SECTION OF THE WALL OPENS.....":PRINT"REVEALING SOMETHING VERY INTERESTING.":N(4)=0:N(5)=LO:GOTO 210
1120 IF R1=28 AND R=29 THEN PRINT"POP! A CUP OF COFFEE COMES OUT OF THE MACHINE.":N(28)=0:N(30)=LO:GOTO 210
1130 PRINT"NOTHING HAPPENED.":GOTO 210
1140 REM
1150 IF V1$="DRA" AND LO=5 AND N(23)=0 THEN PRINT"IT's STUCK.":GOTO 210
1160 GOSUB 20:IF Z9=2 THEN 210
1170 IF R=7 OR R=9 OR R=13 OR R=15 OR R=23 OR R=32 OR R=5 THEN 1190
1180 PRINT"I CAN'T OPEN THAT!":GOTO 210
1190 IF R=7 AND N(16)=-1 THEN PRINT"O.K. I OPENED THE DOOR.":N(7)=0:N(8)=4:GOTO 210
1200 IF R=9 THEN PRINT"I CAN'T. IT DOESN'T WORK.":GOTO 210
1210 IF R=13 AND N(16)=-1 THEN PRINT"O.K. THE CLOSET IS OPENED.":N(13)=0:N(14)=14:GOTO 210
1220 IF R=15 THEN PRINT"I CAN'T. IT'S TOO STRONG.":GOTO 210
1230 IF R=23 THEN PRINT"IT'S STUCK.":GOTO 210
1240 IF R=32 AND N(28)=0 AND N(4)=0 AND SC=1 THEN PRINT "I OPEN THE SCULPTURE.":PRINT"SOMETHING FALLS OUT.":N(28)=LO:N(4)=LO:GOTO 210
1250 IF R<>5 THEN 1290
1260 INPUT"WHAT'S THE COMBINATION";C$
1270 IF C$=CO$ THEN PRINT"THE DOOR IS SLOWLY OPENING.":N(5)=0:N(9)=0:N(10)=10:GOTO 210
1280 PRINT"YOU MUST HAVE THE WRONG COMBINATION OR YOU ARE NOT":PRINT"SAYING IT RIGHT.":GOTO 210
1290 PRINT"I CAN'T DO THAT......YET!":GOTO 210
1300 IF V1$="GLO" AND N(45)=-1 THEN PRINT"O.K. I'M NOW WEARING THE GLOVES.":GL=1:GOTO 210
1310 PRINT"I CAN'T WEAR THAT!":GOTO 210
1320 IF V1$<>"SIG" AND V1$<>"NOT" THEN PRINT"I CAN'T READ THAT.":GOTO 210
1330 GOSUB 20:IF Z9=2 THEN 210
1340 IF R=22 THEN PRINT"IT SAYS:":PRINT NA$;",":PRINT"  WE HAVE DISCOVERED ONE OF CHAOSES SECRET WORDS.":PRINT"IT IS: BOND-007- .TO BE USED IN A -TASTEFUL- SITUATION.":GOTO 210
1350 IF R=27 THEN PRINT"IT SAYS: WATCH OUT! DANGEROUS!":GOTO 210
1360 IF V1$<>"REC" THEN PRINT"I CAN'T START THAT.":GOTO 210
1370 GOSUB 20:IF Z9=2 THEN 210
1380 IF BA<>1 OR TE<>1 OR TA<>1 THEN 1440
1390 PRINT"THE RECORDER STARTS UP AND PRESENTS A SHORT MESSAGE:"
1400 PRINTNA$;","
1410 PRINT"WE HAVE UNCOVERED A NUMBER THAT MAY HELP YOU."
1420 PRINT"THAT NUMBER IS:";CO$;". PLEASE WATCH OUT FOR HIDDEN TRAPS."
1430 PRINT"ALSO, THERE IS SOMETHING IN THE SCULPTURE.":SC=1:GOTO 210
1440 PRINT"NOTHING HAPPENED.":GOTO 210
1450 IF V1$<>"DRA" THEN PRINT"I'M TRYING TO BREAK IT, BUT I CAN'T.":GOTO 210
1460 IF N(6)<>-1 THEN PRINT"I CAN'T DO THAT YET.":GOTO 210
1470 IF LO=5 THEN PRINT"IT'S HARD....BUT I GOT IT. TWO THINGS FELL OUT.":N(3)=LO:N(22)=LO:N(23)=LO:GOTO 210
1480 PRINT"NOTHING HAPPENS.":GOTO 210
1490 GOSUB 20:IF Z9=2 THEN 210
1500 IF R<>15 AND R<>24 THEN PRINT"I'M TRYING. IT DOESN'T WORK.":GOTO 210
1510 IF N(25)<>-1 THEN PRINT"I CAN'T DO THAT YET.":GOTO 210
1520 IF R=15 THEN PRINT"RIP! THE BAG GOES TO PIECES, AND SOMETHING FALLS OUT!":N(15)=0:N(2)=LO:GOTO 210
1530 IF R=24 THEN PRINT"I CUT THE CASE AND REACH IN TO PULL SOMETHING OUT.":N(26)=-1:GOTO 210
1540 IF V1$<>"ROP" THEN PRINT"I CAN'T THROW THAT.":GOTO 210
1550 IF N(37)<>-1 THEN PRINT"I CAN'T DO THAT YET.":GOTO 210
1560 INPUT"TELL ME,IN ONE WORD,AT WHAT";A3$:A3$=LEFT$(A3$,3)
1570 IF A3$<>"HOO" THEN PRINT"O.K. I THREW IT.":N(37)=LO:GOTO 210
1580 IF LO<>20 THEN PRINT"I CAN'T DO THAT YET.":GOTO 210
1590 PRINT"I THREW THE ROPE AND IT SNAGGED ON THE HOOK.":RO=1:N(37)=LO:GOTO 210
1600 IF V1$<>"TEL" THEN PRINT"I CAN'T CONNECT THAT.":GOTO 210
1610 IF N(40)<>LO THEN PRINT"I DON'T SEE THE TELEVISION HERE.":GOTO 210
1620 IF TE=1 THEN PRINT"I DID THAT ALREADY.":GOTO 210
1630 IF LO<>2 THEN PRINT"I CAN'T DO THAT....YET!":GOTO 210
1640 PRINT"O.K. THE T.V. IS CONNECTED.":TE=1:GOTO 210
1650 PRINT"WHAT? YOU WOULD LEAVE ME HERE TO DIE ALONE?"
1660 PRINT"JUST FOR THAT, I'M GOING TO DESTROY THE GAME.":PRINT:PRINT:PRINT:PRINT"BOOOOOOOOOOOOM!":FOR R=1 TO 5000:NEXT:GOTO 2370
1670 IF LO=14 THEN PRINT"WHOOPS! A TRAP DOOR OPENED UNDERNEATH ME AND":PRINT"I FIND MYSELF FALLING.":FOR R=1 TO 4000:NEXT:LO=17:GOTO 110
1680 PRINT"NOTHING HAPPENED.":GOTO 210
1690 Z8=0:PRINT"WE ARE PRESENTLY CARRYING:":FOR R=1 TO 46
1700 IF N(R)<>-1 THEN 1730
1710 PRINT N1$(R);:IF R=45 AND GL=1 THEN PRINT". WHICH I'M WEARING."ELSE PRINT" "
1720 Z8=1
1730 NEXT
1740 IF Z8=0 THEN PRINT"NOTHING"
1750 GOTO 210
1760 IF LO=3 AND N(39)=-1 THEN PRINT"THE DOOR MAN LOOKS AT MY BADGE AND THEN THROWS ME OUT.":FOR R=1 TO 5000:NEXT:LO=1:GOTO 110
1770 IF LO=10 AND N(42)<>-1 THEN PRINT"THE GUARD LOOKS AT ME SUSPICIOUSLY, THEN THROWS ME BACK.":FOR R=1 TO 4000:NEXT:LO=9:GOTO 110
1780 IF LO=6 AND BU<>1 THEN PRINT"SIRENS GO OFF ALL AROUND ME!":PRINT"GUARDS RUN IN AND SHOOT ME TO DEATH!":GOTO 2330
1790 IF LO=11 AND EL<>1 THEN PRINT"THE FLOOR IS WIRED WITH ELECDRICITY!":PRINT"I'M BEING ELECTROCUTED!":GOTO 2330
1800 IF LO=10 AND N(30)=-1 AND DR=1 THEN PRINT"THE GUARD TAKES MY COFFEE":PRINT"AND FALLS TO SLEEP RIGHT AWAY.":DG=5+INT(10*RND(10)):N(11)=0:N(12)=10:DR=0:N(30)=0:GOTO 240
1810 IF DG=0 THEN PRINT"I HEAR A NOISE LIKE SOMEONE IS YAWNING.":N(11)=10:N(12)=0:GU=-2:DG=-1:GOTO 240
1820 IF LO=1 AND N(26)=-1 THEN PRINT"HURRAY! YOU'VE RECOVERED THE RUBY!":PRINT"YOU WIN!":GOTO 2350
1830 IF T>375 THEN PRINT"I THINK THEY ARE ON TO ME....I HEAR NOISES."
1840 IF T=400 THEN PRINT"OH NO! THEY CAUGHT UP TO ME! HELP! THEY'RE PULLING OUT GUNS!":GOTO 2330
1850 IF T=1 THEN PRINT"WRITING ON THE WALL SAYS:":PRINT"IF YOU WANT INSTRUCTIONS TYPE:ORDERS PLEASE"
1860 IF LO=6 AND LO(6,2)<>0 THEN PRINT"A SECRET DOOR SLAMS DOWN BEHIND ME!":LO(6,2)=0:GOTO 240
1870 IF LO=10 AND GU=-2 THEN PRINT"THE GUARD DRAWS HIS GUN AND SHOOTS ME!":GOTO 2330
1880 GOTO 240
1890 IF A$="N" THEN A$="GO NORTH":RETURN
1900 IF A$="S" THEN A$="GO SOUTH":RETURN
1910 IF A$="E" THEN A$="GO EAST":RETURN
1920 IF A$="W" THEN A$="GO WEST":RETURN
1930 IF A$="I" THEN A$="INV":RETURN
1940 RETURN
1950 IF V$="WAL" OR V$="RUN" THEN V$="GO ":RETURN
1960 IF V$="TAK" OR V$="CAR" THEN V$="GET":RETURN
1970 IF V$="LEA" THEN V$="DRO":RETURN
1980 IF V$="PRE" THEN V$="PUS":RETURN
1990 IF V$="EXA" THEN V$="LOO":RETURN
2000 IF V$="PUT" THEN V$="INS":RETURN
2010 IF V$="UNL" THEN V$="OPE":RETURN
2020 IF V$="PLA" THEN V$="STA":RETURN
2030 IF V$="SMA" THEN V$="BRE":RETURN
2040 IF V$="ATT" THEN V$="CON":RETURN
2050 IF V$="LIS" THEN V$="INV":RETURN
2060 RETURN
2070 DATA A VIDEO CASSETTE RECORDER,REC,2,A VIDEO TAPE,TAP,0,A LARGE BATTERY,BAT,0,A BLANK CREDIT CARD,CAR,0,AN ELECTRONIC LOCK,LOC,0,AN ELABORATE PAPER WEIGHT,WEI,5,A LOCKED WOODEN DOOR,DOO,4,AN OPEN WOODEN DOOR,DOO,0,A SOLID LOOKING DOOR,DOO,10
2080 DATA AN OPEN DOOR,DOO,0,AN ALERT SECURITY GUARD,GUA,10,A SLEEPING SECURITY GUARD,GUA,0,A LOCKED MAINTENANCE CLOSET,CLO,14,A MAINTENANCE CLOSET,CLO,0,A PLASTIC BAG,BAG,13,AN OLDE FASHIONED KEY,KEY,9,A SMALL METAL SQUARE ON THE WALL,SQU,16
2090 DATA A LEVER ON THE SQUARE,LEV,16,AN OLD MAHOGANY DESK,DES,5,A BROOM,BRO,13,A DUSTPAN,DUS,13,A SPIRAL NOTEBOOK,NOT,0,A MAHOGANY DRAWER,DRA,0,A GLASS CASE ON A PEDESTAL,CAS,6,A RAZOR BLADE,BLA,27,A VERY LARGE RUBY,RUB,0,A SIGN ON THE SQUARE
2100 DATA SIG,16,A QUARTER,QUA,0,A COFFEE MACHINE,MAC,8,A CUP OF STEAMING HOT COFFEE,CUP,0,A SMALL CAPSULE,CAP,0,A LARGE SCULPTURE,SCU,3,A TALL OFFICE BUILDING,BUI,1,A PAIR OF SLIDING DOORS,DOO,3,A LARGE BUTTON ON THE WALL
2110 DATA BUT,29,A PANEL OF BUTTONS NUMBERED ONE THRU THREE,PAN,9,A STRONG NYLON ROPE,ROP,17,A LARGE HOOK WITH A ROPE HANGING FROM IT,HOO,21,A C.I.A. IDENTIFICATION BADGE,BAD,-1,A PORTABLE TELEVISION,TEL,7
2120 DATA A BANK OF MONITORS,MON,7,A CHAOS I.D. CARD
2130 DATA CAR,30,A BANK OF MONITORS,MON,19,A SMALL PAINTING,PAI,23,A PAIR OF RUBBER GLOVES,GLO,13,A BOX WITH A BUTTON ON IT,BOX,24,ONE,ONE,9,TWO,TWO,9,THREE,THR,9,SLIT,SLI,10,ON A BUSY STREET,0,0,0,0,IN A VISITOR'S ROOM,0,0,3,0
2140 DATA IN THE LOBBY OF THE BUILDING,1,0,4,2,IN A DINGY ANTE ROOM,0,0,0,3
2150 DATA IN THE COMPANY PRESIDENT'S OFFICE,0,0,0,4,IN A SMALL SOUND PROOFED CUBICLE,0,12,0,0,IN A SECURITY OFFICE,0,0,8,0,IN A SMALL HALLWAY,0,14,9,7,IN A SMALL ROOM,3,0,0,0,IN A SHORT CORRIDOR,0,15,0,9,IN A HALLWAY MADE OF METAL,0,0,12,10
2160 DATA IN A SMALL PLAIN ROOM,6,0,0,11
2170 DATA IN A MAINTENANCE CLOSET,0,0,14,0,IN A CAFETERIA,8,0,0,0,IN A SIDE CORRIDOR,10,0,16,0,IN A POWER GENERATOR ROOM,0,0,0,15,IN A SUB-BASEMENT BELOW THE CHUTE,0,0,18,0,IN THE ENTRANCE TO THE SECRET COMPLEX,0,20,19,17
2180 DATA IN A SECRET MONITORING ROOM,0,0,0,18,ON A LEDGE IN FRONT OF A METAL PIT 1000'S OF FEET DEEP,18,0,0,0,ON THE OTHER SIDE OF THE PIT,0,0,22,0,IN A LONG CORRIDOR,0,25,23,21,IN A LARGE ROOM,0,26,0,22,IN A SECRET LABORATORY,0,0,25,0
2190 DATA IN A NARROW CROSS CORRIDOR,22,0,0,24,IN A CROSS EXAMINATION ROOM,23,28,0,0,IN A SMALL BATHROOM,0,0,28,0,IN THE OFFICE OF THE CHIEF OF CHAOS,26,30,0,27,IN THE CHAOS CONTROL ROOM,0,0,30,0,NEAR THE END OF THE COMPLEX,28,0,0,29
2200 DATA "GO ",GET,DRO,PUS,PUL,LOO,INS,OPE,WEA,REA,STA,BRE,CUT,THR,CON,QUI,BON,INV
2210 PRINT"YOUR MISSION,";NA$;",IS TO RECOVER A RUBY THAT IS BEING"
2220 PRINT"USED IN TOP SECRET GOVERNMENT PROJECTS AS A PART IN A"
2230 PRINT"LASER PROJECTOR."
2240 PRINT"  YOU WILL HAVE A PARTNER WHO IS NOT TOO BRIGHT AND NEEDS"
2250 PRINT"YOU TO TELL HIM WHAT TO DO. USE TWO WORD COMMANDS LIKE:"
2260 PRINT:PRINT"              GET NOTEBOOK   GO WEST  LOOK DOOR"
2270 PRINT:PRINT"SOME COMMANDS USE ONLY ONE WORD. EXAMPLE: INVENTORY"
2280 PRINT"  IF YOU WANT TO SEE CHANGES IN YOUR SURROUNDINGS TYPE: LOOK"
2290 PRINT"THE RUBY HAS BEEN CAPTURED BY A SECRET SPY RING KNOWN AS"
2300 PRINT"CHAOS. WE SUSPECT THEY ARE UNDER COVER SOMEWHERE IN THIS"
2310 PRINT"NEIGHBORHOOD. GOOD LUCK!"
2320 GOTO 240
2330 FOR R=1 TO 5000:NEXT:PRINT"I'M DEAD!"
2340 PRINT"YOU DIDN'T WIN."
2350 INPUT"WOULD YOU LIKE TO TRY AGAIN (Y/N)";Z$
2360 IF Z$="Y" THEN RUN
2370 END

CRC.TXT

PC-SIG Disk No. #37, version v1

The following is a list of the file checksums which should be produced by
the CRCK4 program on disk #9 (and others).  If the CRC numbers do not match
you may have a bad file.  To use type:  CRCK4 <filespec>

CRCK4 output for this disk:


CRCK ver 4.2B (MS DOS VERSION )
CTL-S pauses, CTL-C aborts

--> FILE:  SLOTMACH.BAS         CRC = 58 15

--> FILE:  WILLTELL.BAS         CRC = 69 5A

--> FILE:  WILLTELL.DAT         CRC = A7 7A

--> FILE:  ATTACK  .BAS         CRC = 6C 6F

--> FILE:  BLACKBOX.BAS         CRC = 73 05

--> FILE:  CHR     .BAS         CRC = 22 D5

--> FILE:  EQNSOLVE.BAS         CRC = 72 58

--> FILE:  GALLERY .BAS         CRC = 09 A6

--> FILE:  INVEN   .BAS         CRC = E1 61

--> FILE:  MATH    .BAS         CRC = 52 29

--> FILE:  PERMUTE .BAS         CRC = 17 D9

--> FILE:  ROMCHAR .BAS         CRC = 9B 65

--> FILE:  SCRAMBLE.BAS         CRC = 8E 38

--> FILE:  SERPENT .BAS         CRC = FB 69

--> FILE:  SURROUND.BAS         CRC = D0 2B

--> FILE:  ZAP'EM  .BAS         CRC = EF F5

--> FILE:  SPINOUT .BAS         CRC = D8 6A

--> FILE:  CIAGAME .BAS         CRC = 27 98

--> FILE:  MENU    .BAS         CRC = 5A 87

 ---------------------> SUM OF CRCS = 72 42

DONE

These and other Public Domain and user-supported programs from:

PC Software Interest Group
1125 Stewart Ct  Suite G
Sunnyvale, CA 94086
(408) 730-9291

EQNSOLVE.BAS

10 REM save "solver
20 REM this program will solve a system of n linear
30 REM equations in n unknowns 1<=n<=10
40 DIM WMT(10,21)
60 PRINT
70 PRINT "This program will solve a"
80 PRINT "system of n linear equations"
90 PRINT "in n unknowns, n<=10."
100 PRINT
110 PRINT "The solution method involves"
120 PRINT "inverting the coefficient"
130 PRINT "matrix via the Gauss-Jordan"
140 PRINT "elimination method."
150 PRINT
160 PRINT "(Y/N) do wish to see"
170 INPUT "      help text? ";A$
180 IF LEFT$(A$,1)="Y" OR LEFT$(A$,1)="y" THEN GOSUB 1140
190 FOR I=1 TO 10
200 FOR J=1 TO 21
210 WMT(I,J)=0
220 NEXT J
230 NEXT I
240 GOSUB 880
250 REM THIS PORTION OF THE PROGRAM SOLVES THE
260 REM SYSTEM AND INVERTS THE COEFFICIENT MATRIX
270 REM SET UP IDENTITY IN WMT
280 FOR I=1 TO NV
290 WMT(I,I+10)=1
300 NEXT I
310 REM START SOLUTION
320 FOR I=1 TO NV
330 REM FIND LARGEST VALUE IN COLUMN I OF WMT
340 BIG=0
350 ROW=0
360 FOR J=I TO NV
370 TEST=ABS(WMT(J,I))
380 IF TEST<=BIG THEN GOTO 410
390 BIG=TEST
400 ROW=J
410 NEXT J
420 IF ROW=0 THEN GOTO 850
430 REM GOOD ROW FOUND, ROTATE ROW
440 FOR J=1 TO 21
450 TEMP=WMT(I,J)
460 WMT(I,J)=WMT(ROW,J)
470 WMT(ROW,J)=TEMP
480 NEXT J
490 REM FIX UP CLEARING ROW
500 DIV=WMT(I,I)
510 FOR J=1 TO 21
520 WMT(I,J)=WMT(I,J)/DIV
530 NEXT J
540 REM CLEAR COLUMN I
550 FOR J=1 TO NV
560 IF J=I THEN GOTO 650
570 MULT=WMT(J,I)
580 FOR K=1 TO NV
590 IF K<I THEN GOTO 610
600 WMT(J,K)=WMT(J,K)-WMT(I,K)*MULT
610 KK=K+10
620 WMT(J,KK)=WMT(J,KK)-WMT(I,KK)*MULT
630 NEXT K
640 WMT(J,21)=WMT(J,21)-WMT(I,21)*MULT
650 NEXT J
660 NEXT I
670 PRINT "Solution is found!"
680 PRINT
690 PRINT "Inverse of coefficient matrix, by rows:"
700 PRINT
710 FOR I=1 TO NV
720 FOR J=1 TO NV
730 PRINT WMT(I,J+10),
740 NEXT J
750 PRINT
760 NEXT I
770 PRINT
780 PRINT "Solution vector:"
790 PRINT
800 FOR I=1 TO NV
810 PRINT "X("+STR$(I)+")=";WMT(I,21)
820 NEXT I
830 PRINT
840 GOTO 1720
850 PRINT "Coefficeint matrix is singular!"
860 PRINT "No unique solution is possible."
870 GOTO 1720
880 REM THIS SUBROUTINE PROMPTS FOR INPUTS
890 INPUT "NUMBER OF VARIABLES: ";NV
900 IF NV<1 THEN GOTO 930
910 IF NV> 10 THEN GOTO 930
920 IF INT(NV)=NV THEN GOTO 970
930 PRINT "The number of variables must"
940 PRINT "be an integer n such that"
950 PRINT "1<=n<=10."
960 GOTO 890
970 PRINT "Now input coefficient matrix a:"
980 PRINT
990 FOR I=1 TO NV
1000 PRINT "Input row ";I
1010 FOR J=1 TO NV
1020 INPUT WMT(I,J)
1030 NEXT J
1040 NEXT I
1050 PRINT "Now input constant vector B"
1060 PRINT
1070 FOR I=1 TO NV
1080 INPUT WMT(I,21)
1090 NEXT I
1100 FOR I=1 TO 10
1110 PRINT
1120 NEXT I
1130 RETURN
1140 FOR I=1 TO 5
1150 PRINT
1160 NEXT I
1170 PRINT "Instructions page 1:"
1180 PRINT
1190 PRINT "Inputs:"
1200 PRINT " 1. The number of variables"
1210 PRINT " 2. The coefficient matrix A"
1220 PRINT "    by rows, one element at a time."
1230 PRINT " 3. The constant vector B"
1240 FOR I=1 TO 10
1250 PRINT
1260 NEXT I
1270 INPUT "Hit return for next page.";A$
1280 FOR I=1 TO 10
1290 PRINT
1300 NEXT I
1310 PRINT "Instructions page 2:"
1320 PRINT
1330 PRINT "For example, the system:"
1340 PRINT
1350 PRINT "  2X(1)-X(2)=5"
1360 PRINT "  -X(2)+3X(3)=-2"
1370 PRINT " X(1)-X(2)+3X(3)=1"
1380 PRINT
1390 PRINT "Would involve 3 variables,"
1400 PRINT
1410 PRINT "Would have coefficient matrix:"
1420 PRINT
1430 PRINT "  2  -1  0"
1440 PRINT "  0  -1  3"
1450 PRINT "  1  -1  3"
1460 PRINT
1470 PRINT "And would have constant vector:"
1480 PRINT
1490 PRINT "  5  -2  1"
1500 INPUT "Hit return for next page.";A$
1510 FOR I=1 TO 9
1520 PRINT
1530 NEXT I
1540 PRINT "Instructions page 3:"
1550 PRINT "Outputs:"
1560 PRINT
1570 PRINT " 1. If the coefficient matrix is"
1580 PRINT "    is singular, this fact is"
1590 PRINT "    noted, and no solution is possible."
1600 PRINT
1610 PRINT " 2. If the coefficient matrix is"
1620 PRINT "    not singular, the following"
1630 PRINT "    information is output:"
1640 PRINT
1650 PRINT "    A. The inverse of the coefficient matrix"
1660 PRINT
1670 PRINT "    B. The solution vector."
1680 FOR I=1 TO 5
1690 PRINT
1700 NEXT I
1710 RETURN
1720 PRINT "(Y/N) Do you wish to solve"
1730 INPUT "another system";A$
1740 IF LEFT$(A$,1)="Y" THEN GOTO 110
1750 END

GALLERY.BAS

10 DEFINT A-Z
20 DIM TARNAM$(12)
30 DEF FNRAND(N)=FIX((RND*(N-1))+1)
40 KEY OFF
50 FOR I=1 TO 12
60 READ TARNAM$(I)
70 NEXT I
80 DATA "JEFF ","ASIS ","RAJU ","MIKE ","TERRY","JANET","FRANK","NANCY"
90 DATA "MARK ","TOM  ","DICK ","HARRY"
100 PLAY "MFO4"
110 CLS
120 R1 = 0 : R2 = 0
130 ITMCTR = 0 : GCNT = 2
140 GOSUB 1360
150 RANDOMIZE SECONDS
160 DELTA = (RND*7200)
170 GOSUB 1360
180 RANDOMIZE SECONDS
190 GUN = 0 ' GUN = FALSE
200 GROW = 22
210 GCOL = 59
220 TROW = 1
230 TCOL = 0
240 NOSHOT = 0
250 NOHIT = 0
260 NOTAR = 0
270 SCORE = 0
280 INPUT "WHAT IS YOUR SKILL LEVEL"; DIFLEV
290 IF (DIFLEV<1) OR (DIFLEV>10) THEN PRINT "?Skill level is between 1 and 10":GOTO 280
300 HWIN = 11 - DIFLEV
310 GOSUB 590 ' CALL SCREEN(DIFLEV)
320 ITMCTR = ITMCTR + 1
330 IF ITMCTR>10000 THEN ITMCTR=0
340 IF TCOL>=1 THEN 390
350 GOSUB 760 ' CALL NEWTAR(TARNAM,TARARR,TROW,R1,R2)
360 TCNT = 3 * RND + 1
370 NOTAR = NOTAR + 1
380 TCOL = 1
390 IF ((ITMCTR/TCNT)*TCNT)=ITMCTR THEN 430
400 FOR I=1 TO 15 : JK=JK+1
410 NEXT
420 GOTO 450
430 GOSUB 800 ' CALL TGTPRT(TROW,TCOL,TARARR)
440 TCOL = TCOL + 1
450 GOSUB 860 ' CALL SHOOT(GUN,GCOL)
460 IF ((ITMCTR/GCNT)*GCNT)=ITMCTR THEN GOSUB 1010 ` CALL GUNPRT(GROW,GCOL,GUN
470 GOSUB 1100 ` CALL HIT(GROW,ETC...)
480 IF GROW>0 THEN 320
490 GUN = 0 ' .FALSE.
500 GROW = 22
510 NOSHOT = NOSHOT + 1
520 GOSUB 1320 ' CALL PRTTST(NOSHOT,NOHIT,SCORE)
530 IF NOSHOT<10 THEN 320
540 LOCATE 24,1,0 : PRINT " GAME OVER...DO YOU WANT TO PLAY AGAIN ('Y'|'N')";
550 INPUT R$
560 IF LEFT$(R$,1) = "Y" THEN 190
570 IF R$="" THEN 190
580 END
590 CLS
600 INIT = 0
610 LOCATE 24,1,1
620 PRINT TAB(8);"TYPE 5 TO FIRE GUN"
630 PRINT TAB(13);"4 TO MOVE GUN LEFT"
640 PRINT TAB(13);"6 TO MOVE GUN RIGHT"
650 PRINT
660 PRINT TAB(7);"YOUR SKILL LEVEL IS ";DIFLEV
670 PRINT
680 PRINT TAB(10);"SHOTS FIRED  0"
690 PRINT TAB(10);"NO. OF HITS  0"
700 PRINT
710 PRINT TAB(12);"SCORE   0"
720 PRINT
730 PRINT TAB(60);"U"
740 PRINT
750 RETURN
760 J = FNRAND(12)
770 TARARR$ = TARNAM$(J)
780 TROW = FNRAND(10)
790 RETURN
800 LOCATE TROW,TCOL,0
810 PRINT " ";
820 IF TCOL <= 70 THEN PRINT TARARR$ : RETURN
830 PRINT SPC(5)
840 TCOL = -1
850 RETURN
860 KBRD$=INKEY$
870 IF KBRD$="" THEN RETURN
880 STRING = ASC(KBRD$)
890 IF STRING=53 THEN GUN = -1
900 IF GUN THEN RETURN
910 I=0
920 IF STRING=52 THEN I=-1
930 IF STRING=54 THEN I=+1
940 IF I=0 THEN RETURN
950 GCOL = GCOL + I
960 IF GCOL<44 THEN GCOL = 44
970 IF GCOL>74 THEN GCOL=74
980 TEMP=GCOL-1
990 LOCATE GROW,GCOL : PRINT " U "
1000 RETURN
1010 IF NOT GUN THEN RETURN
1020 OLDROW = GROW
1030 GROW = GROW - 1
1040 LOCATE OLDROW,GCOL
1050 IF OLDROW<>22 THEN PRINT SPC(2)
1060 IF GROW <= 0 THEN RETURN
1070 LOCATE GROW,GCOL
1080 PRINT " ^"
1090 RETURN
1100 IF GROW<>TROW THEN RETURN
1110 IF (TCOL+3-HWIN/2-GCOL)>0 THEN RETURN
1120 IF (TCOL+2+(HWIN+1)/2-GCOL)<0 THEN RETURN
1130 ' ---
1140 '    FOUND A HIT
1150 ' ---
1160 NOHIT = NOHIT + 1
1170 NEWTCOL = TCOL - 5
1180 FOR J = 1 TO 2
1190 LOCATE TROW,NEWTCOL,0:BEEP:PRINT "      HIT      "
1200 FOR I=1 TO 42
1210 KP=KP+1
1220 NEXT I
1230 LOCATE TROW,NEWTCOL,0:BEEP:PRINT "               "
1240 FOR I=1 TO 42
1250 KP=KP-1
1260 NEXT I
1270 NEXT J
1280 TCOL = 0
1290 GROW = 0
1300 SCORE = SCORE+200*NOHIT/(NOSHOT+1)+150*DIFLEV/TCNT
1310 RETURN
1320 LOCATE 17,23 : PRINT NOSHOT
1330 LOCATE 18,23 : PRINT NOHIT
1340 LOCATE 20,20 : PRINT SCORE
1350 RETURN
1360 MIN = VAL(MID$(TIME$,4,2))
1370 SECONDS = (VAL(RIGHT$(TIME$,2))*MIN)-DELTA
1380 RETURN

INVEN.BAS

10 '48K IN-MEMORY INVENTORY PROGRAM
20 'BY JERRY DIXON   VERSION 4/26/82
30 'VARIABLE LENGTH KEY FIELDS
40 'UP TO 15 VARIABLE LENGTH DESCRIPTORS
50 'DATA INDEXED BY DOUBLE LINKED LISTS. DATA ALWAYS SORTED.
60 'HIGH SPEED SEARCHING WITH ZONED ENTRY TABLE
70 'VARIABLES:
80 'D$(X,Y)-DATA ARRAY
90 'N(X)-FORWARD LINK LIST (NEXT)
100 'P(X)-BACK LINK LIST (PREVIOUS)
110 'SA-SEARCH ADDR,   ND-NEW DATA ADDR
120 'BB-"BEFORE BREAK POINT" ADDR
130 'AB-"AFTER BREAK POINT" ADDR
140 'Z(X)-ZONE ADDRESS TABLE,  L-LAST ENTRY ADDR
150 'I-TEMP LOOP VAR   J-TEMP LOOP VAR   I$-INKEY VAR
160 'F$-FILE NAME   E$(X)-TITLE ARRAY   N1-# OF ITEMS IN LIST
170 'N2-# OF DESCRIPTORS PER ITEM
180 'V-MAX DATA ARRAY SIZE (USED FOR 'DIM' STATEMENTS)
182 'W-TEMP VAR
190 'K-LINE# OF CHANGE   A-ARRAY UPDATED MARK
192 'B-SEARCH METHOD MARK
200 KEY OFF
210 DEFINT A-Z:V=300 'ARRAY SIZE
230 SA=0:ND=0:AB=0:BB=0:I$="":F$="":J=0:N1=0:N2=0:L=0:K=0:A=0:B=0:P=0:W=0
234 DIM Z(25),E$(15)
250 CLS:LOCATE 9,25
290 PRINT"ENTER FILE NAME (8 CHARS MAX)":I$=""
291 LOCATE 11,35:INPUT I$:IF LEN(I$)>8 OR LEN(I$)=0 THEN 250
292 GOSUB 1200:F$=I$+".INV":CLS:GOSUB 5500
294 IF I<>0 THEN 350 ELSE LOCATE 9,18
300 BEEP:PRINT F$;" CAN'T BE LOCATED ON EITHER DRIVE A OR B."
310 PRINT:PRINT TAB(29)"IS THIS A NEW FILE? (Y/N) "
320 I$=INKEY$:IF I$="N" OR I$="n" THEN 250 ELSE IF I$<>"Y" AND I$<>"y" THEN 320
325 PRINT:PRINT:PRINT:PRINT
330 PRINT TAB(12)"WHAT DRIVE WOULD YOU LIKE THE NEW FILE PLACED ON? (A/B)"
340 I$=INKEY$:IF I$="A" OR I$="a" THEN F$="A:"+F$:GOTO 1005 ELSE IF I$="B" OR    I$="b" THEN F$="B:"+F$:GOTO 1005 ELSE 340
350 CLS:LOCATE 9,29:PRINT "R E A D I N G   D A T A";
360 OPEN F$ FOR INPUT AS #1
364 INPUT#1,N1,N2:L=N1:GOSUB 1900
370 FOR I=0 TO N2:LINE INPUT #1,E$(I):NEXT:'READ TITLES
374 D$(0,0)="1"
380 FOR I=1 TO N1:FOR J=0 TO N2
390 LINE INPUT#1,D$(I,J):NEXT:IF ASC(D$(I,0))=ASC(D$(I-1,0)) THEN 394 ELSE LET   Z(ASC(D$(I,0))-65)=I
394 NEXT
400 CLOSE:GOTO 2000
1000 'INITILIZE NEW FILE
1005 CLS:LOCATE 9,10
1010 PRINT "WOULD YOU LIKE INSTRUCTIONS ON NAMING THE INVENTORY ITEMS? (Y/N)"
1012 I$=INKEY$:IF I$="Y" OR I$="y" THEN GOSUB 10000 ELSE IF I$<>"N" AND I$<>"n"  THEN 1012
1020 CLS:E$(0)="":LOCATE 9,1
1030 PRINT TAB(20)"WHAT IS YOUR 'KEY' TITLE? (16 CHARACTERS MAX)"
1035 PRINT:PRINT TAB(25);:LINE INPUT I$
1040 IF LEN(I$)=0 THEN BEEP:PRINT:PRINT"YOU MUST ENTER A KEY!":PRINT:GOTO 1030
1044 IF LEN(I$)>16 THEN BEEP:PRINT:PRINT"TITLE TOO LONG. RE-ENTER.":PRINT:       GOTO 1030
1045 GOSUB 1200:E$(0)=I$
1046 CLS:LOCATE 5,20:PRINT "HOW MANY DESCRIPTORS DO YOU WANT? (1 TO 15) ";:A=1
1047 INPUT I$
1048 N2=VAL(I$):IF N2<1 OR N2>15 THEN 1046 ELSE PRINT:PRINT:PRINT
1050 PRINT TAB(15)"NOW ENTER A TITLE FOR EACH OF THE";N2;"DESCRIPTOR LINES."
1052 PRINT TAB(25)"(COLOR, MODEL, SERIAL#, ETC...)."
1054 PRINT:PRINT TAB(15)"   NO MORE THAN 16 CHARACTERS PER TITLE.":PRINT:PRINT
1060 FOR I=1 TO N2
1070 PRINT"TITLE #";I;:LINE INPUT I$
1080 IF LEN(I$)>16 THEN PRINT"TITLE TOO LONG, RE-ENTER."::PRINT:GOTO 1070
1090 IF LEN(I$)<>0 THEN GOSUB 1200 'CONVERT TO UPPER CASE
1095 E$(I)=I$
1100 NEXT:GOSUB 1900:GOTO 2000
1199 'CONVERT I$ TO UPPER CASE
1200 FOR W=1 TO LEN(I$):J=ASC(MID$(I$,W,1))
1220 IF J>96 AND J<123 THEN J=J-32:MID$(I$,W,1)=CHR$(J)
1240 NEXT:RETURN
1900 DIM N(V),P(V),D$(V,N2)
1920 FOR I=0 TO V:LET N(I)=I+1:LET P(I)=I-1:NEXT:'SET UP LINK LISTS
1940 RETURN
2000 CLS:I=18
2002 PRINT TAB(I)"1 --- LIST ALL KEYS TO SCREEN
2010 PRINT:PRINT TAB(I)"2 --- ADD NEW ITEM
2020 PRINT:PRINT TAB(I)"3 --- LOCATE ITEM TO DISPLAY, DELETE, OR CHANGE
2024 PRINT:PRINT TAB(I)"4 --- LOCATE FIRST ITEM
2026 PRINT:PRINT TAB(I)"5 --- LOCATE LAST ITEM
2030 PRINT:PRINT TAB(I)"6 --- PRINT ALL DATA
2032 PRINT:PRINT TAB(I)"7 --- DISPLAY STATUS
2040 PRINT:PRINT TAB(I)"9 --- END PROGRAM & SAVE DATA
2050 LOCATE 24,24:PRINT"YOUR CHOICE ?";
2055 I$=INKEY$:IF I$<>"" THEN 2055
2060 I$=INKEY$:IF I$="9" THEN 2600 ELSE I=VAL(I$):IF I<1 OR I>7 THEN 2060
2070 ON I GOTO 7000,6000,2204,2500,2550,8000,9000:STOP
2200 'LOCATE ITEM
2204 CLS:I$=""
2206 PRINT TAB(10)"PRECEED SEARCH KEY WITH PERIOD (.) FOR NON-EXCLUSIVE SEARCH"
2210 LOCATE 9,23:PRINT "ENTER SEARCH KEY:"
2220 PRINT:PRINT TAB(23);:LINE INPUT "? ";I$
2230 IF LEN(I$)>55 OR LEN(I$)<1 OR I$="." THEN 2204
2232 IF LEFT$(I$,1)="." THEN B=1:I$=RIGHT$(I$,LEN(I$)-1) ELSE B=0
2234 GOSUB 1200:D$(0,0)=I$ 'CONVERT TO UPPER CASE
2240 I=ASC(I$)-65
2250 IF I<0 OR I>25 THEN PRINT"MUST START WITH ALPHA CHARACTER!": GOTO 2210
2254 'I = INDEX OF 0-25 REPRESENTING 1ST CHAR OF KEY
2256 CLS
2260 IF Z(I)=0 OR L=0 THEN 2290
2270 SA=Z(I):IF B=1 THEN 2284
2280 IF D$(0,0)=D$(SA,0) THEN 2300 ELSE IF D$(SA,0)>D$(0,0) OR SA=L THEN 2290    ELSE LET SA=N(SA):GOTO 2280
2284 IF D$(0,0)=LEFT$(D$(SA,0),LEN(D$(0,0))) THEN 2300:ELSE IF                   LEFT$(D$(SA,0),LEN(D$(0,0)))>D$(0,0) OR SA=L THEN 2290:ELSE LET SA=N(SA)        :GOTO 2284
2290 LOCATE 9,30:PRINT"ITEM NOT IN FILE":PRINT:PRINT:PRINT TAB(30);              :INPUT"ENTER TO CONTINUE";I$:D$(0,0)="":GOTO 2000
2300 K=17:GOSUB 4000:'PRT TITLES
2310 GOSUB 4200:'PRT DATA
2314 IF N1=0 THEN LOCATE 19,30:PRINT "DATA FILE EMPTY";
2320 I$=INKEY$:IF I$="" THEN 2320 ELSE IF LEN(I$)=2 THEN 3900 ELSE IF I$="N"     OR I$="n" THEN 2350 ELSE IF I$="P" OR I$="p" THEN 2360
2324 IF I$="F" OR I$="f" THEN SA=N(0):GOTO 2310 ELSE IF I$="L" OR I$="l" THEN    SA=L:GOTO 2310
2330 IF I$="M" OR I$="m" OR ASC(I$)=13 THEN 2000
2340 IF N1=0 THEN 2320 ELSE IF I$="C" OR I$="c" THEN:LOCATE 25,1:COLOR 31:PRINT  TAB(40);:LOCATE 25,1:PRINT TAB(15) "ENTER LINE # TO CHANGE ==>";:COLOR 7:       INPUT;" ",K:GOTO 2380 ELSE 2320
2350 LOCATE 19,30:IF SA=L OR SA=0 THEN PRINT ">>END OF FILE<<";:GOTO 2310:       ELSE PRINT STRING$(15,32);:SA=N(SA):GOTO 2310
2360 LOCATE 19,30:IF SA=0 OR P(SA)=0 THEN PRINT ">>END OF FILE<<";:GOTO 2310:    ELSE PRINT STRING$(15,32);:SA=P(SA):GOTO 2310
2370 'CHANGE LINE (K=LINE#)
2380 LOCATE 25,1:PRINT TAB(40);:IF K>N2 OR K<0 THEN 2300 ELSE GOSUB 4000
2390 GOSUB 4200:'PRT DATA
2394 ND=SA:IF K=0 THEN W=0:GOSUB 3000:'DELETE ITEM IF KEY CHANGED
2400 LOCATE K+2,78:PRINT"<";:LOCATE K+2,23:LINE INPUT D$(ND,K):A=1
2402 IF K=0 AND D$(ND,0)="" THEN 2400
2403 IF K=0 THEN I$=D$(ND,0):GOSUB 1200:D$(ND,0)=I$ 'CONVERT KEY TO UPPER CASE
2404 IF K=0 AND (ASC(D$(ND,0))-65<0 OR ASC(D$(ND,0))-65>25) THEN 2400
2410 IF LEN(D$(ND,K))>55 THEN LET D$(ND,K)=LEFT$(D$(ND,K),55)
2430 IF K=0 THEN GOSUB 5000:'RE-ADD ITEM IF KEY CHANGED
2440 GOTO 2300
2500 IF N1=0 THEN SA=0 ELSE SA=N(0)
2510 GOTO 2300
2550 SA=L:GOTO 2300
2599 'END OF PGM
2600 CLS:IF A=0 THEN END ELSE LOCATE 9,30:PRINT"SAVING DATA"
2610 OPEN F$ FOR OUTPUT AS #1:PRINT#1,N1;N2
2620 FOR I=0 TO N2:PRINT#1,E$(I):NEXT
2624 K=N(0)
2630 FOR I=1 TO N1:FOR J=0 TO N2:PRINT#1,D$(K,J):NEXT:LET K=N(K):NEXT
2640 CLOSE:CLS:IF A=2 THEN A=0:GOTO 2600
2650 PRINT TAB(16);"0 --- NO BACKUP NEEDED";TAB(16);"1 --- BACKUP ON DRIVE A";   TAB(16);"2 --- BACKUP ON DRIVE B":PRINT:PRINT
2660 PRINT TAB(20);"YOUR CHOICE?";:I$=INKEY$
2670 I$=INKEY$:IF I$="0" THEN A=0 ELSE IF I$="1" THEN A=2:MID$(F$,1,2)="A:" ELSE IF I$<>"2" THEN 2670 ELSE A=2:MID$(F$,1,2)="B:"
2680 GOTO 2600
2999 'SUB TO DELETE ITEM SA
3000 IF W=0 THEN 3006 ELSE LOCATE 25,22:COLOR 31:BEEP:PRINT"ARE YOU SURE? (Y/N)" ;:COLOR 7
3002 I$=INKEY$:IF I$="N" OR I$="n" THEN LOCATE 25,22:PRINT TAB(50);:W=0:RETURN   ELSE IF I$<>"Y" AND I$<>"y" THEN 3002
3004 W=1:LOCATE 25,22:PRINT TAB(50);
3006 IF SA=0 THEN RETURN ELSE BB=P(SA): AB=N(SA): ND=SA: A=1
3010 IF SA=L THEN L=P(L):SA=L:GOTO 3050
3020 N(BB)=N(SA):P(AB)=P(SA)
3030 P(SA)=L:N(SA)=N(L):P(N(L))=SA:N(L)=SA
3040 SA=AB
3050 N1=N1-1
3060 'UPDATE ZONE TABLE FOR DELETE
3064 D$(0,0)=""
3070 IF BB=L THEN IF LEFT$(D$(BB,0),1)=LEFT$(D$(ND,0),1) THEN RETURN ELSE 3110
3080 IF LEFT$(D$(AB,0),1)=LEFT$(D$(BB,0),1) THEN RETURN
3090 IF LEFT$(D$(BB,0),1)=LEFT$(D$(ND,0),1) THEN RETURN
3100 IF LEFT$(D$(AB,0),1)=LEFT$(D$(ND,0),1) THEN Z(ASC(D$(ND,0))-65)=AB:RETURN
3110 Z(ASC(D$(ND,0))-65)=0:RETURN
3900 IF ASC(RIGHT$(I$,1))=17 THEN 8200 ELSE IF ASC(RIGHT$(I$,1))=32 THEN W=1     :GOSUB 3000:IF W=1 THEN FOR I=0 TO N2:LET D$(ND,I)="":NEXT:I$=INKEY$:GOTO 2310  ELSE 2310
3910 GOTO 2320
3999 'SUB TO PRT TITLES (K=LINE# FOR DOUBLE SPACE)
4000 CLS:FOR I=0 TO N2:IF I<10 THEN PRINT " ";
4010 PRINT RIGHT$(STR$(I),LEN(STR$(I))-1);") ";E$(I)
4020 IF I=K THEN PRINT"===================>>":PRINT
4025 NEXT
4030 LOCATE 20,1:PRINT STRING$(79,"-")
4034 IF K=20 THEN PRINT"ENTER NEW DATA (55 MAX EACH LINE)":PRINT:PRINT"TO RETURN TO MENU, JUST PUSH ENTER AT LINE 0";:RETURN
4036 IF K<17 THEN RETURN
4040 PRINT"DISPLAY:   N=NEXT    P=PREVIOUS    F=FIRST    L=LAST    M=MAIN MENU"
4044 PRINT"PRINTER:   ALT W"
4050 PRINT"DELETE :   ALT D     (DELETES ENTIRE ITEM!)"
4060 PRINT"CHANGE :   C";
4070 RETURN
4199 'SUB TO LIST ITEM DATA
4200 FOR I=0 TO N2
4210 IF I<=K THEN LOCATE I+1,23:PRINT D$(SA,I);TAB(79); ELSE LOCATE I+3,23:PRINT D$(SA,I);
4220 NEXT:RETURN
4999 'ADD NEW ITEM ND TO LIST
5000 I=ASC(D$(ND,0))-65:A=1:D$(0,0)=""
5010 FOR I=I TO 25:IF Z(I)=0 THEN NEXT ELSE 5030
5020 BB=L:L=ND:SA=ND:N1=N1+1:GOTO 5130:'ADD TO END OF LIST
5030 SA=Z(I):'SET START OF SEARCH ADDR
5040 IF D$(SA,0)>D$(ND,0) THEN 5050 ELSE IF SA=L THEN 5020 ELSE LET SA=N(SA):    GOTO 5040
5050 AB=SA:BB=P(SA):SA=ND
5060 N(L)=N(ND):P(N(ND))=L:'BREAK ND OUT OF FREE LIST
5070 N(BB)=ND:P(AB)=ND:P(ND)=BB:N(ND)=AB:'ADD ND TO DATA LIST
5074 N1=N1+1
5080 'UPDATE ZONE TABLE FOR ADD
5090 IF LEFT$(D$(AB,0),1)=LEFT$(D$(BB,0),1) THEN RETURN
5100 IF LEFT$(D$(BB,0),1)=LEFT$(D$(ND,0),1) THEN RETURN
5110 IF LEFT$(D$(AB,0),1)=LEFT$(D$(ND,0),1) THEN Z(ASC(D$(AB,0))-65)=ND:RETURN
5120 Z(ASC(D$(ND,0))-65)=ND:RETURN
5130 IF LEFT$(D$(ND,0),1)=LEFT$(D$(BB,0),1) THEN RETURN ELSE 5120
5500 'LOOK FOR DATA FILE
5520 ON ERROR GOTO 5700
5540 OPEN "A:"+F$ FOR INPUT AS #1
5560 CLOSE:F$="A:"+F$:I=1
5580 ON ERROR GOTO 0
5600 RETURN
5620 ON ERROR GOTO 5800
5640 OPEN "B:"+F$ FOR INPUT AS #1
5660 CLOSE:F$="B:"+F$:I=2
5680 GOTO 5580
5700 CLOSE:X=INP(&H61):OUT &H61,X+128:Y=INP(&H60):OUT &H61,X:IF Y AND 64 = 64    THEN RESUME 5620 ELSE I=0:RESUME 5580
5800 CLOSE:I=0:RESUME 5580
5999 'INPUT NEW DATA ITEM
6000 CLS:IF N1=V THEN LOCATE 9,0:PRINT TAB(30);"DATA ARRAY FULL":PRINT TAB(29);: INPUT"ENTER TO CONTINUE",I$:GOTO 2000
6010 K=20:ND=N(L):GOSUB 4000:'PRT TITLES
6020 FOR I=0 TO N2
6030 D$(ND,I)="":LOCATE I+2,78:PRINT CHR$(24);:LOCATE I+1,78:PRINT" ";:          LOCATE I+1,22:LINE INPUT"> ";D$(ND,I)
6044 IF LEN(D$(ND,I))>55 THEN LET D$(ND,I)=LEFT$(D$(ND,I),55)
6046 IF I=N2 THEN 6060
6048 IF I=0 AND D$(ND,I)="" THEN 2000
6049 IF I=0 THEN I$=D$(ND,I):GOSUB 1200:D$(ND,I)=I$ 'CONVERT KEY TO UPPER CASE
6050 IF I=0 AND (ASC(D$(ND,0))-65<0 OR ASC(D$(ND,0))-65>25) THEN 6000 ELSE NEXT
6060 GOSUB 5000:'ADD NEW ITEM TO LIST
6070 GOTO 6000
6999 'LIST KEYS
7000 CLS:J=0:K=N(0):IF N1=0 THEN PRINT"DATA FILE EMPTY":GOTO 7040
7010 FOR I=1 TO N1
7020 PRINT D$(K,0):LET K=N(K)
7030 LET J=J+1:IF J=22 THEN PRINT:PRINT"   1 ---CONTINUE,  2 ---END";:GOTO 7034  ELSE 7036
7034 I$=INKEY$:IF I$="2" THEN 2000 ELSE IF I$<>"1" THEN 7034 ELSE PRINT:J=0
7036 NEXT
7040 PRINT:PRINT"     END OF LISTING";
7050 IF INKEY$="" THEN 7050 ELSE 2000
7999 ' LPRINT ENTIRE FILE
8000 CLS:PRINT"PRINTING FILE. PUSH ANY KEY TO STOP AT END OF ITEM."
8004 P=1:SA=N(0):I$=INKEY$:W=0
8010 FOR I=1 TO N1:GOSUB 8300:IF W=0 THEN 2000
8020 IF P+N2>64 THEN LPRINT STRING$(67-P,138);:P=1
8030 SA=N(SA):IF INKEY$="" THEN NEXT:GOTO 2000 ELSE 2000
8199 ' LPRINT ITEM
8200 W=0:GOSUB 8300:I$=INKEY$:GOTO 2320
8299 ' LPRINT ITEM SA
8300 IF W<>0 THEN 8330
8310 FOR J=0 TO N2:IF LEN(E$(J))>W THEN W=LEN(E$(J))
8320 NEXT:W=W+4
8330 ON ERROR GOTO 8400:LPRINT STRING$(W,"="):P=P+1:FOR J=0 TO N2:LPRINT E$(J);
8340 IF LEN(D$(SA,J))=0 THEN LPRINT:ELSE LPRINT TAB(W)D$(SA,J)
8344 P=P+1
8350 NEXT:LPRINT STRING$(2,138);:P=P+2
8360 ON ERROR GOTO 0:RETURN
8400 W=0:RESUME 8360
8999 'FILE STATUS
9000 CLS:PRINT TAB(28)"P L E A S E   W A I T":PRINT:PRINT:PRINT
9002 PRINT TAB(12)"FOR LARGE INVENTORIES THIS COULD TAKE SEVERAL MINUTES."
9004 I=LEN(F$):BB=N(0)
9006 FOR J=0 TO N2:LET I=I+LEN(E$(J)):NEXT
9010 FOR J=1 TO N1:FOR K=0 TO N2:LET I=I+LEN(D$(BB,K)):NEXT
9014 LET BB=N(BB):NEXT:J!=FRE(I$):CLS:J=25
9020 PRINT TAB(J)"TOTAL ITEMS IN FILE --";N1:PRINT
9030 PRINT TAB(J)"TOTAL MEM USED -------";I;"BYTES":PRINT
9032 IF N1=0 THEN 9050
9040 PRINT TAB(J)"AVG BYTES PER ITEM ---";INT(I/N1):PRINT:PRINT:PRINT:PRINT
9050 PRINT TAB(J)"REMAINING ITEM SLOTS IN ARRAY ---";V-N1:PRINT
9060 PRINT TAB(J)"REMAINING BYTES OF MEMORY -------";J!:PRINT
9070 LOCATE 24,J:PRINT"ENTER TO CONTINUE";:INPUT I$:GOTO 2000
10000 CLS:I=17
10020 PRINT TAB(I)"Each item in your new inventory data file will"
10040 PRINT TAB(I)"have a 'key' and one to fifteen description lines."
10060 PRINT:PRINT:PRINT TAB(27)"S A M P L E :"
10080 PRINT:PRINT
10100 PRINT TAB(I)"(0)  NAME"
10120 PRINT TAB(I)"(1)  DESCRIPTION"
10140 PRINT TAB(I)"(2)  MODEL"
10160 PRINT TAB(I)"(3)  SERIAL #"
10180 PRINT TAB(I)"(4)  COST"
10200 PRINT TAB(I)"(5)  DATE BOUGHT"
10220 PRINT:PRINT:
10240 PRINT TAB(I)"Line (0) is called the 'KEY'. Your inventory"
10260 PRINT TAB(I)"file will always be kept in alphabetical order"
10280 PRINT TAB(I)"by key. The other lines are 'DESCRIPTOR' lines"
10300 PRINT TAB(I)"and may be titled anything you like, up to 16 characters."
10320 PRINT:PRINT:PRINT:PRINT TAB(27)"ENTER TO CONTINUE";:INPUT I$
10340 CLS:PRINT TAB(I)"Please take care in naming your 'KEY' and"
10360 PRINT TAB(I)"'DESCRIPTOR' lines as they cannot be changed once"
10380 PRINT TAB(I)"you have started using this particular inventory file."
10400 PRINT:PRINT:PRINT
10420 PRINT TAB(I)"You may maintain many different inventory files,"
10440 PRINT TAB(I)"on one or more diskettes, each with it's own"
10460 PRINT TAB(I)"inventory file name (up to 8 characters max)."
10480 PRINT:PRINT:PRINT:PRINT:PRINT TAB(27)"ENTER TO CONTINUE";:INPUT I$
10500 RETURN

MATH.BAS

10 CLS
20 KEY OFF
30 X=RND(1)
40 LOCATE 10,1:INPUT "HI THERE! MY NAME IS MATH WHIZ. WHAT'S YOUR NAME";N$
50 PRINT
60 PRINT "OK, ";N$;", LETS PLAY A NUMBERS GAME."
70 PRINT
80 INPUT "WOULD YOU LIKE INSTRUCTIONS (YES OR NO) ";Y$
90 IF LEFT$(Y$,1)="N" THEN 210
100 PRINT
110 PRINT "I WILL GIVE YOU ADDITION, SUBTRACTION, MULTIPLICATION, OR DIVISION PROBLEMS.  A LITTLE BIT OF EACH IF YOU LIKE."
120 PRINT
130 PRINT "SIMPLY"
140 PRINT "TYPE 1 FOR ADDITION"
150 PRINT "TYPE 2 FOR SUBTRACTION"
160 PRINT "TYPE 3 FOR MULTIPLICATION"
170 PRINT "TYPE 4 FOR DIVISION"
180 PRINT "TYPE 5 FOR  A LITTLE OF EACH OF THE ABOVE"
190 PRINT
200 PRINT "WHEN YOU ARE DONE PLAYING, TYPE 999 AFTER I GIVE YOU A PROBLEM AND I WILL GIVE  YOU YOUR SCORE. DON'T FORGET TO DEPRESS THE `RETURN' KEY AFTER EVERY ENTRY."
210 PRINT
220 INPUT "WHAT IS YOUR PLEASURE (1,2,3,4,5)";T
230 PRINT
240 INPUT "WHAT IS THE MAXIMUM VALUE I SHOULD GIVE FOR ONE NUMBER";N
250 PRINT
260 INPUT "WHAT IS THE MAXIMUM VALUE I SHOULD GIVE FOR THE OTHER NUMBER";P
270 PRINT
280 INPUT "TYPE ANY LETTER";R$
290 PRINT
300 FOR I=1 TO ASC(R$)
310 R1=RND(0)
320 NEXT I
330 IF T<5 THEN 360
340 G=1
350 T=INT(4*RND(0)+1)
360 A=A+1
370 X=INT((N+1)*RND(VAL(MID$(TIME$,4,2)))):IF X>N THEN 370
380 Y=INT((P+1)*RND(VAL(MID$(TIME$,4,2)))):IF Y>P THEN 380
390 ON T GOTO 400,440,520,560
400 REM   ADDITION
410 Z1=X+Y
420 PRINT A;".  ";X;"+";Y;"=";
430 GOTO 640
440 REM   SUBTRACTION
450 IF X>Y THEN 490
460 X1=Y
470 Y=X
480 X=X1
490 Z1=X-Y
500 PRINT A;".  ";X;"-";Y;"=";
510 GOTO 640
520  REM  MULTIPLICATION
530 Z1=X*Y
540 PRINT A;".  ";X;"X";Y;"=";
550 GOTO 640
560 REM   DIVISION
570 IF X>0 THEN 600
580 X=Y
590 Y=0
600 L=X*Y
610 Z1=Y
620 PRINT A;".  ";L;"/";X;"=";
630 REM  INPUT THE ANSWER PORTION OF THE PROGRAM
640 INPUT Z
650 IF Z=999 THEN 900
660 IF Z=Z1 THEN 770
670 R3=RND(0)
680 IF R3>0.333 THEN 710
690 PRINT:PRINT "SORRY, TRY AGAIN ";N$:PRINT
700 GOTO 750
710 IF R3>0.6670001 THEN 740
720 PRINT:PRINT "I KNOW YOU CAN DO BETTER THAN THAT!":PRINT
730 GOTO 750
740 PRINT:PRINT "CONCENTRATE!":PRINT
750 F=1
760 ON T GOTO 420,500,540,620
770 R2=RND(0)
780 IF R2>0.333 THEN 810
790 PRINT:PRINT "CONGRATULATIONS, ";N$:PRINT
800 GOTO 850
810 IF R2> 0.6670001 THEN 840
820 PRINT:PRINT "VERY GOOD, ";N$:PRINT
830 GOTO 850
840 PRINT:PRINT "NICE GOING, ";N$:PRINT
850 IF F=1 THEN 870
860 B=B+1
870 F=0
880 IF G=1 THEN 350
890 GOTO 360
900 PRINT:PRINT "HOPE TO SEE YOU AGAIN SOMETIME, ";N$
910 A=A-1
920 C=A-B
930 D=INT(100*B/A)
940 PRINT:PRINT
950 PRINT"TOTAL NUMBER OF PROBLEMS ";A
960 PRINT
970 PRINT"TOTAL NUMBER CORRECT     ";B
980 PRINT
990 PRINT"TOTAL NUMBER WRONG       ";C
1000 PRINT
1010 PRINT"PERCENTAGE CORRECT       ";D;"%"
1020 END
0 KEY(2) ON:ON KEY(2) GOSUB 65140
10 DIM PROG$(64)
20 SCREEN 0:KEY OFF:KEY 1,"run"+CHR$(34)+"MENU"+CHR$(13)
30 CLS:WIDTH 80:COLOR 0,0:FILES "*.bas"
40 FOR DR%=1 TO 24
50 FOR DC%=0 TO 65 STEP 13
60 IF CHR$(SCREEN(DR%,DC%+1)) = " " THEN 130
70 AR%=AR%+1
80 FOR L%=1 TO 8
90 PROG$(AR%)=PROG$(AR%)+CHR$(SCREEN(DR%,DC%+L%))
100 NEXT L%
110 NEXT DC%
120 NEXT DR%
130 P=0:I%=0:CLS:WIDTH 40:LOCATE 1,4:COLOR 14,0
135 PRINT "BASIC programs on this diskette:"
140 FOR DC%=1 TO 27 STEP 13
150 FOR DR%=3 TO 23
160 I%=I%+1
170 IF PROG$(I%)="" THEN 200 ELSE LOCATE DR%,DC%
175 COLOR 0,7:PRINT USING "##";I%;
176 COLOR 7,0:PRINT " ";PROG$(I%)
180 NEXT DR%
190 NEXT DC%
200 LOCATE 25,1:INPUT "Enter number of program desired: ",P
210 IF P < 1 OR P >= I% THEN 130
220 WIDTH 80:CLS:PRINT "Press F1 to return to menu when finished":RUN PROG$(P)
65130 E=ERR:RESUME NEXT
65140 ON ERROR GOTO 65130
65145 'RUN"menu
65150 'IF E<>71 THEN RUN"control
65160 RUN"A:TRANSFER
65170 SYSTEM

PERMUTE.BAS

10 REM THIS PROGRAM WILL DO ALL THE POSSIBLE PERMUTATIONS OF ANY GIVEN SET OF          LETTERS.
20 CLS
30 KEY OFF
40 PRINT TAB(25)"PERMUTATIONS":PRINT:PRINT
50 REM PERMUTATIONS BY KEN WASSERMAN
60 INPUT "LETTERS:", W$
70 L=LEN(W$)
80 DIM W$(L),I(L)
90 W$(L)=W$
100 GOSUB 120
110 END
120 IF L=0 THEN GOSUB 190:RETURN
130 I(L)=L
140 W$=MID$(W$,1,L-1)+MID$(W$(L),I(L),1)+MID$(W$,L+1)
150 W$(L-1)=MID$(W$(L),1,I(L)-1)+MID$(W$(L),I(L)+1)
160 L=L-1:GOSUB 120:L=L+1
170 I(L)=I(L)-1:IF I(L)=0 THEN RETURN
180 GOTO 140
190 PRINT W$,
200 RETURN

ROMCHAR.BAS

80  ' THIS PROGRAM CAN BE FOUND IN THE JULY'82 ISSUE OF CREATIVE COMPUTING.
90  '
100 ' ROMCHAR - display dot matrix characters from ROM patterns
110 ' Will Fastie -- Revised 24 march 1982
120 DEFINT A-Z
130 DIM COLMASK(8)
140 FOR I=0 TO 7: COLMASK(I+1)=2^(7-I): NEXT I
150 DOTCHAR =219
160 DOTSIZE=1
170 DOT$=STRING$(DOTSIZE,DOTCHAR)
180 GOSUB 490
190 DEF SEG=&HF000
200 BASEADR=&HFA6E
210 BYTESPERCHAR=8
220 KEY OFF
230  ' Main loop
240  CLS
250 CHAR$=INKEY$: IF CHAR$="" THEN 250
260 IF CHAR$=" " THEN CLS: END
270 CODE=ASC(CHAR$)
280 IF CODE >= 128 THEN BEEP: GOTO 230
290 ADR = BASEADR+(CODE*BYTESPERCHAR)
300 CLS
310 X=8
320 Y=(SCREENWIDTH-(8*DOTSIZE))/2
330 GOSUB 350
340 GOTO 250
350 ' Subroutine to display character
360 FOR ROW=1 TO 8
370   ROWVAL=PEEK(ADR+(ROW-1))
380   FOR COL=1 TO 8
390     COLMASK= COLMASK(COL)
400     IF (ROWVAL AND COLMASK) <> 0 THEN  GOSUB 450
410   NEXT COL
420 NEXT ROW
430 LOCATE 1,1
440 RETURN
450 ' Locate to bit position and display giant pixel!
460 LOCATE X+(ROW-1),Y+(COL-1)*DOTSIZE
470 PRINT DOT$;
480 RETURN
490 ' Initialize display
495 WIDTH 80
500 SCREENWIDTH=80
510 RETURN

SCRAMBLE.BAS

5  ' SCRAMBLE WORD GAME.   VERSION 3/11/82
10 CLS:KEY OFF:LOCATE 5,25:PRINT "S C R A M B L E D   E G G S"
15 DEF SEG:POKE 106,0
20 LOCATE 9,25:PRINT "DO YOU WISH INSTRUCTIONS";
30 C$=INKEY$:RANDOMIZE RND*1000:IF C$="" THEN 30 ELSE IF C$<>"Y" AND C$<>"y"     THEN 140
40 CLS:PRINT"THE OBJECT OF THIS GAME IS TO TRY AND UNSCRAMBLE A FIVE LETTER WORD AS QUICKLY AS POSSIBLE.  THE FASTER YOU ARE THE MORE POINTS YOU SCORE. YOU HAVE ONLY 60 SECONDS FOR EACH WORD."
50 PRINT:PRINT"FOR EXAMPLE:"
60 PRINT"              T M C H A     WOULD BE     M A T C H "
70 PRINT"                               OR"
80 PRINT"              N L A B K     WOULD BE     B L A N K "
90 PRINT:PRINT "THE COMPUTER CONTROLS THE ENTIRE GAME.   YOU   D O   N O T   HIT ENTER - - - MERELY TYPE IN THE WORD YOU BELIEVE TO BE CORRECT."
100 PRINT:PRINT:PRINT:INPUT"PRESS ENTER TO TURN THE PAGE";E$
110 CLS:PRINT"IF YOU MAKE A MISTAKE TYPING - - - FINISH THE WORD - - - YOU MAYNOT BACKSPACE."
120 PRINT:PRINT"SOME WORDS MAY BE USED MORE THAN ONCE AND SOME MAY EVEN APPEAR  IN CORRECT ORDER.  EACH GAME CONSISTS OF TEN WORDS FOR EACH     PLAYER."
130 PRINT:PRINT"HAVE FUN!":PRINT:PRINT:PRINT:INPUT"PUSH ENTER TO BEGIN";G$
140 CLS
150 INPUT "1ST PLAYERS NAME";N$(1)
160 INPUT "2ND PLAYERS NAME";N$(2)
170 X=0:CLS:PRINT N$(1);"'S TURN"
180  FOR O=1 TO 500:NEXT O:  GOTO 210
190 X=0:CLS:PRINT N$(2); "'S TURN"
200  FOR O = 1 TO 500:  NEXT O
210 RESTORE
220 Q=INT(210*RND)+1
230 FOR F=1 TO Q
240 READ A$
250 IF A$= "END" THEN 210
260 NEXT F
270 A$(1) = MID$ (A$,1,1)
280 A$(2) = MID$ (A$,2,1)
290 A$(3) = MID$ (A$,3,1)
300 A$(4) = MID$ (A$,4,1)
310 A$(5) = MID$ (A$,5,1)
320 FOR I = 1 TO 5
330 R=INT(5*RND)+1
340 IF A$(R) ="0" THEN 330
350 B$(I) = A$(R)
360 A$(R) = "0"
370 NEXT I
375 T1$=RIGHT$(TIME$,2)
377 T$=RIGHT$(TIME$,2):IF T$=T1$ THEN 377
380 LOCATE 5,24:COLOR 15:FOR I = 1 TO 5
390 PRINT B$(I);"     ";
400 NEXT I:COLOR 7
410 V$=INKEY$:IF V$<>"" THEN 410
420 GOSUB 900 : V$=I$
440 LOCATE 9,28:PRINT V$;
450 GOSUB 900 : W$=I$
470 LOCATE 9,32:PRINT W$;
480 GOSUB 900 : X$=I$
500 LOCATE 9,36:PRINT X$;
510 GOSUB 900 : Y$=I$
530 LOCATE 9,40:PRINT Y$;
540 GOSUB 900 : Z$=I$
560 LOCATE 9,44:PRINT Z$;
570 IF A$ = (V$+W$+X$+Y$+Z$) THEN 590
580 LOCATE 9,20:PRINT TAB(60);:GOTO 410
590 S=S+1: IF S/2 = INT (S/2) THEN 660
600 P1=P1+G
610 PRINT:PRINT:PRINT:PRINT TAB(6) "CORRECT!":PRINT
620 PRINT"YOU SCORE ";G; "POINTS"
630 LOCATE 22,30:PRINT "ROUND";INT(S/2)+1:PRINT
640 PRINT TAB(20) N$(1);P1;"       ";N$(2);P2;
650 FOR V=1 TO 4000: NEXT V: GOTO 190
660 P2=P2+G
670 PRINT:PRINT:PRINT:PRINT TAB(6) "CORRECT!":PRINT
680 PRINT "YOU SCORE";G;"POINTS
690 LOCATE 22,30:PRINT "ROUND";S/2:PRINT
700 PRINT TAB(20) N$(1);P1;"        ";N$(2);P2;
710 FOR V=1 TO 4000:NEXT V
720 IF S=20 THEN 730 ELSE 170
730 PRINT:PRINT "GAME OVER";:END
740 PRINT:PRINT "   OUT OF TIME":PRINT:PRINT"THE WORD WAS ";A$
750 S=S+1:IF S/2=INT(S/2) THEN 690 ELSE 630
760 T$=RIGHT$(TIME$,2):IF T1$<>T$ THEN T1$=T$:X=X+1:G=61-X
765 LOCATE 9,65:PRINT G;
770 IF G<=0 THEN 740
780 RETURN
790 DATA LEASE,FIRST,MONTH,MONEY,TOUCH,BRAND,TRULY,VALUE,RANGE,MUSIC,LEVEL,METER,POINT,TOTAL,PANEL,AMPLE,SOUND,THERE,THREE,ENJOY,BUILT,SHORT,COULD,CLEAN,PROOF,FLOOR,INDEX,PRICE,BOARD
800 DATA CABLE,CLOCK,TABLE,SMOKE,NOISE,LOWER,BASIC,AUDIO,FRONT,WHILE,RATIO,IMAGE
810 DATA FRONT,OTHER,IDEAL,STORE,POWER,WOMEN,TOTAL,MAGIC,GLOBE,MODEL,PRINT,TOWER,COVER,EIGHT,GLIDE,WATER,TODAY,PIZZA,METAL,SHELF,DRIVE,CLASS,GREAT,LIGHT,SCALE,STYLE,BREAD,DRINK,PHONE
820 DATA SHAPE,GREEN,GLASS,SAUCE,SLICE,HEART,LARGE,STEAM,ONION,STACK
830 DATA CREAM,CRUST,SALAD,EXTRA,ORDER,BACON,BLACK,OLIVE,SMALL,SPEAR,SCREW,SEVEN,DOUGH,FLOAT,HEARD,SOLID,HEAVY,CRISP,PINCH,PUNCH,SENSE,SOLID,STAND,EVERY,SHOCK,VINYL,MAPLE,WOVEN,GRAIN
840 DATA SKATE,FORCE,COLOR,PIECE,ANGLE,PITCH,WORTH,ABOUT,WEIGH,CHECK,HANDY,CANDY
850 DATA SWEEP,PATCH,WAGON,TRUCK,POUND,TOWEL,PAPER,QUIET,SPACE,RADIO,THESE,CARRY,ALONG,READY,THERE,WHERE,ALARM,PAUSE,TIMER,CLOTH,SHACK,STICK,ERASE,ALBUM,START,LAPEL,WHITE,DELAY
860 DATA EJECT,SLIDE,IDEAL,MINUS,GRAPH,FLOAT,QUICK,BLANK,SUITE,NYLON
870 DATA PROBE,RELAY,SOLID,SWEET,SLOPE,SLEEP,COUNT,LOGIC,MOUNT,DECAL,SCALE,ORDER,TORCH,SPADE,SCOPE,LABEL,ROUND,WAFER,CARRY,LOWER,TEACH,AGAIN,MOTOR,MAJOR,LEARN,ORGAN,GRIPE,EAGLE
880 DATA GAUGE,MATCH,AWARE,TRUNK,CLAMP,OTHER,WOULD,LIMIT,SWING,WRIST
890 DATA END
900 I$=INKEY$:IF I$="" THEN GOSUB 760:GOTO 900
910 IF LEN(I$) >1 THEN 900
920 I=ASC(I$):IF I >96 AND I <123 THEN I=I-32
930 I$=CHR$(I)
940 RETURN

SERPENT.BAS

10 KEY OFF:SCREEN 0,1:COLOR 15,0,0:WIDTH 40:CLS:LOCATE 5,19:PRINT "IBM"
20 LOCATE 7,8 ,0:PRINT "General  utility  programs"
30 COLOR 9 ,0:LOCATE 10,9,0:PRINT CHR$(213)+STRING$(21,205)+CHR$(184)
40 LOCATE 11,9,0:PRINT CHR$(179)+"       SERPENT       "+CHR$(179)
50 LOCATE 12,9,0:PRINT CHR$(179)+STRING$(21,32)+CHR$(179)
60 COLOR 9,0:LOCATE 13,9,0:PRINT CHR$(179)+"     Version  00     "+CHR$(179)
70 BEEP
80 LOCATE 14,9,0:PRINT CHR$(212)+STRING$(21,205)+CHR$(190)
90 COLOR 15,0,1:LOCATE 17,7,0:PRINT "OCTOBER 06 1982   USR-5-5-K "
100 COLOR 9,0:LOCATE 23,6,0:PRINT "Press space bar to continue..."
110 IF INKEY$ <> "" THEN GOTO 110
120 CMD$ = INKEY$
130 IF CMD$ = "" THEN GOTO 120
140 IF CMD$ = CHR$(27) THEN GOTO 160
150 IF CMD$ <> " " THEN GOTO 120
160 REM TRANSFER COMMAND
500 SCREEN 0,1:WIDTH 40:COLOR 1,0,1:KEY OFF:DEF SEG=0:POKE 1047,32
510 DL=0:L=10:SL=3:P=0
520 CLS:LOCATE 13,3:PRINT "press a key to start or ESC to end":A$=INPUT$(1):IF A$=CHR$(27) THEN CLS:COLOR 7,,0:END
530 X1=1:Y1=0:HX=1:HY=1:Y2=0:X2=1:EX=1:EY=1:AP=0:LE=L:PX(1)=2:PY(1)=24:PX1(1)=1:PY1(1)=-1:PX(2)=39:PY(2)=24:PX1(2)=-1:PY1(2)=-1
540 CLS:PS=1/(DL+1)*40:FOR R=1 TO DL:GOSUB 950:NEXT
550 FOR R=1 TO 40:LOCATE 25,R:PRINT "█";:NEXT
560 COLOR 4:FOR R=1 TO 5:LOCATE RND*22+2,RND*39+1:PRINT "ö";:NEXT
570 A=VAL(INKEY$):COLOR 1:LOCATE HY,HX:IF Y1=0 THEN PRINT "─"; ELSE PRINT "│";
580 IF A=4 AND X1<>-1 THEN X1=-1:LOCATE HY,HX:IF Y1=1 THEN PRINT "┘";:Y1=0 ELSE PRINT "┐";:Y1=0:GOTO 620
590 IF A=6 AND X1<>1 THEN X1=1:LOCATE HY,HX:IF Y1=1 THEN PRINT "└";:Y1=0 ELSE PRINT "┌";:Y1=0:GOTO 620
600 IF A=2 AND Y1<>1 THEN Y1=1:LOCATE HY,HX:IF X1=1 THEN PRINT "┐";:X1=0 ELSE PRINT "┌";:X1=0:GOTO 620
610 IF A=8 AND Y1<>-1 THEN Y1=-1:LOCATE HY,HX:IF X1=1 THEN PRINT "┘";:X1=0 ELSE PRINT "└";:X1=0:GOTO 620
620 HX=HX+X1:HY=HY+Y1:IF HX<1 OR HX>40 OR HY<1 OR HY>24 THEN GOTO 860
630 S=SCREEN(HY,HX):IF S<219 AND S>178 OR S=235 THEN 860
640 IF S=148 THEN SC=SC+10:LOCATE 25,20-LEN(STR$(SC))/2:PRINT SC;:L=L+1:SOUND 100,1:SOUND 1000,0.5:AP=AP+1:IF AP<5 THEN 750 ELSE FOR R=1 TO 10:A$=INKEY$:NEXT:DL=DL+1:IF DL=5 THEN DL=0:P=P+1:GOTO 530 ELSE 530
650 IF S=162 THEN 860
660 LOCATE HY,HX:IF Y1=0 THEN PRINT "│"; ELSE PRINT "─";
670 IF LE>1 THEN LE=LE-1:GOTO 750
680 '------------------------------
690 S=SCREEN(EY,EX):LOCATE EY,EX:PRINT " ";
700 IF S=179 THEN EY=EY+Y2 ELSE IF S=196 THEN EX=EX+X2
710 IF S=191 THEN IF X2=1 THEN X2=0:Y2=1:EY=EY+Y2 ELSE IF Y2=-1 THEN Y2=0:X2=-1:EX=EX+X2
720 IF S=192 THEN IF X2=-1 THEN X2=0:Y2=-1:EY=EY+Y2 ELSE IF Y2=1 THEN Y2=0:X2=1:EX=EX+X2
730 IF S=217 THEN IF X2=1 THEN X2=0:Y2=-1:EY=EY+Y2 ELSE IF Y2=1 THEN Y2=0:X2=-1:EX=EX+X2
740 IF S=218 THEN IF X2=-1 THEN X2=0:Y2=1:EY=EY+Y2 ELSE IF Y2=-1 THEN Y2=0:X2=1:EX=EX+X2
750 COLOR 9:FOR PL=1 TO P
760 LOCATE PY(PL),PX(PL):PRINT " ";:PX(PL)=PX(PL)+PX1(PL):PY(PL)=PY(PL)+PY1(PL)
770 IF PX(PL)<2 OR PX(PL)>39 THEN PX1(PL)=-PX1(PL):GOTO 820
780 IF PY(PL)<2 OR PY(PL)>24 THEN PY1(PL)=-PY1(PL):GOTO 820
790 S1=SCREEN(PY(PL)+PY1(PL),PX(PL)):S2=SCREEN(PY(PL),PX(PL)+PX1(PL)):IF S1<219 AND S1>178 THEN PY1(PL)=-PY1(PL)
800 IF S2<219 AND S2>178 THEN PX1(PL)=-PX1(PL)
810 LOCATE PY(PL),PX(PL):PRINT "ó";
820 NEXT
830 '-----------------------------
840 GOTO 570
850 '------------------------------
860 FOR R=1000 TO 400 STEP -50:COLOR ,,R MOD 16:SOUND R,0.05:NEXT:FOR R=1 TO 10:A$=INKEY$:NEXT:COLOR ,,1
870 SL=SL-1:IF SL>0 THEN 530
880 COLOR 4,,4:CLS:EX=20:HX=20:S=2550:FOR HY=1 TO 25
890 LOCATE HY,HX:PRINT "─";:S=S-50:SOUND S,1:LOCATE HY,HX:PRINT "│";
900 NEXT:FOR EY=1 TO 25
910 LOCATE EY,EX:PRINT " ";:S=S-25:SOUND S,1:NEXT
920 SOUND -50,1:SOUND 37,5:FOR W=1 TO 2500:NEXT
930 GOTO 500
940 '------------------------------
950 FOR LP=5 TO 19:LOCATE LP,PS:PRINT "│"STRING$(9,28)"│";:NEXT
960 LOCATE 12,PS:PRINT "┼─────────┼";
970 PS=PS+5:RETURN

SLOTMACH.BAS

10 M=25
20 RANDOMIZE INT(VAL(MID$(TIME$,7,2)))
30 WIDTH 80:CLS:GOSUB 1290
40 REM 'CONVERTED FOR IBM-PC FROM 101 BASIC COMPUTER GAMES BY DIGITAL
50 REM 'EQUIPMENT CORP. SUBMITTED TO DIGITAL BY ROB HOFFBERG OF ROSLYN N.Y.
60 REM 'AUTHOR UNKNOWN
70 CLS
80 PRINT "OK ";N$;" Here are the odds:"
90 LOCATE 5,10:PRINT "SYMBOL     HOW MANY     PAYOUT"
100 LOCATE 6,10:PRINT "111111111111111111111111111111"
110 LOCATE 7,10:PRINT "CHERRY        3         $2.00"
120 LOCATE 8,10:PRINT "CHERRY        2         $1.00   LEFT & MID WINDOWS ONLY!"
130 LOCATE 9,10:PRINT "CHERRY        1         $0.50   LEFT WINDOW ONLY!"
140 LOCATE 11,10:PRINT "PLUM          3         $5.00"
150 LOCATE 12,10:PRINT "ORANGE        3         $7.50"
160 LOCATE 13,10:PRINT "*BAR*         3        $10.00"
170 LOCATE 15,10:PRINT "      LEMONS ALWAYS LOOSE"
180 LOCATE 20,5:PRINT "When the message PULL appears, press ENTER to PULL."
190 LOCATE 21,5:PRINT "Or type END to end the session."
200 LOCATE 23,5:PRINT "When you are ready to begin press ENTER.";:INPUT Z9$
210 L$=CHR$(186)
220 S$=CHR$(205)
230 B$=CHR$(186)
240 DIM W$(4)
250 W$(1)="CHERRY":W$(2)="      ":W$(3)="*BAR* ":W$(4)=" PLUM "
260 REM "WHEEL ONE
270 DIM V$(7)
280 V$(1)="ORANGE":V$(2)=" PLUM ":V$(3)="LEMON ":V$(4)="*BAR* "
290 V$(7)="CHERRY":V$(5)="CHERRY":V$(6)="CHERRY"
300 REM "WHEEL TWO
310 DIM V1$(7)
320 V1$(1)="*BAR* ":V1$(2)="LEMON ":V1$(3)=" PLUM "
330 V1$(4)="CHERRY":V1$(5)=" PLUM ":V1$(6)="ORANGE":V1$(7)="CHERRY"
340 REM "WHEEL THREE
350 DIM V3$(5)
360 V3$(1)=" PLUM ":V3$(2)="*BAR* ":V3$(3)="CHERRY":V3$(4)="LEMON "
370 V3$(5)="ORANGE"
380 CLS
390 Y=16:FOR X=1 TO 18:LOCATE X,Y:PRINT S$:NEXT X
400 X=18:FOR Y=17 TO 50:LOCATE X,Y:PRINT B$:NEXT Y
410 Y=51:FOR X=18 TO 1 STEP-1:LOCATE X,Y:PRINT S$:NEXT X
420 X=1:FOR Y=50 TO 17 STEP-1:LOCATE X,Y:PRINT L$:NEXT Y
430 REM "ARM
440 LOCATE 14,52:PRINT "/";
450 Y=52:FOR X=13 TO 8 STEP-1:LOCATE X,Y:PRINT "//";:Y=Y+1:NEXT X
460 FOR X=7 TO 6 STEP-1:LOCATE X,57:PRINT STRING$(3,196):NEXT X
470 LOCATE 13,28:PRINT "P A Y O U T":LOCATE 14,33
480 X=15:FOR Y=24 TO 42:LOCATE X,Y:PRINT L$:NEXT Y
490 FOR X=15 TO 17:LOCATE X,43:PRINT S$:NEXT X
500 FOR Y=42 TO 24 STEP-1:LOCATE 17,Y:PRINT B$:NEXT Y
510 FOR X=17 TO 15 STEP-1:LOCATE X,23:PRINT S$:NEXT X
520 REM "******LEFT WINDOW*****
530 FOR Y=18 TO 26:LOCATE 5,Y:PRINT L$:NEXT Y
540 FOR X=5 TO 7:LOCATE X,27:PRINT S$:NEXT X
550 FOR Y=26 TO 18 STEP-1:LOCATE 7,Y:PRINT B$:NEXT Y
560 FOR X=7 TO 5 STEP-1:LOCATE X,18:PRINT S$:NEXT X
570 REM "*****MID WINDOW*****
580 FOR Y=30 TO 37:LOCATE 5,Y:PRINT L$:NEXT Y
590 FOR X=5 TO 7:LOCATE X,38:PRINT S$:NEXT X
600 FOR Y=37 TO 30 STEP-1:LOCATE 7,Y:PRINT B$:NEXT Y
610 FOR X=7 TO 5 STEP-1:LOCATE X,29:PRINT S$:NEXT X
620 REM "*****RIGHT WINDOW*****
630 FOR Y=41 TO 48:LOCATE 5,Y:PRINT L$:NEXT Y
640 FOR X=5 TO 7:LOCATE X,49:PRINT S$:NEXT X
650 FOR Y=48 TO 41 STEP-1:LOCATE 7,Y:PRINT B$:NEXT Y
660 FOR X=7 TO 5 STEP-1:LOCATE X,40:PRINT S$:NEXT X
670 REM "DO YOU PULL OR END
680 LOCATE 21,24:PRINT "YOU NOW HAVE ";:PRINT USING "$$###.##";M
690 LOCATE 22,30:PRINT "PULL/END";:INPUT A$
700 LOCATE 16,24:PRINT E$;E$;E$;E$;"   "
710 E$="    ":LOCATE 6,19:PRINT E$;E$:LOCATE 6,30:PRINT E$;E$:LOCATE 6,41:PRINT E$;E$
720 IF A$="END" OR A$="E" OR A$="end" OR A$="e" THEN 1250
730 REM " * PICK THE WHEELS
740 FOR I=1 TO 2:Z(I)=INT((RND*7)+1):NEXT I
750 Z(3)=INT((RND*5)+1)
760 REM "***** ROLL ALL WINDOWS AND PICK LEFT *****
770 FOR X=1 TO 10:FOR Y=1 TO 4:LOCATE 6,20:PRINT W$(Y)
780 LOCATE 6,31:PRINT W$(Y):LOCATE 6,42:PRINT W$(Y):NEXT Y:NEXT X
790 LOCATE 6,20:PRINT V$(Z(1))
800 SOUND 200,2
810 REM " ***** ROLL MID AND RIGHT AND PICK MID *****
820 FOR X=1 TO 15:FOR Y=1 TO 4
830 LOCATE 6,31:PRINT W$(Y):LOCATE 6,42:PRINT W$(Y):NEXT Y:NEXT X
840 LOCATE 6,31:PRINT V1$(Z(2))
850 SOUND 200,2
860 REM "***** ROLL RIGHT AND PICK RIGHT *****
870 FOR X=1 TO 20:FOR Y=1 TO 4
880 LOCATE 6,42:PRINT W$(Y):NEXT Y:NEXT X
890 LOCATE 6,42:PRINT V3$(Z(3))
900 SOUND 200,2
910 REM "DO I HAVE 3 OF A KIND
920 IF V$(Z(1))<>V1$(Z(2)) THEN 1050
930 IF V1$(Z(2))<>V3$(Z(3)) THEN 1050
940 IF V$(Z(1))<>"CHERRY" THEN 960
950 LOCATE 16,27:PRINT "YOU WIN $2.00":M=M+2:GOTO 670
960 IF V$(Z(1))<>" PLUM " THEN 980
970 LOCATE 16,27:PRINT "YOU WIN $5.00":M=M+5:GOTO 670
980 IF V$(Z(1))<>"ORANGE" THEN 1000
990 LOCATE 16,27:PRINT "YOU WIN $7.50":M=M+7.5:GOTO 670
1000 IF V$(Z(1))<>"*BAR* " THEN 1020
1010 LOCATE 16,27:PRINT "YOU WIN $10.00":M=M+10:GOTO 670
1020 REM "LEMONS
1030 LOCATE 16,28:PRINT "LEMONS LOSE!":M=M-0.25:GOTO 670
1040 REM
1050 REM "DO I HAVE CHERRIES
1060 IF V$(Z(1))<>"CHERRY" THEN 1140
1070 IF V1$(Z(2))<>"CHERRY" THEN 1120
1080 REM
1090 REM "2 CHERRIES
1100 LOCATE 16,27:PRINT "YOU WIN $1.00":M=M+1:GOTO 670
1110 REM
1120 REM " 1 CHERRY
1130 LOCATE 16,27:PRINT "YOU WIN $0.50":M=M+0.5:GOTO 670
1140 REM
1150 REM " GOT SCHMALTZ
1160 ON Z(3) GOSUB 1180,1190,1200,1210,1220,1230,1240
1170 M=M-0.25:GOTO 670
1180 LOCATE 16,25:PRINT "TRY BINGO INSTEAD":RETURN
1190 LOCATE 16,25:PRINT "HA HA YOU LOSE":RETURN
1200 LOCATE 16,25:PRINT "ZILCH-O":RETURN
1210 LOCATE 16,25:PRINT "TRY AGAIN SUCKER":RETURN
1220 LOCATE 16,25:PRINT "TRY VEGAS INSTEAD":RETURN
1230 LOCATE 16,25:PRINT "YOU GOT SCHMALTZ":RETURN
1240 LOCATE 16,25:PRINT "BACK TO STAR TREK":RETURN
1250 LOCATE 16,26:PRINT "BUY-BUY ";N$
1270 END
1280 END
1290 'COLOR 3
1300 KEY OFF:CLS:GOTO 1320
1310 CLS
1320 FOR J=2 TO 22
1330 LOCATE 2,2:PRINT CHR$(201):LOCATE 2,79:PRINT CHR$(187)
1340 LOCATE 23,2:PRINT CHR$(200):LOCATE 23,79:PRINT CHR$(188)
1350 LOCATE J,2:PRINT CHR$(186)
1360 LOCATE J,79:PRINT CHR$(186)
1370 NEXT J
1380 FOR J=3 TO 78
1390 LOCATE 2,J:PRINT CHR$(205)
1400 LOCATE 23,J:PRINT CHR$(205)
1410 NEXT J
1420 'COLOR 2
1430 LOCATE 4,4:PRINT "W E L C O M E  T O . . ."
1440 LOCATE 8,30:PRINT "I B M ' S  C A S I N O"
1450 LOCATE 17,4:PRINT "Today you will lose your money at IBM's famous slot machine."
1460 LOCATE 18,4:PRINT "You have been given a credit line of $25.00. Therefore at 25 a pull you"
1470 LOCATE 19,4:PRINT "have a minimum of 100 pulls!"
1480 LOCATE 20,4:PRINT "By the way what is your name";:INPUT N$
1490 RETURN

SPINOUT.BAS

10 REM ibm pc spinout
20 REM K.R. Sloan, Jr.
30 REM 1 January 1982
40 DIM BALL[14]
50 DIM PADDLE[9]
60 DIM BRICK[20,4]
65 RANDOMIZE(VAL(RIGHT$(TIME$,2)))
70 KEY OFF:PLAY "mb"
80 LOUD=0
90 BRUNO$="l16o2b-o3cl8ddc+16do2fp1"
110 T=8:B=188:L=8:R=308
120 BH=8:BW=(R-L)/20
130 BT=T+(BH*4):BB=BT+(BH*4)
135 CLS
140 LOCATE 7,12: PRINT "Welcome to Spinout";
150 LOCATE 8,12: PRINT "ArchMach Version 1";
160 LOCATE 12,1:PRINT "Choose a key to move the paddle right";
170 R$=INKEY$:IF R$="" GOTO 170
180 LOCATE 12,1:PRINT "Choose a key to move the paddle left ";
190 L$=INKEY$:IF L$="" GOTO 190
200 IF R$=L$ GOTO 160
210 LOCATE 12,1:PRINT "Choose a key to serve                ";
220 S$=INKEY$:IF S$="" GOTO 220
230 IF (R$=S$)OR(L$=S$) GOTO 160
240 LOCATE 12,1:PRINT "Choose a key to turn noise on/off   ";
250 N$=INKEY$:IF N$="" GOTO 250;
260 IF (R$=N$)OR(L$=N$)OR(S$=N$) GOTO 160
270 LOCATE 12,1:INPUT;"How good are you at this game (1-10)";SKILL
275 IF SKILL<1 GOTO 270
276 IF SKILL>10 GOTO 270
280 SKILL=SKILL/10
290 MAXVX=6+(4*SKILL):MAXVY=MAXVX
295 G=SKILL/5
296 DEF SEG=0:EQUIPMENT%=PEEK(&H410) ':POKE &H410,EQUIPMENT%-&H10
297 WIDTH 40:WIDTH 80:SCREEN 0,0,0:SCREEN 1:COLOR 1,0:CLS
300 LINE (0,0)-(319,199),0,BF
310 FOR BY=0 TO 3
320 FOR BX=0 TO 19
330 BRICK[1+BX,1+BY]=10+50*BY
340 LINE (L+2+(BW*BX),BT+2+(BH*BY))-STEP (BW-4,BH-4),2+INT(BY/2),BF
350 NEXT BX,BY
360 SCORE = 0
370 LINE (L,T)-(R,T)
380 LINE -(R,B)
390 LINE -(L,B)
400 LINE -(L,T)
410 X=160:Y=100
420 LASTD$=""
430 FOR I=1 TO 5
440 FOR J=1 TO 5
450 IF ((I-3)*(I-3))+((J-3)*(J-3))<6.25 THEN PSET (X-3+I,Y-3+J)
460 NEXT J,I
470 GET (X-2,Y-2)-(X+2,Y+2),BALL
480 PL=150:PR=170:PY=B-20
490 LINE (PL,PY)-(PR,PY),1,BF
500 GET(PL,PY)-(PR,PY),PADDLE
510 REM main loop
520 IF LOUD=1 THEN PLAY BRUNO$
530 FOR SHOT=1 TO 4
540 LOCATE 25,1
550 PRINT USING "#####";SCORE;
560 LOCATE 25,8
570 PRINT USING "Ball #  ";SHOT;
580 LOCATE 25,18
590 PRINT "K.R.Sloan,Jr.  1Jan82";
600 IF X>R THEN X=R
610 IF X<L THEN X=L
620 IF Y<T THEN Y=T
630 IF Y>B THEN Y=B
640 PUT(X-2,Y-2),BALL
650 X=L+RND(X)*(R-L)
660 Y=B-10
670 PUT(X-2,Y-2),BALL
680 VX=6*RND(1)-3
690 VY=-5-2*RND(1)
700 SPIN=0
710 FAST=1+SKILL
720 GOSUB 1410 `MOVE PADDLE
730 IF D$<>S$ GOTO 720
740 OX=X:OY=Y:OBX=BX:OBY=BY
750 OVX=VX:OVY=VY
760 VX=OVX-(SPIN*OVY*0.05):VY=OVY+(SPIN*OVX*0.05)+G
761 SPIN=SPIN*0.9999
770 IF VX>MAXVX THEN VX=MAXVX
771 IF VY>MAXVY THEN VY=MAXVY
780 IF VX<-MAXVX THEN VX=-MAXVX
781 IF VY<-MAXVY THEN VY=-MAXVY
790 X=X+VX:Y=Y+VY
800 BX=INT((X-L)/BW)
810 IF BX>19 THEN BX=19
820 IF BX<0 THEN BX=0
830 BY=INT((Y-BT)/BH)
840 IF BY>3 GOTO 1050
850 IF BY<0 GOTO 1050
860 IF BRICK[1+BX,1+BY]<=0 GOTO 1050
870 IF BY>1 GOTO 890
880 VY=VY*FAST
890 IF (OBX<>BX)THEN VX=-VX
900 IF (OBY<>BY)THEN VY=-VY
910 SCORE=SCORE+BRICK[1+BX,1+BY]
920 SOUND 440,2*LOUD
930 PUT(OX-2,OY-2),BALL,>=
940 LINE (L+2+(BW*BX),BT+2+(BH*BY))    -STEP (BW-4,BH-4),0,BF
950 PUT(OX-2,OY-2),BALL,>=
960 BRICK[1+BX,1+BY]=-BRICK[1+BX,1+BY]
970 IF SCORE<6800 GOTO 1050
972 LOCATE 25,1
974 PRINT USING "#####";SCORE;
980 FOR FLASH=1 TO 8
990 COLOR FLASH,0.5+RND(FLASH)
1000 PLAY "mfaemb"
1010 NEXT FLASH
1040 GOTO 1340
1050 IF X<=L THEN X=L+L-X:VX=-VX:VY=VY+SPIN:SOUND 600,2*LOUD
1060 IF X>=R THEN X=R+R-X:VX=-VX:VY=VY-SPIN:SOUND 1200,2*LOUD
1070 IF Y<=T THEN Y=T+T-Y:VY=-VY:VX=VX-SPIN:SOUND 880,2*LOUD
1080 IF Y>=B GOTO 1310
1090 IF (Y<PY)OR(OY>PY) THEN GOTO 1270
1100 IF ((PL-2)<X)AND(X<(PR+2)) GOTO 1130
1110 IF ((PL-2)<OX)AND(OX<(PR+2)) GOTO 1130
1120 GOTO 1270
1130 Y=PY+PY-Y
1140 SOUND 300,5*LOUD
1150 IF (RND(1)*2)>SKILL GOTO 1210
1160 BX=INT(RND(1)*19.99):BY=INT(RND(1)*3.99):
1170 IF BRICK[1+BX,1+BY]>0 GOTO 1210
1180 BRICK[1+BX,1+BY]=-BRICK[1+BX,1+BY]
1190 LINE (L+2+(BW*BX),BT+2+(BH*BY)) -STEP (BW-4,BH-4),2+INT(BY/2),BF
1200 SCORE=SCORE-BRICK[1+BX,1+BY]
1210 LOCATE 25,1
1220 PRINT SCORE;
1230 VY=-VY
1240 MISS=(X-(PL+PR)/2)/(PL-PR)
1250 VX=VX+VY*MISS*SKILL*5
1260 SPIN=(SPIN*SKILL)+MISS*SKILL
1270 PUT(X-2,Y-2),BALL,>=
1280 PUT(OX-2,OY-2),BALL,>=
1290 GOSUB 1410 'move paddle
1300 GOTO 740
1310 REM lost ball
1320 IF LOUD=1 THEN SOUND 200,20
1330 NEXT SHOT
1340 REM End of Game
1341 'DEF SEG=0:POKE &H410,125:WIDTH 40:WIDTH 80:SCREEN 0,0,0
1342 WIDTH 80:SCREEN 0,0,0
1350 LOCATE 12,20
1360 PRINT "Do you want to play another game?";
1370 D$=INKEY$
1380 IF D$="y" THEN RUN
1390 IF D$="n" THEN STOP
1400 GOTO 1370
1410 REM move paddle routine
1420 OPL=PL
1430 D$=INKEY$
1440 IF D$=N$ THEN LOUD=-1*LOUD+1
1450 IF D$=L$ THEN PL=PL-5:GOTO 1430
1460 IF D$=R$ THEN PL=PL+5:GOTO 1430
1470 IF PL<L THEN PL=L
1480 IF PL>(R-20) THEN PL=R-20
1490 IF OPL=PL THEN RETURN
1500 PR=PL+20
1510 PUT (OPL,PY),PADDLE,>=
1520 PUT(PL,PY),PADDLE,>=
1530 RETURN

SURROUND.BAS

1 DIM C(23,80): S1=0: S2=0: WIDTH 80
2 KEY OFF:CLS
3 LOCATE 1,29: PRINT "Welcome to the Game of"
4 LOCATE 2,36: COLOR 0,7: PRINT "SURROUND": COLOR 7,0
5 LOCATE 3,25: PRINT "by Grant M. Bright, Tucson, Az"
6 LOCATE 5,1:  PRINT "The object of this game is to maneuver a `";CHR$(2);"' around a maze without running into": PRINT "a wall or the trail left by either yourself or your opponent."
7 PRINT: PRINT "Two options are available:": PRINT: PRINT "     1. ONE PLAYER: The object here is to obtain the highest possible score"
8 PRINT: PRINT "     2. TWO PLAYER: The object here is to outscore your opponent by surviving": PRINT "                    the longest"
9 PRINT: PRINT "There are 3 levels of difficulty:": PRINT: PRINT "     1. BEGINNER": PRINT "     2. INTERMEDIATE": PRINT "     3. EXPERT": PRINT
10 INPUT "How many players (1 or 2)";PP
12 IF PP>2 OR PP<1 THEN 10
14 INPUT "Difficulty level (1, 2 or 3)";LL
16 IF LL>3 OR LL<1 THEN 14
20 CLS
25 FOR K=1 TO 80:LOCATE 1,K:PRINT CHR$(219);:C(1,K)=1:LOCATE 23,K:PRINT CHR$(219);:C(23,K)=1:NEXT
30 FOR L=2 TO 22:LOCATE L,1:PRINT CHR$(219):LOCATE L,80:PRINT CHR$(219):C(L,1)=1:C(L,80)=1:NEXT L
37 IF S1=0 AND S2=0 THEN 40
38 COLOR 8,7:LOCATE 23,7:PRINT"SCORE:  PLAYER 1 = ";S1;";  PLAYER 2 = ";S2;";  FIRST TO 10 WINS THE GAME!!":COLOR 7,0
40 FOR K=5 TO 38: LOCATE 10,K: PRINT CHR$(219);:C(10,K)=1:LOCATE 14,K: PRINT CHR$(219);:C(14,K)=1:NEXT
44 FOR K=43 TO 76: LOCATE 10,K: PRINT CHR$(219);:C(10,K)=1:LOCATE 14,K: PRINT CHR$(219);:C(14,K)=1:NEXT
48 L1=0
49 FOR L2=1 TO 2
50 FOR L3=5 TO 8
51 L=L1+L3
52 LOCATE L,8:PRINT CHR$(219);:C(L,8)=1
53 LOCATE L,17:PRINT CHR$(219);:C(L,17)=1
54 LOCATE L,26:PRINT CHR$(219);:C(L,26)=1
55 LOCATE L,35:PRINT CHR$(219);:C(L,35)=1
56 LOCATE L,46:PRINT CHR$(219);:C(L,46)=1
57 LOCATE L,55:PRINT CHR$(219);:C(L,55)=1
58 LOCATE L,64:PRINT CHR$(219);:C(L,64)=1
59 LOCATE L,73:PRINT CHR$(219);:C(L,73)=1
60 NEXT L3
61 L1=11
62 NEXT L2
63 L=6
64 FOR L1=1 TO 4
65 K=5
66 FOR L2=1 TO 14
68 LOCATE L,K:PRINT CHR$(219);:C(L,K)=1
69 LOCATE L,K+38:PRINT CHR$(219);:C(L,K+38)=1
70 K=K+1
71 IF ((K=6 OR K=15) OR (K=24 OR K=33)) THEN K=K+5
72 NEXT L2
73 IF L1 = 1 THEN L=7
74 IF L1 = 2 THEN L=17
75 IF L1 = 3 THEN L=18
76 NEXT L1
78 K=5
79 FOR K1=1 TO 22
80 LOCATE 3,K:PRINT CHR$(219);:C(3,K)=1
81 LOCATE 3,K+38:PRINT CHR$(219);:C(3,K+38)=1
82 LOCATE 21,K:PRINT CHR$(219);:C(21,K)=1
83 LOCATE 21,K+38:PRINT CHR$(219);:C(21,K+38)=1
84 K=K+1
85 IF (K=11 OR K=20) OR K=29 THEN K=K+4
86 NEXT K1
87 IF PP = 2 THEN 90
88 LOCATE 11,20: PRINT "USE ";CHR$(24);",";CHR$(25);",";CHR$(27);",";CHR$(26);" TO CHANGE DIRECTION RESPECTIVELY."
89 GOTO 92
90 LOCATE 11,7:PRINT"PLAYER 1,2 USE A,Z,S,D AND ";CHR$(24);",";CHR$(25);",";CHR$(27);",";CHR$(26);" TO CHANGE DIRECTION RESPECTIVELY."
92 LOCATE 12,27:PRINT"PRESS SPACE BAR TO BEGIN"
94 V$=INKEY$:IF V$=" " THEN 96:ELSE 94
96 LOCATE 11,2:PRINT SPACE$(78)
97 IF PP=1 GOTO 99
98 LOCATE 12,2:PRINT SPACE$(78):LOCATE 12,30:PRINT CHR$(1):C(12,30)=1:LOCATE 12,51:PRINT CHR$(2):C(12,51)=1: GOTO 100
99 LOCATE 12,2:PRINT SPACE$(78):LOCATE 12,51:PRINT CHR$(2):C(12,51)=1
100 I1=12:J1=12:I2=30:J2=51:I3=3:J3=2:F=0
110 KEY(11) ON:KEY(12) ON:KEY(13) ON:KEY(14) ON
120 ON KEY(11) GOSUB 200
122 IF PP=1 GOTO 130
125 V$=INKEY$:IF V$="A" OR V$="a" THEN GOSUB 600
130 ON KEY(12) GOSUB 300
135 IF V$="S" OR V$="s" THEN GOSUB 700
140 ON KEY(13) GOSUB 400
145 IF V$="d" OR V$="D" THEN GOSUB 800
150 ON KEY(14) GOSUB 500
155 IF V$="Z" OR V$="z" THEN GOSUB 900
157 IF PP=1 GOTO 163
160 IF I3=1 THEN I1=I1-1:LOCATE I1,I2:PRINT CHR$(1):ELSE IF I3=2 THEN I2=I2-1:LOCATE I1,I2:PRINT CHR$(1):ELSE IF I3=3 THEN I2=I2+1:LOCATE I1,I2:PRINT CHR$(1):ELSE I1=I1+1:LOCATE I1,I2:PRINT CHR$(1)
162 IF C(I1,I2)=1 THEN 1000:ELSE C(I1,I2)=1
163 F=F+1: F1=5
164 ON LL GOTO 178,173,165
165 IF F>200 THEN F1=0.1:  GOTO 178
166 IF F>150 THEN F1=0.25: GOTO 178
167 IF F>100 THEN F1=0.5:  GOTO 178
168 IF F>80  THEN F1=1:   GOTO 178
169 IF F>60  THEN F1=2:   GOTO 178
170 IF F>40  THEN F1=3:   GOTO 178
171 IF F>20  THEN F1=4:   GOTO 178
172 GOTO 178
173 IF F>200 THEN F1=1: GOTO 178
174 IF F>125 THEN F1=2: GOTO 178
175 IF F>75  THEN F1=3: GOTO 178
176 IF F>25  THEN F1=4: GOTO 178
178 SOUND 50,F1
179 IF PP = 1 THEN GOTO 180
180 IF J3=1 THEN J1=J1-1:LOCATE J1,J2:PRINT CHR$(2):ELSE IF J3=2 THEN J2=J2-1:LOCATE J1,J2:PRINT CHR$(2):ELSE IF J3=3 THEN J2=J2+1:LOCATE J1,J2:PRINT CHR$(2):ELSE J1=J1+1:LOCATE J1,J2:PRINT CHR$(2)
190 IF C(J1,J2)=1 THEN 2000:ELSE C(J1,J2)=1
195 SOUND F*2+70,F1
197 GOTO 110
200 IF J3=4 THEN RETURN 1500:ELSE J3=1:RETURN
300 IF J3=3 THEN RETURN 1500:ELSE J3=2:RETURN
400 IF J3=2 THEN RETURN 1500:ELSE J3=3:RETURN
500 IF J3=1 THEN RETURN 1500:ELSE J3=4:RETURN
600 IF I3=4 THEN RETURN 1000:ELSE I3=1:RETURN
700 IF I3=3 THEN RETURN 1000:ELSE I3=2:RETURN
800 IF I3=2 THEN RETURN 1000:ELSE I3=3:RETURN
900 IF I3=1 THEN RETURN 1000:ELSE I3=4:RETURN
1000 LOCATE I1,I2:COLOR 21,0:PRINT CHR$(1):COLOR 7,0
1001 S2=S2+1
1002 IF S2<5  THEN 1600
1003 KEY(11) OFF:KEY(12) OFF:KEY(13) OFF:KEY(14) OFF
1004 COLOR 8,7:LOCATE 23,7:PRINT"            PLAYER 2 WON, PRESS C TO PLAY AGAIN; E TO EXIT            ":COLOR 7,0
1100 V$=INKEY$:IF V$="" THEN 1100:ELSE IF V$="C" OR V$="c" THEN CLEAR:GOTO 1
1120 IF V$="e" OR V$="E" THEN CHAIN "MENU",1000: ELSE 1100
1500 LOCATE J1,J2:COLOR 21,0:PRINT CHR$(2):COLOR 7,0
1501 S1=S1+1
1502 IF S1<5  THEN 1600
1503 KEY(11) OFF:KEY(12) OFF:KEY(13) OFF:KEY(14) OFF
1504 COLOR 8,7:LOCATE 23,7:PRINT"            PLAYER 1 WON, PRESS C TO PLAY AGAIN; E TO EXIT            ":COLOR 7,0:GOTO 1100
1600 KEY(11) OFF:KEY(12) OFF:KEY(13) OFF:KEY(14) OFF
1605 COLOR 8,7:LOCATE 23,3:PRINT"SCORE:  PLAYER 1 = ";S1;";  PLAYER 2 = ";S2;";  FIRST TO 5 WINS!!   # OF ";CHR$(2);" = ";F:COLOR 7,0
1620 FOR X=1 TO 23: FOR Y=1 TO 80: C(X,Y)=0: NEXT Y: NEXT X: GOTO 20
2000 IF PP=2 THEN 1500
2010 LOCATE J1,J2:COLOR 21,0:PRINT CHR$(2):COLOR 7,0
2020 KEY(11) OFF: KEY(12) OFF: KEY(13) OFF: KEY(14) OFF
2030 COLOR 8,7: LOCATE 23,3: PRINT"       YOUR SCORE WAS ";F;".  PRESS C TO PLAY AGAIN; E TO EXIT              ":COLOR 7,0: GOTO 1100

WILLTELL.BAS

5 CLS :KEY OFF:LOCATE 2,27 :PRINT "The William Tell Overture"
14 RANDOMIZE VAL(MID$(TIME$,7,2))
15 FOR I=1 TO 65 : LOCATE (RND*17)+5,(RND*77)+1 :PRINT CHR$(14):NEXT
19 OPEN "WILLTELL.DAT" FOR INPUT AS #1
20 PLAY"MBL16T155"
25  INPUT#1,M$
30 WHILE NOT EOF(1)
40  PLAY M$
50  INPUT#1,M$
60  'PRINT M$
70 WEND
75 CLOSE
80 END

ZAP’EM.BAS

230 CLS
240 KEY OFF:SCREEN 0,1:COLOR 15,0,0:WIDTH 40:CLS:LOCATE 5,19:PRINT "IBM"
250 LOCATE 7,8 ,0:PRINT "General  utility  programs"
260 COLOR 9 ,0:LOCATE 10,9,0:PRINT CHR$(213)+STRING$(21,205)+CHR$(184)
270 LOCATE 11,9,0:PRINT CHR$(179)+"       ZAP'EM        "+CHR$(179)
280 LOCATE 12,9,0:PRINT CHR$(179)+STRING$(21,32)+CHR$(179)
290 COLOR 9,0:LOCATE 13,9,0:PRINT CHR$(179)+"     Version  1B     "+CHR$(179)
300 BEEP
310 LOCATE 14,9,0:PRINT CHR$(212)+STRING$(21,205)+CHR$(190)
320 COLOR 15,0  :LOCATE 17,7,0:PRINT "FEBRUARY 03,1982   MAV-5-5-K "
330 COLOR 9,0:LOCATE 23,6,0:PRINT "Press space bar to continue..."
340 IF INKEY$ <> "" THEN GOTO 340
350 CMD$ = INKEY$
360 IF CMD$ = "" THEN GOTO 350
370 IF CMD$ = CHR$(27) THEN GOTO 390
380 IF CMD$ <> " " THEN GOTO 350
390 CLS:INPUT "DO YOU WANT INSTRUCTIONS";IN$
400 IF IN$="Y" OR IN$="YES" OR IN$="y" OR IN$="yes" THEN GOSUB 1230
410 REM TRANSFER COMMAND
420 REM **ZAP EM  ***
430 REM **A GAME*****
440 CLS
450 CLEAR ,,21000
460 INPUT "AH....YOUR NAME PLEASE ";NME$:LOCATE 15,1:INPUT "YOUR LAST SCORE ";R
470 DIM A(250),B(250)
480 FUEL=150
490 SHIP=3
500 V=7
510 T1=6
520 X=10 :Y=20
530 SCREEN 0,1
540 COLOR 7,0
550 RANDOMIZE R
560 CLS
570 COLOR 1
580 FOR I=1 TO 23:LOCATE I,1:PRINT CHR$(186):LOCATE I,38:PRINT CHR$(186):NEXT I
590 LOCATE 1,1:PRINT CHR$(201):LOCATE 1,38:PRINT CHR$(187):LOCATE 23,1:PRINT CHR$(200):LOCATE 23,38:PRINT CHR$(188)
600 FOR I=2 TO 37:LOCATE 1,I:PRINT CHR$(205):LOCATE 23,I:PRINT CHR$(205):NEXT I
610 LOCATE 4,1:PRINT CHR$(204):LOCATE 4,38:PRINT CHR$(185):FOR O=2 TO 37:LOCATE 4,O:PRINT CHR$(205):NEXT O
620 KEY(14) ON
630 ON KEY(14) GOSUB 970
640 KEY(11) ON
650 ON KEY(11) GOSUB 980
660 KEY(1) ON
670 ON KEY(1) GOSUB 990
680 REM **TRANSFER COMMAND**
690 LOCATE 2,15:PRINT SHIP
700 IF SHIP=0 OR FUEL=0 THEN FOR H1=1 TO 13:PRINT "GAME OVER":NEXT:GOTO 1330
710 LOCATE X,2:PRINT CHR$(27)
720 RR=INT(RND(2)*10)
730 IF B(RR)=0 THEN A(RR)=INT(RND(3)*16)+5:B(RR)=INT(RND(4)*7 )+30
740 FOR F=1 TO T1
750 IF A(F)=0 OR B(F)=0 THEN 810
760 IF A(F)=X AND B(F)=2 THEN BEEP:SHIP=SHIP-1:LOCATE X,2:PRINT"OUCH":FOR VV=1 TO 300:NEXT VV:LOCATE X,2:PRINT "      ":LOCATE 2,15:PRINT SHIP
770 IF A(F)=0 THEN 810
780 IF B(F)<3 THEN LOCATE A(F),B(F):PRINT " ":B(F)=0:A(F)=0:SCORE=SCORE-150:SOUND 55,1:GOTO 810
790 LOCATE A(F),B(F):PRINT " ":B(F)=B(F)-1
800 COLOR 14:LOCATE A(F),B(F):PRINT CHR$(254):COLOR 7
810 NEXT F
820 Y=Y+  M
830 IF X>21 THEN LOCATE 22,2:PRINT "   ":X=6
840 IF X<6 THEN LOCATE 5,2:PRINT "   ":X=21
850 FUEL=FUEL-1.2
860 IF FUEL<50 THEN V=31
870 COLOR 7:LOCATE 2,24:PRINT "SCORE: ";SCORE
880 COLOR V
890 IF FUEL<1 THEN COLOR 7:LOCATE 3,3:FOR U=1 TO 10:PRINT "GAME OVER":NEXT:GOTO 1330
900 RR=INT(RND(2)*T1)
910 IF B(RR)=0 THEN A(RR)=INT(RND(3)*16)+5:B(RR)=INT(RND(4)*7 )+30:IF A(RR)<6 THEN A(RR)=7
920 IF A(RR)=0 THEN A(RR)=INT(RND(3)*16)+5:B(RR)=INT(RND(4)*7 )+30:IF A(RR)<6 THEN A(RR)=7
930 LOCATE 2,3:PRINT"FUEL: ";INT(FUEL)
940 LOCATE X,2:PRINT CHR$(27)
950 COLOR 7
960 GOTO 620
970 GOSUB 1010:X=X+1        :GOTO 680
980 GOSUB 1010:X=X-1        :GOTO 680
990 GOSUB 1050
1000 GOTO 620
1010 IF X>22 THEN X=2
1020 IF X<2 THEN X=22
1030 LOCATE X,2:PRINT" "
1040 RETURN
1050 LOCATE X,2:PRINT CHR$(27)
1060 COLOR 4
1070 FOR Z=1 TO T1
1080 IF X=A(Z) THEN 1120
1090 NEXT Z
1100 FOR CC=3 TO 24:LOCATE X,CC:PRINT "-":LOCATE X,CC:PRINT " ":NEXT CC
1110 COLOR 7:GOTO 620
1120 FOR LL=3 TO 24
1130 LOCATE X,LL:PRINT "-"
1140 IF LL=B(Z) THEN LOCATE X,LL:PRINT "*":GOSUB 1190:LOCATE X,LL:PRINT " ":A(Z)=0:B(LL)=0:SCORE=SCORE+100:GOTO 680
1150 LOCATE X,LL:PRINT " "
1160 NEXT LL
1170 COLOR 7
1180 GOTO 620
1190 FOR OO=300 TO 315
1200 SOUND OO   ,0.21
1210         NEXT OO
1220 RETURN
1230 CLS
1240 LOCATE 25,1:PRINT"Press any key to start game..."
1250 PRINT"               Zap'em"
1260 PRINT:PRINT"  You are the reverse arrow (It is      supposed to be a fighter with rakish    inverse swept wings)."
1270 PRINT:PRINT"  Your mission is to zap the invading   Horde ships in your path. The Horde is  a huge mass of drone ships that is try- ing to get past the imperial fleet and  into the rich homeworld systems."
1280 PRINT:PRINT"  The Horde ships are unpredictable.    Some are Ghost ships. These will take   more than one hit or will vanish upon   being hit without a score increment."
1290 PRINT:PRINT"  The controls are simple: up and down  cursor control arrow keys for up and    down movement. F1 to fire."
1300 PRINT:PRINT"  Good hunting"
1310 X$=INPUT$(1):IF X$<>"" THEN RETURN
1320 GOTO 1310
1330 '**HIGH SCORE**
1340 CLS
1350 LOCATE 2,2:PRINT"HIGH SCORES...."
1360 LOCATE 3,1:PRINT"_______________________________________"
1370 LOCATE 5,1
1380 DIM NME$(50),SCORE(50)
1390 OPEN "METEOR.DAT" FOR INPUT AS #1
1400 FOR I=1 TO 10
1410 INPUT #1,NME$(I),SCORE(I)
1420 PRINT NME$(I),SCORE(I)
1430 NEXT I
1440 NME$(10)=NME$:SCORE(10)=SCORE
1450 CLOSE
1460 IF SCORE(10)<SCORE(9) GOTO 1520
1470 FOR I=1 TO 10
1480 IF SCORE(I)<SCORE(I+1) THEN SWAP SCORE(I),SCORE(I+1):SWAP NME$(I),NME$(I+1):F=1
1490 NEXT I:IF F=1 THEN F=0:GOTO 1470
1500 OPEN "METEOR.DAT" FOR OUTPUT AS #1
1510 FOR I=1 TO 10:PRINT#1,NME$(I);",";SCORE(I):NEXT I:CLOSE
1520 LOCATE 5,1
1530 FOR I=1 TO 9
1540 PRINT NME$(I),SCORE(I)
1550 NEXT I
1560 LOCATE 17,1:PRINT "YOUR SCORE, ";NME$;", WAS";SCORE
1570 LOCATE 22,1:INPUT "PLAY AGAIN (Y OR N)";PLY$
1580 IF PLY$="Y" THEN 420
1590 RUN "MENU

Directory of PC-SIG Library Disk #0037

 Volume in drive A has no label
 Directory of A:\

SLOTMACH BAS      4864   4-24-83   9:15p
WILLTELL BAS       384   1-01-80   1:43a
WILLTELL DAT      4096  12-24-82   4:29p
ATTACK   BAS      6400  10-23-82  12:48p
BLACKBOX BAS      4992   1-01-80  12:37a
CHR      BAS       896  10-19-82  12:54a
EQNSOLVE BAS      3584
GALLERY  BAS      2944   9-15-82
INVEN    BAS     11008   4-26-82
MATH     BAS      2304  11-10-82  12:41a
PERMUTE  BAS       512   9-20-82  12:20a
ROMCHAR  BAS      1024  10-31-82   1:10a
SCRAMBLE BAS      3968   3-10-82
SERPENT  BAS      2944   1-01-80  12:14a
SURROUND BAS      4864
ZAP'EM   BAS      4224   1-01-80  12:24a
SPINOUT  BAS      3968   1-01-80  12:07a
CIAGAME  BAS     16384  10-26-82  10:58p
MENU     BAS       896   4-06-83   3:19p
CRC      TXT      1451  11-09-84   9:09a
CRCK4    COM      1536  10-21-82   7:54p
       21 file(s)      83243 bytes
                       74240 bytes free