Home » Archimedes archive » Acorn User » AU 1993-04.adf » !GameDes/Files/AlienEd2

!GameDes/Files/AlienEd2

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 1993-04.adf
Filename: !GameDes/Files/AlienEd2
Read OK:
File size: 23BF bytes
Load address: FFFFFB44
Exec address: 6A72B629
File contents
   10REM     >AlienEd2
   20REM By  Antony Bruce Lytis
   30REM For 32-bit machines
   40REM (C) BAU April 1993
   50:
   60MODE 9:OFF
   70MOUSE ON
   80PROCinit
   90PROCload_file(0,"Aliens")
  100PROCload_file(1,"Aliens")
  110PROCscreen
  120PROCedit
  130MODE 0
  140END
  150:
  160DEF PROCinit
  170gridx=26
  180gridy=26
  190g=32
  200mid=g/2
  210max_path=100
  220max_len=100
  230DIM paths max_path*max_len*2
  240DIM grid(gridx,gridy)
  250DIM file$(1),type(1),dir$(1)
  260DIM spr$(max_path-1),com$(max_path-1)
  270type()=&FFF,&FF9
  280dir$()="Movement","Sprites"
  290moves=0
  300quit=FALSE
  310sprites=1
  320FOR p=0 TO max_path-1
  330 paths!(p*max_len*2)=&FFFF
  340NEXT
  350xstart=(1280+gridx*g)DIV2
  360ystart=(gridy*g)DIV2
  370path=0
  380space=HIMEM-END-65536
  390DIM sprites space
  400!sprites=space
  410sprites!8=16
  420SYS "OS_SWINumberFromString",,"XOS_SpriteOp" TO spop
  430SYS spop,&109,sprites
  440ENDPROC
  450:
  460DEF PROCload_file(n,a$)
  470IF FNok(n,a$) THEN
  480 file$(n)=a$
  490 CASE n OF
  500  WHEN 0 : PROCload_data(dir$(n)+"."+a$)
  510  WHEN 1 : PROCload_sprites(dir$(n)+"."+a$)
  520 ENDCASE
  530ENDIF
  540PROCname(n)
  550ENDPROC
  560:
  570DEF FNok(n,a$)
  580SYS "OS_File",5,dir$(n)+"."+a$ TO a,,type,,size
  590type=(type>>8)AND&FFF
  600IF a<>1 THEN =FALSE
  610IF type<>type(n) THEN =FALSE
  620IF n=1 AND size>space THEN =FALSE
  630=TRUE
  640:
  650DEF PROCload_data(file$)
  660in=OPENIN(file$)
  670p=0
  680REPEAT
  690 line$=GET$#in
  700 IF LEFT$(line$,1)<>";" AND line$<>"" THEN
  710  IF MID$(line$,27,1)=" " THEN
  720   com$(p)=FNstrip(LEFT$(line$,14))
  730   spr$(p)=FNstrip(MID$(line$,15,13))
  740   path$=MID$(line$,28)
  750  ELSE
  760   spr$(p)=FNstrip(LEFT$(line$,14))
  770   path$=MID$(line$,15)
  780  ENDIF
  790  a=paths+p*max_len*2
  800  a?0=ASCMID$(path$,1,1)-64
  810  a?1=ASCMID$(path$,2,1)-64
  820  FOR i=2 TO LENpath$-1
  830   a?i=FNasc(MID$(path$,i+1,1))
  840  NEXT
  850  a?i=0
  860  a?(i+1)=0
  870  p+=1
  880 ENDIF
  890UNTIL EOF#in
  900CLOSE #in
  910ENDPROC
  920:
  930DEF FNstrip(s$)
  940WHILE LEFT$(s$,1)=" "
  950 s$=MID$(s$,2)
  960ENDWHILE
  970WHILE RIGHT$(s$,1)=" "
  980 s$=LEFT$(s$)
  990ENDWHILE
 1000=s$
 1010:
 1020DEF PROCload_sprites(file$)
 1030SYS spop,&10A,sprites,file$
 1040ENDPROC
 1050:
 1060DEF PROCscreen
 1070COLOUR 1,1
 1080COLOUR 2,2
 1090COLOUR 3,4
 1100COLOUR 4,4
 1110COLOUR 5,1
 1120COLOUR 6,2
 1130COLOUR 7,7
 1140COLOUR 8,0,0,&CC
 1150COLOUR 9,&CC,&CC,0
 1160COLOUR 10,&88,&CC,&CC
 1170COLOUR 11,&FF,&88,&44
 1180COLOUR 12,&44,&CC,&44
 1190PROCaname("File",0)
 1200PROCaname("Sprs",2)
 1210COLOUR 128
 1220COLOUR 10
 1230PRINTTAB(0,4);"Path:                   Test  Save  Quit"
 1240GCOL 7
 1250FOR x=0 TO gridx
 1260 FOR y=0 TO gridy
 1270  POINT x*g,y*g
 1280 NEXT
 1290NEXT
 1300PROCname(0)
 1310PROCname(1)
 1320ENDPROC
 1330:
 1340DEF PROCaname(label$,ypos)
 1350COLOUR 128
 1360COLOUR 7
 1370PRINTTAB(0,ypos);FNlpad(label$,5);":";
 1380COLOUR 136
 1390PRINTTAB(7,ypos);STRING$(33," ");
 1400COLOUR 128
 1410ENDPROC
 1420:
 1430DEF PROCname(n)
 1440COLOUR 136
 1450COLOUR 9
 1460PRINTTAB(7,n*2);file$(n);SPC(32-LENfile$(n));
 1470COLOUR 128
 1480ENDPROC
 1490:
 1500DEF PROCinfo(p)
 1510COLOUR 11
 1520spr$=spr$(p)
 1530IF spr$="" spr$=""""""
 1540PRINTTAB(6,4);RIGHT$("   "+STR$p,3);" ";
 1550IF NOT FNexists(spr$) COLOUR 1
 1560PRINT FNlpad(spr$,12);
 1570COLOUR 136
 1580COLOUR 9
 1590com$=com$(p)
 1600IF com$="" com$=""""""
 1610PRINTTAB(27,31);FNlpad(com$,12);
 1620COLOUR 128
 1630ENDPROC
 1640:
 1650DEF FNlpad(s$,l)
 1660=LEFT$(s$+STRING$(l," "),l)
 1670:
 1680DEF FNexists(s$)
 1690SYS spop,&118,sprites,s$ TO ;v
 1700=(v AND 1)=0
 1710:
 1720DEF PROCview(p)
 1730PROCinfo(p)
 1740PROCdraw(p)
 1750len=FNset_grid(p)
 1760PROCpreview(p)
 1770ENDPROC
 1780:
 1790DEF PROCedit
 1800PROCview(path)
 1810held=FALSE
 1820REPEAT
 1830 REPEAT
 1840  MOUSE x,y,z
 1850  shift=INKEY-1
 1860  ctrl=INKEY-2
 1870  IF z=0 held=FALSE
 1880 UNTIL z<>0
 1890 IF z<>0 AND NOT held THEN
 1900  held=TRUE
 1910  CASE TRUE OF
 1920   WHEN y>gridy*g:PROCselect
 1930   WHEN x>gridx*g:
 1940    IF y<2*g THEN
 1950     PROCcomment
 1960    ELSE
 1970     PROCrepos
 1980    ENDIF
 1990   OTHERWISE     :PROCgrid
 2000  ENDCASE
 2010 ENDIF
 2020UNTIL quit
 2030ENDPROC
 2040:
 2050DEF PROCselect
 2060xpos=x DIV 32
 2070ypos=31-(y DIV 32)
 2080CASE ypos OF
 2090 WHEN 0,2:
 2100  PROCload(ypos DIV 2)
 2110 WHEN 4:
 2120  CASE TRUE OF
 2130   WHEN xpos>=0  AND xpos<=8  : PROCnewpath
 2140   WHEN xpos>=10 AND xpos<=21 : PROCnewsprite
 2150   WHEN xpos>=24 AND xpos<=27 : PROCtest
 2160   WHEN xpos>=30 AND xpos<=33 : PROCsave
 2170   WHEN xpos>=36 AND xpos<=39 : held=FALSE:IF z=7 quit=TRUE
 2180  ENDCASE
 2190ENDCASE
 2200ENDPROC
 2210:
 2220DEF PROCnewpath
 2230PROCdraw(path)
 2240IF z AND 4 path+=1:IF path=max_path path=0
 2250IF z AND 1 path-=1:IF path<0 path=max_path-1
 2260PROCview(path)
 2270ENDPROC
 2280:
 2290DEF PROCnewsprite
 2300COLOUR 128
 2310COLOUR 11
 2320IF spr$(path)="" VDU 31,10,4,32,32
 2330name$=FNalter(spr$(path),10,4,12)
 2340IF name$<>"" OR key<>27 THEN
 2350 spr$(path)=name$
 2360ENDIF
 2370PROCinfo(path)
 2380ENDPROC
 2390:
 2400DEF PROCsave
 2410COLOUR 136:COLOUR 9
 2420name$=FNalter(file$(0),7,n*2,28)
 2430IF name$<>"" THEN
 2440 PROCsave_file(name$)
 2450ENDIF
 2460ENDPROC
 2470:
 2480DEF PROCsave_file(file$)
 2490out=OPENOUT(dir$(0)+"."+file$)
 2500PROCbput(out,"; >"+file$)
 2510PROCbput(out,"")
 2520FOR p=0 TO max_path-1
 2530 a=paths+p*max_len*2
 2540 IF NOT (?a=255 AND a?1=255) THEN
 2550  spr$=FNlpad(spr$(p),12)
 2560  com$=com$(p)
 2570  IF com$<>"" com$=FNlpad(com$(p),12)+" "
 2580  path$=CHR$(?a+64)+CHR$(a?1+64)
 2590  i=2
 2600  WHILE NOT (a?i=0 AND a?(i+1)=0)
 2610   path$+=FNchr(a?i)+FNchr(a?(i+1))
 2620   i+=2
 2630  ENDWHILE
 2640  PROCbput(out," "+com$+spr$+" "+path$)
 2650 ENDIF
 2660NEXT
 2670CLOSE #out
 2680SYS "OS_File",18,dir$(0)+"."+file$,&FFF
 2690file$(0)=file$
 2700ENDPROC
 2710:
 2720DEF FNchr(x)
 2730IF x<127 THEN =CHR$(96+(127-x))
 2740=CHR$(64+(x-127))
 2750:
 2760DEF FNasc(x$)
 2770IF x$>="a" THEN =127-(ASCx$-96)
 2780=127+(ASCx$-64)
 2790:
 2800DEF PROCbput(f,s$)
 2810BPUT #f,s$+CHR$10;
 2820ENDPROC
 2830:
 2840DEF PROCload(n)
 2850COLOUR 136:COLOUR 9
 2860name$=FNalter(file$(n),7,n*2,28)
 2870IF name$<>"" THEN
 2880 PROCload_file(n,name$)
 2890 IF n=0 PROCview(path)
 2900ENDIF
 2910ENDPROC
 2920:
 2930DEF FNalter(old$,x,y,max)
 2940VDU 31,x+LENold$,y
 2950a$=old$
 2960ON
 2970MOUSE OFF
 2980*FX229,1
 2990*FX21,0
 3000REPEAT
 3010 key=GET
 3020 IF key=127 AND LENa$>0 VDU 127:a$=LEFT$(a$)
 3030 IF key=21 OR key=27 PRINTSTRING$(LENa$,CHR$127);:a$=""
 3040 IF key=27 a$=old$:PRINTa$;
 3050 IF key>32 AND key<127 AND LENa$<max a$+=CHR$key:VDU key
 3060UNTIL key=13 OR key=27
 3070IF key=27 a$=""
 3080*FX229,0
 3090OFF
 3100MOUSE ON
 3110COLOUR 128
 3120=a$
 3130:
 3140DEF PROCrepos
 3150xstart=x
 3160ystart=y
 3170PROCpreview(path)
 3180ENDPROC
 3190:
 3200DEF FNerr(p,xn,yn,at)
 3210LOCAL a,x,y,ox,oy
 3220a=paths+p*max_len*2
 3230at=a+at*2
 3240ox=?at:oy=at?1
 3250?at=xn:at?1=yn
 3260x=a?0
 3270y=a?1
 3280err=FNoff(x,y)
 3290IF NOT (x=255 AND y=255) THEN
 3300 a+=2
 3310 WHILE NOT (?a=0 AND a?1=0) AND NOT err
 3320  x+=(a?0-127)
 3330  y+=(a?1-127)
 3340  a+=2
 3350  err=FNoff(x,y)
 3360 ENDWHILE
 3370ENDIF
 3380?at=ox
 3390at?1=oy
 3400=err
 3410:
 3420DEF FNoff(xx,yy)
 3430=(xx<0 OR yy<0 OR xx>=gridx OR yy>=gridy)
 3440:
 3450DEF FNset_grid(p)
 3460grid()=-1
 3470a=paths+p*max_len*2
 3480x=a?0
 3490y=a?1
 3500l=0
 3510IF NOT (x=255 AND y=255) THEN
 3520 grid(x,y)=l
 3530 l+=1
 3540 a+=2
 3550 WHILE NOT (?a=0 AND a?1=0)
 3560  x+=(a?0-127)
 3570  y+=(a?1-127)
 3580  IF grid(x,y)<0 grid(x,y)=l
 3590  a+=2
 3600  l+=1
 3610 ENDWHILE
 3620ENDIF
 3630=l
 3640:
 3650DEF PROCdraw(p)
 3660LOCAL a,x,y,ox,oy
 3670a=paths+p*max_len*2
 3680x=a?0
 3690y=a?1
 3700l=0
 3710IF NOT (x=255 AND y=255) THEN
 3720 GCOL 3,1
 3730 CIRCLE x*g+mid,y*g+mid,mid-4
 3740 ox=x*g+mid
 3750 oy=y*g+mid
 3760 l+=1
 3770 a+=2
 3780 WHILE NOT (?a=0 AND a?1=0)
 3790  x+=(a?0-127)
 3800  y+=(a?1-127)
 3810  GCOL 3,2
 3820  CIRCLE x*g+mid,y*g+mid,mid-4
 3830  GCOL 3,4
 3840  MOVE ox,oy
 3850  ox=x*g+mid
 3860  oy=y*g+mid
 3870  DRAW ox,oy
 3880  a+=2
 3890  l+=1
 3900 ENDWHILE
 3910ENDIF
 3920xend=x
 3930yend=y
 3940ENDPROC
 3950:
 3960DEF PROCgrid
 3970xg=x DIV g
 3980yg=y DIV g
 3990a=paths+path*max_len*2
 4000e=grid(xg,yg)
 4010IF ctrl THEN
 4020 PROCdelete_point
 4030ELSE
 4040 PROCadd_point
 4050ENDIF
 4060ENDPROC
 4070:
 4080DEF PROCadd_point
 4090IF e<0 THEN
 4100 IF len=0 THEN
 4110  ?a=xg
 4120  a?1=yg
 4130  GCOL 3,1
 4140  CIRCLE xg*g+mid,yg*g+mid,mid-4
 4150 ELSE
 4160  a?(len*2)  =xg-xend+127
 4170  a?(len*2+1)=yg-yend+127
 4180  GCOL 3,2
 4190  CIRCLE xg*g+mid,yg*g+mid,mid-4
 4200  GCOL 3,4
 4210  LINE xend*g+mid,yend*g+mid,xg*g+mid,yg*g+mid
 4220 ENDIF
 4230 xend=xg
 4240 yend=yg
 4250 grid(xg,yg)=len
 4260 len+=1
 4270 a?(len*2)=0
 4280 a?(len*2+1)=0
 4290 PROCpreview(path)
 4300ELSE
 4310 ox=xg
 4320 oy=yg
 4330 REPEAT
 4340  REPEAT
 4350   MOUSE x,y,z
 4360   x1=x DIV g
 4370   y1=y DIV g
 4380   shift=INKEY-1
 4390  UNTIL z=0 OR x1<>ox OR y1<>oy
 4400  IF z<>0 THEN
 4410   IF (NOT shift) OR e=0 OR e=len-1 THEN
 4420    IF e=0 THEN
 4430     xnew=x1
 4440     ynew=y1
 4450    ELSE
 4460     xnew=a?(e*2)  +x1-ox
 4470     ynew=a?(e*2+1)+y1-oy
 4480    ENDIF
 4490    off=FNerr(path,xnew,ynew,e)
 4500    IF NOT off THEN
 4510     PROCdraw(path)
 4520     a?(e*2)=xnew
 4530     a?(e*2+1)=ynew
 4540     PROCdraw(path)
 4550     PROCpreview(path)
 4560    ENDIF
 4570   ELSE
 4580    off=FNoff(x1,y1)
 4590    IF NOT off THEN
 4600     PROCdraw(path)
 4610     a?(e*2)  +=(x1-ox)
 4620     a?(e*2+1)+=(y1-oy)
 4630     a?(e*2+2)+=(ox-x1)
 4640     a?(e*2+3)+=(oy-y1)
 4650     PROCdraw(path)
 4660     PROCpreview(path)
 4670    ENDIF
 4680   ENDIF
 4690   IF NOT off ox=x1:oy=y1
 4700  ENDIF
 4710 UNTIL z=0
 4720 len=FNset_grid(path)
 4730ENDIF
 4740ENDPROC
 4750:
 4760DEF PROCdelete_point
 4770del=FALSE
 4780CASE TRUE OF
 4790 WHEN e=0:
 4800  IF len=1 THEN
 4810   PROCdraw(path)
 4820   !a=&FFFF
 4830   del=TRUE
 4840  ENDIF
 4850 WHEN e>0:
 4860  IF FNerr(path,127,127,e) THEN
 4870   REM off
 4880  ELSE
 4890   PROCdraw(path)
 4900   i=a+e*2
 4910   REPEAT
 4920    xi=i?2
 4930    yi=i?3
 4940    ?i=xi
 4950    i?1=yi
 4960    i+=2
 4970   UNTIL xi=0 AND yi=0
 4980   del=TRUE
 4990  ENDIF
 5000 ENDIF
 5010ENDCASE
 5020IF del THEN
 5030 PROCdraw(path)
 5040 PROCpreview(path)
 5050 len=FNset_grid(path)
 5060ENDIF
 5070ENDPROC
 5080:
 5090DEF PROCpreview(p)
 5100LOCAL a,i
 5110a=paths+p*max_len*2
 5120VDU 24,gridx*g+4;2*g;1279;gridy*g;16
 5130GCOL 0,4
 5140MOVE xstart,ystart
 5150IF NOT (a?0=255 AND a?1=255) THEN
 5160 FOR times=1 TO 5
 5170  i=2
 5180  WHILE NOT (a?i=0 AND a?(i+1)=0)
 5190   DRAW BY 4*(a?i-127),4*(a?(i+1)-127)
 5200   i+=2
 5210  ENDWHILE
 5220 NEXT
 5230ENDIF
 5240VDU 26
 5250ENDPROC
 5260:
 5270DEF PROCtest
 5280spr$=spr$(path)
 5290IF FNexists(spr$) AND len>1 THEN
 5300 MODE 12:MODE 9:OFF
 5310 MOUSE ON
 5320 *FX229,1
 5330 PROCset_palette(spr$)
 5340 start=paths+path*max_len*2+2
 5350 x=640
 5360 y=512
 5370 b=1
 5380 a=start
 5390 waits=1
 5400 REPEAT
 5410  FOR w=1 TO waits:WAIT:NEXT
 5420  SYS 6,112,b
 5430  SYS 6,113,3-b
 5440  b=3-b
 5450  CLS
 5460  SYS spop,&122,sprites,spr$,x,y,8
 5470  IF a?0=0 AND a?1=0 a=start
 5480  x+=4*(a?0-127)
 5490  y+=4*(a?1-127)
 5500  a+=2
 5510  MOUSE mx,my,z
 5520  IF z=0 held=FALSE
 5530  IF z>0 AND NOT held x=mx:y=my:held=TRUE
 5540  k=INKEY0
 5550  IF k>=ASC"0" AND k<=ASC"9" waits=k-48:IF waits=0 waits=10
 5560 UNTIL k=27
 5570 *FX 229,0
 5580 SYS 6,112,1
 5590 SYS 6,113,1
 5600 CLS
 5610 PROCscreen
 5620 PROCview(path)
 5630ENDIF
 5640ENDPROC
 5650:
 5660DEF PROCset_palette(s$)
 5670SYS spop,&125,sprites,s$,-1 TO ,,,,pal
 5680IF pal<>0 THEN
 5690 FOR col=0 TO 15
 5700  COLOUR col,pal?1,pal?2,pal?3
 5710  pal+=8
 5720 ENDIF
 5730NEXT
 5740ENDPROC
 5750:
 5760DEF PROCcomment
 5770COLOUR 136:COLOUR 9
 5780IF com$(path)="" VDU 31,27,31,32,32
 5790com$(path)=FNalter(com$(path),27,31,12)
 5800ENDPROC

