PCjs Machines

Home of the original IBM PC emulator for browsers.

Logo

PC-SIG Diskette Library (Disk #177)

[PCjs Machine "ibm5160"]

Waiting for machine "ibm5160" to load....

Information about “ARCADE SERIES 1”

The first in a series of disks which display some of the best, in our
opinion, of the games we have to offer in the library.  For a good
test of your heart rate, try to find the BOMB before it explodes.  Or
battle the vicious BUGS!  JUMPJOE is a real test of your reflexes, and
BREAKOUT is always a popular offering.  After all that, grab your
PENCIL and sketch your cares away.

System Requirements:  Some programs require color, BASIC

How to Start: To run an EXE or COM program, just type its name and
press <ENTER>.  For instructions on running BASIC programs, please
refer to the GETTING STARTED section in this catalog.

File Descriptions:

BOMB     BAS  Find the bomb in 1 of 1,000,000 rooms before BLAM!
PENCIL   BAS  Sketch on color monitor with joystick
JUMPJOE  SOL  Part of JUMPJOE.EXE
JUMPJOE  EXE  Version of Miner 2049'er or Donkey Kong (Color required )
HS       DAT  High scores for JUMPJOE.EXE
DRIVER   BAS  Drive racecar around track - tough on eyes!
CUBE     BAS  Cube game  (Color required)
BUGS!    SCR  Part of BUGS.EXE
BUGS     EXE  Centipede-like game - good version
BREAKOUT BAS  Hard Pong game  (Requires color graphics)

BOMB.BAS

230 CLS
240 CLS:LOCATE 4,28:PRINT "DEFUSE"
250 LOCATE 9,20:PRINT"";:INPUT "DO YOU NEED INSTRUCTIONS";I$
260 IF LEFT$(I$,1)="N" THEN CLS: GOTO 360
270 CLS: PRINT TAB(29);"DEFUSE":PRINT
280 PRINT"YOU ARE IN A GOVERNMENT EXPERIMENTAL BUILDING WITH"
290 PRINT "1,000,000 ROOMS IN IT.  THE BUILDING IS 100 ROOMS"
300 PRINT "LONG (0-99),100 ROOMS WIDE (0-99), AND 100 ROOMS HIGH (0-99).
310 PRINT: PRINT"IN IT A BOMB IS HIDDEN.  THE BOMB SENDS OUT SIGNALS THAT"
320 PRINT "GET STRONGER AS YOU GET CLOSER.  YOU HAVE 200 SECONDS"
330 PRINT "TO DEACTIVATE IT."
340 LOCATE 12,20:PRINT "PRESS ANY KEY TO CONTINUE."
350 IF INKEY$=""THEN 350 ELSE CLS
360 A=INT(100*RND(8)): B=INT(100*RND(3))
370 C=INT(100*RND(0)):IF A >0 THEN 400
380 IF B>0 THEN 400
390 IF C=0 THEN 370
400 D=0:E=0:F=0:G=0:LOCATE 2,13:PRINT "";:GOSUB 410:GOTO 470
410 LB=PEEK(16416): HB=PEEK(16417):PRINT CHR$(28):
420 PRINT"SIGNAL";TAB(15);"L";TAB(20);"W";TAB(25);"H";
430 PRINT TAB(35);"SEC";TAB(45);"COORDINATES (L,W,H)"
440 PRINT "-------";TAB(14);"---";TAB(19);"---";TAB(24);"---";
450 PRINT TAB(34);"-----";TAB(44)"----------------"
460 POKE 16416,LB:POKE 16417,HB:RETURN
470 REM
480 IM$="####.##    ###  ###  ###        ###"
490 SI=10000-ABS((A/100+B+C*100)-(D/100+E+F*100))
500 PRINT USING IM$;SI,D,E,F,G;:PRINT TAB(45);
510 INPUT D,E,F:G=G+10:IF A<>D THEN 540
520 IF B<>E THEN 540
530 IF C=F THEN 610
540 IF G=200 THEN 560
550 GOTO 620
560 CLS:PRINT "BOOOOOOMMM!!!":PRINT "YOU BLEW IT.  THE BUILDING BLEW UP!"
570 PRINT"THE BOMB WAS LOCATED AT THE COORDINATES (L,W,H):";A;B;C
580 PRINT:PRINT: PRINT "WANT TO PLAY AGAIN";
590 INPUT Z$: IF LEFT$(Z$,1)="Y" THEN CLS: GOTO 360
600 GOTO 790
610 CLS: PRINT "BOMB DEACTIVATED AT";G;"SECONDS!!!!": GOTO 580
620 IF D>99 THEN 690
630 IF D<0 THEN 690
640 IF E>99 THEN 690
650 IF E<0 THEN 690
660 IF F>99 THEN 730
670 IF F<0 THEN 740
680 GOTO 470
690 CLS: PRINT "YOU WALKED OUT A WINDOW ON THE ";: IF F<4 THEN 750
700 PRINT F;"TH FLOOR!!!"
710 PRINT "YOU WERE KILLED AND";200-G;"SECONDS LATER THE BUILDING"
720 PRINT "BLEW UP!!!": GOTO 580
730 CLS: PRINT "YOU ARE NOW";F*9;"FEET IN THE AIR!!!": GOTO 710
740 CLS:PRINT"YOU ARE NOW";-1*(F*9);"FEET UNDERGROUND!!!": GOTO 710
750 ON F GOTO 760,770,780
760 PRINT "1ST FLOOR!!!":GOTO 710
770 PRINT "2ND FLOOR!!!":GOTO 710
780 PRINT "3RD FLOOR!!!":GOTO 710
790 CLS:RUN"menu.pgm"

BREAKOUT.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*.05):VY=OVY+(SPIN*OVX*.05)+G
761 SPIN=SPIN*.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,XOR
940 LINE (L+2+(BW*BX),BT+2+(BH*BY))    -STEP (BW-4,BH-4),0,BF
950 PUT(OX-2,OY-2),BALL,XOR
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,.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,XOR
1280 PUT(OX-2,OY-2),BALL,XOR
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$: IF D$="" THEN 1370
1380 IF D$="y" OR D$="Y" THEN RUN
1390 IF D$="n" OR D$="N" THEN CLS:RUN "MENU.PGM"
1400 GOTO 1360
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,XOR
1520 PUT(PL,PY),PADDLE,XOR
1530 RETURN

