image of READY prompt

Wang2200.org

Listing of file='PAC-GAME' on disk='vmedia/games_vol_4.wvd.zip'

# Sector 422, program filename = 'PAC-GAME'
0010 REM "PAC-GAME" - Steve McGarry - 22 NOV 81 - 1.0.0
0185 IF P1=1THEN P0=1
   : ELSE P0=2
0190 FOR K=1TO P1
   : P(K)=3
   : NEXT K
0200 MAT S0=ZER
   : MAT S1=ZER
   : B,B0=0
   : B0(1),B0(2)=1
   : F9=0
   : MAT D0=ZER
   : MAT D=ZER
   : D$()=ALL(20)
   : MAT M=CON
0210 REM --- READ 'TRACK' ---
0220 RESTORE LINE 2040
0230 MAT READ A$
0240 IF P1=1THEN 250
   : IF P0=2THEN P0=1
   : ELSE P0=2
   : IF P(P0)=0THEN 240
0250 IF F9=0THEN 260
   : FOR K=1TO 7500
   : NEXT K
0260 F9=1
   : IF MOD(S1(P0),2)=0AND D0(P0)=D(P0)AND D(P0)>0THEN GOSUB 2069
   : PRINT HEX(03060202020F020402000F);
0270 REM --- DISPLAY 'TRACK' ---
0280 PRINT HEX(03020402000F);
   : IF P0=1THEN PRINT HEX(0E);
   : PRINT " Player 1 = ";
   : PRINTUSING "######",S0(1)
   : IF P0=2THEN PRINT HEX(0E);
   : PRINT AT(0,61);"Player 2 = ";
   : PRINTUSING "######",S0(2)
   : FOR K=1TO MIN(10,P(P0))
   : PRINT AT(0,(36-MIN(10,P(P0))*2)+K*4);HEX(0EEAFFD1)
   : NEXT K
0290 FOR K=1TO 23
   : $GIO/005(A000)STR(A$(K),1)
   : IF K<23THEN PRINT
   : NEXT K
   : PRINT HEX(01)
0300 PRINT AT(11,38);HEX(0ECCCCCC)
   : STR(D$(P0,11),39,3)=HEX(CCCCCC)
0310 IF D(P0)>0AND D(P0)<>D0(P0)THEN 390
0320 S1(P0)=S1(P0)+1
0330 REM --- INITIALIZE 'DOTS' ---
0340 D(P0),D0(P0)=0
   : RESTORE
   : FOR X=1TO 23
   : REM ** D()=NUMBER OF DOTS & PILLS ON SCREEN, D0()=NUMBER EATEN **
0350 READ Y
   : IF Y=0THEN 360
   : STR(D$(P0,X),Y,1)=HEX(90)
   : D(P0)=D(P0)+1
   : GOTO 350
0360 NEXT X
0370 REM --- INITIALIZE 'PILLS' ---
0380 STR(D$(P0,4),3,1),STR(D$(P0,4),77,1),STR(D$(P0,16),3,1),STR(D$(P0,16),77,
     1)=HEX(8B)
   : D(P0)=D(P0)+4
0390 REM --- DISPLAY 'DOTS' & 'PILLS' ---
0395 STR(D$(P0,14),39,3)="   "
0400 FOR X=1TO 23
   : IF STR(D$(P0,X),1)=" "THEN 425
   : FOR Y=1TO 79
0410 IF POS(STR(D$(P0,X),Y+1)>" ")=0THEN Y=80
   : IF Y=80THEN 420
   : Y=Y+POS(STR(D$(P0,X),Y+1)>" ")
   : IF STR(D$(P0,X),Y,1)=HEX(8B)THEN PRINT HEX(020404000E);
   : ELSE PRINT HEX(020402000E);
   : PRINT AT(X,Y-1);STR(D$(P0,X),Y,1);HEX(020402000F)
0420 NEXT Y
0425 NEXT X
0430 X,X0=16
   : Y,Y0=39
   : D1=0
   : D2=-1
   : C=0
   : K$,K1$=" "
   : IF B>0AND B0(P0)<6THEN B0(P0)=B0(P0)+.5
   : B,B0=0
0440 X1(1),X0(1)=10
   : Y1(1),Y0(1)=39
   : S(1)=1
0450 FOR G=2TO 4
   : X1(G),X0(G)=12
   : S(G)=4
   : NEXT G
   : Y1(2),Y0(2)=39
   : Y1(3),Y0(3)=36
   : Y1(4),Y0(4)=42
   : G9=0
0460 KEYIN K$,460,460
0470 PRINT AT(X,Y-1);HEX(0EEAFFD5)
0480 FOR K=1TO 4
   : PRINT AT(X1(K),Y1(K)-1);HEX(0EE8FFD4)
   : NEXT K