�     >AlienEd2
� By  Antony Bruce Lytis
� For 32-bit machines
(� (C) BAU April 1993
2:
<	� 9:�
Fȗ �
P	�init
Z�load_file(0,"Aliens")
d�load_file(1,"Aliens")
n�screen
x	�edit
�� 0
��
�:
�� �init
�gridx=26
�gridy=26
�g=32
�mid=g/2
�max_path=100
�max_len=100
�� paths max_path*max_len*2
�� grid(gridx,gridy)
�� file$(1),type(1),dir$(1)
'� spr$(max_path-1),com$(max_path-1)
type()=&FFF,&FF9
dir$()="Movement","Sprites"
"moves=0
,
quit=�
6
sprites=1
@� p=0 � max_path-1
J paths!(p*max_len*2)=&FFFF
T�
^xstart=(1280+gridx*g)�2
hystart=(gridy*g)�2
r
path=0
|space=�-�-65536
�� sprites space
�!sprites=space
�sprites!8=16
�6ș "OS_SWINumberFromString",,"XOS_SpriteOp" � spop
�ș spop,&109,sprites
��
�:
�� �load_file(n,a$)
�� �ok(n,a$) �
� file$(n)=a$
� Ȏ n �
�&  � 0 : �load_data(dir$(n)+"."+a$)
�)  � 1 : �load_sprites(dir$(n)+"."+a$)
 �
�
�name(n)
&�
0:
:� �ok(n,a$)
D1ș "OS_File",5,dir$(n)+"."+a$ � a,,type,,size
Ntype=(type>>8)�&FFF
X� a<>1 � =�
b� type<>type(n) � =�
l� n=1 � size>space � =�
v=�
�:
�� �load_data(file$)
�in=�(file$)
�p=0
��
� line$=�#in
�# � �line$,1)<>";" � line$<>"" �
�  � �line$,27,1)=" " �
�!   com$(p)=�strip(�line$,14))
�$   spr$(p)=�strip(�line$,15,13))
�   path$=�line$,28)
�  �
�!   spr$(p)=�strip(�line$,14))
   path$=�line$,15)
  �
  a=paths+p*max_len*2
   a?0=��path$,1,1)-64
*  a?1=��path$,2,1)-64
4  � i=2 � �path$-1
>   a?i=�asc(�path$,i+1,1))
H  �
R  a?i=0
\  a?(i+1)=0
f
  p+=1
p �
z
� �#in
�	� #in
��
�:
�� �strip(s$)
�ȕ �s$,1)=" "
� s$=�s$,2)
��
�ȕ �s$,1)=" "
� s$=�s$)
��
�=s$
�:
�� �load_sprites(file$)
ș spop,&10A,sprites,file$
�
:
$
� �screen
.	� 1,1
8	� 2,2
B	� 3,4
L	� 4,4
V	� 5,1
`	� 6,2
j	� 7,7
t� 8,0,0,&CC
~� 9,&CC,&CC,0
�� 10,&88,&CC,&CC
�� 11,&FF,&88,&44
�� 12,&44,&CC,&44
��aname("File",0)
��aname("Sprs",2)
�	� 128
�� 10
�5�0,4);"Path:                   Test  Save  Quit"
�� 7
�� x=0 � gridx
� � y=0 � gridy
�  Ȓ x*g,y*g
 �

�
�name(0)
�name(1)
(�
2:
<� �aname(label$,ypos)
F	� 128
P� 7
Z"�0,ypos);�lpad(label$,5);":";
d	� 136
n�7,ypos);�33," ");
x	� 128
��
�:
�� �name(n)
�	� 136
�� 9
�&�7,n*2);file$(n);�(32-�file$(n));
�	� 128
��
�:
�� �info(p)
�� 11
�spr$=spr$(p)
�� spr$="" spr$=""""""
�6,4);�"   "+�p,3);" ";
� � �exists(spr$) � 1
� �lpad(spr$,12);
"	� 136
,� 9
6com$=com$(p)
@� com$="" com$=""""""
J�27,31);�lpad(com$,12);
T	� 128
^�
h:
r� �lpad(s$,l)
|=�s$+�l," "),l)
�:
�� �exists(s$)
� ș spop,&118,sprites,s$ � ;v
�=(v � 1)=0
�:
�� �view(p)
��info(p)
��draw(p)
�len=�set_grid(p)
��preview(p)
��
�:
�� �edit
�view(path)

held=�
�
& �
0  ȗ x,y,z
:  shift=�-1
D  ctrl=�-2
N  � z=0 held=�
X � z<>0
b � z<>0 � � held �
l  held=�
v  Ȏ � �
�   � y>gridy*g:�select
�   � x>gridx*g:
�    � y<2*g �
�     �comment
�	    �
�     �repos
�	    �
�        :�grid
�  �
� �
�
� quit
��
�:

� �select
xpos=x � 32
ypos=31-(y � 32)
 
Ȏ ypos �
* � 0,2:
4  �load(ypos � 2)
>	 � 4:
H  Ȏ � �
R'   � xpos>=0  � xpos<=8  : �newpath
\)   � xpos>=10 � xpos<=21 : �newsprite
f$   � xpos>=24 � xpos<=27 : �test
p$   � xpos>=30 � xpos<=33 : �save
z2   � xpos>=36 � xpos<=39 : held=�:� z=7 quit=�
�  �
��
��
�:
�� �newpath
��draw(path)
�*� z � 4 path+=1:� path=max_path path=0
�,� z � 1 path-=1:� path<0 path=max_path-1
��view(path)
��
�:
�� �newsprite
�	� 128
	� 11
	#� spr$(path)="" � 31,10,4,32,32
	$name$=�alter(spr$(path),10,4,12)
	$� name$<>"" � key<>27 �
	. spr$(path)=name$
	8�
	B�info(path)
	L�
	V:
	`� �save
	j
� 136:� 9
	t#name$=�alter(file$(0),7,n*2,28)
	~� name$<>"" �
	� �save_file(name$)
	��
	��
	�:
	�� �save_file(file$)
	�out=�(dir$(0)+"."+file$)
	��bput(out,"; >"+file$)
	��bput(out,"")
	�� p=0 � max_path-1
	� a=paths+p*max_len*2
	� � � (?a=255 � a?1=255) �
	�  spr$=�lpad(spr$(p),12)
  com$=com$(p)

+  � com$<>"" com$=�lpad(com$(p),12)+" "
  path$=�(?a+64)+�(a?1+64)
	  i=2
