Home » Archimedes archive » Acorn Computing » 1994 03.adf » 9403 » Draw/Example1

Draw/Example1

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 03.adf » 9403
Filename: Draw/Example1
Read OK:
File size: 0930 bytes
Load address: 0000
Exec address: 0000
File contents
   10REM > Example1
   20
   30REM The draw module - Example 1
   40REM Demonstrate transformation matrices
   50REM by Ben Summers
   60
   70
   80ONERROR REPORT:PRINT" at line "ERL:END
   90@% = &020208
  100
  110
  120MODE 12
  130
  140
  150REM first, make a path...
  160
  170RESTORE
  180DIM path% 1024
  190
  200n = 0
  210REPEAT
  220  READ e%
  230  path%!(n*4) = e%
  240  n += 1
  250UNTIL e% = -1
  260
  270DATA 2,0,0, 8,46080,0, 8,46080,46080, 8,0,46080, 8,0,0, 4
  280DATA 2,51840,0, 6,0,23040,63360,80640,92160,92160, 4, 0, -1
  290
  300OFF
  310
  320axis_scale_unit% = 180
  330DIM transform% 32
  340
  350REPEAT
  360
  370  CLS
  380  ORIGIN 640,512
  390
  400  REM plot the path without any transformation
  410  SYS "ColourTrans_SetGCOL",&00FF0000,,,0,0
  420
  430  PROCstroke_path(1, 0, 0, 1)
  440
  450  REM label the axis
  460  VDU 5
  470  MOVE 180,0
  480  PRINT "X"
  490  MOVE -16,180
  500  PRINT "Y"
  510  VDU 4
  520
  530  REM set the axis...
  540
  550  PRINT "Click to set x-axis"
  560  PROCdo_drag(x_x%, x_y%, "X")
  570  a = x_x% / axis_scale_unit%
  580  b = x_y% / axis_scale_unit%
  590
  600  PRINT "Click to set y-axis"
  610  PROCdo_drag(y_x%, y_y%, "Y")
  620  c = y_x% / axis_scale_unit%
  630  d = y_y% / axis_scale_unit%
  640
  650  PRINT "a = "a
  660  PRINT "b = "b
  670  PRINT "c = "c
  680  PRINT "d = "d
  690
  700
  710
  720  REM plot that path
  730  SYS "ColourTrans_SetGCOL",&FFFFFF00,,,0,0
  740
  750  PROCstroke_path(a, b, c, d)
  760
  770
  780  PRINT TAB(0,31)"Click mouse to set another set of axis, ESCAPE to end";
  790  REPEAT:MOUSE mx%,my%,mb%:UNTIL mb% <> 0
  800  REPEAT:MOUSE mx%,my%,mb%:UNTIL mb% = 0
  810
  820UNTIL FALSE
  830
  840END
  850
  860
  870
  880DEFPROCstroke_path(a, b, c, d)
  890  REM  I'm using internal draw units for my path elements.
  900  user_unit_scale = 1
  910
  920  REM make up a matrix for drawing the path
  930
  940  transform%!0  = (user_unit_scale * a) * 2^16
  950  transform%!4  = (user_unit_scale * b) * 2^16
  960  transform%!8  = (user_unit_scale * c) * 2^16
  970  transform%!12 = (user_unit_scale * d) * 2^16
  980  transform%!16 = 0
  990  transform%!20 = 0
 1000
 1010  SYS "Draw_Stroke",path%,0,transform%,0,0,0,0
 1020ENDPROC
 1030
 1040
 1050
 1060
 1070
 1080DEFPROCdo_drag(RETURN x%, RETURN y%, s$)
 1090  LOCAL mx%,my%,mb%
 1100
 1110  VDU 5
 1120  MOUSE mx%,my%,mb%
 1130  SYS "ColourTrans_SetGCOL",&0000FF00,,,256,3
 1140  MOVE 0,0:DRAW mx%,my%
 1150  PRINT s$
 1160  x% = mx%:y% = my%
 1170  REPEAT
 1180    MOUSE mx%,my%,mb%
 1190
 1200    IF mx% <> x% OR my% <> y% THEN
 1210      MOVE 0,0
 1220      DRAW x%,y%
 1230      PRINT s$
 1240      MOVE 0,0
 1250      DRAW mx%,my%
 1260      PRINT s$
 1270      x% = mx%:y% = my%
 1280    ENDIF
 1290  UNTIL mb% <> 0
 1300
 1310  REPEAT:MOUSE mx%,my%,mb%:UNTIL mb% = 0
 1320  VDU 4
 1330  OFF
 1340
 1350ENDPROC
 1360
 1370