CRC.TXT

PC-SIG Disk No. #177, 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:  BOMB    .BAS         CRC = BD AF

--> FILE:  BREAKOUT.BAS         CRC = 35 25

--> FILE:  BUGS    .EXE         CRC = 03 68

--> FILE:  BUGS!   .SCR         CRC = 8C 44

--> FILE:  CUBE    .BAS         CRC = 46 75

--> FILE:  DRIVER  .BAS         CRC = 03 8F

--> FILE:  HS      .DAT         CRC = 20 90

--> FILE:  JUMPJOE .EXE         CRC = 51 AB

--> FILE:  JUMPJOE .SOL         CRC = 00 33

--> FILE:  PENCIL  .BAS         CRC = B2 02

--> FILE:  XXX     .            CRC = A5 C8

 ---------------------> SUM OF CRCS = 96 BC

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

CUBE.BAS

7 ' Source:  Printed copy offered in
8 '          PC Magazine, Vol. 1, No. 2, pp. 85-87
9 ' (all comments omitted)
10 '                          RUBIK'S CUBE SIMULATOR
20 '                                 PC MAGAZINE
30 '                                 march, 1982
40 '                                 karl koessel
50 SCREEN 0,1,0,0
60 COLOR 7,0,1
70 CLS
80 KEY OFF
90 CLEAR,,2000
100 DEFINT A-Z
110 DIM HOLD(20)
120 GOSUB 3240
130 GOSUB 3620
140 GOSUB 3680
150 GOSUB 3770
160 GOSUB 600
190 GOSUB 2760
200 COLOR 23
210 PRINT "Enter ";
220 COLOR 7
230 INPUT "a twist or command: ",TWIST$
240 IF TWIST$="" THEN 190
250 GOSUB 1860
260 REQ$=TWIST$
270 GOSUB 820
280 IF D THEN 190
290 GOSUB 910
300 GOTO 190
320 GOSUB 2760
330 PRINT "Press [RETURN] to twist the ";
340 IF CLRMON THEN COLOR BR(F) ELSE COLOR 1
350 PRINT PLACE$(1,F);
360 COLOR 7
370 PRINT " face ";
380 IF CLRMON THEN COLOR BR(F) ELSE COLOR 1
390 PRINT DIRECTION$(OSO)
400 COLOR 7
410 IF CLRMON AND BIG THEN 430
420 PRINT SPC(13)
430 PRINT "or enter a new twist or command: ";
440 INPUT "",GO$
450 GOSUB 1860
460 IF GO$="" THEN 530
470 REQ$=,GO$
480 GOSUB 820
490 ON D GOTO 320,320,320,320,510,320,320,320,530
500 GOSUB 910
510 RETURN
530 GOSUB 2360
540 GOSUB 2520
550 GOSUB 1900
560 GOSUB 2000
570 GOSUB 1590
580 RETURN
600 GOSUB 1900
610 IF CLRMON THEN WIDTH 40:BIG=-1
620 IF NOT BIG AND D=8 THEN RETURN
630 GOSUB 2790
640 IF D<>8 THEN GOSUB 2610
650 IF NOT BIG THEN 690
660 GOSUB 3020
670 CLS
680 GOSUB 3040
690 GOSUB 1290
700 RETURN
720 RQ$=""
730 FOR K=1 TO LEN(REQ$)
740     RK$=MID$(REQ$,K,1)
750     IF RK$="'" THEN 770
760     RK$=CHR$((ASC(RK$) AND 95))
770     RQ$=RQ$+RK$
780 NEXT
790 REQ$=RQ$
800 RETURN
820 GOSUB 720
830 D=0
840 FOR DMI=1 TO 9
850     IF LEFT$(REQ$,LEN(DM$(DMI)))=DM$(DMI) THEN D=DMI
860 NEXT
870 IF D>0 AND D<4 THEN DM=D-1
880 ON D GOSUB 1590,1590,1590,1380,600,1210,2040,610,1350
890 RETURN
910 GOSUB 1900
930 IF MID$(REQ$,2,1)=""OR MID$(REQ$,2,1)="'"AND LEN(REQ$)<3 THEN 960
940 GOTO 1020
960 F=0
970 FOR W=1 TO LEN(T$)
980     IF LEFT$(REQ$,1)=MID$(T$,W,1) THEN F=W:TWIST$=REQ$
990 NEXT
1000 IF F THEN 1100
1020 GOSUB 2760
1030 PRINT "Input ";:COLOR 23:PRINT "NOT";:COLOR 7:PRINT " recognized"
1040 PRINT "    One moment please..."
1050 GOSUB 1590
1060 GOSUB 1860
1070 RETURN
1100 IF MID$(REQ$,2,1)="'" THEN OSO=2:OSI=1 ELSE OSO=0:OSI=5
1120 GOSUB 2200
1130 GOSUB 2260
1150 GOSUB 2460
1170 IF SKIP THEN 530
1180 GOSUB 1590
1190 GOTO 320
1210 IF NOT CLRMON THEN 1330
1220 BIG=NOT BIG
1230 IF BIG THEN WIDTH 40:GOTO 1260
1240 WIDTH 80
1250 GOSUB 2790
1260 GOSUB 1290
1270 RETURN
1290 IF BIG THEN GOSUB 3060
1300 GOSUB 1390
1310 GOSUB 1590
1320 IF NOT BIG THEN GOSUB 2040
1330 RETURN
1350 SKIP=NOT SKIP
1360 RETURN
1380 LABEL = NOT LABEL
1390 FOR FA=1 TO 6
1400     IF BIG THEN LOCATE XBL(FA),YBL(FA):GOTO 1420
1410     LOCATE X(FA)+2,Y(FA)-1
1420     IF NOT LABEL GOTO 1460
1430     IF CLRMON THEN COLOR BR(FA) ELSE COLOR 1
1440     PRINT PLACE$(1,FA);
1450     GOTO 1470
1460     PRINT SPC(5);
1470 NEXT
1480 IF NOT BIG THEN 1570
1490 FOR XBL=1 TO 2
1500     LOCATE XBL+4,19-XBL
1510     IF NOT LABEL THEN GOTO 1540
1520     COLOR BR(3)
1530     PRINT "/";
1540     PRINT " "
1550 NEXT
1560 COLOR 7
1570 RETURN
1590 DB=1:DUB=0
1600 IF BIG THEN DB=2
1610 FOR FA=1 TO 6
1620 FOR P=0 TO 8
1630 IF BIG THEN FOR DUB=0 TO 1
1640     LOCATE X(FA)+XOF(P)*DB+DUB-REL(FA)*BIG,Y(FA)+YOF(P)+RELY(FA)*BIG
1650     BR=BR(FIX(CUBIE(FA,P,1)\10))
1660     IF BR THEN COLOR CUBIE(FA,P,2)*-16,BR:GOTO 1680
1670     IF CUBIE(FA,P,2) THEN COLOR 0,7 ELSE COLOR 7,0
1680     IF DUB THEN PRINT "  ";:GOTO 1710
1690     IF DM THEN PRINT USING "\\"; CUBIE$(FA,P,DM);                                         ELSE PRINT USING "**"; CUBIE(FA,P,1);
1710     ON P+1 GOTO 1730,1720,1720,1800,1800,1800,1740,1740,1730
1720     ND=1:GOTO 1760
1730     ND=4:GOTO 1760
1740     ND=-1:GOTO 1760
1760     IF BR THEN COLOR BR,BR(FIX(CUBIE(FA,(P+ND) MOD 12,1)\10)) ELSE 1780
1770     PRINT CHR$(221);:GOTO 1800
1780     IF CUBIE(FA,P,2)=CUBIE(FA,(P+ND) MOD 12,2) THEN 1790 ELSE COLOR 7,0
1790     PRINT " ";
1800 IF BIG THEN NEXT
1810 NEXT
1820 NEXT
1830 COLOR 7,0
1840 RETURN
1860 GOSUB 2760
1870 PRINT "One moment, please..."SPC(79)SPC(39)SPC(21)
1880 RETURN
1900 FOR J=1 TO 4
1910     FOR K=1 TO 3
1920         CUBIE(FACE(J),((POSITION(J)+K-2) MOD 8)+1,2)=0
1930     NEXT
1940 NEXT
1950 FOR P=1 TO 8
1960     CUBIE(F,P,2)=0
1970 NEXT
1980 RETURN
2000 TWISTSSOFAR$(AT)=TWISTSSOFAR$(AT)+TWIST$+" "
2010 IF LEN(TWISTSSOFAR$(AT))>36 THEN AT=AT+1
2020 IF BIG THEN RETURN
2040 LOCATE 18,1
2050 IF BIG THEN PRINT
2060 COLOR 1
2070 PRINT TWISTSSOFAR$(0);
2080 COLOR 7
2090 PRINT SPC(13)
2100 FOR K=1 TO AT
2110     PRINT TWISTSSOFAR$(K);
2120     IF NOT BIG THEN PRINT TWISTSSOFAR$(K+1);:K=K+1
2130     PRINT
2140 NEXT
2150 IF NOT BIG THEN RETURN
2160 GOSUB 3020
2170 GOSUB 1860
2180 RETURN
2200 FOR J=1 TO 4
2210     FACE(J)=VAL(MID$(OC$(F),J*2-1,1))
2220     POSITION(J)=VAL(MID$(OC$(F),J*2,1))
2230 NEXT
2240 RETURN
2260 FOR J=1 TO 4
2270     FOR K=1 TO 3
2290         HOLD((J-1)*3+K)=CUBIE(FACE(J),((POSITION(J)+K-2) MOD 8)+1,1)
2310         CUBIE(FACE(J),((POSITION(J)+K-2) MOD 8)+1,2)=-1
2320     NEXT
2330 NEXT
2340 RETURN
2360 FOR J=1 TO 4
2370     FOR K=1 TO 3
2380         CUBIE(FACE(((J+OSO) MOD 4)+1),((POSITION(((J+OSO) MOD 4)+1)+K-2)                MOD 8)+1,1)=HOLD((J-1)*3+K)
2390         FOR DMI=1 TO 2
2400             CUBIE$(FACE(((J+OSO) MOD 4)+1),((POSITION(((J+OSO) MOD 4)+1)                    +K-2) MOD 8)+1,DMI)=PLACE$(DMI,FIX((HOLD((J-1)*3+K)\10)))
2410         NEXT
2420     NEXT
2430 NEXT
2440 RETURN
2460 FOR P=1 TO 8
2470     HOLD(12+P)=CUBIE(F,P,1)
2480     CUBIE(F,P,2)=-1
2490 NEXT
2500 RETURN
2520 FOR P=1 TO 8
2530     CUBIE(F,P,1)=HOLD(13+((P+OSI)MOD 8))
2540     FOR DMI=1 TO 2
2550         CUBIE$(F,P,DMI)=PLACE$(DMI,FIX(CUBIE(F,P,1)\10))
2560     NEXT
2570 NEXT
2580 RETURN
2610 FOR F = 1 TO 6
2620     FOR P = 0 TO 9
2630         CUBIE(F,P,1)=F*10+P
2640         FOR DMI=1 TO 2
2650             CUBIE$(F,P,DMI)=LEFT$(PLACE$(DMI,F),2)
2660         NEXT
2670     NEXT
2680 NEXT
2700 FOR K=1 TO AT
2710     TWISTSSOFAR$(K)=""
2720 NEXT
2730 AT=1
2740 RETURN
2760 IF BIG THEN LOCATE 19,1 ELSE LOCATE 15,1
2770 RETURN
2790 IF BIG THEN COLOR ,4:BG=3 ELSE BG=43
2800 CLS
2810 LOCATE 1,1+BG:COLOR 1:PRINT TITLE$
2820 LOCATE 3,3+BG:COLOR 7:PRINT"Each twist is called by the first"
2830 LOCATE 4,BG:PRINT"letter of the face you wish to twist:"
2840 LOCATE 5,BG:COLOR 1:PRINT"U";:COLOR 7:PRINT" for the upper face, ";             :COLOR 1:PRINT"L";:COLOR 7:PRINT" for the left"
2850 LOCATE 6,BG:PRINT"face, ";:COLOR 1:PRINT"F";:COLOR 7:                           :PRINT" for the front face, ";:COLOR 1:PRINT"R";:COLOR 7:PRINT" for the"
2860 LOCATE 7,BG:PRINT"right face, ";:COLOR 1:PRINT"B";:COLOR 7                      :PRINT" for the back face and ";:COLOR 1:PRINT"D":COLOR 7
2870 LOCATE 8,BG:PRINT"for the downward face. The twists will"
2880 LOCATE 9,BG:PRINT"be clockwise. To make a counterclock-"
2890 LOCATE 10,BG:PRINT"wise twist, the letter is followed by"
2900 LOCATE 11,BG:PRINT"a ";:COLOR 1:PRINT"'";:COLOR 7:PRINT" (e.g. ";               :COLOR 1:PRINT"L'";:COLOR 7:PRINT" ). To change the display,"
2910 LOCATE 12,BG:PRINT"enter either the word ";:COLOR 1:PRINT"Labels";              :COLOR 7:PRINT" or ";:COLOR 1:PRINT"Colors";:COLOR 7
2920 IF CLRMON THEN LOCATE 12,BG:PRINT"enter the word ";:COLOR 1:PRINT "Big";:                      COLOR 7:PRINT" or ";
2930 LOCATE 13,BG:PRINT"or ";:COLOR 1:PRINT"Faces";:COLOR 7:PRINT" or ";             :COLOR 1:PRINT"Codes";:COLOR 7:PRINT". Use ";:COLOR 1:PRINT"Skip";:COLOR 7      :PRINT" to resume/"
2940 LOCATE 14,BG:PRINT"skip verification. Use ";:COLOR 1:PRINT"New";:COLOR 7        :PRINT" to restart."
2950 IF NOT BIG THEN RETURN
2960 LOCATE 15,3:PRINT "To accommodate those using television ";
2970 PRINT "  sets (i.e. confined to WIDTH 40), the ";
2980 PRINT "  commands ";:COLOR 1:PRINT "List";:COLOR 7:PRINT " & ";:COLOR 1
2990 PRINT "Help";:COLOR 7:PRINT " have been added."
3000 RETURN
3020 LOCATE 25,9:PRINT "Press the spacebar to continue";
3030 IF INKEY$<>" " THEN 3030
3040 LOCATE 25,3:COLOR 1,4:PRINT TITLE$;:COLOR 7,0:RETURN
3060 LOCATE 1,19:COLOR BR(2),,BR(4):PRINT "Twists: ";
3070 FOR LI=1 TO 2:LOCATE LI,25+LI
3080     FOR TI=1 TO 3
3090         FOR DI=0 TO 1
3100             COLOR BR((LI-1)*3+TI)
3110             IF DI THEN PU$="!' " ELSE PU$="! "
3120             PRINT USING PU$;MID$(T$,(LI-1)*3+TI);
3130         NEXT
3140     NEXT
3150 NEXT
3160 LOCATE 4,31:COLOR BR(6):PRINT "Commands:";
3170 FOR CM=1 TO 9
3180     LOCATE 5+CM,35
3190     COLOR BR(CM MOD 6+1)
3200     PRINT DM$(CM)
3210 NEXT
3220 COLOR 7:RETURN
3240 FOR FACE=1 TO 6
3250     READ PLACE$(1,FACE)
3260 NEXT
3270 DATA"upper","left","front","right","back","down"
3280 FOR FACE=1 TO 6
3290     READ YOURS$(FACE)
3300 NEXT
3310 DATA"white","orange","blue","red","green","yellow"
3320 FOR P=1 TO 8
3330     READ XOF(P),YOF(P)
3340 NEXT
3350 DATA -1,-3,-1,0,-1,3,0,3,1,3,1,0,1,-3,0,-3
3360 FOR FA=1 TO 6
3370     READ XBL(FA),YBL(FA)
3380 NEXT
3390 DATA 2,4,13,3,4,19,13,19,13,27,17,17
3400 FOR FA=1 TO 6
3410     READ REL(FA),RELY(FA)
3420 NEXT
3430 DATA 1,2,3,0,3,2,3,4,3,6,5,2
3440 FOR F=1 TO 6
3450     READ X(F),Y(F)
3460 NEXT
3470 DATA 2,14,6,4,6,14,6,24,6,34,10,14
3480 FOR F=1 TO 6
3490     READ OC$(F)
3500 NEXT
3510 DATA "21514131","17376753","15476123","13576333","11276543","25354555"
3520 FOR DMI=1 TO 9
3530     READ DM$(DMI)
3540 NEXT
3550 DATA CODE,FACE,COLOR,LABEL,NEW,BIG,LIST,HELP,SKIP
3560 DIRECTION$(0)="clockwise":DIRECTION$(2)="counterclockwise"
3570 T$="ULFRBD"
3580 TWISTSSOFAR$(0)="The list of twists so far :"
3590 TITLE$=SPACE$(7)+"RUBIK'S CUBE SIMULATOR"+SPACE$(7)
3600 RETURN
3620 DEF SEG=0
3630 IF (PEEK(&H410) AND &H30)<>&H30 THEN CLRMON=-1
3640 DM=1
3650 LABEL=-1
3660 RETURN
3680 IF CLRMON THEN COLOR 1,4:WIDTH 40:K=1 ELSE WIDTH 80:K=21
3690 CLS:LOCATE 3,2+K:PRINT TITLE$
3700 LOCATE 6,15+K:PRINT"PC MAGAZINE"
3710 LOCATE ,15+K:COLOR 7:PRINT"march, 1982"
3720 LOCATE 24,19+K:PRINT"press the spacebar";
3730 IF INKEY$<>" " THEN 3730
3740 COLOR 7,0
3750 RETURN
3770 CLS
3780 LOCATE 2,7+K
3790 K$="*** COLORING THE CUBE ***"
3810 IF CLRMON THEN 3880
3830 PRINT K$
3840 LOCATE 9,K+6
3850 PRINT"(The name of each color":PRINT SPC(11+K)"should begin with a":
3860 PRINT SPC(16+K)"different letter.)":GOTO 4080
3880 FOR L=1 TO 25
3890     COLOR (L MOD 7)+1
3900     PRINT MID$(K$,L,1);
3910 NEXT
3920 LOCATE 4,4
3930 FOR C=1 TO 7
3940     COLOR ,C
3950     PRINT "     ";
3960     COLOR C,0
3970     PRINT "---";C;
3980     PRINT SPC(10)
3990 NEXT
4000 LOCATE 9,1
4010 COLOR 1,4
4020 PRINT "Choose each face's color by entering the";
4030 PRINT "appropriate number from the list above, ";
4040 COLOR 0,2
4050 PRINT "or just press [RETURN] for each face and";
4060 PRINT "the computer will choose the colors.    "
4080 LOCATE 15,K
4090 COLOR 23,0:PRINT"Enter";
4100 COLOR 7:PRINT" a color for each face:"
4110 PRINT
4120 FOR FACE = 1 TO 6
4130     LOCATE FACE+16,15+K:COLOR 0,7:PRINT USING" \    \";PLACE$(1,FACE);
4140     COLOR 7,0:INPUT;" ";PLACE$(2,FACE)
4150     IF CLRMON THEN 4190
4160     IF PLACE$(2,FACE)="" THEN PLACE$(2,FACE)=YOURS$(FACE)
4170     GOTO 4240
4190     IF PLACE$(2,FACE)="" THEN BR(FACE)=FACE:GOTO 4220                               ELSE BR(FACE)=VAL(PLACE$(2,FACE))
4200     IF BR(FACE)<1 OR BR(FACE)>7 THEN LOCATE ,26:PRINT SPC(14):GOTO 4130
4210     IF ASC(PLACE$(2,FACE))<56 THEN PLACE$(2,FACE)=MID$(PLACE$(2,FACE),2)
4220     COLOR 7,0:LOCATE ,24:PRINT "= ";
4230     COLOR 0,BR(FACE):PRINT PLACE$(2,FACE)+"     "
4240 NEXT
4260 COLOR 7,0
4270 LOCATE 15,K:PRINT "*Chosen ";
4280 LOCATE 9,K
4290 COLOR 1,4
4300 PRINT "  Check each face and its chosen color. ";
4310 COLOR 7,0
4320 PRINT SPC(79)" ";
4330 LOCATE 11,K
4340 COLOR 5,2
4350 PRINT "Press the spacebar to start over...  or,";
4360 COLOR ,0
4370 PRINT SPC(79)" ";
4380 LOCATE 13,K
4390 COLOR 4,6
4400 PRINT "if everything is okay press the `G' key."
4410 COLOR 7,0
4420 G$=INKEY$
4430 IF G$=" " THEN 3770
4440 IF G$<>"G" AND G$<>"g" THEN 4420
4450 RETURN
4460 END

