Home » Archimedes archive » Acorn Computing » 1994 05.adf » 9405 » Grafix/PINS

Grafix/PINS

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 Computing » 1994 05.adf » 9405
Filename: Grafix/PINS
Read OK:
File size: 192C bytes
Load address: 0000
Exec address: 0000
File contents
   10REM >PINS
   20REM Acorn Computing
   30REM by MAG & CAT
   40ON ERROR MODE MODE:REPORT:PRINT" at ";ERL:END
   50MODE7:OFF
   60PRINT''''''"HAVE YOU ALLOCATED 288k"
   70PRINT"  FOR System Sprites?"
   80PRINT'"    (Press RETURN)"
   90REPEATUNTILGET=13
  100MODE13
  110OFF
  120O$="OS_SpriteOp"
  130
  140PROCdims
  150PROCinit
  160PROCloadem
  170PROCsprites
  180PROCinitgrab
  190
  200REPEAT
  210PROCscreen
  220REM loop------------------
  230REPEAT
  240PROCkeys
  250PRINTTAB(2,1)"Pin=";G%(W%);" "
  260UNTILINKEY-91
  270PROCinit
  280UNTIL0
  290REM ---------------------
  300
  310REM dims
  320DEFPROCdims
  330np%=12
  340DIMP%(np%)
  350DIMG%(600)
  360DIMZ%(600)
  370DIMR%(12)
  380ENDPROC
  390
  400REM init
  410DEFPROCinit
  420erase%=8
  430rect1%=0
  440yadd%=0:xadd%=0
  450num1%=0
  460num2%=0
  470copy%=0
  480aa%=540
  490bb%=940
  500X%=60
  510Y%=220
  520OX%=X%:OY%=Y%
  530M%=24
  540t%=18
  550W%=0
  560G%()=0
  570WC%=1
  580ENDPROC
  590
  600REM screen
  610DEFPROCscreen
  620CLS
  630FORJ%=224TO936STEP24
  640FORI%=64TO520STEP24
  650SYS O$,&222,S%,P%(0),I%,J%,0
  660NEXT
  670NEXT
  680SYS O$,&222,S%,C%,X%,Y%,11
  690ENDPROC
  700
  710REM" KEYS
  720DEFPROCkeys
  730IFINKEY-98ORINKEY-26PROCM(-M%,0)
  740IFINKEY-67ORINKEY-122PROCM(M%,0)
  750IFINKEY-80ORINKEY-58PROCM(0,M%)
  760IFINKEY-105ORINKEY-42PROCM(0,-M%)
  770CASE WC% OF
  780WHEN 1:
  790IFINKEY-52PROCrecord
  800IFINKEY-66PROCanimate(12,0,-1)
  810IFINKEY-17PROCanimate(0,12,1)
  820IFINKEY-46PROCkeypush(0)
  830IFINKEY-49PROCkeypush(1)
  840IFINKEY-50PROCkeypush(2)
  850IFINKEY-18PROCkeypush(3)
  860IFINKEY-19PROCkeypush(4)
  870IFINKEY-20PROCkeypush(5)
  880IFINKEY-53PROCkeypush(6)
  890IFINKEY-37PROCkeypush(7)
  900IFINKEY-22PROCkeypush(8)
  910IFINKEY-39PROCkeypush(9)
  920IFINKEY-40PROCkeypush(10)
  930IFINKEY-24PROCkeypush(11)
  940IFINKEY-94PROCkeypush(12)
  950IFINKEY-74PROCpush
  960IFINKEY-99PROCpull
  970IFINKEY-56PROCpicTake
  980IFINKEY-106PROCcopy
  990IFINKEY-82PROCsave
 1000IFINKEY-87PROCload
 1010WHEN 2:
 1020IFINKEY-74ANDcopy%=1PROCfix(1):copy%=2:REPEATUNTILNOTINKEY-74
 1030IFINKEY-74ANDcopy%=2PROCfix(2):copy%=3:REPEATUNTILNOTINKEY-74
 1040IFINKEY-74ANDcopy%=3PROCcopyto:REPEATUNTILNOTINKEY-74
 1050IFINKEY-90PROCuncopy
 1060ENDCASE
 1070ENDPROC
 1080
 1090REM move crosshair
 1100DEFPROCM(x%,y%)
 1110IFX%+x%<60ORX%+x%>516ENDPROC
 1120IFY%+y%<220ORY%+y%>916ENDPROC
 1130IFrect1%=1:IFcopy%=3GCOL3,3:RECTANGLEX%,Y%,((xadd%+1)*24),((yadd%+1)*24)
 1140IFcopy%<3SYS O$,&222,S%,C%,X%,Y%,11
 1150X%+=x%:Y%+=y%
 1160W%=(X%-60)DIV24+((Y%-220)DIV24)*20
 1170IFcopy%<3SYS O$,&222,S%,C%,X%,Y%,11
 1180IFcopy%=3GCOL3,3:RECTANGLEX%,Y%,((xadd%+1)*24),((yadd%+1)*24):IFrect1%=0rect1%=1
 1190IFINKEY-3ORINKEY-2TIME=0:REPEATUNTILTIME>2:ENDPROC
 1200TIME=0:REPEATUNTILTIME>t%
 1210ENDPROC
 1220
 1230REM +++++++++++++++++++++++++++++
 1240REM" LOAD SPRITEfile/SET UP AREA
 1250DEFPROCloadem
 1260
 1270s$="<MAG$Dir>.PINSFILE"
 1280file%=OPENIN(s$)
 1290L%=EXT#file%+64
 1300CLOSE#file%
 1310DIM S% L%
 1320S%!0=L%
 1330SYS "OS_SpriteOp",256+9,S%
 1340SYS "OS_SpriteOp",256+10,S%,s$
 1350ENDPROC
 1360
 1370REM SPRITES
 1380DEFPROCsprites
 1390FORI%=0TOnp%
 1400PROCsetSprite("PIN"+STR$I%,P%(I%),a%,b%)
 1410NEXT
 1420PROCsetSprite("CROSSHAIR",C%,a%,b%)
 1430PROCsetSprite("COPYHAIR",C2%,a%,b%)
 1440PROCsetSprite("BLACKHAIR",CB%,a%,b%)
 1450ENDPROC
 1460
 1470REM set sprites
 1480DEFPROCsetSprite(s$,RETURN A%,RETURN W%,RETURN H%)
 1490SYS "OS_SpriteOp",256+24,S%,s$ TO ,,A%
 1500SYS "OS_SpriteOp",256+40,S%,s$ TO ,,,W%,H%
 1510W%=W%*4:H%=H%*4
 1520ENDPROC
 1530
 1540REM  GRAB SPRITE AREA
 1550DEFPROCinitgrab
 1560g$="<MAG$Dir>.grab"
 1570DIM g% 23000
 1580g%!0=64000
 1590g%!8=16
 1600SYS "OS_SpriteOp",256+9,g%
 1610ENDPROC
 1620REM +++++++++++++++++++++++++++++
 1630
 1640REM grab screen
 1650DEFPROCgrab
 1660SYS O$,&110,g%,g$,0,A%,B%,1276,892
 1670SYS O$,256+24,g%,g$ TO ,,C%
 1680SYS O$,256+40,g%,g$ TO ,,,W%,H%
 1690ENDPROC
 1700
 1710REM push pin IN
 1720DEFPROCpush
 1730IFG%(W%)+1<(np%+1)G%(W%)+=1
 1740 REM remove crosshair
 1750SYS O$,&222,S%,C%,X%,Y%,11
 1760SYS O$,&222,S%,P%(G%(W%)),X%+4,Y%+4,0
 1770 REM put crosshair back
 1780SYS O$,&222,S%,C%,X%,Y%,11
 1790IFINKEY-3ENDPROC
 1800TIME=0:REPEATUNTILTIME>t%
 1810ENDPROC
 1820
 1830REM pull pin OUT
 1840DEFPROCpull
 1850IFG%(W%)-1>-1G%(W%)-=1
 1860SYS O$,&222,S%,C%,X%,Y%,11
 1870SYS O$,&222,S%,P%(G%(W%)),X%+4,Y%+4,0
 1880SYS O$,&222,S%,C%,X%,Y%,11
 1890IFINKEY-3TIME=0:REPEATUNTILTIME>2:ENDPROC
 1900IFINKEY-3ENDPROC
 1910TIME=0:REPEATUNTILTIME>t%
 1920ENDPROC
 1930
 1940REM picture take
 1950DEFPROCpicTake
 1960SYS O$,&222,S%,C%,X%,Y%,11
 1970SYS O$,&110,g%,g$,0,OX%,OY%,aa%,bb%
 1980SYS O$,256+24,g%,g$ TO ,,p%
 1990SYS O$,256+40,g%,g$ TO ,,,W%,H%
 2000SYS O$,&222,S%,C%,X%,Y%,11
 2010
 2020SYS O$,&222,g%,p%,640,220,0
 2030ENDPROC
 2040
 2050REM copy bits
 2060DEFPROCcopy
 2070PRINTTAB(2,26)"COPY"
 2080WC%=2
 2090copy%=1
 2100SYS O$,&222,S%,C%,X%,Y%,11
 2110OC%=C%:C%=C2%
 2120SYS O$,&222,S%,C%,X%,Y%,11
 2130ENDPROC
 2140
 2150REM fix copy area
 2160DEFPROCfix(f%)
 2170SYS O$,&222,S%,C%,X%,Y%,11
 2180SYS O$,&222,S%,OC%,X%,Y%,8
 2190SYS O$,&222,S%,C%,X%,Y%,11
 2200IFf%=1num1%=W%:cx1%=X%:cy1%=Y%:ENDPROC
 2210num2%=W%:cx2%=X%:cy2%=Y%
 2220yadd%=ABS((num2%DIV20)-(num1%DIV20))
 2230xadd%=ABS((num2%MOD20)-(num1%MOD20))
 2240
 2250IFcy2%<cy1%ANDcx2%>=cx1% THEN
 2260 num1%=num1%-(yadd%*20)
 2270 num2%=num2%+(yadd%*20)
 2280ENDIF
 2290
 2300IFcy2%<cy1%ANDcx2%<cx1% THEN
 2310 O2%=num2%:num2%=num1%:num1%=O2%
 2320ENDIF
 2330
 2340IFcy2%>cy1%ANDcx2%<cx1% THEN
 2350 num1%=num1%-(xadd%)
 2360 num2%=num2%+(xadd%)
 2370ENDIF
 2380z%=0
 2390FORJ%=0TOyadd%
 2400FORI%=0TOxadd%
 2410Z%(z%)=G%((num1%+I%)+(J%*20))
 2420z%+=1
 2430NEXT
 2440NEXT
 2450ENDPROC
 2460
 2470REM uncopy (press delete key)
 2480DEFPROCuncopy
 2490IFcopy%=2 SYS O$,&222,S%,CB%,cx1%,cy1%,erase%
 2500IFcopy%=3 THEN
 2510 GCOL3,3:RECTANGLEX%,Y%,((xadd%+1)*24),((yadd%+1)*24):rect1%=0
 2520 SYS O$,&222,S%,CB%,cx1%,cy1%,erase%
 2530 SYS O$,&222,S%,CB%,cx2%,cy2%,erase%
 2540ENDIF
 2550WC%=1:C%=OC%:copy%=0
 2560SYS O$,&222,S%,C%,X%,Y%,11
 2570PRINTTAB(2,26)"    "
 2580ENDPROC
 2590
 2600REM insert copied piece
 2610REM alter relevant G%(n) values
 2620DEFPROCcopyto
 2630GCOL3,3:RECTANGLEX%,Y%,((xadd%+1)*24),((yadd%+1)*24)
 2640SYS O$,&222,S%,CB%,cx1%,cy1%,erase%
 2650SYS O$,&222,S%,CB%,cx2%,cy2%,erase%
 2660z%=0
 2670FORJ%=0TOyadd%
 2680FORI%=0TOxadd%
 2690IFX%-20+(I%*24)<517 IFY%-20+(J%*24)<917 : SYS O$,&222,S%,P%(Z%(z%)),X%+4+(I%*24),Y%+4+(J%*24),0:G%(W%+I%+(J%*20))=Z%(z%)
 2700z%+=1
 2710NEXT
 2720NEXT
 2730GCOL3,3:RECTANGLEX%,Y%,((xadd%+1)*24),((yadd%+1)*24)
 2740ENDPROC
 2750
 2760REM LOAD FILE
 2770DEFPROCload
 2780LOCALy%
 2790y%=26
 2800*FX21
 2810PRINTTAB(2,y%)"LOAD FILE? (Y/N) ":yn$=GET$
 2820IFyn$<>"Y"PRINTTAB(2,y%)SPC23:ENDPROC
 2830PRINTTAB(2,y%)SPC23
 2840INPUTTAB(2,y%)"WHAT NAME? "name$
 2850PRINTTAB(2,y%)SPC23
 2860file%=OPENIN("<MAG$Dir>."+name$)
 2870FORI%=0TO599
 2880INPUT#file%,G%(I%)
 2890NEXT
 2900CLOSE#file%
 2910PROCdrawit
 2920ENDPROC
 2930
 2940REM SAVE FILE
 2950DEFPROCsave
 2960LOCALy%
 2970y%=26
 2980SYS6,15
 2990PRINTTAB(2,y%)"SAVE file? (Y/N) ":yn$=GET$
 3000IFyn$<>"Y"PRINTTAB(2,y%);SPC23:ENDPROC
 3010PRINTTAB(2,y%)SPC23:INPUTTAB(2,y%)"WHAT NAME? "name$
 3020PRINTTAB(2,y%);SPC23
 3030file%=OPENOUT("<MAG$Dir>."+name$)
 3040FORI%=0TO599
 3050PRINT#file%,G%(I%)
 3060NEXT
 3070CLOSE#file%
 3080ENDPROC
 3090
 3100REM draw loaded in data
 3110DEFPROCdrawit
 3120SYS O$,&222,S%,C%,X%,Y%,11
 3130w%=-1
 3140FORJ%=224TO936STEP24
 3150FORI%=64TO520STEP24
 3160w%+=1
 3170SYS O$,&222,S%,P%(G%(w%)),I%,J%,0
 3180NEXT
 3190NEXT
 3200SYS O$,&222,S%,C%,X%,Y%,11
 3210ENDPROC
 3220
 3230REM push pins using key presses
 3240DEFPROCkeypush(n%)
 3250SYS O$,&222,S%,C%,X%,Y%,11
 3260SYS O$,&222,S%,P%(n%),X%+4,Y%+4,0:G%(W%)=n%
 3270SYS O$,&222,S%,C%,X%,Y%,11
 3280ENDPROC
 3290
 3300REM record
 3310DEFPROCrecord
 3320*SNEW
 3330SYS O$,&222,S%,C%,X%,Y%,11
 3340FORK%=0TO12
 3350PROCget
 3360PROCup
 3370NEXT
 3380SYS O$,&222,S%,C%,X%,Y%,11
 3390ENDPROC
 3400
 3410REM pins ascend
 3420DEFPROCup
 3430o%=0
 3440FORJ%=224TO936STEP24
 3450FORI%=64TO520STEP24
 3460IFG%(o%)>0G%(o%)-=1
 3470SYS O$,&222,S%,P%(G%(o%)),I%,J%,0
 3480o%+=1
 3490NEXT
 3500NEXT
 3510ENDPROC
 3520
 3530REM playback
 3540DEFPROCanimate(from%,to%,step%)
 3550speed%=6
 3560FORK%=from%TOto%STEPstep%
 3570VDU23,27,0,K%|
 3580PLOT&ED,640,220
 3590TIME=0
 3600REPEATUNTILTIME>speed%
 3610NEXT
 3620ENDPROC
 3630
 3640REM get sprite
 3650DEFPROCget
 3660MOVE60,220
 3670MOVE BY 456,716
 3680VDU23,27,1,K%|
 3690VDU23,27,0,K%|
 3700PLOT&ED,640,220
 3710ENDPROC