0490 PRINT AT(14,37);HEX(0E);"READY!";AT(10,35);"PLAYER #";
   : IF P0=1THEN PRINT "1"
   : ELSE PRINT "2"
0500 FOR K=1TO 5000
   : NEXT K
0510 PRINT AT(14,35,10);AT(10,35,10);AT(X1(1),Y1(1)-1);HEX(0E);G$(1)
0520 GOTO 660
0530 REM
0540 IF F=0THEN F=1
   : ELSE F=0
0550 IF D1<>-1THEN 570
0560 IF STR(A$(X),Y-1,1)=" "THEN 640
   : GOTO 630
0570 IF D1<>1THEN 590
0580 IF STR(A$(X),Y+3,1)=" "THEN 640
   : GOTO 630
0590 IF D2<>1THEN 610
0600 IF STR(A$(X+1),Y,3)="   "THEN 640
   : GOTO 630
0610 IF D2<>-1THEN 630
0620 IF STR(A$(X-1),Y,3)="   "THEN 640
0630 D1,D2=0
   : C=1
0640 X0=X
   : Y0=Y
0650 X=X+D2
   : Y=Y+D1
   : Q9=0
0655 IF Y>1THEN 656
   : Y=76
   : Q9=1
   : GOTO 660
0656 IF Y<77THEN 660
   : Y=2
   : Q9=1
0660 S0=S0(P0)
   : IF POS(STR(D$(P0,X),Y,3)=HEX(90))>0THEN S0(P0)=S0(P0)+10
   : IF POS(STR(D$(P0,X),Y,3)=HEX(8B))=0THEN 670
   : S0(P0)=S0(P0)+50
   : E=150-25*MIN(S1(P0),4)
   : FOR G=1TO 4
   : IF S(G)=1THEN S(G)=2
   : NEXT G
   : G0=0
   : MAT X0=X1
   : MAT Y0=Y1
0670 IF S0=S0(P0)THEN 700
   : D0(P0)=D0(P0)+1
   : STR(D$(P0,X),Y,3)=ALL(20)
0680 IF INT(S0/5000)=INT(S0(P0)/5000)THEN 690
   : P(P0)=P(P0)+1
   : PRINT AT(0,28,25);HEX(07)
   : FOR K=1TO MIN(10,P(P0))
   : PRINT AT(0,(36-MIN(10,P(P0))*2)+K*4);HEX(0EEAFFD1)
   : NEXT K
0690 IF S0(P0)>999999THEN 3000
   : PRINT AT(0,12+(P0-1)*60);HEX(0E);
   : PRINTUSING "######",S0(P0)
0700 PRINT AT(X0,Y0-1,3);
   : IF Q9=1THEN 705
   : IF X<X0THEN PRINT HEX(0C);
   : IF X>X0THEN PRINT HEX(0A);
   : IF Y<Y0THEN PRINT HEX(08);
   : IF Y>Y0THEN PRINT HEX(09);
   : PRINT HEX(0E);
   : GOTO 710
0705 PRINT AT(X,Y-1);HEX(0E);
0710 IF C=0THEN 720
   : PRINT HEX(EAFFD5)
   : C=0
   : GOTO 770
0720 IF D1=-1THEN PRINT HEX(E2FFD5)
0730 IF D1=1THEN PRINT HEX(EAFFD1)
0740 IF D2=-1THEN PRINT HEX(EAFCD5)
0750 IF D2=1THEN PRINT HEX(EACFD5)
0760 C=1
0770 IF D0(P0)=D(P0)THEN 250
0780 K$=" "
0790 KEYIN K$,800,795
   : GOTO 800
0795 $TRAN(K$,HEX(3846385632453255364C365C344D345D))R
0800 IF K$<>HEX(20)THEN K1$=K$
0810 K$=K1$
0820 IF K$<"1"THEN 900
   : IF K$>"8"THEN 900
   : CONVERT K$TO K
0830 ON KGOTO ,850,,860,870,880,,890
0840 GOTO 900
0850 IF STR(A$(X+1),Y,3)<>"   "THEN 900
   : IF X=10AND Y=39THEN 900
   : D2=1
   : D1=0
   : GOTO 900
0860 IF STR(A$(X),Y-1,1)<>" "THEN 900
   : D1=-1
   : D2=0
   : GOTO 900
0870 D1,D2=0
   : GOTO 900
0880 IF STR(A$(X),Y+3,1)<>" "THEN 900
   : D1=1
   : D2=0
   : GOTO 900