� > Example1

!� The draw module - Example 1
()� Demonstrate transformation matrices
2� by Ben Summers
<
F
P� �:�" at line "�:�
Z@% = &020208
d
n
x� 12
�
�
�� first, make a path...
�
��
�� path% 1024
�
�	n = 0
��
�
  � e%
�  path%!(n*4) = e%
�  n += 1
�
� e% = -1

:� 2,0,0, 8,46080,0, 8,46080,46080, 8,0,46080, 8,0,0, 4
<� 2,51840,0, 6,0,23040,63360,80640,92160,92160, 4, 0, -1
"
,�
6
@axis_scale_unit% = 180
J� transform% 32
T
^�
h
r  �
|  ȑ 640,512
�
�0  � plot the path without any transformation
�.  ș "ColourTrans_SetGCOL",&00FF0000,,,0,0
�
�  �stroke_path(1, 0, 0, 1)
�
�  � label the axis
�	  � 5
�
  � 180,0
�  � "X"
�  � -16,180
�  � "Y"
�	  � 4

  � set the axis...

&  � "Click to set x-axis"
0  �do_drag(x_x%, x_y%, "X")
:!  a = x_x% / axis_scale_unit%
D!  b = x_y% / axis_scale_unit%
N
X  � "Click to set y-axis"
b  �do_drag(y_x%, y_y%, "Y")
l!  c = y_x% / axis_scale_unit%
v!  d = y_y% / axis_scale_unit%
�
�  � "a = "a
�  � "b = "b
�  � "c = "c
�  � "d = "d
�
�
�
�  � plot that path
�.  ș "ColourTrans_SetGCOL",&FFFFFF00,,,0,0
�
�  �stroke_path(a, b, c, d)
�

F  � �0,31)"Click mouse to set another set of axis, ESCAPE to end";
!  �:ȗ mx%,my%,mb%:� mb% <> 0
    �:ȗ mx%,my%,mb%:� mb% = 0
*
4� �
>
H�
R
\
f
p��stroke_path(a, b, c, d)
z<  �  I'm using internal draw units for my path elements.
�  user_unit_scale = 1
�
�-  � make up a matrix for drawing the path
�
�2  transform%!0  = (user_unit_scale * a) * 2^16
�2  transform%!4  = (user_unit_scale * b) * 2^16
�2  transform%!8  = (user_unit_scale * c) * 2^16
�2  transform%!12 = (user_unit_scale * d) * 2^16
�  transform%!16 = 0
�  transform%!20 = 0
�
�1  ș "Draw_Stroke",path%,0,transform%,0,0,0,0
��



