Home » Archimedes archive » Acorn User » AU 1998-09.adf » Regulars » StarInfo/Madams/!Cloud/warp

StarInfo/Madams/!Cloud/warp

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 1998-09.adf » Regulars
Filename: StarInfo/Madams/!Cloud/warp
Read OK:
File size: 0F02 bytes
Load address: 0000
Exec address: 0000
File contents
   10MODE 15
   20MODE 9
   30ONERROR SYS 6,112,1:SYS 6,113,1:REPORT:PRINT ERL:END
   40OFF
   50
   60FOR r%=0 TO 15
   70COLOUR r%,r%*17,r%*17,r%*17
   80NEXT
   90
  100DIM sprite% 128*160
  110DIM div% 512*4
  120DIM prog% 81920
  130DIM screen% 8
  140DIM sine% 512*4
  150DIM cosine% 512*4
  160DIM palette% 80
  170
  180!screen%=148
  190screen%!4=-1
  200SYS "OS_ReadVduVariables",screen%,screen%
  210screen%=!screen%
  220
  230FOR r%=0 TO 512
  240div%!(r%*4)=(2^19)/(r%+16)
  250sine%!(r%*4)=SINRAD(r%*180/256)*(2^12)
  260cosine%!(r%*4)=COSRAD(r%*180/256)*(2^12)
  270NEXT
  280
  290!sprite%=128*160
  300sprite%!8=16
  310SYS "OS_SpriteOp",256+9,sprite%
  320SYS "OS_SpriteOp",256+10,sprite%,"<Obey$Dir>.cloud"
  330spr%=sprite%+sprite%!8
  340data%=spr%+spr%!32
  350
  360PROCassembleprog
  370
  380bank%=1
  390
  400FOR r%=0 TO 64
  410SYS 6,113,bank%
  420bank%=3-bank%
  430WAIT
  440CALL prog%
  450NEXT
  460
  470FOR r%=0 TO 128 STEP 2
  480!cosat=sine%!(r%<<2)
  490!sinat=cosine%!(r%<<2)
  500SYS 6,113,bank%
  510bank%=3-bank%
  520WAIT
  530CALL prog%
  540NEXT
  550
  640FOR r%=0 TO 63
  660SYS 6,113,bank%
  670bank%=3-bank%
  680WAIT
  690CALL prog%
  700NEXT
  710
  720FOR r%=0 TO 160 STEP 2
  730!ang1at+=4
  740!ang2at+=3
  750!mul=r%
  760SYS 6,113,bank%
  770bank%=3-bank%
  780WAIT
  790CALL prog%
  800NEXT
  810
  820r%=128
  830REPEAT
  840!cosat=sine%!(r%<<2)
  850!sinat=cosine%!(r%<<2)
  860!ang1at+=4
  870!ang2at+=3
  880SYS 6,113,bank%
  890bank%=3-bank%
  900WAIT
  910CALL prog%
  920r%+=2
  930IF r%=512 r%=0
  940UNTIL 0
  950END
  960
  970
  980DEFPROCassembleprog
  990screen=0
 1000x=1
 1010y=2
 1020dx=3
 1030dy=4
 1040sprite=5
 1050rep=6
 1060xm=7
 1070ym=8
 1080div=9
 1090cos=10
 1100ang1=11
 1110ang2=12
 1120
 1130FOR pass%=0 TO 2 STEP 2
 1140P%=prog%
 1150[OPT pass%
 1160
 1170.screenat EQUD screen%
 1180.changeat EQUD screen%*2+40960
 1190.spriteat EQUD data%
 1200.cosineat EQUD cosine%
 1210.offset   EQUD 0
 1220.divat    EQUD div%
 1230.sinat    EQUD 1<<12
 1240.cosat    EQUD 0
 1250.ang1at   EQUD 0
 1260.ang2at   EQUD 0
 1270.xd       EQUD 128<<9
 1280.yd       EQUD 128<<9
 1290.mul      EQUD 0
 1300
 1310 STMFD R13!,{R14}
 1320
 1330 LDR R14,changeat
 1340 LDR screen,screenat
 1350 SUB screen,R14,screen
 1360 STR screen,screenat
 1370 LDR sprite,spriteat
 1380 LDR dx,cosat
 1390 LDR dy,sinat
 1400 LDR div,divat
 1410 LDR cos,cosineat
 1420
 1430 MOV xm,#0
 1440 MOV ym,#0
 1450 MOV R12,#64
 1460 MOV R14,#160
 1470 MUL rep,dy,R12
 1480 SUB xm,xm,rep
 1490 MUL rep,dx,R14
 1500 SUB xm,xm,rep
 1510 MUL rep,dx,R12
 1520 ADD ym,ym,rep
 1530 MUL rep,dy,R14
 1540 SUB ym,ym,rep
 1550
 1560 LDR R12,offset
 1570 ADD R12,R12,#1<<28
 1580 STR R12,offset
 1590
 1600 LDR ang1,ang1at
 1610 LDR ang2,ang2at
 1620 MOV rep,#127
 1630.yloop
 1640 MOV x,xm
 1650 MOV y,ym
 1660 ADD xm,xm,dy,LSL#1
 1670 SUB ym,ym,dx,LSL#1
 1680 ADD ang1,ang1,#2
 1690 MOV R14,#512
 1700 SUB R14,R14,#1
 1710 AND ang1,R14,ang1
 1720 ADD ang2,ang2,#3
 1730 AND ang2,R14,ang2
 1740 STMFD R13!,{xm,ym,dx,dy,div,cos,ang1,ang2}
 1750 LDR ang1,[cos,ang1,LSL#2]
 1760 LDR ang2,[cos,ang2,LSL#2]
 1770 LDR R14,mul
 1780 MUL ang1,R14,ang1
 1790 MUL ang2,R14,ang2
 1800 SUB dx,dx,ang1,ASR#9
 1810 ADD dy,dy,ang1,ASR#9
 1820 ADD x,x,ang2,ASR#2
 1830 SUB y,y,ang2,ASR#2
 1840
 1850 LDR div,[div,rep,LSL#3]
 1860 MUL x,div,x
 1870 MUL y,div,y
 1880 MUL dx,div,dx
 1890 MUL dy,div,dy
 1900 LDR R12,offset
 1910 ADD x,x,R12
 1920
 1930 BIC dx,dx,#127
 1940 ORR dx,dx,dy,LSR#25
 1950 MOV dy,dy,LSL#7
 1960 BIC x,x,#127
 1970 ORR x,x,y,LSR#25
 1980 MOV y,y,LSL#7
 1990]
 2000FOR r%=0 TO 7
 2010FOR reg%=7 TO 11
 2020[OPT pass%
 2030 FNmapbyte(reg%)
 2040]
 2050FOR shift%=4 TO 28 STEP 4
 2060[OPT pass%
 2070 FNmapbyte(14)
 2080 ADD reg%,reg%,R14,LSL#shift%
 2090]
 2100NEXT
 2110NEXT
 2120[OPT pass%
 2130 STMIA (screen)!,{R7-R11}
 2140]
 2150NEXT
 2160
 2170[OPT pass%
 2180 LDMFD R13!,{xm,ym,dx,dy,div,cos,ang1,ang2}
 2190 SUBS rep,rep,#1
 2200BNE yloop
 2210
 2220 SUB R1,R0,#160
 2230 ADD R0,R0,#320
 2240]
 2250FOR r%=0 TO 126
 2260[OPT pass%
 2270 LDMIA R1!,{R3-R12}:STMIA R0!,{R3-R12}
 2280 LDMIA R1!,{R3-R12}:STMIA R0!,{R3-R12}
 2290 LDMIA R1!,{R3-R12}:STMIA R0!,{R3-R12}
 2300 LDMIA R1!,{R3-R12}:STMIA R0!,{R3-R12}
 2310 SUB R1,R1,#320
 2320]
 2330NEXT
 2340[OPT pass%
 2350
 2360 LDMFD R13!,{PC}
 2370]
 2380NEXT
 2390ENDPROC
 2400
 2410DEFFNmapbyte(reg)
 2420[OPT pass%
 2430 ADDS y,y,dy
 2440 ADC x,x,dx
 2450 MOV reg,x,ROR#7
 2460 LDRB reg,[sprite,reg,LSR#18]
 2470]
 2480=""

� 15
� 9
$� ș 6,112,1:ș 6,113,1:�:� �:�
(�
2
<� r%=0 � 15
F� r%,r%*17,r%*17,r%*17
P�
Z
d� sprite% 128*160
n� div% 512*4
x� prog% 81920
�� screen% 8
�� sine% 512*4
�� cosine% 512*4
�� palette% 80
�
�!screen%=148
�screen%!4=-1
�,ș "OS_ReadVduVariables",screen%,screen%
�screen%=!screen%
�
�� r%=0 � 512
�div%!(r%*4)=(2^19)/(r%+16)
�&sine%!(r%*4)=��(r%*180/256)*(2^12)
(cosine%!(r%*4)=��(r%*180/256)*(2^12)
�

"!sprite%=128*160
,sprite%!8=16
6"ș "OS_SpriteOp",256+9,sprite%
@6ș "OS_SpriteOp",256+10,sprite%,"<Obey$Dir>.cloud"
Jspr%=sprite%+sprite%!8
Tdata%=spr%+spr%!32
^
h�assembleprog
r
|bank%=1
�
�� r%=0 � 64
�ș 6,113,bank%
�bank%=3-bank%
�Ȗ
�� prog%
��
�
�� r%=0 � 128 � 2
�!cosat=sine%!(r%<<2)
�!sinat=cosine%!(r%<<2)
�ș 6,113,bank%
�bank%=3-bank%
Ȗ
� prog%
�
&
�� r%=0 � 63
�ș 6,113,bank%
�bank%=3-bank%
�Ȗ
�� prog%
��
�
�� r%=0 � 160 � 2
�!ang1at+=4
�!ang2at+=3
�!mul=r%
�ș 6,113,bank%
bank%=3-bank%
Ȗ
� prog%
 �
*
4
r%=128
>�
H!cosat=sine%!(r%<<2)
R!sinat=cosine%!(r%<<2)
\!ang1at+=4
f!ang2at+=3
pș 6,113,bank%
zbank%=3-bank%
�Ȗ
�� prog%
�	r%+=2
�� r%=512 r%=0
�� 0
��
�
�
���assembleprog
�screen=0
�x=1
�y=2
�dx=3
dy=4
sprite=5
	rep=6
$xm=7
.ym=8
8	div=9
B
cos=10
Lang1=11
Vang2=12
`
j� pass%=0 � 2 � 2
tP%=prog%
~[OPT pass%
�
�.screenat EQUD screen%
�".changeat EQUD screen%*2+40960
�.spriteat EQUD data%
�.cosineat EQUD cosine%
�.offset   EQUD 0
�.divat    EQUD div%
�.sinat    EQUD 1<<12
�.cosat    EQUD 0
�.ang1at   EQUD 0
�.ang2at   EQUD 0
�.xd       EQUD 128<<9
.yd       EQUD 128<<9

.mul      EQUD 0

 STMFD R13!,{R14}
(
2 LDR R14,changeat
< LDR screen,screenat
F SUB screen,R14,screen
P STR screen,screenat
Z LDR sprite,spriteat
d LDR dx,cosat
n LDR dy,sinat
x LDR div,divat
� LDR cos,cosineat
�
� MOV xm,#0
� MOV ym,#0
� MOV R12,#64
� MOV R14,#160
� MUL rep,dy,R12
� SUB xm,xm,rep
� MUL rep,dx,R14
� SUB xm,xm,rep
� MUL rep,dx,R12
� ADD ym,ym,rep
� MUL rep,dy,R14
 SUB ym,ym,rep

 LDR R12,offset
" ADD R12,R12,#1<<28
, STR R12,offset
6
@ LDR ang1,ang1at
J LDR ang2,ang2at
T MOV rep,#127
^
.yloop
h
 MOV x,xm
r
 MOV y,ym
| ADD xm,xm,dy,LSL#1
� SUB ym,ym,dx,LSL#1
� ADD ang1,ang1,#2
� MOV R14,#512
� SUB R14,R14,#1
� � ang1,R14,ang1
� ADD ang2,ang2,#3
� � ang2,R14,ang2
�/ STMFD R13!,{xm,ym,dx,dy,div,cos,ang1,ang2}
� LDR ang1,[cos,ang1,LSL#2]
� LDR ang2,[cos,ang2,LSL#2]
� LDR R14,mul
� MUL ang1,R14,ang1
� MUL ang2,R14,ang2
 SUB dx,dx,ang1,ASR#9
 ADD dy,dy,ang1,ASR#9
 ADD x,x,ang2,ASR#2
& SUB y,y,ang2,ASR#2
0
: LDR div,[div,rep,LSL#3]
D MUL x,div,x
N MUL y,div,y
X MUL dx,div,dx
b MUL dy,div,dy
l LDR R12,offset
v ADD x,x,R12
�
� BIC dx,dx,#127
� �R dx,dx,dy,LSR#25
� MOV dy,dy,LSL#7
� BIC x,x,#127
� �R x,x,y,LSR#25
� MOV y,y,LSL#7
�]
�� r%=0 � 7
�� reg%=7 � 11
�[OPT pass%
� �mapbyte(reg%)
�]
� shift%=4 � 28 � 4
[OPT pass%
 �mapbyte(14)
 ! ADD reg%,reg%,R14,LSL#shift%
*]
4�
>�
H[OPT pass%
R STMIA (screen)!,{R7-R11}
\]
f�
p
z[OPT pass%
�/ LDMFD R13!,{xm,ym,dx,dy,div,cos,ang1,ang2}
� SUBS rep,rep,#1
�
BNE yloop
�
� SUB R1,R0,#160
� ADD R0,R0,#320
�]
�� r%=0 � 126
�[OPT pass%
�* LDMIA R1!,{R3-R12}:STMIA R0!,{R3-R12}
�* LDMIA R1!,{R3-R12}:STMIA R0!,{R3-R12}
�* LDMIA R1!,{R3-R12}:STMIA R0!,{R3-R12}
�* LDMIA R1!,{R3-R12}:STMIA R0!,{R3-R12}
	 SUB R1,R1,#320
	]
	�
	$[OPT pass%
	.
	8 LDMFD R13!,{PC}
	B]
	L�
	V�
	`
	jݤmapbyte(reg)
	t[OPT pass%
	~ ADDS y,y,dy
	� ADC x,x,dx
	� MOV reg,x,ROR#7
	�! LDRB reg,[sprite,reg,LSR#18]
	�]
	�=""
�
00000000  0d 00 0a 08 eb 20 31 35  0d 00 14 07 eb 20 39 0d  |..... 15..... 9.|
00000010  00 1e 24 ee 85 20 c8 99  20 36 2c 31 31 32 2c 31  |..$.. .. 6,112,1|
00000020  3a c8 99 20 36 2c 31 31  33 2c 31 3a f6 3a f1 20  |:.. 6,113,1:.:. |
00000030  9e 3a e0 0d 00 28 05 87  0d 00 32 04 0d 00 3c 0f  |.:...(....2...<.|
00000040  e3 20 72 25 3d 30 20 b8  20 31 35 0d 00 46 1a fb  |. r%=0 . 15..F..|
00000050  20 72 25 2c 72 25 2a 31  37 2c 72 25 2a 31 37 2c  | r%,r%*17,r%*17,|
00000060  72 25 2a 31 37 0d 00 50  05 ed 0d 00 5a 04 0d 00  |r%*17..P....Z...|
00000070  64 15 de 20 73 70 72 69  74 65 25 20 31 32 38 2a  |d.. sprite% 128*|
00000080  31 36 30 0d 00 6e 10 de  20 64 69 76 25 20 35 31  |160..n.. div% 51|
00000090  32 2a 34 0d 00 78 11 de  20 70 72 6f 67 25 20 38  |2*4..x.. prog% 8|
000000a0  31 39 32 30 0d 00 82 0f  de 20 73 63 72 65 65 6e  |1920..... screen|
000000b0  25 20 38 0d 00 8c 11 de  20 73 69 6e 65 25 20 35  |% 8..... sine% 5|
000000c0  31 32 2a 34 0d 00 96 13  de 20 63 6f 73 69 6e 65  |12*4..... cosine|
000000d0  25 20 35 31 32 2a 34 0d  00 a0 11 de 20 70 61 6c  |% 512*4..... pal|
000000e0  65 74 74 65 25 20 38 30  0d 00 aa 04 0d 00 b4 10  |ette% 80........|
000000f0  21 73 63 72 65 65 6e 25  3d 31 34 38 0d 00 be 10  |!screen%=148....|
00000100  73 63 72 65 65 6e 25 21  34 3d 2d 31 0d 00 c8 2c  |screen%!4=-1...,|
00000110  c8 99 20 22 4f 53 5f 52  65 61 64 56 64 75 56 61  |.. "OS_ReadVduVa|
00000120  72 69 61 62 6c 65 73 22  2c 73 63 72 65 65 6e 25  |riables",screen%|
00000130  2c 73 63 72 65 65 6e 25  0d 00 d2 14 73 63 72 65  |,screen%....scre|
00000140  65 6e 25 3d 21 73 63 72  65 65 6e 25 0d 00 dc 04  |en%=!screen%....|
00000150  0d 00 e6 10 e3 20 72 25  3d 30 20 b8 20 35 31 32  |..... r%=0 . 512|
00000160  0d 00 f0 1e 64 69 76 25  21 28 72 25 2a 34 29 3d  |....div%!(r%*4)=|
00000170  28 32 5e 31 39 29 2f 28  72 25 2b 31 36 29 0d 00  |(2^19)/(r%+16)..|
00000180  fa 26 73 69 6e 65 25 21  28 72 25 2a 34 29 3d b5  |.&sine%!(r%*4)=.|
00000190  b2 28 72 25 2a 31 38 30  2f 32 35 36 29 2a 28 32  |.(r%*180/256)*(2|
000001a0  5e 31 32 29 0d 01 04 28  63 6f 73 69 6e 65 25 21  |^12)...(cosine%!|
000001b0  28 72 25 2a 34 29 3d 9b  b2 28 72 25 2a 31 38 30  |(r%*4)=..(r%*180|
000001c0  2f 32 35 36 29 2a 28 32  5e 31 32 29 0d 01 0e 05  |/256)*(2^12)....|
000001d0  ed 0d 01 18 04 0d 01 22  14 21 73 70 72 69 74 65  |.......".!sprite|
000001e0  25 3d 31 32 38 2a 31 36  30 0d 01 2c 10 73 70 72  |%=128*160..,.spr|
000001f0  69 74 65 25 21 38 3d 31  36 0d 01 36 22 c8 99 20  |ite%!8=16..6".. |
00000200  22 4f 53 5f 53 70 72 69  74 65 4f 70 22 2c 32 35  |"OS_SpriteOp",25|
00000210  36 2b 39 2c 73 70 72 69  74 65 25 0d 01 40 36 c8  |6+9,sprite%..@6.|
00000220  99 20 22 4f 53 5f 53 70  72 69 74 65 4f 70 22 2c  |. "OS_SpriteOp",|
00000230  32 35 36 2b 31 30 2c 73  70 72 69 74 65 25 2c 22  |256+10,sprite%,"|
00000240  3c 4f 62 65 79 24 44 69  72 3e 2e 63 6c 6f 75 64  |<Obey$Dir>.cloud|
00000250  22 0d 01 4a 1a 73 70 72  25 3d 73 70 72 69 74 65  |"..J.spr%=sprite|
00000260  25 2b 73 70 72 69 74 65  25 21 38 0d 01 54 16 64  |%+sprite%!8..T.d|
00000270  61 74 61 25 3d 73 70 72  25 2b 73 70 72 25 21 33  |ata%=spr%+spr%!3|
00000280  32 0d 01 5e 04 0d 01 68  11 f2 61 73 73 65 6d 62  |2..^...h..assemb|
00000290  6c 65 70 72 6f 67 0d 01  72 04 0d 01 7c 0b 62 61  |leprog..r...|.ba|
000002a0  6e 6b 25 3d 31 0d 01 86  04 0d 01 90 0f e3 20 72  |nk%=1......... r|
000002b0  25 3d 30 20 b8 20 36 34  0d 01 9a 12 c8 99 20 36  |%=0 . 64...... 6|
000002c0  2c 31 31 33 2c 62 61 6e  6b 25 0d 01 a4 11 62 61  |,113,bank%....ba|
000002d0  6e 6b 25 3d 33 2d 62 61  6e 6b 25 0d 01 ae 06 c8  |nk%=3-bank%.....|
000002e0  96 0d 01 b8 0b d6 20 70  72 6f 67 25 0d 01 c2 05  |...... prog%....|
000002f0  ed 0d 01 cc 04 0d 01 d6  14 e3 20 72 25 3d 30 20  |.......... r%=0 |
00000300  b8 20 31 32 38 20 88 20  32 0d 01 e0 18 21 63 6f  |. 128 . 2....!co|
00000310  73 61 74 3d 73 69 6e 65  25 21 28 72 25 3c 3c 32  |sat=sine%!(r%<<2|
00000320  29 0d 01 ea 1a 21 73 69  6e 61 74 3d 63 6f 73 69  |)....!sinat=cosi|
00000330  6e 65 25 21 28 72 25 3c  3c 32 29 0d 01 f4 12 c8  |ne%!(r%<<2).....|
00000340  99 20 36 2c 31 31 33 2c  62 61 6e 6b 25 0d 01 fe  |. 6,113,bank%...|
00000350  11 62 61 6e 6b 25 3d 33  2d 62 61 6e 6b 25 0d 02  |.bank%=3-bank%..|
00000360  08 06 c8 96 0d 02 12 0b  d6 20 70 72 6f 67 25 0d  |......... prog%.|
00000370  02 1c 05 ed 0d 02 26 04  0d 02 80 0f e3 20 72 25  |......&...... r%|
00000380  3d 30 20 b8 20 36 33 0d  02 94 12 c8 99 20 36 2c  |=0 . 63...... 6,|
00000390  31 31 33 2c 62 61 6e 6b  25 0d 02 9e 11 62 61 6e  |113,bank%....ban|
000003a0  6b 25 3d 33 2d 62 61 6e  6b 25 0d 02 a8 06 c8 96  |k%=3-bank%......|
000003b0  0d 02 b2 0b d6 20 70 72  6f 67 25 0d 02 bc 05 ed  |..... prog%.....|
000003c0  0d 02 c6 04 0d 02 d0 14  e3 20 72 25 3d 30 20 b8  |......... r%=0 .|
000003d0  20 31 36 30 20 88 20 32  0d 02 da 0e 21 61 6e 67  | 160 . 2....!ang|
000003e0  31 61 74 2b 3d 34 0d 02  e4 0e 21 61 6e 67 32 61  |1at+=4....!ang2a|
000003f0  74 2b 3d 33 0d 02 ee 0b  21 6d 75 6c 3d 72 25 0d  |t+=3....!mul=r%.|
00000400  02 f8 12 c8 99 20 36 2c  31 31 33 2c 62 61 6e 6b  |..... 6,113,bank|
00000410  25 0d 03 02 11 62 61 6e  6b 25 3d 33 2d 62 61 6e  |%....bank%=3-ban|
00000420  6b 25 0d 03 0c 06 c8 96  0d 03 16 0b d6 20 70 72  |k%........... pr|
00000430  6f 67 25 0d 03 20 05 ed  0d 03 2a 04 0d 03 34 0a  |og%.. ....*...4.|
00000440  72 25 3d 31 32 38 0d 03  3e 05 f5 0d 03 48 18 21  |r%=128..>....H.!|
00000450  63 6f 73 61 74 3d 73 69  6e 65 25 21 28 72 25 3c  |cosat=sine%!(r%<|
00000460  3c 32 29 0d 03 52 1a 21  73 69 6e 61 74 3d 63 6f  |<2)..R.!sinat=co|
00000470  73 69 6e 65 25 21 28 72  25 3c 3c 32 29 0d 03 5c  |sine%!(r%<<2)..\|
00000480  0e 21 61 6e 67 31 61 74  2b 3d 34 0d 03 66 0e 21  |.!ang1at+=4..f.!|
00000490  61 6e 67 32 61 74 2b 3d  33 0d 03 70 12 c8 99 20  |ang2at+=3..p... |
000004a0  36 2c 31 31 33 2c 62 61  6e 6b 25 0d 03 7a 11 62  |6,113,bank%..z.b|
000004b0  61 6e 6b 25 3d 33 2d 62  61 6e 6b 25 0d 03 84 06  |ank%=3-bank%....|
000004c0  c8 96 0d 03 8e 0b d6 20  70 72 6f 67 25 0d 03 98  |....... prog%...|
000004d0  09 72 25 2b 3d 32 0d 03  a2 11 e7 20 72 25 3d 35  |.r%+=2..... r%=5|
000004e0  31 32 20 72 25 3d 30 0d  03 ac 07 fd 20 30 0d 03  |12 r%=0..... 0..|
000004f0  b6 05 e0 0d 03 c0 04 0d  03 ca 04 0d 03 d4 12 dd  |................|
00000500  f2 61 73 73 65 6d 62 6c  65 70 72 6f 67 0d 03 de  |.assembleprog...|
00000510  0c 73 63 72 65 65 6e 3d  30 0d 03 e8 07 78 3d 31  |.screen=0....x=1|
00000520  0d 03 f2 07 79 3d 32 0d  03 fc 08 64 78 3d 33 0d  |....y=2....dx=3.|
00000530  04 06 08 64 79 3d 34 0d  04 10 0c 73 70 72 69 74  |...dy=4....sprit|
00000540  65 3d 35 0d 04 1a 09 72  65 70 3d 36 0d 04 24 08  |e=5....rep=6..$.|
00000550  78 6d 3d 37 0d 04 2e 08  79 6d 3d 38 0d 04 38 09  |xm=7....ym=8..8.|
00000560  64 69 76 3d 39 0d 04 42  0a 63 6f 73 3d 31 30 0d  |div=9..B.cos=10.|
00000570  04 4c 0b 61 6e 67 31 3d  31 31 0d 04 56 0b 61 6e  |.L.ang1=11..V.an|
00000580  67 32 3d 31 32 0d 04 60  04 0d 04 6a 15 e3 20 70  |g2=12..`...j.. p|
00000590  61 73 73 25 3d 30 20 b8  20 32 20 88 20 32 0d 04  |ass%=0 . 2 . 2..|
000005a0  74 0c 50 25 3d 70 72 6f  67 25 0d 04 7e 0e 5b 4f  |t.P%=prog%..~.[O|
000005b0  50 54 20 70 61 73 73 25  0d 04 88 04 0d 04 92 1a  |PT pass%........|
000005c0  2e 73 63 72 65 65 6e 61  74 20 45 51 55 44 20 73  |.screenat EQUD s|
000005d0  63 72 65 65 6e 25 0d 04  9c 22 2e 63 68 61 6e 67  |creen%...".chang|
000005e0  65 61 74 20 45 51 55 44  20 73 63 72 65 65 6e 25  |eat EQUD screen%|
000005f0  2a 32 2b 34 30 39 36 30  0d 04 a6 18 2e 73 70 72  |*2+40960.....spr|
00000600  69 74 65 61 74 20 45 51  55 44 20 64 61 74 61 25  |iteat EQUD data%|
00000610  0d 04 b0 1a 2e 63 6f 73  69 6e 65 61 74 20 45 51  |.....cosineat EQ|
00000620  55 44 20 63 6f 73 69 6e  65 25 0d 04 ba 14 2e 6f  |UD cosine%.....o|
00000630  66 66 73 65 74 20 20 20  45 51 55 44 20 30 0d 04  |ffset   EQUD 0..|
00000640  c4 17 2e 64 69 76 61 74  20 20 20 20 45 51 55 44  |...divat    EQUD|
00000650  20 64 69 76 25 0d 04 ce  18 2e 73 69 6e 61 74 20  | div%.....sinat |
00000660  20 20 20 45 51 55 44 20  31 3c 3c 31 32 0d 04 d8  |   EQUD 1<<12...|
00000670  14 2e 63 6f 73 61 74 20  20 20 20 45 51 55 44 20  |..cosat    EQUD |
00000680  30 0d 04 e2 14 2e 61 6e  67 31 61 74 20 20 20 45  |0.....ang1at   E|
00000690  51 55 44 20 30 0d 04 ec  14 2e 61 6e 67 32 61 74  |QUD 0.....ang2at|
000006a0  20 20 20 45 51 55 44 20  30 0d 04 f6 19 2e 78 64  |   EQUD 0.....xd|
000006b0  20 20 20 20 20 20 20 45  51 55 44 20 31 32 38 3c  |       EQUD 128<|
000006c0  3c 39 0d 05 00 19 2e 79  64 20 20 20 20 20 20 20  |<9.....yd       |
000006d0  45 51 55 44 20 31 32 38  3c 3c 39 0d 05 0a 14 2e  |EQUD 128<<9.....|
000006e0  6d 75 6c 20 20 20 20 20  20 45 51 55 44 20 30 0d  |mul      EQUD 0.|
000006f0  05 14 04 0d 05 1e 15 20  53 54 4d 46 44 20 52 31  |....... STMFD R1|
00000700  33 21 2c 7b 52 31 34 7d  0d 05 28 04 0d 05 32 15  |3!,{R14}..(...2.|
00000710  20 4c 44 52 20 52 31 34  2c 63 68 61 6e 67 65 61  | LDR R14,changea|
00000720  74 0d 05 3c 18 20 4c 44  52 20 73 63 72 65 65 6e  |t..<. LDR screen|
00000730  2c 73 63 72 65 65 6e 61  74 0d 05 46 1a 20 53 55  |,screenat..F. SU|
00000740  42 20 73 63 72 65 65 6e  2c 52 31 34 2c 73 63 72  |B screen,R14,scr|
00000750  65 65 6e 0d 05 50 18 20  53 54 52 20 73 63 72 65  |een..P. STR scre|
00000760  65 6e 2c 73 63 72 65 65  6e 61 74 0d 05 5a 18 20  |en,screenat..Z. |
00000770  4c 44 52 20 73 70 72 69  74 65 2c 73 70 72 69 74  |LDR sprite,sprit|
00000780  65 61 74 0d 05 64 11 20  4c 44 52 20 64 78 2c 63  |eat..d. LDR dx,c|
00000790  6f 73 61 74 0d 05 6e 11  20 4c 44 52 20 64 79 2c  |osat..n. LDR dy,|
000007a0  73 69 6e 61 74 0d 05 78  12 20 4c 44 52 20 64 69  |sinat..x. LDR di|
000007b0  76 2c 64 69 76 61 74 0d  05 82 15 20 4c 44 52 20  |v,divat.... LDR |
000007c0  63 6f 73 2c 63 6f 73 69  6e 65 61 74 0d 05 8c 04  |cos,cosineat....|
000007d0  0d 05 96 0e 20 4d 4f 56  20 78 6d 2c 23 30 0d 05  |.... MOV xm,#0..|
000007e0  a0 0e 20 4d 4f 56 20 79  6d 2c 23 30 0d 05 aa 10  |.. MOV ym,#0....|
000007f0  20 4d 4f 56 20 52 31 32  2c 23 36 34 0d 05 b4 11  | MOV R12,#64....|
00000800  20 4d 4f 56 20 52 31 34  2c 23 31 36 30 0d 05 be  | MOV R14,#160...|
00000810  13 20 4d 55 4c 20 72 65  70 2c 64 79 2c 52 31 32  |. MUL rep,dy,R12|
00000820  0d 05 c8 12 20 53 55 42  20 78 6d 2c 78 6d 2c 72  |.... SUB xm,xm,r|
00000830  65 70 0d 05 d2 13 20 4d  55 4c 20 72 65 70 2c 64  |ep.... MUL rep,d|
00000840  78 2c 52 31 34 0d 05 dc  12 20 53 55 42 20 78 6d  |x,R14.... SUB xm|
00000850  2c 78 6d 2c 72 65 70 0d  05 e6 13 20 4d 55 4c 20  |,xm,rep.... MUL |
00000860  72 65 70 2c 64 78 2c 52  31 32 0d 05 f0 12 20 41  |rep,dx,R12.... A|
00000870  44 44 20 79 6d 2c 79 6d  2c 72 65 70 0d 05 fa 13  |DD ym,ym,rep....|
00000880  20 4d 55 4c 20 72 65 70  2c 64 79 2c 52 31 34 0d  | MUL rep,dy,R14.|
00000890  06 04 12 20 53 55 42 20  79 6d 2c 79 6d 2c 72 65  |... SUB ym,ym,re|
000008a0  70 0d 06 0e 04 0d 06 18  13 20 4c 44 52 20 52 31  |p........ LDR R1|
000008b0  32 2c 6f 66 66 73 65 74  0d 06 22 17 20 41 44 44  |2,offset..". ADD|
000008c0  20 52 31 32 2c 52 31 32  2c 23 31 3c 3c 32 38 0d  | R12,R12,#1<<28.|
000008d0  06 2c 13 20 53 54 52 20  52 31 32 2c 6f 66 66 73  |.,. STR R12,offs|
000008e0  65 74 0d 06 36 04 0d 06  40 14 20 4c 44 52 20 61  |et..6...@. LDR a|
000008f0  6e 67 31 2c 61 6e 67 31  61 74 0d 06 4a 14 20 4c  |ng1,ang1at..J. L|
00000900  44 52 20 61 6e 67 32 2c  61 6e 67 32 61 74 0d 06  |DR ang2,ang2at..|
00000910  54 11 20 4d 4f 56 20 72  65 70 2c 23 31 32 37 0d  |T. MOV rep,#127.|
00000920  06 5e 0a 2e 79 6c 6f 6f  70 0d 06 68 0d 20 4d 4f  |.^..yloop..h. MO|
00000930  56 20 78 2c 78 6d 0d 06  72 0d 20 4d 4f 56 20 79  |V x,xm..r. MOV y|
00000940  2c 79 6d 0d 06 7c 17 20  41 44 44 20 78 6d 2c 78  |,ym..|. ADD xm,x|
00000950  6d 2c 64 79 2c 4c 53 4c  23 31 0d 06 86 17 20 53  |m,dy,LSL#1.... S|
00000960  55 42 20 79 6d 2c 79 6d  2c 64 78 2c 4c 53 4c 23  |UB ym,ym,dx,LSL#|
00000970  31 0d 06 90 15 20 41 44  44 20 61 6e 67 31 2c 61  |1.... ADD ang1,a|
00000980  6e 67 31 2c 23 32 0d 06  9a 11 20 4d 4f 56 20 52  |ng1,#2.... MOV R|
00000990  31 34 2c 23 35 31 32 0d  06 a4 13 20 53 55 42 20  |14,#512.... SUB |
000009a0  52 31 34 2c 52 31 34 2c  23 31 0d 06 ae 14 20 80  |R14,R14,#1.... .|
000009b0  20 61 6e 67 31 2c 52 31  34 2c 61 6e 67 31 0d 06  | ang1,R14,ang1..|
000009c0  b8 15 20 41 44 44 20 61  6e 67 32 2c 61 6e 67 32  |.. ADD ang2,ang2|
000009d0  2c 23 33 0d 06 c2 14 20  80 20 61 6e 67 32 2c 52  |,#3.... . ang2,R|
000009e0  31 34 2c 61 6e 67 32 0d  06 cc 2f 20 53 54 4d 46  |14,ang2.../ STMF|
000009f0  44 20 52 31 33 21 2c 7b  78 6d 2c 79 6d 2c 64 78  |D R13!,{xm,ym,dx|
00000a00  2c 64 79 2c 64 69 76 2c  63 6f 73 2c 61 6e 67 31  |,dy,div,cos,ang1|
00000a10  2c 61 6e 67 32 7d 0d 06  d6 1e 20 4c 44 52 20 61  |,ang2}.... LDR a|
00000a20  6e 67 31 2c 5b 63 6f 73  2c 61 6e 67 31 2c 4c 53  |ng1,[cos,ang1,LS|
00000a30  4c 23 32 5d 0d 06 e0 1e  20 4c 44 52 20 61 6e 67  |L#2].... LDR ang|
00000a40  32 2c 5b 63 6f 73 2c 61  6e 67 32 2c 4c 53 4c 23  |2,[cos,ang2,LSL#|
00000a50  32 5d 0d 06 ea 10 20 4c  44 52 20 52 31 34 2c 6d  |2].... LDR R14,m|
00000a60  75 6c 0d 06 f4 16 20 4d  55 4c 20 61 6e 67 31 2c  |ul.... MUL ang1,|
00000a70  52 31 34 2c 61 6e 67 31  0d 06 fe 16 20 4d 55 4c  |R14,ang1.... MUL|
00000a80  20 61 6e 67 32 2c 52 31  34 2c 61 6e 67 32 0d 07  | ang2,R14,ang2..|
00000a90  08 19 20 53 55 42 20 64  78 2c 64 78 2c 61 6e 67  |.. SUB dx,dx,ang|
00000aa0  31 2c 41 53 52 23 39 0d  07 12 19 20 41 44 44 20  |1,ASR#9.... ADD |
00000ab0  64 79 2c 64 79 2c 61 6e  67 31 2c 41 53 52 23 39  |dy,dy,ang1,ASR#9|
00000ac0  0d 07 1c 17 20 41 44 44  20 78 2c 78 2c 61 6e 67  |.... ADD x,x,ang|
00000ad0  32 2c 41 53 52 23 32 0d  07 26 17 20 53 55 42 20  |2,ASR#2..&. SUB |
00000ae0  79 2c 79 2c 61 6e 67 32  2c 41 53 52 23 32 0d 07  |y,y,ang2,ASR#2..|
00000af0  30 04 0d 07 3a 1c 20 4c  44 52 20 64 69 76 2c 5b  |0...:. LDR div,[|
00000b00  64 69 76 2c 72 65 70 2c  4c 53 4c 23 33 5d 0d 07  |div,rep,LSL#3]..|
00000b10  44 10 20 4d 55 4c 20 78  2c 64 69 76 2c 78 0d 07  |D. MUL x,div,x..|
00000b20  4e 10 20 4d 55 4c 20 79  2c 64 69 76 2c 79 0d 07  |N. MUL y,div,y..|
00000b30  58 12 20 4d 55 4c 20 64  78 2c 64 69 76 2c 64 78  |X. MUL dx,div,dx|
00000b40  0d 07 62 12 20 4d 55 4c  20 64 79 2c 64 69 76 2c  |..b. MUL dy,div,|
00000b50  64 79 0d 07 6c 13 20 4c  44 52 20 52 31 32 2c 6f  |dy..l. LDR R12,o|
00000b60  66 66 73 65 74 0d 07 76  10 20 41 44 44 20 78 2c  |ffset..v. ADD x,|
00000b70  78 2c 52 31 32 0d 07 80  04 0d 07 8a 13 20 42 49  |x,R12........ BI|
00000b80  43 20 64 78 2c 64 78 2c  23 31 32 37 0d 07 94 17  |C dx,dx,#127....|
00000b90  20 84 52 20 64 78 2c 64  78 2c 64 79 2c 4c 53 52  | .R dx,dx,dy,LSR|
00000ba0  23 32 35 0d 07 9e 14 20  4d 4f 56 20 64 79 2c 64  |#25.... MOV dy,d|
00000bb0  79 2c 4c 53 4c 23 37 0d  07 a8 11 20 42 49 43 20  |y,LSL#7.... BIC |
00000bc0  78 2c 78 2c 23 31 32 37  0d 07 b2 14 20 84 52 20  |x,x,#127.... .R |
00000bd0  78 2c 78 2c 79 2c 4c 53  52 23 32 35 0d 07 bc 12  |x,x,y,LSR#25....|
00000be0  20 4d 4f 56 20 79 2c 79  2c 4c 53 4c 23 37 0d 07  | MOV y,y,LSL#7..|
00000bf0  c6 05 5d 0d 07 d0 0e e3  20 72 25 3d 30 20 b8 20  |..]..... r%=0 . |
00000c00  37 0d 07 da 11 e3 20 72  65 67 25 3d 37 20 b8 20  |7..... reg%=7 . |
00000c10  31 31 0d 07 e4 0e 5b 4f  50 54 20 70 61 73 73 25  |11....[OPT pass%|
00000c20  0d 07 ee 13 20 a4 6d 61  70 62 79 74 65 28 72 65  |.... .mapbyte(re|
00000c30  67 25 29 0d 07 f8 05 5d  0d 08 02 17 e3 20 73 68  |g%)....]..... sh|
00000c40  69 66 74 25 3d 34 20 b8  20 32 38 20 88 20 34 0d  |ift%=4 . 28 . 4.|
00000c50  08 0c 0e 5b 4f 50 54 20  70 61 73 73 25 0d 08 16  |...[OPT pass%...|
00000c60  11 20 a4 6d 61 70 62 79  74 65 28 31 34 29 0d 08  |. .mapbyte(14)..|
00000c70  20 21 20 41 44 44 20 72  65 67 25 2c 72 65 67 25  | ! ADD reg%,reg%|
00000c80  2c 52 31 34 2c 4c 53 4c  23 73 68 69 66 74 25 0d  |,R14,LSL#shift%.|
00000c90  08 2a 05 5d 0d 08 34 05  ed 0d 08 3e 05 ed 0d 08  |.*.]..4....>....|
00000ca0  48 0e 5b 4f 50 54 20 70  61 73 73 25 0d 08 52 1d  |H.[OPT pass%..R.|
00000cb0  20 53 54 4d 49 41 20 28  73 63 72 65 65 6e 29 21  | STMIA (screen)!|
00000cc0  2c 7b 52 37 2d 52 31 31  7d 0d 08 5c 05 5d 0d 08  |,{R7-R11}..\.]..|
00000cd0  66 05 ed 0d 08 70 04 0d  08 7a 0e 5b 4f 50 54 20  |f....p...z.[OPT |
00000ce0  70 61 73 73 25 0d 08 84  2f 20 4c 44 4d 46 44 20  |pass%.../ LDMFD |
00000cf0  52 31 33 21 2c 7b 78 6d  2c 79 6d 2c 64 78 2c 64  |R13!,{xm,ym,dx,d|
00000d00  79 2c 64 69 76 2c 63 6f  73 2c 61 6e 67 31 2c 61  |y,div,cos,ang1,a|
00000d10  6e 67 32 7d 0d 08 8e 14  20 53 55 42 53 20 72 65  |ng2}.... SUBS re|
00000d20  70 2c 72 65 70 2c 23 31  0d 08 98 0d 42 4e 45 20  |p,rep,#1....BNE |
00000d30  79 6c 6f 6f 70 0d 08 a2  04 0d 08 ac 13 20 53 55  |yloop........ SU|
00000d40  42 20 52 31 2c 52 30 2c  23 31 36 30 0d 08 b6 13  |B R1,R0,#160....|
00000d50  20 41 44 44 20 52 30 2c  52 30 2c 23 33 32 30 0d  | ADD R0,R0,#320.|
00000d60  08 c0 05 5d 0d 08 ca 10  e3 20 72 25 3d 30 20 b8  |...]..... r%=0 .|
00000d70  20 31 32 36 0d 08 d4 0e  5b 4f 50 54 20 70 61 73  | 126....[OPT pas|
00000d80  73 25 0d 08 de 2a 20 4c  44 4d 49 41 20 52 31 21  |s%...* LDMIA R1!|
00000d90  2c 7b 52 33 2d 52 31 32  7d 3a 53 54 4d 49 41 20  |,{R3-R12}:STMIA |
00000da0  52 30 21 2c 7b 52 33 2d  52 31 32 7d 0d 08 e8 2a  |R0!,{R3-R12}...*|
00000db0  20 4c 44 4d 49 41 20 52  31 21 2c 7b 52 33 2d 52  | LDMIA R1!,{R3-R|
00000dc0  31 32 7d 3a 53 54 4d 49  41 20 52 30 21 2c 7b 52  |12}:STMIA R0!,{R|
00000dd0  33 2d 52 31 32 7d 0d 08  f2 2a 20 4c 44 4d 49 41  |3-R12}...* LDMIA|
00000de0  20 52 31 21 2c 7b 52 33  2d 52 31 32 7d 3a 53 54  | R1!,{R3-R12}:ST|
00000df0  4d 49 41 20 52 30 21 2c  7b 52 33 2d 52 31 32 7d  |MIA R0!,{R3-R12}|
00000e00  0d 08 fc 2a 20 4c 44 4d  49 41 20 52 31 21 2c 7b  |...* LDMIA R1!,{|
00000e10  52 33 2d 52 31 32 7d 3a  53 54 4d 49 41 20 52 30  |R3-R12}:STMIA R0|
00000e20  21 2c 7b 52 33 2d 52 31  32 7d 0d 09 06 13 20 53  |!,{R3-R12}.... S|
00000e30  55 42 20 52 31 2c 52 31  2c 23 33 32 30 0d 09 10  |UB R1,R1,#320...|
00000e40  05 5d 0d 09 1a 05 ed 0d  09 24 0e 5b 4f 50 54 20  |.].......$.[OPT |
00000e50  70 61 73 73 25 0d 09 2e  04 0d 09 38 14 20 4c 44  |pass%......8. LD|
00000e60  4d 46 44 20 52 31 33 21  2c 7b 50 43 7d 0d 09 42  |MFD R13!,{PC}..B|
00000e70  05 5d 0d 09 4c 05 ed 0d  09 56 05 e1 0d 09 60 04  |.]..L....V....`.|
00000e80  0d 09 6a 12 dd a4 6d 61  70 62 79 74 65 28 72 65  |..j...mapbyte(re|
00000e90  67 29 0d 09 74 0e 5b 4f  50 54 20 70 61 73 73 25  |g)..t.[OPT pass%|
00000ea0  0d 09 7e 10 20 41 44 44  53 20 79 2c 79 2c 64 79  |..~. ADDS y,y,dy|
00000eb0  0d 09 88 0f 20 41 44 43  20 78 2c 78 2c 64 78 0d  |.... ADC x,x,dx.|
00000ec0  09 92 14 20 4d 4f 56 20  72 65 67 2c 78 2c 52 4f  |... MOV reg,x,RO|
00000ed0  52 23 37 0d 09 9c 21 20  4c 44 52 42 20 72 65 67  |R#7...! LDRB reg|
00000ee0  2c 5b 73 70 72 69 74 65  2c 72 65 67 2c 4c 53 52  |,[sprite,reg,LSR|
00000ef0  23 31 38 5d 0d 09 a6 05  5d 0d 09 b0 07 3d 22 22  |#18]....]....=""|
00000f00  0d ff                                             |..|
00000f02