Listing of file='PAC-MAN' on disk='vmedia/tbo_81.wvd.zip'
# Sector 951, program filename = 'PAC-MAN'
0010 REM %"PAC-MAN" - Steve McGarry - 23 NOV 81 - 1.0.0
0011 REM
0012 REM Should anyone get this package to a non-protected state,
0013 REM please do not distribute it as such. The reason for this
0014 REM is so I can be sure that when someone tells me they got
0015 REM 1,000,000 points, I will know they didn't simply look at
0016 REM the program listings. --- SPM
0017 REM
0018 REM
0020 COM A$80,K$1,K1$1,A$(23)79,D$(2,23)79,T(4),X1(4),Y1(4),X0(4),Y0(4),S(4),G
$(4)3,B$(6)3,S0(2),P(2),S1(2),B0(2),D(2),D0(2),M(2),D$11,P1,C$,H$39,H$(10
)39,D0$,T$2
0025 PRINT HEX(03060202000F020402000F)
0030 REM S0()=SCORES
: REM P()=NUMBER OF PAC-MEN (\C9\CE\C3\CC\D5\C4\C9\CE\C7 THE ONE IN PLAY)
: REM S1()=THE NUMBER OF THE SCREEN OF DOTS THAT \C9\D3 \C2\C5\C9\CE\C7 \C5
\C1\D4\C5\CE (i.e. IF S1(1)=1, PLAYER 1 IS EATING SCREEN 1)
0040 REM B=NUMBER OF THE CURRENT BONUS CHARACTER (IF 0, NO BONUS IS ACTIVE)
: REM B0=HOW LONG THE BONUS HAS BEEN ACTIVE (B=0 WHEN B0>50)
: REM B0()=NUMBER OF THE NEXT BONUS CHARACTER
: REM P0=THE NUMBER OF THE PLAYER THAT IS UP
: REM P1=NUMBER OF PLAYERS
0060 B$()=HEX(8181819191919292929393939B9B9B9A9A9A)
: G$()=HEX(E8FFD4E89BD4C09BC0E8FFD4)
0065 DIM W$80
: PRINT HEX(0208090F0306)
: C=0
0066 KEYIN STR(W$,1,1),67,67
: C=C+1
: IF C<100THEN 66
: STOP "- PAC-MAN may not be executed on this workstation."
: GOTO 65
0067 FOR K=2TO 80
: KEYIN STR(W$,K,1)
: IF STR(W$,K,1)=HEX(0D)THEN K=81
: NEXT K
0069 C$=$PSTAT(1)
: C$=STR(C$,9,1)
0070 LIMITS T"PAC-MAN",X,X,X,S
: IF S=1THEN 80
0072 PRINT HEX(03020404040E);AT(0,37);"PAC-MAN";HEX(020402000F)
0074 PRINT AT(3,0);"What disk is PAC-MAN on ?";
: LINPUT ?D0$
: IF VER(D0$,"HHH")<3THEN 74
: SELECT DISK <D0$>
: PRINT HEX(0306)
: GOTO 70
0080 LIMITS T"PAC-HOF",X,X,X,S
: IF S=2THEN 90
: DATA SAVE DC OPEN T(4)"PAC-HOF"
0083 FOR K=1TO 10
: H$(K)=ALL(20)
: STR(H$(K),38,2)=HEX(04A0)
: NEXT K
0085 DATA LOAD DC OPEN T"PAC-HOF"
: DATA SAVE DC H$()
: DATA SAVE DC END
: DATA SAVE DC CLOSE
0090 DATA LOAD DC OPEN T"PAC-HOF"
: DATA LOAD DC H$()
: DATA SAVE DC CLOSE
0092 F=0
: FOR K=1TO 10
: T$=HEX(0000)
: FOR J=1TO 37
: T$=ADDCSTR(H$(K),J,1)
: NEXT J
: IF T$<>STR(H$(K),38,2)THEN F=1
: P=POS(-STR(H$(K),8,30)>" ")-1
: IF P>0THEN $TRAN(STR(H$(K),P+7,31-P),". ")R
: NEXT K
: IF F=1THEN 83
0100 PRINT HEX(0202020F0106);" Player 1 = ";
: PRINTUSING "######",S0(1)
: PRINT AT(0,61);"Player 2 = ";
: PRINTUSING "######",S0(2)
: PRINT
0105 PRINT AT(11,33);BOX(-0,-13);AT(10,0,1120);AT(2,0);
0110 PRINT TAB(11);HEX(FCFCFCFCFCF0C0C0C0C0FCC0C0C0C0C0C0F0FCFCFCFCFCFCF0C0C0C
0C0C0C0C0C0C0C0F4C0C0C0C0C0F8C0C0C0C0FCC0C0C0C0D4C0C0C0FCFCFC20544D)
0120 PRINT TAB(11);HEX(FFFFFFFFFFFFF5C0C0EAFFD5C0C0C0F8FEFFFFFFFFFFFFFFFFFDF4C
0C0C0C0C0C0C0C0FFFDD0C0E0FEFFC0C0C0EAFFD5C0C0C0FFD0C0C0FFFFFF)
0130 PRINT TAB(11);HEX(FFFFFFFCFFFFDFC0C0FFFFFFC0C0FAFFFFFFFFFFFFFFFFFFCFC7C3C
0E0F0F0F0F0D0C0FFFFFFFCFFFFFFC0C0C0FFFFFFC0C0C0FFFDC0C0FFFFFF)
0140 PRINT TAB(11);HEX(FFFFFFFFFFCFC1C0EAFFFFFFD5C0FFFFFFFFFFFFFFF7D1C0C0C0C0C
0EAFFFFFFFFD5C0FFFFFFFFFFFFFFC0C0EAFFFFFFD5C0C0FFFFF5C0FFFFFF)
0150 PRINT TAB(11);HEX(FFFFFFC0C0C0C0C0FFFFFCFFFFC0EBFFFFFFFFFFFFFFFFFFFCF4F0C
0C2C3C3C3C3C1C0FFFFFFFFFFFFFFC0C0FFFFFCFFFFC0C0FFFFFFD4FFFFFF)
0160 PRINT TAB(11);HEX(FFFFFFC0C0C0C0EAFFFFFFFFFFD5C0CBEFFFFFFFFFFFFFFFFFDFC7C
0C0C0C0C0C0C0C0FFFFFFFFFFFFFFC0EAFFFFFFFFFFD5C0FFFFFFFFFFFFFF)
0170 PRINT TAB(11);HEX(CFCFCFC0C0C0C0CFCFCFCFCFCFCFC0C0C0C3CFCFCFCFCFCFC3C0C0C
0C0C0C0C0C0C0C0CFCFCFCFCFCFCFC0CFCFCFCFCFCFCFC0CFCFCFCFCFCFCF)
0175 IF Q=1THEN 180
: IF S0(1)=0AND S0(2)=0THEN 180
: Q=1
: GOTO 600
0180 PRINT
: PRINT TAB(32);"by Steve McGarry"
: PRINT TAB(20);"('PAC-MAN' is a trademark of Midway Mfg.)"
0190 PRINT AT(16,34);HEX(0202020F0E900F);" = 10 Points";AT(18,34);HEX(02040400
0E8B0F);" = 50 Points";AT(22,24);"Select number of players (1 or 2)";AT(2
3,19);"or press any other key to view instructions";HEX(01)
0200 PRINT AT(13,20);HEX(020404000E8B020402000F)
: S=-1
: FOR K=1TO 4
: Y1(K)=20+K*3
: NEXT K
0210 IF S=-1THEN FOR K=60TO 20STEP S
: ELSE FOR K=20TO 70STEP S
0220 PRINT AT(13,K);HEX(0E);
: IF S=1THEN 230
: IF MOD(K,2)=0THEN PRINT HEX(EAFFD5);
: ELSE PRINT HEX(E2FFD5);
: GOTO 240
0230 IF MOD(K,2)=0THEN PRINT HEX(08C0EAFFD5);
: ELSE PRINT HEX(08C0EAFFD1);
0240 FOR J=4TO 1STEP -1
: IF S=-1THEN PRINT HEX(E8FFD4);
: IF S=-1THEN 250
: IF Y1(J)=0THEN 250
: IF MOD(K,2)<>0THEN 250
: Y1(J)=Y1(J)+1
: IF Y1(J)>KTHEN PRINT AT(13,Y1(J));HEX(0EE89BD4)
: IF Y1(J)>KTHEN 250
: PRINT AT(13,K);HEX(0E);
: PRINTUSING "###",J*200
: IF C$="V"THEN FOR L=1TO 750
: ELSE FOR L=1TO 15
: $BREAK255
: NEXT L
: Y1(J)=0
0250 NEXT J
: IF S=-1THEN PRINT TAB(79)
: PRINT AT(13,K);HEX(0E);
: IF S=1THEN 260
: IF MOD(K,2)=0THEN PRINT HEX(EAFFD5)
: ELSE PRINT HEX(E2FFD5)
: GOTO 270
0260 IF MOD(K,2)=0THEN PRINT HEX(C0EAFFD5)
: ELSE PRINT HEX(C0EAFFD1)
0270 K$=HEX(FF)
0280 KEYIN K$,280,280
: IF K$=HEX(FF)THEN 290
: IF K$<>"1"AND K$<>"2"THEN 340
: CONVERT K$TO P1
: GOTO 330
0290 IF C$="V"THEN FOR L=1TO 100
: ELSE FOR L=1TO 2
: $BREAK255
: NEXT L
: NEXT K
: IF S=1THEN 300
: S=1
: GOTO 210
0300 PRINT AT(13,0,80)
: IF C$="V"THEN FOR K=1TO 750
: ELSE FOR K=1TO 50
: K$=HEX(FF)
0310 KEYIN K$,310,310
: IF K$<HEX(FF)THEN K=200
0320 $BREAK255
: NEXT K
: IF K=200THEN 280
: GOTO 600
0330 RETURN CLEAR ALL
: PRINT HEX(03)
: LOAD T"PAC-GAME"
0340 RETURN CLEAR ALL
: PRINT HEX(030202020F06)
0350 PRINT AT(5,55);BOX(3,7);
: IF STR(W$,7,1)="W"THEN PRINT " 8 or ";HEX(5E);
: ELSE PRINT " 8";
: PRINT AT(7,55);" Up"
0360 PRINT AT(9,45);BOX(3,7);
: IF STR(W$,7,1)="W"THEN PRINT " 4 or ";HEX(5F);
: ELSE PRINT " 4";
: PRINT AT(11,45);" Left"
0370 PRINT AT(9,55);BOX(3,7);" 5 ";AT(11,55);" Stop"
0380 PRINT AT(9,65);BOX(3,7);
: IF STR(W$,7,1)="W"THEN PRINT " 6 or ";HEX(84);
: ELSE PRINT " 6";
: PRINT AT(11,65);" Right"
0390 PRINT AT(13,55);BOX(3,7);
: IF STR(W$,7,1)="W"THEN PRINT " 2 or ";HEX(94);
: ELSE PRINT " 2";
: PRINT AT(15,55);" Down"
0400 PRINT AT(0,30);"PAC-MAN Instructions";AT(1,29);BOX(0,21)
0410 PRINT AT(2,0);"Use the keys shown at right to move ";HEX(0EEAFFD10F)
0420 PRINT AT(4,0);HEX(0EE2FFD50F);" Must avoid being 'eaten' by ";HEX(0EE8FFD
4E8FFD4E8FFD4E8FFD40F)
0430 PRINT AT(6,0);"Dots (";HEX(0E90209020900F);") score 10 points each"
0440 PRINT AT(8,0);"4 Flashing Energizers (";HEX(020404000E8B020402000F);") sc
ore"
0450 PRINT "50 points each"
0460 PRINT AT(11,0);"After energizing, ";HEX(0EEAFFD10F);" can attack"
0470 PRINT "and 'eat' ";HEX(0EE89BD4E89BD4E89BD4E89BD4)
0480 PRINT AT(14,0);"Beware of flashing ";HEX(0EE89BD40F);" which"
0490 PRINT "are about to change back to ";HEX(0EE8FFD40F)
0500 PRINT AT(17,0);"Score bonus points by 'eating'"
0510 PRINT "special shapes (i.e. ";HEX(0E8181810F);")"
0520 PRINT AT(20,0);"Earn an additional ";HEX(0EEAFFD10F);" for every"
0530 PRINT "5000 points"
0540 PRINT AT(23,18);"(Press any key to return to the title screen)";HEX(01)
0550 KEYIN K$
: PRINT HEX(03)
: GOTO 90
0600 PRINT AT(10,0,1030);TAB(34);"Hall of Fame"
: PRINT TAB(33);BOX(0,13)
0605 PRINT AT(23,1);"Select number of players (1 or 2) or press any other key
to view instructions";HEX(01)
0610 FOR K=1TO 10
: PRINT AT(11+K,21);STR(H$(K),8,30);" ";STR(H$(K),,7)
: NEXT K
0620 PRINT HEX(01)
0650 K$=HEX(FF)
0655 FOR K=1TO 100
0660 KEYIN K$,660,660
: IF K$=HEX(FF)THEN 670
: IF K$<>"1"AND K$<>"2"THEN 340
: CONVERT K$TO P1
: GOTO 330
0670 IF C$="V"THEN FOR L=1TO 100
: ELSE FOR L=1TO 3
: $BREAK255
: NEXT L
: NEXT K
: GOTO 90
9999 DEFFN'31"Z$=";HEX(22);"PAC-MAN";HEX(22);":SCRATCHTZ$:SAVET$()Z$";HEX(0D)