10 DIM B$(0),D1(10),G$(3),L$(4) 20 DIM M$(2),S$(3),V1(26,3),Z1(9) 'Z1 25 TM=80:TW=40 'Z1 26 CB$=CHR$(252)+CHR$(252)+CHR$(252)+CHR$(252)+CHR$(253)+CHR$(254)+CHR$(255) 'Z1 30 REM DEL 100 Z1(0)=32 :Z1(1)=219:Z1(2)=237:Z1(3)=232:Z1(4)=134 'Z1 105 Z1(5)=135:Z1(6)=252:Z1(7)=253:Z1(8)=254:Z1(9)=255 'Z1 110 M$(0)=" " 'Z1 120 M$(1)=" " 'Z1 130 M$(2)=M$(0)+M$(0) 'Z1 150 REM DEL(150,160) 'Z1 170 L$(0)="Par":L$(1)="Birdie!":L$(2)="Eagle!!" 180 L$(3)="Albatross!!":L$(4)="Hole in One!!" 190 H$=CHR$(254) 'Z1 195 G$(0)=CHR$(252)+H$+H$+H$+H$+H$+H$+H$+H$+H$+H$+H$+H$+CHR$(253) 'Z1 200 G$(1)=" " 'Z1 210 G$(2)=G$(1):H$=CHR$(255) 'Z1 220 G$(3)=CHR$(253)+H$+H$+H$+H$+H$+H$+H$+H$+H$+H$+H$+H$+CHR$(252) 'Z1 230 D1(0)=55:D1(1)=50:FOR I=2 TO 10:D1(I)=(190-I*10)*0.25:NEXT I 300 RESTORE:ANGLE 0 'R2 310 CLS:LOCATE 2,1:PRINT "PB-Super Golf2" 'R2 320 IF C>=2 THEN IF C<=18 THEN 340 'R2 330 C=1:U=0:GOTO 1000 'R2 340 LOCATE 0,3:PRINT "PLAY CONTINUE?(Y/N)";:GOSUB 7200 'R2 350 H$=INKEY$:IF H$="" THEN 350 'R2 360 CLS:IF H$<>"Y" THEN IF H$<>"y" THEN 330 'R2 370 RESTORE (9500+(C-1)*2) 380 GOTO 1010 'R2 1000 GOSUB 9400 'R2 1010 B=0:G=0:S=0:GOSUB 9000:GOSUB 9100:GOSUB 9300 'R2 1100 GOSUB 7200:GOSUB 9150:GOSUB 7140:GOSUB 7200 1110 D=0:B$(0)="CLUB=W1":GOSUB 8900 1200 H$=INKEY$:IF H$="" THEN 1200 ELSE BEEP0 1210 IF H$="8" THEN D=D-1:IF D<0 THEN D=10 1220 IF H$="2" THEN D=D+1:IF D>10 THEN D=0 1230 IF H$=CHR$(13) THEN 1300 1235 FOR M=0 TO TM:NEXT M 'Z1 1240 LOCATE F*17+5+F,0:PRINT MID$("W1W3I3I4I5I6I7I8I9PWSW",D*2+1,2); 1250 GOTO 1200 1300 GOSUB 7200:GOSUB 6000:GOSUB 9100 1305 IF P=0 THEN S=S+1:X1=X:Y1=Y:GOTO 1435 1310 I=D1(D):PW=(I/180)*P:R=(10+D*2)*P:F=18/P 1315 IF F>=45 THEN F=45 1320 X4=X:Y4=Y:O=0:S=S+1 1330 I=0:J=0:W=0:M=0 1350 I=I+F:IF I>180 THEN I=180 1360 X1=Int(X+I*PW*COS(A+O)+J) 1370 Y1=Int(Y-I*PW*SIN(A+O)-R*SIN(I)) 1380 O=O+K:J=J+W:W=W+Q 1390 E=POINT(Abs(X1) MOD 160,Abs(Y1) MOD 32) 1410 IF M=1 THEN DRAW(X4,Y4) ELSE DRAWC(X4,Y4) 1412 IF X1>=0 THEN IF X1<=161 THEN IF Y1>=0 THEN IF Y1<=31 THEN 1415 1414 GOTO 1430 1415 X4=X1:Y4=Y1:M=E 1420 IF E=0 THEN DRAW(X1,Y1) ELSE DRAWC(X1,Y1) 1430 IF I<180 THEN GOTO 1350 1435 X3=INT(X1/6):Y3=INT(Y1/8) 1440 IF X1>=0 THEN IF X1<=159 THEN IF Y1>=0 THEN IF Y1<=31 THEN 1450 1445 GOTO 8000 1450 IF V1(X3,Y3)=3 THEN 8000 1460 IF V1(X3,Y3)=4 THEN 8100 1470 IF V1(X3,Y3)>=5 THEN 8200 1500 B=0:X=X1:Y=Y1:GOSUB 9050:GOSUB 9100 1510 FOR I=1 TO 2 1520 DRAW(X1,Y1):BEEP1:DRAWC(X1,Y1):BEEP1:NEXT I 1530 IF E=0 THEN DRAW(X1,Y1) ELSE DRAWC(X1,Y1) 1540 IF V1(X3,Y3)=2 THEN 2000 1550 GOTO 1100 2000 REM GREEN 2005 XB=INT(X-X3*6):YB=INT(Y-Y3*8)-1 2006 IF XB>=0 THEN IF XB<=4 THEN IF YB>=0 THEN IF YB<=4 THEN 2010 2008 GOTO 1100 2010 G=1:B$(0)="GREEN ON":GOSUB 8900:GOSUB 9400 2020 X=INT(XB*16.8)+INT(RAN#*14)+1 'Z1 2030 Y=INT(YB* 6.4)+INT(RAN#* 7)+1 'Z1 2040 XB=X2:X2=XS*6+1 2050 YB=Y2:Y2=YS*8+5 2060 CLS:GOSUB 9200 2065 DRAW(144,0)-(144,31) 2070 LOCATE 15,1:PRINT "GRAIN ";V$; 2080 IF ABS(INT(X)-X2)<2 THEN IF ABS(INT(Y)-Y2)<2 THEN 2400 2100 LOCATE 15,2:PRINT "SHOT ";S+1; 2105 'GOSUB 9460 'PB1000_ONLY 2110 GOSUB 9050:GOSUB 7140 2120 GOSUB 6000:F=1.68887*P:P=16*P:S=S+1 2130 GOSUB 9200:X1=X:Y1=Y:I=0:J=0 2200 X=X+P*COS(A)+GX:Y=Y-P*SIN(A)+GY 2210 IF X>=0 THEN IF X<=84 THEN IF Y>=0 THEN IF Y<=31 THEN 2220 2215 GOTO 3000 2220 P=P-F:DRAWC(X1,Y1):DRAW(X,Y) 2300 X1=X:Y1=Y 2310 IF P<=5 THEN IF ABS(INT(X)-X2)<2 THEN IF ABS(INT(Y)-Y2)<2 THEN 2400 2320 IF P>0 THEN 2200 2330 GOTO 2100 2400 DRAW(X2,Y2) 2402 LOCATE 15,0:PRINT "CUP IN!"; 'R2 2404 LOCATE 15,2:PRINT "SHOT ";S;:GOSUB 9400 2408 J=S-T 2410 CLS:U=U+J:C=C+1 'R2 2412 LOCATE 1,0:PRINT C-1;"HOLE"; 'R2 2414 LOCATE 3,2:PRINT "SCORE :";:PRINT USING"###";J; 2416 LOCATE 3,3:PRINT "TOTAL SCORE:";:PRINT USING"###";U; 2418 IF J>0 THEN 2450 2420 IF S=1 THEN J=-4 2422 FOR I=1 TO 3 2424 LOCATE 3,1:PRINT " ";:BEEP0 2426 LOCATE 3,1:PRINT L$(-J);:BEEP1 2428 NEXT I 2450 GOSUB 9400:IF C<=18 THEN 1010 'R2 2500 REM GAMEOVER 2510 LOCATE 0,0:PRINT " GAME OVER " 2515 LOCATE 3,1:PRINT " " 2520 LOCATE 3,2:PRINT " " 2530 C=0:GOSUB 7200:GOSUB 7300:GOTO 300 'R2 3000 X=X+COS(A):Y=Y-SIN(A):I=INT(X/10.5):J=INT(Y/4) 3010 IF I<=0 THEN I=-1 3020 IF I>5 THEN I=5 3030 IF J<0 THEN J=0 3040 IF J>6 THEN J=6 3050 X=INT(XB/6)*6+I:Y=INT(YB/8)*8+J 3070 IF X<0 THEN X=0 3080 IF X>161 THEN X=161 3090 IF Y<0 THEN Y=0 3100 IF Y>31 THEN Y=31 3110 G=0:X2=XB:Y2=YB:GOSUB 9100:GOSUB 9050:GOSUB 9300 3120 GOTO 1100 6000 J=X3:GOSUB 7200 6002 DEFCHR$(252)="FFFF00000000":DEFCHR$(253)="FFFFFF000000" 'Z1 6003 DEFCHR$(254)="FFFFFFFF0000":DEFCHR$(255)="FFFFFFFFFF00" 'Z1 6010 IF G=1 THEN 6100 6020 F=0:X3=0 6030 IF X<80 THEN F=1:X3=16 6040 LOCATE X3-F,0:PRINT M$(1); 'Z1 6050 LOCATE X3-F,1:PRINT M$(1); 'Z1 6060 LOCATE X3-F,2:PRINT M$(1); 'Z1 6070 LOCATE X3+10,0:PRINT "H"; 'Z1 6075 IF F=0 THEN DRAW(0,19)-(66,19)-(68,17)-(68,0):GOTO 6080 'Z1 6078 DRAW(92,0)-(92,17)-(94,19)-(161,19) 'Z1 6080 DRAW((X3+5)*6,16)-((X3+5)*6,19) 6085 DRAW((X3+5)*6+2,16)-((X3+5)*6+2,19) 6090 GOTO 6200 6100 F=1:J=X3:X3=14 6110 B$(0)=" " 6120 LOCATE X3,0:PRINT B$(0); 6200 LOCATE X3,0:FOR I=0 TO 9 6210 PRINT CHR$(255);:FOR M=0 TO TM:NEXT M 'Z1 6215 IF INKEY$<>"" THEN 6300 6220 NEXT I 6230 FOR I=9 TO 0 STEP -1 6240 LOCATE X3+I,0:PRINT " ";:FOR M=0 TO TM:NEXT M 'Z1 6245 IF INKEY$<>"" THEN I=I-1:GOTO 6300 6250 NEXT I 6260 I=-1:GOTO 6350 6300 K=-2:FL=0 'Z1 6310 K=K+1 6315 FOR M=1 TO TW 'Z1 6320 IF INKEY$="" THEN FL=1:M=100 'Z1 6325 NEXT M:IF FL=1 THEN 6330 'Z1 6326 GOTO 6310 6330 IF K>6 THEN K=6 6335 IF K<0 THEN K=0 6340 IF I>0 THEN LOCATE X3+I,0:PRINT MID$(CB$,7-K,1); 'Z1 6350 P=(I+1)*0.1:IF P>0 THEN P=P-K*0.0142 6352 IF G=1 THEN GOSUB 7200:LOCATE X3,0:PRINT B$(0);:X3=J:RETURN 6354 IF B=1 THEN P=P*(0.33-((11-D)*0.03)) 6358 GOSUB 7200:K=-1:H$=CHR$(255)+" " 6364 FOR I=9 TO 0 STEP -1 6366 LOCATE X3+I,1:PRINT H$;:FOR M=0 TO TM:NEXT M 'Z1 6367 IF INKEY$<>"" THEN K=I:GOTO 6400 6368 NEXT I 6370 LOCATE X3,1:PRINT "Shot Miss ";:GOSUB 9400:P=0:GOTO 6500 6400 E=-2 6410 E=E+1 6415 FOR M=0 TO TW:NEXT M 6420 IF INKEY$<>"" THEN 6410 6430 IF E>6 THEN E=6 6440 IF E<0 THEN E=0 6450 IF K>0 THEN LOCATE X3+K,1:PRINT MID$(CB$,7-E,1); 'Z1 6460 IF K=-1 THEN K=0:P=0:RETURN 6470 K=(K-5)*1.08:IF K<>0 THEN P=P*0.9 6480 K=K-(E-2)*0.144 6490 IF P=1 THEN IF K=0 THEN LOCATE X3,1:PRINT "Fine!"; 6500 X3=J:GOSUB 7200:BEEP1:RETURN 7100 H$=INKEY$:IF H$="" THEN 7100 ELSE BEEP0 7110 IF H$="2" THEN A=A-4:IF A<0 THEN A=A+360 7112 IF H$="8" THEN A=A+4:IF A>360 THEN A=A-360 7114 IF H$="6" THEN A=A-20:IF A<0 THEN A=A+360 7116 IF H$="4" THEN A=A+20:IF A>360 THEN A=A-360 7118 IF H$=CHR$(13) THEN GOSUB 7200:RETURN 7140 X1=X+INT(16*COS(A)):Y1=Y-INT(16*SIN(A)) 7150 X3=X+INT( 4*COS(A)):Y3=Y-INT( 4*SIN(A)) 7160 I=0:IF G=1 THEN GOSUB 9209:GOTO 7170 'Z1 7162 GOSUB 9109 'Z1 7164 I=POINT(ABS(X1) MOD 160,ABS(Y1) MOD 32) 7165 IF X1<0 THEN X1=0 7166 IF Y1<0 THEN Y1=0 7167 IF X3<0 THEN X3=0 7168 IF Y3<0 THEN Y3=0 7170 DRAW(X3,Y3)-(X1,Y1) 7180 IF I=1 THEN DRAWC(X1,Y1) 7190 GOTO 7100 7200 IF INKEY$<>"" THEN 7200 7210 RETURN 7300 IF INKEY$="" THEN 7300 7310 RETURN 8000 REM OB 8010 B$(0)="OB":GOSUB 8900:S=S+1 8020 FOR I=0 TO 10:BEEP0:NEXT I:GOSUB 9400 'Z1 8030 GOSUB 9050:GOSUB 9109:GOTO 1100 'Z1 8100 REM BUNKER 8110 X=X1:Y=Y1:B=1:B$(0)="BUNKER":GOSUB 8900:GOSUB 9400 'Z1 8120 FOR I=1 TO 5 8130 DRAW(X1,Y1):BEEP0:DRAWC(X1,Y1):BEEP0 8140 NEXT I:GOSUB 9050:GOSUB 9109:GOTO 1100 'Z1 8200 REM IKE 8202 LOCATE X3,Y3:PRINT MID$(S$(Y3),X3+1,1); 8204 IF POINT(X1,Y1)=0 THEN 1500 8206 FOR I=1 TO 5 8208 DRAWC(X1,Y1):BEEP0:DRAW(X1,Y1):BEEP0 8210 NEXT I 8212 X=X1:Y=Y1:GOSUB 9050:S=S+1 8214 B$(0)=CHR$(178)+CHR$(185):GOSUB 8900:GOSUB 9400:GOSUB 9109 'Z1 8216 IF POINT(X,Y)=0 THEN DRAW(X,Y) ELSE DRAWC(X,Y) 8218 FOR I=2 TO 100 STEP 2:X1=INT(X-I*COS(A)):Y1=INT(Y+I*SIN(A)) 8220 IF X1>=0 THEN IF X1<=159 THEN IF Y1>=0 THEN IF Y1<=31 THEN 8222 8221 I=900:GOTO 8224 8222 IF POINT(X1,Y1)=0 THEN I=I+100 8224 NEXT I:IF I<900 THEN 8300 8226 I=0:J=0 8228 IF X1<0 THEN X1=0:J=SGN(Y1-Y2) 8230 IF X1>159 THEN X1=159:J=SGN(Y1-Y2) 8232 IF Y1<0 THEN Y1=0:I=SGN(X1-X2) 8234 IF Y1>31 THEN Y1=31:I=SGN(X1-X2) 8250 IF POINT(X1,Y1)=0 THEN 8300 8260 X1=X1+I:Y1=Y1+J:GOTO 8250 8300 X=X1:Y=Y1:GOSUB 9050:GOSUB 9109 'Z1 8310 GOTO 1100 8900 F=0:IF X<80 THEN F=1 8910 LOCATE F*17,0:PRINT M$(0); 'Z1 8920 LOCATE F*17,1:PRINT M$(0); 'Z1 8921 IF F=0 THEN DRAW(0,11)-(54,11)-(56,9)-(56,0):GOTO 8930 'Z1 8924 DRAW(104,0)-(104,9)-(106,11)-(161,11) 'Z1 8930 LOCATE F*17+F,0:PRINT B$(0); 8940 RETURN 9000 CLS:PRINT "Wait:Loading Course":FOR I=0 TO 3:READ B$(0) 'R2 9005 S$(I)="" 9010 FOR J=0 TO 26:V1(J,I)=VAL(MID$(B$(0),J+1,1)) 9030 S$(I)=S$(I)+Chr$(Z1(V1(J,I))) 9035 NEXT J:NEXT I:S$(3)=LEFT$(S$(3),26):READ B$(0) 9040 T=VAL(MID$(B$(0),1,1)) 9041 XS=VAL(MID$(B$(0),2,1)):YS=VAL(MID$(B$(0),3,1)) 9042 I=VAL(MID$(B$(0),4,1)):J =VAL(MID$(B$(0),5,1)) 9043 READ X:X=X*6+2:READ Y:Y=Y*8+3 9044 READ X2:X2=X2*6+2:READ Y2:Y2=Y2*8+3 9045 IF I<=1 THEN GX=I*2-1:GY=0 ELSE GX=0:GY=(I-2)*2-1 9046 GX=GX*(1+0.2*J):GY=GY*(1+0.2*J) 9047 Q=(INT(RAN#*3)-1)*0.056 'Z1 9048 V$=MID$("<<<>>>^^^vvv",I*3+1,J) 9050 I=X2-X:J=Y-Y2 9052 IF I=0 THEN A=90*SGN(J):GOTO 9070 9054 IF J<>0 THEN 9060 9056 IF I<0 THEN A=180 ELSE A=0 9058 GOTO 9065 9060 A=ATN(J/ABS(I)):IF I<0 THEN A=180-A 9065 IF A<0 then A=A+360 9070 M=SQR((X2-X)^2+(Y-Y2)^2)*4 9080 RETURN 9100 DEFCHR$(252)="0103070F1F3F":DEFCHR$(253)="3F1F0F070301" 'Z1 9102 DEFCHR$(254)="80C0E0F0F8FC":DEFCHR$(255)="FCF8F0E0C080" 'Z1 9109 FOR I=0 TO 3:LOCATE 0,I:PRINT S$(I);:NEXT I 9110 DRAW(X2,Y2)-(X2,Y2-5)-(X2+2,Y2-5) 9130 IF POINT(ABS(X) MOD 160,ABS(Y) MOD 32)=0 THEN DRAW(X,Y) ELSE DRAWC(X,Y) 9135 'GOSUB 9460 'PB1000_ONLY 9140 RETURN 9150 LOCATE 0,0:PRINT M$(2); 'Z1 9155 LOCATE 0,1:PRINT M$(2); 'Z1 9156 DRAW(2,0)-(2,9)-(4,11)-(114,11)-(116,9)-(116,0) 'Z1 9160 LOCATE 1,0:IF S<>0 THEN 9165 9162 PRINT C;"HOLE PAR";:PRINT USING"#";T; 'R2 9165 PRINT USING"####";M;:PRINT "m"; 9170 IF S>0 THEN PRINT " SHOT:";S; 9175 GOSUB 9400 9180 IF G=0 THEN GOSUB 9100 ELSE GOSUB 9200 9190 RETURN 9200 DEFCHR$(252)="0304081020C0":DEFCHR$(253)="C02010080403" 'Z1 9202 DEFCHR$(254)="808080808080":DEFCHR$(255)="010101010101" 'Z1 9209 FOR I=0 TO 3:LOCATE 0,I:PRINT G$(I);:NEXT I 'Z1 9210 DRAW(0,8)-(0,23):DRAW(83,8)-(83,23):LOCATE XS,YS:PRINT CHR$(161); 'Z1 9220 DRAW(X2,Y2-2)-(X2,Y2-5)-(X2+2,Y2-5) 9230 IF POINT(X,Y)=0 THEN DRAW(X,Y) ELSE DRAWC(X,Y) 9240 RETURN 9300 DRAW(162,0)-(162,31) 9305 IF Q=0 THEN RETURN 9310 DRAW(156,27)-(160,27) 9320 IF Q<0 THEN DRAW(158,25)-(156,27)-(158,29):RETURN 9330 DRAW(158,25)-(160,27)-(158,29):RETURN 9400 IF INKEY$<>"" THEN 9400 9410 FOR I=0 TO 800 'Z1 9420 IF INKEY$<>"" THEN I=800 'Z1 9430 NEXT I:RETURN 9450 'REM DEL 'Z1 9460 'REM DEL 'Z1 9500 DATA "333333333333000000000000033","010333333300000000004000003" 9501 DATA "000000000000000000004000203","000000006555700000000000003","55201",1,1,24,2 9502 DATA "333330000000000033333303333","333302040065570003333000333" 9503 DATA "333300000085590000000100333","333330000000000000000003333","48201",21,2,5,1 9504 DATA "000000500333333333333333333","000000500003333333333333333" 9505 DATA "001000504023333333333333333","000000504033333333333333333","34101",2,2,10,2 9506 DATA "333333300555000000033333333","333000000555000040200333333" 9507 DATA "300000000859000044000333333","301000033333330000003333333","47231",2,3,18,1 9508 DATA "333300000055550003333333333","333002000055550000000333333" 9509 DATA "330000000055550000440133333","330000000055550003333333333","47132",21,2,5,1 9510 DATA "000000004008555559000003333","000000004000085590004400333" 9511 DATA "103333333333005500004402033","333333333333305500000033333","53202",0,2,23,2 9512 DATA "333000553333333330000333333","302040550333333300010033333" 9513 DATA "330000550003330400000033333","333000550004000400003333333","45133",19,1,2,1 9514 DATA "000006555555703333333333333","000105559008503333333333333" 9515 DATA "000005550402503333333333333","000008557006903333333333333","36211",3,1,11,2 9516 DATA "333300005555000000000003333","333004005555004001000033333" 9517 DATA "333044005555004400003333333","333200005555000033333333333","43113",17,1,3,3 9518 DATA "000100033333330657033333333","000000003333300555003333333" 9519 DATA "000000040333400859033333333","000000003333333002333333333","45132",3,0,17,3 9520 DATA "333333333303330003333333333","333004333003330001333333333" 9521 DATA "332004333003330000333333333","365557033033330003333333333","48221",17,1,2,2 9522 DATA "333300003333344003333333333","000000000000044023333333333" 9523 DATA "000000001000044050333333333","000000000000044003333333333","33103",8,2,16,1 9524 DATA "333330040033304005555501033","332330040033304008555900033" 9525 DATA "330330040033334000000000033","333333333333333333333000033","54102",23,0,2,1 9526 DATA "331855555555555555555590000","330000855555555555555900000" 9527 DATA "300000000000000000000000330","300000033300444002033333333","47222",2,0,17,3 9528 DATA "333305555044033333333333333","333305055044010333333333333" 9529 DATA "333305255044000333333333333","333305555044003333333333333","34213",13,1,6,2 9530 DATA "555555900855555555933333333","000085044055900855203333333" 9531 DATA "001005700655044055003333333","000065555555700655733333333","45201",2,2,18,1 9532 DATA "333300333005555500033333333","333024440005555500000333333" 9533 DATA "333044333005555500000133333","333300333005555500000333333","44232",21,2,4,1 9534 DATA "100033333333000008570000333","000003333330033300550044443" 9535 DATA "000040004000333330850044443","033333333003333333050040233","52213",0,0,24,3