0890 IF STR(A$(X-1),Y,3)<>"   "THEN 900
   : D1=0
   : D2=-1
   : GOTO 900
0900 IF B=0THEN 930
   : IF X<>14THEN 930
   : IF Y<>39THEN 930
0910 S0=S0(P0)
   : S0(P0)=S0(P0)+B*150
   : SELECT P3
   : PRINT AT(14,38);HEX(0E);
   : PRINTUSING "###",B*150
   : SELECT P
   : B,B0=0
   : STR(D$(P0,14),39,3)="   "
   : IF B0(P0)<6THEN B0(P0)=B0(P0)+.5
   : IF INT(S0/5000)=INT(S0(P0)/5000)THEN 920
   : P(P0)=P(P0)+1
   : PRINT AT(0,28,25);HEX(07)
   : FOR K=1TO MIN(10,P(P0))
   : PRINT AT(0,(36-MIN(10,P(P0))*2)+K*4);HEX(0EEAFFD1)
   : NEXT K
0920 IF S0(P0)>999999THEN 3000
   : PRINT AT(0,12+(P0-1)*60);HEX(0E);
   : PRINTUSING "######",S0(P0)
0930 IF B>0THEN 931
   : M(P0)=M(P0)+1
   : IF M(P0)<300THEN 939
   : M(P0)=1
   : B=INT(B0(P0))
   : STR(D$(P0,14),39,3)=B$(B)
   : PRINT AT(14,38);HEX(0E);B$(B)
   : GOTO 939
0931 B0=B0+1
   : IF B0<150THEN 939
   : B0=0
   : B=0
   : IF B0(P0)<6THEN B0(P0)=B0(P0)+.5
   : PRINT AT(14,38,3)
   : STR(D$(P0,14),39,3)="   "
0939 REM --- MOVE 'GOONS' ---
0940 IF E=0THEN 960
   : E=E-1
   : IF E>0THEN 960
   : FOR G=1TO 4
   : IF S(G)<>2THEN 950
   : S(G)=1
   : X0(G)=X1(G)
   : Y0(G)=Y1(G)
0950 NEXT G
0960 FOR G=1TO 4
0970 G9=G9+1
   : IF G9>1000THEN G9=0
   : IF S(G)<4THEN 990
   : IF G9>(105-25*MIN(S1(P0),4))*(G-1)THEN S(G)=1
   : ELSE GOTO 1620
0990 IF X1(G)<>XTHEN 1010
1000 IF Y1(G)=YTHEN 1670
1010 IF Y1(G)<13AND STR(A$(X1(G)),1,1)=" "THEN 1030
1020 IF Y1(G)>66AND STR(A$(X1(G)),79,1)=" "THEN 1030
1025 GOTO 1050
1030 IF F<>0THEN 1050
1040 IF S(G)<>3THEN 1620
1050 IF S(G)<>2THEN 1070
1060 IF F=0THEN 1620
1070 IF S(G)<3THEN 1080
   : IF X1(G)<>12THEN 1080
   : IF Y1(G)<>39THEN 1080
   : S(G)=1
1080 IF X1(G)<>12THEN 1100
   : IF Y1(G)<36THEN 1100
   : IF Y1(G)>42THEN 1100
   : REM -- IF WE GET TO THE NEXT LINE, THIS GUY IS ACTIVE & INSIDE THE BOX --
1090 X0(G)=X1(G)
   : Y0(G)=Y1(G)
   : IF Y1(G)<39THEN Y1(G)=Y1(G)+1
   : IF Y1(G)>39THEN Y1(G)=Y1(G)-1
   : IF Y0(G)=39THEN X1(G)=11
   : GOTO 1620
1100 REM - NORTH -
1105 MAT T=ZER
   : C0=0
1110 IF STR(A$(X1(G)-1),Y1(G),3)<>" "THEN 1210
1120 IF X1(G)-1=X0(G)THEN 1210
1140 IF S(G)<3THEN 1150
   : IF 12<X1(G)THEN 1145
   : T(1)=C0+1
   : C0=C0+1
   : GOTO 1210
1145 T(1)=C0+50
   : C0=C0+50
   : GOTO 1210
1150 IF X<X1(G)THEN 1180
1160 IF S(G)=2THEN 1190
1170 T(1)=C0+5
   : C0=C0+5
   : GOTO 1210
1180 IF S(G)=2THEN 1170
1190 T(1)=C0+25
   : C0=C0+25
1200 REM - EAST -
1210 IF STR(A$(X1(G)),Y1(G)+3,1)<>" "THEN 1310
1230 IF Y1(G)+1=Y0(G)THEN 1310
1240 IF S(G)<3THEN 1250
   : IF 39>Y1(G)THEN 1245
   : T(2)=C0+1
   : C0=C0+1
   : GOTO 1310