(  ȕ � (a?i=0 � a?(i+1)=0)
2%   path$+=�chr(a?i)+�chr(a?(i+1))
<   i+=2
F  �
P(  �bput(out," "+com$+spr$+" "+path$)
Z �
d�
n
� #out
x*ș "OS_File",18,dir$(0)+"."+file$,&FFF
�file$(0)=file$
��
�:
�
� �chr(x)
�� x<127 � =�(96+(127-x))
�=�(64+(x-127))
�:
�� �asc(x$)
�� x$>="a" � =127-(�x$-96)
�=127+(�x$-64)
�:
�� �bput(f,s$)
�� #f,s$+�10;
�
:
� �load(n)
"
� 136:� 9
,#name$=�alter(file$(n),7,n*2,28)
6� name$<>"" �
@ �load_file(n,name$)
J � n=0 �view(path)
T�
^�
h:
r� �alter(old$,x,y,max)
|� 31,x+�old$,y
�a$=old$
��
�ȗ �
�*FX229,1
�*FX21,0
��
�
 key=�
�$ � key=127 � �a$>0 � 127:a$=�a$)
�) � key=21 � key=27 �ĩa$,�127);:a$=""
� � key=27 a$=old$:�a$;
�0 � key>32 � key<127 � �a$<max a$+=�key:� key
�� key=13 � key=27
�� key=27 a$=""
*FX229,0
�
ȗ �
&	� 128
0=a$
::
D� �repos
Nxstart=x
Xystart=y
b�preview(path)
l�
v:
�� �err(p,xn,yn,at)
�� a,x,y,ox,oy
�a=paths+p*max_len*2
�
at=a+at*2
�ox=?at:oy=at?1
�?at=xn:at?1=yn
�	x=a?0
�	y=a?1
�err=�off(x,y)
�� � (x=255 � y=255) �
�	 a+=2
�  ȕ � (?a=0 � a?1=0) � � err
�  x+=(a?0-127)

  y+=(a?1-127)


  a+=2

  err=�off(x,y)

  �

*�

4
?at=ox

>at?1=oy

H=err

R:

\� �off(xx,yy)

f*=(xx<0 � yy<0 � xx>=gridx � yy>=gridy)

p:

z� �set_grid(p)

�
grid()=-1

�a=paths+p*max_len*2

�	x=a?0

�	y=a?1

�l=0

�� � (x=255 � y=255) �

� grid(x,y)=l

�	 l+=1

�	 a+=2

� ȕ � (?a=0 � a?1=0)

�  x+=(a?0-127)

�  y+=(a?1-127)

�  � grid(x,y)<0 grid(x,y)=l

  a+=2

  l+=1
 �
$�
.=l
8:
B� �draw(p)
L� a,x,y,ox,oy
Va=paths+p*max_len*2
`	x=a?0
j	y=a?1
tl=0
~� � (x=255 � y=255) �
�
 � 3,1
� ȏ x*g+mid,y*g+mid,mid-4
� ox=x*g+mid
� oy=y*g+mid
�	 l+=1
�	 a+=2
� ȕ � (?a=0 � a?1=0)
�  x+=(a?0-127)
�  y+=(a?1-127)
�  � 3,2
�  ȏ x*g+mid,y*g+mid,mid-4
�  � 3,4

  � ox,oy

  ox=x*g+mid
  oy=y*g+mid

  � ox,oy
(
  a+=2
2
  l+=1
< �
F�
P
xend=x
Z
yend=y
d�
n:
x� �grid
�xg=x � g
�yg=y � g
�a=paths+path*max_len*2
�e=grid(xg,yg)
�� ctrl �
� �delete_point
��
� �add_point
��
��
�:
�� �add_point
�� e<0 �
 � len=0 �
  ?a=xg
  a?1=yg
"  � 3,1
,   ȏ xg*g+mid,yg*g+mid,mid-4
6 �
@  a?(len*2)  =xg-xend+127
J  a?(len*2+1)=yg-yend+127
T  � 3,2
^   ȏ xg*g+mid,yg*g+mid,mid-4
h  � 3,4
r/  � xend*g+mid,yend*g+mid,xg*g+mid,yg*g+mid
| �
� xend=xg
� yend=yg
� grid(xg,yg)=len
� len+=1
� a?(len*2)=0
� a?(len*2+1)=0
� �preview(path)
��
�
 ox=xg
�
 oy=yg
� �
�  �
�   ȗ x,y,z
   x1=x � g
   y1=y � g
   shift=�-1
&  � z=0 � x1<>ox � y1<>oy
0  � z<>0 �
:$   � (� shift) � e=0 � e=len-1 �
D    � e=0 �
N     xnew=x1
X     ynew=y1
b	    �
l     xnew=a?(e*2)  +x1-ox
v     ynew=a?(e*2+1)+y1-oy
�	    �
�"    off=�err(path,xnew,ynew,e)
�    � � off �
�     �draw(path)
�     a?(e*2)=xnew
�     a?(e*2+1)=ynew
�     �draw(path)
�     �preview(path)
�	    �
�   �
�    off=�off(x1,y1)
�    � � off �
�     �draw(path)
     a?(e*2)  +=(x1-ox)
     a?(e*2+1)+=(y1-oy)
     a?(e*2+2)+=(ox-x1)
      a?(e*2+3)+=(oy-y1)
*     �draw(path)
4     �preview(path)
>	    �
H   �
R   � � off ox=x1:oy=y1
\  �
f
 � z=0
p len=�set_grid(path)
z�
��
�:
�� �delete_point
�	del=�
�
Ȏ � �
� � e=0:
�  � len=1 �
�   �draw(path)
�   !a=&FFFF
�   del=�
�  �
� � e>0:
�  � �err(path,127,127,e) �
   � off
  �
   �draw(path)
$   i=a+e*2
.   �
8    xi=i?2
B    yi=i?3
L
    ?i=xi
V    i?1=yi
`    i+=2
j   � xi=0 � yi=0
t   del=�
~  �
� �
��
�� del �
� �draw(path)
� �preview(path)
� len=�set_grid(path)
��
��
�:
�� �preview(p)
�	� a,i
�a=paths+p*max_len*2
&� 24,gridx*g+4;2*g;1279;gridy*g;16

	� 0,4
