Home » Archimedes archive » Acorn User » AU 1994-08.adf » !StarInfo_StarInfo » Vlietinck/CosSin

Vlietinck/CosSin

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 1994-08.adf » !StarInfo_StarInfo
Filename: Vlietinck/CosSin
Read OK:
File size: 0B3A bytes
Load address: 0000
Exec address: 0000
File contents
   10REM     >CosSin
   20REM by  Jan Vlietinck
   30REM (c) AU August 1994
   40
   50MODE 0
   60M=28
   70UNROLL=TRUE
   80DIM Q% 4000
   90H=0:X=1:Y=2:I=3:T=4:TN=5:F=6
  100FOR P=0 TO 2 STEP 2
  110P%=Q%
  120[OPT P
  130.cos EQUD 0
  140.sin EQUD 0
  150.k  EQUD (1/1.64676025)*2^M
  160.two_pi EQUD 2*PI*2^M
  170.angle EQUD 0
  180
  190.cos_sin
  200  LDR H,angle
  210  LDR T,two_pi
  220  MOV F,#0
  230  CMP H,#0
  240  RSBMI H,H,#0
  250  EORMI F,F,#2
  260  .modpi
  270  CMP H,T
  280  SUBHI H,H,T
  290  BHI modpi
  300  CMP H,T,LSR #1
  310  RSBHI H,H,T
  320  EORHI F,F,#2
  330  CMP H,T,LSR #2
  340  RSBHI H,H,T,LSR #1
  350  EORHI F,F,#4
  360  CMP H,T,LSR #3
  370  RSBHI H,H,T,LSR #2
  380  EORHI F,F,#8
  390  ADR TN,table
  400  LDR X,k
  410  MOV Y,X
  420  LDR T,[TN]
  430  SUBS H,H,T
  440  SUBPL T,X,Y,ASR #1
  450  ADDMI T,X,Y,ASR #1
  460  ADDPL Y,Y,X,ASR #1
  470  SUBMI Y,Y,X,ASR #1
  480  LDR X,[TN,#1*4]
  490  SUBPL H,H,X,LSL #1
  500  ]
  510  IF UNROLL THEN
  520  FOR SF=2 TO 14 STEP 2
  530  [OPT P
  540    ADDS H,H,X
  550    SUBPL X,T,Y,ASR #SF
  560    ADDMI X,T,Y,ASR #SF
  570    ADDPL Y,Y,T,ASR #SF
  580    SUBMI Y,Y,T,ASR #SF
  590    LDR T,[TN,#SF*4]
  600    SUBPL H,H,T,LSL #1
  610    ADDS H,H,T
  620    SUBPL T,X,Y,ASR #SF+1
  630    ADDMI T,X,Y,ASR #SF+1
  640    ADDPL Y,Y,X,ASR #SF+1
  650    SUBMI Y,Y,X,ASR #SF+1
  660    LDR X,[TN,#(SF+1)*4]
  670    SUBPL H,H,X,LSL #1
  680  ]
  690NEXT
  700ELSE
  710[OPT P
  720  MOV I,#1
  730  .for
  740    ADD I,I,#1
  750    ADDS H,H,X
  760    SUBPL X,T,Y,ASR I
  770    ADDMI X,T,Y,ASR I
  780    ADDPL Y,Y,T,ASR I
  790    SUBMI Y,Y,T,ASR I
  800    LDR T,[TN,I,LSL #2]
  810    SUBPL H,H,T,LSL #1
  820    ADD I,I,#1
  830    ADDS H,H,T
  840    SUBPL T,X,Y,ASR I
  850    ADDMI T,X,Y,ASR I
  860    ADDPL Y,Y,X,ASR I
  870    SUBMI Y,Y,X,ASR I
  880    LDR X,[TN,I,LSL #2]
  890    SUBPL H,H,X,LSL #1
  900    CMP I,#15
  910  BNE for
  920]
  930ENDIF
  940
  950[OPT P
  960  ADDS H,H,X
  970  MOV X,T
  980  CMP H,#0
  990  RSBMI H,H,#0
 1000  MOV T,Y,LSR #16
 1010  MOV I,X,LSR #16
 1020  MUL T,H,T
 1030  SUBPL X,X,T,LSR #12
 1040  ADDMI X,X,T,LSR #12
 1050  MUL T,H,I
 1060  ADDPL Y,Y,T,LSR #12
 1070  SUBMI Y,Y,T,LSR #12
 1080  TST F,#8
 1090  MOVNE T,X
 1100  MOVNE X,Y
 1110  MOVNE Y,T
 1120  TST F,#4
 1130  RSBNE X,X,#0
 1140  TST F,#2
 1150  RSBNE Y,Y,#0
 1160  STR X,cos
 1170  STR Y,sin
 1180  .ED
 1190  MOV PC,R14
 1200  .table
 1210  FNVUL
 1220]
 1230NEXT
 1240
 1250REPEAT
 1260 PRINT ''"Calculating 1000 times cos(h) and sin(h) of angle h"'
 1270 IF UNROLL THEN
 1280  PRINT "With unrolling main loop"
 1290 ELSE
 1300  PRINT "Without unrolling main loop"
 1310 ENDIF
 1320 INPUT "Angle h in degrees, abs(h) < 360� ",H:H=RADH
 1330 !angle=H*2^M
 1340 TIME=0:FOR I%=1 TO 1000:CALL ED:NEXT:CORR=TIME
 1350 TIME=0
 1360 FOR I%=1 TO 1000
 1370  CALL cos_sin
 1380 NEXT
 1390 PRINT '"Using own code"
 1400 PRINT "Time= ";(TIME-CORR)/100
 1410 PRINT "cos(h)= ";!cos/2^M
 1420 PRINT "sin(h)= ";!sin/2^M
 1430 TIME=0:FOR I%=1 TO 1000:A%=ABSH%:NEXT:CORR=TIME
 1440 TIME=0
 1450 FOR I%=1 TO 1000
 1460  A=COSH
 1470  A=SINH
 1480 NEXT
 1490 PRINT '"Using basic "
 1500 PRINT "Time= ";(TIME-CORR)/100
 1510 PRINT "cos(h)= ";COSH
 1520 PRINT "sin(h)= ";SINH
 1530UNTIL FALSE
 1540
 1550DEF FNVUL
 1560FOR J=0 TO 2*M
 1570[OPT P
 1580EQUD ATN(1/2^J)*2^M
 1590]
 1600NEXT
 1610=""
�     >CosSin
� by  Jan Vlietinck
� (c) AU August 1994
(
2� 0
<M=28
FUNROLL=�
P
� Q% 4000
Z H=0:X=1:Y=2:I=3:T=4:TN=5:F=6
d� P=0 � 2 � 2
n	P%=Q%
x
[OPT P
�.cos EQUD 0
�.sin EQUD 0
�.k  EQUD (1/1.64676025)*2^M
�.two_pi EQUD 2*�*2^M
�.angle EQUD 0
�
�.cos_sin
�  LDR H,angle
�  LDR T,two_pi
�  MOV F,#0
�  CMP H,#0
�  RSBMI H,H,#0
�  �MI F,F,#2
  .modpi

  CMP H,T
  SUBHI H,H,T
"  BHI modpi
,  CMP H,T,LSR #1
6  RSBHI H,H,T
@  �HI F,F,#2
J  CMP H,T,LSR #2
T  RSBHI H,H,T,LSR #1
^  �HI F,F,#4
h  CMP H,T,LSR #3
r  RSBHI H,H,T,LSR #2
|  �HI F,F,#8
�  ADR TN,table
�
  LDR X,k
�
  MOV Y,X
�  LDR T,[TN]
�  SUBS H,H,T
�  SUBPL T,X,Y,ASR #1
�  ADDMI T,X,Y,ASR #1
�  ADDPL Y,Y,X,ASR #1
�  SUBMI Y,Y,X,ASR #1
�  LDR X,[TN,#1*4]
�  SUBPL H,H,X,LSL #1
�  ]
�  � UNROLL �
  � SF=2 � 14 � 2
  [OPT P
    ADDS H,H,X
&    SUBPL X,T,Y,ASR #SF
0    ADDMI X,T,Y,ASR #SF
:    ADDPL Y,Y,T,ASR #SF
D    SUBMI Y,Y,T,ASR #SF
N    LDR T,[TN,#SF*4]
X    SUBPL H,H,T,LSL #1
b    ADDS H,H,T
l    SUBPL T,X,Y,ASR #SF+1
v    ADDMI T,X,Y,ASR #SF+1
�    ADDPL Y,Y,X,ASR #SF+1
�    SUBMI Y,Y,X,ASR #SF+1
�    LDR X,[TN,#(SF+1)*4]
�    SUBPL H,H,X,LSL #1
�  ]
��
��
�
[OPT P
�  MOV I,#1
�
  .for
�    ADD I,I,#1
�    ADDS H,H,X
�    SUBPL X,T,Y,ASR I
    ADDMI X,T,Y,ASR I
    ADDPL Y,Y,T,ASR I
    SUBMI Y,Y,T,ASR I
     LDR T,[TN,I,LSL #2]
*    SUBPL H,H,T,LSL #1
4    ADD I,I,#1
>    ADDS H,H,T
H    SUBPL T,X,Y,ASR I
R    ADDMI T,X,Y,ASR I
\    ADDPL Y,Y,X,ASR I
f    SUBMI Y,Y,X,ASR I
p    LDR X,[TN,I,LSL #2]
z    SUBPL H,H,X,LSL #1
�    CMP I,#15
�
  BNE for
�]
��
�
�
[OPT P
�  ADDS H,H,X
�
  MOV X,T
�  CMP H,#0
�  RSBMI H,H,#0
�  MOV T,Y,LSR #16
�  MOV I,X,LSR #16
�  MUL T,H,T
  SUBPL X,X,T,LSR #12
  ADDMI X,X,T,LSR #12
  MUL T,H,I
$  ADDPL Y,Y,T,LSR #12
.  SUBMI Y,Y,T,LSR #12
8  TST F,#8
B  MOVNE T,X
L  MOVNE X,Y
V  MOVNE Y,T
`  TST F,#4
j  RSBNE X,X,#0
t  TST F,#2
~  RSBNE Y,Y,#0
�  STR X,cos
�  STR Y,sin
�	  .ED
�  MOV PC,R14
�  .table
�
  �VUL
�]
��
�
��
�? � ''"Calculating 1000 times cos(h) and sin(h) of angle h"'
� � UNROLL �
"  � "With unrolling main loop"

 �
%  � "Without unrolling main loop"
 �
(2 � "Angle h in degrees, abs(h) < 360� ",H:H=�H
2 !angle=H*2^M
<$ �=0:� I%=1 � 1000:� ED:�:CORR=�
F �=0
P � I%=1 � 1000
Z  � cos_sin
d �
n � '"Using own code"
x � "Time= ";(�-CORR)/100
� � "cos(h)= ";!cos/2^M
� � "sin(h)= ";!sin/2^M
�& �=0:� I%=1 � 1000:A%=�H%:�:CORR=�
� �=0
� � I%=1 � 1000
�
  A=�H
�
  A=�H
� �
� � '"Using basic "
� � "Time= ";(�-CORR)/100
� � "cos(h)= ";�H
� � "sin(h)= ";�H
�� �


� �VUL
� J=0 � 2*M
"
[OPT P
,EQUD �(1/2^J)*2^M
6]
@�
J=""
�
00000000  0d 00 0a 11 f4 20 20 20  20 20 3e 43 6f 73 53 69  |.....     >CosSi|
00000010  6e 0d 00 14 17 f4 20 62  79 20 20 4a 61 6e 20 56  |n..... by  Jan V|
00000020  6c 69 65 74 69 6e 63 6b  0d 00 1e 18 f4 20 28 63  |lietinck..... (c|
00000030  29 20 41 55 20 41 75 67  75 73 74 20 31 39 39 34  |) AU August 1994|
00000040  0d 00 28 04 0d 00 32 07  eb 20 30 0d 00 3c 08 4d  |..(...2.. 0..<.M|
00000050  3d 32 38 0d 00 46 0c 55  4e 52 4f 4c 4c 3d b9 0d  |=28..F.UNROLL=..|
00000060  00 50 0d de 20 51 25 20  34 30 30 30 0d 00 5a 20  |.P.. Q% 4000..Z |
00000070  48 3d 30 3a 58 3d 31 3a  59 3d 32 3a 49 3d 33 3a  |H=0:X=1:Y=2:I=3:|
00000080  54 3d 34 3a 54 4e 3d 35  3a 46 3d 36 0d 00 64 11  |T=4:TN=5:F=6..d.|
00000090  e3 20 50 3d 30 20 b8 20  32 20 88 20 32 0d 00 6e  |. P=0 . 2 . 2..n|
000000a0  09 50 25 3d 51 25 0d 00  78 0a 5b 4f 50 54 20 50  |.P%=Q%..x.[OPT P|
000000b0  0d 00 82 0f 2e 63 6f 73  20 45 51 55 44 20 30 0d  |.....cos EQUD 0.|
000000c0  00 8c 0f 2e 73 69 6e 20  45 51 55 44 20 30 0d 00  |....sin EQUD 0..|
000000d0  96 1f 2e 6b 20 20 45 51  55 44 20 28 31 2f 31 2e  |...k  EQUD (1/1.|
000000e0  36 34 36 37 36 30 32 35  29 2a 32 5e 4d 0d 00 a0  |64676025)*2^M...|
000000f0  18 2e 74 77 6f 5f 70 69  20 45 51 55 44 20 32 2a  |..two_pi EQUD 2*|
00000100  af 2a 32 5e 4d 0d 00 aa  11 2e 61 6e 67 6c 65 20  |.*2^M.....angle |
00000110  45 51 55 44 20 30 0d 00  b4 04 0d 00 be 0c 2e 63  |EQUD 0.........c|
00000120  6f 73 5f 73 69 6e 0d 00  c8 11 20 20 4c 44 52 20  |os_sin....  LDR |
00000130  48 2c 61 6e 67 6c 65 0d  00 d2 12 20 20 4c 44 52  |H,angle....  LDR|
00000140  20 54 2c 74 77 6f 5f 70  69 0d 00 dc 0e 20 20 4d  | T,two_pi....  M|
00000150  4f 56 20 46 2c 23 30 0d  00 e6 0e 20 20 43 4d 50  |OV F,#0....  CMP|
00000160  20 48 2c 23 30 0d 00 f0  12 20 20 52 53 42 4d 49  | H,#0....  RSBMI|
00000170  20 48 2c 48 2c 23 30 0d  00 fa 10 20 20 82 4d 49  | H,H,#0....  .MI|
00000180  20 46 2c 46 2c 23 32 0d  01 04 0c 20 20 2e 6d 6f  | F,F,#2....  .mo|
00000190  64 70 69 0d 01 0e 0d 20  20 43 4d 50 20 48 2c 54  |dpi....  CMP H,T|
000001a0  0d 01 18 11 20 20 53 55  42 48 49 20 48 2c 48 2c  |....  SUBHI H,H,|
000001b0  54 0d 01 22 0f 20 20 42  48 49 20 6d 6f 64 70 69  |T..".  BHI modpi|
000001c0  0d 01 2c 14 20 20 43 4d  50 20 48 2c 54 2c 4c 53  |..,.  CMP H,T,LS|
000001d0  52 20 23 31 0d 01 36 11  20 20 52 53 42 48 49 20  |R #1..6.  RSBHI |
000001e0  48 2c 48 2c 54 0d 01 40  10 20 20 82 48 49 20 46  |H,H,T..@.  .HI F|
000001f0  2c 46 2c 23 32 0d 01 4a  14 20 20 43 4d 50 20 48  |,F,#2..J.  CMP H|
00000200  2c 54 2c 4c 53 52 20 23  32 0d 01 54 18 20 20 52  |,T,LSR #2..T.  R|
00000210  53 42 48 49 20 48 2c 48  2c 54 2c 4c 53 52 20 23  |SBHI H,H,T,LSR #|
00000220  31 0d 01 5e 10 20 20 82  48 49 20 46 2c 46 2c 23  |1..^.  .HI F,F,#|
00000230  34 0d 01 68 14 20 20 43  4d 50 20 48 2c 54 2c 4c  |4..h.  CMP H,T,L|
00000240  53 52 20 23 33 0d 01 72  18 20 20 52 53 42 48 49  |SR #3..r.  RSBHI|
00000250  20 48 2c 48 2c 54 2c 4c  53 52 20 23 32 0d 01 7c  | H,H,T,LSR #2..||
00000260  10 20 20 82 48 49 20 46  2c 46 2c 23 38 0d 01 86  |.  .HI F,F,#8...|
00000270  12 20 20 41 44 52 20 54  4e 2c 74 61 62 6c 65 0d  |.  ADR TN,table.|
00000280  01 90 0d 20 20 4c 44 52  20 58 2c 6b 0d 01 9a 0d  |...  LDR X,k....|
00000290  20 20 4d 4f 56 20 59 2c  58 0d 01 a4 10 20 20 4c  |  MOV Y,X....  L|
000002a0  44 52 20 54 2c 5b 54 4e  5d 0d 01 ae 10 20 20 53  |DR T,[TN]....  S|
000002b0  55 42 53 20 48 2c 48 2c  54 0d 01 b8 18 20 20 53  |UBS H,H,T....  S|
000002c0  55 42 50 4c 20 54 2c 58  2c 59 2c 41 53 52 20 23  |UBPL T,X,Y,ASR #|
000002d0  31 0d 01 c2 18 20 20 41  44 44 4d 49 20 54 2c 58  |1....  ADDMI T,X|
000002e0  2c 59 2c 41 53 52 20 23  31 0d 01 cc 18 20 20 41  |,Y,ASR #1....  A|
000002f0  44 44 50 4c 20 59 2c 59  2c 58 2c 41 53 52 20 23  |DDPL Y,Y,X,ASR #|
00000300  31 0d 01 d6 18 20 20 53  55 42 4d 49 20 59 2c 59  |1....  SUBMI Y,Y|
00000310  2c 58 2c 41 53 52 20 23  31 0d 01 e0 15 20 20 4c  |,X,ASR #1....  L|
00000320  44 52 20 58 2c 5b 54 4e  2c 23 31 2a 34 5d 0d 01  |DR X,[TN,#1*4]..|
00000330  ea 18 20 20 53 55 42 50  4c 20 48 2c 48 2c 58 2c  |..  SUBPL H,H,X,|
00000340  4c 53 4c 20 23 31 0d 01  f4 07 20 20 5d 0d 01 fe  |LSL #1....  ]...|
00000350  10 20 20 e7 20 55 4e 52  4f 4c 4c 20 8c 0d 02 08  |.  . UNROLL ....|
00000360  15 20 20 e3 20 53 46 3d  32 20 b8 20 31 34 20 88  |.  . SF=2 . 14 .|
00000370  20 32 0d 02 12 0c 20 20  5b 4f 50 54 20 50 0d 02  | 2....  [OPT P..|
00000380  1c 12 20 20 20 20 41 44  44 53 20 48 2c 48 2c 58  |..    ADDS H,H,X|
00000390  0d 02 26 1b 20 20 20 20  53 55 42 50 4c 20 58 2c  |..&.    SUBPL X,|
000003a0  54 2c 59 2c 41 53 52 20  23 53 46 0d 02 30 1b 20  |T,Y,ASR #SF..0. |
000003b0  20 20 20 41 44 44 4d 49  20 58 2c 54 2c 59 2c 41  |   ADDMI X,T,Y,A|
000003c0  53 52 20 23 53 46 0d 02  3a 1b 20 20 20 20 41 44  |SR #SF..:.    AD|
000003d0  44 50 4c 20 59 2c 59 2c  54 2c 41 53 52 20 23 53  |DPL Y,Y,T,ASR #S|
000003e0  46 0d 02 44 1b 20 20 20  20 53 55 42 4d 49 20 59  |F..D.    SUBMI Y|
000003f0  2c 59 2c 54 2c 41 53 52  20 23 53 46 0d 02 4e 18  |,Y,T,ASR #SF..N.|
00000400  20 20 20 20 4c 44 52 20  54 2c 5b 54 4e 2c 23 53  |    LDR T,[TN,#S|
00000410  46 2a 34 5d 0d 02 58 1a  20 20 20 20 53 55 42 50  |F*4]..X.    SUBP|
00000420  4c 20 48 2c 48 2c 54 2c  4c 53 4c 20 23 31 0d 02  |L H,H,T,LSL #1..|
00000430  62 12 20 20 20 20 41 44  44 53 20 48 2c 48 2c 54  |b.    ADDS H,H,T|
00000440  0d 02 6c 1d 20 20 20 20  53 55 42 50 4c 20 54 2c  |..l.    SUBPL T,|
00000450  58 2c 59 2c 41 53 52 20  23 53 46 2b 31 0d 02 76  |X,Y,ASR #SF+1..v|
00000460  1d 20 20 20 20 41 44 44  4d 49 20 54 2c 58 2c 59  |.    ADDMI T,X,Y|
00000470  2c 41 53 52 20 23 53 46  2b 31 0d 02 80 1d 20 20  |,ASR #SF+1....  |
00000480  20 20 41 44 44 50 4c 20  59 2c 59 2c 58 2c 41 53  |  ADDPL Y,Y,X,AS|
00000490  52 20 23 53 46 2b 31 0d  02 8a 1d 20 20 20 20 53  |R #SF+1....    S|
000004a0  55 42 4d 49 20 59 2c 59  2c 58 2c 41 53 52 20 23  |UBMI Y,Y,X,ASR #|
000004b0  53 46 2b 31 0d 02 94 1c  20 20 20 20 4c 44 52 20  |SF+1....    LDR |
000004c0  58 2c 5b 54 4e 2c 23 28  53 46 2b 31 29 2a 34 5d  |X,[TN,#(SF+1)*4]|
000004d0  0d 02 9e 1a 20 20 20 20  53 55 42 50 4c 20 48 2c  |....    SUBPL H,|
000004e0  48 2c 58 2c 4c 53 4c 20  23 31 0d 02 a8 07 20 20  |H,X,LSL #1....  |
000004f0  5d 0d 02 b2 05 ed 0d 02  bc 05 cc 0d 02 c6 0a 5b  |]..............[|
00000500  4f 50 54 20 50 0d 02 d0  0e 20 20 4d 4f 56 20 49  |OPT P....  MOV I|
00000510  2c 23 31 0d 02 da 0a 20  20 2e 66 6f 72 0d 02 e4  |,#1....  .for...|
00000520  12 20 20 20 20 41 44 44  20 49 2c 49 2c 23 31 0d  |.    ADD I,I,#1.|
00000530  02 ee 12 20 20 20 20 41  44 44 53 20 48 2c 48 2c  |...    ADDS H,H,|
00000540  58 0d 02 f8 19 20 20 20  20 53 55 42 50 4c 20 58  |X....    SUBPL X|
00000550  2c 54 2c 59 2c 41 53 52  20 49 0d 03 02 19 20 20  |,T,Y,ASR I....  |
00000560  20 20 41 44 44 4d 49 20  58 2c 54 2c 59 2c 41 53  |  ADDMI X,T,Y,AS|
00000570  52 20 49 0d 03 0c 19 20  20 20 20 41 44 44 50 4c  |R I....    ADDPL|
00000580  20 59 2c 59 2c 54 2c 41  53 52 20 49 0d 03 16 19  | Y,Y,T,ASR I....|
00000590  20 20 20 20 53 55 42 4d  49 20 59 2c 59 2c 54 2c  |    SUBMI Y,Y,T,|
000005a0  41 53 52 20 49 0d 03 20  1b 20 20 20 20 4c 44 52  |ASR I.. .    LDR|
000005b0  20 54 2c 5b 54 4e 2c 49  2c 4c 53 4c 20 23 32 5d  | T,[TN,I,LSL #2]|
000005c0  0d 03 2a 1a 20 20 20 20  53 55 42 50 4c 20 48 2c  |..*.    SUBPL H,|
000005d0  48 2c 54 2c 4c 53 4c 20  23 31 0d 03 34 12 20 20  |H,T,LSL #1..4.  |
000005e0  20 20 41 44 44 20 49 2c  49 2c 23 31 0d 03 3e 12  |  ADD I,I,#1..>.|
000005f0  20 20 20 20 41 44 44 53  20 48 2c 48 2c 54 0d 03  |    ADDS H,H,T..|
00000600  48 19 20 20 20 20 53 55  42 50 4c 20 54 2c 58 2c  |H.    SUBPL T,X,|
00000610  59 2c 41 53 52 20 49 0d  03 52 19 20 20 20 20 41  |Y,ASR I..R.    A|
00000620  44 44 4d 49 20 54 2c 58  2c 59 2c 41 53 52 20 49  |DDMI T,X,Y,ASR I|
00000630  0d 03 5c 19 20 20 20 20  41 44 44 50 4c 20 59 2c  |..\.    ADDPL Y,|
00000640  59 2c 58 2c 41 53 52 20  49 0d 03 66 19 20 20 20  |Y,X,ASR I..f.   |
00000650  20 53 55 42 4d 49 20 59  2c 59 2c 58 2c 41 53 52  | SUBMI Y,Y,X,ASR|
00000660  20 49 0d 03 70 1b 20 20  20 20 4c 44 52 20 58 2c  | I..p.    LDR X,|
00000670  5b 54 4e 2c 49 2c 4c 53  4c 20 23 32 5d 0d 03 7a  |[TN,I,LSL #2]..z|
00000680  1a 20 20 20 20 53 55 42  50 4c 20 48 2c 48 2c 58  |.    SUBPL H,H,X|
00000690  2c 4c 53 4c 20 23 31 0d  03 84 11 20 20 20 20 43  |,LSL #1....    C|
000006a0  4d 50 20 49 2c 23 31 35  0d 03 8e 0d 20 20 42 4e  |MP I,#15....  BN|
000006b0  45 20 66 6f 72 0d 03 98  05 5d 0d 03 a2 05 cd 0d  |E for....]......|
000006c0  03 ac 04 0d 03 b6 0a 5b  4f 50 54 20 50 0d 03 c0  |.......[OPT P...|
000006d0  10 20 20 41 44 44 53 20  48 2c 48 2c 58 0d 03 ca  |.  ADDS H,H,X...|
000006e0  0d 20 20 4d 4f 56 20 58  2c 54 0d 03 d4 0e 20 20  |.  MOV X,T....  |
000006f0  43 4d 50 20 48 2c 23 30  0d 03 de 12 20 20 52 53  |CMP H,#0....  RS|
00000700  42 4d 49 20 48 2c 48 2c  23 30 0d 03 e8 15 20 20  |BMI H,H,#0....  |
00000710  4d 4f 56 20 54 2c 59 2c  4c 53 52 20 23 31 36 0d  |MOV T,Y,LSR #16.|
00000720  03 f2 15 20 20 4d 4f 56  20 49 2c 58 2c 4c 53 52  |...  MOV I,X,LSR|
00000730  20 23 31 36 0d 03 fc 0f  20 20 4d 55 4c 20 54 2c  | #16....  MUL T,|
00000740  48 2c 54 0d 04 06 19 20  20 53 55 42 50 4c 20 58  |H,T....  SUBPL X|
00000750  2c 58 2c 54 2c 4c 53 52  20 23 31 32 0d 04 10 19  |,X,T,LSR #12....|
00000760  20 20 41 44 44 4d 49 20  58 2c 58 2c 54 2c 4c 53  |  ADDMI X,X,T,LS|
00000770  52 20 23 31 32 0d 04 1a  0f 20 20 4d 55 4c 20 54  |R #12....  MUL T|
00000780  2c 48 2c 49 0d 04 24 19  20 20 41 44 44 50 4c 20  |,H,I..$.  ADDPL |
00000790  59 2c 59 2c 54 2c 4c 53  52 20 23 31 32 0d 04 2e  |Y,Y,T,LSR #12...|
000007a0  19 20 20 53 55 42 4d 49  20 59 2c 59 2c 54 2c 4c  |.  SUBMI Y,Y,T,L|
000007b0  53 52 20 23 31 32 0d 04  38 0e 20 20 54 53 54 20  |SR #12..8.  TST |
000007c0  46 2c 23 38 0d 04 42 0f  20 20 4d 4f 56 4e 45 20  |F,#8..B.  MOVNE |
000007d0  54 2c 58 0d 04 4c 0f 20  20 4d 4f 56 4e 45 20 58  |T,X..L.  MOVNE X|
000007e0  2c 59 0d 04 56 0f 20 20  4d 4f 56 4e 45 20 59 2c  |,Y..V.  MOVNE Y,|
000007f0  54 0d 04 60 0e 20 20 54  53 54 20 46 2c 23 34 0d  |T..`.  TST F,#4.|
00000800  04 6a 12 20 20 52 53 42  4e 45 20 58 2c 58 2c 23  |.j.  RSBNE X,X,#|
00000810  30 0d 04 74 0e 20 20 54  53 54 20 46 2c 23 32 0d  |0..t.  TST F,#2.|
00000820  04 7e 12 20 20 52 53 42  4e 45 20 59 2c 59 2c 23  |.~.  RSBNE Y,Y,#|
00000830  30 0d 04 88 0f 20 20 53  54 52 20 58 2c 63 6f 73  |0....  STR X,cos|
00000840  0d 04 92 0f 20 20 53 54  52 20 59 2c 73 69 6e 0d  |....  STR Y,sin.|
00000850  04 9c 09 20 20 2e 45 44  0d 04 a6 10 20 20 4d 4f  |...  .ED....  MO|
00000860  56 20 50 43 2c 52 31 34  0d 04 b0 0c 20 20 2e 74  |V PC,R14....  .t|
00000870  61 62 6c 65 0d 04 ba 0a  20 20 a4 56 55 4c 0d 04  |able....  .VUL..|
00000880  c4 05 5d 0d 04 ce 05 ed  0d 04 d8 04 0d 04 e2 05  |..].............|
00000890  f5 0d 04 ec 3f 20 f1 20  27 27 22 43 61 6c 63 75  |....? . ''"Calcu|
000008a0  6c 61 74 69 6e 67 20 31  30 30 30 20 74 69 6d 65  |lating 1000 time|
000008b0  73 20 63 6f 73 28 68 29  20 61 6e 64 20 73 69 6e  |s cos(h) and sin|
000008c0  28 68 29 20 6f 66 20 61  6e 67 6c 65 20 68 22 27  |(h) of angle h"'|
000008d0  0d 04 f6 0f 20 e7 20 55  4e 52 4f 4c 4c 20 8c 0d  |.... . UNROLL ..|
000008e0  05 00 22 20 20 f1 20 22  57 69 74 68 20 75 6e 72  |.."  . "With unr|
000008f0  6f 6c 6c 69 6e 67 20 6d  61 69 6e 20 6c 6f 6f 70  |olling main loop|
00000900  22 0d 05 0a 06 20 cc 0d  05 14 25 20 20 f1 20 22  |".... ....%  . "|
00000910  57 69 74 68 6f 75 74 20  75 6e 72 6f 6c 6c 69 6e  |Without unrollin|
00000920  67 20 6d 61 69 6e 20 6c  6f 6f 70 22 0d 05 1e 06  |g main loop"....|
00000930  20 cd 0d 05 28 32 20 e8  20 22 41 6e 67 6c 65 20  | ...(2 . "Angle |
00000940  68 20 69 6e 20 64 65 67  72 65 65 73 2c 20 61 62  |h in degrees, ab|
00000950  73 28 68 29 20 3c 20 33  36 30 b0 20 22 2c 48 3a  |s(h) < 360. ",H:|
00000960  48 3d b2 48 0d 05 32 11  20 21 61 6e 67 6c 65 3d  |H=.H..2. !angle=|
00000970  48 2a 32 5e 4d 0d 05 3c  24 20 d1 3d 30 3a e3 20  |H*2^M..<$ .=0:. |
00000980  49 25 3d 31 20 b8 20 31  30 30 30 3a d6 20 45 44  |I%=1 . 1000:. ED|
00000990  3a ed 3a 43 4f 52 52 3d  91 0d 05 46 08 20 d1 3d  |:.:CORR=...F. .=|
000009a0  30 0d 05 50 12 20 e3 20  49 25 3d 31 20 b8 20 31  |0..P. . I%=1 . 1|
000009b0  30 30 30 0d 05 5a 0f 20  20 d6 20 63 6f 73 5f 73  |000..Z.  . cos_s|
000009c0  69 6e 0d 05 64 06 20 ed  0d 05 6e 18 20 f1 20 27  |in..d. ...n. . '|
000009d0  22 55 73 69 6e 67 20 6f  77 6e 20 63 6f 64 65 22  |"Using own code"|
000009e0  0d 05 78 1c 20 f1 20 22  54 69 6d 65 3d 20 22 3b  |..x. . "Time= ";|
000009f0  28 91 2d 43 4f 52 52 29  2f 31 30 30 0d 05 82 1a  |(.-CORR)/100....|
00000a00  20 f1 20 22 63 6f 73 28  68 29 3d 20 22 3b 21 63  | . "cos(h)= ";!c|
00000a10  6f 73 2f 32 5e 4d 0d 05  8c 1a 20 f1 20 22 73 69  |os/2^M.... . "si|
00000a20  6e 28 68 29 3d 20 22 3b  21 73 69 6e 2f 32 5e 4d  |n(h)= ";!sin/2^M|
00000a30  0d 05 96 26 20 d1 3d 30  3a e3 20 49 25 3d 31 20  |...& .=0:. I%=1 |
00000a40  b8 20 31 30 30 30 3a 41  25 3d 94 48 25 3a ed 3a  |. 1000:A%=.H%:.:|
00000a50  43 4f 52 52 3d 91 0d 05  a0 08 20 d1 3d 30 0d 05  |CORR=..... .=0..|
00000a60  aa 12 20 e3 20 49 25 3d  31 20 b8 20 31 30 30 30  |.. . I%=1 . 1000|
00000a70  0d 05 b4 0a 20 20 41 3d  9b 48 0d 05 be 0a 20 20  |....  A=.H....  |
00000a80  41 3d b5 48 0d 05 c8 06  20 ed 0d 05 d2 16 20 f1  |A=.H.... ..... .|
00000a90  20 27 22 55 73 69 6e 67  20 62 61 73 69 63 20 22  | '"Using basic "|
00000aa0  0d 05 dc 1c 20 f1 20 22  54 69 6d 65 3d 20 22 3b  |.... . "Time= ";|
00000ab0  28 91 2d 43 4f 52 52 29  2f 31 30 30 0d 05 e6 14  |(.-CORR)/100....|
00000ac0  20 f1 20 22 63 6f 73 28  68 29 3d 20 22 3b 9b 48  | . "cos(h)= ";.H|
00000ad0  0d 05 f0 14 20 f1 20 22  73 69 6e 28 68 29 3d 20  |.... . "sin(h)= |
00000ae0  22 3b b5 48 0d 05 fa 07  fd 20 a3 0d 06 04 04 0d  |";.H..... ......|
00000af0  06 0e 0a dd 20 a4 56 55  4c 0d 06 18 0f e3 20 4a  |.... .VUL..... J|
00000b00  3d 30 20 b8 20 32 2a 4d  0d 06 22 0a 5b 4f 50 54  |=0 . 2*M..".[OPT|
00000b10  20 50 0d 06 2c 15 45 51  55 44 20 99 28 31 2f 32  | P..,.EQUD .(1/2|
00000b20  5e 4a 29 2a 32 5e 4d 0d  06 36 05 5d 0d 06 40 05  |^J)*2^M..6.]..@.|
00000b30  ed 0d 06 4a 07 3d 22 22  0d ff                    |...J.=""..|
00000b3a