1245 T(2)=C0+50
   : C0=C0+50
   : GOTO 1310
1250 IF Y>Y1(G)THEN 1280
1260 IF S(G)=2THEN 1290
1270 T(2)=C0+5
   : C0=C0+5
   : GOTO 1310
1280 IF S(G)=2THEN 1270
1290 T(2)=C0+25
   : C0=C0+25
1300 REM - SOUTH -
1310 IF STR(A$(X1(G)+1),Y1(G),3)<>" "THEN 1420
1320 IF X1(G)+1=X0(G)THEN 1420
1340 IF S(G)<3THEN 1350
   : IF 12>X1(G)THEN 1345
   : T(3)=C0+1
   : C0=C0+1
   : GOTO 1420
1345 T(3)=C0+50
   : C0=C0+50
   : GOTO 1420
1350 IF X1(G)<>10THEN 1360
   : IF Y1(G)=39THEN 1420
1360 IF X>X1(G)THEN 1390
1370 IF S(G)=2THEN 1400
1380 T(3)=C0+5
   : C0=C0+5
   : GOTO 1420
1390 IF S(G)=2THEN 1380
1400 T(3)=C0+25
   : C0=C0+25
1410 REM - WEST -
1420 IF STR(A$(X1(G)),Y1(G)-1,1)<>" "THEN 1510
1440 IF Y1(G)-1=Y0(G)THEN 1510
1450 IF S(G)<3THEN 1460
   : IF 39<Y1(G)THEN 1455
   : T(4)=C0+1
   : C0=C0+1
   : GOTO 1510
1455 T(4)=C0+50
   : C0=C0+50
   : GOTO 1510
1460 IF Y<Y1(G)THEN 1490
1470 IF S(G)=2THEN 1500
1480 T(4)=C0+5
   : C0=C0+5
   : GOTO 1510
1490 IF S(G)=2THEN 1480
1500 T(4)=C0+25
   : C0=C0+25
1510 R=INT(RND(1)*C0)
1520 X0(G)=X1(G)
   : Y0(G)=Y1(G)
1530 IF R<T(1)THEN 1580
1540 IF R<T(2)THEN 1590
1550 IF R<T(3)THEN 1600
1560 IF R<T(4)THEN 1610
1570 STOP "- HOW THE HELL DID I END UP IN A DEAD END?!?!?!?!?!?"
1580 X1(G)=X1(G)-1
   : GOTO 1620
1590 Y1(G)=Y1(G)+1
   : GOTO 1620
1600 X1(G)=X1(G)+1
   : GOTO 1620
1610 Y1(G)=Y1(G)-1
   : GOTO 1620
1620 PRINT AT(X0(G),Y0(G)-1);
   : IF POS(STR(D$(P0,X0(G)),Y0(G),3)=HEX(8B))<>0THEN PRINT HEX(020404000E);
   : ELSE PRINT HEX(020402000E);
   : D$=STR(D$(P0,X0(G)),Y0(G),3)&HEX(020402000F080808)
   : $GIO/005(A000)D$
1630 IF Y1(G)<>1THEN 1640
   : Y1(G)=76
   : Y0(G)=77
   : GOTO 1645
1640 IF Y1(G)<>77THEN 1650
   : Y1(G)=2
   : Y0(G)=1
1645 PRINT HEX(01)
   : PRINT AT(X1(G),Y1(G)-1);
   : GOTO 1655
1650 IF X1(G)<X0(G)THEN PRINT HEX(0C);
   : IF X1(G)>X0(G)THEN PRINT HEX(0A);
   : IF Y1(G)<Y0(G)THEN PRINT HEX(08);
   : IF Y1(G)>Y0(G)THEN PRINT HEX(09);
1655 IF S(G)<>2THEN 1660
   : IF E<1OR E>24THEN 1660
   : IF F<>0THEN 1660
   : PRINT HEX(020402020F);
1660 PRINT HEX(0E);G$(S(G));HEX(020402000F)
1670 IF X1(G)<>XOR Y1(G)<>YTHEN 1780
   : IF S(G)=1THEN 1690
   : IF S(G)=3THEN 1010
   : S0=S0(P0)
   : G0=G0+200
   : S0(P0)=S0(P0)+G0
   : SELECT P3
   : PRINT AT(X1(G),Y1(G)-1);HEX(0E);
   : PRINTUSING "###",G0
   : SELECT P
   : S(G)=3
   : X0(G)=X1(G)
   : Y0(G)=Y1(G)
