Home » Archimedes archive » Acorn User » AU 1997-08 B.adf » Regulars » starinfo/Tunnel/Jeffs/!RayTun/!RunImage

starinfo/Tunnel/Jeffs/!RayTun/!RunImage

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-08 B.adf » Regulars
Filename: starinfo/Tunnel/Jeffs/!RayTun/!RunImage
Read OK:
File size: 0925 bytes
Load address: 0000
Exec address: 0000
File contents
   10REM   Ray Cast Tunnel (RWJ 05/97)  for Acorn User tunnel challenge
   20REM
   30REM   Create table for 1/4 of cylinder
   40REM   1/4 copied *4, no overlapping.
   50REM   Tried to get an roughly equal mapping for x & z
   60REM   Preprocess X,Y to 4 screen addresses
   70
   80MODE 49:OFF
   90DIM IN% 8,OUT% 4
  100adr%=FNscreen_start
  110
  120REM  Draw 1/4 of circle
  130R1%=110*4:R2%=20*4
  140GCOL0,63 TINT 192:CIRCLEFILL 0,0,R1%
  150GCOL0,0 TINT 0:CIRCLEFILL 0,0,R2%
  160
  170REM  Count pixels
  180count%=0
  190FOR Y%=R1% TO 0 STEP-4:FOR X%=0 TO R1% STEP 4
  200 IF POINT(X%,Y%)=63 count%+=1
  210NEXT:NEXT
  220
  230REM  Generate table of: 4 screen adresses + x&z of inside of cylinder
  240REM  z, or depth is relative to 1/(distance of pixel from centre)
  250REM  x is relative to angle
  260
  270PRINTTAB(0,4);"Please wait, generating lookup table...."
  280PRINTTAB(2,12);"Use mouse to control movement."
  290
  300DIM pix% count%*24
  310count%-=1:c%=0:ptr%=pix%
  320GCOL0,0
  330FOR Y%=R1% TO 0 STEP-4:FOR X%=0 TO R1% STEP 4
  340 IF POINT(X%,Y%)=63 THEN
  350  PLOT 69,X%,Y%
  360
  370  PROCpoke_adr(X%DIV4,Y%DIV4)
  380
  390  d=SQR(X%^2+Y%^2)
  400  ptr%!20=R1%/d*160
  410  IF Y%>X% THEN
  420   ptr%!16=DEG(ACS(Y%/d))*255/90
  430  ELSE
  440   ptr%!16=DEG(ASN(X%/d))*255/90
  450  ENDIF
  460  c%+=1:ptr%+=24
  470
  480 ENDIF
  490NEXT:NEXT
  500
  510CLS
  520*SLOAD <Raytun$Dir>.SPRITES
  530*SCHOOSE MAP
  540PLOT 237,0,960-128
  550
  560PROCcode
  570REPEAT
  580MOUSE x,y,z:!yo+=(x-640)DIV80:!xo+=(y-512)DIV64
  590REM !xo+=2:REM  Speed into screen
  600REM !yo+=1:REM  Rotational velocity
  610WAIT:CALL start
  620UNTIL INKEY-99
  630END
  640
  650REM  *******************************************************
  660
  670DEF PROCpoke_adr(X%,Y%)
  680!ptr%=adr%+(Y%+120)*640+X%+160
  690ptr%!4=adr%+((X%*-1)+119)*640+Y%+160
  700ptr%!8=adr%+((Y%*-1)+119)*640+(X%*-1)+159
  710ptr%!12=adr%+(X%+120)*640+(Y%*-1)+159
  720ENDPROC
  730
  740DEF FNscreen_start
  750!IN%=148:IN%!4=-1
  760SYS &31,IN%,OUT%
  770=!OUT%
  780
  790DEF PROCcode
  800DIM code% 1000
  810FOR pass%=0 TO 2 STEP 2
  820P%=code%
  830[OPT pass%
  840
  850.pix:EQUD pix%
  860.dots:EQUD count%
  870.xo:EQUD0
  880.yo:EQUD0
  890.screen:EQUD adr%
  900
  910.start
  920STMFD r13!,{r0-r12,r14}
  930LDR r0,pix:LDR r1,dots:LDR r8,screen:LDR r9,xo:LDR r10,yo:MOV r11,#320
  940.loop
  950LDMIA r0!,{r2-r7}
  960ADD r6,r6,r10:MOV r6,r6,ASR#2:ANDS r6,r6,#63
  970ADD r7,r7,r9:MOV r7,r7,ASR#2:ANDS r7,r7,#63:MLA r6,r11,r6,r7
  980LDRB r6,[r8,r6]
  990STRB r6,[r2]:STRB r6,[r2,#320]
 1000STRB r6,[r3]:STRB r6,[r3,#320]
 1010STRB r6,[r4]:STRB r6,[r4,#320]
 1020STRB r6,[r5]:STRB r6,[r5,#320]
 1030SUBS r1,r1,#1:BNE loop
 1040LDMFD r13!,{r0-r12,r15}
 1050]
 1060NEXT
 1070ENDPROC

D�   Ray Cast Tunnel (RWJ 05/97)  for Acorn User tunnel challenge
�
(�   Create table for 1/4 of cylinder
(&�   1/4 copied *4, no overlapping.
27�   Tried to get an roughly equal mapping for x & z
<,�   Preprocess X,Y to 4 screen addresses
F
P
� 49:�
Z� IN% 8,OUT% 4
dadr%=�screen_start
n
x�  Draw 1/4 of circle
�R1%=110*4:R2%=20*4
��0,63 Ȝ 192:ȏȐ 0,0,R1%
��0,0 Ȝ 0:ȏȐ 0,0,R2%
�
��  Count pixels
�count%=0
�%� Y%=R1% � 0 �-4:� X%=0 � R1% � 4
� � �X%,Y%)=63 count%+=1
��:�
�
�G�  Generate table of: 4 screen adresses + x&z of inside of cylinder
�C�  z, or depth is relative to 1/(distance of pixel from centre)
��  x is relative to angle

5�0,4);"Please wait, generating lookup table...."
,�2,12);"Use mouse to control movement."
"
,� pix% count%*24
6count%-=1:c%=0:ptr%=pix%
@�0,0
J%� Y%=R1% � 0 �-4:� X%=0 � R1% � 4
T � �X%,Y%)=63 �
^  � 69,X%,Y%
h
r  �poke_adr(X%�4,Y%�4)
|
�  d=�(X%^2+Y%^2)
�  ptr%!20=R1%/d*160
�  � Y%>X% �
�    ptr%!16=�(�(Y%/d))*255/90
�  �
�    ptr%!16=�(�(X%/d))*255/90
�  �
�  c%+=1:ptr%+=24
�
� �
��:�
�
��
*SLOAD <Raytun$Dir>.SPRITES
*SCHOOSE MAP
� 237,0,960-128
&
0	�code
:�
D,ȗ x,y,z:!yo+=(x-640)�80:!xo+=(y-512)�64
N#� !xo+=2:REM  Speed into screen
X%� !yo+=1:REM  Rotational velocity
bȖ:� start
l
� �-99
v�
�
�>�  *******************************************************
�
�� �poke_adr(X%,Y%)
�"!ptr%=adr%+(Y%+120)*640+X%+160
�(ptr%!4=adr%+((X%*-1)+119)*640+Y%+160
�-ptr%!8=adr%+((Y%*-1)+119)*640+(X%*-1)+159
�)ptr%!12=adr%+(X%+120)*640+(Y%*-1)+159
��
�
�� �screen_start
�!IN%=148:IN%!4=-1
�ș &31,IN%,OUT%

=!OUT%

� �code
 � code% 1000
*� pass%=0 � 2 � 2
4P%=code%
>[OPT pass%
H
R.pix:EQUD pix%
\.dots:EQUD count%
f
.xo:EQUD0
p
.yo:EQUD0
z.screen:EQUD adr%
�
�
.start
�STMFD r13!,{r0-r12,r14}
�JLDR r0,pix:LDR r1,dots:LDR r8,screen:LDR r9,xo:LDR r10,yo:MOV r11,#320
�	.loop
�LDMIA r0!,{r2-r7}
�.ADD r6,r6,r10:MOV r6,r6,ASR#2:�S r6,r6,#63
�>ADD r7,r7,r9:MOV r7,r7,ASR#2:�S r7,r7,#63:MLA r6,r11,r6,r7
�LDRB r6,[r8,r6]
�"STRB r6,[r2]:STRB r6,[r2,#320]
�"STRB r6,[r3]:STRB r6,[r3,#320]
�"STRB r6,[r4]:STRB r6,[r4,#320]
�"STRB r6,[r5]:STRB r6,[r5,#320]
SUBS r1,r1,#1:BNE loop
LDMFD r13!,{r0-r12,r15}
]
$�
.�
�
00000000  0d 00 0a 44 f4 20 20 20  52 61 79 20 43 61 73 74  |...D.   Ray Cast|
00000010  20 54 75 6e 6e 65 6c 20  28 52 57 4a 20 30 35 2f  | Tunnel (RWJ 05/|
00000020  39 37 29 20 20 66 6f 72  20 41 63 6f 72 6e 20 55  |97)  for Acorn U|
00000030  73 65 72 20 74 75 6e 6e  65 6c 20 63 68 61 6c 6c  |ser tunnel chall|
00000040  65 6e 67 65 0d 00 14 05  f4 0d 00 1e 28 f4 20 20  |enge........(.  |
00000050  20 43 72 65 61 74 65 20  74 61 62 6c 65 20 66 6f  | Create table fo|
00000060  72 20 31 2f 34 20 6f 66  20 63 79 6c 69 6e 64 65  |r 1/4 of cylinde|
00000070  72 0d 00 28 26 f4 20 20  20 31 2f 34 20 63 6f 70  |r..(&.   1/4 cop|
00000080  69 65 64 20 2a 34 2c 20  6e 6f 20 6f 76 65 72 6c  |ied *4, no overl|
00000090  61 70 70 69 6e 67 2e 0d  00 32 37 f4 20 20 20 54  |apping...27.   T|
000000a0  72 69 65 64 20 74 6f 20  67 65 74 20 61 6e 20 72  |ried to get an r|
000000b0  6f 75 67 68 6c 79 20 65  71 75 61 6c 20 6d 61 70  |oughly equal map|
000000c0  70 69 6e 67 20 66 6f 72  20 78 20 26 20 7a 0d 00  |ping for x & z..|
000000d0  3c 2c f4 20 20 20 50 72  65 70 72 6f 63 65 73 73  |<,.   Preprocess|
000000e0  20 58 2c 59 20 74 6f 20  34 20 73 63 72 65 65 6e  | X,Y to 4 screen|
000000f0  20 61 64 64 72 65 73 73  65 73 0d 00 46 04 0d 00  | addresses..F...|
00000100  50 0a eb 20 34 39 3a 87  0d 00 5a 12 de 20 49 4e  |P.. 49:...Z.. IN|
00000110  25 20 38 2c 4f 55 54 25  20 34 0d 00 64 16 61 64  |% 8,OUT% 4..d.ad|
00000120  72 25 3d a4 73 63 72 65  65 6e 5f 73 74 61 72 74  |r%=.screen_start|
00000130  0d 00 6e 04 0d 00 78 19  f4 20 20 44 72 61 77 20  |..n...x..  Draw |
00000140  31 2f 34 20 6f 66 20 63  69 72 63 6c 65 0d 00 82  |1/4 of circle...|
00000150  16 52 31 25 3d 31 31 30  2a 34 3a 52 32 25 3d 32  |.R1%=110*4:R2%=2|
00000160  30 2a 34 0d 00 8c 1d e6  30 2c 36 33 20 c8 9c 20  |0*4.....0,63 .. |
00000170  31 39 32 3a c8 8f c8 90  20 30 2c 30 2c 52 31 25  |192:.... 0,0,R1%|
00000180  0d 00 96 1a e6 30 2c 30  20 c8 9c 20 30 3a c8 8f  |.....0,0 .. 0:..|
00000190  c8 90 20 30 2c 30 2c 52  32 25 0d 00 a0 04 0d 00  |.. 0,0,R2%......|
000001a0  aa 13 f4 20 20 43 6f 75  6e 74 20 70 69 78 65 6c  |...  Count pixel|
000001b0  73 0d 00 b4 0c 63 6f 75  6e 74 25 3d 30 0d 00 be  |s....count%=0...|
000001c0  25 e3 20 59 25 3d 52 31  25 20 b8 20 30 20 88 2d  |%. Y%=R1% . 0 .-|
000001d0  34 3a e3 20 58 25 3d 30  20 b8 20 52 31 25 20 88  |4:. X%=0 . R1% .|
000001e0  20 34 0d 00 c8 1b 20 e7  20 b0 58 25 2c 59 25 29  | 4.... . .X%,Y%)|
000001f0  3d 36 33 20 63 6f 75 6e  74 25 2b 3d 31 0d 00 d2  |=63 count%+=1...|
00000200  07 ed 3a ed 0d 00 dc 04  0d 00 e6 47 f4 20 20 47  |..:........G.  G|
00000210  65 6e 65 72 61 74 65 20  74 61 62 6c 65 20 6f 66  |enerate table of|
00000220  3a 20 34 20 73 63 72 65  65 6e 20 61 64 72 65 73  |: 4 screen adres|
00000230  73 65 73 20 2b 20 78 26  7a 20 6f 66 20 69 6e 73  |ses + x&z of ins|
00000240  69 64 65 20 6f 66 20 63  79 6c 69 6e 64 65 72 0d  |ide of cylinder.|
00000250  00 f0 43 f4 20 20 7a 2c  20 6f 72 20 64 65 70 74  |..C.  z, or dept|
00000260  68 20 69 73 20 72 65 6c  61 74 69 76 65 20 74 6f  |h is relative to|
00000270  20 31 2f 28 64 69 73 74  61 6e 63 65 20 6f 66 20  | 1/(distance of |
00000280  70 69 78 65 6c 20 66 72  6f 6d 20 63 65 6e 74 72  |pixel from centr|
00000290  65 29 0d 00 fa 1d f4 20  20 78 20 69 73 20 72 65  |e).....  x is re|
000002a0  6c 61 74 69 76 65 20 74  6f 20 61 6e 67 6c 65 0d  |lative to angle.|
000002b0  01 04 04 0d 01 0e 35 f1  8a 30 2c 34 29 3b 22 50  |......5..0,4);"P|
000002c0  6c 65 61 73 65 20 77 61  69 74 2c 20 67 65 6e 65  |lease wait, gene|
000002d0  72 61 74 69 6e 67 20 6c  6f 6f 6b 75 70 20 74 61  |rating lookup ta|
000002e0  62 6c 65 2e 2e 2e 2e 22  0d 01 18 2c f1 8a 32 2c  |ble...."...,..2,|
000002f0  31 32 29 3b 22 55 73 65  20 6d 6f 75 73 65 20 74  |12);"Use mouse t|
00000300  6f 20 63 6f 6e 74 72 6f  6c 20 6d 6f 76 65 6d 65  |o control moveme|
00000310  6e 74 2e 22 0d 01 22 04  0d 01 2c 14 de 20 70 69  |nt.".."...,.. pi|
00000320  78 25 20 63 6f 75 6e 74  25 2a 32 34 0d 01 36 1c  |x% count%*24..6.|
00000330  63 6f 75 6e 74 25 2d 3d  31 3a 63 25 3d 30 3a 70  |count%-=1:c%=0:p|
00000340  74 72 25 3d 70 69 78 25  0d 01 40 08 e6 30 2c 30  |tr%=pix%..@..0,0|
00000350  0d 01 4a 25 e3 20 59 25  3d 52 31 25 20 b8 20 30  |..J%. Y%=R1% . 0|
00000360  20 88 2d 34 3a e3 20 58  25 3d 30 20 b8 20 52 31  | .-4:. X%=0 . R1|
00000370  25 20 88 20 34 0d 01 54  13 20 e7 20 b0 58 25 2c  |% . 4..T. . .X%,|
00000380  59 25 29 3d 36 33 20 8c  0d 01 5e 10 20 20 f0 20  |Y%)=63 ...^.  . |
00000390  36 39 2c 58 25 2c 59 25  0d 01 68 04 0d 01 72 1a  |69,X%,Y%..h...r.|
000003a0  20 20 f2 70 6f 6b 65 5f  61 64 72 28 58 25 81 34  |  .poke_adr(X%.4|
000003b0  2c 59 25 81 34 29 0d 01  7c 04 0d 01 86 14 20 20  |,Y%.4)..|.....  |
000003c0  64 3d b6 28 58 25 5e 32  2b 59 25 5e 32 29 0d 01  |d=.(X%^2+Y%^2)..|
000003d0  90 17 20 20 70 74 72 25  21 32 30 3d 52 31 25 2f  |..  ptr%!20=R1%/|
000003e0  64 2a 31 36 30 0d 01 9a  0f 20 20 e7 20 59 25 3e  |d*160....  . Y%>|
000003f0  58 25 20 8c 0d 01 a4 20  20 20 20 70 74 72 25 21  |X% ....    ptr%!|
00000400  31 36 3d 9d 28 95 28 59  25 2f 64 29 29 2a 32 35  |16=.(.(Y%/d))*25|
00000410  35 2f 39 30 0d 01 ae 07  20 20 cc 0d 01 b8 20 20  |5/90....  ....  |
00000420  20 20 70 74 72 25 21 31  36 3d 9d 28 98 28 58 25  |  ptr%!16=.(.(X%|
00000430  2f 64 29 29 2a 32 35 35  2f 39 30 0d 01 c2 07 20  |/d))*255/90.... |
00000440  20 cd 0d 01 cc 14 20 20  63 25 2b 3d 31 3a 70 74  | .....  c%+=1:pt|
00000450  72 25 2b 3d 32 34 0d 01  d6 04 0d 01 e0 06 20 cd  |r%+=24........ .|
00000460  0d 01 ea 07 ed 3a ed 0d  01 f4 04 0d 01 fe 05 db  |.....:..........|
00000470  0d 02 08 1f 2a 53 4c 4f  41 44 20 3c 52 61 79 74  |....*SLOAD <Rayt|
00000480  75 6e 24 44 69 72 3e 2e  53 50 52 49 54 45 53 0d  |un$Dir>.SPRITES.|
00000490  02 12 10 2a 53 43 48 4f  4f 53 45 20 4d 41 50 0d  |...*SCHOOSE MAP.|
000004a0  02 1c 13 f0 20 32 33 37  2c 30 2c 39 36 30 2d 31  |.... 237,0,960-1|
000004b0  32 38 0d 02 26 04 0d 02  30 09 f2 63 6f 64 65 0d  |28..&...0..code.|
000004c0  02 3a 05 f5 0d 02 44 2c  c8 97 20 78 2c 79 2c 7a  |.:....D,.. x,y,z|
000004d0  3a 21 79 6f 2b 3d 28 78  2d 36 34 30 29 81 38 30  |:!yo+=(x-640).80|
000004e0  3a 21 78 6f 2b 3d 28 79  2d 35 31 32 29 81 36 34  |:!xo+=(y-512).64|
000004f0  0d 02 4e 23 f4 20 21 78  6f 2b 3d 32 3a 52 45 4d  |..N#. !xo+=2:REM|
00000500  20 20 53 70 65 65 64 20  69 6e 74 6f 20 73 63 72  |  Speed into scr|
00000510  65 65 6e 0d 02 58 25 f4  20 21 79 6f 2b 3d 31 3a  |een..X%. !yo+=1:|
00000520  52 45 4d 20 20 52 6f 74  61 74 69 6f 6e 61 6c 20  |REM  Rotational |
00000530  76 65 6c 6f 63 69 74 79  0d 02 62 0e c8 96 3a d6  |velocity..b...:.|
00000540  20 73 74 61 72 74 0d 02  6c 0a fd 20 a6 2d 39 39  | start..l.. .-99|
00000550  0d 02 76 05 e0 0d 02 80  04 0d 02 8a 3e f4 20 20  |..v.........>.  |
00000560  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00000590  2a 2a 2a 2a 2a 2a 2a 0d  02 94 04 0d 02 9e 16 dd  |*******.........|
000005a0  20 f2 70 6f 6b 65 5f 61  64 72 28 58 25 2c 59 25  | .poke_adr(X%,Y%|
000005b0  29 0d 02 a8 22 21 70 74  72 25 3d 61 64 72 25 2b  |)..."!ptr%=adr%+|
000005c0  28 59 25 2b 31 32 30 29  2a 36 34 30 2b 58 25 2b  |(Y%+120)*640+X%+|
000005d0  31 36 30 0d 02 b2 28 70  74 72 25 21 34 3d 61 64  |160...(ptr%!4=ad|
000005e0  72 25 2b 28 28 58 25 2a  2d 31 29 2b 31 31 39 29  |r%+((X%*-1)+119)|
000005f0  2a 36 34 30 2b 59 25 2b  31 36 30 0d 02 bc 2d 70  |*640+Y%+160...-p|
00000600  74 72 25 21 38 3d 61 64  72 25 2b 28 28 59 25 2a  |tr%!8=adr%+((Y%*|
00000610  2d 31 29 2b 31 31 39 29  2a 36 34 30 2b 28 58 25  |-1)+119)*640+(X%|
00000620  2a 2d 31 29 2b 31 35 39  0d 02 c6 29 70 74 72 25  |*-1)+159...)ptr%|
00000630  21 31 32 3d 61 64 72 25  2b 28 58 25 2b 31 32 30  |!12=adr%+(X%+120|
00000640  29 2a 36 34 30 2b 28 59  25 2a 2d 31 29 2b 31 35  |)*640+(Y%*-1)+15|
00000650  39 0d 02 d0 05 e1 0d 02  da 04 0d 02 e4 13 dd 20  |9.............. |
00000660  a4 73 63 72 65 65 6e 5f  73 74 61 72 74 0d 02 ee  |.screen_start...|
00000670  15 21 49 4e 25 3d 31 34  38 3a 49 4e 25 21 34 3d  |.!IN%=148:IN%!4=|
00000680  2d 31 0d 02 f8 13 c8 99  20 26 33 31 2c 49 4e 25  |-1...... &31,IN%|
00000690  2c 4f 55 54 25 0d 03 02  0a 3d 21 4f 55 54 25 0d  |,OUT%....=!OUT%.|
000006a0  03 0c 04 0d 03 16 0b dd  20 f2 63 6f 64 65 0d 03  |........ .code..|
000006b0  20 10 de 20 63 6f 64 65  25 20 31 30 30 30 0d 03  | .. code% 1000..|
000006c0  2a 15 e3 20 70 61 73 73  25 3d 30 20 b8 20 32 20  |*.. pass%=0 . 2 |
000006d0  88 20 32 0d 03 34 0c 50  25 3d 63 6f 64 65 25 0d  |. 2..4.P%=code%.|
000006e0  03 3e 0e 5b 4f 50 54 20  70 61 73 73 25 0d 03 48  |.>.[OPT pass%..H|
000006f0  04 0d 03 52 12 2e 70 69  78 3a 45 51 55 44 20 70  |...R..pix:EQUD p|
00000700  69 78 25 0d 03 5c 15 2e  64 6f 74 73 3a 45 51 55  |ix%..\..dots:EQU|
00000710  44 20 63 6f 75 6e 74 25  0d 03 66 0d 2e 78 6f 3a  |D count%..f..xo:|
00000720  45 51 55 44 30 0d 03 70  0d 2e 79 6f 3a 45 51 55  |EQUD0..p..yo:EQU|
00000730  44 30 0d 03 7a 15 2e 73  63 72 65 65 6e 3a 45 51  |D0..z..screen:EQ|
00000740  55 44 20 61 64 72 25 0d  03 84 04 0d 03 8e 0a 2e  |UD adr%.........|
00000750  73 74 61 72 74 0d 03 98  1b 53 54 4d 46 44 20 72  |start....STMFD r|
00000760  31 33 21 2c 7b 72 30 2d  72 31 32 2c 72 31 34 7d  |13!,{r0-r12,r14}|
00000770  0d 03 a2 4a 4c 44 52 20  72 30 2c 70 69 78 3a 4c  |...JLDR r0,pix:L|
00000780  44 52 20 72 31 2c 64 6f  74 73 3a 4c 44 52 20 72  |DR r1,dots:LDR r|
00000790  38 2c 73 63 72 65 65 6e  3a 4c 44 52 20 72 39 2c  |8,screen:LDR r9,|
000007a0  78 6f 3a 4c 44 52 20 72  31 30 2c 79 6f 3a 4d 4f  |xo:LDR r10,yo:MO|
000007b0  56 20 72 31 31 2c 23 33  32 30 0d 03 ac 09 2e 6c  |V r11,#320.....l|
000007c0  6f 6f 70 0d 03 b6 15 4c  44 4d 49 41 20 72 30 21  |oop....LDMIA r0!|
000007d0  2c 7b 72 32 2d 72 37 7d  0d 03 c0 2e 41 44 44 20  |,{r2-r7}....ADD |
000007e0  72 36 2c 72 36 2c 72 31  30 3a 4d 4f 56 20 72 36  |r6,r6,r10:MOV r6|
000007f0  2c 72 36 2c 41 53 52 23  32 3a 80 53 20 72 36 2c  |,r6,ASR#2:.S r6,|
00000800  72 36 2c 23 36 33 0d 03  ca 3e 41 44 44 20 72 37  |r6,#63...>ADD r7|
00000810  2c 72 37 2c 72 39 3a 4d  4f 56 20 72 37 2c 72 37  |,r7,r9:MOV r7,r7|
00000820  2c 41 53 52 23 32 3a 80  53 20 72 37 2c 72 37 2c  |,ASR#2:.S r7,r7,|
00000830  23 36 33 3a 4d 4c 41 20  72 36 2c 72 31 31 2c 72  |#63:MLA r6,r11,r|
00000840  36 2c 72 37 0d 03 d4 13  4c 44 52 42 20 72 36 2c  |6,r7....LDRB r6,|
00000850  5b 72 38 2c 72 36 5d 0d  03 de 22 53 54 52 42 20  |[r8,r6]..."STRB |
00000860  72 36 2c 5b 72 32 5d 3a  53 54 52 42 20 72 36 2c  |r6,[r2]:STRB r6,|
00000870  5b 72 32 2c 23 33 32 30  5d 0d 03 e8 22 53 54 52  |[r2,#320]..."STR|
00000880  42 20 72 36 2c 5b 72 33  5d 3a 53 54 52 42 20 72  |B r6,[r3]:STRB r|
00000890  36 2c 5b 72 33 2c 23 33  32 30 5d 0d 03 f2 22 53  |6,[r3,#320]..."S|
000008a0  54 52 42 20 72 36 2c 5b  72 34 5d 3a 53 54 52 42  |TRB r6,[r4]:STRB|
000008b0  20 72 36 2c 5b 72 34 2c  23 33 32 30 5d 0d 03 fc  | r6,[r4,#320]...|
000008c0  22 53 54 52 42 20 72 36  2c 5b 72 35 5d 3a 53 54  |"STRB r6,[r5]:ST|
000008d0  52 42 20 72 36 2c 5b 72  35 2c 23 33 32 30 5d 0d  |RB r6,[r5,#320].|
000008e0  04 06 1a 53 55 42 53 20  72 31 2c 72 31 2c 23 31  |...SUBS r1,r1,#1|
000008f0  3a 42 4e 45 20 6c 6f 6f  70 0d 04 10 1b 4c 44 4d  |:BNE loop....LDM|
00000900  46 44 20 72 31 33 21 2c  7b 72 30 2d 72 31 32 2c  |FD r13!,{r0-r12,|
00000910  72 31 35 7d 0d 04 1a 05  5d 0d 04 24 05 ed 0d 04  |r15}....]..$....|
00000920  2e 05 e1 0d ff                                    |.....|
00000925