Home » Archimedes archive » Acorn User » AU 1997-04 A.adf » Features1 » StarInfo/Wood/!Texture

StarInfo/Wood/!Texture

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 1997-04 A.adf » Features1
Filename: StarInfo/Wood/!Texture
Read OK:
File size: 0E64 bytes
Load address: 0000
Exec address: 0000
File contents
   10REM !Texture, (c) Keith T Wood, 1996
   20
   30ON ERROR: REPORT: PRINT " at line " ERL/10: END
   40
   50MODE9
   60
   70nib%=&400
   80
   90PROCinit
  100PROCkick_code
  110
  120J%=0
  130
  140COLOUR 15
  150
  160REPEAT
  170 TIME=0
  180 FOR I%=1 TO 50
  190  J%+=1
  200  PROCktex( -J%/100, 800/(ABS(1300*SIN(J%/50+PI/4))-1350) )
  210 NEXT
  220 PRINTTAB(34,0)STR$INT(5000/TIME)" FPS"
  230UNTIL FALSE
  240END
  250
  260DEFPROCkick_code
  270DIM code% 10000
  280FOR pass=0 TO 2 STEP 2
  290 P%=code%
  300 PROCmain_code
  310NEXT
  320ENDPROC
  330
  340DEFPROCinit
  350DIM mem% 8
  360!mem%=148: mem%!4=-1
  370SYS "OS_ReadVduVariables", mem%, mem%
  380SYS "OS_ReadModeVariable", -1, 6 TO ,, swid%
  390scrn%=!mem%
  400SYS "OS_RemoveCursors"
  410FOR J%=0 TO 15
  420 COLOUR J%, 17*J%, 17*J%, 17*J%
  430NEXT
  440ENDPROC
  450
  460DEFPROCktex( angle, scale )
  470LOCAL c, s
  480c=COS(angle)
  490s=SIN(angle)
  500!startx=scale*7096*s
  510!starty=scale*7096*c
  520!hstepx=scale*200*c
  530!hstepy=scale*200*s
  540!vstepx=scale*100*s
  550!vstepy=-scale*100*c
  560!startx=!startx AND&7FFF
  570!starty=!starty AND&7FFF
  580!hstepx=!hstepx AND&7FFF
  590!hstepy=!hstepy AND&7FFF
  600!vstepx=!vstepx AND&7FFF
  610!vstepy=!vstepy AND&7FFF
  620!startx=!startx OR((!startx+(!hstepx>>1))<<17)
  630!starty=!starty OR((!starty+(!hstepy>>1))<<17)
  640!hstepx=!hstepx OR(!hstepx<<17)
  650!hstepy=!hstepy OR(!hstepy<<17)
  660!vstepx=!vstepx OR(!vstepx<<17)
  670!vstepy=!vstepy OR(!vstepy<<17)
  680WAIT: CALL ktex
  690ENDPROC
  700
  710DEFPROCmain_code
  720
  731Cnt    = 0: MskF = 1
  740MagicX = 3: StpY   = 4: StpX   = 5
  750RunY   = 6: RunX   = 7: Pix1   = 8
  760VstpY  = 8: Pix2   = 9: VstpX  = 9
  770Tmp1   =12: Tmp2   =13: Scrn   =14
  790
  791[OPT      pass
  800 
  810 .tstack  EQUD 0: EQUD 0
  820 .counts  EQUD (15*16-1)
  830 .masksF  EQUD &F
  840 .magicx  EQUD nib%OR(nib%<<17)
  850 .hstepy  EQUD 0
  860 .hstepx  EQUD 0
  870 .starty  EQUD 0
  880 .startx  EQUD 0
  890 .vstepy  EQUD 0
  900 .vstepx  EQUD 0
  910 .screen  EQUD scrn%
  920 
  930 .ktex
  940 ADR      Tmp1, tstack
  950 STMIA    (Tmp1)!, {r13, r14}
  960 LDMIA    Tmp1, {Cnt, MskF, MagicX, StpY, StpX, RunX, RunY}
  970 LDR      Scrn, screen
  980 BIC      RunX, RunX, #&18000
  990 BIC      RunY, RunY, #&18000
 1000
 1010 .loopy
 1020 ORR      Cnt, Cnt, #(14)<<16
 1030 
 1040 .loopx
 1050 FNword_macro( Pix1 )
 1060 FNword_macro( Pix2 )
 1070 STMIA    (Scrn)!, {Pix1, Pix2}
 1080 SUBS     Cnt, Cnt, #&10000
 1090 BGT      loopx
 1100 SUB      Scrn, Scrn, #15*8
 1110 ADD      Scrn, Scrn, #swid%
 1120 ADR      Tmp1, starty
 1130 LDMIA    Tmp1, {RunY, RunX, VstpY, VstpX}
 1140 ADD      RunY, RunY, VstpY
 1150 ADD      RunX, RunX, VstpX
 1160 BIC      RunX, RunX, #&18000
 1170 BIC      RunY, RunY, #&18000
 1180 STMIA    Tmp1, {RunY, RunX}
 1190 ADD      Cnt, Cnt, #&10000
 1200 SUBS     Cnt, Cnt, #1
 1210 BGT      loopy
 1220 ADR      Tmp1, tstack
 1230 LDMIA    Tmp1, {r13, PC}
 1240]
 1250ENDPROC
 1260
 1270DEFFNword_macro( Word )
 1280[OPT      pass
 1290 FNtexture_macro
 1300 AND      Word, MskF, Tmp2, LSR #11
 1310 AND      Tmp1, MskF, Tmp2, LSR #11+17
 1320 ORR      Word, Word, Tmp1, LSL #4
 1330 FNtexture_macro
 1340 AND      Tmp1, MskF, Tmp2, LSR #11
 1350 ORR      Word, Word, Tmp1, LSL #8
 1360 AND      Tmp1, MskF, Tmp2, LSR #11+17
 1370 ORR      Word, Word, Tmp1, LSL #12
 1380 BIC      RunX, RunX, #&18000
 1390 BIC      RunY, RunY, #&18000
 1400 FNtexture_macro
 1410 AND      Tmp1, MskF, Tmp2, LSR #11
 1420 ORR      Word, Word, Tmp1, LSL #16
 1430 AND      Tmp1, MskF, Tmp2, LSR #11+17
 1440 ORR      Word, Word, Tmp1, LSL #20
 1450 FNtexture_macro
 1460 AND      Tmp1, MskF, Tmp2, LSR #11
 1470 ORR      Word, Word, Tmp1, LSL #24
 1480 AND      Tmp1, MskF, Tmp2, LSR #11+17
 1490 ORR      Word, Word, Tmp1, LSL #28
 1500 BIC      RunX, RunX, #&18000
 1510 BIC      RunY, RunY, #&18000
 1520]
 1530=""
 1540
 1550DEFFNtexture_macro
 1560[OPT      pass
 1570 ADD      RunX, RunX, StpX
 1580 ADD      RunY, RunY, StpY
 1590 EOR      Tmp2, MagicX, RunY
 1600 SUB      Tmp2, Tmp2, RunX
 1610 EOR      Tmp1, MagicX, RunX
 1620 ADD      Tmp1, Tmp1, RunY
 1630 EOR      Tmp2, Tmp2, Tmp1
 1640]
 1650=""
