image of READY prompt

Wang2200.org

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)