DRIVER.BAS

10 '             **************************************************
20 '             *                                                *
30 '             *                    RACEMAN                     *
40 '             *                                                *
50 '             *  adapted from Tom Bonoma/Microcomputing 12/82  *
60 '             *                                                *
70 '             *            by Paul Somerson, NYPC              *
80 '             *                                                *
90 '             **************************************************
100 '
110 TIT$=STRING$(3,240)+"raceman"
120 BIT$="raceman"+STRING$(3,240)
130 C1=7:C7=0:C2=0:C4=7
140 SCREEN 0,1:WIDTH 80:COLOR 7,0:CLS:KEY OFF
150 FOR SN=1 TO 7
160 FOR SS=1 TO 40
170 SOUND 37+SS,.05
180 LOCATE 3,SN:PRINT MID$(TIT$,SN+3,1)
190 NEXT
200 SOUND 20000,2
210 NEXT
220 FOR WW=1 TO 25
230 SOUND 7000,.05
240 SOUND 9000,.05
250 NEXT
260 LOCATE 11,30:PRINT "Hit any key to begin"
270 FOR W=2 TO 68 STEP 3
280 LOCATE 3,W:PRINT TIT$
290 SOUND 200-W,.05
300 LOCATE 3,W-1:PRINT STRING$(11,32)
310 NEXT
320 INK$=INKEY$:IF INK$="" THEN 330 ELSE 390
330 FOR W=70 TO 2 STEP -3
340 LOCATE 22,W:PRINT BIT$
350 SOUND 150-W,.05
360 LOCATE 22,W-1:PRINT STRING$(11,32)
370 NEXT
380 INK$=INKEY$:IF INK$="" THEN 270
390 CLS:LOCATE 11,9:PRINT "Hit `C' if you have a color monitor, any other key to continue"
400 CL$=INKEY$:IF CL$="" THEN 400
410 IF CL$="C" OR CL$="c" THEN 420 ELSE 430
420 C1=1:C7=7:C2=2:C4=4:COLOR C1,C7,C2
430 CLS:LOCATE 11,16:PRINT "All you have to do is keep your car on the road"
440 LOCATE 13,16:PRINT "Use left cursor to turn left, right for right."
450 LOCATE 15,16:PRINT "Set the level from 20 (beginner) to 0 (racer): "
460 LOCATE 15,64:INPUT "",LEVEL$:LEVEL=VAL(LEVEL$)
470 IF LEVEL$="" THEN LEVEL=0:GOTO 490
480 IF LEVEL>20 OR ASC(LEFT$(LEVEL$,1))>57 OR ASC(LEFT$(LEVEL$,1))<48 THEN BEEP:LOCATE 15,64:PRINT SPC(5):GOTO 460
490 LOCATE 17,16:PRINT "(Hit `S' for slow game, any other key to continue)"
500 SLOW$=INKEY$:IF SLOW$="" THEN 500
510 M=0                    'score reset
520 CLS
530 B1=20:B2=30            'dummy position of b2 to get past crash test
540 T=24                   'initial position of car
550 C$=INKEY$
560 KEY(12) ON
570 KEY(13) ON
580 ON KEY(12) GOSUB 710
590 ON KEY(13) GOSUB 720
600 IF (B1=>T) OR (B2=<T) OR T+1=B2 THEN 880
610 IF SLOW$="S" OR SLOW$="s" THEN FOR A=1 TO 500:NEXT
620 COLOR C1,C7,C2:PRINT TAB(B1);D$;TAB(T);:COLOR C4,C7,C2:PRINT STRING$(2,232);:COLOR C1,C7,C2:PRINT TAB(B2);D$
630 PLAY "mb"
640 SOUND 50,5
650 A=INT(RND(1)*5)+1
660 ON A GOSUB 690,700,700,700,690
670 ON B GOSUB 750,740
680 M=M+1:GOTO 580
690 B=1:RETURN
700 B=2:RETURN
710 T=T-1:RETURN                     'left
720 T=T+1:RETURN                     'right
730 T=T:RETURN                       'straight
740 GOSUB 830:RETURN
750 Y=INT(RND(1)*3)+1
760 IF X=Y THEN 750
770 X=Y
780 IF X=1 THEN D$="/"
790 IF X=2 THEN D$="│"
800 IF X=3 THEN D$="\"
810 GOSUB 830
820 RETURN
830 B1=B1+X-2
840 IF B1<1 THEN B1=1
850 B2=B1+10+LEVEL                          'this controls width of road
860 IF B2>75 THEN B1=29:GOTO 850
870 RETURN
880 K=K+1:SOUND 50,0:COLOR C7,C1,C2:CLS
890 FOR CR=1 TO 20
900 COLOR C4,C7,C2:CLS:LOCATE 11,35:PRINT "**CRASH**!!"
910 SOUND 37+RND*2,.05:SOUND 6000+RND*87,.05
920 COLOR C7,C1,C2:CLS:LOCATE 11,35:PRINT "**CRASH**!!"
930 NEXT
940 LOCATE 11,35:PRINT SPC(12)
950 IF K=3 THEN 990 ELSE 960
960 IF K=5 THEN 1000 ELSE 970
970 IF K=7 THEN 1010 ELSE 980
980 IF K=9 THEN 1020 ELSE 1030
990 LOCATE 11,27:PRINT "Open both eyes this time!!":GOTO 1030
1000 LOCATE 11,25:PRINT "Glad you're not driving my car!!":GOTO 1030
1010 LOCATE 11,22:PRINT "You call that driving????  Pathetic!!!":GOTO 1030
1020 LOCATE 11,14:PRINT "It's people like you who keep the speed limit at 55!!!":GOTO 1030
1030 LOCATE 13,30:PRINT "You scored";M;"points"
1040 LOCATE 15,18:PRINT "Hit `Q' to quit, any other key to try again"
1050 TRY$=INKEY$:IF TRY$="" THEN 1050
1060 IF TRY$="Q" OR TRY$="q" THEN GOTO 1070 ELSE M=0:B2=B1+10+LEVEL:COLOR C1,C7,C2:CLS:T=(B2-B1)/2+B1:GOTO 550            'centers car, restarts
1070 CLS:RUN "MENU.PGM"

