start tok64 d64-z70aeV 0 IFPEEK(829)<>254THENPOKE829,254:LOAD"chess.chrset",8,1 2 POKE53272,56:POKE53265,27:POKE56576,196:POKE53270,200:POKE648,204:PRINT"{clear}" 3 POKE53280,0:POKE53281,0:POKE53282,10:POKE53283,1 4 PRINT"{black}"CHR$(8):POKE56,158:CLR:OPEN5,2,0,CHR$(6)+CHR$(0) 5 x=1:y=7:POKE53270,PEEK(53270)OR16:POKE53285,7:fl=1:GOSUB1200:PRINT#5,mo$:s=54272 6 do$="{down*24}" 8 ti$="{0*6}":jt=2 10 PRINT"{home}{clear}" 21 DIMsi(24) 25 DIMb(8,8),pi$(13),bb(8,8):ca$="{orange}{brown}{pink}{dark gray}{gray}{light green}{light blue}{light gray}":ch$(0)="{dark gray}":ch$(1)="{light blue}":bs=6:ws=3 26 pi$(0)="{reverse on}{space*3}{down}{left*3}{space*3}{reverse off}{up}" 27 pi$(1)="{reverse on}{space*3}{down}{left*3}{space*3}{reverse off}{up}" 28 pi$(2)="{cm a}{cm s}{cm d}{down}{left*3}{cm z}{cm x}{cm c}{up}" 29 pi$(3)="ASD{down}{left*3}ZXC{up}" 30 pi$(4)="{cm r}{cm t}{cm y}{down}{left*3}{cm u}{cm i}{cm d}{up}" 31 pi$(5)="RTY{down}{left*3}UIO{up}" 32 pi$(6)="{cm v}{cm b}{cm n}{down}{left*3}{cm z}{cm x}{cm c}{up}" 33 pi$(7)="VBN{down}{left*3}ZXC{up}" 34 pi$(8)="{cm f}{cm g}{cm h}{down}{left*3}{cm z}{cm x}{cm c}{up}" 35 pi$(9)="FGH{down}{left*3}ZXC{up}" 36 pi$(10)="{cm j}{cm k}{cm l}{down}{left*3}{cm z}{cm x}{cm c}{up}" 37 pi$(11)="JKL{down}{left*3}ZXC{up}" 38 pi$(12)="{cm q}{cm w}{cm e}{down}{left*3}{cm +}{cm -}{cm pound}{up}" 39 pi$(13)="QWE{down}{left*3}{sh +}{sh -}{sh pound}{up}" 40 GOTO195 100 REM ***print board*** 110 PRINT"{home}{down}{right*2}";:FORn=1TO8:va=(INT(n/2)*2=n)*-1:FORo=1TO8 130 cp=0:ch=b(n,o):IFch>9THENcp=1:ch=ch-10 140 PRINTch$(va)pi$((ch*2)+cp);:va=(va+1)AND1:NEXT:PRINT:PRINT:PRINT"{right*2}";:NEXT 150 RETURN 195 ti$="{0*6}":PRINT"{clear}"LEFT$(do$,11)SPC(15)"{light gray}please wait":GOSUB200 196 PRINT"{clear}":POKE53265,PEEK(53265)AND239:GOSUB100:GOSUB1300 197 GOSUB1600:GOSUB700:GOSUB711:POKE53265,PEEK(53265)OR16:GOTO720 200 REM *** piece memory *** 220 FORn=1TO8:FORm=1TO8:READb(n,m):NEXT:NEXT:IFfl=0THENGOSUB1600:x=4:GOTO6000 221 FORn=1TO8:FORi=1TO8 222 IF(b(n,i)<10 AND b(n,i)>0)THENb(n,i)=b(n,i)+10:GOTO224 223 IFb(n,i)>10THENb(n,i)=b(n,i)-10 224 NEXT:NEXT:b(1,4)=15:b(1,5)=16:b(8,4)=5:b(8,5)=6:GOSUB1600:GOTO6000 230 DATA 4,2,3,6,5,3,2,4 240 DATA 1,1,1,1,1,1,1,1 250 DATA 0,0,0,0,0,0,0,0 260 DATA 0,0,0,0,0,0,0,0 270 DATA 0,0,0,0,0,0,0,0 280 DATA 0,0,0,0,0,0,0,0 290 DATA 11,11,11,11,11,11,11,11 295 DATA 14,12,13,16,15,13,12,14 500 REM *** elect pawn *** 510 b(f1,f2)=5+10*v:RETURN 600 REM *** move piece *** 605 GOSUB1600:IFok<>1THENRETURN 606 IFb(s1,s2)=0THENRETURN 607 gi=1:GOSUB850 610 c=b(f1,f2):a=b(s1,s2):b(s1,s2)=0:b(f1,f2)=a 611 v=0:IFa>9THENv=1 612 sf=0:IFc<>0THENsf=1 616 IF(a=1ORa=11)AND(f1=8ORf1=1)THENGOSUB500 620 vv=1:IF(INT(s2/2)*2=s2)=(INT(s1/2)*2=s1)THENvv=0 621 jt=2:FORi=0TO5 622 PRINT"{home}{right*2}{down}{brown}"LEFT$(do$,(s1-1)*2)SPC((s2-1)*3)pi$((a-v*10)*2+v):GOSUB5000 623 PRINT"{home}{right*2}{down}{orange}"LEFT$(do$,(s1-1)*2)SPC((s2-1)*3)pi$((a-v*10)*2+v):GOSUB5000 626 NEXT 627 PRINT"{home}{right*2}{down}"LEFT$(do$,(s1-1)*2)SPC((s2-1)*3)ch$(vv)pi$(0) 630 cp=0:ch=b(f1,f2):IFch>9THENcp=1:ch=ch-10 633 vv=1:IF(INT(f2/2)*2=f2)=(INT(f1/2)*2=f1)THENvv=0 634 IFsf=1THENGOSUB6050 635 IFsf=0THENGOSUB850 636 FORi=0TO5 637 PRINT"{home}{right*2}{down}{brown}"LEFT$(do$,(f1-1)*2)SPC((f2-1)*3)pi$((ch*2)+cp):GOSUB5000 638 PRINT"{home}{right*2}{down}{orange}"LEFT$(do$,(f1-1)*2)SPC((f2-1)*3)pi$((ch*2)+cp):GOSUB5000 639 NEXT 640 PRINT"{home}{right*2}{down}"ch$(vv)LEFT$(do$,(f1-1)*2)SPC((f2-1)*3)pi$((ch*2)+cp) 670 gi=5:RETURN 700 REM *** sprite set-up *** 701 sx=28+(x*24):sy=50+(y*16):POKE53276,PEEK(53276)OR1:POKE53287,0 710 POKE53240,160:POKE53269,1:POKE53248,sx:POKE53249,sy:RETURN 711 POKE198,3:POKE631,79:POKE632,75:POKE633,13:POKE53280,0:RETURN 720 jv=ABS((PEEK(56320)AND31)-31) 730 IFjv=0THEN900 735 jt=5:GOSUB5000:jt=2 740 IFjv=1ANDy>1THENy=y-1 750 IFjv=2ANDy<8THENy=y+1 760 IFjv=4ANDx>1THENx=x-1 770 IFjv=8ANDx<8THENx=x+1 775 IFjv=16ANDil=0THENil=1:GOSUB800:GOTO720 776 IFjv=16ANDil=1THENil=0:GOTO790 780 GOSUB700:GOTO720 790 GOSUB800:IF(s1=f1)AND(s2=f2)THENGOTO720 795 GOSUB1100:GOSUB600:GOTO720 800 REM *** button pressed *** 801 IF(il=1)AND(b(y,x)=0)THENil=0:RETURN 810 IFil=1THENPOKE53285,14:s1=y:s2=x 820 IFil=0THENPOKE53285,7:f2=x:f1=y 825 jv=ABS((PEEK(56320)AND31)-31) 830 IFjv=16THEN825 840 s=54272:gi=3 850 POKEs+4,64:POKEs+22,45:POKE s+1,7+gi 851 POKE s+5,9 852 POKE s+6,9 854 POKE s+4,65 855 FOR d=1 TO 20: NEXT d 856 FOR d=1 TO 20: NEXT d 857 POKE s+4,64 858 RETURN 900 REM *** chat mode *** 905 PRINT"{home}{light gray}"LEFT$(do$,21)SPC(31)LEFT$(ti$,2)":"MID$(ti$,3,2); 906 PRINT"{dark gray}{up*2}{left*6}elapsed" 910 GETa$:IFa$=""THEN940 911 IFASC(a$)>132ANDASC(a$)<141THENGOTO2000 913 IFa$=CHR$(13)THENa$="{.*3} ":GOTO916 914 IFa$=CHR$(20)ANDLEN(t$)>0THEN916 915 IFASC(a$)<32ORASC(a$)>90THEN940 916 PRINT#5,a$;:IFa$=CHR$(20)THENa$="":t$=LEFT$(t$,LEN(t$)-1) 920 t$=t$+a$:t$=RIGHT$(t$,24):PRINT"{home}"bb$LEFT$(do$,21)"{space*2}"t$" ":GOTO910 940 GET#5,a$:IFa$=""THEN720 941 IFa$=CHR$(254)THENGOSUB1000:GOTO720 942 IFa$=CHR$(1)THENPRINT#5,CHR$(226);:GOTO720 944 IFa$=CHR$(20)ANDLEN(y$)>0THEN946 945 IFASC(a$)<32ORASC(a$)>90THEN940 946 IFa$=CHR$(20)THENa$="":y$=LEFT$(y$,LEN(y$)-1) 950 y$=y$+a$:y$=RIGHT$(y$,24):PRINT"{home}"aa$LEFT$(do$,19)"{space*2}"y$" ":GOTO720 1000 REM **** receive the move **** 1004 ok=0:GET#5,a$:IFa$<>""THEN1004 1006 re=1:PRINT#5,CHR$(1);:tl=ti+300 1007 GET#5,a$:IFa$<>""THEN1020 1010 IFtire%(5)THEN1070 1050 PRINT#5,CHR$(6); 1060 ok=1:s1=re%(1):s2=re%(2):f1=re%(3):f2=re%(4):GOSUB600:RETURN 1070 PRINT#5,CHR$(9);:tl=ti+300 1080 GET#5,a$:IFa$=CHR$(254)THEN1006 1090 IFti""THEN1140 1130 IFtiCHR$(1)THENGOTO1110 1145 PRINT#5,CHR$(sy)CHR$(sx)CHR$(fy)CHR$(fx)CHR$(ck); 1150 tl=ti+300 1160 GET#5,a$:IFa$<>""THEN1170 1165 IFtiCHR$(6)THEN1110 1180 ok=1:RETURN 1200 REM *** title screen *** 1201 POKE 53269,0 1202 PRINT"{home}{clear}{brown}telegame software presents{.*3} 1203 PRINT"{light gray}{down}tele-chess 64{space*2}{white}#{brown}1986 1204 PRINT"{dark gray}freeware version 1.4 1205 PRINT"{down}{brown}to become a registered user, please send"; 1206 PRINT"$20.00 to telegame software, sub po 37, 1207 PRINT"saskatoon, sask. canada.{space*2}this will put 1208 PRINT"you on an update list.{space*2}have fun{.*3} 1210 PRINTSPC(11)"{down}{light blue}{cm a}{cm s}{cm d}{dark gray}{cm r}{cm t}{cm y}{light blue}{cm j}{cm k}{cm l}{dark gray}{cm f}{cm g}{cm h}{light blue}{cm a}{cm s}{cm d}" 1211 PRINTSPC(11)"{light blue}{cm z}{cm x}{cm c}{dark gray}{cm u}{cm i}{cm d}{light blue}{cm z}{cm x}{cm c}{dark gray}{cm z}{cm x}{cm c}{light blue}{cm z}{cm x}{cm c}" 1212 PRINTSPC(12)"{light gray}tele-chess 64" 1213 PRINTSPC(11)"{dark gray}ASD{light blue}RTY{dark gray}JKL{light blue}FGH{dark gray}ASD" 1214 PRINTSPC(11)"{dark gray}ZXC{light blue}UIO{dark gray}ZXC{light blue}ZXC{dark gray}ZXC" 1220 PRINT"{down}{right}{light gray}by tom conroy and james hastings-trew" 1222 tl=ti+1800:PRINT"{brown}{down*2}instructions? (y/n) 1223 GETin$ 1224 IFin$<>""THEN1227 1225 IFti6THEN2240 2261 b=VAL(b$):IFb>0THENPRINT"{up}{space*10}{dark gray}black {light gray}or {brown}white {light gray}(b/w)?" 2265 IFb=0THENad=0:GOTO2270 2266 GETb$:IFb$<>"b"ANDb$<>"w"THEN2266 2267 ad=0:IFb$="b"THENad=10 2270 b(y,x)=b+ad:f1=y:f2=x:GOSUB630:GOSUB2300:RETURN 2300 REM *** clear bottom of screen ** 2310 FORn=18TO23:PRINT"{home}";LEFT$(do$,n);"{space*39}" 2320 NEXT:RETURN 2400 REM *** instructions *** 2410 CLOSE15:OPEN15,8,15:CLOSE2:OPEN2,8,2,"tele-chess.doc,s,r":PRINT"{clear}{brown}" 2420 c=c+1:INPUT#2,a$:IFa$="end"THENCLOSE2:GOSUB2500:RETURN 2425 PRINTa$ 2430 IFc=21THENc=0:PRINT"{dark gray}{down}{space*11}return to continue{brown}":GOSUB2500 2440 GOTO2420 2500 REM *** wait *** 2510 GETb$:IFb$=""THEN2510 2520 PRINT"{home}{clear}":RETURN 3000 REM *** alter colours *** 3010 GOSUB2300:PRINT"{home}"LEFT$(do$,18)"{dark gray}{space*2}press function key to alter colours" 3020 PRINT"{space*8}or press {light gray}{reverse on}return{reverse off}{dark gray} to exit" 3030 PRINT" {light gray}{reverse on}f1{reverse off}{brown} = black pieces{space*4}{light gray}{reverse on}f3{reverse off}{brown} = white pieces" 3040 PRINT" {light gray}{reverse on}f5{reverse off}{brown} = black squares{space*2}{light gray}{reverse on}f7{reverse off}{brown} = white squares" 3050 GETb$:IFb$=""THEN3050 3060 IFb$=CHR$(13)THENGOSUB2300:RETURN 3070 IFb$="{f1}"THENa=PEEK(53282)AND15:a=(a+1)AND15:POKE53282,a 3080 IFb$="{f3}"THENa=PEEK(53283)AND15:a=(a+1)AND15:POKE53283,a 3090 IFb$="{f5}"THENbs=(bs+1)AND7:ch$(1)=MID$(ca$,bs+1,1):GOSUB100 3100 IFb$="{f7}"THENws=(ws+1)AND7:ch$(0)=MID$(ca$,ws+1,1):GOSUB100 3110 GOTO3050 4000 REM *** print check **** 4010 b$="check":FORi=0TO4:POKE631+i,ASC(MID$(b$,i+1,1)):NEXT:POKE631+i,13 4020 POKE198,6:RETURN 5000 REM *** wait for 2 jiffies *** 5010 tl=ti+jt 5020 IFti