$
.
8��do_drag(� x%, � y%, s$)
B  � mx%,my%,mb%
L
V	  � 5
`  ȗ mx%,my%,mb%
j0  ș "ColourTrans_SetGCOL",&0000FF00,,,256,3
t  � 0,0:� mx%,my%
~
  � s$
�  x% = mx%:y% = my%
�  �
�    ȗ mx%,my%,mb%
�
�!    � mx% <> x% � my% <> y% �
�      � 0,0
�      � x%,y%
�      � s$
�      � 0,0
�      � mx%,my%
�      � s$
�      x% = mx%:y% = my%
	    �

  � mb% <> 0

   �:ȗ mx%,my%,mb%:� mb% = 0
(	  � 4
2  �
<
F�
P
Z
�
00000000  0d 00 0a 10 f4 20 3e 20  45 78 61 6d 70 6c 65 31  |..... > Example1|
00000010  0d 00 14 04 0d 00 1e 21  f4 20 54 68 65 20 64 72  |.......!. The dr|
00000020  61 77 20 6d 6f 64 75 6c  65 20 2d 20 45 78 61 6d  |aw module - Exam|
00000030  70 6c 65 20 31 0d 00 28  29 f4 20 44 65 6d 6f 6e  |ple 1..(). Demon|
00000040  73 74 72 61 74 65 20 74  72 61 6e 73 66 6f 72 6d  |strate transform|
00000050  61 74 69 6f 6e 20 6d 61  74 72 69 63 65 73 0d 00  |ation matrices..|
00000060  32 14 f4 20 62 79 20 42  65 6e 20 53 75 6d 6d 65  |2.. by Ben Summe|
00000070  72 73 0d 00 3c 04 0d 00  46 04 0d 00 50 18 ee 85  |rs..<...F...P...|
00000080  20 f6 3a f1 22 20 61 74  20 6c 69 6e 65 20 22 9e  | .:." at line ".|
00000090  3a e0 0d 00 5a 10 40 25  20 3d 20 26 30 32 30 32  |:...Z.@% = &0202|
000000a0  30 38 0d 00 64 04 0d 00  6e 04 0d 00 78 08 eb 20  |08..d...n...x.. |
000000b0  31 32 0d 00 82 04 0d 00  8c 04 0d 00 96 1b f4 20  |12............. |
000000c0  66 69 72 73 74 2c 20 6d  61 6b 65 20 61 20 70 61  |first, make a pa|
000000d0  74 68 2e 2e 2e 0d 00 a0  04 0d 00 aa 05 f7 0d 00  |th..............|
000000e0  b4 10 de 20 70 61 74 68  25 20 31 30 32 34 0d 00  |... path% 1024..|
000000f0  be 04 0d 00 c8 09 6e 20  3d 20 30 0d 00 d2 05 f5  |......n = 0.....|
00000100  0d 00 dc 0a 20 20 f3 20  65 25 0d 00 e6 16 20 20  |....  . e%....  |
00000110  70 61 74 68 25 21 28 6e  2a 34 29 20 3d 20 65 25  |path%!(n*4) = e%|
00000120  0d 00 f0 0c 20 20 6e 20  2b 3d 20 31 0d 00 fa 0d  |....  n += 1....|
00000130  fd 20 65 25 20 3d 20 2d  31 0d 01 04 04 0d 01 0e  |. e% = -1.......|
00000140  3a dc 20 32 2c 30 2c 30  2c 20 38 2c 34 36 30 38  |:. 2,0,0, 8,4608|
00000150  30 2c 30 2c 20 38 2c 34  36 30 38 30 2c 34 36 30  |0,0, 8,46080,460|
00000160  38 30 2c 20 38 2c 30 2c  34 36 30 38 30 2c 20 38  |80, 8,0,46080, 8|
00000170  2c 30 2c 30 2c 20 34 0d  01 18 3c dc 20 32 2c 35  |,0,0, 4...<. 2,5|
00000180  31 38 34 30 2c 30 2c 20  36 2c 30 2c 32 33 30 34  |1840,0, 6,0,2304|
00000190  30 2c 36 33 33 36 30 2c  38 30 36 34 30 2c 39 32  |0,63360,80640,92|
000001a0  31 36 30 2c 39 32 31 36  30 2c 20 34 2c 20 30 2c  |160,92160, 4, 0,|
000001b0  20 2d 31 0d 01 22 04 0d  01 2c 05 87 0d 01 36 04  | -1.."...,....6.|
000001c0  0d 01 40 1a 61 78 69 73  5f 73 63 61 6c 65 5f 75  |..@.axis_scale_u|
000001d0  6e 69 74 25 20 3d 20 31  38 30 0d 01 4a 13 de 20  |nit% = 180..J.. |
000001e0  74 72 61 6e 73 66 6f 72  6d 25 20 33 32 0d 01 54  |transform% 32..T|
000001f0  04 0d 01 5e 05 f5 0d 01  68 04 0d 01 72 07 20 20  |...^....h...r.  |
00000200  db 0d 01 7c 10 20 20 c8  91 20 36 34 30 2c 35 31  |...|.  .. 640,51|
00000210  32 0d 01 86 04 0d 01 90  30 20 20 f4 20 70 6c 6f  |2.......0  . plo|
00000220  74 20 74 68 65 20 70 61  74 68 20 77 69 74 68 6f  |t the path witho|
00000230  75 74 20 61 6e 79 20 74  72 61 6e 73 66 6f 72 6d  |ut any transform|
00000240  61 74 69 6f 6e 0d 01 9a  2e 20 20 c8 99 20 22 43  |ation....  .. "C|
00000250  6f 6c 6f 75 72 54 72 61  6e 73 5f 53 65 74 47 43  |olourTrans_SetGC|
00000260  4f 4c 22 2c 26 30 30 46  46 30 30 30 30 2c 2c 2c  |OL",&00FF0000,,,|
00000270  30 2c 30 0d 01 a4 04 0d  01 ae 1e 20 20 f2 73 74  |0,0........  .st|
00000280  72 6f 6b 65 5f 70 61 74  68 28 31 2c 20 30 2c 20  |roke_path(1, 0, |
00000290  30 2c 20 31 29 0d 01 b8  04 0d 01 c2 16 20 20 f4  |0, 1)........  .|
000002a0  20 6c 61 62 65 6c 20 74  68 65 20 61 78 69 73 0d  | label the axis.|
000002b0  01 cc 09 20 20 ef 20 35  0d 01 d6 0d 20 20 ec 20  |...  . 5....  . |
000002c0  31 38 30 2c 30 0d 01 e0  0b 20 20 f1 20 22 58 22  |180,0....  . "X"|
000002d0  0d 01 ea 0f 20 20 ec 20  2d 31 36 2c 31 38 30 0d  |....  . -16,180.|
000002e0  01 f4 0b 20 20 f1 20 22  59 22 0d 01 fe 09 20 20  |...  . "Y"....  |
000002f0  ef 20 34 0d 02 08 04 0d  02 12 17 20 20 f4 20 73  |. 4........  . s|
00000300  65 74 20 74 68 65 20 61  78 69 73 2e 2e 2e 0d 02  |et the axis.....|
00000310  1c 04 0d 02 26 1d 20 20  f1 20 22 43 6c 69 63 6b  |....&.  . "Click|
00000320  20 74 6f 20 73 65 74 20  78 2d 61 78 69 73 22 0d  | to set x-axis".|
00000330  02 30 1f 20 20 f2 64 6f  5f 64 72 61 67 28 78 5f  |.0.  .do_drag(x_|
00000340  78 25 2c 20 78 5f 79 25  2c 20 22 58 22 29 0d 02  |x%, x_y%, "X")..|
00000350  3a 21 20 20 61 20 3d 20  78 5f 78 25 20 2f 20 61  |:!  a = x_x% / a|
00000360  78 69 73 5f 73 63 61 6c  65 5f 75 6e 69 74 25 0d  |xis_scale_unit%.|
00000370  02 44 21 20 20 62 20 3d  20 78 5f 79 25 20 2f 20  |.D!  b = x_y% / |
00000380  61 78 69 73 5f 73 63 61  6c 65 5f 75 6e 69 74 25  |axis_scale_unit%|
00000390  0d 02 4e 04 0d 02 58 1d  20 20 f1 20 22 43 6c 69  |..N...X.  . "Cli|
000003a0  63 6b 20 74 6f 20 73 65  74 20 79 2d 61 78 69 73  |ck to set y-axis|
000003b0  22 0d 02 62 1f 20 20 f2  64 6f 5f 64 72 61 67 28  |"..b.  .do_drag(|
000003c0  79 5f 78 25 2c 20 79 5f  79 25 2c 20 22 59 22 29  |y_x%, y_y%, "Y")|
000003d0  0d 02 6c 21 20 20 63 20  3d 20 79 5f 78 25 20 2f  |..l!  c = y_x% /|
000003e0  20 61 78 69 73 5f 73 63  61 6c 65 5f 75 6e 69 74  | axis_scale_unit|
000003f0  25 0d 02 76 21 20 20 64  20 3d 20 79 5f 79 25 20  |%..v!  d = y_y% |
00000400  2f 20 61 78 69 73 5f 73  63 61 6c 65 5f 75 6e 69  |/ axis_scale_uni|
00000410  74 25 0d 02 80 04 0d 02  8a 0f 20 20 f1 20 22 61  |t%........  . "a|
00000420  20 3d 20 22 61 0d 02 94  0f 20 20 f1 20 22 62 20  | = "a....  . "b |
00000430  3d 20 22 62 0d 02 9e 0f  20 20 f1 20 22 63 20 3d  |= "b....  . "c =|
00000440  20 22 63 0d 02 a8 0f 20  20 f1 20 22 64 20 3d 20  | "c....  . "d = |
00000450  22 64 0d 02 b2 04 0d 02  bc 04 0d 02 c6 04 0d 02  |"d..............|
00000460  d0 16 20 20 f4 20 70 6c  6f 74 20 74 68 61 74 20  |..  . plot that |
00000470  70 61 74 68 0d 02 da 2e  20 20 c8 99 20 22 43 6f  |path....  .. "Co|
00000480  6c 6f 75 72 54 72 61 6e  73 5f 53 65 74 47 43 4f  |lourTrans_SetGCO|
00000490  4c 22 2c 26 46 46 46 46  46 46 30 30 2c 2c 2c 30  |L",&FFFFFF00,,,0|
000004a0  2c 30 0d 02 e4 04 0d 02  ee 1e 20 20 f2 73 74 72  |,0........  .str|
000004b0  6f 6b 65 5f 70 61 74 68  28 61 2c 20 62 2c 20 63  |oke_path(a, b, c|
000004c0  2c 20 64 29 0d 02 f8 04  0d 03 02 04 0d 03 0c 46  |, d)...........F|
000004d0  20 20 f1 20 8a 30 2c 33  31 29 22 43 6c 69 63 6b  |  . .0,31)"Click|
000004e0  20 6d 6f 75 73 65 20 74  6f 20 73 65 74 20 61 6e  | mouse to set an|
000004f0  6f 74 68 65 72 20 73 65  74 20 6f 66 20 61 78 69  |other set of axi|
00000500  73 2c 20 45 53 43 41 50  45 20 74 6f 20 65 6e 64  |s, ESCAPE to end|
00000510  22 3b 0d 03 16 21 20 20  f5 3a c8 97 20 6d 78 25  |";...!  .:.. mx%|
00000520  2c 6d 79 25 2c 6d 62 25  3a fd 20 6d 62 25 20 3c  |,my%,mb%:. mb% <|
00000530  3e 20 30 0d 03 20 20 20  20 f5 3a c8 97 20 6d 78  |> 0..    .:.. mx|
00000540  25 2c 6d 79 25 2c 6d 62  25 3a fd 20 6d 62 25 20  |%,my%,mb%:. mb% |
00000550  3d 20 30 0d 03 2a 04 0d  03 34 07 fd 20 a3 0d 03  |= 0..*...4.. ...|
00000560  3e 04 0d 03 48 05 e0 0d  03 52 04 0d 03 5c 04 0d  |>...H....R...\..|
00000570  03 66 04 0d 03 70 1d dd  f2 73 74 72 6f 6b 65 5f  |.f...p...stroke_|
00000580  70 61 74 68 28 61 2c 20  62 2c 20 63 2c 20 64 29  |path(a, b, c, d)|
00000590  0d 03 7a 3c 20 20 f4 20  20 49 27 6d 20 75 73 69  |..z<  .  I'm usi|
000005a0  6e 67 20 69 6e 74 65 72  6e 61 6c 20 64 72 61 77  |ng internal draw|
000005b0  20 75 6e 69 74 73 20 66  6f 72 20 6d 79 20 70 61  | units for my pa|
000005c0  74 68 20 65 6c 65 6d 65  6e 74 73 2e 0d 03 84 19  |th elements.....|
000005d0  20 20 75 73 65 72 5f 75  6e 69 74 5f 73 63 61 6c  |  user_unit_scal|
000005e0  65 20 3d 20 31 0d 03 8e  04 0d 03 98 2d 20 20 f4  |e = 1.......-  .|
000005f0  20 6d 61 6b 65 20 75 70  20 61 20 6d 61 74 72 69  | make up a matri|
00000600  78 20 66 6f 72 20 64 72  61 77 69 6e 67 20 74 68  |x for drawing th|
00000610  65 20 70 61 74 68 0d 03  a2 04 0d 03 ac 32 20 20  |e path.......2  |
00000620  74 72 61 6e 73 66 6f 72  6d 25 21 30 20 20 3d 20  |transform%!0  = |
00000630  28 75 73 65 72 5f 75 6e  69 74 5f 73 63 61 6c 65  |(user_unit_scale|
00000640  20 2a 20 61 29 20 2a 20  32 5e 31 36 0d 03 b6 32  | * a) * 2^16...2|
00000650  20 20 74 72 61 6e 73 66  6f 72 6d 25 21 34 20 20  |  transform%!4  |
00000660  3d 20 28 75 73 65 72 5f  75 6e 69 74 5f 73 63 61  |= (user_unit_sca|
00000670  6c 65 20 2a 20 62 29 20  2a 20 32 5e 31 36 0d 03  |le * b) * 2^16..|
00000680  c0 32 20 20 74 72 61 6e  73 66 6f 72 6d 25 21 38  |.2  transform%!8|
00000690  20 20 3d 20 28 75 73 65  72 5f 75 6e 69 74 5f 73  |  = (user_unit_s|
000006a0  63 61 6c 65 20 2a 20 63  29 20 2a 20 32 5e 31 36  |cale * c) * 2^16|
000006b0  0d 03 ca 32 20 20 74 72  61 6e 73 66 6f 72 6d 25  |...2  transform%|
000006c0  21 31 32 20 3d 20 28 75  73 65 72 5f 75 6e 69 74  |!12 = (user_unit|
000006d0  5f 73 63 61 6c 65 20 2a  20 64 29 20 2a 20 32 5e  |_scale * d) * 2^|
000006e0  31 36 0d 03 d4 17 20 20  74 72 61 6e 73 66 6f 72  |16....  transfor|
000006f0  6d 25 21 31 36 20 3d 20  30 0d 03 de 17 20 20 74  |m%!16 = 0....  t|
00000700  72 61 6e 73 66 6f 72 6d  25 21 32 30 20 3d 20 30  |ransform%!20 = 0|
00000710  0d 03 e8 04 0d 03 f2 31  20 20 c8 99 20 22 44 72  |.......1  .. "Dr|
00000720  61 77 5f 53 74 72 6f 6b  65 22 2c 70 61 74 68 25  |aw_Stroke",path%|
00000730  2c 30 2c 74 72 61 6e 73  66 6f 72 6d 25 2c 30 2c  |,0,transform%,0,|
00000740  30 2c 30 2c 30 0d 03 fc  05 e1 0d 04 06 04 0d 04  |0,0,0...........|
00000750  10 04 0d 04 1a 04 0d 04  24 04 0d 04 2e 04 0d 04  |........$.......|
00000760  38 1d dd f2 64 6f 5f 64  72 61 67 28 f8 20 78 25  |8...do_drag(. x%|
00000770  2c 20 f8 20 79 25 2c 20  73 24 29 0d 04 42 13 20  |, . y%, s$)..B. |
00000780  20 ea 20 6d 78 25 2c 6d  79 25 2c 6d 62 25 0d 04  | . mx%,my%,mb%..|
00000790  4c 04 0d 04 56 09 20 20  ef 20 35 0d 04 60 14 20  |L...V.  . 5..`. |
000007a0  20 c8 97 20 6d 78 25 2c  6d 79 25 2c 6d 62 25 0d  | .. mx%,my%,mb%.|
000007b0  04 6a 30 20 20 c8 99 20  22 43 6f 6c 6f 75 72 54  |.j0  .. "ColourT|
000007c0  72 61 6e 73 5f 53 65 74  47 43 4f 4c 22 2c 26 30  |rans_SetGCOL",&0|
000007d0  30 30 30 46 46 30 30 2c  2c 2c 32 35 36 2c 33 0d  |000FF00,,,256,3.|
000007e0  04 74 15 20 20 ec 20 30  2c 30 3a df 20 6d 78 25  |.t.  . 0,0:. mx%|
000007f0  2c 6d 79 25 0d 04 7e 0a  20 20 f1 20 73 24 0d 04  |,my%..~.  . s$..|
00000800  88 17 20 20 78 25 20 3d  20 6d 78 25 3a 79 25 20  |..  x% = mx%:y% |
00000810  3d 20 6d 79 25 0d 04 92  07 20 20 f5 0d 04 9c 16  |= my%....  .....|
00000820  20 20 20 20 c8 97 20 6d  78 25 2c 6d 79 25 2c 6d  |    .. mx%,my%,m|
00000830  62 25 0d 04 a6 04 0d 04  b0 21 20 20 20 20 e7 20  |b%.......!    . |
00000840  6d 78 25 20 3c 3e 20 78  25 20 84 20 6d 79 25 20  |mx% <> x% . my% |
00000850  3c 3e 20 79 25 20 8c 0d  04 ba 0f 20 20 20 20 20  |<> y% .....     |
00000860  20 ec 20 30 2c 30 0d 04  c4 11 20 20 20 20 20 20  | . 0,0....      |
00000870  df 20 78 25 2c 79 25 0d  04 ce 0e 20 20 20 20 20  |. x%,y%....     |
00000880  20 f1 20 73 24 0d 04 d8  0f 20 20 20 20 20 20 ec  | . s$....      .|
00000890  20 30 2c 30 0d 04 e2 13  20 20 20 20 20 20 df 20  | 0,0....      . |
000008a0  6d 78 25 2c 6d 79 25 0d  04 ec 0e 20 20 20 20 20  |mx%,my%....     |
000008b0  20 f1 20 73 24 0d 04 f6  1b 20 20 20 20 20 20 78  | . s$....      x|
000008c0  25 20 3d 20 6d 78 25 3a  79 25 20 3d 20 6d 79 25  |% = mx%:y% = my%|
000008d0  0d 05 00 09 20 20 20 20  cd 0d 05 0a 10 20 20 fd  |....    .....  .|
000008e0  20 6d 62 25 20 3c 3e 20  30 0d 05 14 04 0d 05 1e  | mb% <> 0.......|
000008f0  20 20 20 f5 3a c8 97 20  6d 78 25 2c 6d 79 25 2c  |   .:.. mx%,my%,|
00000900  6d 62 25 3a fd 20 6d 62  25 20 3d 20 30 0d 05 28  |mb%:. mb% = 0..(|
00000910  09 20 20 ef 20 34 0d 05  32 07 20 20 87 0d 05 3c  |.  . 4..2.  ...<|
00000920  04 0d 05 46 05 e1 0d 05  50 04 0d 05 5a 04 0d ff  |...F....P...Z...|
00000930