Home » Archimedes archive » Acorn User » AU 1995-01.adf » !StarInfo_StarInfo » Pillidge/GO
Pillidge/GO
This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.
Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.
Tape/disk: | Home » Archimedes archive » Acorn User » AU 1995-01.adf » !StarInfo_StarInfo |
Filename: | Pillidge/GO |
Read OK: | ✔ |
File size: | 2EDF bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
10REM > GO 20REM 30REM Andy - Game of Go 40REM moves in a PROC so that can replay 50REM 60 70MODE 12 80PROCCDraw_initialise("GO",1,&10000) 90CDraw_font$(1)="Trinity.Bold" 100PROCCDraw_fontobject 110 120COLOUR 3,240,180,20 130COLOUR 2,255,255,0 140COLOUR 7,0,0,0 150COLOUR 0,255,255,255 160COLOUR 135:COLOUR 0:CLS 170MOUSE ON 180DIM G%(19,19),prisoners%(2),savex%(360),savey%(360),colour%(2) 190size%=20 200saven%=1 210legal=TRUE 220colour%(1)=7:colour%(2)=0 230ko=FALSE:kox%=0:koy%=0 240PROCdrawboard 250@%=4 260OFF 270 280REPEAT 290turn%=(saven%+1)MOD 2 +1 300GCOL 0,colour%(turn%):CIRCLE FILL FNxscr(21),FNyscr(17),size% 310PRINTTAB(65,2)saven% 320PROCplay 330UNTIL FALSE 340 350DEF PROCplay 360 370REPEAT:REM loop until non-suicide move made 380legal=TRUE 390REPEAT:REM loop until blank point selected 400REPEAT:REM loop until valid range 0-18 selected 410 420REPEAT:MOUSE x%,y%,b%:UNTIL b%=4 430REPEAT:MOUSE x%,y%,b%:UNTIL b%=0 440 450xco%=FNxco(x%) 460yco%=FNyco(y%) 470 480IF y%>=128 AND y%<160 AND x%>1040 AND x%<1198 THEN PROCsavedrawfile 490IF y%>=192 AND y%<224 AND x%>1040 AND x%<1198 THEN PROCsavemoves 500IF y%>=256 AND y%<288 AND x%>1040 AND x%<1198 THEN PROCloadmoves 510IF y%>=64 AND y%<96 AND x%>1040 AND x%<1198 THEN PROCbackstep 520IF y%>=320 AND y%<352 AND x%>1040 AND x%<1198 THEN PROCclear 530 540UNTIL xco%>=0 AND xco%<=18 AND yco%>=0 AND yco%<=18 550 560UNTIL G%(xco%,yco%)=0 570PROCmove(xco%,yco%,turn%) 580IF legal THEN savex%(saven%)=xco%:savey%(saven%)=yco%:saven%+=1 590UNTIL legal 600ENDPROC 610 620DEF PROCmove(xco%,yco%,turn%) 630G%(xco%,yco%)=turn% 640L%=0 650PRINT TAB(65,7) 660IF ko AND kox%=xco% AND koy%=yco% THEN G%(xco%,yco%)=0:legal=FALSE:ENDPROC 670PROCtestcapture(xco%,yco%) 680prisoners%(turn%)+=captured% 690IF captured%=1 THEN ko=TRUE:ELSE ko=FALSE 700COLOUR 131:PRINTTAB(65,8+turn%*3)prisoners%(turn%) 710IF FNtestlife(xco%,yco%,"centre")="dead" THEN G%(xco%,yco%)=0:legal=FALSE 720IF legal THEN GCOL 0,colour%(turn%):CIRCLE FILL FNxscr(xco%),FNyscr(yco%),size% 730ENDPROC 740 750DEF PROCdrawboard 760COLOUR 135:CLS 770originx=64:originy=80:stepx=48:stepy=48 780COLOUR 132:PRINTTAB(65,27)" Drawfile " 790COLOUR 129:PRINTTAB(65,25)" SaveGame " 800COLOUR 133:PRINTTAB(65,23)" LoadGame " 810COLOUR 130:COLOUR 7:PRINTTAB(65,29)" Backstep ":COLOUR 0 820COLOUR 134:COLOUR 7:PRINTTAB(65,21)" Clear ":COLOUR 0 830 840GCOL 3 850RECTANGLE FILL originx-stepx,originy-stepy,20*stepx,20*stepy 860RECTANGLE FILL originx+20*stepx,originy+16*stepy,2*stepx,3*stepy 870RECTANGLE FILL originx+20*stepx,originy+8*stepy,4*stepx,6*stepy 880COLOUR 131:PRINTTAB(65,1)"Next" 890GCOL colour%(1):CIRCLE FILL FNxscr(23),FNyscr(10),size% 900GCOL colour%(2):CIRCLE FILL FNxscr(23),FNyscr(12),size% 910COLOUR 131:PRINTTAB(65,9)"Captured" 920GCOL 7 930 940FOR x%=originx TO originx+18*stepx STEP stepx 950MOVE x%,originy:DRAW x%,originy+18*stepy 960NEXT x% 970 980FOR y%=originy TO originy+18*stepy STEP stepy 990MOVE originx,y%:DRAW originx+18*stepx,y% 1000NEXT y% 1010 1020FOR x%=originx+stepx*3 TO originx+stepx*15 STEP stepx*6 1030FOR y%=originy+stepy*3 TO originy+stepy*15 STEP stepy*6 1040CIRCLE FILL x%,y%,6 1050NEXT:NEXT 1060ENDPROC 1070 1080DEF FNxscr(xco%)=xco%*stepx+originx 1090 1100DEF FNyscr(yco%)=yco%*stepy+originy 1110 1120DEF FNxco(xscr)=INT((xscr-originx+stepx/2)/stepx) 1130 1140DEF FNyco(yscr)=INT((yscr-originy+stepy/2)/stepy) 1150 1160DEF FNtestlife(xx,yy,dir$) 1170L%+=1 1180IF dir$<>"down" AND FNup(xx,yy)="same" THEN IF FNtestlife(xx,yy+1,"up")="okay" THEN L%-=1:="okay" 1190IF FNup(xx,yy)="clear" THEN L%-=1:="okay" 1200 1210IF dir$<>"left" AND FNright(xx,yy)="same" THEN IF FNtestlife(xx+1,yy,"right")="okay" THEN L%-=1:="okay" 1220IF FNright(xx,yy)="clear" THEN L%-=1:="okay" 1230 1240IF dir$<>"up" AND FNdown(xx,yy)="same" THEN IF FNtestlife(xx,yy-1,"down")="okay" THEN L%-=1:="okay" 1250IF FNdown(xx,yy)="clear" THEN L%-=1:="okay" 1260 1270IF dir$<>"right" AND FNleft(xx,yy)="same" THEN IF FNtestlife(xx-1,yy,"left")="okay" THEN L%-=1:="okay" 1280IF FNleft(xx,yy)="clear" THEN L%-=1:="okay" 1290 1300L%-=1 1310="dead" 1320 1330REM problem with endless loop solved? (mostly) iterations limited to 200 1340 1350DEF FNup(xt,yt) 1360IF yt=18 THEN ="edge" 1370IF G%(xt,yt+1)=0 THEN ="clear" 1380IF G%(xt,yt+1)<>G%(xt,yt) OR L%>200 THEN ="blocked" 1390= "same" 1400 1410DEF FNright(xt,yt) 1420IF xt=18 THEN ="edge" 1430IF G%(xt+1,yt)=0 THEN ="clear" 1440IF G%(xt+1,yt)<>G%(xt,yt) OR L%>200 THEN ="blocked" 1450= "same" 1460 1470DEF FNdown(xt,yt) 1480IF yt=0 THEN ="edge" 1490IF G%(xt,yt-1)=0 THEN ="clear" 1500IF G%(xt,yt-1)<>G%(xt,yt) OR L%>200 THEN ="blocked" 1510= "same" 1520 1530DEF FNleft(xt,yt) 1540IF xt=0 THEN ="edge" 1550IF G%(xt-1,yt)=0 THEN ="clear" 1560IF G%(xt-1,yt)<>G%(xt,yt) OR L%>200 THEN ="blocked" 1570= "same" 1580 1590DEF PROCtestcapture(xco%,yco%) 1600captured%=0 1610IF FNup(xco%,yco%)="blocked" THEN IF FNtestlife(xco%,yco%+1,"centre")="dead" THEN take%=G%(xco%,yco%+1):PROCcapture(xco%,yco%+1):kox%=xco%:koy%=yco%+1 1620 1630IF FNright(xco%,yco%)="blocked" THEN IF FNtestlife(xco%+1,yco%,"centre")="dead" THEN take%=G%(xco%+1,yco%):PROCcapture(xco%+1,yco%):kox%=xco%+1:koy%=yco% 1640 1650IF FNdown(xco%,yco%)="blocked" THEN IF FNtestlife(xco%,yco%-1,"centre")="dead" THEN take%=G%(xco%,yco%-1):PROCcapture(xco%,yco%-1):kox%=xco%:koy%=yco%-1 1660 1670IF FNleft(xco%,yco%)="blocked" THEN IF FNtestlife(xco%-1,yco%,"centre")="dead" THEN take%=G%(xco%-1,yco%):PROCcapture(xco%-1,yco%):kox%=xco%-1:koy%=yco% 1680 1690 1700ENDPROC 1710 1720DEF PROCcapture(xc%,yc%) 1730captured%+=1 1740G%(xc%,yc%)=0:PROCdelete(xc%,yc%) 1750IF FNcaptup(xc%,yc%)=take% THEN PROCcapture(xc%,yc%+1) 1760IF FNcaptright(xc%,yc%)=take% THEN PROCcapture(xc%+1,yc%) 1770IF FNcaptdown(xc%,yc%)=take% THEN PROCcapture(xc%,yc%-1) 1780IF FNcaptleft(xc%,yc%)=take% THEN PROCcapture(xc%-1,yc%) 1790 1800ENDPROC 1810 1820DEF PROCsavedrawfile 1830 1840FOR x%=originx TO originx+18*stepx STEP stepx 1850PROCCDraw_openpath(-1,0,0,0) 1860PROCCDraw_extendpath("MOVE "+STR$(x%)+" "+STR$(originy)) 1870PROCCDraw_extendpath("DRAW "+STR$(x%)+" "+STR$(originy+18*stepy)) 1880PROCCDraw_closepath 1890NEXT x% 1900 1910FOR y%=originy TO originy+18*stepy STEP stepy 1920PROCCDraw_openpath(-1,0,0,0) 1930PROCCDraw_extendpath("MOVE "+STR$(originx)+" "+STR$(y%)) 1940PROCCDraw_extendpath("DRAW "+STR$(originx+18*stepx)+" "+STR$(y%)) 1950PROCCDraw_closepath 1960NEXT y% 1970 1980FOR xdot=originx+stepx*3 TO originx+stepx*15 STEP stepx*6 1990FOR ydot=originy+stepy*3 TO originy+stepy*15 STEP stepy*6 2000PROCCDraw_circle(xdot,ydot,3,0,0,0,0) 2010NEXT:NEXT 2020 2030FOR xn%=0 TO 18:FOR yn%=0 TO 18 2040IF G%(xn%,yn%)=1 THEN PROCCDraw_circle(FNxscr(xn%),FNyscr(yn%),size%,0,0,1,0) 2050IF G%(xn%,yn%)=2 THEN PROCCDraw_circle(FNxscr(xn%),FNyscr(yn%),size%,255,0,1,0) 2060NEXT:NEXT 2070PROCCDraw_savefile("GoBoard") 2080ENDPROC 2090 2100DEF FNcaptup(xt,yt) 2110IF yt=18 THEN =0 ELSE =G%(xt,yt+1) 2120 2130DEF FNcaptright(xt,yt) 2140IF xt=18 THEN =0 ELSE =G%(xt+1,yt) 2150 2160DEF FNcaptdown(xt,yt) 2170IF yt=0 THEN =0 ELSE =G%(xt,yt-1) 2180 2190DEF FNcaptleft(xt,yt) 2200IF xt=0 THEN =0 ELSE =G%(xt-1,yt) 2210 2220DEF PROCdelete(xd%,yd%) 2230GCOL 3 2240CIRCLE FILL FNxscr(xd%),FNyscr(yd%),size% 2250GCOL 7 2260MOVE FNxscr(xd%),FNyscr(yc%) 2270IF xd%<18 THEN DRAW FNxscr(xd%)+size%,FNyscr(yc%) 2280MOVE FNxscr(xd%),FNyscr(yc%) 2290IF xd%<>0 THEN DRAW FNxscr(xd%)-size%,FNyscr(yc%) 2300MOVE FNxscr(xd%),FNyscr(yc%) 2310IF yd%<18 THEN DRAW FNxscr(xd%),FNyscr(yc%)+size% 2320MOVE FNxscr(xd%),FNyscr(yc%) 2330IF yd%<>0 THEN DRAW FNxscr(xd%),FNyscr(yc%)-size% 2340 2350IF (xd%-3)MOD6=0 AND (yd%-3)MOD6=0 THEN CIRCLE FILL FNxscr(xd%),FNyscr(yd%),6 2360ENDPROC 2370 2380DEF PROCsavemoves 2390F=OPENOUT("GoFile") 2400 2410N%=1 2420WHILE N%<=saven% 2430PRINT#F,savex%(N%),savey%(N%) 2440N%+=1 2450ENDWHILE 2460 2470CLOSE#F 2480ENDPROC 2490 2500DEF PROCloadmoves 2510PROCcleargrid 2520 2530F=OPENIN("GoFile") 2540move%=0 2550prisoners%()=0 2560WHILE NOT EOF#F 2570move%+=1 2580INPUT#F,savex%(move%),savey%(move%) 2590ENDWHILE 2600CLOSE#F 2610PROCreplay(move%) 2620turn%=(saven%+1)MOD 2 +1 2630GCOL 0,colour%(turn%):CIRCLE FILL FNxscr(21),FNyscr(17),size% 2640ENDPROC 2650 2660DEF PROCcleargrid 2670CLS 2680PROCdrawboard 2690FOR x%=0 TO 18:FOR y%=0 TO 18:G%(x%,y%)=0 2700NEXT:NEXT 2710ENDPROC 2720 2730DEF PROCreplay(move%) 2740saven%=move% 2750M%=1 2760WHILE M%<move%:PROCmove(savex%(M%),savey%(M%),((M%+1)MOD 2)+1) 2770M%+=1 2780ENDWHILE 2790PRINTTAB(65,2)saven% 2800REM TIME=0:REPEAT UNTIL TIME>50 2810ENDPROC 2820 2830DEF PROCbackstep 2840IF saven%<2 THEN ENDPROC 2850PROCcleargrid 2860prisoners%()=0 2870move%=saven%-1 2880PROCreplay(move%) 2890turn%=(saven%+1)MOD 2 +1 2900GCOL 0,colour%(turn%):CIRCLE FILL FNxscr(21),FNyscr(17),size% 2910ENDPROC 2920 2930DEF PROCclear 2940PROCcleargrid 2950prisoners%()=0 2960saven%=1 2970turn%=(saven%+1)MOD 2 +1 2980PRINTTAB(65,2)saven% 2990GCOL 0,colour%(turn%):CIRCLE FILL FNxscr(21),FNyscr(17),size% 3000ENDPROC 3010 3020DEFPROCCDraw_initialise(appl_name$, nfonts%, size%) 3030DIM _buffer% size% 3040_ptr%=_buffer% 3050$_ptr%=LEFT$("Draw"+CHR$201+STRING$(12,CHR$(0)),12) 3060_ptr%+=12 3070$_ptr%=LEFT$(appl_name$+STRING$(12," "),12) 3080DIM CDraw_font$(nfonts%+1), _colours% 20*4, _dash$(4) 3090SYS"Wimp_ReadPalette",,_colours% 3100_dash$(1)=STRING$(6,CHR$0+CHR$9+CHR$0+CHR$0) 3110_dash$(2)=STRING$(6,CHR$0+CHR$18+CHR$0+CHR$0) 3120_dash$(3)=STRING$(6,CHR$0+CHR$36+CHR$0+CHR$0) 3130_dash$(4)=CHR$0+CHR$36+CHR$0+CHR$0+STRING$(3,CHR$0+CHR$9+CHR$0+CHR$0) 3140_flags%=&20100042 3150PROCCDraw_reset 3160_flags%=&20100042 3170CDraw_nofill%=-1 3180CDraw%=TRUE 3190ENDPROC 3200 3210DEFPROCCDraw_reset 3220_ptr%=_buffer%+40 3230_olx%=1<<30:_oby%=1<<30 3240_orx%=0:_oty%=0 3250ENDPROC 3260 3270DEFPROCCDraw_fontobject 3280IF CDraw_font$(1)<>"" AND CDraw% THEN 3290LOCAL _start%,I% 3300_start%=_ptr% 3310PROC_putword(0) 3320_ptr%+=4 3330I%=1 3340WHILE CDraw_font$(I%)<>"" 3350?_ptr%=I% 3360$(_ptr%+1)=CDraw_font$(I%) 3370_ptr%+=LENCDraw_font$(I%)+2 3380?(_ptr%-1)=0 3390I%+=1 3400ENDWHILE 3410WHILE_ptr%MOD4<>0 3420?_ptr%=0 3430_ptr%+=1 3440ENDWHILE 3450_start%!4=_ptr%-_start% 3460ENDIF 3470ENDPROC 3480 3490DEFPROCCDraw_textobject(font%,text$,ptsize,pthigh,xorigin%,yorigin%,fg%,bg%) 3500IF CDraw% THEN 3510LOCAL _start%,lx%,by%,rx%,ty% 3520_start%=_ptr% 3530PROC_putword(1) 3540_ptr%+=20 3550lx%=xorigin% 3560by%=yorigin%-4+6*(font%<>0) 3570rx%=xorigin%+ptsize*2.5*LENtext$ *(1+0.6*(font%<>0)) 3580ty%=yorigin%+pthigh*2.5+4 3590PROC_putcoords(_start%+8,lx%,by%,rx%,ty%) 3600PROC_putword(FN_colour(fg%)) 3610PROC_putword(FN_colour(bg%)) 3620PROC_putword(font%) 3630PROC_putword(ptsize*640) 3640PROC_putword(pthigh*640) 3650PROC_putword(xorigin%<<8) 3660PROC_putword(yorigin%<<8) 3670PROC_putstring(text$) 3680_start%!4=_ptr%-_start% 3690PROC_checkspace(lx%,by%,rx%,ty%) 3700ENDIF 3710ENDPROC 3720 3730DEFPROCCDraw_savefile(f$) 3740IF CDraw% THEN 3750_buffer%!24=_olx% 3760_buffer%!28=_oby% 3770_buffer%!32=_orx% 3780_buffer%!36=_oty% 3790SYS"OS_File",10,f$,&AFF,,_buffer%,_ptr% 3800ENDIF 3810ENDPROC 3820 3830DEFFN_colour(c%) 3840IF c%>=0 THEN =((c%AND&03)*80+((c%>>2)AND&03)*80*&100+((c%>>4)AND&03)*80*&10000)<<8 ELSE =-1 3850REM IF c%>=0 THEN =!(_colours%+c%*4) AND &FFFFFF00 ELSE =-1 3860 3870DEFPROC_checkspace(lx%,by%,rx%,ty%) 3880IF lx%<_olx% THEN _olx%=lx% 3890IF by%<_oby% THEN _oby%=by% 3900IF rx%>_orx% THEN _orx%=rx% 3910IF ty%>_oty% THEN _oty%=ty% 3920ENDPROC 3930 3940DEFPROC_putword(W%) 3950!_ptr%=W% 3960_ptr%+=4 3970ENDPROC 3980 3990DEFPROC_putstring(S$) 4000$_ptr%=S$ 4010_ptr%+=LENS$ 4020REPEAT?_ptr%=0 4030_ptr%+=1 4040UNTIL _ptr%MOD4=0 4050ENDPROC 4060 4070DEFPROC_putwords(X%,Y%) 4080X%=X%<<8:Y%=Y%<<8 4090IF X%<_start%!8 THEN _start%!8 =X% 4100IF Y%<_start%!12 THEN _start%!12 =Y% 4110IF X%>_start%!16 THEN _start%!16 =X% 4120IF Y%>_start%!20 THEN _start%!20=Y% 4130PROC_putword(X%):PROC_putword(Y%) 4140ENDPROC 4150 4160DEFPROC_putcoords(_start%, lx%, by%, rx%, ty%) 4170_start%!0=lx%<<8 4180_start%!4=by%<<8 4190_start%!8=rx%<<8 4200_start%!12=ty%<<8 4210ENDPROC 4220 4230DEFPROCCDraw_circle(X, Y, R, fill%, col%, thick%, dash%) 4240LOCAL A,B,C 4250A=R/SQR2 4260B=A+R/2.544 4270C=A-R/2.544 4280PROCCDraw_openpath(fill%, col%, thick%, dash%) 4290PROCCDraw_extendpath("MOVE "+STR$(X+A)+" "+STR$(Y-A)) 4300PROC_putword(6) 4310PROC_putwords(X+C,Y-B) 4320PROC_putwords(X-C,Y-B) 4330PROC_putwords(X-A,Y-A) 4340PROC_putword(6) 4350PROC_putwords(X-B,Y-C) 4360PROC_putwords(X-B,Y+C) 4370PROC_putwords(X-A,Y+A) 4380PROC_putword(6) 4390PROC_putwords(X-C,Y+B) 4400PROC_putwords(X+C,Y+B) 4410PROC_putwords(X+A,Y+A) 4420PROC_putword(6) 4430PROC_putwords(X+B,Y+C) 4440PROC_putwords(X+B,Y-C) 4450PROC_putwords(X+A,Y-A) 4460PROCCDraw_extendpath("CLOSE") 4470PROCCDraw_closepath 4480ENDPROC 4490 4500DEFPROCCDraw_pathobject(fill%, col%, thick%, dash%, path$) 4510PROCCDraw_openpath(fill%, col%, thick%, dash%) 4520PROCCDraw_extendpath(path$) 4530PROCCDraw_closepath 4540ENDPROC 4550 4560DEFPROCCDraw_openpath(fill%, col%, thick%, dash%) 4570IF CDraw% THEN 4580LOCAL pattern$,I% 4590_start%=_ptr% 4600PROC_putword(2) 4610_ptr%+=20 4620PROC_putcoords(_start%+8,1<<30,1<<30,0,0) 4630PROC_putword(FN_colour(fill%)) 4640PROC_putword(FN_colour(col%)) 4650PROC_putword(thick%<<8) 4660PROC_putword(_flags% OR &80*-(dash%<>0)) 4670IF dash%>0 THEN 4680pattern$=_dash$(dash%) 4690PROC_putword(0) 4700PROC_putword(LENpattern$/4) 4710FOR I%=1 TO LENpattern$ 4720?_ptr%=ASCMID$(pattern$,I%,1) 4730_ptr%+=1 4740NEXTI% 4750ENDIF 4760ENDIF 4770ENDPROC 4780 4790DEFPROCCDraw_extendpath(path$) 4800LOCAL _pathtype%,I% 4810WHILE path$<>"" 4820CASE FN_nextchunk(path$) OF 4830WHEN "MOVE" :_pathtype%=2 4840WHEN "CGAP" :_pathtype%=4 4850WHEN "CLOSE" :_pathtype%=5 4860WHEN "CURVE" :_pathtype%=6 4870WHEN "GAP" :_pathtype%=7 4880WHEN "DRAW" :_pathtype%=8 4890ENDCASE 4900IF _pathtype%<>0 THEN 4910PROC_putword(_pathtype%) 4920CASE _pathtype% OF 4930WHEN 2,3,7,8: 4940PROC_putpair(path$) 4950WHEN 6: 4960FOR I%=1 TO 3 4970PROC_putpair(path$) 4980NEXT I% 4990ENDCASE 5000ENDIF 5010ENDWHILE 5020ENDPROC 5030 5040DEFPROCCDraw_closepath 5050PROC_putword(0) 5060_start%!4=_ptr%-_start% 5070PROC_checkspace(_start%!8, _start%!12, _start%!16, _start%!20) 5080ENDPROC 5090 5100DEFFN_nextchunk(RETURN path$) 5110LOCAL P%,chunk$ 5120P%=INSTR(path$+" "," ") 5130chunk$=LEFT$(path$,INSTR(path$+" "," ")-1) 5140path$=MID$(path$,P%+1) 5150=chunk$ 5160 5170DEFPROC_putpair(RETURN path$) 5180LOCAL X%,Y% 5190X%=VALFN_nextchunk(path$) 5200Y%=VALFN_nextchunk(path$) 5210PROC_putwords(X%,Y%) 5220ENDPROC
� > GO � � Andy - Game of Go ((� moves in a PROC so that can replay 2� < F� 12 P$�CDraw_initialise("GO",1,&10000) Z!CDraw_font$(1)="Trinity.Bold" d�CDraw_fontobject n x� 3,240,180,20 �� 2,255,255,0 � � 7,0,0,0 �� 0,255,255,255 �� 135:� 0:� �ȗ � �@� G%(19,19),prisoners%(2),savex%(360),savey%(360),colour%(2) �size%=20 �saven%=1 �legal=� �colour%(1)=7:colour%(2)=0 �ko=�:kox%=0:koy%=0 ��drawboard �@%=4 � � "turn%=(saven%+1)� 2 +1 ,6� 0,colour%(turn%):ȏ Ȑ �xscr(21),�yscr(17),size% 6�65,2)saven% @ �play J� � T ^� �play h r(�:� loop until non-suicide move made |legal=� �'�:� loop until blank point selected �,�:� loop until valid range 0-18 selected � ��:ȗ x%,y%,b%:� b%=4 ��:ȗ x%,y%,b%:� b%=0 � �xco%=�xco(x%) �yco%=�yco(y%) � �:� y%>=128 � y%<160 � x%>1040 � x%<1198 � �savedrawfile �7� y%>=192 � y%<224 � x%>1040 � x%<1198 � �savemoves �7� y%>=256 � y%<288 � x%>1040 � x%<1198 � �loadmoves �4� y%>=64 � y%<96 � x%>1040 � x%<1198 � �backstep 3� y%>=320 � y%<352 � x%>1040 � x%<1198 � �clear -� xco%>=0 � xco%<=18 � yco%>=0 � yco%<=18 & 0� G%(xco%,yco%)=0 :�move(xco%,yco%,turn%) D?� legal � savex%(saven%)=xco%:savey%(saven%)=yco%:saven%+=1 N� legal X� b l� �move(xco%,yco%,turn%) vG%(xco%,yco%)=turn% �L%=0 �� �65,7) �<� ko � kox%=xco% � koy%=yco% � G%(xco%,yco%)=0:legal=�:� ��testcapture(xco%,yco%) � prisoners%(turn%)+=captured% �� captured%=1 � ko=�:� ko=� �*� 131:�65,8+turn%*3)prisoners%(turn%) �D� �testlife(xco%,yco%,"centre")="dead" � G%(xco%,yco%)=0:legal=� �D� legal � � 0,colour%(turn%):ȏ Ȑ �xscr(xco%),�yscr(yco%),size% �� � �� �drawboard �� 135:� +originx=64:originy=80:stepx=48:stepy=48 � 132:�65,27)" Drawfile " � 129:�65,25)" SaveGame " � 133:�65,23)" LoadGame " *&� 130:� 7:�65,29)" Backstep ":� 0 4&� 134:� 7:�65,21)" Clear ":� 0 > H� 3 R7ȓ Ȑ originx-stepx,originy-stepy,20*stepx,20*stepy \;ȓ Ȑ originx+20*stepx,originy+16*stepy,2*stepx,3*stepy f:ȓ Ȑ originx+20*stepx,originy+8*stepy,4*stepx,6*stepy p� 131:�65,1)"Next" z0� colour%(1):ȏ Ȑ �xscr(23),�yscr(10),size% �0� colour%(2):ȏ Ȑ �xscr(23),�yscr(12),size% �� 131:�65,9)"Captured" �� 7 � �+� x%=originx � originx+18*stepx � stepx �&� x%,originy:� x%,originy+18*stepy �� x% � �+� y%=originy � originy+18*stepy � stepy �&� originx,y%:� originx+18*stepx,y% �� y% � �5� x%=originx+stepx*3 � originx+stepx*15 � stepx*6 5� y%=originy+stepy*3 � originy+stepy*15 � stepy*6 ȏ Ȑ x%,y%,6 �:� $� . 8$� �xscr(xco%)=xco%*stepx+originx B L$� �yscr(yco%)=yco%*stepy+originy V `0� �xco(xscr)=�((xscr-originx+stepx/2)/stepx) j t0� �yco(yscr)=�((yscr-originy+stepy/2)/stepy) ~ �� �testlife(xx,yy,dir$) � L%+=1 �Y� dir$<>"down" � �up(xx,yy)="same" � � �testlife(xx,yy+1,"up")="okay" � L%-=1:="okay" �(� �up(xx,yy)="clear" � L%-=1:="okay" � �_� dir$<>"left" � �right(xx,yy)="same" � � �testlife(xx+1,yy,"right")="okay" � L%-=1:="okay" �+� �right(xx,yy)="clear" � L%-=1:="okay" � �[� dir$<>"up" � �down(xx,yy)="same" � � �testlife(xx,yy-1,"down")="okay" � L%-=1:="okay" �*� �down(xx,yy)="clear" � L%-=1:="okay" � �^� dir$<>"right" � �left(xx,yy)="same" � � �testlife(xx-1,yy,"left")="okay" � L%-=1:="okay" *� �left(xx,yy)="clear" � L%-=1:="okay" L%-=1 ="dead" ( 2L� problem with endless loop solved? (mostly) iterations limited to 200 < F� �up(xt,yt) P� yt=18 � ="edge" Z� G%(xt,yt+1)=0 � ="clear" d2� G%(xt,yt+1)<>G%(xt,yt) � L%>200 � ="blocked" n= "same" x �� �right(xt,yt) �� xt=18 � ="edge" �� G%(xt+1,yt)=0 � ="clear" �2� G%(xt+1,yt)<>G%(xt,yt) � L%>200 � ="blocked" �= "same" � �� �down(xt,yt) �� yt=0 � ="edge" �� G%(xt,yt-1)=0 � ="clear" �2� G%(xt,yt-1)<>G%(xt,yt) � L%>200 � ="blocked" �= "same" � �� �left(xt,yt) � xt=0 � ="edge" � G%(xt-1,yt)=0 � ="clear" 2� G%(xt-1,yt)<>G%(xt,yt) � L%>200 � ="blocked" "= "same" , 6� �testcapture(xco%,yco%) @captured%=0 J�� �up(xco%,yco%)="blocked" � � �testlife(xco%,yco%+1,"centre")="dead" � take%=G%(xco%,yco%+1):�capture(xco%,yco%+1):kox%=xco%:koy%=yco%+1 T ^�� �right(xco%,yco%)="blocked" � � �testlife(xco%+1,yco%,"centre")="dead" � take%=G%(xco%+1,yco%):�capture(xco%+1,yco%):kox%=xco%+1:koy%=yco% h r�� �down(xco%,yco%)="blocked" � � �testlife(xco%,yco%-1,"centre")="dead" � take%=G%(xco%,yco%-1):�capture(xco%,yco%-1):kox%=xco%:koy%=yco%-1 | ��� �left(xco%,yco%)="blocked" � � �testlife(xco%-1,yco%,"centre")="dead" � take%=G%(xco%-1,yco%):�capture(xco%-1,yco%):kox%=xco%-1:koy%=yco% � � �� � �� �capture(xc%,yc%) �captured%+=1 �"G%(xc%,yc%)=0:�delete(xc%,yc%) �2� �captup(xc%,yc%)=take% � �capture(xc%,yc%+1) �5� �captright(xc%,yc%)=take% � �capture(xc%+1,yc%) �4� �captdown(xc%,yc%)=take% � �capture(xc%,yc%-1) �4� �captleft(xc%,yc%)=take% � �capture(xc%-1,yc%) � � � �savedrawfile & 0+� x%=originx � originx+18*stepx � stepx :�CDraw_openpath(-1,0,0,0) D3�CDraw_extendpath("MOVE "+�(x%)+" "+�(originy)) N<�CDraw_extendpath("DRAW "+�(x%)+" "+�(originy+18*stepy)) X�CDraw_closepath b� x% l v+� y%=originy � originy+18*stepy � stepy ��CDraw_openpath(-1,0,0,0) �3�CDraw_extendpath("MOVE "+�(originx)+" "+�(y%)) �<�CDraw_extendpath("DRAW "+�(originx+18*stepx)+" "+�(y%)) ��CDraw_closepath �� y% � �7� xdot=originx+stepx*3 � originx+stepx*15 � stepx*6 �7� ydot=originy+stepy*3 � originy+stepy*15 � stepy*6 �&�CDraw_circle(xdot,ydot,3,0,0,0,0) ��:� � �� xn%=0 � 18:� yn%=0 � 18 �H� G%(xn%,yn%)=1 � �CDraw_circle(�xscr(xn%),�yscr(yn%),size%,0,0,1,0) J� G%(xn%,yn%)=2 � �CDraw_circle(�xscr(xn%),�yscr(yn%),size%,255,0,1,0) �:� �CDraw_savefile("GoBoard") � * 4� �captup(xt,yt) >� yt=18 � =0 � =G%(xt,yt+1) H R� �captright(xt,yt) \� xt=18 � =0 � =G%(xt+1,yt) f p� �captdown(xt,yt) z� yt=0 � =0 � =G%(xt,yt-1) � �� �captleft(xt,yt) �� xt=0 � =0 � =G%(xt-1,yt) � �� �delete(xd%,yd%) �� 3 �%ȏ Ȑ �xscr(xd%),�yscr(yd%),size% �� 7 �� �xscr(xd%),�yscr(yc%) �,� xd%<18 � � �xscr(xd%)+size%,�yscr(yc%) �� �xscr(xd%),�yscr(yc%) �,� xd%<>0 � � �xscr(xd%)-size%,�yscr(yc%) �� �xscr(xd%),�yscr(yc%) ,� yd%<18 � � �xscr(xd%),�yscr(yc%)+size% � �xscr(xd%),�yscr(yc%) ,� yd%<>0 � � �xscr(xd%),�yscr(yc%)-size% $ .?� (xd%-3)�6=0 � (yd%-3)�6=0 � ȏ Ȑ �xscr(xd%),�yscr(yd%),6 8� B L� �savemoves VF=�("GoFile") ` jN%=1 tȕ N%<=saven% ~�#F,savex%(N%),savey%(N%) � N%+=1 �� � ��#F �� � �� �loadmoves ��cleargrid � �F=�("GoFile") �move%=0 �prisoners%()=0 ȕ � �#F move%+=1 #�#F,savex%(move%),savey%(move%) � (�#F 2�replay(move%) <turn%=(saven%+1)� 2 +1 F6� 0,colour%(turn%):ȏ Ȑ �xscr(21),�yscr(17),size% P� Z d� �cleargrid n� x�drawboard �'� x%=0 � 18:� y%=0 � 18:G%(x%,y%)=0 ��:� �� � �� �replay(move%) �saven%=move% �M%=1 �:ȕ M%<move%:�move(savex%(M%),savey%(M%),((M%+1)� 2)+1) � M%+=1 �� ��65,2)saven% �!� TIME=0:REPEAT UNTIL TIME>50 �� � �backstep � saven%<2 � � "�cleargrid ,prisoners%()=0 6move%=saven%-1 @�replay(move%) Jturn%=(saven%+1)� 2 +1 T6� 0,colour%(turn%):ȏ Ȑ �xscr(21),�yscr(17),size% ^� h r� �clear |�cleargrid �prisoners%()=0 �saven%=1 �turn%=(saven%+1)� 2 +1 ��65,2)saven% �6� 0,colour%(turn%):ȏ Ȑ �xscr(21),�yscr(17),size% �� � �2��CDraw_initialise(appl_name$, nfonts%, size%) �� _buffer% size% �_ptr%=_buffer% �%$_ptr%=�"Draw"+�201+�12,�(0)),12) � _ptr%+=12 �#$_ptr%=�appl_name$+�12," "),12) 7� CDraw_font$(nfonts%+1), _colours% 20*4, _dash$(4) #ș"Wimp_ReadPalette",,_colours% _dash$(1)=�6,�0+�9+�0+�0) &_dash$(2)=�6,�0+�18+�0+�0) 0_dash$(3)=�6,�0+�36+�0+�0) :*_dash$(4)=�0+�36+�0+�0+�3,�0+�9+�0+�0) D_flags%=&20100042 N�CDraw_reset X_flags%=&20100042 bCDraw_nofill%=-1 lCDraw%=� v� � ���CDraw_reset �_ptr%=_buffer%+40 �_olx%=1<<30:_oby%=1<<30 �_orx%=0:_oty%=0 �� � ���CDraw_fontobject �#� CDraw_font$(1)<>"" � CDraw% � �� _start%,I% �_start%=_ptr% ��_putword(0) �_ptr%+=4 I%=1 ȕ CDraw_font$(I%)<>"" ?_ptr%=I% $(_ptr%+1)=CDraw_font$(I%) *_ptr%+=�CDraw_font$(I%)+2 4?(_ptr%-1)=0 > I%+=1 H� Rȕ_ptr%�4<>0 \?_ptr%=0 f_ptr%+=1 p� z_start%!4=_ptr%-_start% �� �� � �K��CDraw_textobject(font%,text$,ptsize,pthigh,xorigin%,yorigin%,fg%,bg%) �� CDraw% � �� _start%,lx%,by%,rx%,ty% �_start%=_ptr% ��_putword(1) � _ptr%+=20 �lx%=xorigin% �by%=yorigin%-4+6*(font%<>0) �6rx%=xorigin%+ptsize*2.5*�text$ *(1+0.6*(font%<>0)) �ty%=yorigin%+pthigh*2.5+4 *�_putcoords(_start%+8,lx%,by%,rx%,ty%) �_putword(�_colour(fg%)) �_putword(�_colour(bg%)) $�_putword(font%) .�_putword(ptsize*640) 8�_putword(pthigh*640) B�_putword(xorigin%<<8) L�_putword(yorigin%<<8) V�_putstring(text$) `_start%!4=_ptr%-_start% j!�_checkspace(lx%,by%,rx%,ty%) t� ~� � ���CDraw_savefile(f$) �� CDraw% � �_buffer%!24=_olx% �_buffer%!28=_oby% �_buffer%!32=_orx% �_buffer%!36=_oty% �*ș"OS_File",10,f$,&AFF,,_buffer%,_ptr% �� �� � �ݤ_colour(c%) S� c%>=0 � =((c%�&03)*80+((c%>>2)�&03)*80*&100+((c%>>4)�&03)*80*&10000)<<8 � =-1 >� IF c%>=0 THEN =!(_colours%+c%*4) AND &FFFFFF00 ELSE =-1 "��_checkspace(lx%,by%,rx%,ty%) (� lx%<_olx% � _olx%=lx% 2� by%<_oby% � _oby%=by% <� rx%>_orx% � _orx%=rx% F� ty%>_oty% � _oty%=ty% P� Z d��_putword(W%) n !_ptr%=W% x_ptr%+=4 �� � ���_putstring(S$) � $_ptr%=S$ �_ptr%+=�S$ � �?_ptr%=0 �_ptr%+=1 �� _ptr%�4=0 �� � ���_putwords(X%,Y%) �X%=X%<<8:Y%=Y%<<8 �"� X%<_start%!8 � _start%!8 =X% $� Y%<_start%!12 � _start%!12 =Y% $� X%>_start%!16 � _start%!16 =X% #� Y%>_start%!20 � _start%!20=Y% "�_putword(X%):�_putword(Y%) ,� 6 @-��_putcoords(_start%, lx%, by%, rx%, ty%) J_start%!0=lx%<<8 T_start%!4=by%<<8 ^_start%!8=rx%<<8 h_start%!12=ty%<<8 r� | �7��CDraw_circle(X, Y, R, fill%, col%, thick%, dash%) �� A,B,C � A=R/�2 �B=A+R/2.544 �C=A-R/2.544 �/�CDraw_openpath(fill%, col%, thick%, dash%) �0�CDraw_extendpath("MOVE "+�(X+A)+" "+�(Y-A)) ��_putword(6) ��_putwords(X+C,Y-B) ��_putwords(X-C,Y-B) ��_putwords(X-A,Y-A) ��_putword(6) ��_putwords(X-B,Y-C) �_putwords(X-B,Y+C) �_putwords(X-A,Y+A) �_putword(6) &�_putwords(X-C,Y+B) 0�_putwords(X+C,Y+B) :�_putwords(X+A,Y+A) D�_putword(6) N�_putwords(X+B,Y+C) X�_putwords(X+B,Y-C) b�_putwords(X+A,Y-A) l�CDraw_extendpath("CLOSE") v�CDraw_closepath �� � �9��CDraw_pathobject(fill%, col%, thick%, dash%, path$) �/�CDraw_openpath(fill%, col%, thick%, dash%) ��CDraw_extendpath(path$) ��CDraw_closepath �� � �0��CDraw_openpath(fill%, col%, thick%, dash%) �� CDraw% � �� pattern$,I% �_start%=_ptr% ��_putword(2) _ptr%+=20 *�_putcoords(_start%+8,1<<30,1<<30,0,0) �_putword(�_colour(fill%)) �_putword(�_colour(col%)) *�_putword(thick%<<8) 4(�_putword(_flags% � &80*-(dash%<>0)) >� dash%>0 � Hpattern$=_dash$(dash%) R�_putword(0) \�_putword(�pattern$/4) f� I%=1 � �pattern$ p?_ptr%=��pattern$,I%,1) z_ptr%+=1 ��I% �� �� �� � ���CDraw_extendpath(path$) �� _pathtype%,I% �ȕ path$<>"" �Ȏ �_nextchunk(path$) � �� "MOVE" :_pathtype%=2 �� "CGAP" :_pathtype%=4 �� "CLOSE" :_pathtype%=5 �� "CURVE" :_pathtype%=6 � "GAP" :_pathtype%=7 � "DRAW" :_pathtype%=8 � $� _pathtype%<>0 � .�_putword(_pathtype%) 8Ȏ _pathtype% � B� 2,3,7,8: L�_putpair(path$) V� 6: `� I%=1 � 3 j�_putpair(path$) t� I% ~� �� �� �� � ���CDraw_closepath ��_putword(0) �_start%!4=_ptr%-_start% �?�_checkspace(_start%!8, _start%!12, _start%!16, _start%!20) �� � �ݤ_nextchunk(� path$) �� P%,chunk$ P%=�path$+" "," ") $chunk$=�path$,�path$+" "," ")-1) path$=�path$,P%+1) =chunk$ ( 2��_putpair(� path$) <� X%,Y% FX%=��_nextchunk(path$) PY%=��_nextchunk(path$) Z�_putwords(X%,Y%) d� �
00000000 0d 00 0a 0a f4 20 3e 20 47 4f 0d 00 14 05 f4 0d |..... > GO......| 00000010 00 1e 17 f4 20 41 6e 64 79 20 2d 20 47 61 6d 65 |.... Andy - Game| 00000020 20 6f 66 20 47 6f 0d 00 28 28 f4 20 6d 6f 76 65 | of Go..((. move| 00000030 73 20 69 6e 20 61 20 50 52 4f 43 20 73 6f 20 74 |s in a PROC so t| 00000040 68 61 74 20 63 61 6e 20 72 65 70 6c 61 79 0d 00 |hat can replay..| 00000050 32 05 f4 0d 00 3c 04 0d 00 46 08 eb 20 31 32 0d |2....<...F.. 12.| 00000060 00 50 24 f2 43 44 72 61 77 5f 69 6e 69 74 69 61 |.P$.CDraw_initia| 00000070 6c 69 73 65 28 22 47 4f 22 2c 31 2c 26 31 30 30 |lise("GO",1,&100| 00000080 30 30 29 0d 00 5a 21 43 44 72 61 77 5f 66 6f 6e |00)..Z!CDraw_fon| 00000090 74 24 28 31 29 3d 22 54 72 69 6e 69 74 79 2e 42 |t$(1)="Trinity.B| 000000a0 6f 6c 64 22 0d 00 64 15 f2 43 44 72 61 77 5f 66 |old"..d..CDraw_f| 000000b0 6f 6e 74 6f 62 6a 65 63 74 0d 00 6e 04 0d 00 78 |ontobject..n...x| 000000c0 12 fb 20 33 2c 32 34 30 2c 31 38 30 2c 32 30 0d |.. 3,240,180,20.| 000000d0 00 82 11 fb 20 32 2c 32 35 35 2c 32 35 35 2c 30 |.... 2,255,255,0| 000000e0 0d 00 8c 0d fb 20 37 2c 30 2c 30 2c 30 0d 00 96 |..... 7,0,0,0...| 000000f0 13 fb 20 30 2c 32 35 35 2c 32 35 35 2c 32 35 35 |.. 0,255,255,255| 00000100 0d 00 a0 0f fb 20 31 33 35 3a fb 20 30 3a db 0d |..... 135:. 0:..| 00000110 00 aa 08 c8 97 20 ee 0d 00 b4 40 de 20 47 25 28 |..... ....@. G%(| 00000120 31 39 2c 31 39 29 2c 70 72 69 73 6f 6e 65 72 73 |19,19),prisoners| 00000130 25 28 32 29 2c 73 61 76 65 78 25 28 33 36 30 29 |%(2),savex%(360)| 00000140 2c 73 61 76 65 79 25 28 33 36 30 29 2c 63 6f 6c |,savey%(360),col| 00000150 6f 75 72 25 28 32 29 0d 00 be 0c 73 69 7a 65 25 |our%(2)....size%| 00000160 3d 32 30 0d 00 c8 0c 73 61 76 65 6e 25 3d 31 0d |=20....saven%=1.| 00000170 00 d2 0b 6c 65 67 61 6c 3d b9 0d 00 dc 1d 63 6f |...legal=.....co| 00000180 6c 6f 75 72 25 28 31 29 3d 37 3a 63 6f 6c 6f 75 |lour%(1)=7:colou| 00000190 72 25 28 32 29 3d 30 0d 00 e6 16 6b 6f 3d a3 3a |r%(2)=0....ko=.:| 000001a0 6b 6f 78 25 3d 30 3a 6b 6f 79 25 3d 30 0d 00 f0 |kox%=0:koy%=0...| 000001b0 0e f2 64 72 61 77 62 6f 61 72 64 0d 00 fa 08 40 |..drawboard....@| 000001c0 25 3d 34 0d 01 04 05 87 0d 01 0e 04 0d 01 18 05 |%=4.............| 000001d0 f5 0d 01 22 1a 74 75 72 6e 25 3d 28 73 61 76 65 |...".turn%=(save| 000001e0 6e 25 2b 31 29 83 20 32 20 2b 31 0d 01 2c 36 e6 |n%+1). 2 +1..,6.| 000001f0 20 30 2c 63 6f 6c 6f 75 72 25 28 74 75 72 6e 25 | 0,colour%(turn%| 00000200 29 3a c8 8f 20 c8 90 20 a4 78 73 63 72 28 32 31 |):.. .. .xscr(21| 00000210 29 2c a4 79 73 63 72 28 31 37 29 2c 73 69 7a 65 |),.yscr(17),size| 00000220 25 0d 01 36 11 f1 8a 36 35 2c 32 29 73 61 76 65 |%..6...65,2)save| 00000230 6e 25 0d 01 40 09 f2 70 6c 61 79 0d 01 4a 07 fd |n%..@..play..J..| 00000240 20 a3 0d 01 54 04 0d 01 5e 0b dd 20 f2 70 6c 61 | ...T...^.. .pla| 00000250 79 0d 01 68 04 0d 01 72 28 f5 3a f4 20 6c 6f 6f |y..h...r(.:. loo| 00000260 70 20 75 6e 74 69 6c 20 6e 6f 6e 2d 73 75 69 63 |p until non-suic| 00000270 69 64 65 20 6d 6f 76 65 20 6d 61 64 65 0d 01 7c |ide move made..|| 00000280 0b 6c 65 67 61 6c 3d b9 0d 01 86 27 f5 3a f4 20 |.legal=....'.:. | 00000290 6c 6f 6f 70 20 75 6e 74 69 6c 20 62 6c 61 6e 6b |loop until blank| 000002a0 20 70 6f 69 6e 74 20 73 65 6c 65 63 74 65 64 0d | point selected.| 000002b0 01 90 2c f5 3a f4 20 6c 6f 6f 70 20 75 6e 74 69 |..,.:. loop unti| 000002c0 6c 20 76 61 6c 69 64 20 72 61 6e 67 65 20 30 2d |l valid range 0-| 000002d0 31 38 20 73 65 6c 65 63 74 65 64 0d 01 9a 04 0d |18 selected.....| 000002e0 01 a4 18 f5 3a c8 97 20 78 25 2c 79 25 2c 62 25 |....:.. x%,y%,b%| 000002f0 3a fd 20 62 25 3d 34 0d 01 ae 18 f5 3a c8 97 20 |:. b%=4.....:.. | 00000300 78 25 2c 79 25 2c 62 25 3a fd 20 62 25 3d 30 0d |x%,y%,b%:. b%=0.| 00000310 01 b8 04 0d 01 c2 11 78 63 6f 25 3d a4 78 63 6f |.......xco%=.xco| 00000320 28 78 25 29 0d 01 cc 11 79 63 6f 25 3d a4 79 63 |(x%)....yco%=.yc| 00000330 6f 28 79 25 29 0d 01 d6 04 0d 01 e0 3a e7 20 79 |o(y%).......:. y| 00000340 25 3e 3d 31 32 38 20 80 20 79 25 3c 31 36 30 20 |%>=128 . y%<160 | 00000350 80 20 78 25 3e 31 30 34 30 20 80 20 78 25 3c 31 |. x%>1040 . x%<1| 00000360 31 39 38 20 8c 20 f2 73 61 76 65 64 72 61 77 66 |198 . .savedrawf| 00000370 69 6c 65 0d 01 ea 37 e7 20 79 25 3e 3d 31 39 32 |ile...7. y%>=192| 00000380 20 80 20 79 25 3c 32 32 34 20 80 20 78 25 3e 31 | . y%<224 . x%>1| 00000390 30 34 30 20 80 20 78 25 3c 31 31 39 38 20 8c 20 |040 . x%<1198 . | 000003a0 f2 73 61 76 65 6d 6f 76 65 73 0d 01 f4 37 e7 20 |.savemoves...7. | 000003b0 79 25 3e 3d 32 35 36 20 80 20 79 25 3c 32 38 38 |y%>=256 . y%<288| 000003c0 20 80 20 78 25 3e 31 30 34 30 20 80 20 78 25 3c | . x%>1040 . x%<| 000003d0 31 31 39 38 20 8c 20 f2 6c 6f 61 64 6d 6f 76 65 |1198 . .loadmove| 000003e0 73 0d 01 fe 34 e7 20 79 25 3e 3d 36 34 20 80 20 |s...4. y%>=64 . | 000003f0 79 25 3c 39 36 20 80 20 78 25 3e 31 30 34 30 20 |y%<96 . x%>1040 | 00000400 80 20 78 25 3c 31 31 39 38 20 8c 20 f2 62 61 63 |. x%<1198 . .bac| 00000410 6b 73 74 65 70 0d 02 08 33 e7 20 79 25 3e 3d 33 |kstep...3. y%>=3| 00000420 32 30 20 80 20 79 25 3c 33 35 32 20 80 20 78 25 |20 . y%<352 . x%| 00000430 3e 31 30 34 30 20 80 20 78 25 3c 31 31 39 38 20 |>1040 . x%<1198 | 00000440 8c 20 f2 63 6c 65 61 72 0d 02 12 04 0d 02 1c 2d |. .clear.......-| 00000450 fd 20 78 63 6f 25 3e 3d 30 20 80 20 78 63 6f 25 |. xco%>=0 . xco%| 00000460 3c 3d 31 38 20 80 20 79 63 6f 25 3e 3d 30 20 80 |<=18 . yco%>=0 .| 00000470 20 79 63 6f 25 3c 3d 31 38 0d 02 26 04 0d 02 30 | yco%<=18..&...0| 00000480 15 fd 20 47 25 28 78 63 6f 25 2c 79 63 6f 25 29 |.. G%(xco%,yco%)| 00000490 3d 30 0d 02 3a 1a f2 6d 6f 76 65 28 78 63 6f 25 |=0..:..move(xco%| 000004a0 2c 79 63 6f 25 2c 74 75 72 6e 25 29 0d 02 44 3f |,yco%,turn%)..D?| 000004b0 e7 20 6c 65 67 61 6c 20 8c 20 73 61 76 65 78 25 |. legal . savex%| 000004c0 28 73 61 76 65 6e 25 29 3d 78 63 6f 25 3a 73 61 |(saven%)=xco%:sa| 000004d0 76 65 79 25 28 73 61 76 65 6e 25 29 3d 79 63 6f |vey%(saven%)=yco| 000004e0 25 3a 73 61 76 65 6e 25 2b 3d 31 0d 02 4e 0b fd |%:saven%+=1..N..| 000004f0 20 6c 65 67 61 6c 0d 02 58 05 e1 0d 02 62 04 0d | legal..X....b..| 00000500 02 6c 1c dd 20 f2 6d 6f 76 65 28 78 63 6f 25 2c |.l.. .move(xco%,| 00000510 79 63 6f 25 2c 74 75 72 6e 25 29 0d 02 76 17 47 |yco%,turn%)..v.G| 00000520 25 28 78 63 6f 25 2c 79 63 6f 25 29 3d 74 75 72 |%(xco%,yco%)=tur| 00000530 6e 25 0d 02 80 08 4c 25 3d 30 0d 02 8a 0c f1 20 |n%....L%=0..... | 00000540 8a 36 35 2c 37 29 0d 02 94 3c e7 20 6b 6f 20 80 |.65,7)...<. ko .| 00000550 20 6b 6f 78 25 3d 78 63 6f 25 20 80 20 6b 6f 79 | kox%=xco% . koy| 00000560 25 3d 79 63 6f 25 20 8c 20 47 25 28 78 63 6f 25 |%=yco% . G%(xco%| 00000570 2c 79 63 6f 25 29 3d 30 3a 6c 65 67 61 6c 3d a3 |,yco%)=0:legal=.| 00000580 3a e1 0d 02 9e 1b f2 74 65 73 74 63 61 70 74 75 |:......testcaptu| 00000590 72 65 28 78 63 6f 25 2c 79 63 6f 25 29 0d 02 a8 |re(xco%,yco%)...| 000005a0 20 70 72 69 73 6f 6e 65 72 73 25 28 74 75 72 6e | prisoners%(turn| 000005b0 25 29 2b 3d 63 61 70 74 75 72 65 64 25 0d 02 b2 |%)+=captured%...| 000005c0 1f e7 20 63 61 70 74 75 72 65 64 25 3d 31 20 8c |.. captured%=1 .| 000005d0 20 6b 6f 3d b9 3a 8b 20 6b 6f 3d a3 0d 02 bc 2a | ko=.:. ko=....*| 000005e0 fb 20 31 33 31 3a f1 8a 36 35 2c 38 2b 74 75 72 |. 131:..65,8+tur| 000005f0 6e 25 2a 33 29 70 72 69 73 6f 6e 65 72 73 25 28 |n%*3)prisoners%(| 00000600 74 75 72 6e 25 29 0d 02 c6 44 e7 20 a4 74 65 73 |turn%)...D. .tes| 00000610 74 6c 69 66 65 28 78 63 6f 25 2c 79 63 6f 25 2c |tlife(xco%,yco%,| 00000620 22 63 65 6e 74 72 65 22 29 3d 22 64 65 61 64 22 |"centre")="dead"| 00000630 20 8c 20 47 25 28 78 63 6f 25 2c 79 63 6f 25 29 | . G%(xco%,yco%)| 00000640 3d 30 3a 6c 65 67 61 6c 3d a3 0d 02 d0 44 e7 20 |=0:legal=....D. | 00000650 6c 65 67 61 6c 20 8c 20 e6 20 30 2c 63 6f 6c 6f |legal . . 0,colo| 00000660 75 72 25 28 74 75 72 6e 25 29 3a c8 8f 20 c8 90 |ur%(turn%):.. ..| 00000670 20 a4 78 73 63 72 28 78 63 6f 25 29 2c a4 79 73 | .xscr(xco%),.ys| 00000680 63 72 28 79 63 6f 25 29 2c 73 69 7a 65 25 0d 02 |cr(yco%),size%..| 00000690 da 05 e1 0d 02 e4 04 0d 02 ee 10 dd 20 f2 64 72 |............ .dr| 000006a0 61 77 62 6f 61 72 64 0d 02 f8 0b fb 20 31 33 35 |awboard..... 135| 000006b0 3a db 0d 03 02 2b 6f 72 69 67 69 6e 78 3d 36 34 |:....+originx=64| 000006c0 3a 6f 72 69 67 69 6e 79 3d 38 30 3a 73 74 65 70 |:originy=80:step| 000006d0 78 3d 34 38 3a 73 74 65 70 79 3d 34 38 0d 03 0c |x=48:stepy=48...| 000006e0 1e fb 20 31 33 32 3a f1 8a 36 35 2c 32 37 29 22 |.. 132:..65,27)"| 000006f0 20 44 72 61 77 66 69 6c 65 20 22 0d 03 16 1e fb | Drawfile ".....| 00000700 20 31 32 39 3a f1 8a 36 35 2c 32 35 29 22 20 53 | 129:..65,25)" S| 00000710 61 76 65 47 61 6d 65 20 22 0d 03 20 1e fb 20 31 |aveGame ".. .. 1| 00000720 33 33 3a f1 8a 36 35 2c 32 33 29 22 20 4c 6f 61 |33:..65,23)" Loa| 00000730 64 47 61 6d 65 20 22 0d 03 2a 26 fb 20 31 33 30 |dGame "..*&. 130| 00000740 3a fb 20 37 3a f1 8a 36 35 2c 32 39 29 22 20 42 |:. 7:..65,29)" B| 00000750 61 63 6b 73 74 65 70 20 22 3a fb 20 30 0d 03 34 |ackstep ":. 0..4| 00000760 26 fb 20 31 33 34 3a fb 20 37 3a f1 8a 36 35 2c |&. 134:. 7:..65,| 00000770 32 31 29 22 20 43 6c 65 61 72 20 20 20 20 22 3a |21)" Clear ":| 00000780 fb 20 30 0d 03 3e 04 0d 03 48 07 e6 20 33 0d 03 |. 0..>...H.. 3..| 00000790 52 37 c8 93 20 c8 90 20 6f 72 69 67 69 6e 78 2d |R7.. .. originx-| 000007a0 73 74 65 70 78 2c 6f 72 69 67 69 6e 79 2d 73 74 |stepx,originy-st| 000007b0 65 70 79 2c 32 30 2a 73 74 65 70 78 2c 32 30 2a |epy,20*stepx,20*| 000007c0 73 74 65 70 79 0d 03 5c 3b c8 93 20 c8 90 20 6f |stepy..\;.. .. o| 000007d0 72 69 67 69 6e 78 2b 32 30 2a 73 74 65 70 78 2c |riginx+20*stepx,| 000007e0 6f 72 69 67 69 6e 79 2b 31 36 2a 73 74 65 70 79 |originy+16*stepy| 000007f0 2c 32 2a 73 74 65 70 78 2c 33 2a 73 74 65 70 79 |,2*stepx,3*stepy| 00000800 0d 03 66 3a c8 93 20 c8 90 20 6f 72 69 67 69 6e |..f:.. .. origin| 00000810 78 2b 32 30 2a 73 74 65 70 78 2c 6f 72 69 67 69 |x+20*stepx,origi| 00000820 6e 79 2b 38 2a 73 74 65 70 79 2c 34 2a 73 74 65 |ny+8*stepy,4*ste| 00000830 70 78 2c 36 2a 73 74 65 70 79 0d 03 70 17 fb 20 |px,6*stepy..p.. | 00000840 31 33 31 3a f1 8a 36 35 2c 31 29 22 4e 65 78 74 |131:..65,1)"Next| 00000850 22 0d 03 7a 30 e6 20 63 6f 6c 6f 75 72 25 28 31 |"..z0. colour%(1| 00000860 29 3a c8 8f 20 c8 90 20 a4 78 73 63 72 28 32 33 |):.. .. .xscr(23| 00000870 29 2c a4 79 73 63 72 28 31 30 29 2c 73 69 7a 65 |),.yscr(10),size| 00000880 25 0d 03 84 30 e6 20 63 6f 6c 6f 75 72 25 28 32 |%...0. colour%(2| 00000890 29 3a c8 8f 20 c8 90 20 a4 78 73 63 72 28 32 33 |):.. .. .xscr(23| 000008a0 29 2c a4 79 73 63 72 28 31 32 29 2c 73 69 7a 65 |),.yscr(12),size| 000008b0 25 0d 03 8e 1b fb 20 31 33 31 3a f1 8a 36 35 2c |%..... 131:..65,| 000008c0 39 29 22 43 61 70 74 75 72 65 64 22 0d 03 98 07 |9)"Captured"....| 000008d0 e6 20 37 0d 03 a2 04 0d 03 ac 2b e3 20 78 25 3d |. 7.......+. x%=| 000008e0 6f 72 69 67 69 6e 78 20 b8 20 6f 72 69 67 69 6e |originx . origin| 000008f0 78 2b 31 38 2a 73 74 65 70 78 20 88 20 73 74 65 |x+18*stepx . ste| 00000900 70 78 0d 03 b6 26 ec 20 78 25 2c 6f 72 69 67 69 |px...&. x%,origi| 00000910 6e 79 3a df 20 78 25 2c 6f 72 69 67 69 6e 79 2b |ny:. x%,originy+| 00000920 31 38 2a 73 74 65 70 79 0d 03 c0 08 ed 20 78 25 |18*stepy..... x%| 00000930 0d 03 ca 04 0d 03 d4 2b e3 20 79 25 3d 6f 72 69 |.......+. y%=ori| 00000940 67 69 6e 79 20 b8 20 6f 72 69 67 69 6e 79 2b 31 |giny . originy+1| 00000950 38 2a 73 74 65 70 79 20 88 20 73 74 65 70 79 0d |8*stepy . stepy.| 00000960 03 de 26 ec 20 6f 72 69 67 69 6e 78 2c 79 25 3a |..&. originx,y%:| 00000970 df 20 6f 72 69 67 69 6e 78 2b 31 38 2a 73 74 65 |. originx+18*ste| 00000980 70 78 2c 79 25 0d 03 e8 08 ed 20 79 25 0d 03 f2 |px,y%..... y%...| 00000990 04 0d 03 fc 35 e3 20 78 25 3d 6f 72 69 67 69 6e |....5. x%=origin| 000009a0 78 2b 73 74 65 70 78 2a 33 20 b8 20 6f 72 69 67 |x+stepx*3 . orig| 000009b0 69 6e 78 2b 73 74 65 70 78 2a 31 35 20 88 20 73 |inx+stepx*15 . s| 000009c0 74 65 70 78 2a 36 0d 04 06 35 e3 20 79 25 3d 6f |tepx*6...5. y%=o| 000009d0 72 69 67 69 6e 79 2b 73 74 65 70 79 2a 33 20 b8 |riginy+stepy*3 .| 000009e0 20 6f 72 69 67 69 6e 79 2b 73 74 65 70 79 2a 31 | originy+stepy*1| 000009f0 35 20 88 20 73 74 65 70 79 2a 36 0d 04 10 11 c8 |5 . stepy*6.....| 00000a00 8f 20 c8 90 20 78 25 2c 79 25 2c 36 0d 04 1a 07 |. .. x%,y%,6....| 00000a10 ed 3a ed 0d 04 24 05 e1 0d 04 2e 04 0d 04 38 24 |.:...$........8$| 00000a20 dd 20 a4 78 73 63 72 28 78 63 6f 25 29 3d 78 63 |. .xscr(xco%)=xc| 00000a30 6f 25 2a 73 74 65 70 78 2b 6f 72 69 67 69 6e 78 |o%*stepx+originx| 00000a40 0d 04 42 04 0d 04 4c 24 dd 20 a4 79 73 63 72 28 |..B...L$. .yscr(| 00000a50 79 63 6f 25 29 3d 79 63 6f 25 2a 73 74 65 70 79 |yco%)=yco%*stepy| 00000a60 2b 6f 72 69 67 69 6e 79 0d 04 56 04 0d 04 60 30 |+originy..V...`0| 00000a70 dd 20 a4 78 63 6f 28 78 73 63 72 29 3d a8 28 28 |. .xco(xscr)=.((| 00000a80 78 73 63 72 2d 6f 72 69 67 69 6e 78 2b 73 74 65 |xscr-originx+ste| 00000a90 70 78 2f 32 29 2f 73 74 65 70 78 29 0d 04 6a 04 |px/2)/stepx)..j.| 00000aa0 0d 04 74 30 dd 20 a4 79 63 6f 28 79 73 63 72 29 |..t0. .yco(yscr)| 00000ab0 3d a8 28 28 79 73 63 72 2d 6f 72 69 67 69 6e 79 |=.((yscr-originy| 00000ac0 2b 73 74 65 70 79 2f 32 29 2f 73 74 65 70 79 29 |+stepy/2)/stepy)| 00000ad0 0d 04 7e 04 0d 04 88 1b dd 20 a4 74 65 73 74 6c |..~...... .testl| 00000ae0 69 66 65 28 78 78 2c 79 79 2c 64 69 72 24 29 0d |ife(xx,yy,dir$).| 00000af0 04 92 09 4c 25 2b 3d 31 0d 04 9c 59 e7 20 64 69 |...L%+=1...Y. di| 00000b00 72 24 3c 3e 22 64 6f 77 6e 22 20 80 20 a4 75 70 |r$<>"down" . .up| 00000b10 28 78 78 2c 79 79 29 3d 22 73 61 6d 65 22 20 8c |(xx,yy)="same" .| 00000b20 20 e7 20 a4 74 65 73 74 6c 69 66 65 28 78 78 2c | . .testlife(xx,| 00000b30 79 79 2b 31 2c 22 75 70 22 29 3d 22 6f 6b 61 79 |yy+1,"up")="okay| 00000b40 22 20 8c 20 4c 25 2d 3d 31 3a 3d 22 6f 6b 61 79 |" . L%-=1:="okay| 00000b50 22 0d 04 a6 28 e7 20 a4 75 70 28 78 78 2c 79 79 |"...(. .up(xx,yy| 00000b60 29 3d 22 63 6c 65 61 72 22 20 8c 20 4c 25 2d 3d |)="clear" . L%-=| 00000b70 31 3a 3d 22 6f 6b 61 79 22 0d 04 b0 04 0d 04 ba |1:="okay".......| 00000b80 5f e7 20 64 69 72 24 3c 3e 22 6c 65 66 74 22 20 |_. dir$<>"left" | 00000b90 80 20 a4 72 69 67 68 74 28 78 78 2c 79 79 29 3d |. .right(xx,yy)=| 00000ba0 22 73 61 6d 65 22 20 8c 20 e7 20 a4 74 65 73 74 |"same" . . .test| 00000bb0 6c 69 66 65 28 78 78 2b 31 2c 79 79 2c 22 72 69 |life(xx+1,yy,"ri| 00000bc0 67 68 74 22 29 3d 22 6f 6b 61 79 22 20 8c 20 4c |ght")="okay" . L| 00000bd0 25 2d 3d 31 3a 3d 22 6f 6b 61 79 22 0d 04 c4 2b |%-=1:="okay"...+| 00000be0 e7 20 a4 72 69 67 68 74 28 78 78 2c 79 79 29 3d |. .right(xx,yy)=| 00000bf0 22 63 6c 65 61 72 22 20 8c 20 4c 25 2d 3d 31 3a |"clear" . L%-=1:| 00000c00 3d 22 6f 6b 61 79 22 0d 04 ce 04 0d 04 d8 5b e7 |="okay".......[.| 00000c10 20 64 69 72 24 3c 3e 22 75 70 22 20 80 20 a4 64 | dir$<>"up" . .d| 00000c20 6f 77 6e 28 78 78 2c 79 79 29 3d 22 73 61 6d 65 |own(xx,yy)="same| 00000c30 22 20 8c 20 e7 20 a4 74 65 73 74 6c 69 66 65 28 |" . . .testlife(| 00000c40 78 78 2c 79 79 2d 31 2c 22 64 6f 77 6e 22 29 3d |xx,yy-1,"down")=| 00000c50 22 6f 6b 61 79 22 20 8c 20 4c 25 2d 3d 31 3a 3d |"okay" . L%-=1:=| 00000c60 22 6f 6b 61 79 22 0d 04 e2 2a e7 20 a4 64 6f 77 |"okay"...*. .dow| 00000c70 6e 28 78 78 2c 79 79 29 3d 22 63 6c 65 61 72 22 |n(xx,yy)="clear"| 00000c80 20 8c 20 4c 25 2d 3d 31 3a 3d 22 6f 6b 61 79 22 | . L%-=1:="okay"| 00000c90 0d 04 ec 04 0d 04 f6 5e e7 20 64 69 72 24 3c 3e |.......^. dir$<>| 00000ca0 22 72 69 67 68 74 22 20 80 20 a4 6c 65 66 74 28 |"right" . .left(| 00000cb0 78 78 2c 79 79 29 3d 22 73 61 6d 65 22 20 8c 20 |xx,yy)="same" . | 00000cc0 e7 20 a4 74 65 73 74 6c 69 66 65 28 78 78 2d 31 |. .testlife(xx-1| 00000cd0 2c 79 79 2c 22 6c 65 66 74 22 29 3d 22 6f 6b 61 |,yy,"left")="oka| 00000ce0 79 22 20 8c 20 4c 25 2d 3d 31 3a 3d 22 6f 6b 61 |y" . L%-=1:="oka| 00000cf0 79 22 0d 05 00 2a e7 20 a4 6c 65 66 74 28 78 78 |y"...*. .left(xx| 00000d00 2c 79 79 29 3d 22 63 6c 65 61 72 22 20 8c 20 4c |,yy)="clear" . L| 00000d10 25 2d 3d 31 3a 3d 22 6f 6b 61 79 22 0d 05 0a 04 |%-=1:="okay"....| 00000d20 0d 05 14 09 4c 25 2d 3d 31 0d 05 1e 0b 3d 22 64 |....L%-=1....="d| 00000d30 65 61 64 22 0d 05 28 04 0d 05 32 4c f4 20 20 20 |ead"..(...2L. | 00000d40 70 72 6f 62 6c 65 6d 20 77 69 74 68 20 65 6e 64 |problem with end| 00000d50 6c 65 73 73 20 6c 6f 6f 70 20 73 6f 6c 76 65 64 |less loop solved| 00000d60 3f 20 28 6d 6f 73 74 6c 79 29 20 69 74 65 72 61 |? (mostly) itera| 00000d70 74 69 6f 6e 73 20 6c 69 6d 69 74 65 64 20 74 6f |tions limited to| 00000d80 20 32 30 30 0d 05 3c 04 0d 05 46 10 dd 20 a4 75 | 200..<...F.. .u| 00000d90 70 28 78 74 2c 79 74 29 0d 05 50 15 e7 20 79 74 |p(xt,yt)..P.. yt| 00000da0 3d 31 38 20 8c 20 3d 22 65 64 67 65 22 0d 05 5a |=18 . ="edge"..Z| 00000db0 1e e7 20 47 25 28 78 74 2c 79 74 2b 31 29 3d 30 |.. G%(xt,yt+1)=0| 00000dc0 20 8c 20 3d 22 63 6c 65 61 72 22 0d 05 64 32 e7 | . ="clear"..d2.| 00000dd0 20 47 25 28 78 74 2c 79 74 2b 31 29 3c 3e 47 25 | G%(xt,yt+1)<>G%| 00000de0 28 78 74 2c 79 74 29 20 84 20 4c 25 3e 32 30 30 |(xt,yt) . L%>200| 00000df0 20 8c 20 3d 22 62 6c 6f 63 6b 65 64 22 0d 05 6e | . ="blocked"..n| 00000e00 0c 3d 20 22 73 61 6d 65 22 0d 05 78 04 0d 05 82 |.= "same"..x....| 00000e10 13 dd 20 a4 72 69 67 68 74 28 78 74 2c 79 74 29 |.. .right(xt,yt)| 00000e20 0d 05 8c 15 e7 20 78 74 3d 31 38 20 8c 20 3d 22 |..... xt=18 . ="| 00000e30 65 64 67 65 22 0d 05 96 1e e7 20 47 25 28 78 74 |edge"..... G%(xt| 00000e40 2b 31 2c 79 74 29 3d 30 20 8c 20 3d 22 63 6c 65 |+1,yt)=0 . ="cle| 00000e50 61 72 22 0d 05 a0 32 e7 20 47 25 28 78 74 2b 31 |ar"...2. G%(xt+1| 00000e60 2c 79 74 29 3c 3e 47 25 28 78 74 2c 79 74 29 20 |,yt)<>G%(xt,yt) | 00000e70 84 20 4c 25 3e 32 30 30 20 8c 20 3d 22 62 6c 6f |. L%>200 . ="blo| 00000e80 63 6b 65 64 22 0d 05 aa 0c 3d 20 22 73 61 6d 65 |cked"....= "same| 00000e90 22 0d 05 b4 04 0d 05 be 12 dd 20 a4 64 6f 77 6e |"......... .down| 00000ea0 28 78 74 2c 79 74 29 0d 05 c8 14 e7 20 79 74 3d |(xt,yt)..... yt=| 00000eb0 30 20 8c 20 3d 22 65 64 67 65 22 0d 05 d2 1e e7 |0 . ="edge".....| 00000ec0 20 47 25 28 78 74 2c 79 74 2d 31 29 3d 30 20 8c | G%(xt,yt-1)=0 .| 00000ed0 20 3d 22 63 6c 65 61 72 22 0d 05 dc 32 e7 20 47 | ="clear"...2. G| 00000ee0 25 28 78 74 2c 79 74 2d 31 29 3c 3e 47 25 28 78 |%(xt,yt-1)<>G%(x| 00000ef0 74 2c 79 74 29 20 84 20 4c 25 3e 32 30 30 20 8c |t,yt) . L%>200 .| 00000f00 20 3d 22 62 6c 6f 63 6b 65 64 22 0d 05 e6 0c 3d | ="blocked"....=| 00000f10 20 22 73 61 6d 65 22 0d 05 f0 04 0d 05 fa 12 dd | "same".........| 00000f20 20 a4 6c 65 66 74 28 78 74 2c 79 74 29 0d 06 04 | .left(xt,yt)...| 00000f30 14 e7 20 78 74 3d 30 20 8c 20 3d 22 65 64 67 65 |.. xt=0 . ="edge| 00000f40 22 0d 06 0e 1e e7 20 47 25 28 78 74 2d 31 2c 79 |"..... G%(xt-1,y| 00000f50 74 29 3d 30 20 8c 20 3d 22 63 6c 65 61 72 22 0d |t)=0 . ="clear".| 00000f60 06 18 32 e7 20 47 25 28 78 74 2d 31 2c 79 74 29 |..2. G%(xt-1,yt)| 00000f70 3c 3e 47 25 28 78 74 2c 79 74 29 20 84 20 4c 25 |<>G%(xt,yt) . L%| 00000f80 3e 32 30 30 20 8c 20 3d 22 62 6c 6f 63 6b 65 64 |>200 . ="blocked| 00000f90 22 0d 06 22 0c 3d 20 22 73 61 6d 65 22 0d 06 2c |"..".= "same"..,| 00000fa0 04 0d 06 36 1d dd 20 f2 74 65 73 74 63 61 70 74 |...6.. .testcapt| 00000fb0 75 72 65 28 78 63 6f 25 2c 79 63 6f 25 29 0d 06 |ure(xco%,yco%)..| 00000fc0 40 0f 63 61 70 74 75 72 65 64 25 3d 30 0d 06 4a |@.captured%=0..J| 00000fd0 8d e7 20 a4 75 70 28 78 63 6f 25 2c 79 63 6f 25 |.. .up(xco%,yco%| 00000fe0 29 3d 22 62 6c 6f 63 6b 65 64 22 20 8c 20 e7 20 |)="blocked" . . | 00000ff0 a4 74 65 73 74 6c 69 66 65 28 78 63 6f 25 2c 79 |.testlife(xco%,y| 00001000 63 6f 25 2b 31 2c 22 63 65 6e 74 72 65 22 29 3d |co%+1,"centre")=| 00001010 22 64 65 61 64 22 20 8c 20 74 61 6b 65 25 3d 47 |"dead" . take%=G| 00001020 25 28 78 63 6f 25 2c 79 63 6f 25 2b 31 29 3a f2 |%(xco%,yco%+1):.| 00001030 63 61 70 74 75 72 65 28 78 63 6f 25 2c 79 63 6f |capture(xco%,yco| 00001040 25 2b 31 29 3a 6b 6f 78 25 3d 78 63 6f 25 3a 6b |%+1):kox%=xco%:k| 00001050 6f 79 25 3d 79 63 6f 25 2b 31 0d 06 54 04 0d 06 |oy%=yco%+1..T...| 00001060 5e 90 e7 20 a4 72 69 67 68 74 28 78 63 6f 25 2c |^.. .right(xco%,| 00001070 79 63 6f 25 29 3d 22 62 6c 6f 63 6b 65 64 22 20 |yco%)="blocked" | 00001080 8c 20 e7 20 a4 74 65 73 74 6c 69 66 65 28 78 63 |. . .testlife(xc| 00001090 6f 25 2b 31 2c 79 63 6f 25 2c 22 63 65 6e 74 72 |o%+1,yco%,"centr| 000010a0 65 22 29 3d 22 64 65 61 64 22 20 8c 20 74 61 6b |e")="dead" . tak| 000010b0 65 25 3d 47 25 28 78 63 6f 25 2b 31 2c 79 63 6f |e%=G%(xco%+1,yco| 000010c0 25 29 3a f2 63 61 70 74 75 72 65 28 78 63 6f 25 |%):.capture(xco%| 000010d0 2b 31 2c 79 63 6f 25 29 3a 6b 6f 78 25 3d 78 63 |+1,yco%):kox%=xc| 000010e0 6f 25 2b 31 3a 6b 6f 79 25 3d 79 63 6f 25 0d 06 |o%+1:koy%=yco%..| 000010f0 68 04 0d 06 72 8f e7 20 a4 64 6f 77 6e 28 78 63 |h...r.. .down(xc| 00001100 6f 25 2c 79 63 6f 25 29 3d 22 62 6c 6f 63 6b 65 |o%,yco%)="blocke| 00001110 64 22 20 8c 20 e7 20 a4 74 65 73 74 6c 69 66 65 |d" . . .testlife| 00001120 28 78 63 6f 25 2c 79 63 6f 25 2d 31 2c 22 63 65 |(xco%,yco%-1,"ce| 00001130 6e 74 72 65 22 29 3d 22 64 65 61 64 22 20 8c 20 |ntre")="dead" . | 00001140 74 61 6b 65 25 3d 47 25 28 78 63 6f 25 2c 79 63 |take%=G%(xco%,yc| 00001150 6f 25 2d 31 29 3a f2 63 61 70 74 75 72 65 28 78 |o%-1):.capture(x| 00001160 63 6f 25 2c 79 63 6f 25 2d 31 29 3a 6b 6f 78 25 |co%,yco%-1):kox%| 00001170 3d 78 63 6f 25 3a 6b 6f 79 25 3d 79 63 6f 25 2d |=xco%:koy%=yco%-| 00001180 31 0d 06 7c 04 0d 06 86 8f e7 20 a4 6c 65 66 74 |1..|...... .left| 00001190 28 78 63 6f 25 2c 79 63 6f 25 29 3d 22 62 6c 6f |(xco%,yco%)="blo| 000011a0 63 6b 65 64 22 20 8c 20 e7 20 a4 74 65 73 74 6c |cked" . . .testl| 000011b0 69 66 65 28 78 63 6f 25 2d 31 2c 79 63 6f 25 2c |ife(xco%-1,yco%,| 000011c0 22 63 65 6e 74 72 65 22 29 3d 22 64 65 61 64 22 |"centre")="dead"| 000011d0 20 8c 20 74 61 6b 65 25 3d 47 25 28 78 63 6f 25 | . take%=G%(xco%| 000011e0 2d 31 2c 79 63 6f 25 29 3a f2 63 61 70 74 75 72 |-1,yco%):.captur| 000011f0 65 28 78 63 6f 25 2d 31 2c 79 63 6f 25 29 3a 6b |e(xco%-1,yco%):k| 00001200 6f 78 25 3d 78 63 6f 25 2d 31 3a 6b 6f 79 25 3d |ox%=xco%-1:koy%=| 00001210 79 63 6f 25 0d 06 90 04 0d 06 9a 04 0d 06 a4 05 |yco%............| 00001220 e1 0d 06 ae 04 0d 06 b8 17 dd 20 f2 63 61 70 74 |.......... .capt| 00001230 75 72 65 28 78 63 25 2c 79 63 25 29 0d 06 c2 10 |ure(xc%,yc%)....| 00001240 63 61 70 74 75 72 65 64 25 2b 3d 31 0d 06 cc 22 |captured%+=1..."| 00001250 47 25 28 78 63 25 2c 79 63 25 29 3d 30 3a f2 64 |G%(xc%,yc%)=0:.d| 00001260 65 6c 65 74 65 28 78 63 25 2c 79 63 25 29 0d 06 |elete(xc%,yc%)..| 00001270 d6 32 e7 20 a4 63 61 70 74 75 70 28 78 63 25 2c |.2. .captup(xc%,| 00001280 79 63 25 29 3d 74 61 6b 65 25 20 8c 20 f2 63 61 |yc%)=take% . .ca| 00001290 70 74 75 72 65 28 78 63 25 2c 79 63 25 2b 31 29 |pture(xc%,yc%+1)| 000012a0 0d 06 e0 35 e7 20 a4 63 61 70 74 72 69 67 68 74 |...5. .captright| 000012b0 28 78 63 25 2c 79 63 25 29 3d 74 61 6b 65 25 20 |(xc%,yc%)=take% | 000012c0 8c 20 f2 63 61 70 74 75 72 65 28 78 63 25 2b 31 |. .capture(xc%+1| 000012d0 2c 79 63 25 29 0d 06 ea 34 e7 20 a4 63 61 70 74 |,yc%)...4. .capt| 000012e0 64 6f 77 6e 28 78 63 25 2c 79 63 25 29 3d 74 61 |down(xc%,yc%)=ta| 000012f0 6b 65 25 20 8c 20 f2 63 61 70 74 75 72 65 28 78 |ke% . .capture(x| 00001300 63 25 2c 79 63 25 2d 31 29 0d 06 f4 34 e7 20 a4 |c%,yc%-1)...4. .| 00001310 63 61 70 74 6c 65 66 74 28 78 63 25 2c 79 63 25 |captleft(xc%,yc%| 00001320 29 3d 74 61 6b 65 25 20 8c 20 f2 63 61 70 74 75 |)=take% . .captu| 00001330 72 65 28 78 63 25 2d 31 2c 79 63 25 29 0d 06 fe |re(xc%-1,yc%)...| 00001340 04 0d 07 08 05 e1 0d 07 12 04 0d 07 1c 13 dd 20 |............... | 00001350 f2 73 61 76 65 64 72 61 77 66 69 6c 65 0d 07 26 |.savedrawfile..&| 00001360 04 0d 07 30 2b e3 20 78 25 3d 6f 72 69 67 69 6e |...0+. x%=origin| 00001370 78 20 b8 20 6f 72 69 67 69 6e 78 2b 31 38 2a 73 |x . originx+18*s| 00001380 74 65 70 78 20 88 20 73 74 65 70 78 0d 07 3a 1d |tepx . stepx..:.| 00001390 f2 43 44 72 61 77 5f 6f 70 65 6e 70 61 74 68 28 |.CDraw_openpath(| 000013a0 2d 31 2c 30 2c 30 2c 30 29 0d 07 44 33 f2 43 44 |-1,0,0,0)..D3.CD| 000013b0 72 61 77 5f 65 78 74 65 6e 64 70 61 74 68 28 22 |raw_extendpath("| 000013c0 4d 4f 56 45 20 22 2b c3 28 78 25 29 2b 22 20 22 |MOVE "+.(x%)+" "| 000013d0 2b c3 28 6f 72 69 67 69 6e 79 29 29 0d 07 4e 3c |+.(originy))..N<| 000013e0 f2 43 44 72 61 77 5f 65 78 74 65 6e 64 70 61 74 |.CDraw_extendpat| 000013f0 68 28 22 44 52 41 57 20 22 2b c3 28 78 25 29 2b |h("DRAW "+.(x%)+| 00001400 22 20 22 2b c3 28 6f 72 69 67 69 6e 79 2b 31 38 |" "+.(originy+18| 00001410 2a 73 74 65 70 79 29 29 0d 07 58 14 f2 43 44 72 |*stepy))..X..CDr| 00001420 61 77 5f 63 6c 6f 73 65 70 61 74 68 0d 07 62 08 |aw_closepath..b.| 00001430 ed 20 78 25 0d 07 6c 04 0d 07 76 2b e3 20 79 25 |. x%..l...v+. y%| 00001440 3d 6f 72 69 67 69 6e 79 20 b8 20 6f 72 69 67 69 |=originy . origi| 00001450 6e 79 2b 31 38 2a 73 74 65 70 79 20 88 20 73 74 |ny+18*stepy . st| 00001460 65 70 79 0d 07 80 1d f2 43 44 72 61 77 5f 6f 70 |epy.....CDraw_op| 00001470 65 6e 70 61 74 68 28 2d 31 2c 30 2c 30 2c 30 29 |enpath(-1,0,0,0)| 00001480 0d 07 8a 33 f2 43 44 72 61 77 5f 65 78 74 65 6e |...3.CDraw_exten| 00001490 64 70 61 74 68 28 22 4d 4f 56 45 20 22 2b c3 28 |dpath("MOVE "+.(| 000014a0 6f 72 69 67 69 6e 78 29 2b 22 20 22 2b c3 28 79 |originx)+" "+.(y| 000014b0 25 29 29 0d 07 94 3c f2 43 44 72 61 77 5f 65 78 |%))...<.CDraw_ex| 000014c0 74 65 6e 64 70 61 74 68 28 22 44 52 41 57 20 22 |tendpath("DRAW "| 000014d0 2b c3 28 6f 72 69 67 69 6e 78 2b 31 38 2a 73 74 |+.(originx+18*st| 000014e0 65 70 78 29 2b 22 20 22 2b c3 28 79 25 29 29 0d |epx)+" "+.(y%)).| 000014f0 07 9e 14 f2 43 44 72 61 77 5f 63 6c 6f 73 65 70 |....CDraw_closep| 00001500 61 74 68 0d 07 a8 08 ed 20 79 25 0d 07 b2 04 0d |ath..... y%.....| 00001510 07 bc 37 e3 20 78 64 6f 74 3d 6f 72 69 67 69 6e |..7. xdot=origin| 00001520 78 2b 73 74 65 70 78 2a 33 20 b8 20 6f 72 69 67 |x+stepx*3 . orig| 00001530 69 6e 78 2b 73 74 65 70 78 2a 31 35 20 88 20 73 |inx+stepx*15 . s| 00001540 74 65 70 78 2a 36 0d 07 c6 37 e3 20 79 64 6f 74 |tepx*6...7. ydot| 00001550 3d 6f 72 69 67 69 6e 79 2b 73 74 65 70 79 2a 33 |=originy+stepy*3| 00001560 20 b8 20 6f 72 69 67 69 6e 79 2b 73 74 65 70 79 | . originy+stepy| 00001570 2a 31 35 20 88 20 73 74 65 70 79 2a 36 0d 07 d0 |*15 . stepy*6...| 00001580 26 f2 43 44 72 61 77 5f 63 69 72 63 6c 65 28 78 |&.CDraw_circle(x| 00001590 64 6f 74 2c 79 64 6f 74 2c 33 2c 30 2c 30 2c 30 |dot,ydot,3,0,0,0| 000015a0 2c 30 29 0d 07 da 07 ed 3a ed 0d 07 e4 04 0d 07 |,0).....:.......| 000015b0 ee 1d e3 20 78 6e 25 3d 30 20 b8 20 31 38 3a e3 |... xn%=0 . 18:.| 000015c0 20 79 6e 25 3d 30 20 b8 20 31 38 0d 07 f8 48 e7 | yn%=0 . 18...H.| 000015d0 20 47 25 28 78 6e 25 2c 79 6e 25 29 3d 31 20 8c | G%(xn%,yn%)=1 .| 000015e0 20 f2 43 44 72 61 77 5f 63 69 72 63 6c 65 28 a4 | .CDraw_circle(.| 000015f0 78 73 63 72 28 78 6e 25 29 2c a4 79 73 63 72 28 |xscr(xn%),.yscr(| 00001600 79 6e 25 29 2c 73 69 7a 65 25 2c 30 2c 30 2c 31 |yn%),size%,0,0,1| 00001610 2c 30 29 0d 08 02 4a e7 20 47 25 28 78 6e 25 2c |,0)...J. G%(xn%,| 00001620 79 6e 25 29 3d 32 20 8c 20 f2 43 44 72 61 77 5f |yn%)=2 . .CDraw_| 00001630 63 69 72 63 6c 65 28 a4 78 73 63 72 28 78 6e 25 |circle(.xscr(xn%| 00001640 29 2c a4 79 73 63 72 28 79 6e 25 29 2c 73 69 7a |),.yscr(yn%),siz| 00001650 65 25 2c 32 35 35 2c 30 2c 31 2c 30 29 0d 08 0c |e%,255,0,1,0)...| 00001660 07 ed 3a ed 0d 08 16 1e f2 43 44 72 61 77 5f 73 |..:......CDraw_s| 00001670 61 76 65 66 69 6c 65 28 22 47 6f 42 6f 61 72 64 |avefile("GoBoard| 00001680 22 29 0d 08 20 05 e1 0d 08 2a 04 0d 08 34 14 dd |").. ....*...4..| 00001690 20 a4 63 61 70 74 75 70 28 78 74 2c 79 74 29 0d | .captup(xt,yt).| 000016a0 08 3e 1f e7 20 79 74 3d 31 38 20 8c 20 3d 30 20 |.>.. yt=18 . =0 | 000016b0 8b 20 3d 47 25 28 78 74 2c 79 74 2b 31 29 0d 08 |. =G%(xt,yt+1)..| 000016c0 48 04 0d 08 52 17 dd 20 a4 63 61 70 74 72 69 67 |H...R.. .captrig| 000016d0 68 74 28 78 74 2c 79 74 29 0d 08 5c 1f e7 20 78 |ht(xt,yt)..\.. x| 000016e0 74 3d 31 38 20 8c 20 3d 30 20 8b 20 3d 47 25 28 |t=18 . =0 . =G%(| 000016f0 78 74 2b 31 2c 79 74 29 0d 08 66 04 0d 08 70 16 |xt+1,yt)..f...p.| 00001700 dd 20 a4 63 61 70 74 64 6f 77 6e 28 78 74 2c 79 |. .captdown(xt,y| 00001710 74 29 0d 08 7a 1e e7 20 79 74 3d 30 20 8c 20 3d |t)..z.. yt=0 . =| 00001720 30 20 8b 20 3d 47 25 28 78 74 2c 79 74 2d 31 29 |0 . =G%(xt,yt-1)| 00001730 0d 08 84 04 0d 08 8e 16 dd 20 a4 63 61 70 74 6c |......... .captl| 00001740 65 66 74 28 78 74 2c 79 74 29 0d 08 98 1e e7 20 |eft(xt,yt)..... | 00001750 78 74 3d 30 20 8c 20 3d 30 20 8b 20 3d 47 25 28 |xt=0 . =0 . =G%(| 00001760 78 74 2d 31 2c 79 74 29 0d 08 a2 04 0d 08 ac 16 |xt-1,yt)........| 00001770 dd 20 f2 64 65 6c 65 74 65 28 78 64 25 2c 79 64 |. .delete(xd%,yd| 00001780 25 29 0d 08 b6 07 e6 20 33 0d 08 c0 25 c8 8f 20 |%)..... 3...%.. | 00001790 c8 90 20 a4 78 73 63 72 28 78 64 25 29 2c a4 79 |.. .xscr(xd%),.y| 000017a0 73 63 72 28 79 64 25 29 2c 73 69 7a 65 25 0d 08 |scr(yd%),size%..| 000017b0 ca 07 e6 20 37 0d 08 d4 1b ec 20 a4 78 73 63 72 |... 7..... .xscr| 000017c0 28 78 64 25 29 2c a4 79 73 63 72 28 79 63 25 29 |(xd%),.yscr(yc%)| 000017d0 0d 08 de 2c e7 20 78 64 25 3c 31 38 20 8c 20 df |...,. xd%<18 . .| 000017e0 20 a4 78 73 63 72 28 78 64 25 29 2b 73 69 7a 65 | .xscr(xd%)+size| 000017f0 25 2c a4 79 73 63 72 28 79 63 25 29 0d 08 e8 1b |%,.yscr(yc%)....| 00001800 ec 20 a4 78 73 63 72 28 78 64 25 29 2c a4 79 73 |. .xscr(xd%),.ys| 00001810 63 72 28 79 63 25 29 0d 08 f2 2c e7 20 78 64 25 |cr(yc%)...,. xd%| 00001820 3c 3e 30 20 8c 20 df 20 a4 78 73 63 72 28 78 64 |<>0 . . .xscr(xd| 00001830 25 29 2d 73 69 7a 65 25 2c a4 79 73 63 72 28 79 |%)-size%,.yscr(y| 00001840 63 25 29 0d 08 fc 1b ec 20 a4 78 73 63 72 28 78 |c%)..... .xscr(x| 00001850 64 25 29 2c a4 79 73 63 72 28 79 63 25 29 0d 09 |d%),.yscr(yc%)..| 00001860 06 2c e7 20 79 64 25 3c 31 38 20 8c 20 df 20 a4 |.,. yd%<18 . . .| 00001870 78 73 63 72 28 78 64 25 29 2c a4 79 73 63 72 28 |xscr(xd%),.yscr(| 00001880 79 63 25 29 2b 73 69 7a 65 25 0d 09 10 1b ec 20 |yc%)+size%..... | 00001890 a4 78 73 63 72 28 78 64 25 29 2c a4 79 73 63 72 |.xscr(xd%),.yscr| 000018a0 28 79 63 25 29 0d 09 1a 2c e7 20 79 64 25 3c 3e |(yc%)...,. yd%<>| 000018b0 30 20 8c 20 df 20 a4 78 73 63 72 28 78 64 25 29 |0 . . .xscr(xd%)| 000018c0 2c a4 79 73 63 72 28 79 63 25 29 2d 73 69 7a 65 |,.yscr(yc%)-size| 000018d0 25 0d 09 24 04 0d 09 2e 3f e7 20 28 78 64 25 2d |%..$....?. (xd%-| 000018e0 33 29 83 36 3d 30 20 80 20 28 79 64 25 2d 33 29 |3).6=0 . (yd%-3)| 000018f0 83 36 3d 30 20 8c 20 c8 8f 20 c8 90 20 a4 78 73 |.6=0 . .. .. .xs| 00001900 63 72 28 78 64 25 29 2c a4 79 73 63 72 28 79 64 |cr(xd%),.yscr(yd| 00001910 25 29 2c 36 0d 09 38 05 e1 0d 09 42 04 0d 09 4c |%),6..8....B...L| 00001920 10 dd 20 f2 73 61 76 65 6d 6f 76 65 73 0d 09 56 |.. .savemoves..V| 00001930 11 46 3d ae 28 22 47 6f 46 69 6c 65 22 29 0d 09 |.F=.("GoFile")..| 00001940 60 04 0d 09 6a 08 4e 25 3d 31 0d 09 74 11 c8 95 |`...j.N%=1..t...| 00001950 20 4e 25 3c 3d 73 61 76 65 6e 25 0d 09 7e 1d f1 | N%<=saven%..~..| 00001960 23 46 2c 73 61 76 65 78 25 28 4e 25 29 2c 73 61 |#F,savex%(N%),sa| 00001970 76 65 79 25 28 4e 25 29 0d 09 88 09 4e 25 2b 3d |vey%(N%)....N%+=| 00001980 31 0d 09 92 05 ce 0d 09 9c 04 0d 09 a6 07 d9 23 |1..............#| 00001990 46 0d 09 b0 05 e1 0d 09 ba 04 0d 09 c4 10 dd 20 |F.............. | 000019a0 f2 6c 6f 61 64 6d 6f 76 65 73 0d 09 ce 0e f2 63 |.loadmoves.....c| 000019b0 6c 65 61 72 67 72 69 64 0d 09 d8 04 0d 09 e2 11 |leargrid........| 000019c0 46 3d 8e 28 22 47 6f 46 69 6c 65 22 29 0d 09 ec |F=.("GoFile")...| 000019d0 0b 6d 6f 76 65 25 3d 30 0d 09 f6 12 70 72 69 73 |.move%=0....pris| 000019e0 6f 6e 65 72 73 25 28 29 3d 30 0d 0a 00 0c c8 95 |oners%()=0......| 000019f0 20 ac 20 c5 23 46 0d 0a 0a 0c 6d 6f 76 65 25 2b | . .#F....move%+| 00001a00 3d 31 0d 0a 14 23 e8 23 46 2c 73 61 76 65 78 25 |=1...#.#F,savex%| 00001a10 28 6d 6f 76 65 25 29 2c 73 61 76 65 79 25 28 6d |(move%),savey%(m| 00001a20 6f 76 65 25 29 0d 0a 1e 05 ce 0d 0a 28 07 d9 23 |ove%).......(..#| 00001a30 46 0d 0a 32 12 f2 72 65 70 6c 61 79 28 6d 6f 76 |F..2..replay(mov| 00001a40 65 25 29 0d 0a 3c 1a 74 75 72 6e 25 3d 28 73 61 |e%)..<.turn%=(sa| 00001a50 76 65 6e 25 2b 31 29 83 20 32 20 2b 31 0d 0a 46 |ven%+1). 2 +1..F| 00001a60 36 e6 20 30 2c 63 6f 6c 6f 75 72 25 28 74 75 72 |6. 0,colour%(tur| 00001a70 6e 25 29 3a c8 8f 20 c8 90 20 a4 78 73 63 72 28 |n%):.. .. .xscr(| 00001a80 32 31 29 2c a4 79 73 63 72 28 31 37 29 2c 73 69 |21),.yscr(17),si| 00001a90 7a 65 25 0d 0a 50 05 e1 0d 0a 5a 04 0d 0a 64 10 |ze%..P....Z...d.| 00001aa0 dd 20 f2 63 6c 65 61 72 67 72 69 64 0d 0a 6e 05 |. .cleargrid..n.| 00001ab0 db 0d 0a 78 0e f2 64 72 61 77 62 6f 61 72 64 0d |...x..drawboard.| 00001ac0 0a 82 27 e3 20 78 25 3d 30 20 b8 20 31 38 3a e3 |..'. x%=0 . 18:.| 00001ad0 20 79 25 3d 30 20 b8 20 31 38 3a 47 25 28 78 25 | y%=0 . 18:G%(x%| 00001ae0 2c 79 25 29 3d 30 0d 0a 8c 07 ed 3a ed 0d 0a 96 |,y%)=0.....:....| 00001af0 05 e1 0d 0a a0 04 0d 0a aa 14 dd 20 f2 72 65 70 |........... .rep| 00001b00 6c 61 79 28 6d 6f 76 65 25 29 0d 0a b4 10 73 61 |lay(move%)....sa| 00001b10 76 65 6e 25 3d 6d 6f 76 65 25 0d 0a be 08 4d 25 |ven%=move%....M%| 00001b20 3d 31 0d 0a c8 3a c8 95 20 4d 25 3c 6d 6f 76 65 |=1...:.. M%<move| 00001b30 25 3a f2 6d 6f 76 65 28 73 61 76 65 78 25 28 4d |%:.move(savex%(M| 00001b40 25 29 2c 73 61 76 65 79 25 28 4d 25 29 2c 28 28 |%),savey%(M%),((| 00001b50 4d 25 2b 31 29 83 20 32 29 2b 31 29 0d 0a d2 09 |M%+1). 2)+1)....| 00001b60 4d 25 2b 3d 31 0d 0a dc 05 ce 0d 0a e6 11 f1 8a |M%+=1...........| 00001b70 36 35 2c 32 29 73 61 76 65 6e 25 0d 0a f0 21 f4 |65,2)saven%...!.| 00001b80 20 54 49 4d 45 3d 30 3a 52 45 50 45 41 54 20 55 | TIME=0:REPEAT U| 00001b90 4e 54 49 4c 20 54 49 4d 45 3e 35 30 0d 0a fa 05 |NTIL TIME>50....| 00001ba0 e1 0d 0b 04 04 0d 0b 0e 0f dd 20 f2 62 61 63 6b |.......... .back| 00001bb0 73 74 65 70 0d 0b 18 12 e7 20 73 61 76 65 6e 25 |step..... saven%| 00001bc0 3c 32 20 8c 20 e1 0d 0b 22 0e f2 63 6c 65 61 72 |<2 . ..."..clear| 00001bd0 67 72 69 64 0d 0b 2c 12 70 72 69 73 6f 6e 65 72 |grid..,.prisoner| 00001be0 73 25 28 29 3d 30 0d 0b 36 12 6d 6f 76 65 25 3d |s%()=0..6.move%=| 00001bf0 73 61 76 65 6e 25 2d 31 0d 0b 40 12 f2 72 65 70 |saven%-1..@..rep| 00001c00 6c 61 79 28 6d 6f 76 65 25 29 0d 0b 4a 1a 74 75 |lay(move%)..J.tu| 00001c10 72 6e 25 3d 28 73 61 76 65 6e 25 2b 31 29 83 20 |rn%=(saven%+1). | 00001c20 32 20 2b 31 0d 0b 54 36 e6 20 30 2c 63 6f 6c 6f |2 +1..T6. 0,colo| 00001c30 75 72 25 28 74 75 72 6e 25 29 3a c8 8f 20 c8 90 |ur%(turn%):.. ..| 00001c40 20 a4 78 73 63 72 28 32 31 29 2c a4 79 73 63 72 | .xscr(21),.yscr| 00001c50 28 31 37 29 2c 73 69 7a 65 25 0d 0b 5e 05 e1 0d |(17),size%..^...| 00001c60 0b 68 04 0d 0b 72 0c dd 20 f2 63 6c 65 61 72 0d |.h...r.. .clear.| 00001c70 0b 7c 0e f2 63 6c 65 61 72 67 72 69 64 0d 0b 86 |.|..cleargrid...| 00001c80 12 70 72 69 73 6f 6e 65 72 73 25 28 29 3d 30 0d |.prisoners%()=0.| 00001c90 0b 90 0c 73 61 76 65 6e 25 3d 31 0d 0b 9a 1a 74 |...saven%=1....t| 00001ca0 75 72 6e 25 3d 28 73 61 76 65 6e 25 2b 31 29 83 |urn%=(saven%+1).| 00001cb0 20 32 20 2b 31 0d 0b a4 11 f1 8a 36 35 2c 32 29 | 2 +1......65,2)| 00001cc0 73 61 76 65 6e 25 0d 0b ae 36 e6 20 30 2c 63 6f |saven%...6. 0,co| 00001cd0 6c 6f 75 72 25 28 74 75 72 6e 25 29 3a c8 8f 20 |lour%(turn%):.. | 00001ce0 c8 90 20 a4 78 73 63 72 28 32 31 29 2c a4 79 73 |.. .xscr(21),.ys| 00001cf0 63 72 28 31 37 29 2c 73 69 7a 65 25 0d 0b b8 05 |cr(17),size%....| 00001d00 e1 0d 0b c2 04 0d 0b cc 32 dd f2 43 44 72 61 77 |........2..CDraw| 00001d10 5f 69 6e 69 74 69 61 6c 69 73 65 28 61 70 70 6c |_initialise(appl| 00001d20 5f 6e 61 6d 65 24 2c 20 6e 66 6f 6e 74 73 25 2c |_name$, nfonts%,| 00001d30 20 73 69 7a 65 25 29 0d 0b d6 14 de 20 5f 62 75 | size%)..... _bu| 00001d40 66 66 65 72 25 20 73 69 7a 65 25 0d 0b e0 12 5f |ffer% size%...._| 00001d50 70 74 72 25 3d 5f 62 75 66 66 65 72 25 0d 0b ea |ptr%=_buffer%...| 00001d60 25 24 5f 70 74 72 25 3d c0 22 44 72 61 77 22 2b |%$_ptr%=."Draw"+| 00001d70 bd 32 30 31 2b c4 31 32 2c bd 28 30 29 29 2c 31 |.201+.12,.(0)),1| 00001d80 32 29 0d 0b f4 0d 5f 70 74 72 25 2b 3d 31 32 0d |2)...._ptr%+=12.| 00001d90 0b fe 23 24 5f 70 74 72 25 3d c0 61 70 70 6c 5f |..#$_ptr%=.appl_| 00001da0 6e 61 6d 65 24 2b c4 31 32 2c 22 20 22 29 2c 31 |name$+.12," "),1| 00001db0 32 29 0d 0c 08 37 de 20 43 44 72 61 77 5f 66 6f |2)...7. CDraw_fo| 00001dc0 6e 74 24 28 6e 66 6f 6e 74 73 25 2b 31 29 2c 20 |nt$(nfonts%+1), | 00001dd0 5f 63 6f 6c 6f 75 72 73 25 20 32 30 2a 34 2c 20 |_colours% 20*4, | 00001de0 5f 64 61 73 68 24 28 34 29 0d 0c 12 23 c8 99 22 |_dash$(4)...#.."| 00001df0 57 69 6d 70 5f 52 65 61 64 50 61 6c 65 74 74 65 |Wimp_ReadPalette| 00001e00 22 2c 2c 5f 63 6f 6c 6f 75 72 73 25 0d 0c 1c 1d |",,_colours%....| 00001e10 5f 64 61 73 68 24 28 31 29 3d c4 36 2c bd 30 2b |_dash$(1)=.6,.0+| 00001e20 bd 39 2b bd 30 2b bd 30 29 0d 0c 26 1e 5f 64 61 |.9+.0+.0)..&._da| 00001e30 73 68 24 28 32 29 3d c4 36 2c bd 30 2b bd 31 38 |sh$(2)=.6,.0+.18| 00001e40 2b bd 30 2b bd 30 29 0d 0c 30 1e 5f 64 61 73 68 |+.0+.0)..0._dash| 00001e50 24 28 33 29 3d c4 36 2c bd 30 2b bd 33 36 2b bd |$(3)=.6,.0+.36+.| 00001e60 30 2b bd 30 29 0d 0c 3a 2a 5f 64 61 73 68 24 28 |0+.0)..:*_dash$(| 00001e70 34 29 3d bd 30 2b bd 33 36 2b bd 30 2b bd 30 2b |4)=.0+.36+.0+.0+| 00001e80 c4 33 2c bd 30 2b bd 39 2b bd 30 2b bd 30 29 0d |.3,.0+.9+.0+.0).| 00001e90 0c 44 15 5f 66 6c 61 67 73 25 3d 26 32 30 31 30 |.D._flags%=&2010| 00001ea0 30 30 34 32 0d 0c 4e 10 f2 43 44 72 61 77 5f 72 |0042..N..CDraw_r| 00001eb0 65 73 65 74 0d 0c 58 15 5f 66 6c 61 67 73 25 3d |eset..X._flags%=| 00001ec0 26 32 30 31 30 30 30 34 32 0d 0c 62 14 43 44 72 |&20100042..b.CDr| 00001ed0 61 77 5f 6e 6f 66 69 6c 6c 25 3d 2d 31 0d 0c 6c |aw_nofill%=-1..l| 00001ee0 0c 43 44 72 61 77 25 3d b9 0d 0c 76 05 e1 0d 0c |.CDraw%=...v....| 00001ef0 80 04 0d 0c 8a 11 dd f2 43 44 72 61 77 5f 72 65 |........CDraw_re| 00001f00 73 65 74 0d 0c 94 15 5f 70 74 72 25 3d 5f 62 75 |set...._ptr%=_bu| 00001f10 66 66 65 72 25 2b 34 30 0d 0c 9e 1b 5f 6f 6c 78 |ffer%+40...._olx| 00001f20 25 3d 31 3c 3c 33 30 3a 5f 6f 62 79 25 3d 31 3c |%=1<<30:_oby%=1<| 00001f30 3c 33 30 0d 0c a8 13 5f 6f 72 78 25 3d 30 3a 5f |<30...._orx%=0:_| 00001f40 6f 74 79 25 3d 30 0d 0c b2 05 e1 0d 0c bc 04 0d |oty%=0..........| 00001f50 0c c6 16 dd f2 43 44 72 61 77 5f 66 6f 6e 74 6f |.....CDraw_fonto| 00001f60 62 6a 65 63 74 0d 0c d0 23 e7 20 43 44 72 61 77 |bject...#. CDraw| 00001f70 5f 66 6f 6e 74 24 28 31 29 3c 3e 22 22 20 80 20 |_font$(1)<>"" . | 00001f80 43 44 72 61 77 25 20 8c 0d 0c da 10 ea 20 5f 73 |CDraw% ...... _s| 00001f90 74 61 72 74 25 2c 49 25 0d 0c e4 11 5f 73 74 61 |tart%,I%...._sta| 00001fa0 72 74 25 3d 5f 70 74 72 25 0d 0c ee 10 f2 5f 70 |rt%=_ptr%....._p| 00001fb0 75 74 77 6f 72 64 28 30 29 0d 0c f8 0c 5f 70 74 |utword(0)...._pt| 00001fc0 72 25 2b 3d 34 0d 0d 02 08 49 25 3d 31 0d 0d 0c |r%+=4....I%=1...| 00001fd0 1a c8 95 20 43 44 72 61 77 5f 66 6f 6e 74 24 28 |... CDraw_font$(| 00001fe0 49 25 29 3c 3e 22 22 0d 0d 16 0d 3f 5f 70 74 72 |I%)<>""....?_ptr| 00001ff0 25 3d 49 25 0d 0d 20 1e 24 28 5f 70 74 72 25 2b |%=I%.. .$(_ptr%+| 00002000 31 29 3d 43 44 72 61 77 5f 66 6f 6e 74 24 28 49 |1)=CDraw_font$(I| 00002010 25 29 0d 0d 2a 1d 5f 70 74 72 25 2b 3d a9 43 44 |%)..*._ptr%+=.CD| 00002020 72 61 77 5f 66 6f 6e 74 24 28 49 25 29 2b 32 0d |raw_font$(I%)+2.| 00002030 0d 34 10 3f 28 5f 70 74 72 25 2d 31 29 3d 30 0d |.4.?(_ptr%-1)=0.| 00002040 0d 3e 09 49 25 2b 3d 31 0d 0d 48 05 ce 0d 0d 52 |.>.I%+=1..H....R| 00002050 10 c8 95 5f 70 74 72 25 83 34 3c 3e 30 0d 0d 5c |..._ptr%.4<>0..\| 00002060 0c 3f 5f 70 74 72 25 3d 30 0d 0d 66 0c 5f 70 74 |.?_ptr%=0..f._pt| 00002070 72 25 2b 3d 31 0d 0d 70 05 ce 0d 0d 7a 1b 5f 73 |r%+=1..p....z._s| 00002080 74 61 72 74 25 21 34 3d 5f 70 74 72 25 2d 5f 73 |tart%!4=_ptr%-_s| 00002090 74 61 72 74 25 0d 0d 84 05 cd 0d 0d 8e 05 e1 0d |tart%...........| 000020a0 0d 98 04 0d 0d a2 4b dd f2 43 44 72 61 77 5f 74 |......K..CDraw_t| 000020b0 65 78 74 6f 62 6a 65 63 74 28 66 6f 6e 74 25 2c |extobject(font%,| 000020c0 74 65 78 74 24 2c 70 74 73 69 7a 65 2c 70 74 68 |text$,ptsize,pth| 000020d0 69 67 68 2c 78 6f 72 69 67 69 6e 25 2c 79 6f 72 |igh,xorigin%,yor| 000020e0 69 67 69 6e 25 2c 66 67 25 2c 62 67 25 29 0d 0d |igin%,fg%,bg%)..| 000020f0 ac 0e e7 20 43 44 72 61 77 25 20 8c 0d 0d b6 1d |... CDraw% .....| 00002100 ea 20 5f 73 74 61 72 74 25 2c 6c 78 25 2c 62 79 |. _start%,lx%,by| 00002110 25 2c 72 78 25 2c 74 79 25 0d 0d c0 11 5f 73 74 |%,rx%,ty%...._st| 00002120 61 72 74 25 3d 5f 70 74 72 25 0d 0d ca 10 f2 5f |art%=_ptr%....._| 00002130 70 75 74 77 6f 72 64 28 31 29 0d 0d d4 0d 5f 70 |putword(1)...._p| 00002140 74 72 25 2b 3d 32 30 0d 0d de 10 6c 78 25 3d 78 |tr%+=20....lx%=x| 00002150 6f 72 69 67 69 6e 25 0d 0d e8 1f 62 79 25 3d 79 |origin%....by%=y| 00002160 6f 72 69 67 69 6e 25 2d 34 2b 36 2a 28 66 6f 6e |origin%-4+6*(fon| 00002170 74 25 3c 3e 30 29 0d 0d f2 36 72 78 25 3d 78 6f |t%<>0)...6rx%=xo| 00002180 72 69 67 69 6e 25 2b 70 74 73 69 7a 65 2a 32 2e |rigin%+ptsize*2.| 00002190 35 2a a9 74 65 78 74 24 20 2a 28 31 2b 30 2e 36 |5*.text$ *(1+0.6| 000021a0 2a 28 66 6f 6e 74 25 3c 3e 30 29 29 0d 0d fc 1d |*(font%<>0))....| 000021b0 74 79 25 3d 79 6f 72 69 67 69 6e 25 2b 70 74 68 |ty%=yorigin%+pth| 000021c0 69 67 68 2a 32 2e 35 2b 34 0d 0e 06 2a f2 5f 70 |igh*2.5+4...*._p| 000021d0 75 74 63 6f 6f 72 64 73 28 5f 73 74 61 72 74 25 |utcoords(_start%| 000021e0 2b 38 2c 6c 78 25 2c 62 79 25 2c 72 78 25 2c 74 |+8,lx%,by%,rx%,t| 000021f0 79 25 29 0d 0e 10 1c f2 5f 70 75 74 77 6f 72 64 |y%)....._putword| 00002200 28 a4 5f 63 6f 6c 6f 75 72 28 66 67 25 29 29 0d |(._colour(fg%)).| 00002210 0e 1a 1c f2 5f 70 75 74 77 6f 72 64 28 a4 5f 63 |...._putword(._c| 00002220 6f 6c 6f 75 72 28 62 67 25 29 29 0d 0e 24 14 f2 |olour(bg%))..$..| 00002230 5f 70 75 74 77 6f 72 64 28 66 6f 6e 74 25 29 0d |_putword(font%).| 00002240 0e 2e 19 f2 5f 70 75 74 77 6f 72 64 28 70 74 73 |...._putword(pts| 00002250 69 7a 65 2a 36 34 30 29 0d 0e 38 19 f2 5f 70 75 |ize*640)..8.._pu| 00002260 74 77 6f 72 64 28 70 74 68 69 67 68 2a 36 34 30 |tword(pthigh*640| 00002270 29 0d 0e 42 1a f2 5f 70 75 74 77 6f 72 64 28 78 |)..B.._putword(x| 00002280 6f 72 69 67 69 6e 25 3c 3c 38 29 0d 0e 4c 1a f2 |origin%<<8)..L..| 00002290 5f 70 75 74 77 6f 72 64 28 79 6f 72 69 67 69 6e |_putword(yorigin| 000022a0 25 3c 3c 38 29 0d 0e 56 16 f2 5f 70 75 74 73 74 |%<<8)..V.._putst| 000022b0 72 69 6e 67 28 74 65 78 74 24 29 0d 0e 60 1b 5f |ring(text$)..`._| 000022c0 73 74 61 72 74 25 21 34 3d 5f 70 74 72 25 2d 5f |start%!4=_ptr%-_| 000022d0 73 74 61 72 74 25 0d 0e 6a 21 f2 5f 63 68 65 63 |start%..j!._chec| 000022e0 6b 73 70 61 63 65 28 6c 78 25 2c 62 79 25 2c 72 |kspace(lx%,by%,r| 000022f0 78 25 2c 74 79 25 29 0d 0e 74 05 cd 0d 0e 7e 05 |x%,ty%)..t....~.| 00002300 e1 0d 0e 88 04 0d 0e 92 18 dd f2 43 44 72 61 77 |...........CDraw| 00002310 5f 73 61 76 65 66 69 6c 65 28 66 24 29 0d 0e 9c |_savefile(f$)...| 00002320 0e e7 20 43 44 72 61 77 25 20 8c 0d 0e a6 15 5f |.. CDraw% ....._| 00002330 62 75 66 66 65 72 25 21 32 34 3d 5f 6f 6c 78 25 |buffer%!24=_olx%| 00002340 0d 0e b0 15 5f 62 75 66 66 65 72 25 21 32 38 3d |...._buffer%!28=| 00002350 5f 6f 62 79 25 0d 0e ba 15 5f 62 75 66 66 65 72 |_oby%...._buffer| 00002360 25 21 33 32 3d 5f 6f 72 78 25 0d 0e c4 15 5f 62 |%!32=_orx%...._b| 00002370 75 66 66 65 72 25 21 33 36 3d 5f 6f 74 79 25 0d |uffer%!36=_oty%.| 00002380 0e ce 2a c8 99 22 4f 53 5f 46 69 6c 65 22 2c 31 |..*.."OS_File",1| 00002390 30 2c 66 24 2c 26 41 46 46 2c 2c 5f 62 75 66 66 |0,f$,&AFF,,_buff| 000023a0 65 72 25 2c 5f 70 74 72 25 0d 0e d8 05 cd 0d 0e |er%,_ptr%.......| 000023b0 e2 05 e1 0d 0e ec 04 0d 0e f6 11 dd a4 5f 63 6f |............._co| 000023c0 6c 6f 75 72 28 63 25 29 0d 0f 00 53 e7 20 63 25 |lour(c%)...S. c%| 000023d0 3e 3d 30 20 8c 20 3d 28 28 63 25 80 26 30 33 29 |>=0 . =((c%.&03)| 000023e0 2a 38 30 2b 28 28 63 25 3e 3e 32 29 80 26 30 33 |*80+((c%>>2).&03| 000023f0 29 2a 38 30 2a 26 31 30 30 2b 28 28 63 25 3e 3e |)*80*&100+((c%>>| 00002400 34 29 80 26 30 33 29 2a 38 30 2a 26 31 30 30 30 |4).&03)*80*&1000| 00002410 30 29 3c 3c 38 20 8b 20 3d 2d 31 0d 0f 0a 3e f4 |0)<<8 . =-1...>.| 00002420 20 20 49 46 20 63 25 3e 3d 30 20 54 48 45 4e 20 | IF c%>=0 THEN | 00002430 3d 21 28 5f 63 6f 6c 6f 75 72 73 25 2b 63 25 2a |=!(_colours%+c%*| 00002440 34 29 20 41 4e 44 20 26 46 46 46 46 46 46 30 30 |4) AND &FFFFFF00| 00002450 20 45 4c 53 45 20 3d 2d 31 0d 0f 14 04 0d 0f 1e | ELSE =-1.......| 00002460 22 dd f2 5f 63 68 65 63 6b 73 70 61 63 65 28 6c |".._checkspace(l| 00002470 78 25 2c 62 79 25 2c 72 78 25 2c 74 79 25 29 0d |x%,by%,rx%,ty%).| 00002480 0f 28 1b e7 20 6c 78 25 3c 5f 6f 6c 78 25 20 8c |.(.. lx%<_olx% .| 00002490 20 5f 6f 6c 78 25 3d 6c 78 25 0d 0f 32 1b e7 20 | _olx%=lx%..2.. | 000024a0 62 79 25 3c 5f 6f 62 79 25 20 8c 20 5f 6f 62 79 |by%<_oby% . _oby| 000024b0 25 3d 62 79 25 0d 0f 3c 1b e7 20 72 78 25 3e 5f |%=by%..<.. rx%>_| 000024c0 6f 72 78 25 20 8c 20 5f 6f 72 78 25 3d 72 78 25 |orx% . _orx%=rx%| 000024d0 0d 0f 46 1b e7 20 74 79 25 3e 5f 6f 74 79 25 20 |..F.. ty%>_oty% | 000024e0 8c 20 5f 6f 74 79 25 3d 74 79 25 0d 0f 50 05 e1 |. _oty%=ty%..P..| 000024f0 0d 0f 5a 04 0d 0f 64 12 dd f2 5f 70 75 74 77 6f |..Z...d..._putwo| 00002500 72 64 28 57 25 29 0d 0f 6e 0d 21 5f 70 74 72 25 |rd(W%)..n.!_ptr%| 00002510 3d 57 25 0d 0f 78 0c 5f 70 74 72 25 2b 3d 34 0d |=W%..x._ptr%+=4.| 00002520 0f 82 05 e1 0d 0f 8c 04 0d 0f 96 14 dd f2 5f 70 |.............._p| 00002530 75 74 73 74 72 69 6e 67 28 53 24 29 0d 0f a0 0d |utstring(S$)....| 00002540 24 5f 70 74 72 25 3d 53 24 0d 0f aa 0e 5f 70 74 |$_ptr%=S$...._pt| 00002550 72 25 2b 3d a9 53 24 0d 0f b4 0d f5 3f 5f 70 74 |r%+=.S$.....?_pt| 00002560 72 25 3d 30 0d 0f be 0c 5f 70 74 72 25 2b 3d 31 |r%=0...._ptr%+=1| 00002570 0d 0f c8 0f fd 20 5f 70 74 72 25 83 34 3d 30 0d |..... _ptr%.4=0.| 00002580 0f d2 05 e1 0d 0f dc 04 0d 0f e6 16 dd f2 5f 70 |.............._p| 00002590 75 74 77 6f 72 64 73 28 58 25 2c 59 25 29 0d 0f |utwords(X%,Y%)..| 000025a0 f0 15 58 25 3d 58 25 3c 3c 38 3a 59 25 3d 59 25 |..X%=X%<<8:Y%=Y%| 000025b0 3c 3c 38 0d 0f fa 22 e7 20 58 25 3c 5f 73 74 61 |<<8...". X%<_sta| 000025c0 72 74 25 21 38 20 8c 20 5f 73 74 61 72 74 25 21 |rt%!8 . _start%!| 000025d0 38 20 3d 58 25 0d 10 04 24 e7 20 59 25 3c 5f 73 |8 =X%...$. Y%<_s| 000025e0 74 61 72 74 25 21 31 32 20 8c 20 5f 73 74 61 72 |tart%!12 . _star| 000025f0 74 25 21 31 32 20 3d 59 25 0d 10 0e 24 e7 20 58 |t%!12 =Y%...$. X| 00002600 25 3e 5f 73 74 61 72 74 25 21 31 36 20 8c 20 5f |%>_start%!16 . _| 00002610 73 74 61 72 74 25 21 31 36 20 3d 58 25 0d 10 18 |start%!16 =X%...| 00002620 23 e7 20 59 25 3e 5f 73 74 61 72 74 25 21 32 30 |#. Y%>_start%!20| 00002630 20 8c 20 5f 73 74 61 72 74 25 21 32 30 3d 59 25 | . _start%!20=Y%| 00002640 0d 10 22 1f f2 5f 70 75 74 77 6f 72 64 28 58 25 |..".._putword(X%| 00002650 29 3a f2 5f 70 75 74 77 6f 72 64 28 59 25 29 0d |):._putword(Y%).| 00002660 10 2c 05 e1 0d 10 36 04 0d 10 40 2d dd f2 5f 70 |.,....6...@-.._p| 00002670 75 74 63 6f 6f 72 64 73 28 5f 73 74 61 72 74 25 |utcoords(_start%| 00002680 2c 20 6c 78 25 2c 20 62 79 25 2c 20 72 78 25 2c |, lx%, by%, rx%,| 00002690 20 74 79 25 29 0d 10 4a 14 5f 73 74 61 72 74 25 | ty%)..J._start%| 000026a0 21 30 3d 6c 78 25 3c 3c 38 0d 10 54 14 5f 73 74 |!0=lx%<<8..T._st| 000026b0 61 72 74 25 21 34 3d 62 79 25 3c 3c 38 0d 10 5e |art%!4=by%<<8..^| 000026c0 14 5f 73 74 61 72 74 25 21 38 3d 72 78 25 3c 3c |._start%!8=rx%<<| 000026d0 38 0d 10 68 15 5f 73 74 61 72 74 25 21 31 32 3d |8..h._start%!12=| 000026e0 74 79 25 3c 3c 38 0d 10 72 05 e1 0d 10 7c 04 0d |ty%<<8..r....|..| 000026f0 10 86 37 dd f2 43 44 72 61 77 5f 63 69 72 63 6c |..7..CDraw_circl| 00002700 65 28 58 2c 20 59 2c 20 52 2c 20 66 69 6c 6c 25 |e(X, Y, R, fill%| 00002710 2c 20 63 6f 6c 25 2c 20 74 68 69 63 6b 25 2c 20 |, col%, thick%, | 00002720 64 61 73 68 25 29 0d 10 90 0b ea 20 41 2c 42 2c |dash%)..... A,B,| 00002730 43 0d 10 9a 0a 41 3d 52 2f b6 32 0d 10 a4 0f 42 |C....A=R/.2....B| 00002740 3d 41 2b 52 2f 32 2e 35 34 34 0d 10 ae 0f 43 3d |=A+R/2.544....C=| 00002750 41 2d 52 2f 32 2e 35 34 34 0d 10 b8 2f f2 43 44 |A-R/2.544.../.CD| 00002760 72 61 77 5f 6f 70 65 6e 70 61 74 68 28 66 69 6c |raw_openpath(fil| 00002770 6c 25 2c 20 63 6f 6c 25 2c 20 74 68 69 63 6b 25 |l%, col%, thick%| 00002780 2c 20 64 61 73 68 25 29 0d 10 c2 30 f2 43 44 72 |, dash%)...0.CDr| 00002790 61 77 5f 65 78 74 65 6e 64 70 61 74 68 28 22 4d |aw_extendpath("M| 000027a0 4f 56 45 20 22 2b c3 28 58 2b 41 29 2b 22 20 22 |OVE "+.(X+A)+" "| 000027b0 2b c3 28 59 2d 41 29 29 0d 10 cc 10 f2 5f 70 75 |+.(Y-A))....._pu| 000027c0 74 77 6f 72 64 28 36 29 0d 10 d6 17 f2 5f 70 75 |tword(6)....._pu| 000027d0 74 77 6f 72 64 73 28 58 2b 43 2c 59 2d 42 29 0d |twords(X+C,Y-B).| 000027e0 10 e0 17 f2 5f 70 75 74 77 6f 72 64 73 28 58 2d |...._putwords(X-| 000027f0 43 2c 59 2d 42 29 0d 10 ea 17 f2 5f 70 75 74 77 |C,Y-B)....._putw| 00002800 6f 72 64 73 28 58 2d 41 2c 59 2d 41 29 0d 10 f4 |ords(X-A,Y-A)...| 00002810 10 f2 5f 70 75 74 77 6f 72 64 28 36 29 0d 10 fe |.._putword(6)...| 00002820 17 f2 5f 70 75 74 77 6f 72 64 73 28 58 2d 42 2c |.._putwords(X-B,| 00002830 59 2d 43 29 0d 11 08 17 f2 5f 70 75 74 77 6f 72 |Y-C)....._putwor| 00002840 64 73 28 58 2d 42 2c 59 2b 43 29 0d 11 12 17 f2 |ds(X-B,Y+C).....| 00002850 5f 70 75 74 77 6f 72 64 73 28 58 2d 41 2c 59 2b |_putwords(X-A,Y+| 00002860 41 29 0d 11 1c 10 f2 5f 70 75 74 77 6f 72 64 28 |A)....._putword(| 00002870 36 29 0d 11 26 17 f2 5f 70 75 74 77 6f 72 64 73 |6)..&.._putwords| 00002880 28 58 2d 43 2c 59 2b 42 29 0d 11 30 17 f2 5f 70 |(X-C,Y+B)..0.._p| 00002890 75 74 77 6f 72 64 73 28 58 2b 43 2c 59 2b 42 29 |utwords(X+C,Y+B)| 000028a0 0d 11 3a 17 f2 5f 70 75 74 77 6f 72 64 73 28 58 |..:.._putwords(X| 000028b0 2b 41 2c 59 2b 41 29 0d 11 44 10 f2 5f 70 75 74 |+A,Y+A)..D.._put| 000028c0 77 6f 72 64 28 36 29 0d 11 4e 17 f2 5f 70 75 74 |word(6)..N.._put| 000028d0 77 6f 72 64 73 28 58 2b 42 2c 59 2b 43 29 0d 11 |words(X+B,Y+C)..| 000028e0 58 17 f2 5f 70 75 74 77 6f 72 64 73 28 58 2b 42 |X.._putwords(X+B| 000028f0 2c 59 2d 43 29 0d 11 62 17 f2 5f 70 75 74 77 6f |,Y-C)..b.._putwo| 00002900 72 64 73 28 58 2b 41 2c 59 2d 41 29 0d 11 6c 1e |rds(X+A,Y-A)..l.| 00002910 f2 43 44 72 61 77 5f 65 78 74 65 6e 64 70 61 74 |.CDraw_extendpat| 00002920 68 28 22 43 4c 4f 53 45 22 29 0d 11 76 14 f2 43 |h("CLOSE")..v..C| 00002930 44 72 61 77 5f 63 6c 6f 73 65 70 61 74 68 0d 11 |Draw_closepath..| 00002940 80 05 e1 0d 11 8a 04 0d 11 94 39 dd f2 43 44 72 |..........9..CDr| 00002950 61 77 5f 70 61 74 68 6f 62 6a 65 63 74 28 66 69 |aw_pathobject(fi| 00002960 6c 6c 25 2c 20 63 6f 6c 25 2c 20 74 68 69 63 6b |ll%, col%, thick| 00002970 25 2c 20 64 61 73 68 25 2c 20 70 61 74 68 24 29 |%, dash%, path$)| 00002980 0d 11 9e 2f f2 43 44 72 61 77 5f 6f 70 65 6e 70 |.../.CDraw_openp| 00002990 61 74 68 28 66 69 6c 6c 25 2c 20 63 6f 6c 25 2c |ath(fill%, col%,| 000029a0 20 74 68 69 63 6b 25 2c 20 64 61 73 68 25 29 0d | thick%, dash%).| 000029b0 11 a8 1c f2 43 44 72 61 77 5f 65 78 74 65 6e 64 |....CDraw_extend| 000029c0 70 61 74 68 28 70 61 74 68 24 29 0d 11 b2 14 f2 |path(path$).....| 000029d0 43 44 72 61 77 5f 63 6c 6f 73 65 70 61 74 68 0d |CDraw_closepath.| 000029e0 11 bc 05 e1 0d 11 c6 04 0d 11 d0 30 dd f2 43 44 |...........0..CD| 000029f0 72 61 77 5f 6f 70 65 6e 70 61 74 68 28 66 69 6c |raw_openpath(fil| 00002a00 6c 25 2c 20 63 6f 6c 25 2c 20 74 68 69 63 6b 25 |l%, col%, thick%| 00002a10 2c 20 64 61 73 68 25 29 0d 11 da 0e e7 20 43 44 |, dash%)..... CD| 00002a20 72 61 77 25 20 8c 0d 11 e4 11 ea 20 70 61 74 74 |raw% ...... patt| 00002a30 65 72 6e 24 2c 49 25 0d 11 ee 11 5f 73 74 61 72 |ern$,I%...._star| 00002a40 74 25 3d 5f 70 74 72 25 0d 11 f8 10 f2 5f 70 75 |t%=_ptr%....._pu| 00002a50 74 77 6f 72 64 28 32 29 0d 12 02 0d 5f 70 74 72 |tword(2)...._ptr| 00002a60 25 2b 3d 32 30 0d 12 0c 2a f2 5f 70 75 74 63 6f |%+=20...*._putco| 00002a70 6f 72 64 73 28 5f 73 74 61 72 74 25 2b 38 2c 31 |ords(_start%+8,1| 00002a80 3c 3c 33 30 2c 31 3c 3c 33 30 2c 30 2c 30 29 0d |<<30,1<<30,0,0).| 00002a90 12 16 1e f2 5f 70 75 74 77 6f 72 64 28 a4 5f 63 |...._putword(._c| 00002aa0 6f 6c 6f 75 72 28 66 69 6c 6c 25 29 29 0d 12 20 |olour(fill%)).. | 00002ab0 1d f2 5f 70 75 74 77 6f 72 64 28 a4 5f 63 6f 6c |.._putword(._col| 00002ac0 6f 75 72 28 63 6f 6c 25 29 29 0d 12 2a 18 f2 5f |our(col%))..*.._| 00002ad0 70 75 74 77 6f 72 64 28 74 68 69 63 6b 25 3c 3c |putword(thick%<<| 00002ae0 38 29 0d 12 34 28 f2 5f 70 75 74 77 6f 72 64 28 |8)..4(._putword(| 00002af0 5f 66 6c 61 67 73 25 20 84 20 26 38 30 2a 2d 28 |_flags% . &80*-(| 00002b00 64 61 73 68 25 3c 3e 30 29 29 0d 12 3e 0f e7 20 |dash%<>0))..>.. | 00002b10 64 61 73 68 25 3e 30 20 8c 0d 12 48 1a 70 61 74 |dash%>0 ...H.pat| 00002b20 74 65 72 6e 24 3d 5f 64 61 73 68 24 28 64 61 73 |tern$=_dash$(das| 00002b30 68 25 29 0d 12 52 10 f2 5f 70 75 74 77 6f 72 64 |h%)..R.._putword| 00002b40 28 30 29 0d 12 5c 1a f2 5f 70 75 74 77 6f 72 64 |(0)..\.._putword| 00002b50 28 a9 70 61 74 74 65 72 6e 24 2f 34 29 0d 12 66 |(.pattern$/4)..f| 00002b60 16 e3 20 49 25 3d 31 20 b8 20 a9 70 61 74 74 65 |.. I%=1 . .patte| 00002b70 72 6e 24 0d 12 70 1b 3f 5f 70 74 72 25 3d 97 c1 |rn$..p.?_ptr%=..| 00002b80 70 61 74 74 65 72 6e 24 2c 49 25 2c 31 29 0d 12 |pattern$,I%,1)..| 00002b90 7a 0c 5f 70 74 72 25 2b 3d 31 0d 12 84 07 ed 49 |z._ptr%+=1.....I| 00002ba0 25 0d 12 8e 05 cd 0d 12 98 05 cd 0d 12 a2 05 e1 |%...............| 00002bb0 0d 12 ac 04 0d 12 b6 1d dd f2 43 44 72 61 77 5f |..........CDraw_| 00002bc0 65 78 74 65 6e 64 70 61 74 68 28 70 61 74 68 24 |extendpath(path$| 00002bd0 29 0d 12 c0 13 ea 20 5f 70 61 74 68 74 79 70 65 |)..... _pathtype| 00002be0 25 2c 49 25 0d 12 ca 10 c8 95 20 70 61 74 68 24 |%,I%...... path$| 00002bf0 3c 3e 22 22 0d 12 d4 1b c8 8e 20 a4 5f 6e 65 78 |<>""...... ._nex| 00002c00 74 63 68 75 6e 6b 28 70 61 74 68 24 29 20 ca 0d |tchunk(path$) ..| 00002c10 12 de 1a c9 20 22 4d 4f 56 45 22 20 3a 5f 70 61 |.... "MOVE" :_pa| 00002c20 74 68 74 79 70 65 25 3d 32 0d 12 e8 1a c9 20 22 |thtype%=2..... "| 00002c30 43 47 41 50 22 20 3a 5f 70 61 74 68 74 79 70 65 |CGAP" :_pathtype| 00002c40 25 3d 34 0d 12 f2 1b c9 20 22 43 4c 4f 53 45 22 |%=4..... "CLOSE"| 00002c50 20 3a 5f 70 61 74 68 74 79 70 65 25 3d 35 0d 12 | :_pathtype%=5..| 00002c60 fc 1b c9 20 22 43 55 52 56 45 22 20 3a 5f 70 61 |... "CURVE" :_pa| 00002c70 74 68 74 79 70 65 25 3d 36 0d 13 06 19 c9 20 22 |thtype%=6..... "| 00002c80 47 41 50 22 20 3a 5f 70 61 74 68 74 79 70 65 25 |GAP" :_pathtype%| 00002c90 3d 37 0d 13 10 1a c9 20 22 44 52 41 57 22 20 3a |=7..... "DRAW" :| 00002ca0 5f 70 61 74 68 74 79 70 65 25 3d 38 0d 13 1a 05 |_pathtype%=8....| 00002cb0 cb 0d 13 24 15 e7 20 5f 70 61 74 68 74 79 70 65 |...$.. _pathtype| 00002cc0 25 3c 3e 30 20 8c 0d 13 2e 19 f2 5f 70 75 74 77 |%<>0 ......_putw| 00002cd0 6f 72 64 28 5f 70 61 74 68 74 79 70 65 25 29 0d |ord(_pathtype%).| 00002ce0 13 38 13 c8 8e 20 5f 70 61 74 68 74 79 70 65 25 |.8... _pathtype%| 00002cf0 20 ca 0d 13 42 0e c9 20 32 2c 33 2c 37 2c 38 3a | ...B.. 2,3,7,8:| 00002d00 0d 13 4c 14 f2 5f 70 75 74 70 61 69 72 28 70 61 |..L.._putpair(pa| 00002d10 74 68 24 29 0d 13 56 08 c9 20 36 3a 0d 13 60 0e |th$)..V.. 6:..`.| 00002d20 e3 20 49 25 3d 31 20 b8 20 33 0d 13 6a 14 f2 5f |. I%=1 . 3..j.._| 00002d30 70 75 74 70 61 69 72 28 70 61 74 68 24 29 0d 13 |putpair(path$)..| 00002d40 74 08 ed 20 49 25 0d 13 7e 05 cb 0d 13 88 05 cd |t.. I%..~.......| 00002d50 0d 13 92 05 ce 0d 13 9c 05 e1 0d 13 a6 04 0d 13 |................| 00002d60 b0 15 dd f2 43 44 72 61 77 5f 63 6c 6f 73 65 70 |....CDraw_closep| 00002d70 61 74 68 0d 13 ba 10 f2 5f 70 75 74 77 6f 72 64 |ath....._putword| 00002d80 28 30 29 0d 13 c4 1b 5f 73 74 61 72 74 25 21 34 |(0)...._start%!4| 00002d90 3d 5f 70 74 72 25 2d 5f 73 74 61 72 74 25 0d 13 |=_ptr%-_start%..| 00002da0 ce 3f f2 5f 63 68 65 63 6b 73 70 61 63 65 28 5f |.?._checkspace(_| 00002db0 73 74 61 72 74 25 21 38 2c 20 5f 73 74 61 72 74 |start%!8, _start| 00002dc0 25 21 31 32 2c 20 5f 73 74 61 72 74 25 21 31 36 |%!12, _start%!16| 00002dd0 2c 20 5f 73 74 61 72 74 25 21 32 30 29 0d 13 d8 |, _start%!20)...| 00002de0 05 e1 0d 13 e2 04 0d 13 ec 19 dd a4 5f 6e 65 78 |............_nex| 00002df0 74 63 68 75 6e 6b 28 f8 20 70 61 74 68 24 29 0d |tchunk(. path$).| 00002e00 13 f6 0f ea 20 50 25 2c 63 68 75 6e 6b 24 0d 14 |.... P%,chunk$..| 00002e10 00 16 50 25 3d a7 70 61 74 68 24 2b 22 20 22 2c |..P%=.path$+" ",| 00002e20 22 20 22 29 0d 14 0a 24 63 68 75 6e 6b 24 3d c0 |" ")...$chunk$=.| 00002e30 70 61 74 68 24 2c a7 70 61 74 68 24 2b 22 20 22 |path$,.path$+" "| 00002e40 2c 22 20 22 29 2d 31 29 0d 14 14 16 70 61 74 68 |," ")-1)....path| 00002e50 24 3d c1 70 61 74 68 24 2c 50 25 2b 31 29 0d 14 |$=.path$,P%+1)..| 00002e60 1e 0b 3d 63 68 75 6e 6b 24 0d 14 28 04 0d 14 32 |..=chunk$..(...2| 00002e70 17 dd f2 5f 70 75 74 70 61 69 72 28 f8 20 70 61 |..._putpair(. pa| 00002e80 74 68 24 29 0d 14 3c 0b ea 20 58 25 2c 59 25 0d |th$)..<.. X%,Y%.| 00002e90 14 46 1a 58 25 3d bb a4 5f 6e 65 78 74 63 68 75 |.F.X%=.._nextchu| 00002ea0 6e 6b 28 70 61 74 68 24 29 0d 14 50 1a 59 25 3d |nk(path$)..P.Y%=| 00002eb0 bb a4 5f 6e 65 78 74 63 68 75 6e 6b 28 70 61 74 |.._nextchunk(pat| 00002ec0 68 24 29 0d 14 5a 15 f2 5f 70 75 74 77 6f 72 64 |h$)..Z.._putword| 00002ed0 73 28 58 25 2c 59 25 29 0d 14 64 05 e1 0d ff |s(X%,Y%)..d....| 00002edf