! ****************** ! * TI TIC TAC TOE * ! * * ! * REV.2 4TH FEB * ! * * ! * 2.30AM * ! * * ! * JOE MORRIS * ! ****************** ! ************** ! * INITIALIZE * ! ************** ! ! * NOTE - CALL LINK("CHSETL") DOES NOT WORK WITH ORIGINAL TI99/4. EVERYTHING ELSE DOES. 10 DIM B(9)::CALL LINK("SCRN2")::CALL LINK("SCREEN",4)::CALL LINK("CHSETL")::GOSUB 32000::RANDOMIZE::CALL MAGNIFY(4) ! ************** ! * MUSIC DATA * ! ************** 190 DIM NT(113),DU(113) 200 FOR L=1 TO 113 :: READ Z :: NT(L)=Z :: NEXT L 205 DATA 185,185,185,175,185,294,220,220 210 DATA 185,196,196,196,220,247 215 data 165,165,165,155,165,277,220,220 220 data 165,147,147,147,165,185 225 data 185,185,185,175,185,370,294,294 230 data 220,208,330,330,247,330 235 data 294,277,330,330,247,330 240 data 247,330,330,247,330 245 data 220,208,220,208,220,196 250 data 185,175,185,247,220,185,147 255 data 123,165,147 260 data 165,155,165,220,196,185,147,123,185,165 265 data 220,247,294,277,247,220,294 270 data 220,247,294,277,220,294 275 data 330,377,330,377,330,394,247 280 data 394,277,440,308 285 data 330,377,330,377,330,394,277 290 data 394,277,294 295 restore 305 300 FOR L=1 TO 113::READ Z::DU(L)=Z::NEXT L 305 DATA 256,128,128,128,128,256,128,256 310 data 128,256,128,256,128,512 315 data 256,128,128,128,128,256,128,256 320 data 128,256,128,256,128,512 325 data 256,128,128,128,128,256,128,256 330 data 128,256,128,256,128,512 335 data 128,256,128,128,128,128 340 data 256,128,128,128,128 345 data 256,128,256,128,512,512 350 data 128,128,128,256,256,512,512 355 data 512,512,512 360 data 128,128,128,256,128,512,512,512,512,512 365 data 128,256,128,256,128,256,256 370 data 128,256,128,256,128,512 375 data 128,256,128,256,128,512,512 380 data 512,512,512,512 385 data 128,256,128,256,128,512,512 390 data 512,512,1024 1000 SC1=0::SC2=0::GOSUB 29000 ! TITLE SCREEN 1010 GOSUB 31000 ! GAME BOARD 1020 T=0 ! TURN IS NILL ! CHECK TO SEE IF BOARD IS FULL, IF NOT INCREMENT TURN 1030 IF B(1)>0 AND B(2)>0 AND B(3)>0 AND B(4)>0 AND B(5)>0 AND B(6)>0 AND B(7)>0 AND B(8)>0 AND B(9)>0 THEN 23000 1035 T=T+1 ! TURN INCREMENTED 1040 IF T>2 THEN T=1 ! IF TURN GREATER THAN 2, BACK TO 1 1050 IF T=1 THEN 2000 ! PLAYER'S TURN 1060 IF T=2 THEN 3000 ! COMPUTER'S TURN 2000 CALL LINK("DELAY",500) ! KILL SOME TIME 2005 CALL LINK("DISPLY",22,1," ") 2010 CALL LINK("DISPLY",22,1," YOUR TURN")::GOSUB 28000 2020 CALL KEY(0,K,S) :: IF S=0 THEN 2020 2030 IF K=49 THEN 2100 ELSE IF K=50 THEN 2200 ELSE IF K=51 THEN 2300 ELSE IF K=52 THEN 2400 2040 IF K=53 THEN 2500 ELSE IF K=54 THEN 2600 ELSE IF K=55 THEN 2700 ELSE IF K=56 THEN 2800 2050 IF K=57 THEN 2900 2060 CALL SOUND(200,220,0)::GOTO 2020 ! PLAYER INTO #1 2100 IF B(1)>0 THEN 27000 2105 B(1)=1::CALL LINK("DISPLY",6,10," ") 2110 SP=1::PT=36::PC=7::X=40::Y=73::GOSUB 26000 2120 GOTO 4100 ! PLAYER INTO #2 2200 IF B(2)>0 THEN 27000 2205 B(2)=1::CALL LINK("DISPLY",6,15," ") 2210 SP=2::PT=36::PC=7::X=40::Y=113::GOSUB 26000 2220 GOTO 4100 ! PLAYER INTO #3 2300 IF B(3)>0 THEN 27000 2305 B(3)=1::CALL LINK("DISPLY",6,20," ") 2310 SP=3::PT=36::PC=7::X=40::Y=153::GOSUB 26000 2320 GOTO 4100 ! PLAYER INTO #4 2400 IF B(4)>0 THEN 27000 2405 B(4)=1::CALL LINK("DISPLY",11,10," ") 2410 SP=4::PT=36::PC=7::X=80::Y=73::GOSUB 26000 2420 GOTO 4100 ! PLAYER INTO #5 2500 IF B(5)>0 THEN 27000 2505 B(5)=1::CALL LINK("DISPLY",11,15," ") 2510 SP=5::PT=36::PC=7::X=80::Y=113::GOSUB 26000 2520 GOTO 4100 ! PLAYER INTO #6 2600 IF B(6)>0 THEN 27000 2605 B(6)=1::CALL LINK("DISPLY",11,20," ") 2610 SP=6::PT=36::PC=7::X=80::Y=153::GOSUB 26000 2620 GOTO 4100 ! PLAYER INTO #7 2700 IF B(7)>0 THEN 27000 2705 B(7)=1::CALL LINK("DISPLY",16,10," ") 2710 SP=7::PT=36::PC=7::X=120::Y=73::GOSUB 26000 2720 GOTO 4100 ! PLAYER INTO #8 2800 IF B(8)>0 THEN 27000 2805 B(8)=1::CALL LINK("DISPLY",16,15," ") 2810 SP=8::PT=36::PC=7::X=120::Y=113::GOSUB 26000 2820 GOTO 4100 ! PLAYER INTO #9 2900 IF B(9)>0 THEN 27000 2905 B(9)=1::CALL LINK("DISPLY",16,20," ") 2910 SP=9::PT=36::PC=7::X=120::Y=153::GOSUB 26000 2920 GOTO 4100 ! ******************* ! * COMPUTER'S TURN * ! ******************* 3000 CALL LINK("DELAY",500)::CALL LINK("DISPLY",22,1," ") 3010 CALL LINK("DISPLY",22,1," MY TURN") ! CHECK TO SEE IF COMPUTER CAN WIN FIRST, THEN CHECK PLAYER'S MARKERS 3015 GOSUB 5000 ! CHECK 123 3020 IF B(1)=0 AND B(2)=1 AND B(3)=1 THEN 3100 3021 IF B(1)=1 AND B(2)=0 AND B(3)=1 THEN 3200 3022 IF B(1)=1 AND B(2)=1 AND B(3)=0 THEN 3300 ! CHECK 456 3023 IF B(4)=0 AND B(5)=1 AND B(6)=1 THEN 3400 3024 IF B(4)=1 AND B(5)=0 AND B(6)=1 THEN 3500 3025 IF B(4)=1 AND B(5)=1 AND B(6)=0 THEN 3600 ! CHECK 789 3026 IF B(7)=0 AND B(8)=1 AND B(9)=1 THEN 3700 3027 IF B(7)=1 AND B(8)=0 AND B(9)=1 THEN 3800 3028 IF B(7)=1 AND B(8)=1 AND B(9)=0 THEN 3900 ! CHECK 147 3029 IF B(1)=0 AND B(4)=1 AND B(7)=1 THEN 3100 3030 IF B(1)=1 AND B(4)=0 AND B(7)=1 THEN 3400 3031 IF B(1)=1 AND B(4)=1 AND B(7)=0 THEN 3700 ! CHECK 258 3032 IF B(2)=0 AND B(5)=1 AND B(8)=1 THEN 3200 3033 IF B(2)=1 AND B(5)=0 AND B(8)=1 THEN 3500 3034 IF B(2)=1 AND B(5)=1 AND B(8)=0 THEN 3800 ! CHECK 369 3035 IF B(3)=0 AND B(6)=1 AND B(9)=1 THEN 3300 3036 IF B(3)=1 AND B(6)=0 AND B(9)=1 THEN 3600 3037 IF B(3)=1 AND B(6)=1 AND B(9)=0 THEN 3900 ! CHECK 159 3038 IF B(1)=0 AND B(5)=1 AND B(9)=1 THEN 3100 3039 IF B(1)=1 AND B(5)=0 AND B(9)=1 THEN 3500 3040 IF B(1)=1 AND B(5)=1 AND B(9)=0 THEN 3900 ! CHECK 357 3041 IF B(3)=0 AND B(5)=1 AND B(7)=1 THEN 3300 3042 IF B(3)=1 AND B(5)=0 AND B(7)=1 THEN 3500 3043 IF B(3)=1 AND B(5)=1 AND B(7)=0 THEN 3700 ! ************************************************** ! * CHECK FOR ONE MARKER ON BOARD AND FOLLOW IT UP * ! ************************************************** 3060 IF B(1)=2 AND B(2)=0 AND B(3)=0 THEN 3200 ELSE IF B(1)=0 AND B(2)=0 AND B(3)=2 THEN 3200 ELSE IF B(1)=0 AND B(2)=2 AND B(3)=0 THEN 3300 3061 IF B(4)=2 AND B(5)=0 AND B(6)=0 THEN 3500 ELSE IF B(4)=0 AND B(5)=2 AND B(6)=0 THEN 3400 ELSE IF B(4)=0 AND B(5)=0 AND B(6)=2 THEN 3500 3062 IF B(7)=2 AND B(8)=0 AND B(9)=0 THEN 3800 ELSE IF B(7)=0 AND B(8)=2 AND B(9)=0 THEN 3700 ELSE IF B(7)=0 AND B(8)=0 AND B(9)=2 THEN 3800 3063 IF B(1)=2 AND B(4)=0 AND B(7)=0 THEN 3400 ELSE IF B(1)=0 AND B(4)=2 AND B(7)=0 THEN 3100 ELSE IF B(1)=0 AND B(4)=0 AND B(7)=2 THEN 3400 3064 IF B(2)=2 AND B(5)=0 AND B(8)=0 THEN 3500 ELSE IF B(2)=0 AND B(5)=2 AND B(8)=0 THEN 3200 ELSE IF B(2)=0 AND B(5)=0 AND B(8)=2 THEN 3500 3065 IF B(3)=2 AND B(6)=0 AND B(9)=0 THEN 3600 ELSE IF B(3)=0 AND B(6)=2 AND B(9)=0 THEN 3300 ELSE IF B(3)=0 AND B(6)=0 AND B(9)=2 THEN 3600 3066 IF B(1)=2 AND B(5)=0 AND B(9)=0 THEN 3500 ELSE IF B(1)=0 AND B(5)=2 AND B(9)=0 THEN 3100 ELSE IF B(1)=0 AND B(5)=0 AND B(9)=2 THEN 3500 3067 IF B(3)=2 AND B(5)=0 AND B(7)=0 THEN 3500 ELSE IF B(3)=0 AND B(5)=2 AND B(9)=0 THEN 3300 ELSE IF B(3)=0 AND B(5)=0 AND B(9)=2 THEN 3500 ! ******************************************************* ! * PLACE MARKER ANYWHERE, NOWHERE'S OCCUPIED FOR A WIN * ! ******************************************************* 3070 ZZ=INT(9*RND)+1 :: IF B(ZZ)=0 THEN 3071 ELSE 3070 3071 ON ZZ GOTO 3100,3200,3300,3400,3500,3600,3700,3800,3900 ! COMPUTER INTO #1 3100 B(1)=2::CALL LINK("DISPLY",6,10," ")::SP=1::PT=40::PC=16::X=40::Y=73::GOSUB 26000::GOTO 4200 ! COMPUTER INTO #2 3200 B(2)=2::CALL LINK("DISPLY",6,15," ")::SP=2::PT=40::PC=16::X=40::Y=113::GOSUB 26000::GOTO 4200 ! COMPUTER INTO #3 3300 B(3)=2::CALL LINK("DISPLY",6,20," ")::SP=3::PT=40::PC=16::X=40::Y=153::GOSUB 26000::GOTO 4200 ! COMPUTER INTO #4 3400 B(4)=2::CALL LINK("DISPLY",11,10," ")::SP=4::PT=40::PC=16::X=80::Y=73::GOSUB 26000::GOTO 4200 ! COMPUTER INTO #5 3500 B(5)=2::CALL LINK("DISPLY",11,15," ")::SP=5::PT=40::PC=16::X=80::Y=113::GOSUB 26000::GOTO 4200 ! COMPUTER INTO #6 3600 B(6)=2::CALL LINK("DISPLY",11,20," ")::SP=6::PT=40::PC=16::X=80::Y=153::GOSUB 26000::GOTO 4200 ! COMPUTER INTO #7 3700 B(7)=2::CALL LINK("DISPLY",16,10," ")::SP=7::PT=40::PC=16::X=120::Y=73::GOSUB 26000::GOTO 4200 ! COMPUTER INTO #8 3800 B(8)=2::CALL LINK("DISPLY",16,15," ")::SP=8::PT=40::PC=16::X=120::Y=113::GOSUB 26000::GOTO 4200 ! COMPUTER INTO #9 3900 B(9)=2::CALL LINK("DISPLY",16,20," ")::SP=9::PT=40::PC=16::X=120::Y=153::GOSUB 26000::GOTO 4200 ! ************************* ! * CHECK WINS FOR PLAYER * ! ************************* 4100 IF B(1)=1 AND B(2)=1 AND B(3)=1 THEN WINTYPE=1::GOTO 24000 4110 IF B(4)=1 AND B(5)=1 AND B(6)=1 THEN WINTYPE=2::GOTO 24000 4120 IF B(7)=1 AND B(8)=1 AND B(9)=1 THEN WINTYPE=3::GOTO 24000 4130 IF B(1)=1 AND B(4)=1 AND B(7)=1 THEN WINTYPE=4::GOTO 24000 4140 IF B(2)=1 AND B(5)=1 AND B(8)=1 THEN WINTYPE=5::GOTO 24000 4150 IF B(3)=1 AND B(6)=1 AND B(9)=1 THEN WINTYPE=6::GOTO 24000 4160 IF B(1)=1 AND B(5)=1 AND B(9)=1 THEN WINTYPE=7::GOTO 24000 4170 IF B(3)=1 AND B(5)=1 AND B(7)=1 THEN WINTYPE=8::GOTO 24000 4180 GOTO 1030 ! INCREMENT TURN ! *************************** ! * CHECK WINS FOR COMPUTER * ! *************************** 4200 IF B(1)=2 AND B(2)=2 AND B(3)=2 THEN WINTYPE=1::GOTO 25000 4210 IF B(4)=2 AND B(5)=2 AND B(6)=2 THEN WINTYPE=2::GOTO 25000 4220 IF B(7)=2 AND B(8)=2 AND B(9)=2 THEN WINTYPE=3::GOTO 25000 4230 IF B(1)=2 AND B(4)=2 AND B(7)=2 THEN WINTYPE=4::GOTO 25000 4240 IF B(2)=2 AND B(5)=2 AND B(8)=2 THEN WINTYPE=5::GOTO 25000 4250 IF B(3)=2 AND B(6)=2 AND B(9)=2 THEN WINTYPE=6::GOTO 25000 4260 IF B(1)=2 AND B(5)=2 AND B(9)=2 THEN WINTYPE=7::GOTO 25000 4270 IF B(3)=2 AND B(5)=2 AND B(7)=2 THEN WINTYPE=8::GOTO 25000 4280 GOTO 1030 ! INCREMENT TURN ! ************************************ ! * CHECK TO SEE IF COMPUTER CAN WIN * ! ************************************ ! CHECK FOR EXISTING COMPUTER MARKERS ! CHECK 123 5000 IF B(1)=2 AND B(2)=2 AND B(3)=0 THEN 3300 ELSE IF B(1)=0 AND B(2)=2 AND B(3)=2 THEN 3100 ELSE IF B(1)=2 AND B(2)=0 AND B(3)=2 THEN 3200 ! CHECK 456 5010 IF B(4)=2 AND B(5)=2 AND B(6)=0 THEN 3600 ELSE IF B(4)=0 AND B(5)=2 AND B(6)=2 THEN 3400 ELSE IF B(4)=2 AND B(5)=0 AND B(6)=2 THEN 3500 ! CHECK 789 5020 IF B(7)=2 AND B(8)=2 AND B(9)=0 THEN 3900 ELSE IF B(7)=0 AND B(8)=2 AND B(9)=2 THEN 3700 ELSE IF B(7)=2 AND B(8)=0 AND B(9)=2 THEN 3800 ! CHECK 147 5030 IF B(1)=0 AND B(4)=2 AND B(7)=2 THEN 3100 ELSE IF B(1)=2 AND B(4)=0 AND B(7)=2 THEN 3400 ELSE IF B(1)=2 AND B(4)=2 AND B(7)=0 THEN 3700 ! CHECK 258 5040 IF B(2)=0 AND B(5)=2 AND B(8)=2 THEN 3200 ELSE IF B(2)=2 AND B(5)=0 AND B(8)=2 THEN 3500 ELSE IF B(2)=2 AND B(5)=2 AND B(8)=0 THEN 3800 ! CHECK 369 5050 IF B(3)=0 AND B(6)=2 AND B(9)=2 THEN 3300 ELSE IF B(3)=2 AND B(6)=0 AND B(9)=2 THEN 3600 ELSE IF B(3)=2 AND B(6)=2 AND B(9)=0 THEN 3900 ! CHECK 159 5060 IF B(1)=0 AND B(5)=2 AND B(9)=2 THEN 3100 ELSE IF B(1)=2 AND B(5)=0 AND B(9)=2 THEN 3500 ELSE IF B(1)=2 AND B(5)=2 AND B(9)=0 THEN 3900 ! CHECK 357 5070 IF B(3)=0 AND B(5)=2 AND B(7)=2 THEN 3300 ELSE IF B(3)=2 AND B(5)=0 AND B(7)=2 THEN 3500 ELSE IF B(3)=2 AND B(5)=2 AND B(7)=0 THEN 3700 ! RETURN TO SENDER 5080 RETURN ! **************************** ! * PLACE TI SYMBOL AT TX,TY * ! **************************** 22000 CALL LINK("DISPLY",TX,TY,"pqr") 22010 CALL LINK("DISPLY",TX+1,TY,"stu") 22020 CALL LINK("DISPLY",TX+2,TY,"vwx") 22030 RETURN ! ************** ! * BOARD FULL * ! ************** 23000 CALL LINK("DISPLY",22,1," ") 23005 CALL LINK("DISPLY",22,1," BOARD FULL ")::CALL SOUND(300,198,4,396,4) 23010 CALL SOUND(300,139,4,278,4) 23015 CALL SOUND(600,147,4,294,4) 23020 CALL LINK("DELAY",2000)::goto 24940 ! *********************************************** ! * FLASH SPRITES AND MAKE SOUND FOR PLAYER WIN * ! *********************************************** 24000 SC1=SC1+1::GOSUB 31090::ON WINTYPE GOTO 24100,24200,24300,24400,24500,24600,24700,24800 24100 S1=1::S2=2::S3=3::GOTO 24900 24200 S1=4::S2=5::S3=6::GOTO 24900 24300 S1=7::S2=8::S3=9::GOTO 24900 24400 S1=1::S2=4::S3=7::GOTO 24900 24500 S1=2::S2=5::S3=8::GOTO 24900 24600 S1=3::S2=6::S3=9::GOTO 24900 24700 S1=1::S2=5::S3=9::GOTO 24900 24800 S1=3::S2=5::S3=7::GOTO 24900 24900 FOR L=1 TO 4 24905 CALL COLOR(#S1,1,#S2,1,#S3,1)::FOR ZZ=440 TO 660 STEP 20::CALL SOUND(4,ZZ,0)::NEXT ZZ 24910 CALL COLOR(#S1,7,#S2,7,#S3,7)::FOR ZZ=440 TO 660 STEP 20::CALL SOUND(4,ZZ,0)::NEXT ZZ 24915 NEXT L 24920 FOR L=1 TO 4 24925 CALL LINK("DISPLY",22,1," ") 24926 CALL COLOR(#S1,1,#S2,1,#S3,1)::FOR ZZ=440 TO 660 STEP 20::CALL SOUND(4,ZZ,0)::NEXT ZZ 24930 CALL LINK("DISPLY",22,1," YOU ARE THE WINNER ") 24931 CALL COLOR(#S1,7,#S2,7,#S3,7)::FOR ZZ=440 TO 660 STEP 20::CALL SOUND(4,ZZ,0)::NEXT ZZ 24935 NEXT L 24940 CALL LINK("DISPLY",22,1," PRESS ANY KEY TO PLAY AGAIN ")::GOSUB 28000 24945 CALL KEY(0,K,S)::IF S=0 THEN 24945 24950 FOR L=1 TO 9::B(L)=0::NEXT L::CALL CLEAR::CALL DELSPRITE(ALL)::GOTO 1010 ! *********************************************** ! * FLASH SPRITES AND MAKE SOUND FOR COMPUTER WIN * ! *********************************************** 25000 SC2=SC2+1::GOSUB 31090::ON WINTYPE GOTO 25100,25200,25300,25400,25500,25600,25700,25800 25100 S1=1::S2=2::S3=3::GOTO 25900 25200 S1=4::S2=5::S3=6::GOTO 25900 25300 S1=7::S2=8::S3=9::GOTO 25900 25400 S1=1::S2=4::S3=7::GOTO 25900 25500 S1=2::S2=5::S3=8::GOTO 25900 25600 S1=3::S2=6::S3=9::GOTO 25900 25700 S1=1::S2=5::S3=9::GOTO 25900 25800 S1=3::S2=5::S3=7::GOTO 25900 25900 FOR L=1 TO 4 25905 CALL COLOR(#S1,1,#S2,1,#S3,1)::FOR ZZ=440 TO 660 STEP 20::CALL SOUND(4,ZZ,0)::NEXT ZZ 25910 CALL COLOR(#S1,16,#S2,16,#S3,16)::FOR ZZ=440 TO 660 STEP 20::CALL SOUND(4,ZZ,0)::NEXT ZZ 25915 NEXT L 25920 FOR L=1 TO 4 25925 CALL LINK("DISPLY",22,1," ") 25926 CALL COLOR(#S1,1,#S2,1,#S3,1)::FOR ZZ=440 TO 660 STEP 20::CALL SOUND(4,ZZ,0)::NEXT ZZ 25930 CALL LINK("DISPLY",22,1," I AM THE WINNER ") 25931 CALL COLOR(#S1,16,#S2,16,#S3,16)::FOR ZZ=440 TO 660 STEP 20::CALL SOUND(4,ZZ,0)::NEXT ZZ 25935 NEXT L 25940 GOTO 24940 ! *************************** ! * PLACE MARKER INTO BOARD * ! *************************** 26000 CALL SPRITE(#SP,PT,PC,X,Y) 26010 IF PT=36 THEN 26020 ELSE 26030 26020 CALL SOUND(100,330,1,394,1)::GOTO 26040 26030 CALL SOUND(100,220,1,294,1) 26040 RETURN ! ********************* ! * PLAYER WRONG MOVE * ! ********************* 27000 CALL SOUND(200,220,0)::GOTO 2020 ! ******************************** ! * PLAYER'S TURN MUSICAL PROMPT * ! ******************************** 28000 CALL SOUND(100,247,8,247*2,8) 28010 CALL SOUND(100,330,8,330*2,8) 28020 CALL SOUND(100,408,8,408*2,8)::RETURN ! *************************** ! * TITLE SCREEN WITH MUSIC * ! *************************** 29000 TX=5::TY=10::GOSUB 30000 29005 Z$=RPT$(CHR$(97),32) 29010 CALL LINK("DISPLY",3,1,Z$)::CALL LINK("DISPLY",8,1,Z$) 29015 CALL LINK("DISPLY",1,12,"RETROSPECT") 29016 TX=4::TY=4::GOSUB 22000 29020 CALL LINK("DISPLY",12,6,"PRESS ANY KEY TO BEGIN")::T1=0 29021 call sprite(#1,40,16,120,73,#2,36,7,120,113,#3,40,16,120,153) 29025 CALL KEY(0,K,S)::T1=T1+1::IF T1>113 THEN t1=1 29030 CALL SOUND(DU(T1),NT(T1),6,NT(T1)*2,4)::CALL SOUND(1,110,30) 29035 IF S=0 THEN 29025 29040 CALL SOUND(200,1184,0)::CALL CLEAR :: CALL DELSPRITE(ALL)::RETURN ! ****************** ! * TITLE AT TX,TY * ! ****************** 30000 CALL LINK("DISPLY",TX,TY,"() ()* (,* (,.")::CALL LINK("DISPLY",TX+1,TY,")) ))+ ),+ )-+") 30010 RETURN ! ************** ! * GAME BOARD * ! ************** 31000 CALL LINK("DISPLY",5,9,"haaaadaaaadaaaai") 31005 CALL LINK("DISPLY",6,9,"`1 `2 `3 `") 31010 CALL LINK("DISPLY",7,9,"` ` ` `") 31015 CALL LINK("DISPLY",8,9,"` ` ` `") 31020 CALL LINK("DISPLY",9,9,"` ` ` `") 31025CALL LINK("DISPLY",10,9,"faaaabaaaabaaaae") 31030CALL LINK("DISPLY",11,9,"`4 `5 `6 `") 31035CALL LINK("DISPLY",12,9,"` ` ` `") 31040CALL LINK("DISPLY",13,9,"` ` ` `") 31045CALL LINK("DISPLY",14,9,"` ` ` `") 31050CALL LINK("DISPLY",15,9,"faaaabaaaabaaaae") 31055CALL LINK("DISPLY",16,9,"`7 `8 `9 `") 31060CALL LINK("DISPLY",17,9,"` ` ` `") 31065CALL LINK("DISPLY",18,9,"` ` ` `") 31070CALL LINK("DISPLY",19,9,"` ` ` `") 31075CALL LINK("DISPLY",20,9,"jaaaacaaaacaaaak") 31085 TX=2::TY=10::GOSUB 30000 31090 Z$=STR$(SC1)::CALL LINK("DISPLY",11,4,Z$) 31091 Z$=STR$(SC2)::CALL LINK("DISPLY",11,29,Z$) 31092 CALL LINK("DISPLY",9,1,"PLAYER")::CALL LINK("DISPLY",9,27,"TI994A") 31099 RETURN ! ************ ! * GRAPHICS * ! ************ 32000 CALL CHAR(36,"E0F0F87C3E1F0F07070F1F3E7CF8F0E0070F1F3E7CF8F0E0E0F0F87C3E1F0F07") ! X 32005 CALL CHAR(40,"071F3F7E78F0F0E0E0F0F0787E3F1F07E0F8FC7E1E0F0F07070F0F1E7EFCF8E0") ! O ! PLAYING BOARD 32010 CALL LINK("CHAR2",96,"5A5A5A5A5A5A5A5A00FF00FFFF00FF005ADB18FFFF18DB5A5ADB18FFFF00FF00") 32015 CALL LINK("CHAR2",100,"00FF00FFFF18DB5A5ADA1AFAFA1ADA5A5A5B585F5F585B5A") 32020 CALL LINK("CHAR2",104,"007F405F5F585B5A00FE02FAFA1ADA5A5A5B585F5F407F005ADA1AFAFA02FE00") ! TITLE 32025 CALL LINK("CHAR2",40,"FFFF18181818181818181818181818187E7E6060606060606060606060607E7E") 32030 CALL LINK("CHAR2",44,"7E7E6666666666666666666666667E7E7E7E606060607E7E") ! DOT 32035 CALL LINK("CHAR2",64,"0000000000001818") ! TI SYMBOL ! 112,113,114 ! 115,116,117 ! 118,119,120 32040 CALL LINK("CHAR2",112,"0103030303030303FC0405050406020C0080404080000C12FF80C04060381C0E") 32045 CALL LINK("CHAR2",116,"1921213D050505C4BA8A8ABAA1A1A1220301000000000000E23110180C070300") 32050 CALL LINK("CHAR2",120,"4C9020404020E000") ! COLOUR 32700 CALL LINK("COLOR2",9,5,1,10,5,1,11,2,1,12,2,1) 32705 FOR Q=2 TO 8::CALL LINK("COLOR2",Q,2,1)::NEXT Q ! RETURN TO SENDER 32767 RETURN