1675 IF INT(S0/5000)=INT(S0(P0)/5000)THEN 1680
   : P(P0)=P(P0)+1
   : PRINT AT(0,28,25);HEX(07)
   : FOR K=1TO MIN(10,P(P0))
   : PRINT AT(0,(36-MIN(10,P(P0))*2)+K*4);HEX(0EEAFFD1)
   : NEXT K
1680 IF S0(P0)>999999THEN 3000
   : PRINT AT(0,12+(P0-1)*60);HEX(0E);
   : PRINTUSING "######",S0(P0)
   : GOTO 1010
1690 FOR K=1TO 1000
   : NEXT K
   : SELECT P1
   : PRINT AT(X,Y-1);HEX(0EEAFCD5)
1700 PRINT AT(X,Y-1);HEX(0EE8FCD4)
1710 PRINT AT(X,Y-1);HEX(0EE0FCD0)
1720 PRINT AT(X,Y-1);HEX(0EC0FCC0)
1730 PRINT AT(X,Y-1);HEX(0EC0CCC0)
1740 PRINT AT(X,Y-1);HEX(C0C0C007)
   : SELECT P
1750 P(P0)=P(P0)-1
   : IF P(P0)=0THEN 1760
   : GOTO 240
1760 PRINT AT(0,38,3);HEX(0E);AT(14,35);"GAME OVER";AT(10,35);"PLAYER #";
   : IF P0=1THEN PRINT "1"
   : ELSE PRINT "2"
   : FOR K=1TO 7500
   : NEXT K
1770 KEYIN K$,1770,1770
   : K$=" "
   : IF P(1)=0AND P(2)=0THEN 1795
   : F9=0
   : GOTO 240
1780 NEXT G
1790 GOTO 530
1795 RETURN CLEAR ALL
   : PRINT HEX(03)
   : GOTO 5000
1800 REM --- DOT LOCATIONS ---
1810 DATA 0
1820 DATA 3,6,9,12,15,18,21,24,27,30,33,37,43,47,50,53,56,59,62,65,68,71,74,77
     ,0
1830 DATA 3,15,37,43,65,77,0
1840 DATA 15,37,43,65,0
1850 DATA 3,15,37,43,65,77,0
1860 DATA 3,6,9,12,15,18,21,24,28,31,34,37,40,43,46,49,52,56,59,62,65,68,71,74
     ,77,0
1870 DATA 3,15,28,52,65,77,0
1880 DATA 3,15,28,31,34,37,43,46,49,52,65,77,0
1890 DATA 3,15,65,77,37,43,0
1900 DATA 3,6,9,12,15,65,68,71,74,77,0
1910 DATA 15,65,0
1920 DATA 15,65,0
1930 DATA 15,65,0
1940 DATA 3,6,9,12,15,65,68,71,74,77,0
1950 DATA 3,15,65,77,0
1960 DATA 6,9,15,18,21,24,28,31,34,37,43,46,49,52,56,59,62,65,71,74,0
1970 DATA 9,15,28,52,65,71,0
1980 DATA 3,6,9,12,15,28,52,65,68,71,74,77,0
1990 DATA 3,28,52,77,0
2000 DATA 3,28,31,34,37,43,46,49,52,77,0
2010 DATA 3,37,43,77,0
2020 DATA 3,6,9,12,15,18,21,24,27,30,33,37,40,43,47,50,53,56,59,62,65,68,71,74
     ,77,0
2030 DATA 0
2040 DATA "\E8\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\
     CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\DC\CC\EC\CC\CC\CC\CC\CC\C
     C\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC
     \CC\CC\CC\CC\CC\CC\CC\D4"
2041 DATA "\EA                                     \D5 \EA
                      \D5"
2042 DATA "\EA   \DC\CC\CC\CC\CC\CC\CC\CC\EC   \DC\CC\CC\CC\CC\CC\CC\CC\CC\CC\
     CC\CC\CC\CC\CC\CC\CC\CC\EC   \D5 \EA   \DC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\
     CC\CC\CC\CC\CC\CC\CC\EC   \DC\CC\CC\CC\CC\CC\CC\CC\EC   \D5"
2043 DATA "\EA   \D5       \EA   \D5                 \EA   \D5 \EA   \D5
                \EA   \D5       \EA   \D5"
2044 DATA "\EA   \CD\CC\CC\CC\CC\CC\CC\CC\CE   \CD\CC\CC\CC\CC\CC\CC\CC\CC\CC\
     CC\CC\CC\CC\CC\CC\CC\CC\CE   \CD\CC\CE   \CD\CC\CC\CC\CC\CC\CC\CC\CC\CC\C
     C\CC\CC\CC\CC\CC\CC\CC\CE   \CD\CC\CC\CC\CC\CC\CC\CC\CE   \D5"