&� !Texture, (c) Keith T Wood, 1996

!� �: �: � " at line " �/10: �
(
2�9
<
F
nib%=&400
P
Z	�init
d�kick_code
n
xJ%=0
�
�� 15
�
��
� �=0
� � I%=1 � 50
�  J%+=1
�7  �ktex( -J%/100, 800/(�(1300*�(J%/50+�/4))-1350) )
� �
� �34,0)è(5000/�)" FPS"
�� �
��
�
��kick_code
� code% 10000
� pass=0 � 2 � 2
"
 P%=code%
, �main_code
6�
@�
J
T
��init
^� mem% 8
h!mem%=148: mem%!4=-1
r(ș "OS_ReadVduVariables", mem%, mem%
|.ș "OS_ReadModeVariable", -1, 6 � ,, swid%
�scrn%=!mem%
�ș "OS_RemoveCursors"
�� J%=0 � 15
� � J%, 17*J%, 17*J%, 17*J%
��
��
�
���ktex( angle, scale )
�
� c, s
�c=�(angle)
�s=�(angle)
�!startx=scale*7096*s
�!starty=scale*7096*c
!hstepx=scale*200*c
!hstepy=scale*200*s
!vstepx=scale*100*s
&!vstepy=-scale*100*c
0!startx=!startx �&7FFF
:!starty=!starty �&7FFF
D!hstepx=!hstepx �&7FFF
N!hstepy=!hstepy �&7FFF
X!vstepx=!vstepx �&7FFF
b!vstepy=!vstepy �&7FFF
l1!startx=!startx �((!startx+(!hstepx>>1))<<17)
v1!starty=!starty �((!starty+(!hstepy>>1))<<17)
�"!hstepx=!hstepx �(!hstepx<<17)
�"!hstepy=!hstepy �(!hstepy<<17)
�"!vstepx=!vstepx �(!vstepx<<17)
�"!vstepy=!vstepy �(!vstepy<<17)
�Ȗ: � ktex
��
�
���main_code
�
�Cnt    = 0: MskF = 1
�&MagicX = 3: StpY   = 4: StpX   = 5
�&RunY   = 6: RunX   = 7: Pix1   = 8
�&VstpY  = 8: Pix2   = 9: VstpX  = 9
&Tmp1   =12: Tmp2   =13: Scrn   =14

[OPT      pass
  
* .tstack  EQUD 0: EQUD 0
4 .counts  EQUD (15*16-1)
> .masksF  EQUD &F
H" .magicx  EQUD nib%�(nib%<<17)
R .hstepy  EQUD 0
\ .hstepx  EQUD 0
f .starty  EQUD 0
p .startx  EQUD 0
z .vstepy  EQUD 0
� .vstepx  EQUD 0
� .screen  EQUD scrn%
� 
�
 .ktex
� ADR      Tmp1, tstack
�! STMIA    (Tmp1)!, {r13, r14}
�? LDMIA    Tmp1, {Cnt, MskF, MagicX, StpY, StpX, RunX, RunY}
� LDR      Scrn, screen
�! BIC      RunX, RunX, #&18000
�! BIC      RunY, RunY, #&18000
�
� .loopy
�  �R      Cnt, Cnt, #(14)<<16
 
 .loopx
 �word_macro( Pix1 )
$ �word_macro( Pix2 )
.# STMIA    (Scrn)!, {Pix1, Pix2}
8 SUBS     Cnt, Cnt, #&10000
B BGT      loopx
L SUB      Scrn, Scrn, #15*8
V  ADD      Scrn, Scrn, #swid%
` ADR      Tmp1, starty
j. LDMIA    Tmp1, {RunY, RunX, VstpY, VstpX}
t ADD      RunY, RunY, VstpY
~ ADD      RunX, RunX, VstpX
�! BIC      RunX, RunX, #&18000
�! BIC      RunY, RunY, #&18000
�  STMIA    Tmp1, {RunY, RunX}
� ADD      Cnt, Cnt, #&10000
� SUBS     Cnt, Cnt, #1
� BGT      loopy
� ADR      Tmp1, tstack
� LDMIA    Tmp1, {r13, PC}
�]
��
�
�ݤword_macro( Word )
[OPT      pass

 �texture_macro
% �      Word, MskF, Tmp2, LSR #11
( �      Tmp1, MskF, Tmp2, LSR #11+17
(% �R      Word, Word, Tmp1, LSL #4
2 �texture_macro
<% �      Tmp1, MskF, Tmp2, LSR #11
F% �R      Word, Word, Tmp1, LSL #8
P( �      Tmp1, MskF, Tmp2, LSR #11+17
Z& �R      Word, Word, Tmp1, LSL #12
d! BIC      RunX, RunX, #&18000
n! BIC      RunY, RunY, #&18000
x �texture_macro
�% �      Tmp1, MskF, Tmp2, LSR #11
�& �R      Word, Word, Tmp1, LSL #16
�( �      Tmp1, MskF, Tmp2, LSR #11+17
�& �R      Word, Word, Tmp1, LSL #20
� �texture_macro
�% �      Tmp1, MskF, Tmp2, LSR #11
�& �R      Word, Word, Tmp1, LSL #24
�( �      Tmp1, MskF, Tmp2, LSR #11+17
�& �R      Word, Word, Tmp1, LSL #28
�! BIC      RunX, RunX, #&18000
�! BIC      RunY, RunY, #&18000
�]
�=""

ݤtexture_macro
[OPT      pass
" ADD      RunX, RunX, StpX
, ADD      RunY, RunY, StpY
6 �      Tmp2, MagicX, RunY
@ SUB      Tmp2, Tmp2, RunX
J �      Tmp1, MagicX, RunX
T ADD      Tmp1, Tmp1, RunY
^ �      Tmp2, Tmp2, Tmp1
h]
r=""
�
00000000  0d 00 0a 26 f4 20 21 54  65 78 74 75 72 65 2c 20  |...&. !Texture, |
00000010  28 63 29 20 4b 65 69 74  68 20 54 20 57 6f 6f 64  |(c) Keith T Wood|
00000020  2c 20 31 39 39 36 0d 00  14 04 0d 00 1e 21 ee 20  |, 1996.......!. |
00000030  85 3a 20 f6 3a 20 f1 20  22 20 61 74 20 6c 69 6e  |.: .: . " at lin|
00000040  65 20 22 20 9e 2f 31 30  3a 20 e0 0d 00 28 04 0d  |e " ./10: ...(..|
00000050  00 32 06 eb 39 0d 00 3c  04 0d 00 46 0d 6e 69 62  |.2..9..<...F.nib|
00000060  25 3d 26 34 30 30 0d 00  50 04 0d 00 5a 09 f2 69  |%=&400..P...Z..i|
00000070  6e 69 74 0d 00 64 0e f2  6b 69 63 6b 5f 63 6f 64  |nit..d..kick_cod|
00000080  65 0d 00 6e 04 0d 00 78  08 4a 25 3d 30 0d 00 82  |e..n...x.J%=0...|
00000090  04 0d 00 8c 08 fb 20 31  35 0d 00 96 04 0d 00 a0  |...... 15.......|
000000a0  05 f5 0d 00 aa 08 20 d1  3d 30 0d 00 b4 10 20 e3  |...... .=0.... .|
000000b0  20 49 25 3d 31 20 b8 20  35 30 0d 00 be 0b 20 20  | I%=1 . 50....  |
000000c0  4a 25 2b 3d 31 0d 00 c8  37 20 20 f2 6b 74 65 78  |J%+=1...7  .ktex|
000000d0  28 20 2d 4a 25 2f 31 30  30 2c 20 38 30 30 2f 28  |( -J%/100, 800/(|
000000e0  94 28 31 33 30 30 2a b5  28 4a 25 2f 35 30 2b af  |.(1300*.(J%/50+.|
000000f0  2f 34 29 29 2d 31 33 35  30 29 20 29 0d 00 d2 06  |/4))-1350) )....|
00000100  20 ed 0d 00 dc 1c 20 f1  8a 33 34 2c 30 29 c3 a8  | ..... ..34,0)..|
00000110  28 35 30 30 30 2f 91 29  22 20 46 50 53 22 0d 00  |(5000/.)" FPS"..|
00000120  e6 07 fd 20 a3 0d 00 f0  05 e0 0d 00 fa 04 0d 01  |... ............|
00000130  04 0f dd f2 6b 69 63 6b  5f 63 6f 64 65 0d 01 0e  |....kick_code...|
00000140  11 de 20 63 6f 64 65 25  20 31 30 30 30 30 0d 01  |.. code% 10000..|
00000150  18 14 e3 20 70 61 73 73  3d 30 20 b8 20 32 20 88  |... pass=0 . 2 .|
00000160  20 32 0d 01 22 0d 20 50  25 3d 63 6f 64 65 25 0d  | 2..". P%=code%.|
00000170  01 2c 0f 20 f2 6d 61 69  6e 5f 63 6f 64 65 0d 01  |.,. .main_code..|
00000180  36 05 ed 0d 01 40 05 e1  0d 01 4a 04 0d 01 54 0a  |6....@....J...T.|
00000190  dd f2 69 6e 69 74 0d 01  5e 0c de 20 6d 65 6d 25  |..init..^.. mem%|
000001a0  20 38 0d 01 68 18 21 6d  65 6d 25 3d 31 34 38 3a  | 8..h.!mem%=148:|
000001b0  20 6d 65 6d 25 21 34 3d  2d 31 0d 01 72 28 c8 99  | mem%!4=-1..r(..|
000001c0  20 22 4f 53 5f 52 65 61  64 56 64 75 56 61 72 69  | "OS_ReadVduVari|
000001d0  61 62 6c 65 73 22 2c 20  6d 65 6d 25 2c 20 6d 65  |ables", mem%, me|
000001e0  6d 25 0d 01 7c 2e c8 99  20 22 4f 53 5f 52 65 61  |m%..|... "OS_Rea|
000001f0  64 4d 6f 64 65 56 61 72  69 61 62 6c 65 22 2c 20  |dModeVariable", |
00000200  2d 31 2c 20 36 20 b8 20  2c 2c 20 73 77 69 64 25  |-1, 6 . ,, swid%|
00000210  0d 01 86 0f 73 63 72 6e  25 3d 21 6d 65 6d 25 0d  |....scrn%=!mem%.|
00000220  01 90 19 c8 99 20 22 4f  53 5f 52 65 6d 6f 76 65  |..... "OS_Remove|
00000230  43 75 72 73 6f 72 73 22  0d 01 9a 0f e3 20 4a 25  |Cursors"..... J%|
00000240  3d 30 20 b8 20 31 35 0d  01 a4 1e 20 fb 20 4a 25  |=0 . 15.... . J%|
00000250  2c 20 31 37 2a 4a 25 2c  20 31 37 2a 4a 25 2c 20  |, 17*J%, 17*J%, |
00000260  31 37 2a 4a 25 0d 01 ae  05 ed 0d 01 b8 05 e1 0d  |17*J%...........|
00000270  01 c2 04 0d 01 cc 1a dd  f2 6b 74 65 78 28 20 61  |.........ktex( a|
00000280  6e 67 6c 65 2c 20 73 63  61 6c 65 20 29 0d 01 d6  |ngle, scale )...|
00000290  0a ea 20 63 2c 20 73 0d  01 e0 0e 63 3d 9b 28 61  |.. c, s....c=.(a|
000002a0  6e 67 6c 65 29 0d 01 ea  0e 73 3d b5 28 61 6e 67  |ngle)....s=.(ang|
000002b0  6c 65 29 0d 01 f4 18 21  73 74 61 72 74 78 3d 73  |le)....!startx=s|
000002c0  63 61 6c 65 2a 37 30 39  36 2a 73 0d 01 fe 18 21  |cale*7096*s....!|
000002d0  73 74 61 72 74 79 3d 73  63 61 6c 65 2a 37 30 39  |starty=scale*709|
000002e0  36 2a 63 0d 02 08 17 21  68 73 74 65 70 78 3d 73  |6*c....!hstepx=s|
000002f0  63 61 6c 65 2a 32 30 30  2a 63 0d 02 12 17 21 68  |cale*200*c....!h|
00000300  73 74 65 70 79 3d 73 63  61 6c 65 2a 32 30 30 2a  |stepy=scale*200*|
00000310  73 0d 02 1c 17 21 76 73  74 65 70 78 3d 73 63 61  |s....!vstepx=sca|
00000320  6c 65 2a 31 30 30 2a 73  0d 02 26 18 21 76 73 74  |le*100*s..&.!vst|
00000330  65 70 79 3d 2d 73 63 61  6c 65 2a 31 30 30 2a 63  |epy=-scale*100*c|
00000340  0d 02 30 1a 21 73 74 61  72 74 78 3d 21 73 74 61  |..0.!startx=!sta|
00000350  72 74 78 20 80 26 37 46  46 46 0d 02 3a 1a 21 73  |rtx .&7FFF..:.!s|
00000360  74 61 72 74 79 3d 21 73  74 61 72 74 79 20 80 26  |tarty=!starty .&|
00000370  37 46 46 46 0d 02 44 1a  21 68 73 74 65 70 78 3d  |7FFF..D.!hstepx=|
00000380  21 68 73 74 65 70 78 20  80 26 37 46 46 46 0d 02  |!hstepx .&7FFF..|
00000390  4e 1a 21 68 73 74 65 70  79 3d 21 68 73 74 65 70  |N.!hstepy=!hstep|
000003a0  79 20 80 26 37 46 46 46  0d 02 58 1a 21 76 73 74  |y .&7FFF..X.!vst|
000003b0  65 70 78 3d 21 76 73 74  65 70 78 20 80 26 37 46  |epx=!vstepx .&7F|
000003c0  46 46 0d 02 62 1a 21 76  73 74 65 70 79 3d 21 76  |FF..b.!vstepy=!v|
000003d0  73 74 65 70 79 20 80 26  37 46 46 46 0d 02 6c 31  |stepy .&7FFF..l1|
000003e0  21 73 74 61 72 74 78 3d  21 73 74 61 72 74 78 20  |!startx=!startx |
000003f0  84 28 28 21 73 74 61 72  74 78 2b 28 21 68 73 74  |.((!startx+(!hst|
00000400  65 70 78 3e 3e 31 29 29  3c 3c 31 37 29 0d 02 76  |epx>>1))<<17)..v|
00000410  31 21 73 74 61 72 74 79  3d 21 73 74 61 72 74 79  |1!starty=!starty|
00000420  20 84 28 28 21 73 74 61  72 74 79 2b 28 21 68 73  | .((!starty+(!hs|
00000430  74 65 70 79 3e 3e 31 29  29 3c 3c 31 37 29 0d 02  |tepy>>1))<<17)..|
00000440  80 22 21 68 73 74 65 70  78 3d 21 68 73 74 65 70  |."!hstepx=!hstep|
00000450  78 20 84 28 21 68 73 74  65 70 78 3c 3c 31 37 29  |x .(!hstepx<<17)|
00000460  0d 02 8a 22 21 68 73 74  65 70 79 3d 21 68 73 74  |..."!hstepy=!hst|
00000470  65 70 79 20 84 28 21 68  73 74 65 70 79 3c 3c 31  |epy .(!hstepy<<1|
00000480  37 29 0d 02 94 22 21 76  73 74 65 70 78 3d 21 76  |7)..."!vstepx=!v|
00000490  73 74 65 70 78 20 84 28  21 76 73 74 65 70 78 3c  |stepx .(!vstepx<|
000004a0  3c 31 37 29 0d 02 9e 22  21 76 73 74 65 70 79 3d  |<17)..."!vstepy=|
000004b0  21 76 73 74 65 70 79 20  84 28 21 76 73 74 65 70  |!vstepy .(!vstep|
000004c0  79 3c 3c 31 37 29 0d 02  a8 0e c8 96 3a 20 d6 20  |y<<17)......: . |
000004d0  6b 74 65 78 0d 02 b2 05  e1 0d 02 bc 04 0d 02 c6  |ktex............|
000004e0  0f dd f2 6d 61 69 6e 5f  63 6f 64 65 0d 02 d0 04  |...main_code....|
000004f0  0d 02 db 18 43 6e 74 20  20 20 20 3d 20 30 3a 20  |....Cnt    = 0: |
00000500  4d 73 6b 46 20 3d 20 31  0d 02 e4 26 4d 61 67 69  |MskF = 1...&Magi|
00000510  63 58 20 3d 20 33 3a 20  53 74 70 59 20 20 20 3d  |cX = 3: StpY   =|
00000520  20 34 3a 20 53 74 70 58  20 20 20 3d 20 35 0d 02  | 4: StpX   = 5..|
00000530  ee 26 52 75 6e 59 20 20  20 3d 20 36 3a 20 52 75  |.&RunY   = 6: Ru|
00000540  6e 58 20 20 20 3d 20 37  3a 20 50 69 78 31 20 20  |nX   = 7: Pix1  |
00000550  20 3d 20 38 0d 02 f8 26  56 73 74 70 59 20 20 3d  | = 8...&VstpY  =|
00000560  20 38 3a 20 50 69 78 32  20 20 20 3d 20 39 3a 20  | 8: Pix2   = 9: |
00000570  56 73 74 70 58 20 20 3d  20 39 0d 03 02 26 54 6d  |VstpX  = 9...&Tm|
00000580  70 31 20 20 20 3d 31 32  3a 20 54 6d 70 32 20 20  |p1   =12: Tmp2  |
00000590  20 3d 31 33 3a 20 53 63  72 6e 20 20 20 3d 31 34  | =13: Scrn   =14|
000005a0  0d 03 16 04 0d 03 17 12  5b 4f 50 54 20 20 20 20  |........[OPT    |
000005b0  20 20 70 61 73 73 0d 03  20 05 20 0d 03 2a 1c 20  |  pass.. . ..*. |
000005c0  2e 74 73 74 61 63 6b 20  20 45 51 55 44 20 30 3a  |.tstack  EQUD 0:|
000005d0  20 45 51 55 44 20 30 0d  03 34 1c 20 2e 63 6f 75  | EQUD 0..4. .cou|
000005e0  6e 74 73 20 20 45 51 55  44 20 28 31 35 2a 31 36  |nts  EQUD (15*16|
000005f0  2d 31 29 0d 03 3e 15 20  2e 6d 61 73 6b 73 46 20  |-1)..>. .masksF |
00000600  20 45 51 55 44 20 26 46  0d 03 48 22 20 2e 6d 61  | EQUD &F..H" .ma|
00000610  67 69 63 78 20 20 45 51  55 44 20 6e 69 62 25 84  |gicx  EQUD nib%.|
00000620  28 6e 69 62 25 3c 3c 31  37 29 0d 03 52 14 20 2e  |(nib%<<17)..R. .|
00000630  68 73 74 65 70 79 20 20  45 51 55 44 20 30 0d 03  |hstepy  EQUD 0..|
00000640  5c 14 20 2e 68 73 74 65  70 78 20 20 45 51 55 44  |\. .hstepx  EQUD|
00000650  20 30 0d 03 66 14 20 2e  73 74 61 72 74 79 20 20  | 0..f. .starty  |
00000660  45 51 55 44 20 30 0d 03  70 14 20 2e 73 74 61 72  |EQUD 0..p. .star|
00000670  74 78 20 20 45 51 55 44  20 30 0d 03 7a 14 20 2e  |tx  EQUD 0..z. .|
00000680  76 73 74 65 70 79 20 20  45 51 55 44 20 30 0d 03  |vstepy  EQUD 0..|
00000690  84 14 20 2e 76 73 74 65  70 78 20 20 45 51 55 44  |.. .vstepx  EQUD|
000006a0  20 30 0d 03 8e 18 20 2e  73 63 72 65 65 6e 20 20  | 0.... .screen  |
000006b0  45 51 55 44 20 73 63 72  6e 25 0d 03 98 05 20 0d  |EQUD scrn%.... .|
000006c0  03 a2 0a 20 2e 6b 74 65  78 0d 03 ac 1a 20 41 44  |... .ktex.... AD|
000006d0  52 20 20 20 20 20 20 54  6d 70 31 2c 20 74 73 74  |R      Tmp1, tst|
000006e0  61 63 6b 0d 03 b6 21 20  53 54 4d 49 41 20 20 20  |ack...! STMIA   |
000006f0  20 28 54 6d 70 31 29 21  2c 20 7b 72 31 33 2c 20  | (Tmp1)!, {r13, |
00000700  72 31 34 7d 0d 03 c0 3f  20 4c 44 4d 49 41 20 20  |r14}...? LDMIA  |
00000710  20 20 54 6d 70 31 2c 20  7b 43 6e 74 2c 20 4d 73  |  Tmp1, {Cnt, Ms|
00000720  6b 46 2c 20 4d 61 67 69  63 58 2c 20 53 74 70 59  |kF, MagicX, StpY|
00000730  2c 20 53 74 70 58 2c 20  52 75 6e 58 2c 20 52 75  |, StpX, RunX, Ru|
00000740  6e 59 7d 0d 03 ca 1a 20  4c 44 52 20 20 20 20 20  |nY}.... LDR     |
00000750  20 53 63 72 6e 2c 20 73  63 72 65 65 6e 0d 03 d4  | Scrn, screen...|
00000760  21 20 42 49 43 20 20 20  20 20 20 52 75 6e 58 2c  |! BIC      RunX,|
00000770  20 52 75 6e 58 2c 20 23  26 31 38 30 30 30 0d 03  | RunX, #&18000..|
00000780  de 21 20 42 49 43 20 20  20 20 20 20 52 75 6e 59  |.! BIC      RunY|
00000790  2c 20 52 75 6e 59 2c 20  23 26 31 38 30 30 30 0d  |, RunY, #&18000.|
000007a0  03 e8 04 0d 03 f2 0b 20  2e 6c 6f 6f 70 79 0d 03  |....... .loopy..|
000007b0  fc 20 20 84 52 20 20 20  20 20 20 43 6e 74 2c 20  |.  .R      Cnt, |
000007c0  43 6e 74 2c 20 23 28 31  34 29 3c 3c 31 36 0d 04  |Cnt, #(14)<<16..|
000007d0  06 05 20 0d 04 10 0b 20  2e 6c 6f 6f 70 78 0d 04  |.. .... .loopx..|
000007e0  1a 18 20 a4 77 6f 72 64  5f 6d 61 63 72 6f 28 20  |.. .word_macro( |
000007f0  50 69 78 31 20 29 0d 04  24 18 20 a4 77 6f 72 64  |Pix1 )..$. .word|
00000800  5f 6d 61 63 72 6f 28 20  50 69 78 32 20 29 0d 04  |_macro( Pix2 )..|
00000810  2e 23 20 53 54 4d 49 41  20 20 20 20 28 53 63 72  |.# STMIA    (Scr|
00000820  6e 29 21 2c 20 7b 50 69  78 31 2c 20 50 69 78 32  |n)!, {Pix1, Pix2|
00000830  7d 0d 04 38 1f 20 53 55  42 53 20 20 20 20 20 43  |}..8. SUBS     C|
00000840  6e 74 2c 20 43 6e 74 2c  20 23 26 31 30 30 30 30  |nt, Cnt, #&10000|
00000850  0d 04 42 13 20 42 47 54  20 20 20 20 20 20 6c 6f  |..B. BGT      lo|
00000860  6f 70 78 0d 04 4c 1f 20  53 55 42 20 20 20 20 20  |opx..L. SUB     |
00000870  20 53 63 72 6e 2c 20 53  63 72 6e 2c 20 23 31 35  | Scrn, Scrn, #15|
00000880  2a 38 0d 04 56 20 20 41  44 44 20 20 20 20 20 20  |*8..V  ADD      |
00000890  53 63 72 6e 2c 20 53 63  72 6e 2c 20 23 73 77 69  |Scrn, Scrn, #swi|
000008a0  64 25 0d 04 60 1a 20 41  44 52 20 20 20 20 20 20  |d%..`. ADR      |
000008b0  54 6d 70 31 2c 20 73 74  61 72 74 79 0d 04 6a 2e  |Tmp1, starty..j.|
000008c0  20 4c 44 4d 49 41 20 20  20 20 54 6d 70 31 2c 20  | LDMIA    Tmp1, |
000008d0  7b 52 75 6e 59 2c 20 52  75 6e 58 2c 20 56 73 74  |{RunY, RunX, Vst|
000008e0  70 59 2c 20 56 73 74 70  58 7d 0d 04 74 1f 20 41  |pY, VstpX}..t. A|
000008f0  44 44 20 20 20 20 20 20  52 75 6e 59 2c 20 52 75  |DD      RunY, Ru|
00000900  6e 59 2c 20 56 73 74 70  59 0d 04 7e 1f 20 41 44  |nY, VstpY..~. AD|
00000910  44 20 20 20 20 20 20 52  75 6e 58 2c 20 52 75 6e  |D      RunX, Run|
00000920  58 2c 20 56 73 74 70 58  0d 04 88 21 20 42 49 43  |X, VstpX...! BIC|
00000930  20 20 20 20 20 20 52 75  6e 58 2c 20 52 75 6e 58  |      RunX, RunX|
00000940  2c 20 23 26 31 38 30 30  30 0d 04 92 21 20 42 49  |, #&18000...! BI|
00000950  43 20 20 20 20 20 20 52  75 6e 59 2c 20 52 75 6e  |C      RunY, Run|
00000960  59 2c 20 23 26 31 38 30  30 30 0d 04 9c 20 20 53  |Y, #&18000...  S|
00000970  54 4d 49 41 20 20 20 20  54 6d 70 31 2c 20 7b 52  |TMIA    Tmp1, {R|
00000980  75 6e 59 2c 20 52 75 6e  58 7d 0d 04 a6 1f 20 41  |unY, RunX}.... A|
00000990  44 44 20 20 20 20 20 20  43 6e 74 2c 20 43 6e 74  |DD      Cnt, Cnt|
000009a0  2c 20 23 26 31 30 30 30  30 0d 04 b0 1a 20 53 55  |, #&10000.... SU|
000009b0  42 53 20 20 20 20 20 43  6e 74 2c 20 43 6e 74 2c  |BS     Cnt, Cnt,|
000009c0  20 23 31 0d 04 ba 13 20  42 47 54 20 20 20 20 20  | #1.... BGT     |
000009d0  20 6c 6f 6f 70 79 0d 04  c4 1a 20 41 44 52 20 20  | loopy.... ADR  |
000009e0  20 20 20 20 54 6d 70 31  2c 20 74 73 74 61 63 6b  |    Tmp1, tstack|
000009f0  0d 04 ce 1d 20 4c 44 4d  49 41 20 20 20 20 54 6d  |.... LDMIA    Tm|
00000a00  70 31 2c 20 7b 72 31 33  2c 20 50 43 7d 0d 04 d8  |p1, {r13, PC}...|
00000a10  05 5d 0d 04 e2 05 e1 0d  04 ec 04 0d 04 f6 18 dd  |.]..............|
00000a20  a4 77 6f 72 64 5f 6d 61  63 72 6f 28 20 57 6f 72  |.word_macro( Wor|
00000a30  64 20 29 0d 05 00 12 5b  4f 50 54 20 20 20 20 20  |d )....[OPT     |
00000a40  20 70 61 73 73 0d 05 0a  13 20 a4 74 65 78 74 75  | pass.... .textu|
00000a50  72 65 5f 6d 61 63 72 6f  0d 05 14 25 20 80 20 20  |re_macro...% .  |
00000a60  20 20 20 20 57 6f 72 64  2c 20 4d 73 6b 46 2c 20  |    Word, MskF, |
00000a70  54 6d 70 32 2c 20 4c 53  52 20 23 31 31 0d 05 1e  |Tmp2, LSR #11...|
00000a80  28 20 80 20 20 20 20 20  20 54 6d 70 31 2c 20 4d  |( .      Tmp1, M|
00000a90  73 6b 46 2c 20 54 6d 70  32 2c 20 4c 53 52 20 23  |skF, Tmp2, LSR #|
00000aa0  31 31 2b 31 37 0d 05 28  25 20 84 52 20 20 20 20  |11+17..(% .R    |
00000ab0  20 20 57 6f 72 64 2c 20  57 6f 72 64 2c 20 54 6d  |  Word, Word, Tm|
00000ac0  70 31 2c 20 4c 53 4c 20  23 34 0d 05 32 13 20 a4  |p1, LSL #4..2. .|
00000ad0  74 65 78 74 75 72 65 5f  6d 61 63 72 6f 0d 05 3c  |texture_macro..<|
00000ae0  25 20 80 20 20 20 20 20  20 54 6d 70 31 2c 20 4d  |% .      Tmp1, M|
00000af0  73 6b 46 2c 20 54 6d 70  32 2c 20 4c 53 52 20 23  |skF, Tmp2, LSR #|
00000b00  31 31 0d 05 46 25 20 84  52 20 20 20 20 20 20 57  |11..F% .R      W|
00000b10  6f 72 64 2c 20 57 6f 72  64 2c 20 54 6d 70 31 2c  |ord, Word, Tmp1,|
00000b20  20 4c 53 4c 20 23 38 0d  05 50 28 20 80 20 20 20  | LSL #8..P( .   |
00000b30  20 20 20 54 6d 70 31 2c  20 4d 73 6b 46 2c 20 54  |   Tmp1, MskF, T|
00000b40  6d 70 32 2c 20 4c 53 52  20 23 31 31 2b 31 37 0d  |mp2, LSR #11+17.|
00000b50  05 5a 26 20 84 52 20 20  20 20 20 20 57 6f 72 64  |.Z& .R      Word|
00000b60  2c 20 57 6f 72 64 2c 20  54 6d 70 31 2c 20 4c 53  |, Word, Tmp1, LS|
00000b70  4c 20 23 31 32 0d 05 64  21 20 42 49 43 20 20 20  |L #12..d! BIC   |
00000b80  20 20 20 52 75 6e 58 2c  20 52 75 6e 58 2c 20 23  |   RunX, RunX, #|
00000b90  26 31 38 30 30 30 0d 05  6e 21 20 42 49 43 20 20  |&18000..n! BIC  |
00000ba0  20 20 20 20 52 75 6e 59  2c 20 52 75 6e 59 2c 20  |    RunY, RunY, |
00000bb0  23 26 31 38 30 30 30 0d  05 78 13 20 a4 74 65 78  |#&18000..x. .tex|
00000bc0  74 75 72 65 5f 6d 61 63  72 6f 0d 05 82 25 20 80  |ture_macro...% .|
00000bd0  20 20 20 20 20 20 54 6d  70 31 2c 20 4d 73 6b 46  |      Tmp1, MskF|
00000be0  2c 20 54 6d 70 32 2c 20  4c 53 52 20 23 31 31 0d  |, Tmp2, LSR #11.|
00000bf0  05 8c 26 20 84 52 20 20  20 20 20 20 57 6f 72 64  |..& .R      Word|
00000c00  2c 20 57 6f 72 64 2c 20  54 6d 70 31 2c 20 4c 53  |, Word, Tmp1, LS|
00000c10  4c 20 23 31 36 0d 05 96  28 20 80 20 20 20 20 20  |L #16...( .     |
00000c20  20 54 6d 70 31 2c 20 4d  73 6b 46 2c 20 54 6d 70  | Tmp1, MskF, Tmp|
00000c30  32 2c 20 4c 53 52 20 23  31 31 2b 31 37 0d 05 a0  |2, LSR #11+17...|
00000c40  26 20 84 52 20 20 20 20  20 20 57 6f 72 64 2c 20  |& .R      Word, |
00000c50  57 6f 72 64 2c 20 54 6d  70 31 2c 20 4c 53 4c 20  |Word, Tmp1, LSL |
00000c60  23 32 30 0d 05 aa 13 20  a4 74 65 78 74 75 72 65  |#20.... .texture|
00000c70  5f 6d 61 63 72 6f 0d 05  b4 25 20 80 20 20 20 20  |_macro...% .    |
00000c80  20 20 54 6d 70 31 2c 20  4d 73 6b 46 2c 20 54 6d  |  Tmp1, MskF, Tm|
00000c90  70 32 2c 20 4c 53 52 20  23 31 31 0d 05 be 26 20  |p2, LSR #11...& |
00000ca0  84 52 20 20 20 20 20 20  57 6f 72 64 2c 20 57 6f  |.R      Word, Wo|
00000cb0  72 64 2c 20 54 6d 70 31  2c 20 4c 53 4c 20 23 32  |rd, Tmp1, LSL #2|
00000cc0  34 0d 05 c8 28 20 80 20  20 20 20 20 20 54 6d 70  |4...( .      Tmp|
00000cd0  31 2c 20 4d 73 6b 46 2c  20 54 6d 70 32 2c 20 4c  |1, MskF, Tmp2, L|
00000ce0  53 52 20 23 31 31 2b 31  37 0d 05 d2 26 20 84 52  |SR #11+17...& .R|
00000cf0  20 20 20 20 20 20 57 6f  72 64 2c 20 57 6f 72 64  |      Word, Word|
00000d00  2c 20 54 6d 70 31 2c 20  4c 53 4c 20 23 32 38 0d  |, Tmp1, LSL #28.|
00000d10  05 dc 21 20 42 49 43 20  20 20 20 20 20 52 75 6e  |..! BIC      Run|
00000d20  58 2c 20 52 75 6e 58 2c  20 23 26 31 38 30 30 30  |X, RunX, #&18000|
00000d30  0d 05 e6 21 20 42 49 43  20 20 20 20 20 20 52 75  |...! BIC      Ru|
00000d40  6e 59 2c 20 52 75 6e 59  2c 20 23 26 31 38 30 30  |nY, RunY, #&1800|
00000d50  30 0d 05 f0 05 5d 0d 05  fa 07 3d 22 22 0d 06 04  |0....]....=""...|
00000d60  04 0d 06 0e 13 dd a4 74  65 78 74 75 72 65 5f 6d  |.......texture_m|
00000d70  61 63 72 6f 0d 06 18 12  5b 4f 50 54 20 20 20 20  |acro....[OPT    |
00000d80  20 20 70 61 73 73 0d 06  22 1e 20 41 44 44 20 20  |  pass..". ADD  |
00000d90  20 20 20 20 52 75 6e 58  2c 20 52 75 6e 58 2c 20  |    RunX, RunX, |
00000da0  53 74 70 58 0d 06 2c 1e  20 41 44 44 20 20 20 20  |StpX..,. ADD    |
00000db0  20 20 52 75 6e 59 2c 20  52 75 6e 59 2c 20 53 74  |  RunY, RunY, St|
00000dc0  70 59 0d 06 36 1e 20 82  20 20 20 20 20 20 54 6d  |pY..6. .      Tm|
00000dd0  70 32 2c 20 4d 61 67 69  63 58 2c 20 52 75 6e 59  |p2, MagicX, RunY|
00000de0  0d 06 40 1e 20 53 55 42  20 20 20 20 20 20 54 6d  |..@. SUB      Tm|
00000df0  70 32 2c 20 54 6d 70 32  2c 20 52 75 6e 58 0d 06  |p2, Tmp2, RunX..|
00000e00  4a 1e 20 82 20 20 20 20  20 20 54 6d 70 31 2c 20  |J. .      Tmp1, |
00000e10  4d 61 67 69 63 58 2c 20  52 75 6e 58 0d 06 54 1e  |MagicX, RunX..T.|
00000e20  20 41 44 44 20 20 20 20  20 20 54 6d 70 31 2c 20  | ADD      Tmp1, |
00000e30  54 6d 70 31 2c 20 52 75  6e 59 0d 06 5e 1c 20 82  |Tmp1, RunY..^. .|
00000e40  20 20 20 20 20 20 54 6d  70 32 2c 20 54 6d 70 32  |      Tmp2, Tmp2|
00000e50  2c 20 54 6d 70 31 0d 06  68 05 5d 0d 06 72 07 3d  |, Tmp1..h.]..r.=|
00000e60  22 22 0d ff                                       |""..|
00000e64