� xstart,ystart
� � (a?0=255 � a?1=255) �
( � times=1 � 5
2	  i=2
<  ȕ � (a?i=0 � a?(i+1)=0)
F'   � BY 4*(a?i-127),4*(a?(i+1)-127)
P   i+=2
Z  �
d �
n�
x� 26
��
�:
�� �test
�spr$=spr$(path)
�� �exists(spr$) � len>1 �
� � 12:� 9:�
�	 ȗ �
�
 *FX229,1
� �set_palette(spr$)
�! start=paths+path*max_len*2+2
�
 x=640
�
 y=512
� b=1
 a=start
 waits=1
 �
"  � w=1 � waits:Ȗ:�
,  ș 6,112,b
6  ș 6,113,3-b
@  b=3-b
J  �
T%  ș spop,&122,sprites,spr$,x,y,8
^  � a?0=0 � a?1=0 a=start
h  x+=4*(a?0-127)
r  y+=4*(a?1-127)
|
  a+=2
�  ȗ mx,my,z
�  � z=0 held=�
�%  � z>0 � � held x=mx:y=my:held=�
�
  k=�0
�7  � k>=�"0" � k<=�"9" waits=k-48:� waits=0 waits=10
� � k=27
� *FX 229,0
� ș 6,112,1
� ș 6,113,1
� �
� �screen
� �view(path)
��
�
:
� �set_palette(s$)
&(ș spop,&125,sprites,s$,-1 � ,,,,pal
0� pal<>0 �
: � col=0 � 15
D  � col,pal?1,pal?2,pal?3
N  pal+=8
X �
b�
l�
v:
�� �comment
�
� 136:� 9
�$� com$(path)="" � 31,27,31,32,32
�*com$(path)=�alter(com$(path),27,31,12)
��
�
00000000  0d 00 0a 13 f4 20 20 20  20 20 3e 41 6c 69 65 6e  |.....     >Alien|
00000010  45 64 32 0d 00 14 1c f4  20 42 79 20 20 41 6e 74  |Ed2..... By  Ant|
00000020  6f 6e 79 20 42 72 75 63  65 20 4c 79 74 69 73 0d  |ony Bruce Lytis.|
00000030  00 1e 19 f4 20 46 6f 72  20 33 32 2d 62 69 74 20  |.... For 32-bit |
00000040  6d 61 63 68 69 6e 65 73  0d 00 28 18 f4 20 28 43  |machines..(.. (C|
00000050  29 20 42 41 55 20 41 70  72 69 6c 20 31 39 39 33  |) BAU April 1993|
00000060  0d 00 32 05 3a 0d 00 3c  09 eb 20 39 3a 87 0d 00  |..2.:..<.. 9:...|
00000070  46 08 c8 97 20 ee 0d 00  50 09 f2 69 6e 69 74 0d  |F... ...P..init.|
00000080  00 5a 1a f2 6c 6f 61 64  5f 66 69 6c 65 28 30 2c  |.Z..load_file(0,|
00000090  22 41 6c 69 65 6e 73 22  29 0d 00 64 1a f2 6c 6f  |"Aliens")..d..lo|
000000a0  61 64 5f 66 69 6c 65 28  31 2c 22 41 6c 69 65 6e  |ad_file(1,"Alien|
000000b0  73 22 29 0d 00 6e 0b f2  73 63 72 65 65 6e 0d 00  |s")..n..screen..|
000000c0  78 09 f2 65 64 69 74 0d  00 82 07 eb 20 30 0d 00  |x..edit..... 0..|
000000d0  8c 05 e0 0d 00 96 05 3a  0d 00 a0 0b dd 20 f2 69  |.......:..... .i|
000000e0  6e 69 74 0d 00 aa 0c 67  72 69 64 78 3d 32 36 0d  |nit....gridx=26.|
000000f0  00 b4 0c 67 72 69 64 79  3d 32 36 0d 00 be 08 67  |...gridy=26....g|
00000100  3d 33 32 0d 00 c8 0b 6d  69 64 3d 67 2f 32 0d 00  |=32....mid=g/2..|
00000110  d2 10 6d 61 78 5f 70 61  74 68 3d 31 30 30 0d 00  |..max_path=100..|
00000120  dc 0f 6d 61 78 5f 6c 65  6e 3d 31 30 30 0d 00 e6  |..max_len=100...|
00000130  1e de 20 70 61 74 68 73  20 6d 61 78 5f 70 61 74  |.. paths max_pat|
00000140  68 2a 6d 61 78 5f 6c 65  6e 2a 32 0d 00 f0 17 de  |h*max_len*2.....|
00000150  20 67 72 69 64 28 67 72  69 64 78 2c 67 72 69 64  | grid(gridx,grid|
00000160  79 29 0d 00 fa 1e de 20  66 69 6c 65 24 28 31 29  |y)..... file$(1)|
00000170  2c 74 79 70 65 28 31 29  2c 64 69 72 24 28 31 29  |,type(1),dir$(1)|
00000180  0d 01 04 27 de 20 73 70  72 24 28 6d 61 78 5f 70  |...'. spr$(max_p|
00000190  61 74 68 2d 31 29 2c 63  6f 6d 24 28 6d 61 78 5f  |ath-1),com$(max_|
000001a0  70 61 74 68 2d 31 29 0d  01 0e 14 74 79 70 65 28  |path-1)....type(|
000001b0  29 3d 26 46 46 46 2c 26  46 46 39 0d 01 18 1f 64  |)=&FFF,&FF9....d|
000001c0  69 72 24 28 29 3d 22 4d  6f 76 65 6d 65 6e 74 22  |ir$()="Movement"|
000001d0  2c 22 53 70 72 69 74 65  73 22 0d 01 22 0b 6d 6f  |,"Sprites"..".mo|
000001e0  76 65 73 3d 30 0d 01 2c  0a 71 75 69 74 3d a3 0d  |ves=0..,.quit=..|
000001f0  01 36 0d 73 70 72 69 74  65 73 3d 31 0d 01 40 16  |.6.sprites=1..@.|
00000200  e3 20 70 3d 30 20 b8 20  6d 61 78 5f 70 61 74 68  |. p=0 . max_path|
00000210  2d 31 0d 01 4a 1e 20 70  61 74 68 73 21 28 70 2a  |-1..J. paths!(p*|
00000220  6d 61 78 5f 6c 65 6e 2a  32 29 3d 26 46 46 46 46  |max_len*2)=&FFFF|
00000230  0d 01 54 05 ed 0d 01 5e  1b 78 73 74 61 72 74 3d  |..T....^.xstart=|
00000240  28 31 32 38 30 2b 67 72  69 64 78 2a 67 29 81 32  |(1280+gridx*g).2|
00000250  0d 01 68 16 79 73 74 61  72 74 3d 28 67 72 69 64  |..h.ystart=(grid|
00000260  79 2a 67 29 81 32 0d 01  72 0a 70 61 74 68 3d 30  |y*g).2..r.path=0|
00000270  0d 01 7c 13 73 70 61 63  65 3d 93 2d e0 2d 36 35  |..|.space=.-.-65|
00000280  35 33 36 0d 01 86 13 de  20 73 70 72 69 74 65 73  |536..... sprites|
00000290  20 73 70 61 63 65 0d 01  90 12 21 73 70 72 69 74  | space....!sprit|
000002a0  65 73 3d 73 70 61 63 65  0d 01 9a 10 73 70 72 69  |es=space....spri|
000002b0  74 65 73 21 38 3d 31 36  0d 01 a4 36 c8 99 20 22  |tes!8=16...6.. "|
000002c0  4f 53 5f 53 57 49 4e 75  6d 62 65 72 46 72 6f 6d  |OS_SWINumberFrom|
000002d0  53 74 72 69 6e 67 22 2c  2c 22 58 4f 53 5f 53 70  |String",,"XOS_Sp|
000002e0  72 69 74 65 4f 70 22 20  b8 20 73 70 6f 70 0d 01  |riteOp" . spop..|
000002f0  ae 18 c8 99 20 73 70 6f  70 2c 26 31 30 39 2c 73  |.... spop,&109,s|
00000300  70 72 69 74 65 73 0d 01  b8 05 e1 0d 01 c2 05 3a  |prites.........:|
00000310  0d 01 cc 16 dd 20 f2 6c  6f 61 64 5f 66 69 6c 65  |..... .load_file|
00000320  28 6e 2c 61 24 29 0d 01  d6 11 e7 20 a4 6f 6b 28  |(n,a$)..... .ok(|
00000330  6e 2c 61 24 29 20 8c 0d  01 e0 10 20 66 69 6c 65  |n,a$) ..... file|
00000340  24 28 6e 29 3d 61 24 0d  01 ea 0b 20 c8 8e 20 6e  |$(n)=a$.... .. n|
00000350  20 ca 0d 01 f4 26 20 20  c9 20 30 20 3a 20 f2 6c  | ....&  . 0 : .l|
00000360  6f 61 64 5f 64 61 74 61  28 64 69 72 24 28 6e 29  |oad_data(dir$(n)|
00000370  2b 22 2e 22 2b 61 24 29  0d 01 fe 29 20 20 c9 20  |+"."+a$)...)  . |
00000380  31 20 3a 20 f2 6c 6f 61  64 5f 73 70 72 69 74 65  |1 : .load_sprite|
00000390  73 28 64 69 72 24 28 6e  29 2b 22 2e 22 2b 61 24  |s(dir$(n)+"."+a$|
000003a0  29 0d 02 08 06 20 cb 0d  02 12 05 cd 0d 02 1c 0c  |).... ..........|
000003b0  f2 6e 61 6d 65 28 6e 29  0d 02 26 05 e1 0d 02 30  |.name(n)..&....0|
000003c0  05 3a 0d 02 3a 0f dd 20  a4 6f 6b 28 6e 2c 61 24  |.:..:.. .ok(n,a$|
000003d0  29 0d 02 44 31 c8 99 20  22 4f 53 5f 46 69 6c 65  |)..D1.. "OS_File|
000003e0  22 2c 35 2c 64 69 72 24  28 6e 29 2b 22 2e 22 2b  |",5,dir$(n)+"."+|
000003f0  61 24 20 b8 20 61 2c 2c  74 79 70 65 2c 2c 73 69  |a$ . a,,type,,si|
00000400  7a 65 0d 02 4e 17 74 79  70 65 3d 28 74 79 70 65  |ze..N.type=(type|
00000410  3e 3e 38 29 80 26 46 46  46 0d 02 58 0f e7 20 61  |>>8).&FFF..X.. a|
00000420  3c 3e 31 20 8c 20 3d a3  0d 02 62 18 e7 20 74 79  |<>1 . =...b.. ty|
00000430  70 65 3c 3e 74 79 70 65  28 6e 29 20 8c 20 3d a3  |pe<>type(n) . =.|
00000440  0d 02 6c 1b e7 20 6e 3d  31 20 80 20 73 69 7a 65  |..l.. n=1 . size|
00000450  3e 73 70 61 63 65 20 8c  20 3d a3 0d 02 76 06 3d  |>space . =...v.=|
00000460  b9 0d 02 80 05 3a 0d 02  8a 17 dd 20 f2 6c 6f 61  |.....:..... .loa|
00000470  64 5f 64 61 74 61 28 66  69 6c 65 24 29 0d 02 94  |d_data(file$)...|
00000480  0f 69 6e 3d 8e 28 66 69  6c 65 24 29 0d 02 9e 07  |.in=.(file$)....|
00000490  70 3d 30 0d 02 a8 05 f5  0d 02 b2 0f 20 6c 69 6e  |p=0......... lin|
000004a0  65 24 3d be 23 69 6e 0d  02 bc 23 20 e7 20 c0 6c  |e$=.#in...# . .l|
000004b0  69 6e 65 24 2c 31 29 3c  3e 22 3b 22 20 80 20 6c  |ine$,1)<>";" . l|
000004c0  69 6e 65 24 3c 3e 22 22  20 8c 0d 02 c6 1a 20 20  |ine$<>"" .....  |
000004d0  e7 20 c1 6c 69 6e 65 24  2c 32 37 2c 31 29 3d 22  |. .line$,27,1)="|
000004e0  20 22 20 8c 0d 02 d0 21  20 20 20 63 6f 6d 24 28  | " ....!   com$(|
000004f0  70 29 3d a4 73 74 72 69  70 28 c0 6c 69 6e 65 24  |p)=.strip(.line$|
00000500  2c 31 34 29 29 0d 02 da  24 20 20 20 73 70 72 24  |,14))...$   spr$|
00000510  28 70 29 3d a4 73 74 72  69 70 28 c1 6c 69 6e 65  |(p)=.strip(.line|
00000520  24 2c 31 35 2c 31 33 29  29 0d 02 e4 17 20 20 20  |$,15,13))....   |
00000530  70 61 74 68 24 3d c1 6c  69 6e 65 24 2c 32 38 29  |path$=.line$,28)|
00000540  0d 02 ee 07 20 20 cc 0d  02 f8 21 20 20 20 73 70  |....  ....!   sp|
00000550  72 24 28 70 29 3d a4 73  74 72 69 70 28 c0 6c 69  |r$(p)=.strip(.li|
00000560  6e 65 24 2c 31 34 29 29  0d 03 02 17 20 20 20 70  |ne$,14))....   p|
00000570  61 74 68 24 3d c1 6c 69  6e 65 24 2c 31 35 29 0d  |ath$=.line$,15).|
00000580  03 0c 07 20 20 cd 0d 03  16 19 20 20 61 3d 70 61  |...  .....  a=pa|
00000590  74 68 73 2b 70 2a 6d 61  78 5f 6c 65 6e 2a 32 0d  |ths+p*max_len*2.|
000005a0  03 20 19 20 20 61 3f 30  3d 97 c1 70 61 74 68 24  |. .  a?0=..path$|
000005b0  2c 31 2c 31 29 2d 36 34  0d 03 2a 19 20 20 61 3f  |,1,1)-64..*.  a?|
000005c0  31 3d 97 c1 70 61 74 68  24 2c 32 2c 31 29 2d 36  |1=..path$,2,1)-6|
000005d0  34 0d 03 34 16 20 20 e3  20 69 3d 32 20 b8 20 a9  |4..4.  . i=2 . .|
000005e0  70 61 74 68 24 2d 31 0d  03 3e 1e 20 20 20 61 3f  |path$-1..>.   a?|
000005f0  69 3d a4 61 73 63 28 c1  70 61 74 68 24 2c 69 2b  |i=.asc(.path$,i+|
00000600  31 2c 31 29 29 0d 03 48  07 20 20 ed 0d 03 52 0b  |1,1))..H.  ...R.|
00000610  20 20 61 3f 69 3d 30 0d  03 5c 0f 20 20 61 3f 28  |  a?i=0..\.  a?(|
00000620  69 2b 31 29 3d 30 0d 03  66 0a 20 20 70 2b 3d 31  |i+1)=0..f.  p+=1|
00000630  0d 03 70 06 20 cd 0d 03  7a 0a fd 20 c5 23 69 6e  |..p. ...z.. .#in|
00000640  0d 03 84 09 d9 20 23 69  6e 0d 03 8e 05 e1 0d 03  |..... #in.......|
00000650  98 05 3a 0d 03 a2 10 dd  20 a4 73 74 72 69 70 28  |..:..... .strip(|
00000660  73 24 29 0d 03 ac 11 c8  95 20 c0 73 24 2c 31 29  |s$)...... .s$,1)|
00000670  3d 22 20 22 0d 03 b6 0e  20 73 24 3d c1 73 24 2c  |=" ".... s$=.s$,|
00000680  32 29 0d 03 c0 05 ce 0d  03 ca 11 c8 95 20 c2 73  |2)........... .s|
00000690  24 2c 31 29 3d 22 20 22  0d 03 d4 0c 20 73 24 3d  |$,1)=" ".... s$=|
000006a0  c0 73 24 29 0d 03 de 05  ce 0d 03 e8 07 3d 73 24  |.s$).........=s$|
000006b0  0d 03 f2 05 3a 0d 03 fc  1a dd 20 f2 6c 6f 61 64  |....:..... .load|
000006c0  5f 73 70 72 69 74 65 73  28 66 69 6c 65 24 29 0d  |_sprites(file$).|
000006d0  04 06 1e c8 99 20 73 70  6f 70 2c 26 31 30 41 2c  |..... spop,&10A,|
000006e0  73 70 72 69 74 65 73 2c  66 69 6c 65 24 0d 04 10  |sprites,file$...|
000006f0  05 e1 0d 04 1a 05 3a 0d  04 24 0d dd 20 f2 73 63  |......:..$.. .sc|
00000700  72 65 65 6e 0d 04 2e 09  fb 20 31 2c 31 0d 04 38  |reen..... 1,1..8|
00000710  09 fb 20 32 2c 32 0d 04  42 09 fb 20 33 2c 34 0d  |.. 2,2..B.. 3,4.|
00000720  04 4c 09 fb 20 34 2c 34  0d 04 56 09 fb 20 35 2c  |.L.. 4,4..V.. 5,|
00000730  31 0d 04 60 09 fb 20 36  2c 32 0d 04 6a 09 fb 20  |1..`.. 6,2..j.. |
00000740  37 2c 37 0d 04 74 0f fb  20 38 2c 30 2c 30 2c 26  |7,7..t.. 8,0,0,&|
00000750  43 43 0d 04 7e 11 fb 20  39 2c 26 43 43 2c 26 43  |CC..~.. 9,&CC,&C|
00000760  43 2c 30 0d 04 88 14 fb  20 31 30 2c 26 38 38 2c  |C,0..... 10,&88,|
00000770  26 43 43 2c 26 43 43 0d  04 92 14 fb 20 31 31 2c  |&CC,&CC..... 11,|
00000780  26 46 46 2c 26 38 38 2c  26 34 34 0d 04 9c 14 fb  |&FF,&88,&44.....|
00000790  20 31 32 2c 26 34 34 2c  26 43 43 2c 26 34 34 0d  | 12,&44,&CC,&44.|
000007a0  04 a6 14 f2 61 6e 61 6d  65 28 22 46 69 6c 65 22  |....aname("File"|
000007b0  2c 30 29 0d 04 b0 14 f2  61 6e 61 6d 65 28 22 53  |,0).....aname("S|
000007c0  70 72 73 22 2c 32 29 0d  04 ba 09 fb 20 31 32 38  |prs",2)..... 128|
000007d0  0d 04 c4 08 fb 20 31 30  0d 04 ce 35 f1 8a 30 2c  |..... 10...5..0,|
000007e0  34 29 3b 22 50 61 74 68  3a 20 20 20 20 20 20 20  |4);"Path:       |
000007f0  20 20 20 20 20 20 20 20  20 20 20 20 54 65 73 74  |            Test|
00000800  20 20 53 61 76 65 20 20  51 75 69 74 22 0d 04 d8  |  Save  Quit"...|
00000810  07 e6 20 37 0d 04 e2 11  e3 20 78 3d 30 20 b8 20  |.. 7..... x=0 . |
00000820  67 72 69 64 78 0d 04 ec  12 20 e3 20 79 3d 30 20  |gridx.... . y=0 |
00000830  b8 20 67 72 69 64 79 0d  04 f6 10 20 20 c8 92 20  |. gridy....  .. |
00000840  78 2a 67 2c 79 2a 67 0d  05 00 06 20 ed 0d 05 0a  |x*g,y*g.... ....|
00000850  05 ed 0d 05 14 0c f2 6e  61 6d 65 28 30 29 0d 05  |.......name(0)..|
00000860  1e 0c f2 6e 61 6d 65 28  31 29 0d 05 28 05 e1 0d  |...name(1)..(...|
00000870  05 32 05 3a 0d 05 3c 19  dd 20 f2 61 6e 61 6d 65  |.2.:..<.. .aname|
00000880  28 6c 61 62 65 6c 24 2c  79 70 6f 73 29 0d 05 46  |(label$,ypos)..F|
00000890  09 fb 20 31 32 38 0d 05  50 07 fb 20 37 0d 05 5a  |.. 128..P.. 7..Z|
000008a0  22 f1 8a 30 2c 79 70 6f  73 29 3b a4 6c 70 61 64  |"..0,ypos);.lpad|
000008b0  28 6c 61 62 65 6c 24 2c  35 29 3b 22 3a 22 3b 0d  |(label$,5);":";.|
000008c0  05 64 09 fb 20 31 33 36  0d 05 6e 17 f1 8a 37 2c  |.d.. 136..n...7,|
000008d0  79 70 6f 73 29 3b c4 33  33 2c 22 20 22 29 3b 0d  |ypos);.33," ");.|
000008e0  05 78 09 fb 20 31 32 38  0d 05 82 05 e1 0d 05 8c  |.x.. 128........|
000008f0  05 3a 0d 05 96 0e dd 20  f2 6e 61 6d 65 28 6e 29  |.:..... .name(n)|
00000900  0d 05 a0 09 fb 20 31 33  36 0d 05 aa 07 fb 20 39  |..... 136..... 9|
00000910  0d 05 b4 26 f1 8a 37 2c  6e 2a 32 29 3b 66 69 6c  |...&..7,n*2);fil|
00000920  65 24 28 6e 29 3b 89 28  33 32 2d a9 66 69 6c 65  |e$(n);.(32-.file|
00000930  24 28 6e 29 29 3b 0d 05  be 09 fb 20 31 32 38 0d  |$(n));..... 128.|
00000940  05 c8 05 e1 0d 05 d2 05  3a 0d 05 dc 0e dd 20 f2  |........:..... .|
00000950  69 6e 66 6f 28 70 29 0d  05 e6 08 fb 20 31 31 0d  |info(p)..... 11.|
00000960  05 f0 10 73 70 72 24 3d  73 70 72 24 28 70 29 0d  |...spr$=spr$(p).|
00000970  05 fa 19 e7 20 73 70 72  24 3d 22 22 20 73 70 72  |.... spr$="" spr|
00000980  24 3d 22 22 22 22 22 22  0d 06 04 1c f1 8a 36 2c  |$=""""""......6,|
00000990  34 29 3b c2 22 20 20 20  22 2b c3 70 2c 33 29 3b  |4);."   "+.p,3);|
000009a0  22 20 22 3b 0d 06 0e 19  e7 20 ac 20 a4 65 78 69  |" ";..... . .exi|
000009b0  73 74 73 28 73 70 72 24  29 20 fb 20 31 0d 06 18  |sts(spr$) . 1...|
000009c0  15 f1 20 a4 6c 70 61 64  28 73 70 72 24 2c 31 32  |.. .lpad(spr$,12|
000009d0  29 3b 0d 06 22 09 fb 20  31 33 36 0d 06 2c 07 fb  |);..".. 136..,..|
000009e0  20 39 0d 06 36 10 63 6f  6d 24 3d 63 6f 6d 24 28  | 9..6.com$=com$(|
000009f0  70 29 0d 06 40 19 e7 20  63 6f 6d 24 3d 22 22 20  |p)..@.. com$="" |
00000a00  63 6f 6d 24 3d 22 22 22  22 22 22 0d 06 4a 1c f1  |com$=""""""..J..|
00000a10  8a 32 37 2c 33 31 29 3b  a4 6c 70 61 64 28 63 6f  |.27,31);.lpad(co|
00000a20  6d 24 2c 31 32 29 3b 0d  06 54 09 fb 20 31 32 38  |m$,12);..T.. 128|
00000a30  0d 06 5e 05 e1 0d 06 68  05 3a 0d 06 72 11 dd 20  |..^....h.:..r.. |
00000a40  a4 6c 70 61 64 28 73 24  2c 6c 29 0d 06 7c 13 3d  |.lpad(s$,l)..|.=|
00000a50  c0 73 24 2b c4 6c 2c 22  20 22 29 2c 6c 29 0d 06  |.s$+.l," "),l)..|
00000a60  86 05 3a 0d 06 90 11 dd  20 a4 65 78 69 73 74 73  |..:..... .exists|
00000a70  28 73 24 29 0d 06 9a 20  c8 99 20 73 70 6f 70 2c  |(s$)... .. spop,|
00000a80  26 31 31 38 2c 73 70 72  69 74 65 73 2c 73 24 20  |&118,sprites,s$ |
00000a90  b8 20 3b 76 0d 06 a4 0e  3d 28 76 20 80 20 31 29  |. ;v....=(v . 1)|
00000aa0  3d 30 0d 06 ae 05 3a 0d  06 b8 0e dd 20 f2 76 69  |=0....:..... .vi|
00000ab0  65 77 28 70 29 0d 06 c2  0c f2 69 6e 66 6f 28 70  |ew(p).....info(p|
00000ac0  29 0d 06 cc 0c f2 64 72  61 77 28 70 29 0d 06 d6  |).....draw(p)...|
00000ad0  14 6c 65 6e 3d a4 73 65  74 5f 67 72 69 64 28 70  |.len=.set_grid(p|
00000ae0  29 0d 06 e0 0f f2 70 72  65 76 69 65 77 28 70 29  |).....preview(p)|
00000af0  0d 06 ea 05 e1 0d 06 f4  05 3a 0d 06 fe 0b dd 20  |.........:..... |
00000b00  f2 65 64 69 74 0d 07 08  0f f2 76 69 65 77 28 70  |.edit.....view(p|
00000b10  61 74 68 29 0d 07 12 0a  68 65 6c 64 3d a3 0d 07  |ath)....held=...|
00000b20  1c 05 f5 0d 07 26 06 20  f5 0d 07 30 0e 20 20 c8  |.....&. ...0.  .|
00000b30  97 20 78 2c 79 2c 7a 0d  07 3a 0f 20 20 73 68 69  |. x,y,z..:.  shi|
00000b40  66 74 3d a6 2d 31 0d 07  44 0e 20 20 63 74 72 6c  |ft=.-1..D.  ctrl|
00000b50  3d a6 2d 32 0d 07 4e 12  20 20 e7 20 7a 3d 30 20  |=.-2..N.  . z=0 |
00000b60  68 65 6c 64 3d a3 0d 07  58 0b 20 fd 20 7a 3c 3e  |held=...X. . z<>|
00000b70  30 0d 07 62 16 20 e7 20  7a 3c 3e 30 20 80 20 ac  |0..b. . z<>0 . .|
00000b80  20 68 65 6c 64 20 8c 0d  07 6c 0c 20 20 68 65 6c  | held ...l.  hel|
00000b90  64 3d b9 0d 07 76 0c 20  20 c8 8e 20 b9 20 ca 0d  |d=...v.  .. . ..|
00000ba0  07 80 1a 20 20 20 c9 20  79 3e 67 72 69 64 79 2a  |...   . y>gridy*|
00000bb0  67 3a f2 73 65 6c 65 63  74 0d 07 8a 13 20 20 20  |g:.select....   |
00000bc0  c9 20 78 3e 67 72 69 64  78 2a 67 3a 0d 07 94 11  |. x>gridx*g:....|
00000bd0  20 20 20 20 e7 20 79 3c  32 2a 67 20 8c 0d 07 9e  |    . y<2*g ....|
00000be0  11 20 20 20 20 20 f2 63  6f 6d 6d 65 6e 74 0d 07  |.     .comment..|
00000bf0  a8 09 20 20 20 20 cc 0d  07 b2 0f 20 20 20 20 20  |..    .....     |
00000c00  f2 72 65 70 6f 73 0d 07  bc 09 20 20 20 20 cd 0d  |.repos....    ..|
00000c10  07 c6 13 20 20 20 7f 20  20 20 20 20 3a f2 67 72  |...   .     :.gr|
00000c20  69 64 0d 07 d0 07 20 20  cb 0d 07 da 06 20 cd 0d  |id....  ..... ..|
00000c30  07 e4 0a fd 20 71 75 69  74 0d 07 ee 05 e1 0d 07  |.... quit.......|
00000c40  f8 05 3a 0d 08 02 0d dd  20 f2 73 65 6c 65 63 74  |..:..... .select|
00000c50  0d 08 0c 0f 78 70 6f 73  3d 78 20 81 20 33 32 0d  |....xpos=x . 32.|
00000c60  08 16 14 79 70 6f 73 3d  33 31 2d 28 79 20 81 20  |...ypos=31-(y . |
00000c70  33 32 29 0d 08 20 0d c8  8e 20 79 70 6f 73 20 ca  |32).. ... ypos .|
00000c80  0d 08 2a 0b 20 c9 20 30  2c 32 3a 0d 08 34 15 20  |..*. . 0,2:..4. |
00000c90  20 f2 6c 6f 61 64 28 79  70 6f 73 20 81 20 32 29  | .load(ypos . 2)|
00000ca0  0d 08 3e 09 20 c9 20 34  3a 0d 08 48 0c 20 20 c8  |..>. . 4:..H.  .|
00000cb0  8e 20 b9 20 ca 0d 08 52  27 20 20 20 c9 20 78 70  |. . ...R'   . xp|
00000cc0  6f 73 3e 3d 30 20 20 80  20 78 70 6f 73 3c 3d 38  |os>=0  . xpos<=8|
00000cd0  20 20 3a 20 f2 6e 65 77  70 61 74 68 0d 08 5c 29  |  : .newpath..\)|
00000ce0  20 20 20 c9 20 78 70 6f  73 3e 3d 31 30 20 80 20  |   . xpos>=10 . |
00000cf0  78 70 6f 73 3c 3d 32 31  20 3a 20 f2 6e 65 77 73  |xpos<=21 : .news|
00000d00  70 72 69 74 65 0d 08 66  24 20 20 20 c9 20 78 70  |prite..f$   . xp|
00000d10  6f 73 3e 3d 32 34 20 80  20 78 70 6f 73 3c 3d 32  |os>=24 . xpos<=2|
00000d20  37 20 3a 20 f2 74 65 73  74 0d 08 70 24 20 20 20  |7 : .test..p$   |
00000d30  c9 20 78 70 6f 73 3e 3d  33 30 20 80 20 78 70 6f  |. xpos>=30 . xpo|
00000d40  73 3c 3d 33 33 20 3a 20  f2 73 61 76 65 0d 08 7a  |s<=33 : .save..z|
00000d50  32 20 20 20 c9 20 78 70  6f 73 3e 3d 33 36 20 80  |2   . xpos>=36 .|
00000d60  20 78 70 6f 73 3c 3d 33  39 20 3a 20 68 65 6c 64  | xpos<=39 : held|
00000d70  3d a3 3a e7 20 7a 3d 37  20 71 75 69 74 3d b9 0d  |=.:. z=7 quit=..|
00000d80  08 84 07 20 20 cb 0d 08  8e 05 cb 0d 08 98 05 e1  |...  ...........|
00000d90  0d 08 a2 05 3a 0d 08 ac  0e dd 20 f2 6e 65 77 70  |....:..... .newp|
00000da0  61 74 68 0d 08 b6 0f f2  64 72 61 77 28 70 61 74  |ath.....draw(pat|
00000db0  68 29 0d 08 c0 2a e7 20  7a 20 80 20 34 20 70 61  |h)...*. z . 4 pa|
00000dc0  74 68 2b 3d 31 3a e7 20  70 61 74 68 3d 6d 61 78  |th+=1:. path=max|
00000dd0  5f 70 61 74 68 20 70 61  74 68 3d 30 0d 08 ca 2c  |_path path=0...,|
00000de0  e7 20 7a 20 80 20 31 20  70 61 74 68 2d 3d 31 3a  |. z . 1 path-=1:|
00000df0  e7 20 70 61 74 68 3c 30  20 70 61 74 68 3d 6d 61  |. path<0 path=ma|
00000e00  78 5f 70 61 74 68 2d 31  0d 08 d4 0f f2 76 69 65  |x_path-1.....vie|
00000e10  77 28 70 61 74 68 29 0d  08 de 05 e1 0d 08 e8 05  |w(path).........|
00000e20  3a 0d 08 f2 10 dd 20 f2  6e 65 77 73 70 72 69 74  |:..... .newsprit|
00000e30  65 0d 08 fc 09 fb 20 31  32 38 0d 09 06 08 fb 20  |e..... 128..... |
00000e40  31 31 0d 09 10 23 e7 20  73 70 72 24 28 70 61 74  |11...#. spr$(pat|
00000e50  68 29 3d 22 22 20 ef 20  33 31 2c 31 30 2c 34 2c  |h)="" . 31,10,4,|
00000e60  33 32 2c 33 32 0d 09 1a  24 6e 61 6d 65 24 3d a4  |32,32...$name$=.|
00000e70  61 6c 74 65 72 28 73 70  72 24 28 70 61 74 68 29  |alter(spr$(path)|
00000e80  2c 31 30 2c 34 2c 31 32  29 0d 09 24 1b e7 20 6e  |,10,4,12)..$.. n|
00000e90  61 6d 65 24 3c 3e 22 22  20 84 20 6b 65 79 3c 3e  |ame$<>"" . key<>|
00000ea0  32 37 20 8c 0d 09 2e 15  20 73 70 72 24 28 70 61  |27 ..... spr$(pa|
00000eb0  74 68 29 3d 6e 61 6d 65  24 0d 09 38 05 cd 0d 09  |th)=name$..8....|
00000ec0  42 0f f2 69 6e 66 6f 28  70 61 74 68 29 0d 09 4c  |B..info(path)..L|
00000ed0  05 e1 0d 09 56 05 3a 0d  09 60 0b dd 20 f2 73 61  |....V.:..`.. .sa|
00000ee0  76 65 0d 09 6a 0d fb 20  31 33 36 3a fb 20 39 0d  |ve..j.. 136:. 9.|
00000ef0  09 74 23 6e 61 6d 65 24  3d a4 61 6c 74 65 72 28  |.t#name$=.alter(|
00000f00  66 69 6c 65 24 28 30 29  2c 37 2c 6e 2a 32 2c 32  |file$(0),7,n*2,2|
00000f10  38 29 0d 09 7e 11 e7 20  6e 61 6d 65 24 3c 3e 22  |8)..~.. name$<>"|
00000f20  22 20 8c 0d 09 88 16 20  f2 73 61 76 65 5f 66 69  |" ..... .save_fi|
00000f30  6c 65 28 6e 61 6d 65 24  29 0d 09 92 05 cd 0d 09  |le(name$).......|
00000f40  9c 05 e1 0d 09 a6 05 3a  0d 09 b0 17 dd 20 f2 73  |.......:..... .s|
00000f50  61 76 65 5f 66 69 6c 65  28 66 69 6c 65 24 29 0d  |ave_file(file$).|
00000f60  09 ba 1c 6f 75 74 3d ae  28 64 69 72 24 28 30 29  |...out=.(dir$(0)|
00000f70  2b 22 2e 22 2b 66 69 6c  65 24 29 0d 09 c4 1a f2  |+"."+file$).....|
00000f80  62 70 75 74 28 6f 75 74  2c 22 3b 20 3e 22 2b 66  |bput(out,"; >"+f|
00000f90  69 6c 65 24 29 0d 09 ce  11 f2 62 70 75 74 28 6f  |ile$).....bput(o|
00000fa0  75 74 2c 22 22 29 0d 09  d8 16 e3 20 70 3d 30 20  |ut,"")..... p=0 |
00000fb0  b8 20 6d 61 78 5f 70 61  74 68 2d 31 0d 09 e2 18  |. max_path-1....|
00000fc0  20 61 3d 70 61 74 68 73  2b 70 2a 6d 61 78 5f 6c  | a=paths+p*max_l|
00000fd0  65 6e 2a 32 0d 09 ec 1d  20 e7 20 ac 20 28 3f 61  |en*2.... . . (?a|
00000fe0  3d 32 35 35 20 80 20 61  3f 31 3d 32 35 35 29 20  |=255 . a?1=255) |
00000ff0  8c 0d 09 f6 1c 20 20 73  70 72 24 3d a4 6c 70 61  |.....  spr$=.lpa|
00001000  64 28 73 70 72 24 28 70  29 2c 31 32 29 0d 0a 00  |d(spr$(p),12)...|
00001010  12 20 20 63 6f 6d 24 3d  63 6f 6d 24 28 70 29 0d  |.  com$=com$(p).|
00001020  0a 0a 2b 20 20 e7 20 63  6f 6d 24 3c 3e 22 22 20  |..+  . com$<>"" |
00001030  63 6f 6d 24 3d a4 6c 70  61 64 28 63 6f 6d 24 28  |com$=.lpad(com$(|
00001040  70 29 2c 31 32 29 2b 22  20 22 0d 0a 14 1e 20 20  |p),12)+" "....  |
00001050  70 61 74 68 24 3d bd 28  3f 61 2b 36 34 29 2b bd  |path$=.(?a+64)+.|
00001060  28 61 3f 31 2b 36 34 29  0d 0a 1e 09 20 20 69 3d  |(a?1+64)....  i=|
00001070  32 0d 0a 28 1e 20 20 c8  95 20 ac 20 28 61 3f 69  |2..(.  .. . (a?i|
00001080  3d 30 20 80 20 61 3f 28  69 2b 31 29 3d 30 29 0d  |=0 . a?(i+1)=0).|
00001090  0a 32 25 20 20 20 70 61  74 68 24 2b 3d a4 63 68  |.2%   path$+=.ch|
000010a0  72 28 61 3f 69 29 2b a4  63 68 72 28 61 3f 28 69  |r(a?i)+.chr(a?(i|
000010b0  2b 31 29 29 0d 0a 3c 0b  20 20 20 69 2b 3d 32 0d  |+1))..<.   i+=2.|
000010c0  0a 46 07 20 20 ce 0d 0a  50 28 20 20 f2 62 70 75  |.F.  ...P(  .bpu|
000010d0  74 28 6f 75 74 2c 22 20  22 2b 63 6f 6d 24 2b 73  |t(out," "+com$+s|
000010e0  70 72 24 2b 22 20 22 2b  70 61 74 68 24 29 0d 0a  |pr$+" "+path$)..|
000010f0  5a 06 20 cd 0d 0a 64 05  ed 0d 0a 6e 0a d9 20 23  |Z. ...d....n.. #|
00001100  6f 75 74 0d 0a 78 2a c8  99 20 22 4f 53 5f 46 69  |out..x*.. "OS_Fi|
00001110  6c 65 22 2c 31 38 2c 64  69 72 24 28 30 29 2b 22  |le",18,dir$(0)+"|
00001120  2e 22 2b 66 69 6c 65 24  2c 26 46 46 46 0d 0a 82  |."+file$,&FFF...|
00001130  12 66 69 6c 65 24 28 30  29 3d 66 69 6c 65 24 0d  |.file$(0)=file$.|
00001140  0a 8c 05 e1 0d 0a 96 05  3a 0d 0a a0 0d dd 20 a4  |........:..... .|
00001150  63 68 72 28 78 29 0d 0a  aa 1c e7 20 78 3c 31 32  |chr(x)..... x<12|
00001160  37 20 8c 20 3d bd 28 39  36 2b 28 31 32 37 2d 78  |7 . =.(96+(127-x|
00001170  29 29 0d 0a b4 12 3d bd  28 36 34 2b 28 78 2d 31  |))....=.(64+(x-1|
00001180  32 37 29 29 0d 0a be 05  3a 0d 0a c8 0e dd 20 a4  |27))....:..... .|
00001190  61 73 63 28 78 24 29 0d  0a d2 1d e7 20 78 24 3e  |asc(x$)..... x$>|
000011a0  3d 22 61 22 20 8c 20 3d  31 32 37 2d 28 97 78 24  |="a" . =127-(.x$|
000011b0  2d 39 36 29 0d 0a dc 11  3d 31 32 37 2b 28 97 78  |-96)....=127+(.x|
000011c0  24 2d 36 34 29 0d 0a e6  05 3a 0d 0a f0 11 dd 20  |$-64)....:..... |
000011d0  f2 62 70 75 74 28 66 2c  73 24 29 0d 0a fa 10 d5  |.bput(f,s$).....|
000011e0  20 23 66 2c 73 24 2b bd  31 30 3b 0d 0b 04 05 e1  | #f,s$+.10;.....|
000011f0  0d 0b 0e 05 3a 0d 0b 18  0e dd 20 f2 6c 6f 61 64  |....:..... .load|
00001200  28 6e 29 0d 0b 22 0d fb  20 31 33 36 3a fb 20 39  |(n)..".. 136:. 9|
00001210  0d 0b 2c 23 6e 61 6d 65  24 3d a4 61 6c 74 65 72  |..,#name$=.alter|
00001220  28 66 69 6c 65 24 28 6e  29 2c 37 2c 6e 2a 32 2c  |(file$(n),7,n*2,|
00001230  32 38 29 0d 0b 36 11 e7  20 6e 61 6d 65 24 3c 3e  |28)..6.. name$<>|
00001240  22 22 20 8c 0d 0b 40 18  20 f2 6c 6f 61 64 5f 66  |"" ...@. .load_f|
00001250  69 6c 65 28 6e 2c 6e 61  6d 65 24 29 0d 0b 4a 16  |ile(n,name$)..J.|
00001260  20 e7 20 6e 3d 30 20 f2  76 69 65 77 28 70 61 74  | . n=0 .view(pat|
00001270  68 29 0d 0b 54 05 cd 0d  0b 5e 05 e1 0d 0b 68 05  |h)..T....^....h.|
00001280  3a 0d 0b 72 1a dd 20 a4  61 6c 74 65 72 28 6f 6c  |:..r.. .alter(ol|
00001290  64 24 2c 78 2c 79 2c 6d  61 78 29 0d 0b 7c 12 ef  |d$,x,y,max)..|..|
000012a0  20 33 31 2c 78 2b a9 6f  6c 64 24 2c 79 0d 0b 86  | 31,x+.old$,y...|
000012b0  0b 61 24 3d 6f 6c 64 24  0d 0b 90 05 ee 0d 0b 9a  |.a$=old$........|
000012c0  08 c8 97 20 87 0d 0b a4  0c 2a 46 58 32 32 39 2c  |... .....*FX229,|
000012d0  31 0d 0b ae 0b 2a 46 58  32 31 2c 30 0d 0b b8 05  |1....*FX21,0....|
000012e0  f5 0d 0b c2 0a 20 6b 65  79 3d a5 0d 0b cc 24 20  |..... key=....$ |
000012f0  e7 20 6b 65 79 3d 31 32  37 20 80 20 a9 61 24 3e  |. key=127 . .a$>|
00001300  30 20 ef 20 31 32 37 3a  61 24 3d c0 61 24 29 0d  |0 . 127:a$=.a$).|
00001310  0b d6 29 20 e7 20 6b 65  79 3d 32 31 20 84 20 6b  |..) . key=21 . k|
00001320  65 79 3d 32 37 20 f1 c4  a9 61 24 2c bd 31 32 37  |ey=27 ...a$,.127|
00001330  29 3b 3a 61 24 3d 22 22  0d 0b e0 1a 20 e7 20 6b  |);:a$="".... . k|
00001340  65 79 3d 32 37 20 61 24  3d 6f 6c 64 24 3a f1 61  |ey=27 a$=old$:.a|
00001350  24 3b 0d 0b ea 30 20 e7  20 6b 65 79 3e 33 32 20  |$;...0 . key>32 |
00001360  80 20 6b 65 79 3c 31 32  37 20 80 20 a9 61 24 3c  |. key<127 . .a$<|
00001370  6d 61 78 20 61 24 2b 3d  bd 6b 65 79 3a ef 20 6b  |max a$+=.key:. k|
00001380  65 79 0d 0b f4 15 fd 20  6b 65 79 3d 31 33 20 84  |ey..... key=13 .|
00001390  20 6b 65 79 3d 32 37 0d  0b fe 12 e7 20 6b 65 79  | key=27..... key|
000013a0  3d 32 37 20 61 24 3d 22  22 0d 0c 08 0c 2a 46 58  |=27 a$=""....*FX|
000013b0  32 32 39 2c 30 0d 0c 12  05 87 0d 0c 1c 08 c8 97  |229,0...........|
000013c0  20 ee 0d 0c 26 09 fb 20  31 32 38 0d 0c 30 07 3d  | ...&.. 128..0.=|
000013d0  61 24 0d 0c 3a 05 3a 0d  0c 44 0c dd 20 f2 72 65  |a$..:.:..D.. .re|
000013e0  70 6f 73 0d 0c 4e 0c 78  73 74 61 72 74 3d 78 0d  |pos..N.xstart=x.|
000013f0  0c 58 0c 79 73 74 61 72  74 3d 79 0d 0c 62 12 f2  |.X.ystart=y..b..|
00001400  70 72 65 76 69 65 77 28  70 61 74 68 29 0d 0c 6c  |preview(path)..l|
00001410  05 e1 0d 0c 76 05 3a 0d  0c 80 16 dd 20 a4 65 72  |....v.:..... .er|
00001420  72 28 70 2c 78 6e 2c 79  6e 2c 61 74 29 0d 0c 8a  |r(p,xn,yn,at)...|
00001430  11 ea 20 61 2c 78 2c 79  2c 6f 78 2c 6f 79 0d 0c  |.. a,x,y,ox,oy..|
00001440  94 17 61 3d 70 61 74 68  73 2b 70 2a 6d 61 78 5f  |..a=paths+p*max_|
00001450  6c 65 6e 2a 32 0d 0c 9e  0d 61 74 3d 61 2b 61 74  |len*2....at=a+at|
00001460  2a 32 0d 0c a8 12 6f 78  3d 3f 61 74 3a 6f 79 3d  |*2....ox=?at:oy=|
00001470  61 74 3f 31 0d 0c b2 12  3f 61 74 3d 78 6e 3a 61  |at?1....?at=xn:a|
00001480  74 3f 31 3d 79 6e 0d 0c  bc 09 78 3d 61 3f 30 0d  |t?1=yn....x=a?0.|
00001490  0c c6 09 79 3d 61 3f 31  0d 0c d0 11 65 72 72 3d  |...y=a?1....err=|
000014a0  a4 6f 66 66 28 78 2c 79  29 0d 0c da 19 e7 20 ac  |.off(x,y)..... .|
000014b0  20 28 78 3d 32 35 35 20  80 20 79 3d 32 35 35 29  | (x=255 . y=255)|
000014c0  20 8c 0d 0c e4 09 20 61  2b 3d 32 0d 0c ee 20 20  | ..... a+=2...  |
000014d0  c8 95 20 ac 20 28 3f 61  3d 30 20 80 20 61 3f 31  |.. . (?a=0 . a?1|
000014e0  3d 30 29 20 80 20 ac 20  65 72 72 0d 0c f8 12 20  |=0) . . err.... |
000014f0  20 78 2b 3d 28 61 3f 30  2d 31 32 37 29 0d 0d 02  | x+=(a?0-127)...|
00001500  12 20 20 79 2b 3d 28 61  3f 31 2d 31 32 37 29 0d  |.  y+=(a?1-127).|
00001510  0d 0c 0a 20 20 61 2b 3d  32 0d 0d 16 13 20 20 65  |...  a+=2....  e|
00001520  72 72 3d a4 6f 66 66 28  78 2c 79 29 0d 0d 20 06  |rr=.off(x,y).. .|
00001530  20 ce 0d 0d 2a 05 cd 0d  0d 34 0a 3f 61 74 3d 6f  | ...*....4.?at=o|
00001540  78 0d 0d 3e 0b 61 74 3f  31 3d 6f 79 0d 0d 48 08  |x..>.at?1=oy..H.|
00001550  3d 65 72 72 0d 0d 52 05  3a 0d 0d 5c 11 dd 20 a4  |=err..R.:..\.. .|
00001560  6f 66 66 28 78 78 2c 79  79 29 0d 0d 66 2a 3d 28  |off(xx,yy)..f*=(|
00001570  78 78 3c 30 20 84 20 79  79 3c 30 20 84 20 78 78  |xx<0 . yy<0 . xx|
00001580  3e 3d 67 72 69 64 78 20  84 20 79 79 3e 3d 67 72  |>=gridx . yy>=gr|
00001590  69 64 79 29 0d 0d 70 05  3a 0d 0d 7a 12 dd 20 a4  |idy)..p.:..z.. .|
000015a0  73 65 74 5f 67 72 69 64  28 70 29 0d 0d 84 0d 67  |set_grid(p)....g|
000015b0  72 69 64 28 29 3d 2d 31  0d 0d 8e 17 61 3d 70 61  |rid()=-1....a=pa|
000015c0  74 68 73 2b 70 2a 6d 61  78 5f 6c 65 6e 2a 32 0d  |ths+p*max_len*2.|
000015d0  0d 98 09 78 3d 61 3f 30  0d 0d a2 09 79 3d 61 3f  |...x=a?0....y=a?|
000015e0  31 0d 0d ac 07 6c 3d 30  0d 0d b6 19 e7 20 ac 20  |1....l=0..... . |
000015f0  28 78 3d 32 35 35 20 80  20 79 3d 32 35 35 29 20  |(x=255 . y=255) |
00001600  8c 0d 0d c0 10 20 67 72  69 64 28 78 2c 79 29 3d  |..... grid(x,y)=|
00001610  6c 0d 0d ca 09 20 6c 2b  3d 31 0d 0d d4 09 20 61  |l.... l+=1.... a|
00001620  2b 3d 32 0d 0d de 18 20  c8 95 20 ac 20 28 3f 61  |+=2.... .. . (?a|
00001630  3d 30 20 80 20 61 3f 31  3d 30 29 0d 0d e8 12 20  |=0 . a?1=0).... |
00001640  20 78 2b 3d 28 61 3f 30  2d 31 32 37 29 0d 0d f2  | x+=(a?0-127)...|
00001650  12 20 20 79 2b 3d 28 61  3f 31 2d 31 32 37 29 0d  |.  y+=(a?1-127).|
00001660  0d fc 1f 20 20 e7 20 67  72 69 64 28 78 2c 79 29  |...  . grid(x,y)|
00001670  3c 30 20 67 72 69 64 28  78 2c 79 29 3d 6c 0d 0e  |<0 grid(x,y)=l..|
00001680  06 0a 20 20 61 2b 3d 32  0d 0e 10 0a 20 20 6c 2b  |..  a+=2....  l+|
00001690  3d 31 0d 0e 1a 06 20 ce  0d 0e 24 05 cd 0d 0e 2e  |=1.... ...$.....|
000016a0  06 3d 6c 0d 0e 38 05 3a  0d 0e 42 0e dd 20 f2 64  |.=l..8.:..B.. .d|
000016b0  72 61 77 28 70 29 0d 0e  4c 11 ea 20 61 2c 78 2c  |raw(p)..L.. a,x,|
000016c0  79 2c 6f 78 2c 6f 79 0d  0e 56 17 61 3d 70 61 74  |y,ox,oy..V.a=pat|
000016d0  68 73 2b 70 2a 6d 61 78  5f 6c 65 6e 2a 32 0d 0e  |hs+p*max_len*2..|
000016e0  60 09 78 3d 61 3f 30 0d  0e 6a 09 79 3d 61 3f 31  |`.x=a?0..j.y=a?1|
000016f0  0d 0e 74 07 6c 3d 30 0d  0e 7e 19 e7 20 ac 20 28  |..t.l=0..~.. . (|
00001700  78 3d 32 35 35 20 80 20  79 3d 32 35 35 29 20 8c  |x=255 . y=255) .|
00001710  0d 0e 88 0a 20 e6 20 33  2c 31 0d 0e 92 1d 20 c8  |.... . 3,1.... .|
00001720  8f 20 78 2a 67 2b 6d 69  64 2c 79 2a 67 2b 6d 69  |. x*g+mid,y*g+mi|
00001730  64 2c 6d 69 64 2d 34 0d  0e 9c 0f 20 6f 78 3d 78  |d,mid-4.... ox=x|
00001740  2a 67 2b 6d 69 64 0d 0e  a6 0f 20 6f 79 3d 79 2a  |*g+mid.... oy=y*|
00001750  67 2b 6d 69 64 0d 0e b0  09 20 6c 2b 3d 31 0d 0e  |g+mid.... l+=1..|
00001760  ba 09 20 61 2b 3d 32 0d  0e c4 18 20 c8 95 20 ac  |.. a+=2.... .. .|
00001770  20 28 3f 61 3d 30 20 80  20 61 3f 31 3d 30 29 0d  | (?a=0 . a?1=0).|
00001780  0e ce 12 20 20 78 2b 3d  28 61 3f 30 2d 31 32 37  |...  x+=(a?0-127|
00001790  29 0d 0e d8 12 20 20 79  2b 3d 28 61 3f 31 2d 31  |)....  y+=(a?1-1|
000017a0  32 37 29 0d 0e e2 0b 20  20 e6 20 33 2c 32 0d 0e  |27)....  . 3,2..|
000017b0  ec 1e 20 20 c8 8f 20 78  2a 67 2b 6d 69 64 2c 79  |..  .. x*g+mid,y|
000017c0  2a 67 2b 6d 69 64 2c 6d  69 64 2d 34 0d 0e f6 0b  |*g+mid,mid-4....|
000017d0  20 20 e6 20 33 2c 34 0d  0f 00 0d 20 20 ec 20 6f  |  . 3,4....  . o|
000017e0  78 2c 6f 79 0d 0f 0a 10  20 20 6f 78 3d 78 2a 67  |x,oy....  ox=x*g|
000017f0  2b 6d 69 64 0d 0f 14 10  20 20 6f 79 3d 79 2a 67  |+mid....  oy=y*g|
00001800  2b 6d 69 64 0d 0f 1e 0d  20 20 df 20 6f 78 2c 6f  |+mid....  . ox,o|
00001810  79 0d 0f 28 0a 20 20 61  2b 3d 32 0d 0f 32 0a 20  |y..(.  a+=2..2. |
00001820  20 6c 2b 3d 31 0d 0f 3c  06 20 ce 0d 0f 46 05 cd  | l+=1..<. ...F..|
00001830  0d 0f 50 0a 78 65 6e 64  3d 78 0d 0f 5a 0a 79 65  |..P.xend=x..Z.ye|
00001840  6e 64 3d 79 0d 0f 64 05  e1 0d 0f 6e 05 3a 0d 0f  |nd=y..d....n.:..|
00001850  78 0b dd 20 f2 67 72 69  64 0d 0f 82 0c 78 67 3d  |x.. .grid....xg=|
00001860  78 20 81 20 67 0d 0f 8c  0c 79 67 3d 79 20 81 20  |x . g....yg=y . |
00001870  67 0d 0f 96 1a 61 3d 70  61 74 68 73 2b 70 61 74  |g....a=paths+pat|
00001880  68 2a 6d 61 78 5f 6c 65  6e 2a 32 0d 0f a0 11 65  |h*max_len*2....e|
00001890  3d 67 72 69 64 28 78 67  2c 79 67 29 0d 0f aa 0c  |=grid(xg,yg)....|
000018a0  e7 20 63 74 72 6c 20 8c  0d 0f b4 12 20 f2 64 65  |. ctrl ..... .de|
000018b0  6c 65 74 65 5f 70 6f 69  6e 74 0d 0f be 05 cc 0d  |lete_point......|
000018c0  0f c8 0f 20 f2 61 64 64  5f 70 6f 69 6e 74 0d 0f  |... .add_point..|
000018d0  d2 05 cd 0d 0f dc 05 e1  0d 0f e6 05 3a 0d 0f f0  |............:...|
000018e0  10 dd 20 f2 61 64 64 5f  70 6f 69 6e 74 0d 0f fa  |.. .add_point...|
000018f0  0b e7 20 65 3c 30 20 8c  0d 10 04 0e 20 e7 20 6c  |.. e<0 ..... . l|
00001900  65 6e 3d 30 20 8c 0d 10  0e 0b 20 20 3f 61 3d 78  |en=0 .....  ?a=x|
00001910  67 0d 10 18 0c 20 20 61  3f 31 3d 79 67 0d 10 22  |g....  a?1=yg.."|
00001920  0b 20 20 e6 20 33 2c 31  0d 10 2c 20 20 20 c8 8f  |.  . 3,1..,   ..|
00001930  20 78 67 2a 67 2b 6d 69  64 2c 79 67 2a 67 2b 6d  | xg*g+mid,yg*g+m|
00001940  69 64 2c 6d 69 64 2d 34  0d 10 36 06 20 cc 0d 10  |id,mid-4..6. ...|
00001950  40 1d 20 20 61 3f 28 6c  65 6e 2a 32 29 20 20 3d  |@.  a?(len*2)  =|
00001960  78 67 2d 78 65 6e 64 2b  31 32 37 0d 10 4a 1d 20  |xg-xend+127..J. |
00001970  20 61 3f 28 6c 65 6e 2a  32 2b 31 29 3d 79 67 2d  | a?(len*2+1)=yg-|
00001980  79 65 6e 64 2b 31 32 37  0d 10 54 0b 20 20 e6 20  |yend+127..T.  . |
00001990  33 2c 32 0d 10 5e 20 20  20 c8 8f 20 78 67 2a 67  |3,2..^   .. xg*g|
000019a0  2b 6d 69 64 2c 79 67 2a  67 2b 6d 69 64 2c 6d 69  |+mid,yg*g+mid,mi|
000019b0  64 2d 34 0d 10 68 0b 20  20 e6 20 33 2c 34 0d 10  |d-4..h.  . 3,4..|
000019c0  72 2f 20 20 86 20 78 65  6e 64 2a 67 2b 6d 69 64  |r/  . xend*g+mid|
000019d0  2c 79 65 6e 64 2a 67 2b  6d 69 64 2c 78 67 2a 67  |,yend*g+mid,xg*g|
000019e0  2b 6d 69 64 2c 79 67 2a  67 2b 6d 69 64 0d 10 7c  |+mid,yg*g+mid..||
000019f0  06 20 cd 0d 10 86 0c 20  78 65 6e 64 3d 78 67 0d  |. ..... xend=xg.|
00001a00  10 90 0c 20 79 65 6e 64  3d 79 67 0d 10 9a 14 20  |... yend=yg.... |
00001a10  67 72 69 64 28 78 67 2c  79 67 29 3d 6c 65 6e 0d  |grid(xg,yg)=len.|
00001a20  10 a4 0b 20 6c 65 6e 2b  3d 31 0d 10 ae 10 20 61  |... len+=1.... a|
00001a30  3f 28 6c 65 6e 2a 32 29  3d 30 0d 10 b8 12 20 61  |?(len*2)=0.... a|
00001a40  3f 28 6c 65 6e 2a 32 2b  31 29 3d 30 0d 10 c2 13  |?(len*2+1)=0....|
00001a50  20 f2 70 72 65 76 69 65  77 28 70 61 74 68 29 0d  | .preview(path).|
00001a60  10 cc 05 cc 0d 10 d6 0a  20 6f 78 3d 78 67 0d 10  |........ ox=xg..|
00001a70  e0 0a 20 6f 79 3d 79 67  0d 10 ea 06 20 f5 0d 10  |.. oy=yg.... ...|
00001a80  f4 07 20 20 f5 0d 10 fe  0f 20 20 20 c8 97 20 78  |..  .....   .. x|
00001a90  2c 79 2c 7a 0d 11 08 0f  20 20 20 78 31 3d 78 20  |,y,z....   x1=x |
00001aa0  81 20 67 0d 11 12 0f 20  20 20 79 31 3d 79 20 81  |. g....   y1=y .|
00001ab0  20 67 0d 11 1c 10 20 20  20 73 68 69 66 74 3d a6  | g....   shift=.|
00001ac0  2d 31 0d 11 26 1d 20 20  fd 20 7a 3d 30 20 84 20  |-1..&.  . z=0 . |
00001ad0  78 31 3c 3e 6f 78 20 84  20 79 31 3c 3e 6f 79 0d  |x1<>ox . y1<>oy.|
00001ae0  11 30 0e 20 20 e7 20 7a  3c 3e 30 20 8c 0d 11 3a  |.0.  . z<>0 ...:|
00001af0  24 20 20 20 e7 20 28 ac  20 73 68 69 66 74 29 20  |$   . (. shift) |
00001b00  84 20 65 3d 30 20 84 20  65 3d 6c 65 6e 2d 31 20  |. e=0 . e=len-1 |
00001b10  8c 0d 11 44 0f 20 20 20  20 e7 20 65 3d 30 20 8c  |...D.    . e=0 .|
00001b20  0d 11 4e 10 20 20 20 20  20 78 6e 65 77 3d 78 31  |..N.     xnew=x1|
00001b30  0d 11 58 10 20 20 20 20  20 79 6e 65 77 3d 79 31  |..X.     ynew=y1|
00001b40  0d 11 62 09 20 20 20 20  cc 0d 11 6c 1d 20 20 20  |..b.    ...l.   |
00001b50  20 20 78 6e 65 77 3d 61  3f 28 65 2a 32 29 20 20  |  xnew=a?(e*2)  |
00001b60  2b 78 31 2d 6f 78 0d 11  76 1d 20 20 20 20 20 79  |+x1-ox..v.     y|
00001b70  6e 65 77 3d 61 3f 28 65  2a 32 2b 31 29 2b 79 31  |new=a?(e*2+1)+y1|
00001b80  2d 6f 79 0d 11 80 09 20  20 20 20 cd 0d 11 8a 22  |-oy....    ...."|
00001b90  20 20 20 20 6f 66 66 3d  a4 65 72 72 28 70 61 74  |    off=.err(pat|
00001ba0  68 2c 78 6e 65 77 2c 79  6e 65 77 2c 65 29 0d 11  |h,xnew,ynew,e)..|
00001bb0  94 11 20 20 20 20 e7 20  ac 20 6f 66 66 20 8c 0d  |..    . . off ..|
00001bc0  11 9e 14 20 20 20 20 20  f2 64 72 61 77 28 70 61  |...     .draw(pa|
00001bd0  74 68 29 0d 11 a8 15 20  20 20 20 20 61 3f 28 65  |th)....     a?(e|
00001be0  2a 32 29 3d 78 6e 65 77  0d 11 b2 17 20 20 20 20  |*2)=xnew....    |
00001bf0  20 61 3f 28 65 2a 32 2b  31 29 3d 79 6e 65 77 0d  | a?(e*2+1)=ynew.|
00001c00  11 bc 14 20 20 20 20 20  f2 64 72 61 77 28 70 61  |...     .draw(pa|
00001c10  74 68 29 0d 11 c6 17 20  20 20 20 20 f2 70 72 65  |th)....     .pre|
00001c20  76 69 65 77 28 70 61 74  68 29 0d 11 d0 09 20 20  |view(path)....  |
00001c30  20 20 cd 0d 11 da 08 20  20 20 cc 0d 11 e4 17 20  |  .....   ..... |
00001c40  20 20 20 6f 66 66 3d a4  6f 66 66 28 78 31 2c 79  |   off=.off(x1,y|
00001c50  31 29 0d 11 ee 11 20 20  20 20 e7 20 ac 20 6f 66  |1)....    . . of|
00001c60  66 20 8c 0d 11 f8 14 20  20 20 20 20 f2 64 72 61  |f .....     .dra|
00001c70  77 28 70 61 74 68 29 0d  12 02 1b 20 20 20 20 20  |w(path)....     |
00001c80  61 3f 28 65 2a 32 29 20  20 2b 3d 28 78 31 2d 6f  |a?(e*2)  +=(x1-o|
00001c90  78 29 0d 12 0c 1b 20 20  20 20 20 61 3f 28 65 2a  |x)....     a?(e*|
00001ca0  32 2b 31 29 2b 3d 28 79  31 2d 6f 79 29 0d 12 16  |2+1)+=(y1-oy)...|
00001cb0  1b 20 20 20 20 20 61 3f  28 65 2a 32 2b 32 29 2b  |.     a?(e*2+2)+|
00001cc0  3d 28 6f 78 2d 78 31 29  0d 12 20 1b 20 20 20 20  |=(ox-x1).. .    |
00001cd0  20 61 3f 28 65 2a 32 2b  33 29 2b 3d 28 6f 79 2d  | a?(e*2+3)+=(oy-|
00001ce0  79 31 29 0d 12 2a 14 20  20 20 20 20 f2 64 72 61  |y1)..*.     .dra|
00001cf0  77 28 70 61 74 68 29 0d  12 34 17 20 20 20 20 20  |w(path)..4.     |
00001d00  f2 70 72 65 76 69 65 77  28 70 61 74 68 29 0d 12  |.preview(path)..|
00001d10  3e 09 20 20 20 20 cd 0d  12 48 08 20 20 20 cd 0d  |>.    ...H.   ..|
00001d20  12 52 1a 20 20 20 e7 20  ac 20 6f 66 66 20 6f 78  |.R.   . . off ox|
00001d30  3d 78 31 3a 6f 79 3d 79  31 0d 12 5c 07 20 20 cd  |=x1:oy=y1..\.  .|
00001d40  0d 12 66 0a 20 fd 20 7a  3d 30 0d 12 70 18 20 6c  |..f. . z=0..p. l|
00001d50  65 6e 3d a4 73 65 74 5f  67 72 69 64 28 70 61 74  |en=.set_grid(pat|
00001d60  68 29 0d 12 7a 05 cd 0d  12 84 05 e1 0d 12 8e 05  |h)..z...........|
00001d70  3a 0d 12 98 13 dd 20 f2  64 65 6c 65 74 65 5f 70  |:..... .delete_p|
00001d80  6f 69 6e 74 0d 12 a2 09  64 65 6c 3d a3 0d 12 ac  |oint....del=....|
00001d90  0a c8 8e 20 b9 20 ca 0d  12 b6 0b 20 c9 20 65 3d  |... . ..... . e=|
00001da0  30 3a 0d 12 c0 0f 20 20  e7 20 6c 65 6e 3d 31 20  |0:....  . len=1 |
00001db0  8c 0d 12 ca 12 20 20 20  f2 64 72 61 77 28 70 61  |.....   .draw(pa|
00001dc0  74 68 29 0d 12 d4 0f 20  20 20 21 61 3d 26 46 46  |th)....   !a=&FF|
00001dd0  46 46 0d 12 de 0c 20 20  20 64 65 6c 3d b9 0d 12  |FF....   del=...|
00001de0  e8 07 20 20 cd 0d 12 f2  0b 20 c9 20 65 3e 30 3a  |..  ..... . e>0:|
00001df0  0d 12 fc 1e 20 20 e7 20  a4 65 72 72 28 70 61 74  |....  . .err(pat|
00001e00  68 2c 31 32 37 2c 31 32  37 2c 65 29 20 8c 0d 13  |h,127,127,e) ...|
00001e10  06 0c 20 20 20 f4 20 6f  66 66 0d 13 10 07 20 20  |..   . off....  |
00001e20  cc 0d 13 1a 12 20 20 20  f2 64 72 61 77 28 70 61  |.....   .draw(pa|
00001e30  74 68 29 0d 13 24 0e 20  20 20 69 3d 61 2b 65 2a  |th)..$.   i=a+e*|
00001e40  32 0d 13 2e 08 20 20 20  f5 0d 13 38 0e 20 20 20  |2....   ...8.   |
00001e50  20 78 69 3d 69 3f 32 0d  13 42 0e 20 20 20 20 79  | xi=i?2..B.    y|
00001e60  69 3d 69 3f 33 0d 13 4c  0d 20 20 20 20 3f 69 3d  |i=i?3..L.    ?i=|
00001e70  78 69 0d 13 56 0e 20 20  20 20 69 3f 31 3d 79 69  |xi..V.    i?1=yi|
00001e80  0d 13 60 0c 20 20 20 20  69 2b 3d 32 0d 13 6a 14  |..`.    i+=2..j.|
00001e90  20 20 20 fd 20 78 69 3d  30 20 80 20 79 69 3d 30  |   . xi=0 . yi=0|
00001ea0  0d 13 74 0c 20 20 20 64  65 6c 3d b9 0d 13 7e 07  |..t.   del=...~.|
00001eb0  20 20 cd 0d 13 88 06 20  cd 0d 13 92 05 cb 0d 13  |  ..... ........|
00001ec0  9c 0b e7 20 64 65 6c 20  8c 0d 13 a6 10 20 f2 64  |... del ..... .d|
00001ed0  72 61 77 28 70 61 74 68  29 0d 13 b0 13 20 f2 70  |raw(path).... .p|
00001ee0  72 65 76 69 65 77 28 70  61 74 68 29 0d 13 ba 18  |review(path)....|
00001ef0  20 6c 65 6e 3d a4 73 65  74 5f 67 72 69 64 28 70  | len=.set_grid(p|
00001f00  61 74 68 29 0d 13 c4 05  cd 0d 13 ce 05 e1 0d 13  |ath)............|
00001f10  d8 05 3a 0d 13 e2 11 dd  20 f2 70 72 65 76 69 65  |..:..... .previe|
00001f20  77 28 70 29 0d 13 ec 09  ea 20 61 2c 69 0d 13 f6  |w(p)..... a,i...|
00001f30  17 61 3d 70 61 74 68 73  2b 70 2a 6d 61 78 5f 6c  |.a=paths+p*max_l|
00001f40  65 6e 2a 32 0d 14 00 26  ef 20 32 34 2c 67 72 69  |en*2...&. 24,gri|
00001f50  64 78 2a 67 2b 34 3b 32  2a 67 3b 31 32 37 39 3b  |dx*g+4;2*g;1279;|
00001f60  67 72 69 64 79 2a 67 3b  31 36 0d 14 0a 09 e6 20  |gridy*g;16..... |
00001f70  30 2c 34 0d 14 14 13 ec  20 78 73 74 61 72 74 2c  |0,4..... xstart,|
00001f80  79 73 74 61 72 74 0d 14  1e 1d e7 20 ac 20 28 61  |ystart..... . (a|
00001f90  3f 30 3d 32 35 35 20 80  20 61 3f 31 3d 32 35 35  |?0=255 . a?1=255|
00001fa0  29 20 8c 0d 14 28 12 20  e3 20 74 69 6d 65 73 3d  |) ...(. . times=|
00001fb0  31 20 b8 20 35 0d 14 32  09 20 20 69 3d 32 0d 14  |1 . 5..2.  i=2..|
00001fc0  3c 1e 20 20 c8 95 20 ac  20 28 61 3f 69 3d 30 20  |<.  .. . (a?i=0 |
00001fd0  80 20 61 3f 28 69 2b 31  29 3d 30 29 0d 14 46 27  |. a?(i+1)=0)..F'|
00001fe0  20 20 20 df 20 42 59 20  34 2a 28 61 3f 69 2d 31  |   . BY 4*(a?i-1|
00001ff0  32 37 29 2c 34 2a 28 61  3f 28 69 2b 31 29 2d 31  |27),4*(a?(i+1)-1|
00002000  32 37 29 0d 14 50 0b 20  20 20 69 2b 3d 32 0d 14  |27)..P.   i+=2..|
00002010  5a 07 20 20 ce 0d 14 64  06 20 ed 0d 14 6e 05 cd  |Z.  ...d. ...n..|
00002020  0d 14 78 08 ef 20 32 36  0d 14 82 05 e1 0d 14 8c  |..x.. 26........|
00002030  05 3a 0d 14 96 0b dd 20  f2 74 65 73 74 0d 14 a0  |.:..... .test...|
00002040  13 73 70 72 24 3d 73 70  72 24 28 70 61 74 68 29  |.spr$=spr$(path)|
00002050  0d 14 aa 1d e7 20 a4 65  78 69 73 74 73 28 73 70  |..... .exists(sp|
00002060  72 24 29 20 80 20 6c 65  6e 3e 31 20 8c 0d 14 b4  |r$) . len>1 ....|
00002070  0f 20 eb 20 31 32 3a eb  20 39 3a 87 0d 14 be 09  |. . 12:. 9:.....|
00002080  20 c8 97 20 ee 0d 14 c8  0d 20 2a 46 58 32 32 39  | .. ..... *FX229|
00002090  2c 31 0d 14 d2 17 20 f2  73 65 74 5f 70 61 6c 65  |,1.... .set_pale|
000020a0  74 74 65 28 73 70 72 24  29 0d 14 dc 21 20 73 74  |tte(spr$)...! st|
000020b0  61 72 74 3d 70 61 74 68  73 2b 70 61 74 68 2a 6d  |art=paths+path*m|
000020c0  61 78 5f 6c 65 6e 2a 32  2b 32 0d 14 e6 0a 20 78  |ax_len*2+2.... x|
000020d0  3d 36 34 30 0d 14 f0 0a  20 79 3d 35 31 32 0d 14  |=640.... y=512..|
000020e0  fa 08 20 62 3d 31 0d 15  04 0c 20 61 3d 73 74 61  |.. b=1.... a=sta|
000020f0  72 74 0d 15 0e 0c 20 77  61 69 74 73 3d 31 0d 15  |rt.... waits=1..|
00002100  18 06 20 f5 0d 15 22 18  20 20 e3 20 77 3d 31 20  |.. ...".  . w=1 |
00002110  b8 20 77 61 69 74 73 3a  c8 96 3a ed 0d 15 2c 10  |. waits:..:...,.|
00002120  20 20 c8 99 20 36 2c 31  31 32 2c 62 0d 15 36 12  |  .. 6,112,b..6.|
00002130  20 20 c8 99 20 36 2c 31  31 33 2c 33 2d 62 0d 15  |  .. 6,113,3-b..|
00002140  40 0b 20 20 62 3d 33 2d  62 0d 15 4a 07 20 20 db  |@.  b=3-b..J.  .|
00002150  0d 15 54 25 20 20 c8 99  20 73 70 6f 70 2c 26 31  |..T%  .. spop,&1|
00002160  32 32 2c 73 70 72 69 74  65 73 2c 73 70 72 24 2c  |22,sprites,spr$,|
00002170  78 2c 79 2c 38 0d 15 5e  1d 20 20 e7 20 61 3f 30  |x,y,8..^.  . a?0|
00002180  3d 30 20 80 20 61 3f 31  3d 30 20 61 3d 73 74 61  |=0 . a?1=0 a=sta|
00002190  72 74 0d 15 68 14 20 20  78 2b 3d 34 2a 28 61 3f  |rt..h.  x+=4*(a?|
000021a0  30 2d 31 32 37 29 0d 15  72 14 20 20 79 2b 3d 34  |0-127)..r.  y+=4|
000021b0  2a 28 61 3f 31 2d 31 32  37 29 0d 15 7c 0a 20 20  |*(a?1-127)..|.  |
000021c0  61 2b 3d 32 0d 15 86 10  20 20 c8 97 20 6d 78 2c  |a+=2....  .. mx,|
000021d0  6d 79 2c 7a 0d 15 90 12  20 20 e7 20 7a 3d 30 20  |my,z....  . z=0 |
000021e0  68 65 6c 64 3d a3 0d 15  9a 25 20 20 e7 20 7a 3e  |held=....%  . z>|
000021f0  30 20 80 20 ac 20 68 65  6c 64 20 78 3d 6d 78 3a  |0 . . held x=mx:|
00002200  79 3d 6d 79 3a 68 65 6c  64 3d b9 0d 15 a4 0a 20  |y=my:held=..... |
00002210  20 6b 3d a6 30 0d 15 ae  37 20 20 e7 20 6b 3e 3d  | k=.0...7  . k>=|
00002220  97 22 30 22 20 80 20 6b  3c 3d 97 22 39 22 20 77  |."0" . k<=."9" w|
00002230  61 69 74 73 3d 6b 2d 34  38 3a e7 20 77 61 69 74  |aits=k-48:. wait|
00002240  73 3d 30 20 77 61 69 74  73 3d 31 30 0d 15 b8 0b  |s=0 waits=10....|
00002250  20 fd 20 6b 3d 32 37 0d  15 c2 0e 20 2a 46 58 20  | . k=27.... *FX |
00002260  32 32 39 2c 30 0d 15 cc  0f 20 c8 99 20 36 2c 31  |229,0.... .. 6,1|
00002270  31 32 2c 31 0d 15 d6 0f  20 c8 99 20 36 2c 31 31  |12,1.... .. 6,11|
00002280  33 2c 31 0d 15 e0 06 20  db 0d 15 ea 0c 20 f2 73  |3,1.... ..... .s|
00002290  63 72 65 65 6e 0d 15 f4  10 20 f2 76 69 65 77 28  |creen.... .view(|
000022a0  70 61 74 68 29 0d 15 fe  05 cd 0d 16 08 05 e1 0d  |path)...........|
000022b0  16 12 05 3a 0d 16 1c 16  dd 20 f2 73 65 74 5f 70  |...:..... .set_p|
000022c0  61 6c 65 74 74 65 28 73  24 29 0d 16 26 28 c8 99  |alette(s$)..&(..|
000022d0  20 73 70 6f 70 2c 26 31  32 35 2c 73 70 72 69 74  | spop,&125,sprit|
000022e0  65 73 2c 73 24 2c 2d 31  20 b8 20 2c 2c 2c 2c 70  |es,s$,-1 . ,,,,p|
000022f0  61 6c 0d 16 30 0e e7 20  70 61 6c 3c 3e 30 20 8c  |al..0.. pal<>0 .|
00002300  0d 16 3a 11 20 e3 20 63  6f 6c 3d 30 20 b8 20 31  |..:. . col=0 . 1|
00002310  35 0d 16 44 1d 20 20 fb  20 63 6f 6c 2c 70 61 6c  |5..D.  . col,pal|
00002320  3f 31 2c 70 61 6c 3f 32  2c 70 61 6c 3f 33 0d 16  |?1,pal?2,pal?3..|
00002330  4e 0c 20 20 70 61 6c 2b  3d 38 0d 16 58 06 20 cd  |N.  pal+=8..X. .|
00002340  0d 16 62 05 ed 0d 16 6c  05 e1 0d 16 76 05 3a 0d  |..b....l....v.:.|
00002350  16 80 0e dd 20 f2 63 6f  6d 6d 65 6e 74 0d 16 8a  |.... .comment...|
00002360  0d fb 20 31 33 36 3a fb  20 39 0d 16 94 24 e7 20  |.. 136:. 9...$. |
00002370  63 6f 6d 24 28 70 61 74  68 29 3d 22 22 20 ef 20  |com$(path)="" . |
00002380  33 31 2c 32 37 2c 33 31  2c 33 32 2c 33 32 0d 16  |31,27,31,32,32..|
00002390  9e 2a 63 6f 6d 24 28 70  61 74 68 29 3d a4 61 6c  |.*com$(path)=.al|
000023a0  74 65 72 28 63 6f 6d 24  28 70 61 74 68 29 2c 32  |ter(com$(path),2|
000023b0  37 2c 33 31 2c 31 32 29  0d 16 a8 05 e1 0d ff     |7,31,12).......|
000023bf