2045 DATA "\EA
                  \D5"
2046 DATA "\EA   \DC\CC\CC\CC\CC\CC\CC\CC\EC   \DC\CC\CC\CC\CC\CC\CC\CC\CC\EC
       \CC\CC\CC\CC\CC\CC\CC\CC\CC\DC\CC\EC\CC\CC\CC\CC\CC\CC\CC\CC\CC   \DC\C
     C\CC\CC\CC\CC\CC\CC\CC\EC   \DC\CC\CC\CC\CC\CC\CC\CC\EC   \D5"
2047 DATA "\EA   \D5       \EA   \D5        \EA            \D5 \EA
     \D5        \EA   \D5       \EA   \D5"
2048 DATA "\EA   \CD\CC\CC\CC\CC\CC\CC\CC\CE   \D5        \CA\CC\CC\CC\CC\EC\C
     C\CC\CC\CC   \CD\CC\CE   \CC\CC\CC\CC\DC\CC\CC\CC\CC\C5        \EA   \CD\
     CC\CC\CC\CC\CC\CC\CC\CE   \D5"
2049 DATA "\EA               \D5             \EA                 \D5
        \EA               \D5"
2050 DATA "\CA\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC   \CD\CC\CC\CC\CC\CC\CC\CC\
     CC\CC\CC\CC\CC\CC\CE   \DC\CC\CC\CC   \CC\CC\CC\EC   \CD\CC\CC\CC\CC\CC\C
     C\CC\CC\CC\CC\CC\CC\CC\CE   \CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\C5"
2051 DATA "                                  \D5         \EA
                     "
2052 DATA "\E8\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC   \DC\CC\CC\CC\CC\CC\CC\CC\
     CC\CC\CC\CC\CC\CC\EC   \CD\CC\CC\CC\CC\CC\CC\CC\CC\CC\CE   \DC\CC\CC\CC\C
     C\CC\CC\CC\CC\CC\CC\CC\CC\CC\EC   \CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\D4
     "
2053 DATA "\EA               \D5             \EA                 \D5
        \EA               \D5"
2054 DATA "\EA   \CC\CC\CC\CC\CC\CC\DC\CC\EC   \CD\CC\CC\CC\CC\CC\CC\CC\CC\CC\
     CC\CC\CC\CC\CE   \CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC   \CD\CC\CC\CC\CC\CC\C
     C\CC\CC\CC\CC\CC\CC\CC\CE   \DC\CC\EC\CC\CC\CC\CC\CC\CC   \D5"
2055 DATA "\EA         \D5 \EA
          \D5 \EA         \D5"
2056 DATA "\EA\CC\CC\CC\CC\CC\CC   \CD\CC\CE   \DC\CC\CC\CC\CC\CC\CC\CC\CC\EC
       \DC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\EC   \DC\C
     C\CC\CC\CC\CC\CC\CC\CC\EC   \CD\CC\CE   \CC\CC\CC\CC\CC\CC\D5"
2057 DATA "\EA               \D5        \EA   \D5                   \EA   \D5
            \EA               \D5"
2058 DATA "\EA   \DC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\C5        \EA   \CD\CC\C
     C\CC\CC\CC\CC\CC\CC\D4 \E8\CC\CC\CC\CC\CC\CC\CC\CC\CE   \D5        \CA\CC
     \CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\EC   \D5"
2059 DATA "\EA   \D5                    \EA            \D5 \EA            \D5
                        \EA   \D5"
2060 DATA "\EA   \CD\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\
     CC\CE\CC\CC\CC\CC\CC\CC\CC\CC\CC   \CD\CC\CE   \CC\CC\CC\CC\CC\CC\CC\CC\C
     C\CD\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CE   \D5
     "
2061 DATA "\EA
                  \D5"
2062 DATA "\CA\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\
     CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\C
     C\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC\CC
     \CC\CC\CC\CC\CC\CC\CC\C5"
2069 REM --- FLOOR SHOW ---
2070 PRINT HEX(03060202020F020402000E)
2080 FOR K=68TO 1STEP -1
2090 PRINT AT(11,K);
   : IF MOD(K,2)=0THEN PRINT HEX(EAFFD5C0)
   : ELSE PRINT HEX(E2FFD5C0)
2100 PRINT AT(11,K+4);HEX(E8FFD4C0)
2110 IF C$="V"THEN FOR Q=1TO 100
   : ELSE FOR Q=1TO 2
   : $BREAK255
   : NEXT Q
