Home » Archimedes archive » Micro User » MU 1991-07.adf » PD-Stuff » Fractals/!AFGSprite/FPLib

Fractals/!AFGSprite/FPLib

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 » Micro User » MU 1991-07.adf » PD-Stuff
Filename: Fractals/!AFGSprite/FPLib
Read OK:
File size: 186C bytes
Load address: 0000
Exec address: 0000
File contents
   10REM > FPLib v1.10 May 1991
   20REM Floating Point Assembler
   30REM LEN Mike Curnow
   40REM Initialise Floating Point
   50DEFPROCfpinit:LOCAL I%
   60*RMENSURE FPEMULATOR 1.00 RMLOAD SYSTEM:MODULES.FPEMULATOR
   70F0=0:F1=1:F2=2:F3=3:F4=4:F5=5:F6=6:F7=7
   80R0=0:R1=1:R2=2:R3=3:R4=4:R5=5:R6=6:R7=7:R8=8:R9=9:R10=10:R11=11:R12=12:R13=13:R14=14:R15=15:PC=15
   90REMLOCAL DATA
  100RESTORE +7
  110fpmax=40
  120DIM fp$(fpmax),fo%(fpmax),ft%(fpmax)
  130FOR I%=0 TO fpmax
  140READ fp$(I%),fo%(I%),ft%(I%)
  150NEXT:REM:RESTORE DATA
  160ENDPROC
  170REM Mnemonic,Opcode,Type
  180DATA LDF,&0C100100,0
  190DATA STF,&0C000100,0
  200DATA ADF,&0E000100,1
  210DATA MUF,&0E100100,1
  220DATA SUF,&0E200100,1
  230DATA RSF,&0E300100,1
  240DATA DVF,&0E400100,1
  250DATA RDF,&0E500100,1
  260DATA POW,&0E600100,1
  270DATA RPW,&0E700100,1
  280DATA RMF,&0E800100,1
  290DATA FML,&0E900100,1
  300DATA FDV,&0EA00100,1
  310DATA FRD,&0EB00100,1
  320DATA POL,&0EC00100,1
  330DATA MVF,&0E008100,2
  340DATA MNF,&0E108100,2
  350DATA ABS,&0E208100,2
  360DATA RND,&0E308100,2
  370DATA SQT,&0E408100,2
  380DATA LOG,&0E508100,2
  390DATA LGN,&0E608100,2
  400DATA EXP,&0E708100,2
  410DATA SIN,&0E808100,2
  420DATA COS,&0E908100,2
  430DATA TAN,&0EA08100,2
  440DATA ASN,&0EB08100,2
  450DATA ACS,&0EC08100,2
  460DATA ATN,&0ED08100,2
  470DATA FLT,&0E000110,3
  480DATA FIX,&0E100110,4
  490DATA WFS,&0E200110,5
  500DATA RFS,&0E300110,5
  510DATA WFC,&0E400110,5
  520DATA RFC,&0E500110,5
  530DATA CMF,&0E90F110,6
  540DATA CNF,&0EB0F110,6
  550DATA CME,&0ED0F110,6
  560DATA CNE,&0EF0F110,6
  570DATA DFP,0,7
  580REM End Marker
  590DATA ZZZ,0,0
  600REM------------------------
  610REM Generate floating point
  620DEFFNfp(i$)
  630ONERROR PRINT i$:REPORT:END
  640LOCAL o$,I%,i%,p%,t%,s$,fr%,a%,a,c%,f$
  650f$=i$:o$=FNfpstrip(3)
  660I%=-1:REPEATI%+=1:UNTILo$=fp$(I%) OR I%=fpmax
  670IF I%=fpmax PROCfperr("Bad FP Inst") ELSE i%=fo%(I%):t%=ft%(I%)
  680IF (A% AND 3)=0 AND t%<7 P%+=4:O%+=4:=0
  690IF (A% AND 3)=0 AND t%=7 P%+=12:O%+=12:=0
  700IF t%=7 PROCfpdfp:=0
  710IF LEFT$(f$,1)=" " c%=%1110 ELSE c%=FNfpcond
  720i%+=c%<<28
  730IF LEFT$(f$,1)=" " p%=0 ELSE p%=FNfpprec
  740IF LEFT$(f$,1)=" " s$=FNfpstrip(1) ELSE PROCfperr("Syntax")
  750i%+=p%
  760CASE t% OF
  770  WHEN 0:PROCfpt0
  780  WHEN 1:PROCfpt1
  790  WHEN 2:PROCfpt2
  800  WHEN 3:PROCfpt3
  810  WHEN 4:PROCfpt4
  820  WHEN 5:PROCfpt5
  830  WHEN 6:PROCfpt6
  840ENDCASE
  850!P%=i%:P%+=4:O%+=4
  860=0
  870
  880REM LDF/STF
  890DEFPROCfpt0
  900PROCfpreg:i%+=fr%<<12:i%+=3<<23
  910IF LEFT$(f$,1)="[" THEN
  920  s$=FNfpstrip(1)
  930  PROCfpreg:i%+=fr%<<16
  940  IF s$="," THEN
  950    s$=FNfpstrip(1):IF s$<>"#" PROCfperr("Bad Address offset")
  960    a%=EVAL(f$)
  970    IF a%<0 a%=0-a%:i%-=1<<23
  980    IF a%>1024 OR (a%AND3) PROCfperr("Bad Address offset")
  990    i%+=a%>>2
 1000    IF RIGHT$(f$,1)="!" i%+=1<<21
 1010  ELSE
 1020    s$=FNfpstrip(1)
 1030    CASE s$ OF
 1040       WHEN "!":i%+=1<<21
 1050       WHEN "":
 1060       WHEN ",":s$=FNfpstrip(1)
 1070       IF s$<>"#" PROCfperr("Bad Address")
 1080       a%=EVAL(f$)
 1090       IF a%<0 a%=0-a%:i%-=1<<23
 1100       IF a%>1024 OR (a%AND3) PROCfperr("Bad Address")
 1110       i%+=a%>>2:i%-=1<<24
 1120       OTHERWISE:PROCfperr("Syntax error")
 1130    ENDCASE
 1140  ENDIF
 1150ELSE
 1160  i%+=15<<16
 1170  fr%=EVAL(f$):a%=P%+8-fr%
 1180  IF a%<0 a%=0-a% ELSE i%-=1<<23
 1190  IF a%>1024 OR (a%AND3) PROCfperr("Bad Address")
 1200  i%+=a%>>2
 1210ENDIF
 1220ENDPROC
 1230
 1240REM ADF..POL
 1250DEFPROCfpt1
 1260PROCfpreg:i%+=fr%<<12
 1270PROCfpreg:i%+=fr%<<16
 1280PROCfpfm
 1290ENDPROC
 1300
 1310REM MVF..ATN
 1320DEFPROCfpt2
 1330PROCfpreg:i%+=fr%<<12
 1340PROCfpfm
 1350ENDPROC
 1360
 1370REM FLT
 1380DEFPROCfpt3
 1390PROCfpreg:i%+=fr%<<16
 1400PROCfpreg:i%+=fr%<<12
 1410ENDPROC
 1420
 1430REM FIX
 1440DEFPROCfpt4
 1450PROCfpreg:i%+=fr%<<12
 1460PROCfpreg:i%+=fr%
 1470ENDPROC
 1480
 1490REM WFS..RFC
 1500DEFPROCfpt5
 1510PROCfpreg:i%+=fr%<<12
 1520ENDPROC
 1530
 1540REM CMF..CNE
 1550DEFPROCfpt6
 1560PROCfpreg:i%+=fr%<<16
 1570PROCfpfm
 1580ENDPROC
 1590
 1600REM DFP packed value
 1610DEFPROCfpdfp
 1620LOCAL @%:@%=&101090A
 1630c$=FNfpstrip(1)
 1640I%=INSTR(f$,"E"):IF I%=0 f$=STR$(EVAL(f$))
 1650IF LEFT$(f$,1)="0" !P%=0:P%!4=0:P%!8=0:P%+=12:O%+=12:ENDPROC
 1660IF LEFT$(f$,1)="-" s%=2:s$=FNfpstrip(1) ELSE s%=0
 1670I%=INSTR(f$,"E"):IF MID$(f$,I%+1,1)="-" s%+=1:e$=MID$(f$,I%+2) ELSE e$=MID$(f$,I%+1)
 1680@%=&090A:e$=RIGHT$("00000"+STR$(EVAL(e$)),5)
 1690f$=LEFT$(f$,I%-1):f$=LEFT$(LEFT$(f$,1)+MID$(f$,3)+"0000000000000000000",19)
 1700f$=e$+f$
 1710i%=FNfppd(LEFT$(f$,8)):i%+=s%<<30:!P%=i%
 1720P%!4=FNfppd(MID$(f$,9,8))
 1730P%!8=FNfppd(MID$(f$,17,8))
 1740P%+=12:O%+=12
 1750ENDPROC
 1760DEFFNfppd(n$)
 1770i%=0:FOR I%=1 TO 8
 1780a%=EVAL(MID$(n$,I%,1)):i%=(i%<<4)+a%
 1790NEXT
 1800=i%
 1810
 1820DEFPROCfpreg
 1830fr%=EVAL(f$)
 1840REPEAT:s$=FNfpstrip(1):UNTIL s$="" OR s$="," OR s$="]"
 1850ENDPROC
 1860
 1870DEFPROCfpfm
 1880IF LEFT$(f$,1)="#" THEN
 1890  i%+=8
 1900  s$=FNfpstrip(1)
 1910  a=EVAL(f$)
 1920  CASE a OF
 1930    WHEN 0,1,2,3,4,5:i%+=a
 1940    WHEN 0.5:i%+=6
 1950    WHEN 10:i%+=7
 1960    OTHERWISE PROCfperr("Bad Constant")
 1970  ENDCASE
 1980ELSE
 1990  PROCfpreg:i%+=fr%
 2000ENDIF:ENDPROC
 2010
 2020DEFFNfpcond:LOCAL c$
 2030c$=LEFT$(f$,2)
 2040IF c$="S " OR c$="D " OR c$="E " OR c$="P " =%1110
 2050c$=FNfpstrip(2)
 2060IF c$="EQ" =%0000
 2070IF c$="NE" =%0001
 2080IF c$="CS" =%0010
 2090IF c$="CC" =%0011
 2100IF c$="MI" =%0100
 2110IF c$="PL" =%0101
 2120IF c$="VS" =%0110
 2130IF c$="VC" =%0111
 2140IF c$="HI" =%1000
 2150IF c$="LS" =%1001
 2160IF c$="GE" =%1010
 2170IF c$="LT" =%1011
 2180IF c$="GT" =%1100
 2190IF c$="LE" =%1101
 2200IF c$="AL" =%1110
 2210IF c$="NV" =%1111
 2220PROCfperr("Bad Condition")
 2230
 2240DEFFNfpprec:LOCAL p$,p%
 2250p$=FNfpstrip(1)
 2260IF t%=0 THEN
 2270  IF p$="S" p%=0
 2280  IF p$="D" p%=&008000
 2290  IF p$="E" p%=&400000
 2300  IF p$="P" p%=&408000
 2310ELSE
 2320  IF p$="S" p%=0
 2330  IF p$="D" p%=&000080
 2340  IF p$="E" p%=&080000
 2350  IF p$="P" p%=&080080
 2360ENDIF
 2370=p%
 2380
 2390DEFFNfpstrip(N%)
 2400LOCAL s$:s$=LEFT$(f$,N%)
 2410f$=MID$(f$,N%+1):=s$
 2420
 2430DEFPROCfperr(e$)
 2440ERROR 0,e$+" :"+i$
 2450
 2460REM Optional conversion routines: 256 bytes required at addr%
 2470DEFPROCfpconv(addr%)
 2480FOR A%=0 TO 2 STEP 2
 2490P%=addr%
 2500[OPT A%
 2510; Double (@ R0) to String (26 bytes @ R1)
 2520.fpdblstr
 2530STMFD R13!,{R0-R12,R14}
 2540FNfp("LDFD F0,[R0]")
 2550FNfp("STFP F0,packed")
 2560ADR R2,packed
 2570BL rotate
 2580ADR R2,packed+4
 2590BL rotate
 2600ADR R2,packed+8
 2610BL rotate
 2620LDRB R2,packed
 2630MOV R3,#ASC" "
 2640TST R2,#&80
 2650MOVNE R3,#ASC"-"
 2660STRB R3,[R1],#1
 2670MOV R4,R1
 2680MOV R5,#18 ; No.digits
 2690ADR R6,packed+2
 2700.unpack
 2710LDRB R7,[R6],#1
 2720MOV R8,R7,LSR #4
 2730ADD R8,R8,#ASC"0"
 2740STRB R8,[R4],#1
 2750AND R7,R7,#%1111
 2760ADD R7,R7,#ASC"0"
 2770STRB R7,[R4],#1
 2780SUBS R5,R5,#2
 2790BNE unpack
 2800LDRB R8,[R1] ; e0
 2810LDRB R7,[R1,#1] ; d18
 2820STRB R7,[R1]
 2830MOV R7,#ASC"."
 2840STRB R7,[R1,#1]
 2850MOV R7,#ASC"e"
 2860STRB R7,[R4],#1
 2870LDRB R2,packed
 2880MOV R3,#ASC"+"
 2890TST R2,#&40
 2900MOVNE R3,#ASC"-"
 2910STRB R3,[R4],#1
 2920LDRB R2,packed+1
 2930MOV R3,R2,LSR #4
 2940ADD R3,R3,#ASC"0"
 2950STRB R3,[R4],#1
 2960AND R2,R2,#%1111
 2970ADD R2,R2,#ASC"0"
 2980STRB R2,[R4],#1
 2990STRB R8,[R4],#1 ;e0
 3000MOV R3,#13
 3010STRB R3,[R4],#1
 3020LDMFD R13!,{R0-R12,PC}
 3030.rotate
 3040LDR R3,[R2]
 3050STRB R3,[R2,#3]
 3060MOV R3,R3,ROR #8
 3070STRB R3,[R2,#2]
 3080MOV R3,R3,ROR #8
 3090STRB R3,[R2,#1]
 3100MOV R3,R3,ROR #8
 3110STRB R3,[R2,#0]
 3120MOV PC,R14
 3130.packed FNfp("DFP 0")
 3140]
 3150NEXT
 3160ENDPROC

� > FPLib v1.10 May 1991
� Floating Point Assembler
� � Mike Curnow
(� Initialise Floating Point
2��fpinit:� I%
<>*RMENSURE FPEMULATOR 1.00 RMLOAD SYSTEM:MODULES.FPEMULATOR
F+F0=0:F1=1:F2=2:F3=3:F4=4:F5=5:F6=6:F7=7
PeR0=0:R1=1:R2=2:R3=3:R4=4:R5=5:R6=6:R7=7:R8=8:R9=9:R10=10:R11=11:R12=12:R13=13:R14=14:R15=15:PC=15
Z�LOCAL DATA
d� +7
nfpmax=40
x&� fp$(fpmax),fo%(fpmax),ft%(fpmax)
�� I%=0 � fpmax
�� fp$(I%),fo%(I%),ft%(I%)
��:�:RESTORE DATA
��
�� Mnemonic,Opcode,Type
�� LDF,&0C100100,0
�� STF,&0C000100,0
�� ADF,&0E000100,1
�� MUF,&0E100100,1
�� SUF,&0E200100,1
�� RSF,&0E300100,1
�� DVF,&0E400100,1
�� RDF,&0E500100,1
� POW,&0E600100,1
� RPW,&0E700100,1
� RMF,&0E800100,1
"� FML,&0E900100,1
,� FDV,&0EA00100,1
6� FRD,&0EB00100,1
@� POL,&0EC00100,1
J� MVF,&0E008100,2
T� MNF,&0E108100,2
^� ABS,&0E208100,2
h� RND,&0E308100,2
r� SQT,&0E408100,2
|� LOG,&0E508100,2
�� LGN,&0E608100,2
�� EXP,&0E708100,2
�� SIN,&0E808100,2
�� COS,&0E908100,2
�� TAN,&0EA08100,2
�� ASN,&0EB08100,2
�� ACS,&0EC08100,2
�� ATN,&0ED08100,2
�� FLT,&0E000110,3
�� FIX,&0E100110,4
�� WFS,&0E200110,5
�� RFS,&0E300110,5
�� WFC,&0E400110,5
� RFC,&0E500110,5
� CMF,&0E90F110,6
� CNF,&0EB0F110,6
&� CME,&0ED0F110,6
0� CNE,&0EF0F110,6
:
� DFP,0,7
D� End Marker
N
� ZZZ,0,0
X�------------------------
b� Generate floating point
lݤfp(i$)
v� � i$:�:�
�&� o$,I%,i%,p%,t%,s$,fr%,a%,a,c%,f$
�f$=i$:o$=�fpstrip(3)
�'I%=-1:�I%+=1:�o$=fp$(I%) � I%=fpmax
�<� I%=fpmax �fperr("Bad FP Inst") � i%=fo%(I%):t%=ft%(I%)
�&� (A% � 3)=0 � t%<7 P%+=4:O%+=4:=0
�(� (A% � 3)=0 � t%=7 P%+=12:O%+=12:=0
�� t%=7 �fpdfp:=0
�&� �f$,1)=" " c%=%1110 � c%=�fpcond
�i%+=c%<<28
�"� �f$,1)=" " p%=0 � p%=�fpprec
�2� �f$,1)=" " s$=�fpstrip(1) � �fperr("Syntax")
�
i%+=p%
�Ȏ t% �
  � 0:�fpt0
  � 1:�fpt1
  � 2:�fpt2
   � 3:�fpt3
*  � 4:�fpt4
4  � 5:�fpt5
>  � 6:�fpt6
H�
R!P%=i%:P%+=4:O%+=4
\=0
f
p
� LDF/STF
z
��fpt0
� �fpreg:i%+=fr%<<12:i%+=3<<23
�� �f$,1)="[" �
�  s$=�fpstrip(1)
�  �fpreg:i%+=fr%<<16
�  � s$="," �
�=    s$=�fpstrip(1):� s$<>"#" �fperr("Bad Address offset")
�    a%=�(f$)
�     � a%<0 a%=0-a%:i%-=1<<23
�7    � a%>1024 � (a%�3) �fperr("Bad Address offset")
�    i%+=a%>>2
�    � �f$,1)="!" i%+=1<<21
�  �
�    s$=�fpstrip(1)
    Ȏ s$ �
       � "!":i%+=1<<21
       � "":
$       � ",":s$=�fpstrip(1)
.*       � s$<>"#" �fperr("Bad Address")
8       a%=�(f$)
B#       � a%<0 a%=0-a%:i%-=1<<23
L3       � a%>1024 � (a%�3) �fperr("Bad Address")
V       i%+=a%>>2:i%-=1<<24
`#       :�fperr("Syntax error")
j	    �
t  �
~�
�  i%+=15<<16
�  fr%=�(f$):a%=P%+8-fr%
�   � a%<0 a%=0-a% � i%-=1<<23
�.  � a%>1024 � (a%�3) �fperr("Bad Address")
�  i%+=a%>>2
��
��
�
�� ADF..POL
�
��fpt1
��fpreg:i%+=fr%<<12
��fpreg:i%+=fr%<<16
	�fpfm

�

� MVF..ATN
(
��fpt2
2�fpreg:i%+=fr%<<12
<	�fpfm
F�
P
Z	� FLT
d
��fpt3
n�fpreg:i%+=fr%<<16
x�fpreg:i%+=fr%<<12
��
�
�	� FIX
�
��fpt4
��fpreg:i%+=fr%<<12
��fpreg:i%+=fr%
��
�
�� WFS..RFC
�
��fpt5
��fpreg:i%+=fr%<<12
��
�
� CMF..CNE

��fpt6
�fpreg:i%+=fr%<<16
"	�fpfm
,�
6
@� DFP packed value
J��fpdfp
T� @%:@%=&101090A
^c$=�fpstrip(1)
h"I%=�f$,"E"):� I%=0 f$=�(�(f$))
r4� �f$,1)="0" !P%=0:P%!4=0:P%!8=0:P%+=12:O%+=12:�
|+� �f$,1)="-" s%=2:s$=�fpstrip(1) � s%=0
�CI%=�f$,"E"):� �f$,I%+1,1)="-" s%+=1:e$=�f$,I%+2) � e$=�f$,I%+1)
�$@%=&090A:e$=�"00000"+�(�(e$)),5)
�<f$=�f$,I%-1):f$=��f$,1)+�f$,3)+"0000000000000000000",19)
�f$=e$+f$
�&i%=�fppd(�f$,8)):i%+=s%<<30:!P%=i%
�P%!4=�fppd(�f$,9,8))
�P%!8=�fppd(�f$,17,8))
�P%+=12:O%+=12
��
�ݤfppd(n$)
�i%=0:� I%=1 � 8
�!a%=�(�n$,I%,1)):i%=(i%<<4)+a%
��
=i%

��fpreg
&
fr%=�(f$)
0.�:s$=�fpstrip(1):� s$="" � s$="," � s$="]"
:�
D
N
��fpfm
X� �f$,1)="#" �
b  i%+=8
l  s$=�fpstrip(1)
v
  a=�(f$)
�  Ȏ a �
�    � 0,1,2,3,4,5:i%+=a
�    � 0.5:i%+=6
�    � 10:i%+=7
�      �fperr("Bad Constant")
�  �
��
�  �fpreg:i%+=fr%
��:�
�
�ݤfpcond:� c$
�
c$=�f$,2)
�2� c$="S " � c$="D " � c$="E " � c$="P " =%1110
c$=�fpstrip(2)
� c$="EQ" =%0000
� c$="NE" =%0001
 � c$="CS" =%0010
*� c$="CC" =%0011
4� c$="MI" =%0100
>� c$="PL" =%0101
H� c$="VS" =%0110
R� c$="VC" =%0111
\� c$="HI" =%1000
f� c$="LS" =%1001
p� c$="GE" =%1010
z� c$="LT" =%1011
�� c$="GT" =%1100
�� c$="LE" =%1101
�� c$="AL" =%1110
�� c$="NV" =%1111
��fperr("Bad Condition")
�
�ݤfpprec:� p$,p%
�p$=�fpstrip(1)
�� t%=0 �
�  � p$="S" p%=0
�  � p$="D" p%=&008000
�  � p$="E" p%=&400000
�  � p$="P" p%=&408000
	�
	  � p$="S" p%=0
	  � p$="D" p%=&000080
	$  � p$="E" p%=&080000
	.  � p$="P" p%=&080080
	8�
	B=p%
	L
	Vݤfpstrip(N%)
	`� s$:s$=�f$,N%)
	jf$=�f$,N%+1):=s$
	t
	~��fperr(e$)
	�� 0,e$+" :"+i$
	�
	�?� Optional conversion routines: 256 bytes required at addr%
	���fpconv(addr%)
	�� A%=0 � 2 � 2
	�P%=addr%
	�[OPT A%
	�-; Double (@ R0) to String (26 bytes @ R1)
	�
.fpdblstr
	�STMFD R13!,{R0-R12,R14}
	��fp("LDFD F0,[R0]")
	��fp("STFP F0,packed")
ADR R2,packed


BL rotate
ADR R2,packed+4

BL rotate
(ADR R2,packed+8
2
BL rotate
<LDRB R2,packed
FMOV R3,#�" "
PTST R2,#&80
ZMOVNE R3,#�"-"
dSTRB R3,[R1],#1
n
MOV R4,R1
xMOV R5,#18 ; No.digits
�ADR R6,packed+2
�.unpack
�LDRB R7,[R6],#1
�MOV R8,R7,LSR #4
�ADD R8,R8,#�"0"
�STRB R8,[R4],#1
�� R7,R7,#%1111
�ADD R7,R7,#�"0"
�STRB R7,[R4],#1
�SUBS R5,R5,#2
�BNE unpack
�LDRB R8,[R1] ; e0
�LDRB R7,[R1,#1] ; d18
STRB R7,[R1]
MOV R7,#�"."
STRB R7,[R1,#1]
"MOV R7,#�"e"
,STRB R7,[R4],#1
6LDRB R2,packed
@MOV R3,#�"+"
JTST R2,#&40
TMOVNE R3,#�"-"
^STRB R3,[R4],#1
hLDRB R2,packed+1
rMOV R3,R2,LSR #4
|ADD R3,R3,#�"0"
�STRB R3,[R4],#1
�� R2,R2,#%1111
�ADD R2,R2,#�"0"
�STRB R2,[R4],#1
�STRB R8,[R4],#1 ;e0
�MOV R3,#13
�STRB R3,[R4],#1
�LDMFD R13!,{R0-R12,PC}
�.rotate
�LDR R3,[R2]
�STRB R3,[R2,#3]
�MOV R3,R3,ROR #8
�STRB R3,[R2,#2]
MOV R3,R3,ROR #8
STRB R3,[R2,#1]
MOV R3,R3,ROR #8
&STRB R3,[R2,#0]
0MOV PC,R14
:.packed �fp("DFP 0")
D]
N�
X�
�
00000000  0d 00 0a 1c f4 20 3e 20  46 50 4c 69 62 20 76 31  |..... > FPLib v1|
00000010  2e 31 30 20 4d 61 79 20  31 39 39 31 0d 00 14 1e  |.10 May 1991....|
00000020  f4 20 46 6c 6f 61 74 69  6e 67 20 50 6f 69 6e 74  |. Floating Point|
00000030  20 41 73 73 65 6d 62 6c  65 72 0d 00 1e 13 f4 20  | Assembler..... |
00000040  a9 20 4d 69 6b 65 20 43  75 72 6e 6f 77 0d 00 28  |. Mike Curnow..(|
00000050  1f f4 20 49 6e 69 74 69  61 6c 69 73 65 20 46 6c  |.. Initialise Fl|
00000060  6f 61 74 69 6e 67 20 50  6f 69 6e 74 0d 00 32 11  |oating Point..2.|
00000070  dd f2 66 70 69 6e 69 74  3a ea 20 49 25 0d 00 3c  |..fpinit:. I%..<|
00000080  3e 2a 52 4d 45 4e 53 55  52 45 20 46 50 45 4d 55  |>*RMENSURE FPEMU|
00000090  4c 41 54 4f 52 20 31 2e  30 30 20 52 4d 4c 4f 41  |LATOR 1.00 RMLOA|
000000a0  44 20 53 59 53 54 45 4d  3a 4d 4f 44 55 4c 45 53  |D SYSTEM:MODULES|
000000b0  2e 46 50 45 4d 55 4c 41  54 4f 52 0d 00 46 2b 46  |.FPEMULATOR..F+F|
000000c0  30 3d 30 3a 46 31 3d 31  3a 46 32 3d 32 3a 46 33  |0=0:F1=1:F2=2:F3|
000000d0  3d 33 3a 46 34 3d 34 3a  46 35 3d 35 3a 46 36 3d  |=3:F4=4:F5=5:F6=|
000000e0  36 3a 46 37 3d 37 0d 00  50 65 52 30 3d 30 3a 52  |6:F7=7..PeR0=0:R|
000000f0  31 3d 31 3a 52 32 3d 32  3a 52 33 3d 33 3a 52 34  |1=1:R2=2:R3=3:R4|
00000100  3d 34 3a 52 35 3d 35 3a  52 36 3d 36 3a 52 37 3d  |=4:R5=5:R6=6:R7=|
00000110  37 3a 52 38 3d 38 3a 52  39 3d 39 3a 52 31 30 3d  |7:R8=8:R9=9:R10=|
00000120  31 30 3a 52 31 31 3d 31  31 3a 52 31 32 3d 31 32  |10:R11=11:R12=12|
00000130  3a 52 31 33 3d 31 33 3a  52 31 34 3d 31 34 3a 52  |:R13=13:R14=14:R|
00000140  31 35 3d 31 35 3a 50 43  3d 31 35 0d 00 5a 0f f4  |15=15:PC=15..Z..|
00000150  4c 4f 43 41 4c 20 44 41  54 41 0d 00 64 08 f7 20  |LOCAL DATA..d.. |
00000160  2b 37 0d 00 6e 0c 66 70  6d 61 78 3d 34 30 0d 00  |+7..n.fpmax=40..|
00000170  78 26 de 20 66 70 24 28  66 70 6d 61 78 29 2c 66  |x&. fp$(fpmax),f|
00000180  6f 25 28 66 70 6d 61 78  29 2c 66 74 25 28 66 70  |o%(fpmax),ft%(fp|
00000190  6d 61 78 29 0d 00 82 12  e3 20 49 25 3d 30 20 b8  |max)..... I%=0 .|
000001a0  20 66 70 6d 61 78 0d 00  8c 1d f3 20 66 70 24 28  | fpmax..... fp$(|
000001b0  49 25 29 2c 66 6f 25 28  49 25 29 2c 66 74 25 28  |I%),fo%(I%),ft%(|
000001c0  49 25 29 0d 00 96 14 ed  3a f4 3a 52 45 53 54 4f  |I%).....:.:RESTO|
000001d0  52 45 20 44 41 54 41 0d  00 a0 05 e1 0d 00 aa 1a  |RE DATA.........|
000001e0  f4 20 4d 6e 65 6d 6f 6e  69 63 2c 4f 70 63 6f 64  |. Mnemonic,Opcod|
000001f0  65 2c 54 79 70 65 0d 00  b4 15 dc 20 4c 44 46 2c  |e,Type..... LDF,|
00000200  26 30 43 31 30 30 31 30  30 2c 30 0d 00 be 15 dc  |&0C100100,0.....|
00000210  20 53 54 46 2c 26 30 43  30 30 30 31 30 30 2c 30  | STF,&0C000100,0|
00000220  0d 00 c8 15 dc 20 41 44  46 2c 26 30 45 30 30 30  |..... ADF,&0E000|
00000230  31 30 30 2c 31 0d 00 d2  15 dc 20 4d 55 46 2c 26  |100,1..... MUF,&|
00000240  30 45 31 30 30 31 30 30  2c 31 0d 00 dc 15 dc 20  |0E100100,1..... |
00000250  53 55 46 2c 26 30 45 32  30 30 31 30 30 2c 31 0d  |SUF,&0E200100,1.|
00000260  00 e6 15 dc 20 52 53 46  2c 26 30 45 33 30 30 31  |.... RSF,&0E3001|
00000270  30 30 2c 31 0d 00 f0 15  dc 20 44 56 46 2c 26 30  |00,1..... DVF,&0|
00000280  45 34 30 30 31 30 30 2c  31 0d 00 fa 15 dc 20 52  |E400100,1..... R|
00000290  44 46 2c 26 30 45 35 30  30 31 30 30 2c 31 0d 01  |DF,&0E500100,1..|
000002a0  04 15 dc 20 50 4f 57 2c  26 30 45 36 30 30 31 30  |... POW,&0E60010|
000002b0  30 2c 31 0d 01 0e 15 dc  20 52 50 57 2c 26 30 45  |0,1..... RPW,&0E|
000002c0  37 30 30 31 30 30 2c 31  0d 01 18 15 dc 20 52 4d  |700100,1..... RM|
000002d0  46 2c 26 30 45 38 30 30  31 30 30 2c 31 0d 01 22  |F,&0E800100,1.."|
000002e0  15 dc 20 46 4d 4c 2c 26  30 45 39 30 30 31 30 30  |.. FML,&0E900100|
000002f0  2c 31 0d 01 2c 15 dc 20  46 44 56 2c 26 30 45 41  |,1..,.. FDV,&0EA|
00000300  30 30 31 30 30 2c 31 0d  01 36 15 dc 20 46 52 44  |00100,1..6.. FRD|
00000310  2c 26 30 45 42 30 30 31  30 30 2c 31 0d 01 40 15  |,&0EB00100,1..@.|
00000320  dc 20 50 4f 4c 2c 26 30  45 43 30 30 31 30 30 2c  |. POL,&0EC00100,|
00000330  31 0d 01 4a 15 dc 20 4d  56 46 2c 26 30 45 30 30  |1..J.. MVF,&0E00|
00000340  38 31 30 30 2c 32 0d 01  54 15 dc 20 4d 4e 46 2c  |8100,2..T.. MNF,|
00000350  26 30 45 31 30 38 31 30  30 2c 32 0d 01 5e 15 dc  |&0E108100,2..^..|
00000360  20 41 42 53 2c 26 30 45  32 30 38 31 30 30 2c 32  | ABS,&0E208100,2|
00000370  0d 01 68 15 dc 20 52 4e  44 2c 26 30 45 33 30 38  |..h.. RND,&0E308|
00000380  31 30 30 2c 32 0d 01 72  15 dc 20 53 51 54 2c 26  |100,2..r.. SQT,&|
00000390  30 45 34 30 38 31 30 30  2c 32 0d 01 7c 15 dc 20  |0E408100,2..|.. |
000003a0  4c 4f 47 2c 26 30 45 35  30 38 31 30 30 2c 32 0d  |LOG,&0E508100,2.|
000003b0  01 86 15 dc 20 4c 47 4e  2c 26 30 45 36 30 38 31  |.... LGN,&0E6081|
000003c0  30 30 2c 32 0d 01 90 15  dc 20 45 58 50 2c 26 30  |00,2..... EXP,&0|
000003d0  45 37 30 38 31 30 30 2c  32 0d 01 9a 15 dc 20 53  |E708100,2..... S|
000003e0  49 4e 2c 26 30 45 38 30  38 31 30 30 2c 32 0d 01  |IN,&0E808100,2..|
000003f0  a4 15 dc 20 43 4f 53 2c  26 30 45 39 30 38 31 30  |... COS,&0E90810|
00000400  30 2c 32 0d 01 ae 15 dc  20 54 41 4e 2c 26 30 45  |0,2..... TAN,&0E|
00000410  41 30 38 31 30 30 2c 32  0d 01 b8 15 dc 20 41 53  |A08100,2..... AS|
00000420  4e 2c 26 30 45 42 30 38  31 30 30 2c 32 0d 01 c2  |N,&0EB08100,2...|
00000430  15 dc 20 41 43 53 2c 26  30 45 43 30 38 31 30 30  |.. ACS,&0EC08100|
00000440  2c 32 0d 01 cc 15 dc 20  41 54 4e 2c 26 30 45 44  |,2..... ATN,&0ED|
00000450  30 38 31 30 30 2c 32 0d  01 d6 15 dc 20 46 4c 54  |08100,2..... FLT|
00000460  2c 26 30 45 30 30 30 31  31 30 2c 33 0d 01 e0 15  |,&0E000110,3....|
00000470  dc 20 46 49 58 2c 26 30  45 31 30 30 31 31 30 2c  |. FIX,&0E100110,|
00000480  34 0d 01 ea 15 dc 20 57  46 53 2c 26 30 45 32 30  |4..... WFS,&0E20|
00000490  30 31 31 30 2c 35 0d 01  f4 15 dc 20 52 46 53 2c  |0110,5..... RFS,|
000004a0  26 30 45 33 30 30 31 31  30 2c 35 0d 01 fe 15 dc  |&0E300110,5.....|
000004b0  20 57 46 43 2c 26 30 45  34 30 30 31 31 30 2c 35  | WFC,&0E400110,5|
000004c0  0d 02 08 15 dc 20 52 46  43 2c 26 30 45 35 30 30  |..... RFC,&0E500|
000004d0  31 31 30 2c 35 0d 02 12  15 dc 20 43 4d 46 2c 26  |110,5..... CMF,&|
000004e0  30 45 39 30 46 31 31 30  2c 36 0d 02 1c 15 dc 20  |0E90F110,6..... |
000004f0  43 4e 46 2c 26 30 45 42  30 46 31 31 30 2c 36 0d  |CNF,&0EB0F110,6.|
00000500  02 26 15 dc 20 43 4d 45  2c 26 30 45 44 30 46 31  |.&.. CME,&0ED0F1|
00000510  31 30 2c 36 0d 02 30 15  dc 20 43 4e 45 2c 26 30  |10,6..0.. CNE,&0|
00000520  45 46 30 46 31 31 30 2c  36 0d 02 3a 0d dc 20 44  |EF0F110,6..:.. D|
00000530  46 50 2c 30 2c 37 0d 02  44 10 f4 20 45 6e 64 20  |FP,0,7..D.. End |
00000540  4d 61 72 6b 65 72 0d 02  4e 0d dc 20 5a 5a 5a 2c  |Marker..N.. ZZZ,|
00000550  30 2c 30 0d 02 58 1d f4  2d 2d 2d 2d 2d 2d 2d 2d  |0,0..X..--------|
00000560  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00000570  0d 02 62 1d f4 20 47 65  6e 65 72 61 74 65 20 66  |..b.. Generate f|
00000580  6c 6f 61 74 69 6e 67 20  70 6f 69 6e 74 0d 02 6c  |loating point..l|
00000590  0c dd a4 66 70 28 69 24  29 0d 02 76 0f ee 85 20  |...fp(i$)..v... |
000005a0  f1 20 69 24 3a f6 3a e0  0d 02 80 26 ea 20 6f 24  |. i$:.:....&. o$|
000005b0  2c 49 25 2c 69 25 2c 70  25 2c 74 25 2c 73 24 2c  |,I%,i%,p%,t%,s$,|
000005c0  66 72 25 2c 61 25 2c 61  2c 63 25 2c 66 24 0d 02  |fr%,a%,a,c%,f$..|
000005d0  8a 18 66 24 3d 69 24 3a  6f 24 3d a4 66 70 73 74  |..f$=i$:o$=.fpst|
000005e0  72 69 70 28 33 29 0d 02  94 27 49 25 3d 2d 31 3a  |rip(3)...'I%=-1:|
000005f0  f5 49 25 2b 3d 31 3a fd  6f 24 3d 66 70 24 28 49  |.I%+=1:.o$=fp$(I|
00000600  25 29 20 84 20 49 25 3d  66 70 6d 61 78 0d 02 9e  |%) . I%=fpmax...|
00000610  3c e7 20 49 25 3d 66 70  6d 61 78 20 f2 66 70 65  |<. I%=fpmax .fpe|
00000620  72 72 28 22 42 61 64 20  46 50 20 49 6e 73 74 22  |rr("Bad FP Inst"|
00000630  29 20 8b 20 69 25 3d 66  6f 25 28 49 25 29 3a 74  |) . i%=fo%(I%):t|
00000640  25 3d 66 74 25 28 49 25  29 0d 02 a8 26 e7 20 28  |%=ft%(I%)...&. (|
00000650  41 25 20 80 20 33 29 3d  30 20 80 20 74 25 3c 37  |A% . 3)=0 . t%<7|
00000660  20 50 25 2b 3d 34 3a 4f  25 2b 3d 34 3a 3d 30 0d  | P%+=4:O%+=4:=0.|
00000670  02 b2 28 e7 20 28 41 25  20 80 20 33 29 3d 30 20  |..(. (A% . 3)=0 |
00000680  80 20 74 25 3d 37 20 50  25 2b 3d 31 32 3a 4f 25  |. t%=7 P%+=12:O%|
00000690  2b 3d 31 32 3a 3d 30 0d  02 bc 14 e7 20 74 25 3d  |+=12:=0..... t%=|
000006a0  37 20 f2 66 70 64 66 70  3a 3d 30 0d 02 c6 26 e7  |7 .fpdfp:=0...&.|
000006b0  20 c0 66 24 2c 31 29 3d  22 20 22 20 63 25 3d 25  | .f$,1)=" " c%=%|
000006c0  31 31 31 30 20 8b 20 63  25 3d a4 66 70 63 6f 6e  |1110 . c%=.fpcon|
000006d0  64 0d 02 d0 0e 69 25 2b  3d 63 25 3c 3c 32 38 0d  |d....i%+=c%<<28.|
000006e0  02 da 22 e7 20 c0 66 24  2c 31 29 3d 22 20 22 20  |..". .f$,1)=" " |
000006f0  70 25 3d 30 20 8b 20 70  25 3d a4 66 70 70 72 65  |p%=0 . p%=.fppre|
00000700  63 0d 02 e4 32 e7 20 c0  66 24 2c 31 29 3d 22 20  |c...2. .f$,1)=" |
00000710  22 20 73 24 3d a4 66 70  73 74 72 69 70 28 31 29  |" s$=.fpstrip(1)|
00000720  20 8b 20 f2 66 70 65 72  72 28 22 53 79 6e 74 61  | . .fperr("Synta|
00000730  78 22 29 0d 02 ee 0a 69  25 2b 3d 70 25 0d 02 f8  |x")....i%+=p%...|
00000740  0b c8 8e 20 74 25 20 ca  0d 03 02 0f 20 20 c9 20  |... t% .....  . |
00000750  30 3a f2 66 70 74 30 0d  03 0c 0f 20 20 c9 20 31  |0:.fpt0....  . 1|
00000760  3a f2 66 70 74 31 0d 03  16 0f 20 20 c9 20 32 3a  |:.fpt1....  . 2:|
00000770  f2 66 70 74 32 0d 03 20  0f 20 20 c9 20 33 3a f2  |.fpt2.. .  . 3:.|
00000780  66 70 74 33 0d 03 2a 0f  20 20 c9 20 34 3a f2 66  |fpt3..*.  . 4:.f|
00000790  70 74 34 0d 03 34 0f 20  20 c9 20 35 3a f2 66 70  |pt4..4.  . 5:.fp|
000007a0  74 35 0d 03 3e 0f 20 20  c9 20 36 3a f2 66 70 74  |t5..>.  . 6:.fpt|
000007b0  36 0d 03 48 05 cb 0d 03  52 16 21 50 25 3d 69 25  |6..H....R.!P%=i%|
000007c0  3a 50 25 2b 3d 34 3a 4f  25 2b 3d 34 0d 03 5c 06  |:P%+=4:O%+=4..\.|
000007d0  3d 30 0d 03 66 04 0d 03  70 0d f4 20 4c 44 46 2f  |=0..f...p.. LDF/|
000007e0  53 54 46 0d 03 7a 0a dd  f2 66 70 74 30 0d 03 84  |STF..z...fpt0...|
000007f0  20 f2 66 70 72 65 67 3a  69 25 2b 3d 66 72 25 3c  | .fpreg:i%+=fr%<|
00000800  3c 31 32 3a 69 25 2b 3d  33 3c 3c 32 33 0d 03 8e  |<12:i%+=3<<23...|
00000810  12 e7 20 c0 66 24 2c 31  29 3d 22 5b 22 20 8c 0d  |.. .f$,1)="[" ..|
00000820  03 98 14 20 20 73 24 3d  a4 66 70 73 74 72 69 70  |...  s$=.fpstrip|
00000830  28 31 29 0d 03 a2 18 20  20 f2 66 70 72 65 67 3a  |(1)....  .fpreg:|
00000840  69 25 2b 3d 66 72 25 3c  3c 31 36 0d 03 ac 10 20  |i%+=fr%<<16.... |
00000850  20 e7 20 73 24 3d 22 2c  22 20 8c 0d 03 b6 3d 20  | . s$="," ....= |
00000860  20 20 20 73 24 3d a4 66  70 73 74 72 69 70 28 31  |   s$=.fpstrip(1|
00000870  29 3a e7 20 73 24 3c 3e  22 23 22 20 f2 66 70 65  |):. s$<>"#" .fpe|
00000880  72 72 28 22 42 61 64 20  41 64 64 72 65 73 73 20  |rr("Bad Address |
00000890  6f 66 66 73 65 74 22 29  0d 03 c0 10 20 20 20 20  |offset")....    |
000008a0  61 25 3d a0 28 66 24 29  0d 03 ca 20 20 20 20 20  |a%=.(f$)...     |
000008b0  e7 20 61 25 3c 30 20 61  25 3d 30 2d 61 25 3a 69  |. a%<0 a%=0-a%:i|
000008c0  25 2d 3d 31 3c 3c 32 33  0d 03 d4 37 20 20 20 20  |%-=1<<23...7    |
000008d0  e7 20 61 25 3e 31 30 32  34 20 84 20 28 61 25 80  |. a%>1024 . (a%.|
000008e0  33 29 20 f2 66 70 65 72  72 28 22 42 61 64 20 41  |3) .fperr("Bad A|
000008f0  64 64 72 65 73 73 20 6f  66 66 73 65 74 22 29 0d  |ddress offset").|
00000900  03 de 11 20 20 20 20 69  25 2b 3d 61 25 3e 3e 32  |...    i%+=a%>>2|
00000910  0d 03 e8 1e 20 20 20 20  e7 20 c2 66 24 2c 31 29  |....    . .f$,1)|
00000920  3d 22 21 22 20 69 25 2b  3d 31 3c 3c 32 31 0d 03  |="!" i%+=1<<21..|
00000930  f2 07 20 20 cc 0d 03 fc  16 20 20 20 20 73 24 3d  |..  .....    s$=|
00000940  a4 66 70 73 74 72 69 70  28 31 29 0d 04 06 0f 20  |.fpstrip(1).... |
00000950  20 20 20 c8 8e 20 73 24  20 ca 0d 04 10 1a 20 20  |   .. s$ .....  |
00000960  20 20 20 20 20 c9 20 22  21 22 3a 69 25 2b 3d 31  |     . "!":i%+=1|
00000970  3c 3c 32 31 0d 04 1a 10  20 20 20 20 20 20 20 c9  |<<21....       .|
00000980  20 22 22 3a 0d 04 24 1f  20 20 20 20 20 20 20 c9  | "":..$.       .|
00000990  20 22 2c 22 3a 73 24 3d  a4 66 70 73 74 72 69 70  | ",":s$=.fpstrip|
000009a0  28 31 29 0d 04 2e 2a 20  20 20 20 20 20 20 e7 20  |(1)...*       . |
000009b0  73 24 3c 3e 22 23 22 20  f2 66 70 65 72 72 28 22  |s$<>"#" .fperr("|
000009c0  42 61 64 20 41 64 64 72  65 73 73 22 29 0d 04 38  |Bad Address")..8|
000009d0  13 20 20 20 20 20 20 20  61 25 3d a0 28 66 24 29  |.       a%=.(f$)|
000009e0  0d 04 42 23 20 20 20 20  20 20 20 e7 20 61 25 3c  |..B#       . a%<|
000009f0  30 20 61 25 3d 30 2d 61  25 3a 69 25 2d 3d 31 3c  |0 a%=0-a%:i%-=1<|
00000a00  3c 32 33 0d 04 4c 33 20  20 20 20 20 20 20 e7 20  |<23..L3       . |
00000a10  61 25 3e 31 30 32 34 20  84 20 28 61 25 80 33 29  |a%>1024 . (a%.3)|
00000a20  20 f2 66 70 65 72 72 28  22 42 61 64 20 41 64 64  | .fperr("Bad Add|
00000a30  72 65 73 73 22 29 0d 04  56 1e 20 20 20 20 20 20  |ress")..V.      |
00000a40  20 69 25 2b 3d 61 25 3e  3e 32 3a 69 25 2d 3d 31  | i%+=a%>>2:i%-=1|
00000a50  3c 3c 32 34 0d 04 60 23  20 20 20 20 20 20 20 7f  |<<24..`#       .|
00000a60  3a f2 66 70 65 72 72 28  22 53 79 6e 74 61 78 20  |:.fperr("Syntax |
00000a70  65 72 72 6f 72 22 29 0d  04 6a 09 20 20 20 20 cb  |error")..j.    .|
00000a80  0d 04 74 07 20 20 cd 0d  04 7e 05 cc 0d 04 88 10  |..t.  ...~......|
00000a90  20 20 69 25 2b 3d 31 35  3c 3c 31 36 0d 04 92 1b  |  i%+=15<<16....|
00000aa0  20 20 66 72 25 3d a0 28  66 24 29 3a 61 25 3d 50  |  fr%=.(f$):a%=P|
00000ab0  25 2b 38 2d 66 72 25 0d  04 9c 20 20 20 e7 20 61  |%+8-fr%...   . a|
00000ac0  25 3c 30 20 61 25 3d 30  2d 61 25 20 8b 20 69 25  |%<0 a%=0-a% . i%|
00000ad0  2d 3d 31 3c 3c 32 33 0d  04 a6 2e 20 20 e7 20 61  |-=1<<23....  . a|
00000ae0  25 3e 31 30 32 34 20 84  20 28 61 25 80 33 29 20  |%>1024 . (a%.3) |
00000af0  f2 66 70 65 72 72 28 22  42 61 64 20 41 64 64 72  |.fperr("Bad Addr|
00000b00  65 73 73 22 29 0d 04 b0  0f 20 20 69 25 2b 3d 61  |ess")....  i%+=a|
00000b10  25 3e 3e 32 0d 04 ba 05  cd 0d 04 c4 05 e1 0d 04  |%>>2............|
00000b20  ce 04 0d 04 d8 0e f4 20  41 44 46 2e 2e 50 4f 4c  |....... ADF..POL|
00000b30  0d 04 e2 0a dd f2 66 70  74 31 0d 04 ec 16 f2 66  |......fpt1.....f|
00000b40  70 72 65 67 3a 69 25 2b  3d 66 72 25 3c 3c 31 32  |preg:i%+=fr%<<12|
00000b50  0d 04 f6 16 f2 66 70 72  65 67 3a 69 25 2b 3d 66  |.....fpreg:i%+=f|
00000b60  72 25 3c 3c 31 36 0d 05  00 09 f2 66 70 66 6d 0d  |r%<<16.....fpfm.|
00000b70  05 0a 05 e1 0d 05 14 04  0d 05 1e 0e f4 20 4d 56  |............. MV|
00000b80  46 2e 2e 41 54 4e 0d 05  28 0a dd f2 66 70 74 32  |F..ATN..(...fpt2|
00000b90  0d 05 32 16 f2 66 70 72  65 67 3a 69 25 2b 3d 66  |..2..fpreg:i%+=f|
00000ba0  72 25 3c 3c 31 32 0d 05  3c 09 f2 66 70 66 6d 0d  |r%<<12..<..fpfm.|
00000bb0  05 46 05 e1 0d 05 50 04  0d 05 5a 09 f4 20 46 4c  |.F....P...Z.. FL|
00000bc0  54 0d 05 64 0a dd f2 66  70 74 33 0d 05 6e 16 f2  |T..d...fpt3..n..|
00000bd0  66 70 72 65 67 3a 69 25  2b 3d 66 72 25 3c 3c 31  |fpreg:i%+=fr%<<1|
00000be0  36 0d 05 78 16 f2 66 70  72 65 67 3a 69 25 2b 3d  |6..x..fpreg:i%+=|
00000bf0  66 72 25 3c 3c 31 32 0d  05 82 05 e1 0d 05 8c 04  |fr%<<12.........|
00000c00  0d 05 96 09 f4 20 46 49  58 0d 05 a0 0a dd f2 66  |..... FIX......f|
00000c10  70 74 34 0d 05 aa 16 f2  66 70 72 65 67 3a 69 25  |pt4.....fpreg:i%|
00000c20  2b 3d 66 72 25 3c 3c 31  32 0d 05 b4 12 f2 66 70  |+=fr%<<12.....fp|
00000c30  72 65 67 3a 69 25 2b 3d  66 72 25 0d 05 be 05 e1  |reg:i%+=fr%.....|
00000c40  0d 05 c8 04 0d 05 d2 0e  f4 20 57 46 53 2e 2e 52  |......... WFS..R|
00000c50  46 43 0d 05 dc 0a dd f2  66 70 74 35 0d 05 e6 16  |FC......fpt5....|
00000c60  f2 66 70 72 65 67 3a 69  25 2b 3d 66 72 25 3c 3c  |.fpreg:i%+=fr%<<|
00000c70  31 32 0d 05 f0 05 e1 0d  05 fa 04 0d 06 04 0e f4  |12..............|
00000c80  20 43 4d 46 2e 2e 43 4e  45 0d 06 0e 0a dd f2 66  | CMF..CNE......f|
00000c90  70 74 36 0d 06 18 16 f2  66 70 72 65 67 3a 69 25  |pt6.....fpreg:i%|
00000ca0  2b 3d 66 72 25 3c 3c 31  36 0d 06 22 09 f2 66 70  |+=fr%<<16.."..fp|
00000cb0  66 6d 0d 06 2c 05 e1 0d  06 36 04 0d 06 40 16 f4  |fm..,....6...@..|
00000cc0  20 44 46 50 20 70 61 63  6b 65 64 20 76 61 6c 75  | DFP packed valu|
00000cd0  65 0d 06 4a 0b dd f2 66  70 64 66 70 0d 06 54 14  |e..J...fpdfp..T.|
00000ce0  ea 20 40 25 3a 40 25 3d  26 31 30 31 30 39 30 41  |. @%:@%=&101090A|
00000cf0  0d 06 5e 12 63 24 3d a4  66 70 73 74 72 69 70 28  |..^.c$=.fpstrip(|
00000d00  31 29 0d 06 68 22 49 25  3d a7 66 24 2c 22 45 22  |1)..h"I%=.f$,"E"|
00000d10  29 3a e7 20 49 25 3d 30  20 66 24 3d c3 28 a0 28  |):. I%=0 f$=.(.(|
00000d20  66 24 29 29 0d 06 72 34  e7 20 c0 66 24 2c 31 29  |f$))..r4. .f$,1)|
00000d30  3d 22 30 22 20 21 50 25  3d 30 3a 50 25 21 34 3d  |="0" !P%=0:P%!4=|
00000d40  30 3a 50 25 21 38 3d 30  3a 50 25 2b 3d 31 32 3a  |0:P%!8=0:P%+=12:|
00000d50  4f 25 2b 3d 31 32 3a e1  0d 06 7c 2b e7 20 c0 66  |O%+=12:...|+. .f|
00000d60  24 2c 31 29 3d 22 2d 22  20 73 25 3d 32 3a 73 24  |$,1)="-" s%=2:s$|
00000d70  3d a4 66 70 73 74 72 69  70 28 31 29 20 8b 20 73  |=.fpstrip(1) . s|
00000d80  25 3d 30 0d 06 86 43 49  25 3d a7 66 24 2c 22 45  |%=0...CI%=.f$,"E|
00000d90  22 29 3a e7 20 c1 66 24  2c 49 25 2b 31 2c 31 29  |"):. .f$,I%+1,1)|
00000da0  3d 22 2d 22 20 73 25 2b  3d 31 3a 65 24 3d c1 66  |="-" s%+=1:e$=.f|
00000db0  24 2c 49 25 2b 32 29 20  8b 20 65 24 3d c1 66 24  |$,I%+2) . e$=.f$|
00000dc0  2c 49 25 2b 31 29 0d 06  90 24 40 25 3d 26 30 39  |,I%+1)...$@%=&09|
00000dd0  30 41 3a 65 24 3d c2 22  30 30 30 30 30 22 2b c3  |0A:e$=."00000"+.|
00000de0  28 a0 28 65 24 29 29 2c  35 29 0d 06 9a 3c 66 24  |(.(e$)),5)...<f$|
00000df0  3d c0 66 24 2c 49 25 2d  31 29 3a 66 24 3d c0 c0  |=.f$,I%-1):f$=..|
00000e00  66 24 2c 31 29 2b c1 66  24 2c 33 29 2b 22 30 30  |f$,1)+.f$,3)+"00|
00000e10  30 30 30 30 30 30 30 30  30 30 30 30 30 30 30 30  |0000000000000000|
00000e20  30 22 2c 31 39 29 0d 06  a4 0c 66 24 3d 65 24 2b  |0",19)....f$=e$+|
00000e30  66 24 0d 06 ae 26 69 25  3d a4 66 70 70 64 28 c0  |f$...&i%=.fppd(.|
00000e40  66 24 2c 38 29 29 3a 69  25 2b 3d 73 25 3c 3c 33  |f$,8)):i%+=s%<<3|
00000e50  30 3a 21 50 25 3d 69 25  0d 06 b8 18 50 25 21 34  |0:!P%=i%....P%!4|
00000e60  3d a4 66 70 70 64 28 c1  66 24 2c 39 2c 38 29 29  |=.fppd(.f$,9,8))|
00000e70  0d 06 c2 19 50 25 21 38  3d a4 66 70 70 64 28 c1  |....P%!8=.fppd(.|
00000e80  66 24 2c 31 37 2c 38 29  29 0d 06 cc 11 50 25 2b  |f$,17,8))....P%+|
00000e90  3d 31 32 3a 4f 25 2b 3d  31 32 0d 06 d6 05 e1 0d  |=12:O%+=12......|
00000ea0  06 e0 0e dd a4 66 70 70  64 28 6e 24 29 0d 06 ea  |.....fppd(n$)...|
00000eb0  13 69 25 3d 30 3a e3 20  49 25 3d 31 20 b8 20 38  |.i%=0:. I%=1 . 8|
00000ec0  0d 06 f4 21 61 25 3d a0  28 c1 6e 24 2c 49 25 2c  |...!a%=.(.n$,I%,|
00000ed0  31 29 29 3a 69 25 3d 28  69 25 3c 3c 34 29 2b 61  |1)):i%=(i%<<4)+a|
00000ee0  25 0d 06 fe 05 ed 0d 07  08 07 3d 69 25 0d 07 12  |%.........=i%...|
00000ef0  04 0d 07 1c 0b dd f2 66  70 72 65 67 0d 07 26 0d  |.......fpreg..&.|
00000f00  66 72 25 3d a0 28 66 24  29 0d 07 30 2e f5 3a 73  |fr%=.(f$)..0..:s|
00000f10  24 3d a4 66 70 73 74 72  69 70 28 31 29 3a fd 20  |$=.fpstrip(1):. |
00000f20  73 24 3d 22 22 20 84 20  73 24 3d 22 2c 22 20 84  |s$="" . s$="," .|
00000f30  20 73 24 3d 22 5d 22 0d  07 3a 05 e1 0d 07 44 04  | s$="]"..:....D.|
00000f40  0d 07 4e 0a dd f2 66 70  66 6d 0d 07 58 12 e7 20  |..N...fpfm..X.. |
00000f50  c0 66 24 2c 31 29 3d 22  23 22 20 8c 0d 07 62 0b  |.f$,1)="#" ...b.|
00000f60  20 20 69 25 2b 3d 38 0d  07 6c 14 20 20 73 24 3d  |  i%+=8..l.  s$=|
00000f70  a4 66 70 73 74 72 69 70  28 31 29 0d 07 76 0d 20  |.fpstrip(1)..v. |
00000f80  20 61 3d a0 28 66 24 29  0d 07 80 0c 20 20 c8 8e  | a=.(f$)....  ..|
00000f90  20 61 20 ca 0d 07 8a 1b  20 20 20 20 c9 20 30 2c  | a .....    . 0,|
00000fa0  31 2c 32 2c 33 2c 34 2c  35 3a 69 25 2b 3d 61 0d  |1,2,3,4,5:i%+=a.|
00000fb0  07 94 13 20 20 20 20 c9  20 30 2e 35 3a 69 25 2b  |...    . 0.5:i%+|
00000fc0  3d 36 0d 07 9e 12 20 20  20 20 c9 20 31 30 3a 69  |=6....    . 10:i|
00000fd0  25 2b 3d 37 0d 07 a8 20  20 20 20 20 7f 20 f2 66  |%+=7...     . .f|
00000fe0  70 65 72 72 28 22 42 61  64 20 43 6f 6e 73 74 61  |perr("Bad Consta|
00000ff0  6e 74 22 29 0d 07 b2 07  20 20 cb 0d 07 bc 05 cc  |nt")....  ......|
00001000  0d 07 c6 14 20 20 f2 66  70 72 65 67 3a 69 25 2b  |....  .fpreg:i%+|
00001010  3d 66 72 25 0d 07 d0 07  cd 3a e1 0d 07 da 04 0d  |=fr%.....:......|
00001020  07 e4 11 dd a4 66 70 63  6f 6e 64 3a ea 20 63 24  |.....fpcond:. c$|
00001030  0d 07 ee 0d 63 24 3d c0  66 24 2c 32 29 0d 07 f8  |....c$=.f$,2)...|
00001040  32 e7 20 63 24 3d 22 53  20 22 20 84 20 63 24 3d  |2. c$="S " . c$=|
00001050  22 44 20 22 20 84 20 63  24 3d 22 45 20 22 20 84  |"D " . c$="E " .|
00001060  20 63 24 3d 22 50 20 22  20 3d 25 31 31 31 30 0d  | c$="P " =%1110.|
00001070  08 02 12 63 24 3d a4 66  70 73 74 72 69 70 28 32  |...c$=.fpstrip(2|
00001080  29 0d 08 0c 14 e7 20 63  24 3d 22 45 51 22 20 3d  |)..... c$="EQ" =|
00001090  25 30 30 30 30 0d 08 16  14 e7 20 63 24 3d 22 4e  |%0000..... c$="N|
000010a0  45 22 20 3d 25 30 30 30  31 0d 08 20 14 e7 20 63  |E" =%0001.. .. c|
000010b0  24 3d 22 43 53 22 20 3d  25 30 30 31 30 0d 08 2a  |$="CS" =%0010..*|
000010c0  14 e7 20 63 24 3d 22 43  43 22 20 3d 25 30 30 31  |.. c$="CC" =%001|
000010d0  31 0d 08 34 14 e7 20 63  24 3d 22 4d 49 22 20 3d  |1..4.. c$="MI" =|
000010e0  25 30 31 30 30 0d 08 3e  14 e7 20 63 24 3d 22 50  |%0100..>.. c$="P|
000010f0  4c 22 20 3d 25 30 31 30  31 0d 08 48 14 e7 20 63  |L" =%0101..H.. c|
00001100  24 3d 22 56 53 22 20 3d  25 30 31 31 30 0d 08 52  |$="VS" =%0110..R|
00001110  14 e7 20 63 24 3d 22 56  43 22 20 3d 25 30 31 31  |.. c$="VC" =%011|
00001120  31 0d 08 5c 14 e7 20 63  24 3d 22 48 49 22 20 3d  |1..\.. c$="HI" =|
00001130  25 31 30 30 30 0d 08 66  14 e7 20 63 24 3d 22 4c  |%1000..f.. c$="L|
00001140  53 22 20 3d 25 31 30 30  31 0d 08 70 14 e7 20 63  |S" =%1001..p.. c|
00001150  24 3d 22 47 45 22 20 3d  25 31 30 31 30 0d 08 7a  |$="GE" =%1010..z|
00001160  14 e7 20 63 24 3d 22 4c  54 22 20 3d 25 31 30 31  |.. c$="LT" =%101|
00001170  31 0d 08 84 14 e7 20 63  24 3d 22 47 54 22 20 3d  |1..... c$="GT" =|
00001180  25 31 31 30 30 0d 08 8e  14 e7 20 63 24 3d 22 4c  |%1100..... c$="L|
00001190  45 22 20 3d 25 31 31 30  31 0d 08 98 14 e7 20 63  |E" =%1101..... c|
000011a0  24 3d 22 41 4c 22 20 3d  25 31 31 31 30 0d 08 a2  |$="AL" =%1110...|
000011b0  14 e7 20 63 24 3d 22 4e  56 22 20 3d 25 31 31 31  |.. c$="NV" =%111|
000011c0  31 0d 08 ac 1b f2 66 70  65 72 72 28 22 42 61 64  |1.....fperr("Bad|
000011d0  20 43 6f 6e 64 69 74 69  6f 6e 22 29 0d 08 b6 04  | Condition")....|
000011e0  0d 08 c0 14 dd a4 66 70  70 72 65 63 3a ea 20 70  |......fpprec:. p|
000011f0  24 2c 70 25 0d 08 ca 12  70 24 3d a4 66 70 73 74  |$,p%....p$=.fpst|
00001200  72 69 70 28 31 29 0d 08  d4 0c e7 20 74 25 3d 30  |rip(1)..... t%=0|
00001210  20 8c 0d 08 de 13 20 20  e7 20 70 24 3d 22 53 22  | .....  . p$="S"|
00001220  20 70 25 3d 30 0d 08 e8  19 20 20 e7 20 70 24 3d  | p%=0....  . p$=|
00001230  22 44 22 20 70 25 3d 26  30 30 38 30 30 30 0d 08  |"D" p%=&008000..|
00001240  f2 19 20 20 e7 20 70 24  3d 22 45 22 20 70 25 3d  |..  . p$="E" p%=|
00001250  26 34 30 30 30 30 30 0d  08 fc 19 20 20 e7 20 70  |&400000....  . p|
00001260  24 3d 22 50 22 20 70 25  3d 26 34 30 38 30 30 30  |$="P" p%=&408000|
00001270  0d 09 06 05 cc 0d 09 10  13 20 20 e7 20 70 24 3d  |.........  . p$=|
00001280  22 53 22 20 70 25 3d 30  0d 09 1a 19 20 20 e7 20  |"S" p%=0....  . |
00001290  70 24 3d 22 44 22 20 70  25 3d 26 30 30 30 30 38  |p$="D" p%=&00008|
000012a0  30 0d 09 24 19 20 20 e7  20 70 24 3d 22 45 22 20  |0..$.  . p$="E" |
000012b0  70 25 3d 26 30 38 30 30  30 30 0d 09 2e 19 20 20  |p%=&080000....  |
000012c0  e7 20 70 24 3d 22 50 22  20 70 25 3d 26 30 38 30  |. p$="P" p%=&080|
000012d0  30 38 30 0d 09 38 05 cd  0d 09 42 07 3d 70 25 0d  |080..8....B.=p%.|
000012e0  09 4c 04 0d 09 56 11 dd  a4 66 70 73 74 72 69 70  |.L...V...fpstrip|
000012f0  28 4e 25 29 0d 09 60 13  ea 20 73 24 3a 73 24 3d  |(N%)..`.. s$:s$=|
00001300  c0 66 24 2c 4e 25 29 0d  09 6a 14 66 24 3d c1 66  |.f$,N%)..j.f$=.f|
00001310  24 2c 4e 25 2b 31 29 3a  3d 73 24 0d 09 74 04 0d  |$,N%+1):=s$..t..|
00001320  09 7e 0f dd f2 66 70 65  72 72 28 65 24 29 0d 09  |.~...fperr(e$)..|
00001330  88 12 85 20 30 2c 65 24  2b 22 20 3a 22 2b 69 24  |... 0,e$+" :"+i$|
00001340  0d 09 92 04 0d 09 9c 3f  f4 20 4f 70 74 69 6f 6e  |.......?. Option|
00001350  61 6c 20 63 6f 6e 76 65  72 73 69 6f 6e 20 72 6f  |al conversion ro|
00001360  75 74 69 6e 65 73 3a 20  32 35 36 20 62 79 74 65  |utines: 256 byte|
00001370  73 20 72 65 71 75 69 72  65 64 20 61 74 20 61 64  |s required at ad|
00001380  64 72 25 0d 09 a6 13 dd  f2 66 70 63 6f 6e 76 28  |dr%......fpconv(|
00001390  61 64 64 72 25 29 0d 09  b0 12 e3 20 41 25 3d 30  |addr%)..... A%=0|
000013a0  20 b8 20 32 20 88 20 32  0d 09 ba 0c 50 25 3d 61  | . 2 . 2....P%=a|
000013b0  64 64 72 25 0d 09 c4 0b  5b 4f 50 54 20 41 25 0d  |ddr%....[OPT A%.|
000013c0  09 ce 2d 3b 20 44 6f 75  62 6c 65 20 28 40 20 52  |..-; Double (@ R|
000013d0  30 29 20 74 6f 20 53 74  72 69 6e 67 20 28 32 36  |0) to String (26|
000013e0  20 62 79 74 65 73 20 40  20 52 31 29 0d 09 d8 0d  | bytes @ R1)....|
000013f0  2e 66 70 64 62 6c 73 74  72 0d 09 e2 1b 53 54 4d  |.fpdblstr....STM|
00001400  46 44 20 52 31 33 21 2c  7b 52 30 2d 52 31 32 2c  |FD R13!,{R0-R12,|
00001410  52 31 34 7d 0d 09 ec 17  a4 66 70 28 22 4c 44 46  |R14}.....fp("LDF|
00001420  44 20 46 30 2c 5b 52 30  5d 22 29 0d 09 f6 19 a4  |D F0,[R0]").....|
00001430  66 70 28 22 53 54 46 50  20 46 30 2c 70 61 63 6b  |fp("STFP F0,pack|
00001440  65 64 22 29 0d 0a 00 11  41 44 52 20 52 32 2c 70  |ed")....ADR R2,p|
00001450  61 63 6b 65 64 0d 0a 0a  0d 42 4c 20 72 6f 74 61  |acked....BL rota|
00001460  74 65 0d 0a 14 13 41 44  52 20 52 32 2c 70 61 63  |te....ADR R2,pac|
00001470  6b 65 64 2b 34 0d 0a 1e  0d 42 4c 20 72 6f 74 61  |ked+4....BL rota|
00001480  74 65 0d 0a 28 13 41 44  52 20 52 32 2c 70 61 63  |te..(.ADR R2,pac|
00001490  6b 65 64 2b 38 0d 0a 32  0d 42 4c 20 72 6f 74 61  |ked+8..2.BL rota|
000014a0  74 65 0d 0a 3c 12 4c 44  52 42 20 52 32 2c 70 61  |te..<.LDRB R2,pa|
000014b0  63 6b 65 64 0d 0a 46 10  4d 4f 56 20 52 33 2c 23  |cked..F.MOV R3,#|
000014c0  97 22 20 22 0d 0a 50 0f  54 53 54 20 52 32 2c 23  |." "..P.TST R2,#|
000014d0  26 38 30 0d 0a 5a 12 4d  4f 56 4e 45 20 52 33 2c  |&80..Z.MOVNE R3,|
000014e0  23 97 22 2d 22 0d 0a 64  13 53 54 52 42 20 52 33  |#."-"..d.STRB R3|
000014f0  2c 5b 52 31 5d 2c 23 31  0d 0a 6e 0d 4d 4f 56 20  |,[R1],#1..n.MOV |
00001500  52 34 2c 52 31 0d 0a 78  1a 4d 4f 56 20 52 35 2c  |R4,R1..x.MOV R5,|
00001510  23 31 38 20 3b 20 4e 6f  2e 64 69 67 69 74 73 0d  |#18 ; No.digits.|
00001520  0a 82 13 41 44 52 20 52  36 2c 70 61 63 6b 65 64  |...ADR R6,packed|
00001530  2b 32 0d 0a 8c 0b 2e 75  6e 70 61 63 6b 0d 0a 96  |+2.....unpack...|
00001540  13 4c 44 52 42 20 52 37  2c 5b 52 36 5d 2c 23 31  |.LDRB R7,[R6],#1|
00001550  0d 0a a0 14 4d 4f 56 20  52 38 2c 52 37 2c 4c 53  |....MOV R8,R7,LS|
00001560  52 20 23 34 0d 0a aa 13  41 44 44 20 52 38 2c 52  |R #4....ADD R8,R|
00001570  38 2c 23 97 22 30 22 0d  0a b4 13 53 54 52 42 20  |8,#."0"....STRB |
00001580  52 38 2c 5b 52 34 5d 2c  23 31 0d 0a be 12 80 20  |R8,[R4],#1..... |
00001590  52 37 2c 52 37 2c 23 25  31 31 31 31 0d 0a c8 13  |R7,R7,#%1111....|
000015a0  41 44 44 20 52 37 2c 52  37 2c 23 97 22 30 22 0d  |ADD R7,R7,#."0".|
000015b0  0a d2 13 53 54 52 42 20  52 37 2c 5b 52 34 5d 2c  |...STRB R7,[R4],|
000015c0  23 31 0d 0a dc 11 53 55  42 53 20 52 35 2c 52 35  |#1....SUBS R5,R5|
000015d0  2c 23 32 0d 0a e6 0e 42  4e 45 20 75 6e 70 61 63  |,#2....BNE unpac|
000015e0  6b 0d 0a f0 15 4c 44 52  42 20 52 38 2c 5b 52 31  |k....LDRB R8,[R1|
000015f0  5d 20 3b 20 65 30 0d 0a  fa 19 4c 44 52 42 20 52  |] ; e0....LDRB R|
00001600  37 2c 5b 52 31 2c 23 31  5d 20 3b 20 64 31 38 0d  |7,[R1,#1] ; d18.|
00001610  0b 04 10 53 54 52 42 20  52 37 2c 5b 52 31 5d 0d  |...STRB R7,[R1].|
00001620  0b 0e 10 4d 4f 56 20 52  37 2c 23 97 22 2e 22 0d  |...MOV R7,#.".".|
00001630  0b 18 13 53 54 52 42 20  52 37 2c 5b 52 31 2c 23  |...STRB R7,[R1,#|
00001640  31 5d 0d 0b 22 10 4d 4f  56 20 52 37 2c 23 97 22  |1]..".MOV R7,#."|
00001650  65 22 0d 0b 2c 13 53 54  52 42 20 52 37 2c 5b 52  |e"..,.STRB R7,[R|
00001660  34 5d 2c 23 31 0d 0b 36  12 4c 44 52 42 20 52 32  |4],#1..6.LDRB R2|
00001670  2c 70 61 63 6b 65 64 0d  0b 40 10 4d 4f 56 20 52  |,packed..@.MOV R|
00001680  33 2c 23 97 22 2b 22 0d  0b 4a 0f 54 53 54 20 52  |3,#."+"..J.TST R|
00001690  32 2c 23 26 34 30 0d 0b  54 12 4d 4f 56 4e 45 20  |2,#&40..T.MOVNE |
000016a0  52 33 2c 23 97 22 2d 22  0d 0b 5e 13 53 54 52 42  |R3,#."-"..^.STRB|
000016b0  20 52 33 2c 5b 52 34 5d  2c 23 31 0d 0b 68 14 4c  | R3,[R4],#1..h.L|
000016c0  44 52 42 20 52 32 2c 70  61 63 6b 65 64 2b 31 0d  |DRB R2,packed+1.|
000016d0  0b 72 14 4d 4f 56 20 52  33 2c 52 32 2c 4c 53 52  |.r.MOV R3,R2,LSR|
000016e0  20 23 34 0d 0b 7c 13 41  44 44 20 52 33 2c 52 33  | #4..|.ADD R3,R3|
000016f0  2c 23 97 22 30 22 0d 0b  86 13 53 54 52 42 20 52  |,#."0"....STRB R|
00001700  33 2c 5b 52 34 5d 2c 23  31 0d 0b 90 12 80 20 52  |3,[R4],#1..... R|
00001710  32 2c 52 32 2c 23 25 31  31 31 31 0d 0b 9a 13 41  |2,R2,#%1111....A|
00001720  44 44 20 52 32 2c 52 32  2c 23 97 22 30 22 0d 0b  |DD R2,R2,#."0"..|
00001730  a4 13 53 54 52 42 20 52  32 2c 5b 52 34 5d 2c 23  |..STRB R2,[R4],#|
00001740  31 0d 0b ae 17 53 54 52  42 20 52 38 2c 5b 52 34  |1....STRB R8,[R4|
00001750  5d 2c 23 31 20 3b 65 30  0d 0b b8 0e 4d 4f 56 20  |],#1 ;e0....MOV |
00001760  52 33 2c 23 31 33 0d 0b  c2 13 53 54 52 42 20 52  |R3,#13....STRB R|
00001770  33 2c 5b 52 34 5d 2c 23  31 0d 0b cc 1a 4c 44 4d  |3,[R4],#1....LDM|
00001780  46 44 20 52 31 33 21 2c  7b 52 30 2d 52 31 32 2c  |FD R13!,{R0-R12,|
00001790  50 43 7d 0d 0b d6 0b 2e  72 6f 74 61 74 65 0d 0b  |PC}.....rotate..|
000017a0  e0 0f 4c 44 52 20 52 33  2c 5b 52 32 5d 0d 0b ea  |..LDR R3,[R2]...|
000017b0  13 53 54 52 42 20 52 33  2c 5b 52 32 2c 23 33 5d  |.STRB R3,[R2,#3]|
000017c0  0d 0b f4 14 4d 4f 56 20  52 33 2c 52 33 2c 52 4f  |....MOV R3,R3,RO|
000017d0  52 20 23 38 0d 0b fe 13  53 54 52 42 20 52 33 2c  |R #8....STRB R3,|
000017e0  5b 52 32 2c 23 32 5d 0d  0c 08 14 4d 4f 56 20 52  |[R2,#2]....MOV R|
000017f0  33 2c 52 33 2c 52 4f 52  20 23 38 0d 0c 12 13 53  |3,R3,ROR #8....S|
00001800  54 52 42 20 52 33 2c 5b  52 32 2c 23 31 5d 0d 0c  |TRB R3,[R2,#1]..|
00001810  1c 14 4d 4f 56 20 52 33  2c 52 33 2c 52 4f 52 20  |..MOV R3,R3,ROR |
00001820  23 38 0d 0c 26 13 53 54  52 42 20 52 33 2c 5b 52  |#8..&.STRB R3,[R|
00001830  32 2c 23 30 5d 0d 0c 30  0e 4d 4f 56 20 50 43 2c  |2,#0]..0.MOV PC,|
00001840  52 31 34 0d 0c 3a 18 2e  70 61 63 6b 65 64 20 a4  |R14..:..packed .|
00001850  66 70 28 22 44 46 50 20  30 22 29 0d 0c 44 05 5d  |fp("DFP 0")..D.]|
00001860  0d 0c 4e 05 ed 0d 0c 58  05 e1 0d ff              |..N....X....|
0000186c