� >PINS
� Acorn Computing
� by MAG & CAT
(� � � �:�:�" at ";�:�
2�7:�
<$�''''''"HAVE YOU ALLOCATED 288k"
F�"  FOR System Sprites?"
P�'"    (Press RETURN)"
Z
���=13
d�13
n�
xO$="OS_SpriteOp"
�
�	�dims
�	�init
��loadem
��sprites
�
�initgrab
�
��
��screen
�� loop------------------
��
�	�keys
��2,1)"Pin=";G%(W%);" "
	��-91
	�init
�0
"� ---------------------
,
6
� dims
@
��dims
J
np%=12
T�P%(np%)
^�G%(600)
h�Z%(600)
r�R%(12)
|�
�
�
� init
�
��init
�erase%=8
�rect1%=0
�yadd%=0:xadd%=0
�num1%=0
�num2%=0
�copy%=0
�aa%=540
�bb%=940
�	X%=60
�
Y%=220
OX%=X%:OY%=Y%
	M%=24
	t%=18
&W%=0
0
G%()=0
:	WC%=1
D�
N
X� screen
b��screen
l�
v�J%=224�936�24
��I%=64�520�24
�ș O$,&222,S%,P%(0),I%,J%,0
��
��
�ș O$,&222,S%,C%,X%,Y%,11
��
�
��" KEYS
�
��keys
��-98��-26�M(-M%,0)
��-67��-122�M(M%,0)
��-80��-58�M(0,M%)
��-105��-42�M(0,-M%)
Ȏ WC% �
� 1:
�-52�record
 �-66�animate(12,0,-1)