2120 NEXT K
2130 PRINT AT(11,0,80)
2140 IF C$="V"THEN FOR Q=1TO 1000
   : ELSE FOR Q=1TO 12
   : $BREAK255
   : NEXT Q
2150 FOR K=1TO 68
2160 PRINT AT(10,K);
   : IF MOD(K,2)=0THEN A$=HEX(C0FCFCFCFCFCFC0A08080808080808C0FFFFFFFFFFFF0A08
     080808080808C0CFCFCFCFCFCF)
   : ELSE A$=HEX(C0FCFCFCFCFCFC0A08080808080808C0FFFFFFFFC0C00A08080808080808C
     0CFCFCFCFCFCF)
   : $GIO/005(A000)A$
2170 PRINT AT(11,K+8);HEX(C0E89BD4)
2180 IF C$="V"THEN FOR Q=1TO 100
   : ELSE FOR Q=1TO 2
   : $BREAK255
   : NEXT Q
2190 NEXT K
2200 PRINT AT(10,0,240)
2210 RETURN
3000 DIM W$(24)79
3010 GOTO 3100
3020 DEFFN'254(X,Y)
3030 X=INT(X)
   : Y=INT(Y)
   : X1=INT(Y/3)+1
   : Y1=INT(X/2)+1
3040 B0=MOD(Y,3)*2+MOD(X,2)
   : STR(W$(X1),Y1,1)=XOR BIN(2^B0)
3050 PRINT AT(X1-1,Y1-1);STR(W$(X1),Y1,1);
   : RETURN
3060 DEFFN'255(X,Y)
3070 X=INT(X)
   : Y=INT(Y)
   : X1=INT(Y/3)+1
   : Y1=INT(X/2)+1
3080 B0=MOD(Y,3)*2+MOD(X,2)
   : STR(W$(X1),Y1,1)=OR BIN(2^B0)
3090 PRINT AT(X1-1,Y1-1);STR(W$(X1),Y1,1);
   : RETURN
3100 PRINT HEX(03060202020F020402000E)
3110 FOR F=1TO 10
   : A=INT(RND(1)*117)+25
   : B=INT(RND(1)*30)+15
   : C=INT(RND(1)*10)+5
3120 W$()=ALL(C0)
3130 FOR K=69TO BSTEP -2
   : GOSUB '255(A,K)
   : GOSUB '254(A,K)
   : NEXT K
3140 IF RND(1)>.5THEN GOTO 3380
3150 D=INT(RND(1)*2)+1
3160 FOR K=0TO CSTEP D
3170 GOSUB '255(A,B-K)
3180 GOSUB '255(A,B+K)
3190 GOSUB '255(A-K,B)
3200 GOSUB '255(A+K,B)
3210 GOSUB '255(A-K,B-K)
3220 GOSUB '255(A+K,B+K)
3230 GOSUB '255(A-K,B+K)
3240 GOSUB '255(A+K,B-K)
3250 NEXT K
3260 GOSUB '254(A,B)
3270 FOR K=0TO CSTEP D
3280 GOSUB '254(A,B-K)
3290 GOSUB '254(A,B+K)
3300 GOSUB '254(A-K,B)
3310 GOSUB '254(A+K,B)
3320 GOSUB '254(A-K,B-K)
3330 GOSUB '254(A+K,B+K)
3340 GOSUB '254(A-K,B+K)
3350 GOSUB '254(A+K,B-K)
3360 NEXT K
3370 GOTO 3460
3380 IF C>10THEN C=10
   : RESTORE LINE 3470
   : FOR K=1TO C*6
3390 READ R1,R2
3400 GOSUB '255(A+R1,B+R2)
3410 NEXT K
3420 RESTORE LINE3470
   : FOR K=1TO C*6
3430 READ R1,R2
3440 GOSUB '254(A+R1,B+R2)
3450 NEXT K
3460 NEXT F
3470 DATA -1,-1,1,-1,0,0,0,-1,-1,1,1,1
3480 DATA -2,-1,2,-1,-1,-2,1,-2,-3,2,3,2
3490 DATA -4,-1,4,-1,-3,-3,3,-3,-4,2,4,2
3500 DATA -5,-2,5,-2,-5,-4,5,-4,-5,2,5,2
3510 DATA -7,-2,7,-2,-7,-5,7,-5,-6,3,6,3
3520 DATA -9,-2,9,-2,-8,-5,8,-5,-7,3,7,3
3530 DATA -11,-1,11,-1,-10,-5,10,-5,-8,4,8,4
3540 DATA -13,0,13,0,-12,-4,12,-4,-9,5,9,5
3550 DATA -15,1,15,1,-14,-3,14,-3,-9,6,9,6
3560 DATA -16,2,16,2,-16,-2,16,-2,-9,6,-9,6
3700 PRINT HEX(0F);AT(3,25);"C O N G R A T U L A T I O N S !"
   : PRINT
   : PRINT TAB(12);"You have scored ";HEX(020404000E);"1,000,000 POINTS";HEX(0
     20402000F);" in this game of PAC-MAN."
