Listing of file='PAC-MAN' on disk='vmedia/games_vol_4.wvd.zip'
# Sector 136, 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)