5 '****** TWIN BALL ****** 6 'GEnie's Laptops RoundTable adaptation of program published in Japan. 7 'Lines 210-220 changed to gain cursor control matching arrow directions. Could be difference between Japanese 8201 and the 8201A used in United States? Change by Dave Thomas. 8 'Cursor keys control racket/paddle of player on the right. 10 CLEAR256,61970!:DEFINTA-Z:DIMBX(2),BY(2),BH(2):SCREEN0,0:CLS:AD!=61970!:GOSUB1000 15 S1=0:S2=0 20 PRINT" ";STRING$(30,134):LOCATE1,7:PRINTSTRING$(30,135);:LOCATE11,0:PRINTCHR$(141);CHR$(137);CHR$(138);CHR$(139);CHR$(140);CHR$(141);CHR$(142);CHR$(143);CHR$(144);CHR$(144);CHR$(141) 30 FORI=1TO6:LOCATE1,I:PRINTCHR$(136):LOCATE16,I:PRINTCHR$(136):LOCATE30,I:PRINTCHR$(136):NEXTI 40 LOCATE33,1:PRINT"YOU":LOCATE35,2:PRINTS1:LOCATE33,4:PRINT"COM":LOCATE35,5:PRINTS2 45 IFS1=S2ANDS2>1THENLOCATE33,7:PRINTCHR$(27);CHR$(112);"DEUCE";CHR$(27);CHR$(113);:SOUND3400,20:SOUND4000,4 46 IFABS(S1-S2)=1ANDS1+S2>4THENLOCATE33,7:PRINTCHR$(27);CHR$(112);"ADVAN";CHR$(27);CHR$(113);:SOUND2700,5:SOUND3800,5:SOUND4200,5 47 IFS1-S2>1ANDS1>2THENW$="YOU":GOTO900 48 IFS2-S1>1ANDS2>2THENW$="COM":GOTO900 50 BX(1)=16:BX(2)=16:BY(1)=3:BY(2)=4:BH(1)=11:BH(2)=4:LX=3:LY=3:RX=28:RY=4 60 ' ****** BALL MOVE ****** 70 FORI=1TO2:LOCATEBX(I),BY(I):PRINTCHR$(131):NEXTI 80 FORI=1TO2 85 IFBX(I)>29THENI=2:K=4:NEXTI:GOTO810 86 IFBX(I)<2THENI=2:K=3:NEXTI:GOTO810 90 IFBX(I)=LX+1ANDBY(I)=LYTHENBH(1)=INT(RND(1)*7+1) 100 IFBX(I)=RX-1ANDABS(BY(I)-RY)<2THENGOSUB510 110 IFBY(I)<2ANDBH(1)<4ORBY(I)>5ANDBH(1)>4ANDBH(1)<8THENBH(1)=8-BH(1) 120 IFBY(I)<2ANDBH(1)>11ORBY(I)>5ANDBH(1)>7ANDBH(1)<11THENBH(1)=22-BH(1) 130 LOCATEBX(I),BY(I):PRINT" ";:IFBX(I)=16THENPRINTCHR$(29);CHR$(136) 140 ONBH(1)GOSUB600,610,620,630,640,650,660,670,680,690,700,710,720,730 150 LOCATEBX(I),BY(I):PRINTCHR$(131):NEXTI 152 ' ****** COM MOVE ****** 155 LOCATELX,LY:PRINT" " 160 IFBX(1)>BX(2)THENLY=LY-(BY(2)>LY)+(BY(2)LY)+(BY(1)0)+(RX>17AND(PEEK(65109!)AND8)>0ANDK=0) 220 RY=RY-(RY<6AND(PEEK(65109!)AND4)>0)+(RY>1AND(PEEK(65109!)AND2)>0ANDK=0) 230 LOCATERX,RY:PRINTCHR$(133) 240 GOTO80 500 ' ****** PLAYER SHOT ****** 510 BH(I)=15-BH(I):IFPEEK(65109!)AND4ORPEEK(65109!)AND8THENBH(I)=11 520 BH(I)=BH(I)-((PEEK(65109!)AND1)>0ANDBH(I)<14)+((PEEK(65109!)AND2)>0ANDBH(I)>8) 530 RX=RX-(RX<29):LOCATERX+(RX<30),RY:PRINT" ":SOUND2222,2:RETURN 600 BX(I)=BX(I)+(BY(I)MOD2):BY(I)=BY(I)-1:RETURN 610 BX(I)=BX(I)+1:BY(I)=BY(I)-1:RETURN 620 BX(I)=BX(I)+1:BY(I)=BY(I)-(BX(I)MOD2):RETURN 630 BX(I)=BX(I)+1:RETURN 640 BX(I)=BX(I)+1:BY(I)=BY(I)+(BX(I)MOD2):RETURN 650 BX(I)=BX(I)+1:BY(I)=BY(I)+1:RETURN 660 BX(I)=BX(I)+(BY(I)MOD2):BY(I)=BY(I)+1:RETURN 670 BX(I)=BX(I)-(BY(I)MOD2):BY(I)=BY(I)+1:RETURN 680 BX(I)=BX(I)-1:BY(I)=BY(I)+1:RETURN 690 BX(I)=BX(I)-1:BY(I)=BY(I)+(BX(I)MOD2):RETURN 700 BX(I)=BX(I)-1:RETURN 710 BX(I)=BX(I)-1:BY(I)=BY(I)-(BX(I)MOD2):RETURN 720 BX(I)=BX(I)-1:BY(I)=BY(I)-1:RETURN 730 BX(I)=BX(I)-(BY(I)MOD2):BY(I)=BY(I)-1:RETURN 800 ' ****** OUT ****** 810 LOCATE14,4:IFK=3THENPRINT"NICE !":S1=S1+1 830 IFK=4THENPRINT"SORRY !":S2=S2+1 840 FORI=1TO3:SOUND3453,20:FORJ=1TO100:NEXTJ,I:CLS:GOTO20 900 LOCATE13,4:PRINTW$;" WON!":POKE65128!,0:GOTO2000 999 ' ****** CHARACTER DEFINE ****** 1000 POKE65215!,18:POKE65216!,242 1010 READD:IFD<0THENRETURNELSEPOKEAD!,D:AD!=AD!+1:GOTO1010 1020 DATA28,54,58,62,28,0,0,0,0,0,255,255,255,255,0,0,0,0,245,215,221,245,215,221,175,187,235,175,187,235,0,0,85,170,0,0 1030 DATA193,193,223,193,193,192,207,208,206,208,207,192,192,209,223,209,192,192,223,194,196,200,223,192,192,192,192,192 1040 DATA192,192,223,213,213,213,202,192,220,202,201,202,220,192,192,223,208,208,208,192,-1 2000 RESTORE2020:FORI=1TO12:READML:SOUNDML,10:NEXTI 2010 SOUND9394,15:FORI=1TO90:NEXTI:SOUND4697,20:END 2020 DATA7456,7032,6269,5918,4968,5586,7032,8368,5586,6269,7032,8368