3710 PRINT
   : PRINT TAB(8);"Since this is a great accomplishment, the author of this pr
     ogram"
   : PRINT TAB(6);"would appreciate it if you would contact him so that he may
      send you"
   : PRINT TAB(26);"a Certificate of Achievement!"
3720 PRINT
   : PRINT TAB(30);"Please call or write:"
   : PRINT
3730 PRINT TAB(34);"Steve McGarry"
   : PRINT TAB(25);"Wang Laboratories, Incorporated"
   : PRINT TAB(31);"1 Industrial Avenue"
   : PRINT TAB(26);"Lowell, Massachusetts  01851"
   : PRINT TAB(30);"Phone: (617) 459-5000"
3740 PRINT AT(22,3);"Press (-RETURN-) to clear the screen & enter your name in
      the Hall of Fame"
4000 PRINT HEX(020402000E)
4010 FOR K=0TO 2
4020 PRINT AT(20,1);
4030 FOR J=0TO 12
4040 PRINT TAB(J*6+(2-K)*2+2);HEX(CF);
4050 NEXT J
4060 PRINT TAB(80);HEX(01)
4070 PRINT AT(0,0);
4080 FOR J=0TO 12
4090 PRINT TAB(J*6+K*2);HEX(CF);
4100 NEXT J
4110 PRINT TAB(80)
4120 FOR J=20 TO 2STEP -3
4130 PRINT AT(J-K+1,0,1)
4140 PRINT AT(J-K,0);HEX(CF)
4150 NEXT J
4160 FOR J=0TO 18STEP 3
4170 IF J+K>0THEN PRINT AT(J+K-1,78,1)
4180 PRINT AT(J+K,78);HEX(CF)
4190 NEXT J
4200 NEXT K
4204 K$=HEX(FF)
4205 KEYIN K$,4205,4205
   : IF K$=HEX(FF)THEN 4010
   : GOTO 1795
4210 GOTO 4010
5000 REM --- HIGH-SCORE ROUTINE ---
5010 DATA LOAD DC OPEN T"PAC-HOF"
5015 FOR H0=1TO 2
   : IF S0(H0)=0THEN 5900
   : CONVERT S0(H0)TO H$,(#######)
   : IF STR(H$,,1)="0"THEN STR(H$,,POS(H$>"0")-1)=ALL(20)
5020 DBACKSPACE BEG
   : DATA LOAD DC H$()
   : H=1
5030 IF H$>STR(H$(H),,7)THEN 5040
   : IF H=10THEN 5900
   : H=H+1
   : GOTO 5030
5040 FOR K=9TO HSTEP -1
   : H$(K+1)=H$(K)
   : NEXT K
5050 H$(H)=ALL(20)
   : STR(H$(H),,7)=H$
5060 PRINT HEX(03);AT(8,11);"Congratulations, player";H0;HEX(08);", your score
      qualifies you for the"
   : PRINT TAB(14);"PAC-MAN Hall of Fame!  Please enter your name below."
5070 KEYIN K$,5070,5070
   : PRINT AT(11,24);HEX(0202000F);
   : LINPUT -STR(H$(H),8,30)
   : IF STR(H$(H),8,30)=" "THEN 5070
   : PRINT HEX(0306)
5080 STR(H$(H),38,2)=ALL(00)
   : FOR K=1TO 37
   : STR(H$(H),38,2)=ADDCSTR(H$(H),K,1)
   : NEXT K
5090 DBACKSPACE BEG
   : DATA SAVE DC H$()
   : DATA SAVE DC END
5900 NEXT H0
   : DATA SAVE DC CLOSE
   : LOAD T"PAC-MAN"
9998 DEFFN'30"SELECTLIST215(132):LIST";HEX(22);"DE-COMPRESSED PROGRAM TEXT";HE
     X(22);"D:LIST";HEX(22);"LINE NUMBER CROSS-REFERENCE";HEX(22);"#:LIST";HEX
     (22);"VARIABLE CROSS-REFERENCE";HEX(22);"V:LIST";HEX(22);"DEFINED SUBROUT
     INE CROSS-REFERENCE";HEX(22);"':SELECTLIST005(80)";HEX(0D)
9999 DEFFN'31"Z$=";HEX(22);"PAC-GAME";HEX(22);":SCRATCHTZ$:SAVET$()Z$";HEX(0D)