PENCIL.BAS

10 CLEAR:SSSS=1:FAST=0:C=1:DIM Q$(1000):DIM U(1000):DIM CL(1000):ZX=18:STRIG (0) ON:STRIG (4) ON
20 SCREEN 0,0,0:WIDTH 80:COLOR 2,4,5:KEY OFF:CLS:POKE 106,0
30 FOR T=1 TO 10:KEY (T) ON:NEXT:GOSUB 100
40 SCREEN SSSS:COLOR 0,2:CLS
50 ZX=0:X=160:Y=100:T=0
60 WINDOW SCREEN (0,0)-(128,128)
65 X=STICK(0):Y=STICK(1)
70 LINE (X,Y)-(X,Y),C,BF
80 IF INKEY$="+" THEN CLS
90 GOTO 65
100 CLS:FOR T=1 TO 10:KEY(T)ON:NEXT
110 ON KEY (1) GOSUB 790
120 ON KEY (5) GOSUB 470
130 ON KEY (6) GOSUB 490
140 ON KEY (7) GOSUB 630
150 ON KEY (8) GOSUB 380
160 ON KEY (9) GOSUB 340
170 ON KEY (10) GOSUB 330
180 RETURN
190 PRINT" <F1>=PRINT THE SCREEN"
200 PRINT" <F2>=SWITCH SCREENS"
210 PRINT" <F3>=DRAW FAST/SLOW"
220 PRINT" <F4>=THICKNESS"
230 PRINT" <F5>=DRAWING COLOR"
240 PRINT" <F6>=SAVE SCREEN"
250 PRINT" <F7>=RETRIEVE PICTURE"
260 PRINT" <F8>="
270 PRINT" <F9>="
280 PRINT" <F10>="
290 SSSS=SSSS+1:IF SSSS>2 THEN SSSS=1
300 IF SSSS=1 THEN ZX=18
310 IF SSSS=2 THEN ZX=36
320 SCREEN SSSS:RETURN
330 C=0:RETURN
340 IF SSSS=1 AND TH>-1 AND SH>-1 THEN LINE (TH,SH)-(127-TH,127-SH),0,B
350 IF SSSS=2 AND TH>-1 AND SH>-1 THEN LINE (7+TH,2+SH)-(639-TH,196-SH),0,B
360 SH=SH-0.5:TH=TH-0.3
370 RETURN
380 IF SSSS=1 AND TH>-1 AND SH>-1 THEN LINE (TH,SH)-(127-TH,127-SH),C,B
390 IF SSSS=2 AND TH>-1 AND SH>-1 THEN LINE (7+TH,2+SH)-(639-TH,196-SH),C,B
400 TH=TH+0.3:SH=SH+0.5
410 IF BBBB=0 THEN CL(M)=C:Q$(M)="BC":U(M)=T:M=M+1
420 RETURN
430 IF FAST=1 THEN FAST=0:RETURN
440 IF FAST=0 THEN FAST=1:RETURN
450 T=T+2:IF T>10 THEN T=0
460 RETURN
470 C=C+1:IF C>3 THEN C=1
480 RETURN
490 N$="PEST":EN$=".TEM":GOSUB 610
500 ON ERROR GOTO 520
510 CLS:FILES "*.PIC"
520 INPUT "NAME OF FILE TO SAVE(</> TO EXIT)";N$:IF N$="/" THEN DEF SEG=&HB800:BLOAD "PEST.TEM":FLAG1=1:GOTO 110
530 FOR L=1 TO LEN (N$)
540 IF MID$(N$,L,1)="." THEN PRINT"DON'T USE A PERIOD IN THE NAME!":GOTO 520
550 NEXT
560 INPUT "SURE";S$:IF LEFT$(S$,1)="N" OR LEFT$(S$,1)="n" THEN 510
570 OPEN "A:"+N$+".VAR" FOR OUTPUT AS #1
580 PRINT #1,SSSS,FAST,C,X,Y
590 CLOSE
600 NAME "A:PEST.TEM" AS "A:"+N$+".PIC":SH=0:TH=0:X=160:Y=100:A$="":C=C+1:BBBB=0:FLAG1=1:SCREEN SSSS:GOSUB 620:GOTO 110
610 DEF SEG = &HB800:BSAVE "A:PEST.TEM",0,&H4000
620 CLS:DEF SEG = &HB800:BLOAD "A:"+N$+EN$:CLOSE:EN$=".PIC":RETURN
630 CLS
640 PRINT"PUT A DISK IN DRIVE `A' AND HIT A KEY   WHEN READY."
650 IF INKEY$="" THEN 650
660 CLS:FILES "*.PIC"
670 PRINT:INPUT "FILE TO RETRIEVE";N$
680 FOR T=1 TO LEN (N$)
690 IF MID$(N$,T,1)="." THEN PRINT"DON'T USE A PERIOD IN THE NAME!":GOTO 670
700 NEXT
710 OPEN "A:"+N$+".VAR" FOR INPUT AS #1
720 INPUT #1,SSSS,FAST,C,X,Y
730 CLOSE:SH=0:TH=0:SCREEN SSSS:CLS:DEF SEG = &HB800:BLOAD "A:"+N$+".PIC":FLAG1=1:A$="":GOTO 110
740 ZX=ZX+1:IF ZX>1 THEN ZX=0
750 RETURN
760 PR=PR+1:IF PR>1 THEN PR=0
770 RETURN
780 A$="":B$=A$:RETURN
790 LPRINT CHR$ (2);CHR$(3);
800 DIM A (10):GOTO 830
810 CLS:SCREEN 1
820 FOR S=0 TO 199 STEP 40:FOR T= 0 TO 319 STEP 30:CIRCLE (T,S),20:NEXT:NEXT
830 FOR AS=0 TO 199 STEP 7:FOR JK=0 TO 319
840 FOR GH=0 TO 6
850 A(GH)=POINT(JK,GH+AS):NEXT
860 IF A(0)<>0 THEN P=P+1
870 IF A(1)<>0 THEN P=P+2
880 IF A(2)<>0 THEN P=P+4
890 IF A(3)<>0 THEN P=P+8
900 IF A(4)<>0 THEN P=P+16
910 IF A(5)<>0 THEN P=P+32
920 IF A(6)<>0 THEN P=P+64
930 LPRINT CHR$ (P);:'CHR$ (20);
940 P=0:NEXT:LPRINT CHR$ (3);CHR$ (14);:NEXT
950 FLAG1=1:GOTO 110

Directory of PC-SIG Library Disk #0177

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

BOMB     BAS      2432   1-01-80  12:37a
BREAKOUT BAS      4864   1-01-80   1:00a
BUGS     EXE     24064   1-29-84   3:29p
BUGS!    SCR       128   5-02-84   6:10p
CUBE     BAS      9536   1-01-80  12:20a
DRIVER   BAS      4352   1-01-80   1:21a
HS       DAT       128   5-29-84  12:36a
JUMPJOE  EXE     61696   3-02-84   7:00p
JUMPJOE  SOL     14464   4-22-84   6:25a
PENCIL   BAS      2632   1-01-80  12:24a
XXX                768   5-29-84   1:06a
CRC      TXT      1076  11-15-84   7:00a
CRCK4    COM      1536  10-21-82   7:54p
       13 file(s)     127676 bytes
                       29184 bytes free