*�-17�animate(0,12,1)
4�-46�keypush(0)
>�-49�keypush(1)
H�-50�keypush(2)
R�-18�keypush(3)
\�-19�keypush(4)
f�-20�keypush(5)
p�-53�keypush(6)
z�-37�keypush(7)
��-22�keypush(8)
��-39�keypush(9)
��-40�keypush(10)
��-24�keypush(11)
��-94�keypush(12)
��-74�push
��-99�pull
��-56�picTake
��-106�copy
��-82�save
��-87�load
�� 2:
�(�-74�copy%=1�fix(1):copy%=2:����-74
(�-74�copy%=2�fix(2):copy%=3:����-74
 �-74�copy%=3�copyto:����-74
�-90�uncopy
$�
.�
8
B� move crosshair
L��M(x%,y%)
V�X%+x%<60�X%+x%>516�
`�Y%+y%<220�Y%+y%>916�
j@�rect1%=1:�copy%=3�3,3:ȓX%,Y%,((xadd%+1)*24),((yadd%+1)*24)
t%�copy%<3ș O$,&222,S%,C%,X%,Y%,11
~X%+=x%:Y%+=y%
�"W%=(X%-60)�24+((Y%-220)�24)*20
�%�copy%<3ș O$,&222,S%,C%,X%,Y%,11
�H�copy%=3�3,3:ȓX%,Y%,((xadd%+1)*24),((yadd%+1)*24):�rect1%=0rect1%=1
��-3��-2�=0:���>2:�
��=0:���>t%
��
�
�#� +++++++++++++++++++++++++++++
�"�" LOAD SPRITEfile/SET UP AREA
���loadem
�
�s$="<MAG$Dir>.PINSFILE"
file%=�(s$)

L%=�#file%+64
�#file%
� S% L%
(S%!0=L%
2ș "OS_SpriteOp",256+9,S%
<!ș "OS_SpriteOp",256+10,S%,s$
F�
P
Z
� SPRITES
d
��sprites
n
�I%=0�np%
x&�setSprite("PIN"+�I%,P%(I%),a%,b%)
��
�$�setSprite("CROSSHAIR",C%,a%,b%)
�$�setSprite("COPYHAIR",C2%,a%,b%)
�%�setSprite("BLACKHAIR",CB%,a%,b%)
��
�
�� set sprites
�"��setSprite(s$,� A%,� W%,� H%)
�(ș "OS_SpriteOp",256+24,S%,s$ � ,,A%
�,ș "OS_SpriteOp",256+40,S%,s$ � ,,,W%,H%
�W%=W%*4:H%=H%*4
��
�
�  GRAB SPRITE AREA
��initgrab
g$="<MAG$Dir>.grab"
"� g% 23000
,g%!0=64000
6g%!8=16
@ș "OS_SpriteOp",256+9,g%
J�
T#� +++++++++++++++++++++++++++++
^
h� grab screen
r
��grab
|%ș O$,&110,g%,g$,0,A%,B%,1276,892
�ș O$,256+24,g%,g$ � ,,C%
�!ș O$,256+40,g%,g$ � ,,,W%,H%
��
�
�� push pin IN
�
��push
��G%(W%)+1<(np%+1)G%(W%)+=1
� � remove crosshair
�ș O$,&222,S%,C%,X%,Y%,11
�(ș O$,&222,S%,P%(G%(W%)),X%+4,Y%+4,0
� � put crosshair back
�ș O$,&222,S%,C%,X%,Y%,11
�	�-3�
�=0:���>t%
�

&� pull pin OUT
0
��pull
:�G%(W%)-1>-1G%(W%)-=1
Dș O$,&222,S%,C%,X%,Y%,11
N(ș O$,&222,S%,P%(G%(W%)),X%+4,Y%+4,0
Xș O$,&222,S%,C%,X%,Y%,11
b�-3�=0:���>2:�
l	�-3�
v�=0:���>t%
��
�
�� picture take
�
��picTake
�ș O$,&222,S%,C%,X%,Y%,11
�&ș O$,&110,g%,g$,0,OX%,OY%,aa%,bb%
�ș O$,256+24,g%,g$ � ,,p%
�!ș O$,256+40,g%,g$ � ,,,W%,H%
�ș O$,&222,S%,C%,X%,Y%,11
�
�ș O$,&222,g%,p%,640,220,0
��
�
� copy bits

��copy
�2,26)"COPY"
 	WC%=2
*copy%=1
4ș O$,&222,S%,C%,X%,Y%,11
>OC%=C%:C%=C2%
Hș O$,&222,S%,C%,X%,Y%,11
R�
\
f� fix copy area
p
��fix(f%)
zș O$,&222,S%,C%,X%,Y%,11
�ș O$,&222,S%,OC%,X%,Y%,8
�ș O$,&222,S%,C%,X%,Y%,11
�#�f%=1num1%=W%:cx1%=X%:cy1%=Y%:�
�num2%=W%:cx2%=X%:cy2%=Y%
�"yadd%=�((num2%�20)-(num1%�20))
�"xadd%=�((num2%�20)-(num1%�20))
�
��cy2%<cy1%�cx2%>=cx1% �
� num1%=num1%-(yadd%*20)
� num2%=num2%+(yadd%*20)
��
�
��cy2%<cy1%�cx2%<cx1% �
	$ O2%=num2%:num2%=num1%:num1%=O2%
	�
	
	$�cy2%>cy1%�cx2%<cx1% �
	. num1%=num1%-(xadd%)
	8 num2%=num2%+(xadd%)
	B�
	Lz%=0
	V�J%=0�yadd%
	`�I%=0�xadd%
	j!Z%(z%)=G%((num1%+I%)+(J%*20))
	t	z%+=1
	~�
	��
	��
	�
	�� uncopy (press delete key)
	���uncopy
	�/�copy%=2 ș O$,&222,S%,CB%,cx1%,cy1%,erase%
	��copy%=3 �
	�8 �3,3:ȓX%,Y%,((xadd%+1)*24),((yadd%+1)*24):rect1%=0
	�' ș O$,&222,S%,CB%,cx1%,cy1%,erase%
	�' ș O$,&222,S%,CB%,cx2%,cy2%,erase%
	��
	�WC%=1:C%=OC%:copy%=0
ș O$,&222,S%,C%,X%,Y%,11

�2,26)"    "
�

(� insert copied piece
2!� alter relevant G%(n) values
<��copyto
F.�3,3:ȓX%,Y%,((xadd%+1)*24),((yadd%+1)*24)
P&ș O$,&222,S%,CB%,cx1%,cy1%,erase%
Z&ș O$,&222,S%,CB%,cx2%,cy2%,erase%
dz%=0
n�J%=0�yadd%
x�I%=0�xadd%
�y�X%-20+(I%*24)<517 �Y%-20+(J%*24)<917 : ș O$,&222,S%,P%(Z%(z%)),X%+4+(I%*24),Y%+4+(J%*24),0:G%(W%+I%+(J%*20))=Z%(z%)
�	z%+=1
��
��
�.�3,3:ȓX%,Y%,((xadd%+1)*24),((yadd%+1)*24)
��
�
�� LOAD FILE
�
��load
��y%
�	y%=26
�	*FX21
�$�2,y%)"LOAD FILE? (Y/N) ":yn$=�
�yn$<>"Y"�2,y%)�23:�
�2,y%)�23
�2,y%)"WHAT NAME? "name$
"�2,y%)�23
,file%=�("<MAG$Dir>."+name$)
6
�I%=0�599
@�#file%,G%(I%)
J�
T�#file%
^�drawit
h�
r
|� SAVE FILE
�
��save
��y%
�	y%=26
�
ș6,15
�$�2,y%)"SAVE file? (Y/N) ":yn$=�
��yn$<>"Y"�2,y%);�23:�
�(�2,y%)�23:�2,y%)"WHAT NAME? "name$
��2,y%);�23
�file%=�("<MAG$Dir>."+name$)
�
�I%=0�599
��#file%,G%(I%)
��
��#file%
�

� draw loaded in data
&��drawit
0ș O$,&222,S%,C%,X%,Y%,11
:	w%=-1
D�J%=224�936�24
N�I%=64�520�24
X	w%+=1
b$ș O$,&222,S%,P%(G%(w%)),I%,J%,0
l�
v�
�ș O$,&222,S%,C%,X%,Y%,11
��
�
�!� push pins using key presses
���keypush(n%)
�ș O$,&222,S%,C%,X%,Y%,11
�.ș O$,&222,S%,P%(n%),X%+4,Y%+4,0:G%(W%)=n%
�ș O$,&222,S%,C%,X%,Y%,11
��
�
�� record
���record
�	*SNEW

ș O$,&222,S%,C%,X%,Y%,11

�K%=0�12

�get

 �up

*�

4ș O$,&222,S%,C%,X%,Y%,11

>�

H

R� pins ascend

\��up

fo%=0

p�J%=224�936�24

z�I%=64�520�24

��G%(o%)>0G%(o%)-=1

�$ș O$,&222,S%,P%(G%(o%)),I%,J%,0

�	o%+=1

��

��

��

�

�� playback

���animate(from%,to%,step%)

�speed%=6

��K%=from%�to%�step%

��23,27,0,K%|

��&ED,640,220
�=0
���>speed%
�
$�
.
8� get sprite
B	��get
L�60,220
V� BY 456,716
`�23,27,1,K%|
j�23,27,0,K%|
t�&ED,640,220
~�
�
00000000  0d 00 0a 0b f4 20 3e 50  49 4e 53 0d 00 14 15 f4  |..... >PINS.....|
00000010  20 41 63 6f 72 6e 20 43  6f 6d 70 75 74 69 6e 67  | Acorn Computing|
00000020  0d 00 1e 12 f4 20 62 79  20 4d 41 47 20 26 20 43  |..... by MAG & C|
00000030  41 54 0d 00 28 19 ee 20  85 20 eb 20 eb 3a f6 3a  |AT..(.. . . .:.:|
00000040  f1 22 20 61 74 20 22 3b  9e 3a e0 0d 00 32 08 eb  |." at ";.:...2..|
00000050  37 3a 87 0d 00 3c 24 f1  27 27 27 27 27 27 22 48  |7:...<$.''''''"H|
00000060  41 56 45 20 59 4f 55 20  41 4c 4c 4f 43 41 54 45  |AVE YOU ALLOCATE|
00000070  44 20 32 38 38 6b 22 0d  00 46 1c f1 22 20 20 46  |D 288k"..F.."  F|
00000080  4f 52 20 53 79 73 74 65  6d 20 53 70 72 69 74 65  |OR System Sprite|
00000090  73 3f 22 0d 00 50 1a f1  27 22 20 20 20 20 28 50  |s?"..P..'"    (P|
000000a0  72 65 73 73 20 52 45 54  55 52 4e 29 22 0d 00 5a  |ress RETURN)"..Z|
000000b0  0a f5 fd a5 3d 31 33 0d  00 64 07 eb 31 33 0d 00  |....=13..d..13..|
000000c0  6e 05 87 0d 00 78 14 4f  24 3d 22 4f 53 5f 53 70  |n....x.O$="OS_Sp|
000000d0  72 69 74 65 4f 70 22 0d  00 82 04 0d 00 8c 09 f2  |riteOp".........|
000000e0  64 69 6d 73 0d 00 96 09  f2 69 6e 69 74 0d 00 a0  |dims.....init...|
000000f0  0b f2 6c 6f 61 64 65 6d  0d 00 aa 0c f2 73 70 72  |..loadem.....spr|
00000100  69 74 65 73 0d 00 b4 0d  f2 69 6e 69 74 67 72 61  |ites.....initgra|
00000110  62 0d 00 be 04 0d 00 c8  05 f5 0d 00 d2 0b f2 73  |b..............s|
00000120  63 72 65 65 6e 0d 00 dc  1c f4 20 6c 6f 6f 70 2d  |creen..... loop-|
00000130  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000140  2d 0d 00 e6 05 f5 0d 00  f0 09 f2 6b 65 79 73 0d  |-..........keys.|
00000150  00 fa 1b f1 8a 32 2c 31  29 22 50 69 6e 3d 22 3b  |.....2,1)"Pin=";|
00000160  47 25 28 57 25 29 3b 22  20 22 0d 01 04 09 fd a6  |G%(W%);" "......|
00000170  2d 39 31 0d 01 0e 09 f2  69 6e 69 74 0d 01 18 06  |-91.....init....|
00000180  fd 30 0d 01 22 1b f4 20  2d 2d 2d 2d 2d 2d 2d 2d  |.0..".. --------|
00000190  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 0d 01 2c  |-------------..,|
000001a0  04 0d 01 36 0a f4 20 64  69 6d 73 0d 01 40 0a dd  |...6.. dims..@..|
000001b0  f2 64 69 6d 73 0d 01 4a  0a 6e 70 25 3d 31 32 0d  |.dims..J.np%=12.|
000001c0  01 54 0c de 50 25 28 6e  70 25 29 0d 01 5e 0c de  |.T..P%(np%)..^..|
000001d0  47 25 28 36 30 30 29 0d  01 68 0c de 5a 25 28 36  |G%(600)..h..Z%(6|
000001e0  30 30 29 0d 01 72 0b de  52 25 28 31 32 29 0d 01  |00)..r..R%(12)..|
000001f0  7c 05 e1 0d 01 86 04 0d  01 90 0a f4 20 69 6e 69  ||........... ini|
00000200  74 0d 01 9a 0a dd f2 69  6e 69 74 0d 01 a4 0c 65  |t......init....e|
00000210  72 61 73 65 25 3d 38 0d  01 ae 0c 72 65 63 74 31  |rase%=8....rect1|
00000220  25 3d 30 0d 01 b8 13 79  61 64 64 25 3d 30 3a 78  |%=0....yadd%=0:x|
00000230  61 64 64 25 3d 30 0d 01  c2 0b 6e 75 6d 31 25 3d  |add%=0....num1%=|
00000240  30 0d 01 cc 0b 6e 75 6d  32 25 3d 30 0d 01 d6 0b  |0....num2%=0....|
00000250  63 6f 70 79 25 3d 30 0d  01 e0 0b 61 61 25 3d 35  |copy%=0....aa%=5|
00000260  34 30 0d 01 ea 0b 62 62  25 3d 39 34 30 0d 01 f4  |40....bb%=940...|
00000270  09 58 25 3d 36 30 0d 01  fe 0a 59 25 3d 32 32 30  |.X%=60....Y%=220|
00000280  0d 02 08 11 4f 58 25 3d  58 25 3a 4f 59 25 3d 59  |....OX%=X%:OY%=Y|
00000290  25 0d 02 12 09 4d 25 3d  32 34 0d 02 1c 09 74 25  |%....M%=24....t%|
000002a0  3d 31 38 0d 02 26 08 57  25 3d 30 0d 02 30 0a 47  |=18..&.W%=0..0.G|
000002b0  25 28 29 3d 30 0d 02 3a  09 57 43 25 3d 31 0d 02  |%()=0..:.WC%=1..|
000002c0  44 05 e1 0d 02 4e 04 0d  02 58 0c f4 20 73 63 72  |D....N...X.. scr|
000002d0  65 65 6e 0d 02 62 0c dd  f2 73 63 72 65 65 6e 0d  |een..b...screen.|
000002e0  02 6c 05 db 0d 02 76 12  e3 4a 25 3d 32 32 34 b8  |.l....v..J%=224.|
000002f0  39 33 36 88 32 34 0d 02  80 11 e3 49 25 3d 36 34  |936.24.....I%=64|
00000300  b8 35 32 30 88 32 34 0d  02 8a 1f c8 99 20 4f 24  |.520.24...... O$|
00000310  2c 26 32 32 32 2c 53 25  2c 50 25 28 30 29 2c 49  |,&222,S%,P%(0),I|
00000320  25 2c 4a 25 2c 30 0d 02  94 05 ed 0d 02 9e 05 ed  |%,J%,0..........|
00000330  0d 02 a8 1d c8 99 20 4f  24 2c 26 32 32 32 2c 53  |...... O$,&222,S|
00000340  25 2c 43 25 2c 58 25 2c  59 25 2c 31 31 0d 02 b2  |%,C%,X%,Y%,11...|
00000350  05 e1 0d 02 bc 04 0d 02  c6 0b f4 22 20 4b 45 59  |..........." KEY|
00000360  53 0d 02 d0 0a dd f2 6b  65 79 73 0d 02 da 17 e7  |S......keys.....|
00000370  a6 2d 39 38 84 a6 2d 32  36 f2 4d 28 2d 4d 25 2c  |.-98..-26.M(-M%,|
00000380  30 29 0d 02 e4 17 e7 a6  2d 36 37 84 a6 2d 31 32  |0)......-67..-12|
00000390  32 f2 4d 28 4d 25 2c 30  29 0d 02 ee 16 e7 a6 2d  |2.M(M%,0)......-|
000003a0  38 30 84 a6 2d 35 38 f2  4d 28 30 2c 4d 25 29 0d  |80..-58.M(0,M%).|
000003b0  02 f8 18 e7 a6 2d 31 30  35 84 a6 2d 34 32 f2 4d  |.....-105..-42.M|
000003c0  28 30 2c 2d 4d 25 29 0d  03 02 0c c8 8e 20 57 43  |(0,-M%)...... WC|
000003d0  25 20 ca 0d 03 0c 08 c9  20 31 3a 0d 03 16 10 e7  |% ...... 1:.....|
000003e0  a6 2d 35 32 f2 72 65 63  6f 72 64 0d 03 20 1a e7  |.-52.record.. ..|
000003f0  a6 2d 36 36 f2 61 6e 69  6d 61 74 65 28 31 32 2c  |.-66.animate(12,|
00000400  30 2c 2d 31 29 0d 03 2a  19 e7 a6 2d 31 37 f2 61  |0,-1)..*...-17.a|
00000410  6e 69 6d 61 74 65 28 30  2c 31 32 2c 31 29 0d 03  |nimate(0,12,1)..|
00000420  34 14 e7 a6 2d 34 36 f2  6b 65 79 70 75 73 68 28  |4...-46.keypush(|
00000430  30 29 0d 03 3e 14 e7 a6  2d 34 39 f2 6b 65 79 70  |0)..>...-49.keyp|
00000440  75 73 68 28 31 29 0d 03  48 14 e7 a6 2d 35 30 f2  |ush(1)..H...-50.|
00000450  6b 65 79 70 75 73 68 28  32 29 0d 03 52 14 e7 a6  |keypush(2)..R...|
00000460  2d 31 38 f2 6b 65 79 70  75 73 68 28 33 29 0d 03  |-18.keypush(3)..|
00000470  5c 14 e7 a6 2d 31 39 f2  6b 65 79 70 75 73 68 28  |\...-19.keypush(|
00000480  34 29 0d 03 66 14 e7 a6  2d 32 30 f2 6b 65 79 70  |4)..f...-20.keyp|
00000490  75 73 68 28 35 29 0d 03  70 14 e7 a6 2d 35 33 f2  |ush(5)..p...-53.|
000004a0  6b 65 79 70 75 73 68 28  36 29 0d 03 7a 14 e7 a6  |keypush(6)..z...|
000004b0  2d 33 37 f2 6b 65 79 70  75 73 68 28 37 29 0d 03  |-37.keypush(7)..|
000004c0  84 14 e7 a6 2d 32 32 f2  6b 65 79 70 75 73 68 28  |....-22.keypush(|
000004d0  38 29 0d 03 8e 14 e7 a6  2d 33 39 f2 6b 65 79 70  |8)......-39.keyp|
000004e0  75 73 68 28 39 29 0d 03  98 15 e7 a6 2d 34 30 f2  |ush(9)......-40.|
000004f0  6b 65 79 70 75 73 68 28  31 30 29 0d 03 a2 15 e7  |keypush(10).....|
00000500  a6 2d 32 34 f2 6b 65 79  70 75 73 68 28 31 31 29  |.-24.keypush(11)|
00000510  0d 03 ac 15 e7 a6 2d 39  34 f2 6b 65 79 70 75 73  |......-94.keypus|
00000520  68 28 31 32 29 0d 03 b6  0e e7 a6 2d 37 34 f2 70  |h(12)......-74.p|
00000530  75 73 68 0d 03 c0 0e e7  a6 2d 39 39 f2 70 75 6c  |ush......-99.pul|
00000540  6c 0d 03 ca 11 e7 a6 2d  35 36 f2 70 69 63 54 61  |l......-56.picTa|
00000550  6b 65 0d 03 d4 0f e7 a6  2d 31 30 36 f2 63 6f 70  |ke......-106.cop|
00000560  79 0d 03 de 0e e7 a6 2d  38 32 f2 73 61 76 65 0d  |y......-82.save.|
00000570  03 e8 0e e7 a6 2d 38 37  f2 6c 6f 61 64 0d 03 f2  |.....-87.load...|
00000580  08 c9 20 32 3a 0d 03 fc  28 e7 a6 2d 37 34 80 63  |.. 2:...(..-74.c|
00000590  6f 70 79 25 3d 31 f2 66  69 78 28 31 29 3a 63 6f  |opy%=1.fix(1):co|
000005a0  70 79 25 3d 32 3a f5 fd  ac a6 2d 37 34 0d 04 06  |py%=2:....-74...|
000005b0  28 e7 a6 2d 37 34 80 63  6f 70 79 25 3d 32 f2 66  |(..-74.copy%=2.f|
000005c0  69 78 28 32 29 3a 63 6f  70 79 25 3d 33 3a f5 fd  |ix(2):copy%=3:..|
000005d0  ac a6 2d 37 34 0d 04 10  20 e7 a6 2d 37 34 80 63  |..-74... ..-74.c|
000005e0  6f 70 79 25 3d 33 f2 63  6f 70 79 74 6f 3a f5 fd  |opy%=3.copyto:..|
000005f0  ac a6 2d 37 34 0d 04 1a  10 e7 a6 2d 39 30 f2 75  |..-74......-90.u|
00000600  6e 63 6f 70 79 0d 04 24  05 cb 0d 04 2e 05 e1 0d  |ncopy..$........|
00000610  04 38 04 0d 04 42 14 f4  20 6d 6f 76 65 20 63 72  |.8...B.. move cr|
00000620  6f 73 73 68 61 69 72 0d  04 4c 0e dd f2 4d 28 78  |osshair..L...M(x|
00000630  25 2c 79 25 29 0d 04 56  18 e7 58 25 2b 78 25 3c  |%,y%)..V..X%+x%<|
00000640  36 30 84 58 25 2b 78 25  3e 35 31 36 e1 0d 04 60  |60.X%+x%>516...`|
00000650  19 e7 59 25 2b 79 25 3c  32 32 30 84 59 25 2b 79  |..Y%+y%<220.Y%+y|
00000660  25 3e 39 31 36 e1 0d 04  6a 40 e7 72 65 63 74 31  |%>916...j@.rect1|
00000670  25 3d 31 3a e7 63 6f 70  79 25 3d 33 e6 33 2c 33  |%=1:.copy%=3.3,3|
00000680  3a c8 93 58 25 2c 59 25  2c 28 28 78 61 64 64 25  |:..X%,Y%,((xadd%|
00000690  2b 31 29 2a 32 34 29 2c  28 28 79 61 64 64 25 2b  |+1)*24),((yadd%+|
000006a0  31 29 2a 32 34 29 0d 04  74 25 e7 63 6f 70 79 25  |1)*24)..t%.copy%|
000006b0  3c 33 c8 99 20 4f 24 2c  26 32 32 32 2c 53 25 2c  |<3.. O$,&222,S%,|
000006c0  43 25 2c 58 25 2c 59 25  2c 31 31 0d 04 7e 11 58  |C%,X%,Y%,11..~.X|
000006d0  25 2b 3d 78 25 3a 59 25  2b 3d 79 25 0d 04 88 22  |%+=x%:Y%+=y%..."|
000006e0  57 25 3d 28 58 25 2d 36  30 29 81 32 34 2b 28 28  |W%=(X%-60).24+((|
000006f0  59 25 2d 32 32 30 29 81  32 34 29 2a 32 30 0d 04  |Y%-220).24)*20..|
00000700  92 25 e7 63 6f 70 79 25  3c 33 c8 99 20 4f 24 2c  |.%.copy%<3.. O$,|
00000710  26 32 32 32 2c 53 25 2c  43 25 2c 58 25 2c 59 25  |&222,S%,C%,X%,Y%|
00000720  2c 31 31 0d 04 9c 48 e7  63 6f 70 79 25 3d 33 e6  |,11...H.copy%=3.|
00000730  33 2c 33 3a c8 93 58 25  2c 59 25 2c 28 28 78 61  |3,3:..X%,Y%,((xa|
00000740  64 64 25 2b 31 29 2a 32  34 29 2c 28 28 79 61 64  |dd%+1)*24),((yad|
00000750  64 25 2b 31 29 2a 32 34  29 3a e7 72 65 63 74 31  |d%+1)*24):.rect1|
00000760  25 3d 30 72 65 63 74 31  25 3d 31 0d 04 a6 17 e7  |%=0rect1%=1.....|
00000770  a6 2d 33 84 a6 2d 32 91  3d 30 3a f5 fd 91 3e 32  |.-3..-2.=0:...>2|
00000780  3a e1 0d 04 b0 0e d1 3d  30 3a f5 fd 91 3e 74 25  |:......=0:...>t%|
00000790  0d 04 ba 05 e1 0d 04 c4  04 0d 04 ce 23 f4 20 2b  |............#. +|
000007a0  2b 2b 2b 2b 2b 2b 2b 2b  2b 2b 2b 2b 2b 2b 2b 2b  |++++++++++++++++|
000007b0  2b 2b 2b 2b 2b 2b 2b 2b  2b 2b 2b 2b 0d 04 d8 22  |++++++++++++..."|
000007c0  f4 22 20 4c 4f 41 44 20  53 50 52 49 54 45 66 69  |." LOAD SPRITEfi|
000007d0  6c 65 2f 53 45 54 20 55  50 20 41 52 45 41 0d 04  |le/SET UP AREA..|
000007e0  e2 0c dd f2 6c 6f 61 64  65 6d 0d 04 ec 04 0d 04  |....loadem......|
000007f0  f6 1b 73 24 3d 22 3c 4d  41 47 24 44 69 72 3e 2e  |..s$="<MAG$Dir>.|
00000800  50 49 4e 53 46 49 4c 45  22 0d 05 00 0f 66 69 6c  |PINSFILE"....fil|
00000810  65 25 3d 8e 28 73 24 29  0d 05 0a 11 4c 25 3d a2  |e%=.(s$)....L%=.|
00000820  23 66 69 6c 65 25 2b 36  34 0d 05 14 0b d9 23 66  |#file%+64.....#f|
00000830  69 6c 65 25 0d 05 1e 0b  de 20 53 25 20 4c 25 0d  |ile%..... S% L%.|
00000840  05 28 0b 53 25 21 30 3d  4c 25 0d 05 32 1d c8 99  |.(.S%!0=L%..2...|
00000850  20 22 4f 53 5f 53 70 72  69 74 65 4f 70 22 2c 32  | "OS_SpriteOp",2|
00000860  35 36 2b 39 2c 53 25 0d  05 3c 21 c8 99 20 22 4f  |56+9,S%..<!.. "O|
00000870  53 5f 53 70 72 69 74 65  4f 70 22 2c 32 35 36 2b  |S_SpriteOp",256+|
00000880  31 30 2c 53 25 2c 73 24  0d 05 46 05 e1 0d 05 50  |10,S%,s$..F....P|
00000890  04 0d 05 5a 0d f4 20 53  50 52 49 54 45 53 0d 05  |...Z.. SPRITES..|
000008a0  64 0d dd f2 73 70 72 69  74 65 73 0d 05 6e 0d e3  |d...sprites..n..|
000008b0  49 25 3d 30 b8 6e 70 25  0d 05 78 26 f2 73 65 74  |I%=0.np%..x&.set|
000008c0  53 70 72 69 74 65 28 22  50 49 4e 22 2b c3 49 25  |Sprite("PIN"+.I%|
000008d0  2c 50 25 28 49 25 29 2c  61 25 2c 62 25 29 0d 05  |,P%(I%),a%,b%)..|
000008e0  82 05 ed 0d 05 8c 24 f2  73 65 74 53 70 72 69 74  |......$.setSprit|
000008f0  65 28 22 43 52 4f 53 53  48 41 49 52 22 2c 43 25  |e("CROSSHAIR",C%|
00000900  2c 61 25 2c 62 25 29 0d  05 96 24 f2 73 65 74 53  |,a%,b%)...$.setS|
00000910  70 72 69 74 65 28 22 43  4f 50 59 48 41 49 52 22  |prite("COPYHAIR"|
00000920  2c 43 32 25 2c 61 25 2c  62 25 29 0d 05 a0 25 f2  |,C2%,a%,b%)...%.|
00000930  73 65 74 53 70 72 69 74  65 28 22 42 4c 41 43 4b  |setSprite("BLACK|
00000940  48 41 49 52 22 2c 43 42  25 2c 61 25 2c 62 25 29  |HAIR",CB%,a%,b%)|
00000950  0d 05 aa 05 e1 0d 05 b4  04 0d 05 be 11 f4 20 73  |.............. s|
00000960  65 74 20 73 70 72 69 74  65 73 0d 05 c8 22 dd f2  |et sprites..."..|
00000970  73 65 74 53 70 72 69 74  65 28 73 24 2c f8 20 41  |setSprite(s$,. A|
00000980  25 2c f8 20 57 25 2c f8  20 48 25 29 0d 05 d2 28  |%,. W%,. H%)...(|
00000990  c8 99 20 22 4f 53 5f 53  70 72 69 74 65 4f 70 22  |.. "OS_SpriteOp"|
000009a0  2c 32 35 36 2b 32 34 2c  53 25 2c 73 24 20 b8 20  |,256+24,S%,s$ . |
000009b0  2c 2c 41 25 0d 05 dc 2c  c8 99 20 22 4f 53 5f 53  |,,A%...,.. "OS_S|
000009c0  70 72 69 74 65 4f 70 22  2c 32 35 36 2b 34 30 2c  |priteOp",256+40,|
000009d0  53 25 2c 73 24 20 b8 20  2c 2c 2c 57 25 2c 48 25  |S%,s$ . ,,,W%,H%|
000009e0  0d 05 e6 13 57 25 3d 57  25 2a 34 3a 48 25 3d 48  |....W%=W%*4:H%=H|
000009f0  25 2a 34 0d 05 f0 05 e1  0d 05 fa 04 0d 06 04 17  |%*4.............|
00000a00  f4 20 20 47 52 41 42 20  53 50 52 49 54 45 20 41  |.  GRAB SPRITE A|
00000a10  52 45 41 0d 06 0e 0e dd  f2 69 6e 69 74 67 72 61  |REA......initgra|
00000a20  62 0d 06 18 17 67 24 3d  22 3c 4d 41 47 24 44 69  |b....g$="<MAG$Di|
00000a30  72 3e 2e 67 72 61 62 22  0d 06 22 0e de 20 67 25  |r>.grab"..".. g%|
00000a40  20 32 33 30 30 30 0d 06  2c 0e 67 25 21 30 3d 36  | 23000..,.g%!0=6|
00000a50  34 30 30 30 0d 06 36 0b  67 25 21 38 3d 31 36 0d  |4000..6.g%!8=16.|
00000a60  06 40 1d c8 99 20 22 4f  53 5f 53 70 72 69 74 65  |.@... "OS_Sprite|
00000a70  4f 70 22 2c 32 35 36 2b  39 2c 67 25 0d 06 4a 05  |Op",256+9,g%..J.|
00000a80  e1 0d 06 54 23 f4 20 2b  2b 2b 2b 2b 2b 2b 2b 2b  |...T#. +++++++++|
00000a90  2b 2b 2b 2b 2b 2b 2b 2b  2b 2b 2b 2b 2b 2b 2b 2b  |++++++++++++++++|
00000aa0  2b 2b 2b 2b 0d 06 5e 04  0d 06 68 11 f4 20 67 72  |++++..^...h.. gr|
00000ab0  61 62 20 73 63 72 65 65  6e 0d 06 72 0a dd f2 67  |ab screen..r...g|
00000ac0  72 61 62 0d 06 7c 25 c8  99 20 4f 24 2c 26 31 31  |rab..|%.. O$,&11|
00000ad0  30 2c 67 25 2c 67 24 2c  30 2c 41 25 2c 42 25 2c  |0,g%,g$,0,A%,B%,|
00000ae0  31 32 37 36 2c 38 39 32  0d 06 86 1d c8 99 20 4f  |1276,892...... O|
00000af0  24 2c 32 35 36 2b 32 34  2c 67 25 2c 67 24 20 b8  |$,256+24,g%,g$ .|
00000b00  20 2c 2c 43 25 0d 06 90  21 c8 99 20 4f 24 2c 32  | ,,C%...!.. O$,2|
00000b10  35 36 2b 34 30 2c 67 25  2c 67 24 20 b8 20 2c 2c  |56+40,g%,g$ . ,,|
00000b20  2c 57 25 2c 48 25 0d 06  9a 05 e1 0d 06 a4 04 0d  |,W%,H%..........|
00000b30  06 ae 11 f4 20 70 75 73  68 20 70 69 6e 20 49 4e  |.... push pin IN|
00000b40  0d 06 b8 0a dd f2 70 75  73 68 0d 06 c2 1e e7 47  |......push.....G|
00000b50  25 28 57 25 29 2b 31 3c  28 6e 70 25 2b 31 29 47  |%(W%)+1<(np%+1)G|
00000b60  25 28 57 25 29 2b 3d 31  0d 06 cc 17 20 f4 20 72  |%(W%)+=1.... . r|
00000b70  65 6d 6f 76 65 20 63 72  6f 73 73 68 61 69 72 0d  |emove crosshair.|
00000b80  06 d6 1d c8 99 20 4f 24  2c 26 32 32 32 2c 53 25  |..... O$,&222,S%|
00000b90  2c 43 25 2c 58 25 2c 59  25 2c 31 31 0d 06 e0 28  |,C%,X%,Y%,11...(|
00000ba0  c8 99 20 4f 24 2c 26 32  32 32 2c 53 25 2c 50 25  |.. O$,&222,S%,P%|
00000bb0  28 47 25 28 57 25 29 29  2c 58 25 2b 34 2c 59 25  |(G%(W%)),X%+4,Y%|
00000bc0  2b 34 2c 30 0d 06 ea 19  20 f4 20 70 75 74 20 63  |+4,0.... . put c|
00000bd0  72 6f 73 73 68 61 69 72  20 62 61 63 6b 0d 06 f4  |rosshair back...|
00000be0  1d c8 99 20 4f 24 2c 26  32 32 32 2c 53 25 2c 43  |... O$,&222,S%,C|
00000bf0  25 2c 58 25 2c 59 25 2c  31 31 0d 06 fe 09 e7 a6  |%,X%,Y%,11......|
00000c00  2d 33 e1 0d 07 08 0e d1  3d 30 3a f5 fd 91 3e 74  |-3......=0:...>t|
00000c10  25 0d 07 12 05 e1 0d 07  1c 04 0d 07 26 12 f4 20  |%...........&.. |
00000c20  70 75 6c 6c 20 70 69 6e  20 4f 55 54 0d 07 30 0a  |pull pin OUT..0.|
00000c30  dd f2 70 75 6c 6c 0d 07  3a 19 e7 47 25 28 57 25  |..pull..:..G%(W%|
00000c40  29 2d 31 3e 2d 31 47 25  28 57 25 29 2d 3d 31 0d  |)-1>-1G%(W%)-=1.|
00000c50  07 44 1d c8 99 20 4f 24  2c 26 32 32 32 2c 53 25  |.D... O$,&222,S%|
00000c60  2c 43 25 2c 58 25 2c 59  25 2c 31 31 0d 07 4e 28  |,C%,X%,Y%,11..N(|
00000c70  c8 99 20 4f 24 2c 26 32  32 32 2c 53 25 2c 50 25  |.. O$,&222,S%,P%|
00000c80  28 47 25 28 57 25 29 29  2c 58 25 2b 34 2c 59 25  |(G%(W%)),X%+4,Y%|
00000c90  2b 34 2c 30 0d 07 58 1d  c8 99 20 4f 24 2c 26 32  |+4,0..X... O$,&2|
00000ca0  32 32 2c 53 25 2c 43 25  2c 58 25 2c 59 25 2c 31  |22,S%,C%,X%,Y%,1|
00000cb0  31 0d 07 62 13 e7 a6 2d  33 91 3d 30 3a f5 fd 91  |1..b...-3.=0:...|
00000cc0  3e 32 3a e1 0d 07 6c 09  e7 a6 2d 33 e1 0d 07 76  |>2:...l...-3...v|
00000cd0  0e d1 3d 30 3a f5 fd 91  3e 74 25 0d 07 80 05 e1  |..=0:...>t%.....|
00000ce0  0d 07 8a 04 0d 07 94 12  f4 20 70 69 63 74 75 72  |......... pictur|
00000cf0  65 20 74 61 6b 65 0d 07  9e 0d dd f2 70 69 63 54  |e take......picT|
00000d00  61 6b 65 0d 07 a8 1d c8  99 20 4f 24 2c 26 32 32  |ake...... O$,&22|
00000d10  32 2c 53 25 2c 43 25 2c  58 25 2c 59 25 2c 31 31  |2,S%,C%,X%,Y%,11|
00000d20  0d 07 b2 26 c8 99 20 4f  24 2c 26 31 31 30 2c 67  |...&.. O$,&110,g|
00000d30  25 2c 67 24 2c 30 2c 4f  58 25 2c 4f 59 25 2c 61  |%,g$,0,OX%,OY%,a|
00000d40  61 25 2c 62 62 25 0d 07  bc 1d c8 99 20 4f 24 2c  |a%,bb%...... O$,|
00000d50  32 35 36 2b 32 34 2c 67  25 2c 67 24 20 b8 20 2c  |256+24,g%,g$ . ,|
00000d60  2c 70 25 0d 07 c6 21 c8  99 20 4f 24 2c 32 35 36  |,p%...!.. O$,256|
00000d70  2b 34 30 2c 67 25 2c 67  24 20 b8 20 2c 2c 2c 57  |+40,g%,g$ . ,,,W|
00000d80  25 2c 48 25 0d 07 d0 1d  c8 99 20 4f 24 2c 26 32  |%,H%...... O$,&2|
00000d90  32 32 2c 53 25 2c 43 25  2c 58 25 2c 59 25 2c 31  |22,S%,C%,X%,Y%,1|
00000da0  31 0d 07 da 04 0d 07 e4  1e c8 99 20 4f 24 2c 26  |1.......... O$,&|
00000db0  32 32 32 2c 67 25 2c 70  25 2c 36 34 30 2c 32 32  |222,g%,p%,640,22|
00000dc0  30 2c 30 0d 07 ee 05 e1  0d 07 f8 04 0d 08 02 0f  |0,0.............|
00000dd0  f4 20 63 6f 70 79 20 62  69 74 73 0d 08 0c 0a dd  |. copy bits.....|
00000de0  f2 63 6f 70 79 0d 08 16  11 f1 8a 32 2c 32 36 29  |.copy......2,26)|
00000df0  22 43 4f 50 59 22 0d 08  20 09 57 43 25 3d 32 0d  |"COPY".. .WC%=2.|
00000e00  08 2a 0b 63 6f 70 79 25  3d 31 0d 08 34 1d c8 99  |.*.copy%=1..4...|
00000e10  20 4f 24 2c 26 32 32 32  2c 53 25 2c 43 25 2c 58  | O$,&222,S%,C%,X|
00000e20  25 2c 59 25 2c 31 31 0d  08 3e 11 4f 43 25 3d 43  |%,Y%,11..>.OC%=C|
00000e30  25 3a 43 25 3d 43 32 25  0d 08 48 1d c8 99 20 4f  |%:C%=C2%..H... O|
00000e40  24 2c 26 32 32 32 2c 53  25 2c 43 25 2c 58 25 2c  |$,&222,S%,C%,X%,|
00000e50  59 25 2c 31 31 0d 08 52  05 e1 0d 08 5c 04 0d 08  |Y%,11..R....\...|
00000e60  66 13 f4 20 66 69 78 20  63 6f 70 79 20 61 72 65  |f.. fix copy are|
00000e70  61 0d 08 70 0d dd f2 66  69 78 28 66 25 29 0d 08  |a..p...fix(f%)..|
00000e80  7a 1d c8 99 20 4f 24 2c  26 32 32 32 2c 53 25 2c  |z... O$,&222,S%,|
00000e90  43 25 2c 58 25 2c 59 25  2c 31 31 0d 08 84 1d c8  |C%,X%,Y%,11.....|
00000ea0  99 20 4f 24 2c 26 32 32  32 2c 53 25 2c 4f 43 25  |. O$,&222,S%,OC%|
00000eb0  2c 58 25 2c 59 25 2c 38  0d 08 8e 1d c8 99 20 4f  |,X%,Y%,8...... O|
00000ec0  24 2c 26 32 32 32 2c 53  25 2c 43 25 2c 58 25 2c  |$,&222,S%,C%,X%,|
00000ed0  59 25 2c 31 31 0d 08 98  23 e7 66 25 3d 31 6e 75  |Y%,11...#.f%=1nu|
00000ee0  6d 31 25 3d 57 25 3a 63  78 31 25 3d 58 25 3a 63  |m1%=W%:cx1%=X%:c|
00000ef0  79 31 25 3d 59 25 3a e1  0d 08 a2 1c 6e 75 6d 32  |y1%=Y%:.....num2|
00000f00  25 3d 57 25 3a 63 78 32  25 3d 58 25 3a 63 79 32  |%=W%:cx2%=X%:cy2|
00000f10  25 3d 59 25 0d 08 ac 22  79 61 64 64 25 3d 94 28  |%=Y%..."yadd%=.(|
00000f20  28 6e 75 6d 32 25 81 32  30 29 2d 28 6e 75 6d 31  |(num2%.20)-(num1|
00000f30  25 81 32 30 29 29 0d 08  b6 22 78 61 64 64 25 3d  |%.20))..."xadd%=|
00000f40  94 28 28 6e 75 6d 32 25  83 32 30 29 2d 28 6e 75  |.((num2%.20)-(nu|
00000f50  6d 31 25 83 32 30 29 29  0d 08 c0 04 0d 08 ca 1b  |m1%.20))........|
00000f60  e7 63 79 32 25 3c 63 79  31 25 80 63 78 32 25 3e  |.cy2%<cy1%.cx2%>|
00000f70  3d 63 78 31 25 20 8c 0d  08 d4 1b 20 6e 75 6d 31  |=cx1% ..... num1|
00000f80  25 3d 6e 75 6d 31 25 2d  28 79 61 64 64 25 2a 32  |%=num1%-(yadd%*2|
00000f90  30 29 0d 08 de 1b 20 6e  75 6d 32 25 3d 6e 75 6d  |0).... num2%=num|
00000fa0  32 25 2b 28 79 61 64 64  25 2a 32 30 29 0d 08 e8  |2%+(yadd%*20)...|
00000fb0  05 cd 0d 08 f2 04 0d 08  fc 1a e7 63 79 32 25 3c  |...........cy2%<|
00000fc0  63 79 31 25 80 63 78 32  25 3c 63 78 31 25 20 8c  |cy1%.cx2%<cx1% .|
00000fd0  0d 09 06 24 20 4f 32 25  3d 6e 75 6d 32 25 3a 6e  |...$ O2%=num2%:n|
00000fe0  75 6d 32 25 3d 6e 75 6d  31 25 3a 6e 75 6d 31 25  |um2%=num1%:num1%|
00000ff0  3d 4f 32 25 0d 09 10 05  cd 0d 09 1a 04 0d 09 24  |=O2%...........$|
00001000  1a e7 63 79 32 25 3e 63  79 31 25 80 63 78 32 25  |..cy2%>cy1%.cx2%|
00001010  3c 63 78 31 25 20 8c 0d  09 2e 18 20 6e 75 6d 31  |<cx1% ..... num1|
00001020  25 3d 6e 75 6d 31 25 2d  28 78 61 64 64 25 29 0d  |%=num1%-(xadd%).|
00001030  09 38 18 20 6e 75 6d 32  25 3d 6e 75 6d 32 25 2b  |.8. num2%=num2%+|
00001040  28 78 61 64 64 25 29 0d  09 42 05 cd 0d 09 4c 08  |(xadd%)..B....L.|
00001050  7a 25 3d 30 0d 09 56 0f  e3 4a 25 3d 30 b8 79 61  |z%=0..V..J%=0.ya|
00001060  64 64 25 0d 09 60 0f e3  49 25 3d 30 b8 78 61 64  |dd%..`..I%=0.xad|
00001070  64 25 0d 09 6a 21 5a 25  28 7a 25 29 3d 47 25 28  |d%..j!Z%(z%)=G%(|
00001080  28 6e 75 6d 31 25 2b 49  25 29 2b 28 4a 25 2a 32  |(num1%+I%)+(J%*2|
00001090  30 29 29 0d 09 74 09 7a  25 2b 3d 31 0d 09 7e 05  |0))..t.z%+=1..~.|
000010a0  ed 0d 09 88 05 ed 0d 09  92 05 e1 0d 09 9c 04 0d  |................|
000010b0  09 a6 1f f4 20 75 6e 63  6f 70 79 20 28 70 72 65  |.... uncopy (pre|
000010c0  73 73 20 64 65 6c 65 74  65 20 6b 65 79 29 0d 09  |ss delete key)..|
000010d0  b0 0c dd f2 75 6e 63 6f  70 79 0d 09 ba 2f e7 63  |....uncopy.../.c|
000010e0  6f 70 79 25 3d 32 20 c8  99 20 4f 24 2c 26 32 32  |opy%=2 .. O$,&22|
000010f0  32 2c 53 25 2c 43 42 25  2c 63 78 31 25 2c 63 79  |2,S%,CB%,cx1%,cy|
00001100  31 25 2c 65 72 61 73 65  25 0d 09 c4 0e e7 63 6f  |1%,erase%.....co|
00001110  70 79 25 3d 33 20 8c 0d  09 ce 38 20 e6 33 2c 33  |py%=3 ....8 .3,3|
00001120  3a c8 93 58 25 2c 59 25  2c 28 28 78 61 64 64 25  |:..X%,Y%,((xadd%|
00001130  2b 31 29 2a 32 34 29 2c  28 28 79 61 64 64 25 2b  |+1)*24),((yadd%+|
00001140  31 29 2a 32 34 29 3a 72  65 63 74 31 25 3d 30 0d  |1)*24):rect1%=0.|
00001150  09 d8 27 20 c8 99 20 4f  24 2c 26 32 32 32 2c 53  |..' .. O$,&222,S|
00001160  25 2c 43 42 25 2c 63 78  31 25 2c 63 79 31 25 2c  |%,CB%,cx1%,cy1%,|
00001170  65 72 61 73 65 25 0d 09  e2 27 20 c8 99 20 4f 24  |erase%...' .. O$|
00001180  2c 26 32 32 32 2c 53 25  2c 43 42 25 2c 63 78 32  |,&222,S%,CB%,cx2|
00001190  25 2c 63 79 32 25 2c 65  72 61 73 65 25 0d 09 ec  |%,cy2%,erase%...|
000011a0  05 cd 0d 09 f6 18 57 43  25 3d 31 3a 43 25 3d 4f  |......WC%=1:C%=O|
000011b0  43 25 3a 63 6f 70 79 25  3d 30 0d 0a 00 1d c8 99  |C%:copy%=0......|
000011c0  20 4f 24 2c 26 32 32 32  2c 53 25 2c 43 25 2c 58  | O$,&222,S%,C%,X|
000011d0  25 2c 59 25 2c 31 31 0d  0a 0a 11 f1 8a 32 2c 32  |%,Y%,11......2,2|
000011e0  36 29 22 20 20 20 20 22  0d 0a 14 05 e1 0d 0a 1e  |6)"    "........|
000011f0  04 0d 0a 28 19 f4 20 69  6e 73 65 72 74 20 63 6f  |...(.. insert co|
00001200  70 69 65 64 20 70 69 65  63 65 0d 0a 32 21 f4 20  |pied piece..2!. |
00001210  61 6c 74 65 72 20 72 65  6c 65 76 61 6e 74 20 47  |alter relevant G|
00001220  25 28 6e 29 20 76 61 6c  75 65 73 0d 0a 3c 0c dd  |%(n) values..<..|
00001230  f2 63 6f 70 79 74 6f 0d  0a 46 2e e6 33 2c 33 3a  |.copyto..F..3,3:|
00001240  c8 93 58 25 2c 59 25 2c  28 28 78 61 64 64 25 2b  |..X%,Y%,((xadd%+|
00001250  31 29 2a 32 34 29 2c 28  28 79 61 64 64 25 2b 31  |1)*24),((yadd%+1|
00001260  29 2a 32 34 29 0d 0a 50  26 c8 99 20 4f 24 2c 26  |)*24)..P&.. O$,&|
00001270  32 32 32 2c 53 25 2c 43  42 25 2c 63 78 31 25 2c  |222,S%,CB%,cx1%,|
00001280  63 79 31 25 2c 65 72 61  73 65 25 0d 0a 5a 26 c8  |cy1%,erase%..Z&.|
00001290  99 20 4f 24 2c 26 32 32  32 2c 53 25 2c 43 42 25  |. O$,&222,S%,CB%|
000012a0  2c 63 78 32 25 2c 63 79  32 25 2c 65 72 61 73 65  |,cx2%,cy2%,erase|
000012b0  25 0d 0a 64 08 7a 25 3d  30 0d 0a 6e 0f e3 4a 25  |%..d.z%=0..n..J%|
000012c0  3d 30 b8 79 61 64 64 25  0d 0a 78 0f e3 49 25 3d  |=0.yadd%..x..I%=|
000012d0  30 b8 78 61 64 64 25 0d  0a 82 79 e7 58 25 2d 32  |0.xadd%...y.X%-2|
000012e0  30 2b 28 49 25 2a 32 34  29 3c 35 31 37 20 e7 59  |0+(I%*24)<517 .Y|
000012f0  25 2d 32 30 2b 28 4a 25  2a 32 34 29 3c 39 31 37  |%-20+(J%*24)<917|
00001300  20 3a 20 c8 99 20 4f 24  2c 26 32 32 32 2c 53 25  | : .. O$,&222,S%|
00001310  2c 50 25 28 5a 25 28 7a  25 29 29 2c 58 25 2b 34  |,P%(Z%(z%)),X%+4|
00001320  2b 28 49 25 2a 32 34 29  2c 59 25 2b 34 2b 28 4a  |+(I%*24),Y%+4+(J|
00001330  25 2a 32 34 29 2c 30 3a  47 25 28 57 25 2b 49 25  |%*24),0:G%(W%+I%|
00001340  2b 28 4a 25 2a 32 30 29  29 3d 5a 25 28 7a 25 29  |+(J%*20))=Z%(z%)|
00001350  0d 0a 8c 09 7a 25 2b 3d  31 0d 0a 96 05 ed 0d 0a  |....z%+=1.......|
00001360  a0 05 ed 0d 0a aa 2e e6  33 2c 33 3a c8 93 58 25  |........3,3:..X%|
00001370  2c 59 25 2c 28 28 78 61  64 64 25 2b 31 29 2a 32  |,Y%,((xadd%+1)*2|
00001380  34 29 2c 28 28 79 61 64  64 25 2b 31 29 2a 32 34  |4),((yadd%+1)*24|
00001390  29 0d 0a b4 05 e1 0d 0a  be 04 0d 0a c8 0f f4 20  |).............. |
000013a0  4c 4f 41 44 20 46 49 4c  45 0d 0a d2 0a dd f2 6c  |LOAD FILE......l|
000013b0  6f 61 64 0d 0a dc 07 ea  79 25 0d 0a e6 09 79 25  |oad.....y%....y%|
000013c0  3d 32 36 0d 0a f0 09 2a  46 58 32 31 0d 0a fa 24  |=26....*FX21...$|
000013d0  f1 8a 32 2c 79 25 29 22  4c 4f 41 44 20 46 49 4c  |..2,y%)"LOAD FIL|
000013e0  45 3f 20 28 59 2f 4e 29  20 22 3a 79 6e 24 3d be  |E? (Y/N) ":yn$=.|
000013f0  0d 0b 04 19 e7 79 6e 24  3c 3e 22 59 22 f1 8a 32  |.....yn$<>"Y"..2|
00001400  2c 79 25 29 89 32 33 3a  e1 0d 0b 0e 0e f1 8a 32  |,y%).23:.......2|
00001410  2c 79 25 29 89 32 33 0d  0b 18 1d e8 8a 32 2c 79  |,y%).23......2,y|
00001420  25 29 22 57 48 41 54 20  4e 41 4d 45 3f 20 22 6e  |%)"WHAT NAME? "n|
00001430  61 6d 65 24 0d 0b 22 0e  f1 8a 32 2c 79 25 29 89  |ame$.."...2,y%).|
00001440  32 33 0d 0b 2c 1f 66 69  6c 65 25 3d 8e 28 22 3c  |23..,.file%=.("<|
00001450  4d 41 47 24 44 69 72 3e  2e 22 2b 6e 61 6d 65 24  |MAG$Dir>."+name$|
00001460  29 0d 0b 36 0d e3 49 25  3d 30 b8 35 39 39 0d 0b  |)..6..I%=0.599..|
00001470  40 12 e8 23 66 69 6c 65  25 2c 47 25 28 49 25 29  |@..#file%,G%(I%)|
00001480  0d 0b 4a 05 ed 0d 0b 54  0b d9 23 66 69 6c 65 25  |..J....T..#file%|
00001490  0d 0b 5e 0b f2 64 72 61  77 69 74 0d 0b 68 05 e1  |..^..drawit..h..|
000014a0  0d 0b 72 04 0d 0b 7c 0f  f4 20 53 41 56 45 20 46  |..r...|.. SAVE F|
000014b0  49 4c 45 0d 0b 86 0a dd  f2 73 61 76 65 0d 0b 90  |ILE......save...|
000014c0  07 ea 79 25 0d 0b 9a 09  79 25 3d 32 36 0d 0b a4  |..y%....y%=26...|
000014d0  0a c8 99 36 2c 31 35 0d  0b ae 24 f1 8a 32 2c 79  |...6,15...$..2,y|
000014e0  25 29 22 53 41 56 45 20  66 69 6c 65 3f 20 28 59  |%)"SAVE file? (Y|
000014f0  2f 4e 29 20 22 3a 79 6e  24 3d be 0d 0b b8 1a e7  |/N) ":yn$=......|
00001500  79 6e 24 3c 3e 22 59 22  f1 8a 32 2c 79 25 29 3b  |yn$<>"Y"..2,y%);|
00001510  89 32 33 3a e1 0d 0b c2  28 f1 8a 32 2c 79 25 29  |.23:....(..2,y%)|
00001520  89 32 33 3a e8 8a 32 2c  79 25 29 22 57 48 41 54  |.23:..2,y%)"WHAT|
00001530  20 4e 41 4d 45 3f 20 22  6e 61 6d 65 24 0d 0b cc  | NAME? "name$...|
00001540  0f f1 8a 32 2c 79 25 29  3b 89 32 33 0d 0b d6 1f  |...2,y%);.23....|
00001550  66 69 6c 65 25 3d ae 28  22 3c 4d 41 47 24 44 69  |file%=.("<MAG$Di|
00001560  72 3e 2e 22 2b 6e 61 6d  65 24 29 0d 0b e0 0d e3  |r>."+name$).....|
00001570  49 25 3d 30 b8 35 39 39  0d 0b ea 12 f1 23 66 69  |I%=0.599.....#fi|
00001580  6c 65 25 2c 47 25 28 49  25 29 0d 0b f4 05 ed 0d  |le%,G%(I%)......|
00001590  0b fe 0b d9 23 66 69 6c  65 25 0d 0c 08 05 e1 0d  |....#file%......|
000015a0  0c 12 04 0d 0c 1c 19 f4  20 64 72 61 77 20 6c 6f  |........ draw lo|
000015b0  61 64 65 64 20 69 6e 20  64 61 74 61 0d 0c 26 0c  |aded in data..&.|
000015c0  dd f2 64 72 61 77 69 74  0d 0c 30 1d c8 99 20 4f  |..drawit..0... O|
000015d0  24 2c 26 32 32 32 2c 53  25 2c 43 25 2c 58 25 2c  |$,&222,S%,C%,X%,|
000015e0  59 25 2c 31 31 0d 0c 3a  09 77 25 3d 2d 31 0d 0c  |Y%,11..:.w%=-1..|
000015f0  44 12 e3 4a 25 3d 32 32  34 b8 39 33 36 88 32 34  |D..J%=224.936.24|
00001600  0d 0c 4e 11 e3 49 25 3d  36 34 b8 35 32 30 88 32  |..N..I%=64.520.2|
00001610  34 0d 0c 58 09 77 25 2b  3d 31 0d 0c 62 24 c8 99  |4..X.w%+=1..b$..|
00001620  20 4f 24 2c 26 32 32 32  2c 53 25 2c 50 25 28 47  | O$,&222,S%,P%(G|
00001630  25 28 77 25 29 29 2c 49  25 2c 4a 25 2c 30 0d 0c  |%(w%)),I%,J%,0..|
00001640  6c 05 ed 0d 0c 76 05 ed  0d 0c 80 1d c8 99 20 4f  |l....v........ O|
00001650  24 2c 26 32 32 32 2c 53  25 2c 43 25 2c 58 25 2c  |$,&222,S%,C%,X%,|
00001660  59 25 2c 31 31 0d 0c 8a  05 e1 0d 0c 94 04 0d 0c  |Y%,11...........|
00001670  9e 21 f4 20 70 75 73 68  20 70 69 6e 73 20 75 73  |.!. push pins us|
00001680  69 6e 67 20 6b 65 79 20  70 72 65 73 73 65 73 0d  |ing key presses.|
00001690  0c a8 11 dd f2 6b 65 79  70 75 73 68 28 6e 25 29  |.....keypush(n%)|
000016a0  0d 0c b2 1d c8 99 20 4f  24 2c 26 32 32 32 2c 53  |...... O$,&222,S|
000016b0  25 2c 43 25 2c 58 25 2c  59 25 2c 31 31 0d 0c bc  |%,C%,X%,Y%,11...|
000016c0  2e c8 99 20 4f 24 2c 26  32 32 32 2c 53 25 2c 50  |... O$,&222,S%,P|
000016d0  25 28 6e 25 29 2c 58 25  2b 34 2c 59 25 2b 34 2c  |%(n%),X%+4,Y%+4,|
000016e0  30 3a 47 25 28 57 25 29  3d 6e 25 0d 0c c6 1d c8  |0:G%(W%)=n%.....|
000016f0  99 20 4f 24 2c 26 32 32  32 2c 53 25 2c 43 25 2c  |. O$,&222,S%,C%,|
00001700  58 25 2c 59 25 2c 31 31  0d 0c d0 05 e1 0d 0c da  |X%,Y%,11........|
00001710  04 0d 0c e4 0c f4 20 72  65 63 6f 72 64 0d 0c ee  |...... record...|
00001720  0c dd f2 72 65 63 6f 72  64 0d 0c f8 09 2a 53 4e  |...record....*SN|
00001730  45 57 0d 0d 02 1d c8 99  20 4f 24 2c 26 32 32 32  |EW...... O$,&222|
00001740  2c 53 25 2c 43 25 2c 58  25 2c 59 25 2c 31 31 0d  |,S%,C%,X%,Y%,11.|
00001750  0d 0c 0c e3 4b 25 3d 30  b8 31 32 0d 0d 16 08 f2  |....K%=0.12.....|
00001760  67 65 74 0d 0d 20 07 f2  75 70 0d 0d 2a 05 ed 0d  |get.. ..up..*...|
00001770  0d 34 1d c8 99 20 4f 24  2c 26 32 32 32 2c 53 25  |.4... O$,&222,S%|
00001780  2c 43 25 2c 58 25 2c 59  25 2c 31 31 0d 0d 3e 05  |,C%,X%,Y%,11..>.|
00001790  e1 0d 0d 48 04 0d 0d 52  11 f4 20 70 69 6e 73 20  |...H...R.. pins |
000017a0  61 73 63 65 6e 64 0d 0d  5c 08 dd f2 75 70 0d 0d  |ascend..\...up..|
000017b0  66 08 6f 25 3d 30 0d 0d  70 12 e3 4a 25 3d 32 32  |f.o%=0..p..J%=22|
000017c0  34 b8 39 33 36 88 32 34  0d 0d 7a 11 e3 49 25 3d  |4.936.24..z..I%=|
000017d0  36 34 b8 35 32 30 88 32  34 0d 0d 84 16 e7 47 25  |64.520.24.....G%|
000017e0  28 6f 25 29 3e 30 47 25  28 6f 25 29 2d 3d 31 0d  |(o%)>0G%(o%)-=1.|
000017f0  0d 8e 24 c8 99 20 4f 24  2c 26 32 32 32 2c 53 25  |..$.. O$,&222,S%|
00001800  2c 50 25 28 47 25 28 6f  25 29 29 2c 49 25 2c 4a  |,P%(G%(o%)),I%,J|
00001810  25 2c 30 0d 0d 98 09 6f  25 2b 3d 31 0d 0d a2 05  |%,0....o%+=1....|
00001820  ed 0d 0d ac 05 ed 0d 0d  b6 05 e1 0d 0d c0 04 0d  |................|
00001830  0d ca 0e f4 20 70 6c 61  79 62 61 63 6b 0d 0d d4  |.... playback...|
00001840  1e dd f2 61 6e 69 6d 61  74 65 28 66 72 6f 6d 25  |...animate(from%|
00001850  2c 74 6f 25 2c 73 74 65  70 25 29 0d 0d de 0c 73  |,to%,step%)....s|
00001860  70 65 65 64 25 3d 36 0d  0d e8 17 e3 4b 25 3d 66  |peed%=6.....K%=f|
00001870  72 6f 6d 25 b8 74 6f 25  88 73 74 65 70 25 0d 0d  |rom%.to%.step%..|
00001880  f2 10 ef 32 33 2c 32 37  2c 30 2c 4b 25 7c 0d 0d  |...23,27,0,K%|..|
00001890  fc 10 f0 26 45 44 2c 36  34 30 2c 32 32 30 0d 0e  |...&ED,640,220..|
000018a0  06 07 d1 3d 30 0d 0e 10  0e f5 fd 91 3e 73 70 65  |...=0.......>spe|
000018b0  65 64 25 0d 0e 1a 05 ed  0d 0e 24 05 e1 0d 0e 2e  |ed%.......$.....|
000018c0  04 0d 0e 38 10 f4 20 67  65 74 20 73 70 72 69 74  |...8.. get sprit|
000018d0  65 0d 0e 42 09 dd f2 67  65 74 0d 0e 4c 0b ec 36  |e..B...get..L..6|
000018e0  30 2c 32 32 30 0d 0e 56  10 ec 20 42 59 20 34 35  |0,220..V.. BY 45|
000018f0  36 2c 37 31 36 0d 0e 60  10 ef 32 33 2c 32 37 2c  |6,716..`..23,27,|
00001900  31 2c 4b 25 7c 0d 0e 6a  10 ef 32 33 2c 32 37 2c  |1,K%|..j..23,27,|
00001910  30 2c 4b 25 7c 0d 0e 74  10 f0 26 45 44 2c 36 34  |0,K%|..t..&ED,64|
00001920  30 2c 32 32 30 0d 0e 7e  05 e1 0d ff              |0,220..~....|
0000192c