Home » Archimedes archive » Acorn User » AU 1995-11.adf » !Regulars » Regulars/StarInfo/Radford/number_e/ASS_ECAL

Regulars/StarInfo/Radford/number_e/ASS_ECAL

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 1995-11.adf » !Regulars
Filename: Regulars/StarInfo/Radford/number_e/ASS_ECAL
Read OK:
File size: 3186 bytes
Load address: 0000
Exec address: 0000
File contents
   10ON ERROR REPORT:PRINT;ERL:END
   20DIM code% 400000
   30carry=8
   40aba=13
   50it%=100
   60accuracy%=1<<(aba)
   70accuracy2%=1<<(aba-1)
   80acc2%=100
   90FOR pass%=0 TO 2 STEP 2
  100P%=code%
  110[
  120OPT pass%
  130
  140.SVIT
  150EQUD 0
  160
  170.Factoriallify
  180STMFD R13!,{R14}
  190:
  200BL get_addresses
  210BL fill_e
  220MOV R3,#0             \factorial
  230.main_for_loopifys1
  240
  250  STR R0,SVIT
  260  SWI "OS_ReadMonotonicTime"
  270  STMFD R13!,{R0}
  280  LDR R0,SVIT
  290
  300  MOV R14,#0
  310  STRB R14,[R0]
  320  STRB R14,[R1]
  330  CMP R3,#1
  340  MOVLE  R14,#1
  350  STRLEB R14,[R0,#1]
  360  STRLEB R14,[R1,#1]
  370  MOVLE  R14,#10
  380  STRLEB R14,[R0,#2]
  390  STRLEB R14,[R1,#2]
  400  CMP R3,#1
  410  ADRGT R4,adollar
  420  MOVGT R0,R4
  430  BLGT numbertosamstringfactorial
  440  BL begin_multiplication
  450  \RESULT IS RETURNED IN answer
  460  \copy to adollar
  470  MOV R5,#0
  480  ADR R7,adollar
  490  MOV R14,#0
  500  STRB R14,[R7],#1
  510  BL address_ans
  520  .main_for_loopifys2
  530    LDRB R6,[R8,R5]
  540    STRB R6,[R7,R5]
  550    CMP R6,#10
  560    ADD R5,R5,#1
  570  BNE main_for_loopifys2
  580
  590  BL get_addresses
  600  MOV R14,#0
  610  STRB R14,[R0]
  620  MOV R14,#1
  630  STRB R14,[R0,#1]
  640  MOV R14,#0
  650  MOV R5,#2
  660  .main_for_loopifysc1
  670    STRB R14,[R0,R5]
  680    ADD R5,R5,#1
  690    CMP R5,#acc2%
  700  BNE main_for_loopifysc1
  710  MOV R14,#10
  720  STRB R14,[R0,R5]
  730
  740  MOV R14,#0
  750  STRB R14,[R1]
  760  MOV R5,#1
  770  MOV R11,#0
  780  BL address_ans
  790  .main_for_loopifysc2
  800    LDRB R14,[R8,R11]
  810    STRB R14,[R1,R5]
  820    ADD R11,R11,#1
  830    ADD R5,R5,#1
  840    CMP R14,#10
  850  BNE main_for_loopifysc2
  860
  870  BL begin_division
  880
  890  MOV R14,#0
  900  STRB R14,[R0]
  910  MOV R5,#1
  920  MOV R11,#0
  930  BL address_ans
  940  .main_for_loopifysc3
  950    LDRB R14,[R8,R11]
  960    STRB R14,[R0,R5]
  970    ADD R11,R11,#1
  980    ADD R5,R5,#1
  990    CMP R14,#10
 1000  BNE main_for_loopifysc3
 1010
 1020  MOV R14,#0
 1030  STRB R14,[R1]
 1040  MOV R5,#1
 1050  MOV R11,#0
 1060  BL address_ans
 1070  .main_for_loopifysc4
 1080    LDRB R14,[R12,R11]
 1090    STRB R14,[R1,R5]
 1100    ADD R11,R11,#1
 1110    ADD R5,R5,#1
 1120    CMP R14,#10
 1130  BNE main_for_loopifysc4
 1140
 1150  BL begin_addition
 1160
 1170  BL get_addresses
 1180  BL address_ans
 1190  MOV R14,#0
 1200  .main_for_loopifysc5
 1210    LDRB R5,[R8,R14]
 1220    STRB R5,[R12,R14]
 1230    ADD R14,R14,#1
 1240    CMP R5,#10
 1250  BNE main_for_loopifysc5
 1260
 1270
 1280
 1290  STMFD R13!,{R0-R5}
 1300  SWI 256+12
 1310  SWI "OS_RemoveCursors"
 1320  SWI 256+5
 1330  MOV R0,#4
 1340  MOV R1,#200
 1350  MOV R2,#800
 1360  SWI "OS_Plot"
 1370  SWI "OS_WriteS"
 1380  EQUS "Iterations Calculated "
 1390  EQUB 0
 1400  ALIGN
 1410  MOV R0,R3
 1420  ADR R1,buffer2
 1430  MOV R2,#32
 1440  SWI "OS_ConvertCardinal4"
 1450  SWI "OS_Write0"
 1460
 1470  MOV R0,#4
 1480  MOV R1,#200
 1490  MOV R2,#600
 1500  SWI "OS_Plot"
 1510  SWI "OS_WriteS"
 1520  EQUS "Time For Last Calculation "
 1530  EQUB 0
 1540  ALIGN
 1550
 1560  LDMFD R13!,{R0-R5}
 1570
 1580  LDMFD R13!,{R14}
 1590  STMFD R13!,{R0-R5}
 1600  SWI "OS_ReadMonotonicTime"
 1610  SUB R14,R0,R14
 1620  MOV R0,R14
 1630  ADR R1,buffer2
 1640  MOV R2,#32
 1650  SWI "OS_ConvertCardinal4"
 1660  SWI "OS_Write0"
 1670
 1680  MOV R0,#4
 1690  MOV R1,#200
 1700  MOV R2,#400
 1710  SWI "OS_Plot"
 1720  SWI "OS_WriteS"
 1730  EQUS "Remaining Iterations "
 1740  EQUB 0
 1750  ALIGN
 1760  RSB R0,R3,#it%
 1770  ADR R1,buffer2
 1780  MOV R2,#32
 1790  SWI "OS_ConvertCardinal4"
 1800  SWI "OS_Write0"
 1810
 1820  SWI 256+4
 1830  LDMFD R13!,{R0-R5}
 1840
 1850
 1860
 1870  \RESULT IS RETURNED IN ANSWER
 1880
 1890  SWI "OS_ReadEscapeState"
 1900  LDMCSFD R13!,{PC}
 1910
 1920  ADD R3,R3,#1
 1930  CMP R3,#it%
 1940BLE main_for_loopifys1
 1950
 1960LDMFD R13!,{PC}
 1970
 1980.buffer2
 1990FNBytes(32)
 2000
 2010.adollar
 2020FNBytes(accuracy%)
 2030:
 2040:
 2050.numbertosamstringfactorial
 2060STMFD R13!,{R14}
 2070STMFD R13!,{R0-R9}
 2080:
 2090MOV R9,R1
 2100
 2110MOV R0,R3
 2120ADR R1,buffer
 2130MOV R2,#32
 2140SWI "OS_ConvertCardinal4"
 2150MOV R6,#1
 2160.ntsfor_loopify1
 2170  LDRB R5,[R0],#1
 2180  SUB R5,R5,#ASC("0")
 2190  STRB R5,[R9,R6]
 2200  ADD R6,R6,#1
 2210  CMP R0,R1
 2220BLE ntsfor_loopify1
 2230MOV R14,#10
 2240SUB R6,R6,#1
 2250STRB R14,[R9,R6]
 2260:
 2270LDMFD R13!,{R0-R9}
 2280LDMFD R13!,{PC}
 2290.buffer
 2300FNBytes(32)
 2310:
 2320:
 2330\PURPOSE - RE-WRITTEN LOW-LEVEL ADDITION ROUTINE USING INFA ALGORITHM
 2340.begin_addition
 2350STMFD R13!,{R14}
 2360STMFD R13!,{R0-R12}
 2370
 2380\A VALUE OF TEN CORRESPONDS TO TERMINATING BYTE
 2390
 2400\find end of operand1 AND operand2
 2410
 2420MOV R3,R0
 2430MOV R5,#0
 2440.loop_get_end1
 2450  LDRB R4,[R3],#1
 2460  ADD R5,R5,#1
 2470  CMP R4,#10
 2480BNE loop_get_end1
 2490
 2500MOV R3,R1
 2510MOV R6,#0
 2520.loop_get_end2
 2530  LDRB R4,[R3],#1
 2540  ADD R6,R6,#1
 2550  CMP R4,#10
 2560BNE loop_get_end2
 2570
 2580\LENGTH OF OPERAND 1 IS RETURNED IN R5, LENGTH OF OPERAND 2 IS IN R6
 2590
 2600SUB R3,R5,R6      \R3 IS DIFF
 2610CMP R3,#0
 2620RSBLT R3,R3,#0
 2630CMP R5,R6
 2640MOVLT R4,R1
 2650MOVLT R1,R0
 2660MOVLT R0,R4
 2670
 2680MOVGT R4,R5      \R4 IS MAXLENGTH
 2690MOVLE R4,R6
 2700
 2710MOV carry,#0
 2720
 2730\structure for...next loop
 2740
 2750SUB R4,R4,#2
 2760MOV R7,R4
 2770  .for_loopify1c
 2780  LDRB R9,[R0,R7]    \Q1%
 2790  SUBS R14,R7,R3
 2800  LDRGTB R10,[R1,R14]
 2810  MOVLE R10,#0       \Q2%
 2820  ADD R9,R9,R10
 2830  ADD R9,R9,carry
 2840
 2850
 2860    \ASSEMBLE MOD AND DIV FUNCTION
 2870    STMFD R13!,{R0-R6}
 2880    MOV R0,R9
 2890    MOV R1,#10
 2900    ANDS R6,R0,#1<<31
 2910    RSBMI R0,R0,#0
 2920    EOR R5,R6,R1
 2930    CMP R1,#0
 2940    RSBMI R1,R1,#0
 2950
 2960    MOV R2,#0
 2970    MOV R3,#0
 2980    MOV R4,#1<<31
 2990
 3000    .division_loop11
 3010    MOVS R0,R0,ASL#1
 3020    ADC R2,R2,R2
 3030    CMP R2,R1
 3040    SUBGE R2,R2,R1
 3050    ORRGE R3,R3,R4
 3060    MOVS R4,R4,LSR#1
 3070    BNE division_loop11
 3080
 3090    CMP R5,#0
 3100    RSBMI R3,R3,#0
 3110    CMP R6,#0
 3120    RSBMI R2,R2,#0
 3130
 3140    STR R3,divres
 3150    STR R2,modres
 3160
 3170    LDMFD R13!,{R0-R6}
 3180
 3190  LDR R14,modres
 3200  STRB R14,[R2,R7]
 3210  LDR carry,divres
 3220
 3230  SUBS R7,R7,#1
 3240
 3250BNE for_loopify1c
 3260CMP carry,#0
 3270STRB carry,[R2]
 3280MOV R14,#10
 3290CMP R4,#3
 3300ADDGT R4,R4,#1
 3310ADD R4,R4,#1
 3320STRB R14,[R2,R4]
 3330
 3340BL Remove_Leading0s
 3350
 3360LDMFD R13!,{R0-R12}
 3370LDMFD R13!,{PC}
 3380
 3390.divres
 3400EQUD 0
 3410.modres
 3420EQUD 0
 3430
 3440\PURPOSE - RE-WRITTEN LOW-LEVEL MULTIPLACTION ROUTINE USING INFA ALGORITHM
 3450.begin_multiplication
 3460STMFD R13!,{R14}
 3470STMFD R13!,{R0-R12}
 3480
 3490
 3500\find end of operand1 AND operand2
 3510
 3520MOV R3,R0
 3530MOV R5,#0
 3540.loop_get_end1B
 3550  LDRB R4,[R3],#1
 3560  ADD R5,R5,#1
 3570  CMP R4,#10
 3580BNE loop_get_end1B
 3590
 3600MOV R3,R1
 3610MOV R6,#0
 3620.loop_get_end2B
 3630  LDRB R4,[R3],#1
 3640  ADD R6,R6,#1
 3650  CMP R4,#10
 3660BNE loop_get_end2B
 3670
 3680\LENGTH OF OPERAND 1 IS RETURNED IN R5, LENGTH OF OPERAND 2 IS IN R6
 3690
 3700ADD R7,R5,R6             \CONTAINS TOTAL LENGTHS
 3710
 3720\REGISTERS AVAILABLE = R3,R4,R8-R12,R14
 3730
 3740\structure For..next loop-
 3750
 3760MOV R3,#0
 3770MOV R4,R2
 3780SUB R14,R7,#1 \LOOP COUNTER
 3790.for_loopify1
 3800  STRB R3,[R4],#1
 3810  SUBS R14,R14,#1
 3820BNE for_loopify1
 3830MOV R3,#10
 3840SUB R4,R4,#1
 3850STRB R3,[R4]
 3860ADD R4,R4,#1
 3870
 3880SUB R11,R6,#2   \LOOP COUNTER (J%)
 3890.for_loopify2
 3900  MOV carry,#0
 3910  LDRB R3,[R1,R11]  \G%=B%?J%
 3920  ADD R4,R2,R11
 3930  ADD R4,R4,#1  \V%=D%+J%+1
 3940  SUB R10,R5,#2 \LOOP COUNTER (L%)
 3950  .for_loopify3
 3960    LDRB R9,[R0,R10] \H%=A%?L%
 3970    MUL R14,R3,R9
 3980    ADD R14,R14,carry
 3990    STMFD R13!,{R8}
 4000    LDRB R8,[R4,R10]
 4010    ADD R14,R14,R8
 4020
 4030    \ASSEMBLE MOD AND DIV FUNCTION
 4040    STMFD R13!,{R0-R6}
 4050    MOV R0,R14
 4060    MOV R1,#10
 4070    ANDS R6,R0,#1<<31
 4080    RSBMI R0,R0,#0
 4090    EOR R5,R6,R1
 4100    CMP R1,#0
 4110    RSBMI R1,R1,#0
 4120
 4130    MOV R2,#0
 4140    MOV R3,#0
 4150    MOV R4,#1<<31
 4160
 4170    .division_loop
 4180    MOVS R0,R0,ASL#1
 4190    ADC R2,R2,R2
 4200    CMP R2,R1
 4210    SUBGE R2,R2,R1
 4220    ORRGE R3,R3,R4
 4230    MOVS R4,R4,LSR#1
 4240    BNE division_loop
 4250
 4260    CMP R5,#0
 4270    RSBMI R3,R3,#0
 4280    CMP R6,#0
 4290    RSBMI R2,R2,#0
 4300
 4310    STR R3,divres2
 4320    STR R2,modres2
 4330
 4340    LDMFD R13!,{R0-R6}
 4350
 4360    LDR R8,modres2
 4370    STRB R8,[R4,R10]     \FORMERLY R8
 4380    LDMFD R13!,{R8}
 4390    LDR R8,divres2
 4400    SUBS R10,R10,#1
 4410  BNE for_loopify3
 4420  STRB R8,[R4,R10]
 4430  SUBS R11,R11,#1
 4440BNE for_loopify2
 4450
 4460BL Remove_Leading0s
 4470
 4480LDMFD R13!,{R0-R12}
 4490LDMFD R13!,{PC}
 4500
 4510.divres2
 4520EQUD 0
 4530.modres2
 4540EQUD 0
 4550
 4560
 4570\PURPOSE - RE-WRITTEN LOW-LEVEL DIVISION ROUTINE USING INFA ALGORITHM
 4580.begin_division
 4590STMFD R13!,{R14}
 4600STMFD R13!,{R0-R12}
 4610
 4620BL get_addresses
 4630
 4640\A VALUE OF TEN CORRESPONDS TO TERMINATING BYTE
 4650
 4660\find end of operand1 AND operand2
 4670
 4680MOV R3,R0
 4690MOV R5,#0
 4700.loop_get_end1bC
 4710  LDRB R4,[R3],#1
 4720  ADD R5,R5,#1
 4730  CMP R4,#10
 4740BNE loop_get_end1bC
 4750ADD R5,R5,#1
 4760
 4770MOV R3,R1
 4780MOV R6,#0
 4790.loop_get_end2bC
 4800  LDRB R4,[R3],#1
 4810  ADD R6,R6,#1
 4820  CMP R4,#10
 4830BNE loop_get_end2bC
 4840SUB R6,R6,#1
 4850
 4860\LENGTH OF OPERAND 1 IS RETURNED IN R5, LENGTH OF OPERAND 2 IS IN R6
 4870
 4880\REGISTERS AVAILABLE R3,R4,R8-R12,R14 - carry=8
 4890
 4900MOV R7,#0             \J%
 4910.for_loopify1b
 4920  ADD R3,R0,R7        \W%
 4930  MVN R4,#0           \V%
 4940
 4950  .repeat1
 4960    ADD R4,R4,#1
 4970    MOV carry,#1
 4980    SUB R9,R6,#1     \L%
 4990    .for_loopify2b
 5000      MOV R10,#0     \Q%
 5010      CMP R9,#0
 5020      LDRGEB R10,[R1,R9]
 5030
 5040      LDRB R14,[R3,R9]
 5050      SUB R10,R14,R10
 5060      ADD R10,R10,carry
 5070      ADD R10,R10,#9
 5080
 5090      \ASSEMBLE MOD AND DIV FUNCTION
 5100      STMFD R13!,{R0-R6}
 5110      MOV R0,R10
 5120      MOV R1,#10
 5130      ANDS R6,R0,#1<<31
 5140      RSBMI R0,R0,#0
 5150      EOR R5,R6,R1
 5160      CMP R1,#0
 5170      RSBMI R1,R1,#0
 5180
 5190      MOV R2,#0
 5200      MOV R3,#0
 5210      MOV R4,#1<<31
 5220
 5230      .division_loop2
 5240      MOVS R0,R0,ASL#1
 5250      ADC R2,R2,R2
 5260      CMP R2,R1
 5270      SUBGE R2,R2,R1
 5280      ORRGE R3,R3,R4
 5290      MOVS R4,R4,LSR#1
 5300      BNE division_loop2
 5310
 5320      CMP R5,#0
 5330      RSBMI R3,R3,#0
 5340      CMP R6,#0
 5350      RSBMI R2,R2,#0
 5360
 5370      STR R3,divres3
 5380      STR R2,modres3
 5390
 5400      LDMFD R13!,{R0-R6}
 5410
 5420      LDR R14,modres3
 5430      STRB R14,[R3,R9]
 5440      LDR R8,divres3
 5450      SUB R9,R9,#1
 5460      CMN R9,R7
 5470
 5480
 5490    BNE for_loopify2b
 5500    CMP carry,#0
 5510  BNE repeat1
 5520  SUB R9,R6,#1     \L%
 5530    .for_loopify3b
 5540    MOV R10,#0     \Q%
 5550    CMP R9,#0
 5560    LDRGEB R10,[R1,R9]
 5570    LDRB R14,[R3,R9]
 5580    ADD R10,R10,R14
 5590    ADD R10,R10,carry
 5600
 5610    \ASSEMBLE MOD AND DIV FUNCTION
 5620    STMFD R13!,{R0-R6}
 5630    MOV R0,R10
 5640    MOV R1,#10
 5650    ANDS R6,R0,#1<<31
 5660    RSBMI R0,R0,#0
 5670    EOR R5,R6,R1
 5680    CMP R1,#0
 5690    RSBMI R1,R1,#0
 5700
 5710    MOV R2,#0
 5720    MOV R3,#0
 5730    MOV R4,#1<<31
 5740
 5750    .division_loop3
 5760    MOVS R0,R0,ASL#1
 5770    ADC R2,R2,R2
 5780    CMP R2,R1
 5790    SUBGE R2,R2,R1
 5800    ORRGE R3,R3,R4
 5810    MOVS R4,R4,LSR#1
 5820    BNE division_loop3
 5830
 5840    CMP R5,#0
 5850    RSBMI R3,R3,#0
 5860    CMP R6,#0
 5870    RSBMI R2,R2,#0
 5880
 5890    STR R3,divres3
 5900    STR R2,modres3
 5910
 5920    LDMFD R13!,{R0-R6}
 5930
 5940    LDR R14,modres3
 5950    STRB R14,[R3,R9]
 5960    LDR R8,divres3
 5970    SUB R9,R9,#1
 5980    CMN R9,R7
 5990  BNE for_loopify3b
 6000  STRB R4,[R2,R7]
 6010  ADD R7,R7,#1
 6020  SUB R14,R5,R6
 6030  CMP R7,R14
 6040BLT for_loopify1b
 6050MOV R14,#10
 6060SUB R7,R7,#1
 6070STRB R14,[R2,R7]
 6080
 6090BL Remove_Leading0s
 6100
 6110
 6120LDMFD R13!,{R0-R12}
 6130LDMFD R13!,{PC}
 6140
 6150
 6160.divres3
 6170EQUD 0
 6180.modres3
 6190EQUD 0
 6200
 6210
 6220.Remove_Leading0s
 6230STMFD R13!,{R14}
 6240:
 6250MOV R4,#0
 6260.loop_remove0s
 6270LDRB R5,[R2,R4]
 6280CMP R5,#0
 6290ADDEQ R4,R4,#1
 6300BEQ loop_remove0s
 6310
 6320ADR R6,answer
 6330MOV R7,#0
 6340.loop_swap_string
 6350LDRB R5,[R2,R4]
 6360STRB R5,[R6,R7]
 6370ADD R4,R4,#1
 6380ADD R7,R7,#1
 6390CMP R5,#10
 6400BNE loop_swap_string
 6410
 6420
 6430:
 6440LDMFD R13!,{PC}
 6450
 6460.address_ans
 6470STMFD R13!,{R14}
 6480ADR R8,answer
 6490LDMFD R13!,{PC}
 6500.answer
 6510FNBytes(accuracy%)
 6520
 6530
 6540.get_addresses
 6550STMFD R13!,{R14}
 6560ADR R0,operand1
 6570B next1
 6580.operand1
 6590FNBytes(accuracy%)
 6600.next1
 6610ADR R1,operand2
 6620B next2
 6630.operand2
 6640FNBytes(accuracy%)
 6650.next2
 6660ADR R2,result
 6670B next3
 6680.result
 6690FNBytes(accuracy%)
 6700.next3
 6710ADR R12,e_so_far
 6720LDMFD R13!,{PC}
 6730.e_so_far
 6740FNBytes(accuracy%)
 6750:
 6760:
 6770.fill_e
 6780STMFD R13!,{R14}
 6790:
 6800MOV R5,#0
 6810MOV R6,#0
 6820.loop_fill_e
 6830  STRB R5,[R12,R6]
 6840  ADD R6,R6,#1
 6850  CMP R6,#accuracy2%
 6860BNE loop_fill_e
 6870MOV R5,#10
 6880SUB R6,R6,#1
 6890STRB R5,[R12,R6]
 6900:
 6910LDMFD R13!,{PC}
 6920
 6930]
 6940NEXT
 6950:
 6960MODE 13
 6970GCOL 0,63
 6980
 6990PRINT "Calculating....."
 7000CALL Factoriallify
 7010
 7020REM *SPOOL E_FILE3
 7030  PRINT
 7040  PRINT
 7050  PRINT
 7060  A=0
 7070  REPEAT
 7080    A+=1
 7090  UNTIL (e_so_far?A)=7
 7100  PRINT "2.";
 7110  REPEAT
 7120    PRINT STR$(e_so_far?A);
 7130    A+=1
 7140  UNTIL (e_so_far?A)=10
 7150REM *SPOOL
 7160
 7170END
 7180:
 7190DEFFNBytes(inc%)
 7200P%+=inc%
 7210=0
 7220:

� � �:�;�:�
� code% 400000
carry=8
(
aba=13
2it%=100
<accuracy%=1<<(aba)
Faccuracy2%=1<<(aba-1)
P
acc2%=100
Z� pass%=0 � 2 � 2
dP%=code%
n[
x
OPT pass%
�
�	.SVIT
�
EQUD 0
�
�.Factoriallify
�STMFD R13!,{R14}
�:
�BL get_addresses
�
BL fill_e
�$MOV R3,#0             \factorial
�.main_for_loopifys1
�
�  STR R0,SVIT
   SWI "OS_ReadMonotonicTime"
  STMFD R13!,{R0}
  LDR R0,SVIT
"
,  MOV R14,#0
6  STRB R14,[R0]
@  STRB R14,[R1]
J  CMP R3,#1
T  MOVLE  R14,#1
^  STRLEB R14,[R0,#1]
h  STRLEB R14,[R1,#1]
r  MOVLE  R14,#10
|  STRLEB R14,[R0,#2]
�  STRLEB R14,[R1,#2]
�  CMP R3,#1
�  ADRGT R4,adollar
�  MOVGT R0,R4
�%  BLGT numbertosamstringfactorial
�  BL begin_multiplication
�#  \RESULT IS RETURNED IN answer
�  \copy to adollar
�  MOV R5,#0
�  ADR R7,adollar
�  MOV R14,#0
�  STRB R14,[R7],#1
�  BL address_ans
  .main_for_loopifys2
    LDRB R6,[R8,R5]
    STRB R6,[R7,R5]
&    CMP R6,#10
0    ADD R5,R5,#1
:  BNE main_for_loopifys2
D
N  BL get_addresses
X  MOV R14,#0
b  STRB R14,[R0]
l  MOV R14,#1
v  STRB R14,[R0,#1]
�  MOV R14,#0
�  MOV R5,#2
�  .main_for_loopifysc1
�    STRB R14,[R0,R5]
�    ADD R5,R5,#1
�    CMP R5,#acc2%
�  BNE main_for_loopifysc1
�  MOV R14,#10
�  STRB R14,[R0,R5]
�
�  MOV R14,#0
�  STRB R14,[R1]
�  MOV R5,#1
  MOV R11,#0
  BL address_ans
  .main_for_loopifysc2
     LDRB R14,[R8,R11]
*    STRB R14,[R1,R5]
4    ADD R11,R11,#1
>    ADD R5,R5,#1
H    CMP R14,#10
R  BNE main_for_loopifysc2
\
f  BL begin_division
p
z  MOV R14,#0
�  STRB R14,[R0]
�  MOV R5,#1
�  MOV R11,#0
�  BL address_ans
�  .main_for_loopifysc3
�    LDRB R14,[R8,R11]
�    STRB R14,[R0,R5]
�    ADD R11,R11,#1
�    ADD R5,R5,#1
�    CMP R14,#10
�  BNE main_for_loopifysc3
�
�  MOV R14,#0
  STRB R14,[R1]
  MOV R5,#1
  MOV R11,#0
$  BL address_ans
.  .main_for_loopifysc4
8    LDRB R14,[R12,R11]
B    STRB R14,[R1,R5]
L    ADD R11,R11,#1
V    ADD R5,R5,#1
`    CMP R14,#10
j  BNE main_for_loopifysc4
t
~  BL begin_addition
�
�  BL get_addresses
�  BL address_ans
�  MOV R14,#0
�  .main_for_loopifysc5
�    LDRB R5,[R8,R14]
�    STRB R5,[R12,R14]
�    ADD R14,R14,#1
�    CMP R5,#10
�  BNE main_for_loopifysc5
�
�


  STMFD R13!,{R0-R5}
  SWI 256+12
  SWI "OS_RemoveCursors"
(  SWI 256+5
2  MOV R0,#4
<  MOV R1,#200
F  MOV R2,#800
P  SWI "OS_Plot"
Z  SWI "OS_WriteS"
d#  EQUS "Iterations Calculated "
n  EQUB 0
x  ALIGN
�  MOV R0,R3
�  ADR R1,buffer2
�  MOV R2,#32
�  SWI "OS_ConvertCardinal4"
�  SWI "OS_Write0"
�
�  MOV R0,#4
�  MOV R1,#200
�  MOV R2,#600
�  SWI "OS_Plot"
�  SWI "OS_WriteS"
�'  EQUS "Time For Last Calculation "
�  EQUB 0
  ALIGN

  LDMFD R13!,{R0-R5}
"
,  LDMFD R13!,{R14}
6  STMFD R13!,{R0-R5}
@   SWI "OS_ReadMonotonicTime"
J  SUB R14,R0,R14
T  MOV R0,R14
^  ADR R1,buffer2
h  MOV R2,#32
r  SWI "OS_ConvertCardinal4"
|  SWI "OS_Write0"
�
�  MOV R0,#4
�  MOV R1,#200
�  MOV R2,#400
�  SWI "OS_Plot"
�  SWI "OS_WriteS"
�"  EQUS "Remaining Iterations "
�  EQUB 0
�  ALIGN
�  RSB R0,R3,#it%
�  ADR R1,buffer2
�  MOV R2,#32
�  SWI "OS_ConvertCardinal4"
  SWI "OS_Write0"

  SWI 256+4
&  LDMFD R13!,{R0-R5}
0
:
D
N#  \RESULT IS RETURNED IN ANSWER
X
b  SWI "OS_ReadEscapeState"
l  LDMCSFD R13!,{PC}
v
�  ADD R3,R3,#1
�  CMP R3,#it%
�BLE main_for_loopifys1
�
�LDMFD R13!,{PC}
�
�.buffer2
��Bytes(32)
�
�.adollar
��Bytes(accuracy%)
�:
�:
.numbertosamstringfactorial
STMFD R13!,{R14}
STMFD R13!,{R0-R9}
 :
*
MOV R9,R1
4
>
MOV R0,R3
HADR R1,buffer
RMOV R2,#32
\SWI "OS_ConvertCardinal4"
f
MOV R6,#1
p.ntsfor_loopify1
z  LDRB R5,[R0],#1
�  SUB R5,R5,#�("0")
�  STRB R5,[R9,R6]
�  ADD R6,R6,#1
�  CMP R0,R1
�BLE ntsfor_loopify1
�MOV R14,#10
�SUB R6,R6,#1
�STRB R14,[R9,R6]
�:
�LDMFD R13!,{R0-R9}
�LDMFD R13!,{PC}
�.buffer
��Bytes(32)
	:
	:
	I\PURPOSE - RE-WRITTEN LOW-LEVEL ADDITION ROUTINE USING INFA ALGORITHM
	$.begin_addition
	.STMFD R13!,{R14}
	8STMFD R13!,{R0-R12}
	B
	L/\A �UE � TEN CORRESPONDS � TERMINATING BYTE
	V
	`$\find end of operand1 � operand2
	j
	t
MOV R3,R0
	~
MOV R5,#0
	�.loop_get_end1
	�  LDRB R4,[R3],#1
	�  ADD R5,R5,#1
	�  CMP R4,#10
	�BNE loop_get_end1
	�
	�
MOV R3,R1
	�
MOV R6,#0
	�.loop_get_end2
	�  LDRB R4,[R3],#1
	�  ADD R6,R6,#1
	�  CMP R4,#10
BNE loop_get_end2


B\�GTH � OPERAND 1 IS RETURNED IN R5, �GTH � OPERAND 2 IS IN R6

(!SUB R3,R5,R6      \R3 IS DIFF
2
CMP R3,#0
<RSBLT R3,R3,#0
F
CMP R5,R6
PMOVLT R4,R1
ZMOVLT R1,R0
dMOVLT R0,R4
n
x%MOVGT R4,R5      \R4 IS MAXLENGTH
�MOVLE R4,R6
�
�MOV carry,#0
�
�\structure for...next loop
�
�SUB R4,R4,#2
�
MOV R7,R4
�  .for_loopify1c
�  LDRB R9,[R0,R7]    \Q1%
�  SUBS R14,R7,R3
�  LDRGTB R10,[R1,R14]
�  MOVLE R10,#0       \Q2%
  ADD R9,R9,R10
  ADD R9,R9,carry

"
,     \ASSEMBLE � � � FUNCTION
6    STMFD R13!,{R0-R6}
@    MOV R0,R9
J    MOV R1,#10
T    �S R6,R0,#1<<31
^    RSBMI R0,R0,#0
h    � R5,R6,R1
r    CMP R1,#0
|    RSBMI R1,R1,#0
�
�    MOV R2,#0
�    MOV R3,#0
�    MOV R4,#1<<31
�
�    .division_loop11
�    MOVS R0,R0,ASL#1
�    ADC R2,R2,R2
�    CMP R2,R1
�    SUBGE R2,R2,R1
�    �RGE R3,R3,R4
�    MOVS R4,R4,LSR#1
�    BNE division_loop11

    CMP R5,#0
    RSBMI R3,R3,#0
&    CMP R6,#0
0    RSBMI R2,R2,#0
:
D    STR R3,divres
N    STR R2,modres
X
b    LDMFD R13!,{R0-R6}
l
v  LDR R14,modres
�  STRB R14,[R2,R7]
�  LDR carry,divres
�
�  SUBS R7,R7,#1
�
�BNE for_loopify1c
�CMP carry,#0
�STRB carry,[R2]
�MOV R14,#10
�
CMP R4,#3
�ADDGT R4,R4,#1
�ADD R4,R4,#1
�STRB R14,[R2,R4]



BL Remove_Leading0s



 LDMFD R13!,{R0-R12}

*LDMFD R13!,{PC}

4

>.divres

H
EQUD 0

R.modres

\
EQUD 0

f

pN\PURPOSE - RE-WRITTEN LOW-LEVEL MULTIPLACTION ROUTINE USING INFA ALGORITHM

z.begin_multiplication

�STMFD R13!,{R14}

�STMFD R13!,{R0-R12}

�

�

�$\find end of operand1 � operand2

�

�
MOV R3,R0

�
MOV R5,#0

�.loop_get_end1B

�  LDRB R4,[R3],#1

�  ADD R5,R5,#1

�  CMP R4,#10

�BNE loop_get_end1B


MOV R3,R1

MOV R6,#0
$.loop_get_end2B
.  LDRB R4,[R3],#1
8  ADD R6,R6,#1
B  CMP R4,#10
LBNE loop_get_end2B
V
`B\�GTH � OPERAND 1 IS RETURNED IN R5, �GTH � OPERAND 2 IS IN R6
j
t1ADD R7,R5,R6             \CONTAINS �TAL �GTHS
~
�+\REGISTERS AVAILABLE = R3,R4,R8-R12,R14
�
�\structure For..next loop-
�
�
MOV R3,#0
�
MOV R4,R2
�SUB R14,R7,#1 \LOOP COUNTER
�.for_loopify1
�  STRB R3,[R4],#1
�  SUBS R14,R14,#1
�BNE for_loopify1
�MOV R3,#10
SUB R4,R4,#1

STRB R3,[R4]
ADD R4,R4,#1

(&SUB R11,R6,#2   \LOOP COUNTER (J%)
2.for_loopify2
<  MOV carry,#0
F!  LDRB R3,[R1,R11]  \G%=B%?J%
P  ADD R4,R2,R11
Z  ADD R4,R4,#1  \V%=D%+J%+1
d&  SUB R10,R5,#2 \LOOP COUNTER (L%)
n  .for_loopify3
x"    LDRB R9,[R0,R10] \H%=A%?L%
�    MUL R14,R3,R9
�    ADD R14,R14,carry
�    STMFD R13!,{R8}
�    LDRB R8,[R4,R10]
�    ADD R14,R14,R8
�
�     \ASSEMBLE � � � FUNCTION
�    STMFD R13!,{R0-R6}
�    MOV R0,R14
�    MOV R1,#10
�    �S R6,R0,#1<<31
�    RSBMI R0,R0,#0
�    � R5,R6,R1
    CMP R1,#0
    RSBMI R1,R1,#0

"    MOV R2,#0
,    MOV R3,#0
6    MOV R4,#1<<31
@
J    .division_loop
T    MOVS R0,R0,ASL#1
^    ADC R2,R2,R2
h    CMP R2,R1
r    SUBGE R2,R2,R1
|    �RGE R3,R3,R4
�    MOVS R4,R4,LSR#1
�    BNE division_loop
�
�    CMP R5,#0
�    RSBMI R3,R3,#0
�    CMP R6,#0
�    RSBMI R2,R2,#0
�
�    STR R3,divres2
�    STR R2,modres2
�
�    LDMFD R13!,{R0-R6}
�
    LDR R8,modres2
'    STRB R8,[R4,R10]     \�MERLY R8
    LDMFD R13!,{R8}
&    LDR R8,divres2
0    SUBS R10,R10,#1
:  BNE for_loopify3
D  STRB R8,[R4,R10]
N  SUBS R11,R11,#1
XBNE for_loopify2
b
lBL Remove_Leading0s
v
�LDMFD R13!,{R0-R12}
�LDMFD R13!,{PC}
�
�.divres2
�
EQUD 0
�.modres2
�
EQUD 0
�
�
�G\PURPOSE - RE-WRITTEN LOW-LEVEL �ISION ROUTINE USING INFA ALGORITHM
�.begin_division
�STMFD R13!,{R14}
�STMFD R13!,{R0-R12}

BL get_addresses

 /\A �UE � TEN CORRESPONDS � TERMINATING BYTE
*
4$\find end of operand1 � operand2
>
H
MOV R3,R0
R
MOV R5,#0
\.loop_get_end1bC
f  LDRB R4,[R3],#1
p  ADD R5,R5,#1
z  CMP R4,#10
�BNE loop_get_end1bC
�ADD R5,R5,#1
�
�
MOV R3,R1
�
MOV R6,#0
�.loop_get_end2bC
�  LDRB R4,[R3],#1
�  ADD R6,R6,#1
�  CMP R4,#10
�BNE loop_get_end2bC
�SUB R6,R6,#1
�
�B\�GTH � OPERAND 1 IS RETURNED IN R5, �GTH � OPERAND 2 IS IN R6

3\REGISTERS AVAILABLE R3,R4,R8-R12,R14 - carry=8

$MOV R7,#0             \J%
..for_loopify1b
8  ADD R3,R0,R7        \W%
B  MVN R4,#0           \V%
L
V  .repeat1
`    ADD R4,R4,#1
j    MOV carry,#1
t    SUB R9,R6,#1     \L%
~    .for_loopify2b
�      MOV R10,#0     \Q%
�      CMP R9,#0
�      LDRGEB R10,[R1,R9]
�
�      LDRB R14,[R3,R9]
�      SUB R10,R14,R10
�      ADD R10,R10,carry
�      ADD R10,R10,#9
�
�"      \ASSEMBLE � � � FUNCTION
�      STMFD R13!,{R0-R6}
�      MOV R0,R10
      MOV R1,#10

      �S R6,R0,#1<<31
      RSBMI R0,R0,#0
      � R5,R6,R1
(      CMP R1,#0
2      RSBMI R1,R1,#0
<
F      MOV R2,#0
P      MOV R3,#0
Z      MOV R4,#1<<31
d
n      .division_loop2
x      MOVS R0,R0,ASL#1
�      ADC R2,R2,R2
�      CMP R2,R1
�      SUBGE R2,R2,R1
�      �RGE R3,R3,R4
�      MOVS R4,R4,LSR#1
�      BNE division_loop2
�
�      CMP R5,#0
�      RSBMI R3,R3,#0
�      CMP R6,#0
�      RSBMI R2,R2,#0
�
�      STR R3,divres3
      STR R2,modres3

      LDMFD R13!,{R0-R6}
"
,      LDR R14,modres3
6      STRB R14,[R3,R9]
@      LDR R8,divres3
J      SUB R9,R9,#1
T      CMN R9,R7
^
h
r    BNE for_loopify2b
|    CMP carry,#0
�  BNE repeat1
�  SUB R9,R6,#1     \L%
�    .for_loopify3b
�    MOV R10,#0     \Q%
�    CMP R9,#0
�    LDRGEB R10,[R1,R9]
�    LDRB R14,[R3,R9]
�    ADD R10,R10,R14
�    ADD R10,R10,carry
�
�     \ASSEMBLE � � � FUNCTION
�    STMFD R13!,{R0-R6}
�    MOV R0,R10
    MOV R1,#10
    �S R6,R0,#1<<31
    RSBMI R0,R0,#0
&    � R5,R6,R1
0    CMP R1,#0
:    RSBMI R1,R1,#0
D
N    MOV R2,#0
X    MOV R3,#0
b    MOV R4,#1<<31
l
v    .division_loop3
�    MOVS R0,R0,ASL#1
�    ADC R2,R2,R2
�    CMP R2,R1
�    SUBGE R2,R2,R1
�    �RGE R3,R3,R4
�    MOVS R4,R4,LSR#1
�    BNE division_loop3
�
�    CMP R5,#0
�    RSBMI R3,R3,#0
�    CMP R6,#0
�    RSBMI R2,R2,#0
�
    STR R3,divres3
    STR R2,modres3

     LDMFD R13!,{R0-R6}
*
4    LDR R14,modres3
>    STRB R14,[R3,R9]
H    LDR R8,divres3
R    SUB R9,R9,#1
\    CMN R9,R7
f  BNE for_loopify3b
p  STRB R4,[R2,R7]
z  ADD R7,R7,#1
�  SUB R14,R5,R6
�  CMP R7,R14
�BLT for_loopify1b
�MOV R14,#10
�SUB R7,R7,#1
�STRB R14,[R2,R7]
�
�BL Remove_Leading0s
�
�
�LDMFD R13!,{R0-R12}
�LDMFD R13!,{PC}
�

.divres3

EQUD 0
$.modres3
.
EQUD 0
8
B
L.Remove_Leading0s
VSTMFD R13!,{R14}
`:
j
MOV R4,#0
t.loop_remove0s
~LDRB R5,[R2,R4]
�
CMP R5,#0
�ADDEQ R4,R4,#1
�BEQ loop_remove0s
�
�ADR R6,answer
�
MOV R7,#0
�.loop_swap_string
�LDRB R5,[R2,R4]
�STRB R5,[R6,R7]
�ADD R4,R4,#1
�ADD R7,R7,#1
�CMP R5,#10
BNE loop_swap_string



:
(LDMFD R13!,{PC}
2
<.address_ans
FSTMFD R13!,{R14}
PADR R8,answer
ZLDMFD R13!,{PC}
d.answer
n�Bytes(accuracy%)
x
�
�.get_addresses
�STMFD R13!,{R14}
�ADR R0,operand1
�B next1
�
.operand1
��Bytes(accuracy%)
�
.next1
�ADR R1,operand2
�B next2
�
.operand2
��Bytes(accuracy%)
�
.next2
ADR R2,result
B next3
.result
"�Bytes(accuracy%)
,
.next3
6ADR R12,e_so_far
@LDMFD R13!,{PC}
J
.e_so_far
T�Bytes(accuracy%)
^:
h:
r.fill_e
|STMFD R13!,{R14}
�:
�
MOV R5,#0
�
MOV R6,#0
�.loop_fill_e
�  STRB R5,[R12,R6]
�  ADD R6,R6,#1
�  CMP R6,#accuracy2%
�BNE loop_fill_e
�MOV R5,#10
�SUB R6,R6,#1
�STRB R5,[R12,R6]
�:
�LDMFD R13!,{PC}

]
�
&:
0� 13
:
� 0,63
D
N� "Calculating....."
X� Factoriallify
b
l� *SPOOL E_FILE3
v  �
�  �
�  �
�	  A=0
�  �
�    A+=1
�  � (e_so_far?A)=7
�
  � "2.";
�  �
�    � �(e_so_far?A);
�    A+=1
�  � (e_so_far?A)=10
�� *SPOOL
�
�
:
ݤBytes(inc%)
 P%+=inc%
*=0
4:
�
00000000  0d 00 0a 0f ee 20 85 20  f6 3a f1 3b 9e 3a e0 0d  |..... . .:.;.:..|
00000010  00 14 12 de 20 63 6f 64  65 25 20 34 30 30 30 30  |.... code% 40000|
00000020  30 0d 00 1e 0b 63 61 72  72 79 3d 38 0d 00 28 0a  |0....carry=8..(.|
00000030  61 62 61 3d 31 33 0d 00  32 0b 69 74 25 3d 31 30  |aba=13..2.it%=10|
00000040  30 0d 00 3c 16 61 63 63  75 72 61 63 79 25 3d 31  |0..<.accuracy%=1|
00000050  3c 3c 28 61 62 61 29 0d  00 46 19 61 63 63 75 72  |<<(aba)..F.accur|
00000060  61 63 79 32 25 3d 31 3c  3c 28 61 62 61 2d 31 29  |acy2%=1<<(aba-1)|
00000070  0d 00 50 0d 61 63 63 32  25 3d 31 30 30 0d 00 5a  |..P.acc2%=100..Z|
00000080  15 e3 20 70 61 73 73 25  3d 30 20 b8 20 32 20 88  |.. pass%=0 . 2 .|
00000090  20 32 0d 00 64 0c 50 25  3d 63 6f 64 65 25 0d 00  | 2..d.P%=code%..|
000000a0  6e 05 5b 0d 00 78 0d 4f  50 54 20 70 61 73 73 25  |n.[..x.OPT pass%|
000000b0  0d 00 82 04 0d 00 8c 09  2e 53 56 49 54 0d 00 96  |.........SVIT...|
000000c0  0a 45 51 55 44 20 30 0d  00 a0 04 0d 00 aa 12 2e  |.EQUD 0.........|
000000d0  46 61 63 74 6f 72 69 61  6c 6c 69 66 79 0d 00 b4  |Factoriallify...|
000000e0  14 53 54 4d 46 44 20 52  31 33 21 2c 7b 52 31 34  |.STMFD R13!,{R14|
000000f0  7d 0d 00 be 05 3a 0d 00  c8 14 42 4c 20 67 65 74  |}....:....BL get|
00000100  5f 61 64 64 72 65 73 73  65 73 0d 00 d2 0d 42 4c  |_addresses....BL|
00000110  20 66 69 6c 6c 5f 65 0d  00 dc 24 4d 4f 56 20 52  | fill_e...$MOV R|
00000120  33 2c 23 30 20 20 20 20  20 20 20 20 20 20 20 20  |3,#0            |
00000130  20 5c 66 61 63 74 6f 72  69 61 6c 0d 00 e6 17 2e  | \factorial.....|
00000140  6d 61 69 6e 5f 66 6f 72  5f 6c 6f 6f 70 69 66 79  |main_for_loopify|
00000150  73 31 0d 00 f0 04 0d 00  fa 11 20 20 53 54 52 20  |s1........  STR |
00000160  52 30 2c 53 56 49 54 0d  01 04 20 20 20 53 57 49  |R0,SVIT...   SWI|
00000170  20 22 4f 53 5f 52 65 61  64 4d 6f 6e 6f 74 6f 6e  | "OS_ReadMonoton|
00000180  69 63 54 69 6d 65 22 0d  01 0e 15 20 20 53 54 4d  |icTime"....  STM|
00000190  46 44 20 52 31 33 21 2c  7b 52 30 7d 0d 01 18 11  |FD R13!,{R0}....|
000001a0  20 20 4c 44 52 20 52 30  2c 53 56 49 54 0d 01 22  |  LDR R0,SVIT.."|
000001b0  04 0d 01 2c 10 20 20 4d  4f 56 20 52 31 34 2c 23  |...,.  MOV R14,#|
000001c0  30 0d 01 36 13 20 20 53  54 52 42 20 52 31 34 2c  |0..6.  STRB R14,|
000001d0  5b 52 30 5d 0d 01 40 13  20 20 53 54 52 42 20 52  |[R0]..@.  STRB R|
000001e0  31 34 2c 5b 52 31 5d 0d  01 4a 0f 20 20 43 4d 50  |14,[R1]..J.  CMP|
000001f0  20 52 33 2c 23 31 0d 01  54 13 20 20 4d 4f 56 4c  | R3,#1..T.  MOVL|
00000200  45 20 20 52 31 34 2c 23  31 0d 01 5e 18 20 20 53  |E  R14,#1..^.  S|
00000210  54 52 4c 45 42 20 52 31  34 2c 5b 52 30 2c 23 31  |TRLEB R14,[R0,#1|
00000220  5d 0d 01 68 18 20 20 53  54 52 4c 45 42 20 52 31  |]..h.  STRLEB R1|
00000230  34 2c 5b 52 31 2c 23 31  5d 0d 01 72 14 20 20 4d  |4,[R1,#1]..r.  M|
00000240  4f 56 4c 45 20 20 52 31  34 2c 23 31 30 0d 01 7c  |OVLE  R14,#10..||
00000250  18 20 20 53 54 52 4c 45  42 20 52 31 34 2c 5b 52  |.  STRLEB R14,[R|
00000260  30 2c 23 32 5d 0d 01 86  18 20 20 53 54 52 4c 45  |0,#2]....  STRLE|
00000270  42 20 52 31 34 2c 5b 52  31 2c 23 32 5d 0d 01 90  |B R14,[R1,#2]...|
00000280  0f 20 20 43 4d 50 20 52  33 2c 23 31 0d 01 9a 16  |.  CMP R3,#1....|
00000290  20 20 41 44 52 47 54 20  52 34 2c 61 64 6f 6c 6c  |  ADRGT R4,adoll|
000002a0  61 72 0d 01 a4 11 20 20  4d 4f 56 47 54 20 52 30  |ar....  MOVGT R0|
000002b0  2c 52 34 0d 01 ae 25 20  20 42 4c 47 54 20 6e 75  |,R4...%  BLGT nu|
000002c0  6d 62 65 72 74 6f 73 61  6d 73 74 72 69 6e 67 66  |mbertosamstringf|
000002d0  61 63 74 6f 72 69 61 6c  0d 01 b8 1d 20 20 42 4c  |actorial....  BL|
000002e0  20 62 65 67 69 6e 5f 6d  75 6c 74 69 70 6c 69 63  | begin_multiplic|
000002f0  61 74 69 6f 6e 0d 01 c2  23 20 20 5c 52 45 53 55  |ation...#  \RESU|
00000300  4c 54 20 49 53 20 52 45  54 55 52 4e 45 44 20 49  |LT IS RETURNED I|
00000310  4e 20 61 6e 73 77 65 72  0d 01 cc 16 20 20 5c 63  |N answer....  \c|
00000320  6f 70 79 20 74 6f 20 61  64 6f 6c 6c 61 72 0d 01  |opy to adollar..|
00000330  d6 0f 20 20 4d 4f 56 20  52 35 2c 23 30 0d 01 e0  |..  MOV R5,#0...|
00000340  14 20 20 41 44 52 20 52  37 2c 61 64 6f 6c 6c 61  |.  ADR R7,adolla|
00000350  72 0d 01 ea 10 20 20 4d  4f 56 20 52 31 34 2c 23  |r....  MOV R14,#|
00000360  30 0d 01 f4 16 20 20 53  54 52 42 20 52 31 34 2c  |0....  STRB R14,|
00000370  5b 52 37 5d 2c 23 31 0d  01 fe 14 20 20 42 4c 20  |[R7],#1....  BL |
00000380  61 64 64 72 65 73 73 5f  61 6e 73 0d 02 08 19 20  |address_ans.... |
00000390  20 2e 6d 61 69 6e 5f 66  6f 72 5f 6c 6f 6f 70 69  | .main_for_loopi|
000003a0  66 79 73 32 0d 02 12 17  20 20 20 20 4c 44 52 42  |fys2....    LDRB|
000003b0  20 52 36 2c 5b 52 38 2c  52 35 5d 0d 02 1c 17 20  | R6,[R8,R5].... |
000003c0  20 20 20 53 54 52 42 20  52 36 2c 5b 52 37 2c 52  |   STRB R6,[R7,R|
000003d0  35 5d 0d 02 26 12 20 20  20 20 43 4d 50 20 52 36  |5]..&.    CMP R6|
000003e0  2c 23 31 30 0d 02 30 14  20 20 20 20 41 44 44 20  |,#10..0.    ADD |
000003f0  52 35 2c 52 35 2c 23 31  0d 02 3a 1c 20 20 42 4e  |R5,R5,#1..:.  BN|
00000400  45 20 6d 61 69 6e 5f 66  6f 72 5f 6c 6f 6f 70 69  |E main_for_loopi|
00000410  66 79 73 32 0d 02 44 04  0d 02 4e 16 20 20 42 4c  |fys2..D...N.  BL|
00000420  20 67 65 74 5f 61 64 64  72 65 73 73 65 73 0d 02  | get_addresses..|
00000430  58 10 20 20 4d 4f 56 20  52 31 34 2c 23 30 0d 02  |X.  MOV R14,#0..|
00000440  62 13 20 20 53 54 52 42  20 52 31 34 2c 5b 52 30  |b.  STRB R14,[R0|
00000450  5d 0d 02 6c 10 20 20 4d  4f 56 20 52 31 34 2c 23  |]..l.  MOV R14,#|
00000460  31 0d 02 76 16 20 20 53  54 52 42 20 52 31 34 2c  |1..v.  STRB R14,|
00000470  5b 52 30 2c 23 31 5d 0d  02 80 10 20 20 4d 4f 56  |[R0,#1]....  MOV|
00000480  20 52 31 34 2c 23 30 0d  02 8a 0f 20 20 4d 4f 56  | R14,#0....  MOV|
00000490  20 52 35 2c 23 32 0d 02  94 1a 20 20 2e 6d 61 69  | R5,#2....  .mai|
000004a0  6e 5f 66 6f 72 5f 6c 6f  6f 70 69 66 79 73 63 31  |n_for_loopifysc1|
000004b0  0d 02 9e 18 20 20 20 20  53 54 52 42 20 52 31 34  |....    STRB R14|
000004c0  2c 5b 52 30 2c 52 35 5d  0d 02 a8 14 20 20 20 20  |,[R0,R5]....    |
000004d0  41 44 44 20 52 35 2c 52  35 2c 23 31 0d 02 b2 15  |ADD R5,R5,#1....|
000004e0  20 20 20 20 43 4d 50 20  52 35 2c 23 61 63 63 32  |    CMP R5,#acc2|
000004f0  25 0d 02 bc 1d 20 20 42  4e 45 20 6d 61 69 6e 5f  |%....  BNE main_|
00000500  66 6f 72 5f 6c 6f 6f 70  69 66 79 73 63 31 0d 02  |for_loopifysc1..|
00000510  c6 11 20 20 4d 4f 56 20  52 31 34 2c 23 31 30 0d  |..  MOV R14,#10.|
00000520  02 d0 16 20 20 53 54 52  42 20 52 31 34 2c 5b 52  |...  STRB R14,[R|
00000530  30 2c 52 35 5d 0d 02 da  04 0d 02 e4 10 20 20 4d  |0,R5]........  M|
00000540  4f 56 20 52 31 34 2c 23  30 0d 02 ee 13 20 20 53  |OV R14,#0....  S|
00000550  54 52 42 20 52 31 34 2c  5b 52 31 5d 0d 02 f8 0f  |TRB R14,[R1]....|
00000560  20 20 4d 4f 56 20 52 35  2c 23 31 0d 03 02 10 20  |  MOV R5,#1.... |
00000570  20 4d 4f 56 20 52 31 31  2c 23 30 0d 03 0c 14 20  | MOV R11,#0.... |
00000580  20 42 4c 20 61 64 64 72  65 73 73 5f 61 6e 73 0d  | BL address_ans.|
00000590  03 16 1a 20 20 2e 6d 61  69 6e 5f 66 6f 72 5f 6c  |...  .main_for_l|
000005a0  6f 6f 70 69 66 79 73 63  32 0d 03 20 19 20 20 20  |oopifysc2.. .   |
000005b0  20 4c 44 52 42 20 52 31  34 2c 5b 52 38 2c 52 31  | LDRB R14,[R8,R1|
000005c0  31 5d 0d 03 2a 18 20 20  20 20 53 54 52 42 20 52  |1]..*.    STRB R|
000005d0  31 34 2c 5b 52 31 2c 52  35 5d 0d 03 34 16 20 20  |14,[R1,R5]..4.  |
000005e0  20 20 41 44 44 20 52 31  31 2c 52 31 31 2c 23 31  |  ADD R11,R11,#1|
000005f0  0d 03 3e 14 20 20 20 20  41 44 44 20 52 35 2c 52  |..>.    ADD R5,R|
00000600  35 2c 23 31 0d 03 48 13  20 20 20 20 43 4d 50 20  |5,#1..H.    CMP |
00000610  52 31 34 2c 23 31 30 0d  03 52 1d 20 20 42 4e 45  |R14,#10..R.  BNE|
00000620  20 6d 61 69 6e 5f 66 6f  72 5f 6c 6f 6f 70 69 66  | main_for_loopif|
00000630  79 73 63 32 0d 03 5c 04  0d 03 66 17 20 20 42 4c  |ysc2..\...f.  BL|
00000640  20 62 65 67 69 6e 5f 64  69 76 69 73 69 6f 6e 0d  | begin_division.|
00000650  03 70 04 0d 03 7a 10 20  20 4d 4f 56 20 52 31 34  |.p...z.  MOV R14|
00000660  2c 23 30 0d 03 84 13 20  20 53 54 52 42 20 52 31  |,#0....  STRB R1|
00000670  34 2c 5b 52 30 5d 0d 03  8e 0f 20 20 4d 4f 56 20  |4,[R0]....  MOV |
00000680  52 35 2c 23 31 0d 03 98  10 20 20 4d 4f 56 20 52  |R5,#1....  MOV R|
00000690  31 31 2c 23 30 0d 03 a2  14 20 20 42 4c 20 61 64  |11,#0....  BL ad|
000006a0  64 72 65 73 73 5f 61 6e  73 0d 03 ac 1a 20 20 2e  |dress_ans....  .|
000006b0  6d 61 69 6e 5f 66 6f 72  5f 6c 6f 6f 70 69 66 79  |main_for_loopify|
000006c0  73 63 33 0d 03 b6 19 20  20 20 20 4c 44 52 42 20  |sc3....    LDRB |
000006d0  52 31 34 2c 5b 52 38 2c  52 31 31 5d 0d 03 c0 18  |R14,[R8,R11]....|
000006e0  20 20 20 20 53 54 52 42  20 52 31 34 2c 5b 52 30  |    STRB R14,[R0|
000006f0  2c 52 35 5d 0d 03 ca 16  20 20 20 20 41 44 44 20  |,R5]....    ADD |
00000700  52 31 31 2c 52 31 31 2c  23 31 0d 03 d4 14 20 20  |R11,R11,#1....  |
00000710  20 20 41 44 44 20 52 35  2c 52 35 2c 23 31 0d 03  |  ADD R5,R5,#1..|
00000720  de 13 20 20 20 20 43 4d  50 20 52 31 34 2c 23 31  |..    CMP R14,#1|
00000730  30 0d 03 e8 1d 20 20 42  4e 45 20 6d 61 69 6e 5f  |0....  BNE main_|
00000740  66 6f 72 5f 6c 6f 6f 70  69 66 79 73 63 33 0d 03  |for_loopifysc3..|
00000750  f2 04 0d 03 fc 10 20 20  4d 4f 56 20 52 31 34 2c  |......  MOV R14,|
00000760  23 30 0d 04 06 13 20 20  53 54 52 42 20 52 31 34  |#0....  STRB R14|
00000770  2c 5b 52 31 5d 0d 04 10  0f 20 20 4d 4f 56 20 52  |,[R1]....  MOV R|
00000780  35 2c 23 31 0d 04 1a 10  20 20 4d 4f 56 20 52 31  |5,#1....  MOV R1|
00000790  31 2c 23 30 0d 04 24 14  20 20 42 4c 20 61 64 64  |1,#0..$.  BL add|
000007a0  72 65 73 73 5f 61 6e 73  0d 04 2e 1a 20 20 2e 6d  |ress_ans....  .m|
000007b0  61 69 6e 5f 66 6f 72 5f  6c 6f 6f 70 69 66 79 73  |ain_for_loopifys|
000007c0  63 34 0d 04 38 1a 20 20  20 20 4c 44 52 42 20 52  |c4..8.    LDRB R|
000007d0  31 34 2c 5b 52 31 32 2c  52 31 31 5d 0d 04 42 18  |14,[R12,R11]..B.|
000007e0  20 20 20 20 53 54 52 42  20 52 31 34 2c 5b 52 31  |    STRB R14,[R1|
000007f0  2c 52 35 5d 0d 04 4c 16  20 20 20 20 41 44 44 20  |,R5]..L.    ADD |
00000800  52 31 31 2c 52 31 31 2c  23 31 0d 04 56 14 20 20  |R11,R11,#1..V.  |
00000810  20 20 41 44 44 20 52 35  2c 52 35 2c 23 31 0d 04  |  ADD R5,R5,#1..|
00000820  60 13 20 20 20 20 43 4d  50 20 52 31 34 2c 23 31  |`.    CMP R14,#1|
00000830  30 0d 04 6a 1d 20 20 42  4e 45 20 6d 61 69 6e 5f  |0..j.  BNE main_|
00000840  66 6f 72 5f 6c 6f 6f 70  69 66 79 73 63 34 0d 04  |for_loopifysc4..|
00000850  74 04 0d 04 7e 17 20 20  42 4c 20 62 65 67 69 6e  |t...~.  BL begin|
00000860  5f 61 64 64 69 74 69 6f  6e 0d 04 88 04 0d 04 92  |_addition.......|
00000870  16 20 20 42 4c 20 67 65  74 5f 61 64 64 72 65 73  |.  BL get_addres|
00000880  73 65 73 0d 04 9c 14 20  20 42 4c 20 61 64 64 72  |ses....  BL addr|
00000890  65 73 73 5f 61 6e 73 0d  04 a6 10 20 20 4d 4f 56  |ess_ans....  MOV|
000008a0  20 52 31 34 2c 23 30 0d  04 b0 1a 20 20 2e 6d 61  | R14,#0....  .ma|
000008b0  69 6e 5f 66 6f 72 5f 6c  6f 6f 70 69 66 79 73 63  |in_for_loopifysc|
000008c0  35 0d 04 ba 18 20 20 20  20 4c 44 52 42 20 52 35  |5....    LDRB R5|
000008d0  2c 5b 52 38 2c 52 31 34  5d 0d 04 c4 19 20 20 20  |,[R8,R14]....   |
000008e0  20 53 54 52 42 20 52 35  2c 5b 52 31 32 2c 52 31  | STRB R5,[R12,R1|
000008f0  34 5d 0d 04 ce 16 20 20  20 20 41 44 44 20 52 31  |4]....    ADD R1|
00000900  34 2c 52 31 34 2c 23 31  0d 04 d8 12 20 20 20 20  |4,R14,#1....    |
00000910  43 4d 50 20 52 35 2c 23  31 30 0d 04 e2 1d 20 20  |CMP R5,#10....  |
00000920  42 4e 45 20 6d 61 69 6e  5f 66 6f 72 5f 6c 6f 6f  |BNE main_for_loo|
00000930  70 69 66 79 73 63 35 0d  04 ec 04 0d 04 f6 04 0d  |pifysc5.........|
00000940  05 00 04 0d 05 0a 18 20  20 53 54 4d 46 44 20 52  |.......  STMFD R|
00000950  31 33 21 2c 7b 52 30 2d  52 35 7d 0d 05 14 10 20  |13!,{R0-R5}.... |
00000960  20 53 57 49 20 32 35 36  2b 31 32 0d 05 1e 1c 20  | SWI 256+12.... |
00000970  20 53 57 49 20 22 4f 53  5f 52 65 6d 6f 76 65 43  | SWI "OS_RemoveC|
00000980  75 72 73 6f 72 73 22 0d  05 28 0f 20 20 53 57 49  |ursors"..(.  SWI|
00000990  20 32 35 36 2b 35 0d 05  32 0f 20 20 4d 4f 56 20  | 256+5..2.  MOV |
000009a0  52 30 2c 23 34 0d 05 3c  11 20 20 4d 4f 56 20 52  |R0,#4..<.  MOV R|
000009b0  31 2c 23 32 30 30 0d 05  46 11 20 20 4d 4f 56 20  |1,#200..F.  MOV |
000009c0  52 32 2c 23 38 30 30 0d  05 50 13 20 20 53 57 49  |R2,#800..P.  SWI|
000009d0  20 22 4f 53 5f 50 6c 6f  74 22 0d 05 5a 15 20 20  | "OS_Plot"..Z.  |
000009e0  53 57 49 20 22 4f 53 5f  57 72 69 74 65 53 22 0d  |SWI "OS_WriteS".|
000009f0  05 64 23 20 20 45 51 55  53 20 22 49 74 65 72 61  |.d#  EQUS "Itera|
00000a00  74 69 6f 6e 73 20 43 61  6c 63 75 6c 61 74 65 64  |tions Calculated|
00000a10  20 22 0d 05 6e 0c 20 20  45 51 55 42 20 30 0d 05  | "..n.  EQUB 0..|
00000a20  78 0b 20 20 41 4c 49 47  4e 0d 05 82 0f 20 20 4d  |x.  ALIGN....  M|
00000a30  4f 56 20 52 30 2c 52 33  0d 05 8c 14 20 20 41 44  |OV R0,R3....  AD|
00000a40  52 20 52 31 2c 62 75 66  66 65 72 32 0d 05 96 10  |R R1,buffer2....|
00000a50  20 20 4d 4f 56 20 52 32  2c 23 33 32 0d 05 a0 1f  |  MOV R2,#32....|
00000a60  20 20 53 57 49 20 22 4f  53 5f 43 6f 6e 76 65 72  |  SWI "OS_Conver|
00000a70  74 43 61 72 64 69 6e 61  6c 34 22 0d 05 aa 15 20  |tCardinal4".... |
00000a80  20 53 57 49 20 22 4f 53  5f 57 72 69 74 65 30 22  | SWI "OS_Write0"|
00000a90  0d 05 b4 04 0d 05 be 0f  20 20 4d 4f 56 20 52 30  |........  MOV R0|
00000aa0  2c 23 34 0d 05 c8 11 20  20 4d 4f 56 20 52 31 2c  |,#4....  MOV R1,|
00000ab0  23 32 30 30 0d 05 d2 11  20 20 4d 4f 56 20 52 32  |#200....  MOV R2|
00000ac0  2c 23 36 30 30 0d 05 dc  13 20 20 53 57 49 20 22  |,#600....  SWI "|
00000ad0  4f 53 5f 50 6c 6f 74 22  0d 05 e6 15 20 20 53 57  |OS_Plot"....  SW|
00000ae0  49 20 22 4f 53 5f 57 72  69 74 65 53 22 0d 05 f0  |I "OS_WriteS"...|
00000af0  27 20 20 45 51 55 53 20  22 54 69 6d 65 20 46 6f  |'  EQUS "Time Fo|
00000b00  72 20 4c 61 73 74 20 43  61 6c 63 75 6c 61 74 69  |r Last Calculati|
00000b10  6f 6e 20 22 0d 05 fa 0c  20 20 45 51 55 42 20 30  |on "....  EQUB 0|
00000b20  0d 06 04 0b 20 20 41 4c  49 47 4e 0d 06 0e 04 0d  |....  ALIGN.....|
00000b30  06 18 18 20 20 4c 44 4d  46 44 20 52 31 33 21 2c  |...  LDMFD R13!,|
00000b40  7b 52 30 2d 52 35 7d 0d  06 22 04 0d 06 2c 16 20  |{R0-R5}.."...,. |
00000b50  20 4c 44 4d 46 44 20 52  31 33 21 2c 7b 52 31 34  | LDMFD R13!,{R14|
00000b60  7d 0d 06 36 18 20 20 53  54 4d 46 44 20 52 31 33  |}..6.  STMFD R13|
00000b70  21 2c 7b 52 30 2d 52 35  7d 0d 06 40 20 20 20 53  |!,{R0-R5}..@   S|
00000b80  57 49 20 22 4f 53 5f 52  65 61 64 4d 6f 6e 6f 74  |WI "OS_ReadMonot|
00000b90  6f 6e 69 63 54 69 6d 65  22 0d 06 4a 14 20 20 53  |onicTime"..J.  S|
00000ba0  55 42 20 52 31 34 2c 52  30 2c 52 31 34 0d 06 54  |UB R14,R0,R14..T|
00000bb0  10 20 20 4d 4f 56 20 52  30 2c 52 31 34 0d 06 5e  |.  MOV R0,R14..^|
00000bc0  14 20 20 41 44 52 20 52  31 2c 62 75 66 66 65 72  |.  ADR R1,buffer|
00000bd0  32 0d 06 68 10 20 20 4d  4f 56 20 52 32 2c 23 33  |2..h.  MOV R2,#3|
00000be0  32 0d 06 72 1f 20 20 53  57 49 20 22 4f 53 5f 43  |2..r.  SWI "OS_C|
00000bf0  6f 6e 76 65 72 74 43 61  72 64 69 6e 61 6c 34 22  |onvertCardinal4"|
00000c00  0d 06 7c 15 20 20 53 57  49 20 22 4f 53 5f 57 72  |..|.  SWI "OS_Wr|
00000c10  69 74 65 30 22 0d 06 86  04 0d 06 90 0f 20 20 4d  |ite0"........  M|
00000c20  4f 56 20 52 30 2c 23 34  0d 06 9a 11 20 20 4d 4f  |OV R0,#4....  MO|
00000c30  56 20 52 31 2c 23 32 30  30 0d 06 a4 11 20 20 4d  |V R1,#200....  M|
00000c40  4f 56 20 52 32 2c 23 34  30 30 0d 06 ae 13 20 20  |OV R2,#400....  |
00000c50  53 57 49 20 22 4f 53 5f  50 6c 6f 74 22 0d 06 b8  |SWI "OS_Plot"...|
00000c60  15 20 20 53 57 49 20 22  4f 53 5f 57 72 69 74 65  |.  SWI "OS_Write|
00000c70  53 22 0d 06 c2 22 20 20  45 51 55 53 20 22 52 65  |S"..."  EQUS "Re|
00000c80  6d 61 69 6e 69 6e 67 20  49 74 65 72 61 74 69 6f  |maining Iteratio|
00000c90  6e 73 20 22 0d 06 cc 0c  20 20 45 51 55 42 20 30  |ns "....  EQUB 0|
00000ca0  0d 06 d6 0b 20 20 41 4c  49 47 4e 0d 06 e0 14 20  |....  ALIGN.... |
00000cb0  20 52 53 42 20 52 30 2c  52 33 2c 23 69 74 25 0d  | RSB R0,R3,#it%.|
00000cc0  06 ea 14 20 20 41 44 52  20 52 31 2c 62 75 66 66  |...  ADR R1,buff|
00000cd0  65 72 32 0d 06 f4 10 20  20 4d 4f 56 20 52 32 2c  |er2....  MOV R2,|
00000ce0  23 33 32 0d 06 fe 1f 20  20 53 57 49 20 22 4f 53  |#32....  SWI "OS|
00000cf0  5f 43 6f 6e 76 65 72 74  43 61 72 64 69 6e 61 6c  |_ConvertCardinal|
00000d00  34 22 0d 07 08 15 20 20  53 57 49 20 22 4f 53 5f  |4"....  SWI "OS_|
00000d10  57 72 69 74 65 30 22 0d  07 12 04 0d 07 1c 0f 20  |Write0"........ |
00000d20  20 53 57 49 20 32 35 36  2b 34 0d 07 26 18 20 20  | SWI 256+4..&.  |
00000d30  4c 44 4d 46 44 20 52 31  33 21 2c 7b 52 30 2d 52  |LDMFD R13!,{R0-R|
00000d40  35 7d 0d 07 30 04 0d 07  3a 04 0d 07 44 04 0d 07  |5}..0...:...D...|
00000d50  4e 23 20 20 5c 52 45 53  55 4c 54 20 49 53 20 52  |N#  \RESULT IS R|
00000d60  45 54 55 52 4e 45 44 20  49 4e 20 41 4e 53 57 45  |ETURNED IN ANSWE|
00000d70  52 0d 07 58 04 0d 07 62  1e 20 20 53 57 49 20 22  |R..X...b.  SWI "|
00000d80  4f 53 5f 52 65 61 64 45  73 63 61 70 65 53 74 61  |OS_ReadEscapeSta|
00000d90  74 65 22 0d 07 6c 17 20  20 4c 44 4d 43 53 46 44  |te"..l.  LDMCSFD|
00000da0  20 52 31 33 21 2c 7b 50  43 7d 0d 07 76 04 0d 07  | R13!,{PC}..v...|
00000db0  80 12 20 20 41 44 44 20  52 33 2c 52 33 2c 23 31  |..  ADD R3,R3,#1|
00000dc0  0d 07 8a 11 20 20 43 4d  50 20 52 33 2c 23 69 74  |....  CMP R3,#it|
00000dd0  25 0d 07 94 1a 42 4c 45  20 6d 61 69 6e 5f 66 6f  |%....BLE main_fo|
00000de0  72 5f 6c 6f 6f 70 69 66  79 73 31 0d 07 9e 04 0d  |r_loopifys1.....|
00000df0  07 a8 13 4c 44 4d 46 44  20 52 31 33 21 2c 7b 50  |...LDMFD R13!,{P|
00000e00  43 7d 0d 07 b2 04 0d 07  bc 0c 2e 62 75 66 66 65  |C}.........buffe|
00000e10  72 32 0d 07 c6 0e a4 42  79 74 65 73 28 33 32 29  |r2.....Bytes(32)|
00000e20  0d 07 d0 04 0d 07 da 0c  2e 61 64 6f 6c 6c 61 72  |.........adollar|
00000e30  0d 07 e4 15 a4 42 79 74  65 73 28 61 63 63 75 72  |.....Bytes(accur|
00000e40  61 63 79 25 29 0d 07 ee  05 3a 0d 07 f8 05 3a 0d  |acy%)....:....:.|
00000e50  08 02 1f 2e 6e 75 6d 62  65 72 74 6f 73 61 6d 73  |....numbertosams|
00000e60  74 72 69 6e 67 66 61 63  74 6f 72 69 61 6c 0d 08  |tringfactorial..|
00000e70  0c 14 53 54 4d 46 44 20  52 31 33 21 2c 7b 52 31  |..STMFD R13!,{R1|
00000e80  34 7d 0d 08 16 16 53 54  4d 46 44 20 52 31 33 21  |4}....STMFD R13!|
00000e90  2c 7b 52 30 2d 52 39 7d  0d 08 20 05 3a 0d 08 2a  |,{R0-R9}.. .:..*|
00000ea0  0d 4d 4f 56 20 52 39 2c  52 31 0d 08 34 04 0d 08  |.MOV R9,R1..4...|
00000eb0  3e 0d 4d 4f 56 20 52 30  2c 52 33 0d 08 48 11 41  |>.MOV R0,R3..H.A|
00000ec0  44 52 20 52 31 2c 62 75  66 66 65 72 0d 08 52 0e  |DR R1,buffer..R.|
00000ed0  4d 4f 56 20 52 32 2c 23  33 32 0d 08 5c 1d 53 57  |MOV R2,#32..\.SW|
00000ee0  49 20 22 4f 53 5f 43 6f  6e 76 65 72 74 43 61 72  |I "OS_ConvertCar|
00000ef0  64 69 6e 61 6c 34 22 0d  08 66 0d 4d 4f 56 20 52  |dinal4"..f.MOV R|
00000f00  36 2c 23 31 0d 08 70 14  2e 6e 74 73 66 6f 72 5f  |6,#1..p..ntsfor_|
00000f10  6c 6f 6f 70 69 66 79 31  0d 08 7a 15 20 20 4c 44  |loopify1..z.  LD|
00000f20  52 42 20 52 35 2c 5b 52  30 5d 2c 23 31 0d 08 84  |RB R5,[R0],#1...|
00000f30  17 20 20 53 55 42 20 52  35 2c 52 35 2c 23 97 28  |.  SUB R5,R5,#.(|
00000f40  22 30 22 29 0d 08 8e 15  20 20 53 54 52 42 20 52  |"0")....  STRB R|
00000f50  35 2c 5b 52 39 2c 52 36  5d 0d 08 98 12 20 20 41  |5,[R9,R6]....  A|
00000f60  44 44 20 52 36 2c 52 36  2c 23 31 0d 08 a2 0f 20  |DD R6,R6,#1.... |
00000f70  20 43 4d 50 20 52 30 2c  52 31 0d 08 ac 17 42 4c  | CMP R0,R1....BL|
00000f80  45 20 6e 74 73 66 6f 72  5f 6c 6f 6f 70 69 66 79  |E ntsfor_loopify|
00000f90  31 0d 08 b6 0f 4d 4f 56  20 52 31 34 2c 23 31 30  |1....MOV R14,#10|
00000fa0  0d 08 c0 10 53 55 42 20  52 36 2c 52 36 2c 23 31  |....SUB R6,R6,#1|
00000fb0  0d 08 ca 14 53 54 52 42  20 52 31 34 2c 5b 52 39  |....STRB R14,[R9|
00000fc0  2c 52 36 5d 0d 08 d4 05  3a 0d 08 de 16 4c 44 4d  |,R6]....:....LDM|
00000fd0  46 44 20 52 31 33 21 2c  7b 52 30 2d 52 39 7d 0d  |FD R13!,{R0-R9}.|
00000fe0  08 e8 13 4c 44 4d 46 44  20 52 31 33 21 2c 7b 50  |...LDMFD R13!,{P|
00000ff0  43 7d 0d 08 f2 0b 2e 62  75 66 66 65 72 0d 08 fc  |C}.....buffer...|
00001000  0e a4 42 79 74 65 73 28  33 32 29 0d 09 06 05 3a  |..Bytes(32)....:|
00001010  0d 09 10 05 3a 0d 09 1a  49 5c 50 55 52 50 4f 53  |....:...I\PURPOS|
00001020  45 20 2d 20 52 45 2d 57  52 49 54 54 45 4e 20 4c  |E - RE-WRITTEN L|
00001030  4f 57 2d 4c 45 56 45 4c  20 41 44 44 49 54 49 4f  |OW-LEVEL ADDITIO|
00001040  4e 20 52 4f 55 54 49 4e  45 20 55 53 49 4e 47 20  |N ROUTINE USING |
00001050  49 4e 46 41 20 41 4c 47  4f 52 49 54 48 4d 0d 09  |INFA ALGORITHM..|
00001060  24 13 2e 62 65 67 69 6e  5f 61 64 64 69 74 69 6f  |$..begin_additio|
00001070  6e 0d 09 2e 14 53 54 4d  46 44 20 52 31 33 21 2c  |n....STMFD R13!,|
00001080  7b 52 31 34 7d 0d 09 38  17 53 54 4d 46 44 20 52  |{R14}..8.STMFD R|
00001090  31 33 21 2c 7b 52 30 2d  52 31 32 7d 0d 09 42 04  |13!,{R0-R12}..B.|
000010a0  0d 09 4c 2f 5c 41 20 bb  55 45 20 ca 20 54 45 4e  |..L/\A .UE . TEN|
000010b0  20 43 4f 52 52 45 53 50  4f 4e 44 53 20 b8 20 54  | CORRESPONDS . T|
000010c0  45 52 4d 49 4e 41 54 49  4e 47 20 42 59 54 45 0d  |ERMINATING BYTE.|
000010d0  09 56 04 0d 09 60 24 5c  66 69 6e 64 20 65 6e 64  |.V...`$\find end|
000010e0  20 6f 66 20 6f 70 65 72  61 6e 64 31 20 80 20 6f  | of operand1 . o|
000010f0  70 65 72 61 6e 64 32 0d  09 6a 04 0d 09 74 0d 4d  |perand2..j...t.M|
00001100  4f 56 20 52 33 2c 52 30  0d 09 7e 0d 4d 4f 56 20  |OV R3,R0..~.MOV |
00001110  52 35 2c 23 30 0d 09 88  12 2e 6c 6f 6f 70 5f 67  |R5,#0.....loop_g|
00001120  65 74 5f 65 6e 64 31 0d  09 92 15 20 20 4c 44 52  |et_end1....  LDR|
00001130  42 20 52 34 2c 5b 52 33  5d 2c 23 31 0d 09 9c 12  |B R4,[R3],#1....|
00001140  20 20 41 44 44 20 52 35  2c 52 35 2c 23 31 0d 09  |  ADD R5,R5,#1..|
00001150  a6 10 20 20 43 4d 50 20  52 34 2c 23 31 30 0d 09  |..  CMP R4,#10..|
00001160  b0 15 42 4e 45 20 6c 6f  6f 70 5f 67 65 74 5f 65  |..BNE loop_get_e|
00001170  6e 64 31 0d 09 ba 04 0d  09 c4 0d 4d 4f 56 20 52  |nd1........MOV R|
00001180  33 2c 52 31 0d 09 ce 0d  4d 4f 56 20 52 36 2c 23  |3,R1....MOV R6,#|
00001190  30 0d 09 d8 12 2e 6c 6f  6f 70 5f 67 65 74 5f 65  |0.....loop_get_e|
000011a0  6e 64 32 0d 09 e2 15 20  20 4c 44 52 42 20 52 34  |nd2....  LDRB R4|
000011b0  2c 5b 52 33 5d 2c 23 31  0d 09 ec 12 20 20 41 44  |,[R3],#1....  AD|
000011c0  44 20 52 36 2c 52 36 2c  23 31 0d 09 f6 10 20 20  |D R6,R6,#1....  |
000011d0  43 4d 50 20 52 34 2c 23  31 30 0d 0a 00 15 42 4e  |CMP R4,#10....BN|
000011e0  45 20 6c 6f 6f 70 5f 67  65 74 5f 65 6e 64 32 0d  |E loop_get_end2.|
000011f0  0a 0a 04 0d 0a 14 42 5c  a9 47 54 48 20 ca 20 4f  |......B\.GTH . O|
00001200  50 45 52 41 4e 44 20 31  20 49 53 20 52 45 54 55  |PERAND 1 IS RETU|
00001210  52 4e 45 44 20 49 4e 20  52 35 2c 20 a9 47 54 48  |RNED IN R5, .GTH|
00001220  20 ca 20 4f 50 45 52 41  4e 44 20 32 20 49 53 20  | . OPERAND 2 IS |
00001230  49 4e 20 52 36 0d 0a 1e  04 0d 0a 28 21 53 55 42  |IN R6......(!SUB|
00001240  20 52 33 2c 52 35 2c 52  36 20 20 20 20 20 20 5c  | R3,R5,R6      \|
00001250  52 33 20 49 53 20 44 49  46 46 0d 0a 32 0d 43 4d  |R3 IS DIFF..2.CM|
00001260  50 20 52 33 2c 23 30 0d  0a 3c 12 52 53 42 4c 54  |P R3,#0..<.RSBLT|
00001270  20 52 33 2c 52 33 2c 23  30 0d 0a 46 0d 43 4d 50  | R3,R3,#0..F.CMP|
00001280  20 52 35 2c 52 36 0d 0a  50 0f 4d 4f 56 4c 54 20  | R5,R6..P.MOVLT |
00001290  52 34 2c 52 31 0d 0a 5a  0f 4d 4f 56 4c 54 20 52  |R4,R1..Z.MOVLT R|
000012a0  31 2c 52 30 0d 0a 64 0f  4d 4f 56 4c 54 20 52 30  |1,R0..d.MOVLT R0|
000012b0  2c 52 34 0d 0a 6e 04 0d  0a 78 25 4d 4f 56 47 54  |,R4..n...x%MOVGT|
000012c0  20 52 34 2c 52 35 20 20  20 20 20 20 5c 52 34 20  | R4,R5      \R4 |
000012d0  49 53 20 4d 41 58 4c 45  4e 47 54 48 0d 0a 82 0f  |IS MAXLENGTH....|
000012e0  4d 4f 56 4c 45 20 52 34  2c 52 36 0d 0a 8c 04 0d  |MOVLE R4,R6.....|
000012f0  0a 96 10 4d 4f 56 20 63  61 72 72 79 2c 23 30 0d  |...MOV carry,#0.|
00001300  0a a0 04 0d 0a aa 1e 5c  73 74 72 75 63 74 75 72  |.......\structur|
00001310  65 20 66 6f 72 2e 2e 2e  6e 65 78 74 20 6c 6f 6f  |e for...next loo|
00001320  70 0d 0a b4 04 0d 0a be  10 53 55 42 20 52 34 2c  |p........SUB R4,|
00001330  52 34 2c 23 32 0d 0a c8  0d 4d 4f 56 20 52 37 2c  |R4,#2....MOV R7,|
00001340  52 34 0d 0a d2 14 20 20  2e 66 6f 72 5f 6c 6f 6f  |R4....  .for_loo|
00001350  70 69 66 79 31 63 0d 0a  dc 1d 20 20 4c 44 52 42  |pify1c....  LDRB|
00001360  20 52 39 2c 5b 52 30 2c  52 37 5d 20 20 20 20 5c  | R9,[R0,R7]    \|
00001370  51 31 25 0d 0a e6 14 20  20 53 55 42 53 20 52 31  |Q1%....  SUBS R1|
00001380  34 2c 52 37 2c 52 33 0d  0a f0 19 20 20 4c 44 52  |4,R7,R3....  LDR|
00001390  47 54 42 20 52 31 30 2c  5b 52 31 2c 52 31 34 5d  |GTB R10,[R1,R14]|
000013a0  0d 0a fa 1d 20 20 4d 4f  56 4c 45 20 52 31 30 2c  |....  MOVLE R10,|
000013b0  23 30 20 20 20 20 20 20  20 5c 51 32 25 0d 0b 04  |#0       \Q2%...|
000013c0  13 20 20 41 44 44 20 52  39 2c 52 39 2c 52 31 30  |.  ADD R9,R9,R10|
000013d0  0d 0b 0e 15 20 20 41 44  44 20 52 39 2c 52 39 2c  |....  ADD R9,R9,|
000013e0  63 61 72 72 79 0d 0b 18  04 0d 0b 22 04 0d 0b 2c  |carry......"...,|
000013f0  20 20 20 20 20 5c 41 53  53 45 4d 42 4c 45 20 83  |     \ASSEMBLE .|
00001400  20 80 20 81 20 46 55 4e  43 54 49 4f 4e 0d 0b 36  | . . FUNCTION..6|
00001410  1a 20 20 20 20 53 54 4d  46 44 20 52 31 33 21 2c  |.    STMFD R13!,|
00001420  7b 52 30 2d 52 36 7d 0d  0b 40 11 20 20 20 20 4d  |{R0-R6}..@.    M|
00001430  4f 56 20 52 30 2c 52 39  0d 0b 4a 12 20 20 20 20  |OV R0,R9..J.    |
00001440  4d 4f 56 20 52 31 2c 23  31 30 0d 0b 54 17 20 20  |MOV R1,#10..T.  |
00001450  20 20 80 53 20 52 36 2c  52 30 2c 23 31 3c 3c 33  |  .S R6,R0,#1<<3|
00001460  31 0d 0b 5e 16 20 20 20  20 52 53 42 4d 49 20 52  |1..^.    RSBMI R|
00001470  30 2c 52 30 2c 23 30 0d  0b 68 12 20 20 20 20 82  |0,R0,#0..h.    .|
00001480  20 52 35 2c 52 36 2c 52  31 0d 0b 72 11 20 20 20  | R5,R6,R1..r.   |
00001490  20 43 4d 50 20 52 31 2c  23 30 0d 0b 7c 16 20 20  | CMP R1,#0..|.  |
000014a0  20 20 52 53 42 4d 49 20  52 31 2c 52 31 2c 23 30  |  RSBMI R1,R1,#0|
000014b0  0d 0b 86 04 0d 0b 90 11  20 20 20 20 4d 4f 56 20  |........    MOV |
000014c0  52 32 2c 23 30 0d 0b 9a  11 20 20 20 20 4d 4f 56  |R2,#0....    MOV|
000014d0  20 52 33 2c 23 30 0d 0b  a4 15 20 20 20 20 4d 4f  | R3,#0....    MO|
000014e0  56 20 52 34 2c 23 31 3c  3c 33 31 0d 0b ae 04 0d  |V R4,#1<<31.....|
000014f0  0b b8 18 20 20 20 20 2e  64 69 76 69 73 69 6f 6e  |...    .division|
00001500  5f 6c 6f 6f 70 31 31 0d  0b c2 18 20 20 20 20 4d  |_loop11....    M|
00001510  4f 56 53 20 52 30 2c 52  30 2c 41 53 4c 23 31 0d  |OVS R0,R0,ASL#1.|
00001520  0b cc 14 20 20 20 20 41  44 43 20 52 32 2c 52 32  |...    ADC R2,R2|
00001530  2c 52 32 0d 0b d6 11 20  20 20 20 43 4d 50 20 52  |,R2....    CMP R|
00001540  32 2c 52 31 0d 0b e0 16  20 20 20 20 53 55 42 47  |2,R1....    SUBG|
00001550  45 20 52 32 2c 52 32 2c  52 31 0d 0b ea 15 20 20  |E R2,R2,R1....  |
00001560  20 20 84 52 47 45 20 52  33 2c 52 33 2c 52 34 0d  |  .RGE R3,R3,R4.|
00001570  0b f4 18 20 20 20 20 4d  4f 56 53 20 52 34 2c 52  |...    MOVS R4,R|
00001580  34 2c 4c 53 52 23 31 0d  0b fe 1b 20 20 20 20 42  |4,LSR#1....    B|
00001590  4e 45 20 64 69 76 69 73  69 6f 6e 5f 6c 6f 6f 70  |NE division_loop|
000015a0  31 31 0d 0c 08 04 0d 0c  12 11 20 20 20 20 43 4d  |11........    CM|
000015b0  50 20 52 35 2c 23 30 0d  0c 1c 16 20 20 20 20 52  |P R5,#0....    R|
000015c0  53 42 4d 49 20 52 33 2c  52 33 2c 23 30 0d 0c 26  |SBMI R3,R3,#0..&|
000015d0  11 20 20 20 20 43 4d 50  20 52 36 2c 23 30 0d 0c  |.    CMP R6,#0..|
000015e0  30 16 20 20 20 20 52 53  42 4d 49 20 52 32 2c 52  |0.    RSBMI R2,R|
000015f0  32 2c 23 30 0d 0c 3a 04  0d 0c 44 15 20 20 20 20  |2,#0..:...D.    |
00001600  53 54 52 20 52 33 2c 64  69 76 72 65 73 0d 0c 4e  |STR R3,divres..N|
00001610  15 20 20 20 20 53 54 52  20 52 32 2c 6d 6f 64 72  |.    STR R2,modr|
00001620  65 73 0d 0c 58 04 0d 0c  62 1a 20 20 20 20 4c 44  |es..X...b.    LD|
00001630  4d 46 44 20 52 31 33 21  2c 7b 52 30 2d 52 36 7d  |MFD R13!,{R0-R6}|
00001640  0d 0c 6c 04 0d 0c 76 14  20 20 4c 44 52 20 52 31  |..l...v.  LDR R1|
00001650  34 2c 6d 6f 64 72 65 73  0d 0c 80 16 20 20 53 54  |4,modres....  ST|
00001660  52 42 20 52 31 34 2c 5b  52 32 2c 52 37 5d 0d 0c  |RB R14,[R2,R7]..|
00001670  8a 16 20 20 4c 44 52 20  63 61 72 72 79 2c 64 69  |..  LDR carry,di|
00001680  76 72 65 73 0d 0c 94 04  0d 0c 9e 13 20 20 53 55  |vres........  SU|
00001690  42 53 20 52 37 2c 52 37  2c 23 31 0d 0c a8 04 0d  |BS R7,R7,#1.....|
000016a0  0c b2 15 42 4e 45 20 66  6f 72 5f 6c 6f 6f 70 69  |...BNE for_loopi|
000016b0  66 79 31 63 0d 0c bc 10  43 4d 50 20 63 61 72 72  |fy1c....CMP carr|
000016c0  79 2c 23 30 0d 0c c6 13  53 54 52 42 20 63 61 72  |y,#0....STRB car|
000016d0  72 79 2c 5b 52 32 5d 0d  0c d0 0f 4d 4f 56 20 52  |ry,[R2]....MOV R|
000016e0  31 34 2c 23 31 30 0d 0c  da 0d 43 4d 50 20 52 34  |14,#10....CMP R4|
000016f0  2c 23 33 0d 0c e4 12 41  44 44 47 54 20 52 34 2c  |,#3....ADDGT R4,|
00001700  52 34 2c 23 31 0d 0c ee  10 41 44 44 20 52 34 2c  |R4,#1....ADD R4,|
00001710  52 34 2c 23 31 0d 0c f8  14 53 54 52 42 20 52 31  |R4,#1....STRB R1|
00001720  34 2c 5b 52 32 2c 52 34  5d 0d 0d 02 04 0d 0d 0c  |4,[R2,R4].......|
00001730  17 42 4c 20 52 65 6d 6f  76 65 5f 4c 65 61 64 69  |.BL Remove_Leadi|
00001740  6e 67 30 73 0d 0d 16 04  0d 0d 20 17 4c 44 4d 46  |ng0s...... .LDMF|
00001750  44 20 52 31 33 21 2c 7b  52 30 2d 52 31 32 7d 0d  |D R13!,{R0-R12}.|
00001760  0d 2a 13 4c 44 4d 46 44  20 52 31 33 21 2c 7b 50  |.*.LDMFD R13!,{P|
00001770  43 7d 0d 0d 34 04 0d 0d  3e 0b 2e 64 69 76 72 65  |C}..4...>..divre|
00001780  73 0d 0d 48 0a 45 51 55  44 20 30 0d 0d 52 0b 2e  |s..H.EQUD 0..R..|
00001790  6d 6f 64 72 65 73 0d 0d  5c 0a 45 51 55 44 20 30  |modres..\.EQUD 0|
000017a0  0d 0d 66 04 0d 0d 70 4e  5c 50 55 52 50 4f 53 45  |..f...pN\PURPOSE|
000017b0  20 2d 20 52 45 2d 57 52  49 54 54 45 4e 20 4c 4f  | - RE-WRITTEN LO|
000017c0  57 2d 4c 45 56 45 4c 20  4d 55 4c 54 49 50 4c 41  |W-LEVEL MULTIPLA|
000017d0  43 54 49 4f 4e 20 52 4f  55 54 49 4e 45 20 55 53  |CTION ROUTINE US|
000017e0  49 4e 47 20 49 4e 46 41  20 41 4c 47 4f 52 49 54  |ING INFA ALGORIT|
000017f0  48 4d 0d 0d 7a 19 2e 62  65 67 69 6e 5f 6d 75 6c  |HM..z..begin_mul|
00001800  74 69 70 6c 69 63 61 74  69 6f 6e 0d 0d 84 14 53  |tiplication....S|
00001810  54 4d 46 44 20 52 31 33  21 2c 7b 52 31 34 7d 0d  |TMFD R13!,{R14}.|
00001820  0d 8e 17 53 54 4d 46 44  20 52 31 33 21 2c 7b 52  |...STMFD R13!,{R|
00001830  30 2d 52 31 32 7d 0d 0d  98 04 0d 0d a2 04 0d 0d  |0-R12}..........|
00001840  ac 24 5c 66 69 6e 64 20  65 6e 64 20 6f 66 20 6f  |.$\find end of o|
00001850  70 65 72 61 6e 64 31 20  80 20 6f 70 65 72 61 6e  |perand1 . operan|
00001860  64 32 0d 0d b6 04 0d 0d  c0 0d 4d 4f 56 20 52 33  |d2........MOV R3|
00001870  2c 52 30 0d 0d ca 0d 4d  4f 56 20 52 35 2c 23 30  |,R0....MOV R5,#0|
00001880  0d 0d d4 13 2e 6c 6f 6f  70 5f 67 65 74 5f 65 6e  |.....loop_get_en|
00001890  64 31 42 0d 0d de 15 20  20 4c 44 52 42 20 52 34  |d1B....  LDRB R4|
000018a0  2c 5b 52 33 5d 2c 23 31  0d 0d e8 12 20 20 41 44  |,[R3],#1....  AD|
000018b0  44 20 52 35 2c 52 35 2c  23 31 0d 0d f2 10 20 20  |D R5,R5,#1....  |
000018c0  43 4d 50 20 52 34 2c 23  31 30 0d 0d fc 16 42 4e  |CMP R4,#10....BN|
000018d0  45 20 6c 6f 6f 70 5f 67  65 74 5f 65 6e 64 31 42  |E loop_get_end1B|
000018e0  0d 0e 06 04 0d 0e 10 0d  4d 4f 56 20 52 33 2c 52  |........MOV R3,R|
000018f0  31 0d 0e 1a 0d 4d 4f 56  20 52 36 2c 23 30 0d 0e  |1....MOV R6,#0..|
00001900  24 13 2e 6c 6f 6f 70 5f  67 65 74 5f 65 6e 64 32  |$..loop_get_end2|
00001910  42 0d 0e 2e 15 20 20 4c  44 52 42 20 52 34 2c 5b  |B....  LDRB R4,[|
00001920  52 33 5d 2c 23 31 0d 0e  38 12 20 20 41 44 44 20  |R3],#1..8.  ADD |
00001930  52 36 2c 52 36 2c 23 31  0d 0e 42 10 20 20 43 4d  |R6,R6,#1..B.  CM|
00001940  50 20 52 34 2c 23 31 30  0d 0e 4c 16 42 4e 45 20  |P R4,#10..L.BNE |
00001950  6c 6f 6f 70 5f 67 65 74  5f 65 6e 64 32 42 0d 0e  |loop_get_end2B..|
00001960  56 04 0d 0e 60 42 5c a9  47 54 48 20 ca 20 4f 50  |V...`B\.GTH . OP|
00001970  45 52 41 4e 44 20 31 20  49 53 20 52 45 54 55 52  |ERAND 1 IS RETUR|
00001980  4e 45 44 20 49 4e 20 52  35 2c 20 a9 47 54 48 20  |NED IN R5, .GTH |
00001990  ca 20 4f 50 45 52 41 4e  44 20 32 20 49 53 20 49  |. OPERAND 2 IS I|
000019a0  4e 20 52 36 0d 0e 6a 04  0d 0e 74 31 41 44 44 20  |N R6..j...t1ADD |
000019b0  52 37 2c 52 35 2c 52 36  20 20 20 20 20 20 20 20  |R7,R5,R6        |
000019c0  20 20 20 20 20 5c 43 4f  4e 54 41 49 4e 53 20 b8  |     \CONTAINS .|
000019d0  54 41 4c 20 a9 47 54 48  53 0d 0e 7e 04 0d 0e 88  |TAL .GTHS..~....|
000019e0  2b 5c 52 45 47 49 53 54  45 52 53 20 41 56 41 49  |+\REGISTERS AVAI|
000019f0  4c 41 42 4c 45 20 3d 20  52 33 2c 52 34 2c 52 38  |LABLE = R3,R4,R8|
00001a00  2d 52 31 32 2c 52 31 34  0d 0e 92 04 0d 0e 9c 1e  |-R12,R14........|
00001a10  5c 73 74 72 75 63 74 75  72 65 20 46 6f 72 2e 2e  |\structure For..|
00001a20  6e 65 78 74 20 6c 6f 6f  70 2d 0d 0e a6 04 0d 0e  |next loop-......|
00001a30  b0 0d 4d 4f 56 20 52 33  2c 23 30 0d 0e ba 0d 4d  |..MOV R3,#0....M|
00001a40  4f 56 20 52 34 2c 52 32  0d 0e c4 1f 53 55 42 20  |OV R4,R2....SUB |
00001a50  52 31 34 2c 52 37 2c 23  31 20 5c 4c 4f 4f 50 20  |R14,R7,#1 \LOOP |
00001a60  43 4f 55 4e 54 45 52 0d  0e ce 11 2e 66 6f 72 5f  |COUNTER.....for_|
00001a70  6c 6f 6f 70 69 66 79 31  0d 0e d8 15 20 20 53 54  |loopify1....  ST|
00001a80  52 42 20 52 33 2c 5b 52  34 5d 2c 23 31 0d 0e e2  |RB R3,[R4],#1...|
00001a90  15 20 20 53 55 42 53 20  52 31 34 2c 52 31 34 2c  |.  SUBS R14,R14,|
00001aa0  23 31 0d 0e ec 14 42 4e  45 20 66 6f 72 5f 6c 6f  |#1....BNE for_lo|
00001ab0  6f 70 69 66 79 31 0d 0e  f6 0e 4d 4f 56 20 52 33  |opify1....MOV R3|
00001ac0  2c 23 31 30 0d 0f 00 10  53 55 42 20 52 34 2c 52  |,#10....SUB R4,R|
00001ad0  34 2c 23 31 0d 0f 0a 10  53 54 52 42 20 52 33 2c  |4,#1....STRB R3,|
00001ae0  5b 52 34 5d 0d 0f 14 10  41 44 44 20 52 34 2c 52  |[R4]....ADD R4,R|
00001af0  34 2c 23 31 0d 0f 1e 04  0d 0f 28 26 53 55 42 20  |4,#1......(&SUB |
00001b00  52 31 31 2c 52 36 2c 23  32 20 20 20 5c 4c 4f 4f  |R11,R6,#2   \LOO|
00001b10  50 20 43 4f 55 4e 54 45  52 20 28 4a 25 29 0d 0f  |P COUNTER (J%)..|
00001b20  32 11 2e 66 6f 72 5f 6c  6f 6f 70 69 66 79 32 0d  |2..for_loopify2.|
00001b30  0f 3c 12 20 20 4d 4f 56  20 63 61 72 72 79 2c 23  |.<.  MOV carry,#|
00001b40  30 0d 0f 46 21 20 20 4c  44 52 42 20 52 33 2c 5b  |0..F!  LDRB R3,[|
00001b50  52 31 2c 52 31 31 5d 20  20 5c 47 25 3d 42 25 3f  |R1,R11]  \G%=B%?|
00001b60  4a 25 0d 0f 50 13 20 20  41 44 44 20 52 34 2c 52  |J%..P.  ADD R4,R|
00001b70  32 2c 52 31 31 0d 0f 5a  1f 20 20 41 44 44 20 52  |2,R11..Z.  ADD R|
00001b80  34 2c 52 34 2c 23 31 20  20 5c 56 25 3d 44 25 2b  |4,R4,#1  \V%=D%+|
00001b90  4a 25 2b 31 0d 0f 64 26  20 20 53 55 42 20 52 31  |J%+1..d&  SUB R1|
00001ba0  30 2c 52 35 2c 23 32 20  5c 4c 4f 4f 50 20 43 4f  |0,R5,#2 \LOOP CO|
00001bb0  55 4e 54 45 52 20 28 4c  25 29 0d 0f 6e 13 20 20  |UNTER (L%)..n.  |
00001bc0  2e 66 6f 72 5f 6c 6f 6f  70 69 66 79 33 0d 0f 78  |.for_loopify3..x|
00001bd0  22 20 20 20 20 4c 44 52  42 20 52 39 2c 5b 52 30  |"    LDRB R9,[R0|
00001be0  2c 52 31 30 5d 20 5c 48  25 3d 41 25 3f 4c 25 0d  |,R10] \H%=A%?L%.|
00001bf0  0f 82 15 20 20 20 20 4d  55 4c 20 52 31 34 2c 52  |...    MUL R14,R|
00001c00  33 2c 52 39 0d 0f 8c 19  20 20 20 20 41 44 44 20  |3,R9....    ADD |
00001c10  52 31 34 2c 52 31 34 2c  63 61 72 72 79 0d 0f 96  |R14,R14,carry...|
00001c20  17 20 20 20 20 53 54 4d  46 44 20 52 31 33 21 2c  |.    STMFD R13!,|
00001c30  7b 52 38 7d 0d 0f a0 18  20 20 20 20 4c 44 52 42  |{R8}....    LDRB|
00001c40  20 52 38 2c 5b 52 34 2c  52 31 30 5d 0d 0f aa 16  | R8,[R4,R10]....|
00001c50  20 20 20 20 41 44 44 20  52 31 34 2c 52 31 34 2c  |    ADD R14,R14,|
00001c60  52 38 0d 0f b4 04 0d 0f  be 20 20 20 20 20 5c 41  |R8.......     \A|
00001c70  53 53 45 4d 42 4c 45 20  83 20 80 20 81 20 46 55  |SSEMBLE . . . FU|
00001c80  4e 43 54 49 4f 4e 0d 0f  c8 1a 20 20 20 20 53 54  |NCTION....    ST|
00001c90  4d 46 44 20 52 31 33 21  2c 7b 52 30 2d 52 36 7d  |MFD R13!,{R0-R6}|
00001ca0  0d 0f d2 12 20 20 20 20  4d 4f 56 20 52 30 2c 52  |....    MOV R0,R|
00001cb0  31 34 0d 0f dc 12 20 20  20 20 4d 4f 56 20 52 31  |14....    MOV R1|
00001cc0  2c 23 31 30 0d 0f e6 17  20 20 20 20 80 53 20 52  |,#10....    .S R|
00001cd0  36 2c 52 30 2c 23 31 3c  3c 33 31 0d 0f f0 16 20  |6,R0,#1<<31.... |
00001ce0  20 20 20 52 53 42 4d 49  20 52 30 2c 52 30 2c 23  |   RSBMI R0,R0,#|
00001cf0  30 0d 0f fa 12 20 20 20  20 82 20 52 35 2c 52 36  |0....    . R5,R6|
00001d00  2c 52 31 0d 10 04 11 20  20 20 20 43 4d 50 20 52  |,R1....    CMP R|
00001d10  31 2c 23 30 0d 10 0e 16  20 20 20 20 52 53 42 4d  |1,#0....    RSBM|
00001d20  49 20 52 31 2c 52 31 2c  23 30 0d 10 18 04 0d 10  |I R1,R1,#0......|
00001d30  22 11 20 20 20 20 4d 4f  56 20 52 32 2c 23 30 0d  |".    MOV R2,#0.|
00001d40  10 2c 11 20 20 20 20 4d  4f 56 20 52 33 2c 23 30  |.,.    MOV R3,#0|
00001d50  0d 10 36 15 20 20 20 20  4d 4f 56 20 52 34 2c 23  |..6.    MOV R4,#|
00001d60  31 3c 3c 33 31 0d 10 40  04 0d 10 4a 16 20 20 20  |1<<31..@...J.   |
00001d70  20 2e 64 69 76 69 73 69  6f 6e 5f 6c 6f 6f 70 0d  | .division_loop.|
00001d80  10 54 18 20 20 20 20 4d  4f 56 53 20 52 30 2c 52  |.T.    MOVS R0,R|
00001d90  30 2c 41 53 4c 23 31 0d  10 5e 14 20 20 20 20 41  |0,ASL#1..^.    A|
00001da0  44 43 20 52 32 2c 52 32  2c 52 32 0d 10 68 11 20  |DC R2,R2,R2..h. |
00001db0  20 20 20 43 4d 50 20 52  32 2c 52 31 0d 10 72 16  |   CMP R2,R1..r.|
00001dc0  20 20 20 20 53 55 42 47  45 20 52 32 2c 52 32 2c  |    SUBGE R2,R2,|
00001dd0  52 31 0d 10 7c 15 20 20  20 20 84 52 47 45 20 52  |R1..|.    .RGE R|
00001de0  33 2c 52 33 2c 52 34 0d  10 86 18 20 20 20 20 4d  |3,R3,R4....    M|
00001df0  4f 56 53 20 52 34 2c 52  34 2c 4c 53 52 23 31 0d  |OVS R4,R4,LSR#1.|
00001e00  10 90 19 20 20 20 20 42  4e 45 20 64 69 76 69 73  |...    BNE divis|
00001e10  69 6f 6e 5f 6c 6f 6f 70  0d 10 9a 04 0d 10 a4 11  |ion_loop........|
00001e20  20 20 20 20 43 4d 50 20  52 35 2c 23 30 0d 10 ae  |    CMP R5,#0...|
00001e30  16 20 20 20 20 52 53 42  4d 49 20 52 33 2c 52 33  |.    RSBMI R3,R3|
00001e40  2c 23 30 0d 10 b8 11 20  20 20 20 43 4d 50 20 52  |,#0....    CMP R|
00001e50  36 2c 23 30 0d 10 c2 16  20 20 20 20 52 53 42 4d  |6,#0....    RSBM|
00001e60  49 20 52 32 2c 52 32 2c  23 30 0d 10 cc 04 0d 10  |I R2,R2,#0......|
00001e70  d6 16 20 20 20 20 53 54  52 20 52 33 2c 64 69 76  |..    STR R3,div|
00001e80  72 65 73 32 0d 10 e0 16  20 20 20 20 53 54 52 20  |res2....    STR |
00001e90  52 32 2c 6d 6f 64 72 65  73 32 0d 10 ea 04 0d 10  |R2,modres2......|
00001ea0  f4 1a 20 20 20 20 4c 44  4d 46 44 20 52 31 33 21  |..    LDMFD R13!|
00001eb0  2c 7b 52 30 2d 52 36 7d  0d 10 fe 04 0d 11 08 16  |,{R0-R6}........|
00001ec0  20 20 20 20 4c 44 52 20  52 38 2c 6d 6f 64 72 65  |    LDR R8,modre|
00001ed0  73 32 0d 11 12 27 20 20  20 20 53 54 52 42 20 52  |s2...'    STRB R|
00001ee0  38 2c 5b 52 34 2c 52 31  30 5d 20 20 20 20 20 5c  |8,[R4,R10]     \|
00001ef0  e3 4d 45 52 4c 59 20 52  38 0d 11 1c 17 20 20 20  |.MERLY R8....   |
00001f00  20 4c 44 4d 46 44 20 52  31 33 21 2c 7b 52 38 7d  | LDMFD R13!,{R8}|
00001f10  0d 11 26 16 20 20 20 20  4c 44 52 20 52 38 2c 64  |..&.    LDR R8,d|
00001f20  69 76 72 65 73 32 0d 11  30 17 20 20 20 20 53 55  |ivres2..0.    SU|
00001f30  42 53 20 52 31 30 2c 52  31 30 2c 23 31 0d 11 3a  |BS R10,R10,#1..:|
00001f40  16 20 20 42 4e 45 20 66  6f 72 5f 6c 6f 6f 70 69  |.  BNE for_loopi|
00001f50  66 79 33 0d 11 44 16 20  20 53 54 52 42 20 52 38  |fy3..D.  STRB R8|
00001f60  2c 5b 52 34 2c 52 31 30  5d 0d 11 4e 15 20 20 53  |,[R4,R10]..N.  S|
00001f70  55 42 53 20 52 31 31 2c  52 31 31 2c 23 31 0d 11  |UBS R11,R11,#1..|
00001f80  58 14 42 4e 45 20 66 6f  72 5f 6c 6f 6f 70 69 66  |X.BNE for_loopif|
00001f90  79 32 0d 11 62 04 0d 11  6c 17 42 4c 20 52 65 6d  |y2..b...l.BL Rem|
00001fa0  6f 76 65 5f 4c 65 61 64  69 6e 67 30 73 0d 11 76  |ove_Leading0s..v|
00001fb0  04 0d 11 80 17 4c 44 4d  46 44 20 52 31 33 21 2c  |.....LDMFD R13!,|
00001fc0  7b 52 30 2d 52 31 32 7d  0d 11 8a 13 4c 44 4d 46  |{R0-R12}....LDMF|
00001fd0  44 20 52 31 33 21 2c 7b  50 43 7d 0d 11 94 04 0d  |D R13!,{PC}.....|
00001fe0  11 9e 0c 2e 64 69 76 72  65 73 32 0d 11 a8 0a 45  |....divres2....E|
00001ff0  51 55 44 20 30 0d 11 b2  0c 2e 6d 6f 64 72 65 73  |QUD 0.....modres|
00002000  32 0d 11 bc 0a 45 51 55  44 20 30 0d 11 c6 04 0d  |2....EQUD 0.....|
00002010  11 d0 04 0d 11 da 47 5c  50 55 52 50 4f 53 45 20  |......G\PURPOSE |
00002020  2d 20 52 45 2d 57 52 49  54 54 45 4e 20 4c 4f 57  |- RE-WRITTEN LOW|
00002030  2d 4c 45 56 45 4c 20 81  49 53 49 4f 4e 20 52 4f  |-LEVEL .ISION RO|
00002040  55 54 49 4e 45 20 55 53  49 4e 47 20 49 4e 46 41  |UTINE USING INFA|
00002050  20 41 4c 47 4f 52 49 54  48 4d 0d 11 e4 13 2e 62  | ALGORITHM.....b|
00002060  65 67 69 6e 5f 64 69 76  69 73 69 6f 6e 0d 11 ee  |egin_division...|
00002070  14 53 54 4d 46 44 20 52  31 33 21 2c 7b 52 31 34  |.STMFD R13!,{R14|
00002080  7d 0d 11 f8 17 53 54 4d  46 44 20 52 31 33 21 2c  |}....STMFD R13!,|
00002090  7b 52 30 2d 52 31 32 7d  0d 12 02 04 0d 12 0c 14  |{R0-R12}........|
000020a0  42 4c 20 67 65 74 5f 61  64 64 72 65 73 73 65 73  |BL get_addresses|
000020b0  0d 12 16 04 0d 12 20 2f  5c 41 20 bb 55 45 20 ca  |...... /\A .UE .|
000020c0  20 54 45 4e 20 43 4f 52  52 45 53 50 4f 4e 44 53  | TEN CORRESPONDS|
000020d0  20 b8 20 54 45 52 4d 49  4e 41 54 49 4e 47 20 42  | . TERMINATING B|
000020e0  59 54 45 0d 12 2a 04 0d  12 34 24 5c 66 69 6e 64  |YTE..*...4$\find|
000020f0  20 65 6e 64 20 6f 66 20  6f 70 65 72 61 6e 64 31  | end of operand1|
00002100  20 80 20 6f 70 65 72 61  6e 64 32 0d 12 3e 04 0d  | . operand2..>..|
00002110  12 48 0d 4d 4f 56 20 52  33 2c 52 30 0d 12 52 0d  |.H.MOV R3,R0..R.|
00002120  4d 4f 56 20 52 35 2c 23  30 0d 12 5c 14 2e 6c 6f  |MOV R5,#0..\..lo|
00002130  6f 70 5f 67 65 74 5f 65  6e 64 31 62 43 0d 12 66  |op_get_end1bC..f|
00002140  15 20 20 4c 44 52 42 20  52 34 2c 5b 52 33 5d 2c  |.  LDRB R4,[R3],|
00002150  23 31 0d 12 70 12 20 20  41 44 44 20 52 35 2c 52  |#1..p.  ADD R5,R|
00002160  35 2c 23 31 0d 12 7a 10  20 20 43 4d 50 20 52 34  |5,#1..z.  CMP R4|
00002170  2c 23 31 30 0d 12 84 17  42 4e 45 20 6c 6f 6f 70  |,#10....BNE loop|
00002180  5f 67 65 74 5f 65 6e 64  31 62 43 0d 12 8e 10 41  |_get_end1bC....A|
00002190  44 44 20 52 35 2c 52 35  2c 23 31 0d 12 98 04 0d  |DD R5,R5,#1.....|
000021a0  12 a2 0d 4d 4f 56 20 52  33 2c 52 31 0d 12 ac 0d  |...MOV R3,R1....|
000021b0  4d 4f 56 20 52 36 2c 23  30 0d 12 b6 14 2e 6c 6f  |MOV R6,#0.....lo|
000021c0  6f 70 5f 67 65 74 5f 65  6e 64 32 62 43 0d 12 c0  |op_get_end2bC...|
000021d0  15 20 20 4c 44 52 42 20  52 34 2c 5b 52 33 5d 2c  |.  LDRB R4,[R3],|
000021e0  23 31 0d 12 ca 12 20 20  41 44 44 20 52 36 2c 52  |#1....  ADD R6,R|
000021f0  36 2c 23 31 0d 12 d4 10  20 20 43 4d 50 20 52 34  |6,#1....  CMP R4|
00002200  2c 23 31 30 0d 12 de 17  42 4e 45 20 6c 6f 6f 70  |,#10....BNE loop|
00002210  5f 67 65 74 5f 65 6e 64  32 62 43 0d 12 e8 10 53  |_get_end2bC....S|
00002220  55 42 20 52 36 2c 52 36  2c 23 31 0d 12 f2 04 0d  |UB R6,R6,#1.....|
00002230  12 fc 42 5c a9 47 54 48  20 ca 20 4f 50 45 52 41  |..B\.GTH . OPERA|
00002240  4e 44 20 31 20 49 53 20  52 45 54 55 52 4e 45 44  |ND 1 IS RETURNED|
00002250  20 49 4e 20 52 35 2c 20  a9 47 54 48 20 ca 20 4f  | IN R5, .GTH . O|
00002260  50 45 52 41 4e 44 20 32  20 49 53 20 49 4e 20 52  |PERAND 2 IS IN R|
00002270  36 0d 13 06 04 0d 13 10  33 5c 52 45 47 49 53 54  |6.......3\REGIST|
00002280  45 52 53 20 41 56 41 49  4c 41 42 4c 45 20 52 33  |ERS AVAILABLE R3|
00002290  2c 52 34 2c 52 38 2d 52  31 32 2c 52 31 34 20 2d  |,R4,R8-R12,R14 -|
000022a0  20 63 61 72 72 79 3d 38  0d 13 1a 04 0d 13 24 1d  | carry=8......$.|
000022b0  4d 4f 56 20 52 37 2c 23  30 20 20 20 20 20 20 20  |MOV R7,#0       |
000022c0  20 20 20 20 20 20 5c 4a  25 0d 13 2e 12 2e 66 6f  |      \J%.....fo|
000022d0  72 5f 6c 6f 6f 70 69 66  79 31 62 0d 13 38 1d 20  |r_loopify1b..8. |
000022e0  20 41 44 44 20 52 33 2c  52 30 2c 52 37 20 20 20  | ADD R3,R0,R7   |
000022f0  20 20 20 20 20 5c 57 25  0d 13 42 1d 20 20 4d 56  |     \W%..B.  MV|
00002300  4e 20 52 34 2c 23 30 20  20 20 20 20 20 20 20 20  |N R4,#0         |
00002310  20 20 5c 56 25 0d 13 4c  04 0d 13 56 0e 20 20 2e  |  \V%..L...V.  .|
00002320  72 65 70 65 61 74 31 0d  13 60 14 20 20 20 20 41  |repeat1..`.    A|
00002330  44 44 20 52 34 2c 52 34  2c 23 31 0d 13 6a 14 20  |DD R4,R4,#1..j. |
00002340  20 20 20 4d 4f 56 20 63  61 72 72 79 2c 23 31 0d  |   MOV carry,#1.|
00002350  13 74 1c 20 20 20 20 53  55 42 20 52 39 2c 52 36  |.t.    SUB R9,R6|
00002360  2c 23 31 20 20 20 20 20  5c 4c 25 0d 13 7e 16 20  |,#1     \L%..~. |
00002370  20 20 20 2e 66 6f 72 5f  6c 6f 6f 70 69 66 79 32  |   .for_loopify2|
00002380  62 0d 13 88 1c 20 20 20  20 20 20 4d 4f 56 20 52  |b....      MOV R|
00002390  31 30 2c 23 30 20 20 20  20 20 5c 51 25 0d 13 92  |10,#0     \Q%...|
000023a0  13 20 20 20 20 20 20 43  4d 50 20 52 39 2c 23 30  |.      CMP R9,#0|
000023b0  0d 13 9c 1c 20 20 20 20  20 20 4c 44 52 47 45 42  |....      LDRGEB|
000023c0  20 52 31 30 2c 5b 52 31  2c 52 39 5d 0d 13 a6 04  | R10,[R1,R9]....|
000023d0  0d 13 b0 1a 20 20 20 20  20 20 4c 44 52 42 20 52  |....      LDRB R|
000023e0  31 34 2c 5b 52 33 2c 52  39 5d 0d 13 ba 19 20 20  |14,[R3,R9]....  |
000023f0  20 20 20 20 53 55 42 20  52 31 30 2c 52 31 34 2c  |    SUB R10,R14,|
00002400  52 31 30 0d 13 c4 1b 20  20 20 20 20 20 41 44 44  |R10....      ADD|
00002410  20 52 31 30 2c 52 31 30  2c 63 61 72 72 79 0d 13  | R10,R10,carry..|
00002420  ce 18 20 20 20 20 20 20  41 44 44 20 52 31 30 2c  |..      ADD R10,|
00002430  52 31 30 2c 23 39 0d 13  d8 04 0d 13 e2 22 20 20  |R10,#9......."  |
00002440  20 20 20 20 5c 41 53 53  45 4d 42 4c 45 20 83 20  |    \ASSEMBLE . |
00002450  80 20 81 20 46 55 4e 43  54 49 4f 4e 0d 13 ec 1c  |. . FUNCTION....|
00002460  20 20 20 20 20 20 53 54  4d 46 44 20 52 31 33 21  |      STMFD R13!|
00002470  2c 7b 52 30 2d 52 36 7d  0d 13 f6 14 20 20 20 20  |,{R0-R6}....    |
00002480  20 20 4d 4f 56 20 52 30  2c 52 31 30 0d 14 00 14  |  MOV R0,R10....|
00002490  20 20 20 20 20 20 4d 4f  56 20 52 31 2c 23 31 30  |      MOV R1,#10|
000024a0  0d 14 0a 19 20 20 20 20  20 20 80 53 20 52 36 2c  |....      .S R6,|
000024b0  52 30 2c 23 31 3c 3c 33  31 0d 14 14 18 20 20 20  |R0,#1<<31....   |
000024c0  20 20 20 52 53 42 4d 49  20 52 30 2c 52 30 2c 23  |   RSBMI R0,R0,#|
000024d0  30 0d 14 1e 14 20 20 20  20 20 20 82 20 52 35 2c  |0....      . R5,|
000024e0  52 36 2c 52 31 0d 14 28  13 20 20 20 20 20 20 43  |R6,R1..(.      C|
000024f0  4d 50 20 52 31 2c 23 30  0d 14 32 18 20 20 20 20  |MP R1,#0..2.    |
00002500  20 20 52 53 42 4d 49 20  52 31 2c 52 31 2c 23 30  |  RSBMI R1,R1,#0|
00002510  0d 14 3c 04 0d 14 46 13  20 20 20 20 20 20 4d 4f  |..<...F.      MO|
00002520  56 20 52 32 2c 23 30 0d  14 50 13 20 20 20 20 20  |V R2,#0..P.     |
00002530  20 4d 4f 56 20 52 33 2c  23 30 0d 14 5a 17 20 20  | MOV R3,#0..Z.  |
00002540  20 20 20 20 4d 4f 56 20  52 34 2c 23 31 3c 3c 33  |    MOV R4,#1<<3|
00002550  31 0d 14 64 04 0d 14 6e  19 20 20 20 20 20 20 2e  |1..d...n.      .|
00002560  64 69 76 69 73 69 6f 6e  5f 6c 6f 6f 70 32 0d 14  |division_loop2..|
00002570  78 1a 20 20 20 20 20 20  4d 4f 56 53 20 52 30 2c  |x.      MOVS R0,|
00002580  52 30 2c 41 53 4c 23 31  0d 14 82 16 20 20 20 20  |R0,ASL#1....    |
00002590  20 20 41 44 43 20 52 32  2c 52 32 2c 52 32 0d 14  |  ADC R2,R2,R2..|
000025a0  8c 13 20 20 20 20 20 20  43 4d 50 20 52 32 2c 52  |..      CMP R2,R|
000025b0  31 0d 14 96 18 20 20 20  20 20 20 53 55 42 47 45  |1....      SUBGE|
000025c0  20 52 32 2c 52 32 2c 52  31 0d 14 a0 17 20 20 20  | R2,R2,R1....   |
000025d0  20 20 20 84 52 47 45 20  52 33 2c 52 33 2c 52 34  |   .RGE R3,R3,R4|
000025e0  0d 14 aa 1a 20 20 20 20  20 20 4d 4f 56 53 20 52  |....      MOVS R|
000025f0  34 2c 52 34 2c 4c 53 52  23 31 0d 14 b4 1c 20 20  |4,R4,LSR#1....  |
00002600  20 20 20 20 42 4e 45 20  64 69 76 69 73 69 6f 6e  |    BNE division|
00002610  5f 6c 6f 6f 70 32 0d 14  be 04 0d 14 c8 13 20 20  |_loop2........  |
00002620  20 20 20 20 43 4d 50 20  52 35 2c 23 30 0d 14 d2  |    CMP R5,#0...|
00002630  18 20 20 20 20 20 20 52  53 42 4d 49 20 52 33 2c  |.      RSBMI R3,|
00002640  52 33 2c 23 30 0d 14 dc  13 20 20 20 20 20 20 43  |R3,#0....      C|
00002650  4d 50 20 52 36 2c 23 30  0d 14 e6 18 20 20 20 20  |MP R6,#0....    |
00002660  20 20 52 53 42 4d 49 20  52 32 2c 52 32 2c 23 30  |  RSBMI R2,R2,#0|
00002670  0d 14 f0 04 0d 14 fa 18  20 20 20 20 20 20 53 54  |........      ST|
00002680  52 20 52 33 2c 64 69 76  72 65 73 33 0d 15 04 18  |R R3,divres3....|
00002690  20 20 20 20 20 20 53 54  52 20 52 32 2c 6d 6f 64  |      STR R2,mod|
000026a0  72 65 73 33 0d 15 0e 04  0d 15 18 1c 20 20 20 20  |res3........    |
000026b0  20 20 4c 44 4d 46 44 20  52 31 33 21 2c 7b 52 30  |  LDMFD R13!,{R0|
000026c0  2d 52 36 7d 0d 15 22 04  0d 15 2c 19 20 20 20 20  |-R6}.."...,.    |
000026d0  20 20 4c 44 52 20 52 31  34 2c 6d 6f 64 72 65 73  |  LDR R14,modres|
000026e0  33 0d 15 36 1a 20 20 20  20 20 20 53 54 52 42 20  |3..6.      STRB |
000026f0  52 31 34 2c 5b 52 33 2c  52 39 5d 0d 15 40 18 20  |R14,[R3,R9]..@. |
00002700  20 20 20 20 20 4c 44 52  20 52 38 2c 64 69 76 72  |     LDR R8,divr|
00002710  65 73 33 0d 15 4a 16 20  20 20 20 20 20 53 55 42  |es3..J.      SUB|
00002720  20 52 39 2c 52 39 2c 23  31 0d 15 54 13 20 20 20  | R9,R9,#1..T.   |
00002730  20 20 20 43 4d 4e 20 52  39 2c 52 37 0d 15 5e 04  |   CMN R9,R7..^.|
00002740  0d 15 68 04 0d 15 72 19  20 20 20 20 42 4e 45 20  |..h...r.    BNE |
00002750  66 6f 72 5f 6c 6f 6f 70  69 66 79 32 62 0d 15 7c  |for_loopify2b..||
00002760  14 20 20 20 20 43 4d 50  20 63 61 72 72 79 2c 23  |.    CMP carry,#|
00002770  30 0d 15 86 11 20 20 42  4e 45 20 72 65 70 65 61  |0....  BNE repea|
00002780  74 31 0d 15 90 1a 20 20  53 55 42 20 52 39 2c 52  |t1....  SUB R9,R|
00002790  36 2c 23 31 20 20 20 20  20 5c 4c 25 0d 15 9a 16  |6,#1     \L%....|
000027a0  20 20 20 20 2e 66 6f 72  5f 6c 6f 6f 70 69 66 79  |    .for_loopify|
000027b0  33 62 0d 15 a4 1a 20 20  20 20 4d 4f 56 20 52 31  |3b....    MOV R1|
000027c0  30 2c 23 30 20 20 20 20  20 5c 51 25 0d 15 ae 11  |0,#0     \Q%....|
000027d0  20 20 20 20 43 4d 50 20  52 39 2c 23 30 0d 15 b8  |    CMP R9,#0...|
000027e0  1a 20 20 20 20 4c 44 52  47 45 42 20 52 31 30 2c  |.    LDRGEB R10,|
000027f0  5b 52 31 2c 52 39 5d 0d  15 c2 18 20 20 20 20 4c  |[R1,R9]....    L|
00002800  44 52 42 20 52 31 34 2c  5b 52 33 2c 52 39 5d 0d  |DRB R14,[R3,R9].|
00002810  15 cc 17 20 20 20 20 41  44 44 20 52 31 30 2c 52  |...    ADD R10,R|
00002820  31 30 2c 52 31 34 0d 15  d6 19 20 20 20 20 41 44  |10,R14....    AD|
00002830  44 20 52 31 30 2c 52 31  30 2c 63 61 72 72 79 0d  |D R10,R10,carry.|
00002840  15 e0 04 0d 15 ea 20 20  20 20 20 5c 41 53 53 45  |......     \ASSE|
00002850  4d 42 4c 45 20 83 20 80  20 81 20 46 55 4e 43 54  |MBLE . . . FUNCT|
00002860  49 4f 4e 0d 15 f4 1a 20  20 20 20 53 54 4d 46 44  |ION....    STMFD|
00002870  20 52 31 33 21 2c 7b 52  30 2d 52 36 7d 0d 15 fe  | R13!,{R0-R6}...|
00002880  12 20 20 20 20 4d 4f 56  20 52 30 2c 52 31 30 0d  |.    MOV R0,R10.|
00002890  16 08 12 20 20 20 20 4d  4f 56 20 52 31 2c 23 31  |...    MOV R1,#1|
000028a0  30 0d 16 12 17 20 20 20  20 80 53 20 52 36 2c 52  |0....    .S R6,R|
000028b0  30 2c 23 31 3c 3c 33 31  0d 16 1c 16 20 20 20 20  |0,#1<<31....    |
000028c0  52 53 42 4d 49 20 52 30  2c 52 30 2c 23 30 0d 16  |RSBMI R0,R0,#0..|
000028d0  26 12 20 20 20 20 82 20  52 35 2c 52 36 2c 52 31  |&.    . R5,R6,R1|
000028e0  0d 16 30 11 20 20 20 20  43 4d 50 20 52 31 2c 23  |..0.    CMP R1,#|
000028f0  30 0d 16 3a 16 20 20 20  20 52 53 42 4d 49 20 52  |0..:.    RSBMI R|
00002900  31 2c 52 31 2c 23 30 0d  16 44 04 0d 16 4e 11 20  |1,R1,#0..D...N. |
00002910  20 20 20 4d 4f 56 20 52  32 2c 23 30 0d 16 58 11  |   MOV R2,#0..X.|
00002920  20 20 20 20 4d 4f 56 20  52 33 2c 23 30 0d 16 62  |    MOV R3,#0..b|
00002930  15 20 20 20 20 4d 4f 56  20 52 34 2c 23 31 3c 3c  |.    MOV R4,#1<<|
00002940  33 31 0d 16 6c 04 0d 16  76 17 20 20 20 20 2e 64  |31..l...v.    .d|
00002950  69 76 69 73 69 6f 6e 5f  6c 6f 6f 70 33 0d 16 80  |ivision_loop3...|
00002960  18 20 20 20 20 4d 4f 56  53 20 52 30 2c 52 30 2c  |.    MOVS R0,R0,|
00002970  41 53 4c 23 31 0d 16 8a  14 20 20 20 20 41 44 43  |ASL#1....    ADC|
00002980  20 52 32 2c 52 32 2c 52  32 0d 16 94 11 20 20 20  | R2,R2,R2....   |
00002990  20 43 4d 50 20 52 32 2c  52 31 0d 16 9e 16 20 20  | CMP R2,R1....  |
000029a0  20 20 53 55 42 47 45 20  52 32 2c 52 32 2c 52 31  |  SUBGE R2,R2,R1|
000029b0  0d 16 a8 15 20 20 20 20  84 52 47 45 20 52 33 2c  |....    .RGE R3,|
000029c0  52 33 2c 52 34 0d 16 b2  18 20 20 20 20 4d 4f 56  |R3,R4....    MOV|
000029d0  53 20 52 34 2c 52 34 2c  4c 53 52 23 31 0d 16 bc  |S R4,R4,LSR#1...|
000029e0  1a 20 20 20 20 42 4e 45  20 64 69 76 69 73 69 6f  |.    BNE divisio|
000029f0  6e 5f 6c 6f 6f 70 33 0d  16 c6 04 0d 16 d0 11 20  |n_loop3........ |
00002a00  20 20 20 43 4d 50 20 52  35 2c 23 30 0d 16 da 16  |   CMP R5,#0....|
00002a10  20 20 20 20 52 53 42 4d  49 20 52 33 2c 52 33 2c  |    RSBMI R3,R3,|
00002a20  23 30 0d 16 e4 11 20 20  20 20 43 4d 50 20 52 36  |#0....    CMP R6|
00002a30  2c 23 30 0d 16 ee 16 20  20 20 20 52 53 42 4d 49  |,#0....    RSBMI|
00002a40  20 52 32 2c 52 32 2c 23  30 0d 16 f8 04 0d 17 02  | R2,R2,#0.......|
00002a50  16 20 20 20 20 53 54 52  20 52 33 2c 64 69 76 72  |.    STR R3,divr|
00002a60  65 73 33 0d 17 0c 16 20  20 20 20 53 54 52 20 52  |es3....    STR R|
00002a70  32 2c 6d 6f 64 72 65 73  33 0d 17 16 04 0d 17 20  |2,modres3...... |
00002a80  1a 20 20 20 20 4c 44 4d  46 44 20 52 31 33 21 2c  |.    LDMFD R13!,|
00002a90  7b 52 30 2d 52 36 7d 0d  17 2a 04 0d 17 34 17 20  |{R0-R6}..*...4. |
00002aa0  20 20 20 4c 44 52 20 52  31 34 2c 6d 6f 64 72 65  |   LDR R14,modre|
00002ab0  73 33 0d 17 3e 18 20 20  20 20 53 54 52 42 20 52  |s3..>.    STRB R|
00002ac0  31 34 2c 5b 52 33 2c 52  39 5d 0d 17 48 16 20 20  |14,[R3,R9]..H.  |
00002ad0  20 20 4c 44 52 20 52 38  2c 64 69 76 72 65 73 33  |  LDR R8,divres3|
00002ae0  0d 17 52 14 20 20 20 20  53 55 42 20 52 39 2c 52  |..R.    SUB R9,R|
00002af0  39 2c 23 31 0d 17 5c 11  20 20 20 20 43 4d 4e 20  |9,#1..\.    CMN |
00002b00  52 39 2c 52 37 0d 17 66  17 20 20 42 4e 45 20 66  |R9,R7..f.  BNE f|
00002b10  6f 72 5f 6c 6f 6f 70 69  66 79 33 62 0d 17 70 15  |or_loopify3b..p.|
00002b20  20 20 53 54 52 42 20 52  34 2c 5b 52 32 2c 52 37  |  STRB R4,[R2,R7|
00002b30  5d 0d 17 7a 12 20 20 41  44 44 20 52 37 2c 52 37  |]..z.  ADD R7,R7|
00002b40  2c 23 31 0d 17 84 13 20  20 53 55 42 20 52 31 34  |,#1....  SUB R14|
00002b50  2c 52 35 2c 52 36 0d 17  8e 10 20 20 43 4d 50 20  |,R5,R6....  CMP |
00002b60  52 37 2c 52 31 34 0d 17  98 15 42 4c 54 20 66 6f  |R7,R14....BLT fo|
00002b70  72 5f 6c 6f 6f 70 69 66  79 31 62 0d 17 a2 0f 4d  |r_loopify1b....M|
00002b80  4f 56 20 52 31 34 2c 23  31 30 0d 17 ac 10 53 55  |OV R14,#10....SU|
00002b90  42 20 52 37 2c 52 37 2c  23 31 0d 17 b6 14 53 54  |B R7,R7,#1....ST|
00002ba0  52 42 20 52 31 34 2c 5b  52 32 2c 52 37 5d 0d 17  |RB R14,[R2,R7]..|
00002bb0  c0 04 0d 17 ca 17 42 4c  20 52 65 6d 6f 76 65 5f  |......BL Remove_|
00002bc0  4c 65 61 64 69 6e 67 30  73 0d 17 d4 04 0d 17 de  |Leading0s.......|
00002bd0  04 0d 17 e8 17 4c 44 4d  46 44 20 52 31 33 21 2c  |.....LDMFD R13!,|
00002be0  7b 52 30 2d 52 31 32 7d  0d 17 f2 13 4c 44 4d 46  |{R0-R12}....LDMF|
00002bf0  44 20 52 31 33 21 2c 7b  50 43 7d 0d 17 fc 04 0d  |D R13!,{PC}.....|
00002c00  18 06 04 0d 18 10 0c 2e  64 69 76 72 65 73 33 0d  |........divres3.|
00002c10  18 1a 0a 45 51 55 44 20  30 0d 18 24 0c 2e 6d 6f  |...EQUD 0..$..mo|
00002c20  64 72 65 73 33 0d 18 2e  0a 45 51 55 44 20 30 0d  |dres3....EQUD 0.|
00002c30  18 38 04 0d 18 42 04 0d  18 4c 15 2e 52 65 6d 6f  |.8...B...L..Remo|
00002c40  76 65 5f 4c 65 61 64 69  6e 67 30 73 0d 18 56 14  |ve_Leading0s..V.|
00002c50  53 54 4d 46 44 20 52 31  33 21 2c 7b 52 31 34 7d  |STMFD R13!,{R14}|
00002c60  0d 18 60 05 3a 0d 18 6a  0d 4d 4f 56 20 52 34 2c  |..`.:..j.MOV R4,|
00002c70  23 30 0d 18 74 12 2e 6c  6f 6f 70 5f 72 65 6d 6f  |#0..t..loop_remo|
00002c80  76 65 30 73 0d 18 7e 13  4c 44 52 42 20 52 35 2c  |ve0s..~.LDRB R5,|
00002c90  5b 52 32 2c 52 34 5d 0d  18 88 0d 43 4d 50 20 52  |[R2,R4]....CMP R|
00002ca0  35 2c 23 30 0d 18 92 12  41 44 44 45 51 20 52 34  |5,#0....ADDEQ R4|
00002cb0  2c 52 34 2c 23 31 0d 18  9c 15 42 45 51 20 6c 6f  |,R4,#1....BEQ lo|
00002cc0  6f 70 5f 72 65 6d 6f 76  65 30 73 0d 18 a6 04 0d  |op_remove0s.....|
00002cd0  18 b0 11 41 44 52 20 52  36 2c 61 6e 73 77 65 72  |...ADR R6,answer|
00002ce0  0d 18 ba 0d 4d 4f 56 20  52 37 2c 23 30 0d 18 c4  |....MOV R7,#0...|
00002cf0  15 2e 6c 6f 6f 70 5f 73  77 61 70 5f 73 74 72 69  |..loop_swap_stri|
00002d00  6e 67 0d 18 ce 13 4c 44  52 42 20 52 35 2c 5b 52  |ng....LDRB R5,[R|
00002d10  32 2c 52 34 5d 0d 18 d8  13 53 54 52 42 20 52 35  |2,R4]....STRB R5|
00002d20  2c 5b 52 36 2c 52 37 5d  0d 18 e2 10 41 44 44 20  |,[R6,R7]....ADD |
00002d30  52 34 2c 52 34 2c 23 31  0d 18 ec 10 41 44 44 20  |R4,R4,#1....ADD |
00002d40  52 37 2c 52 37 2c 23 31  0d 18 f6 0e 43 4d 50 20  |R7,R7,#1....CMP |
00002d50  52 35 2c 23 31 30 0d 19  00 18 42 4e 45 20 6c 6f  |R5,#10....BNE lo|
00002d60  6f 70 5f 73 77 61 70 5f  73 74 72 69 6e 67 0d 19  |op_swap_string..|
00002d70  0a 04 0d 19 14 04 0d 19  1e 05 3a 0d 19 28 13 4c  |..........:..(.L|
00002d80  44 4d 46 44 20 52 31 33  21 2c 7b 50 43 7d 0d 19  |DMFD R13!,{PC}..|
00002d90  32 04 0d 19 3c 10 2e 61  64 64 72 65 73 73 5f 61  |2...<..address_a|
00002da0  6e 73 0d 19 46 14 53 54  4d 46 44 20 52 31 33 21  |ns..F.STMFD R13!|
00002db0  2c 7b 52 31 34 7d 0d 19  50 11 41 44 52 20 52 38  |,{R14}..P.ADR R8|
00002dc0  2c 61 6e 73 77 65 72 0d  19 5a 13 4c 44 4d 46 44  |,answer..Z.LDMFD|
00002dd0  20 52 31 33 21 2c 7b 50  43 7d 0d 19 64 0b 2e 61  | R13!,{PC}..d..a|
00002de0  6e 73 77 65 72 0d 19 6e  15 a4 42 79 74 65 73 28  |nswer..n..Bytes(|
00002df0  61 63 63 75 72 61 63 79  25 29 0d 19 78 04 0d 19  |accuracy%)..x...|
00002e00  82 04 0d 19 8c 12 2e 67  65 74 5f 61 64 64 72 65  |.......get_addre|
00002e10  73 73 65 73 0d 19 96 14  53 54 4d 46 44 20 52 31  |sses....STMFD R1|
00002e20  33 21 2c 7b 52 31 34 7d  0d 19 a0 13 41 44 52 20  |3!,{R14}....ADR |
00002e30  52 30 2c 6f 70 65 72 61  6e 64 31 0d 19 aa 0b 42  |R0,operand1....B|
00002e40  20 6e 65 78 74 31 0d 19  b4 0d 2e 6f 70 65 72 61  | next1.....opera|
00002e50  6e 64 31 0d 19 be 15 a4  42 79 74 65 73 28 61 63  |nd1.....Bytes(ac|
00002e60  63 75 72 61 63 79 25 29  0d 19 c8 0a 2e 6e 65 78  |curacy%).....nex|
00002e70  74 31 0d 19 d2 13 41 44  52 20 52 31 2c 6f 70 65  |t1....ADR R1,ope|
00002e80  72 61 6e 64 32 0d 19 dc  0b 42 20 6e 65 78 74 32  |rand2....B next2|
00002e90  0d 19 e6 0d 2e 6f 70 65  72 61 6e 64 32 0d 19 f0  |.....operand2...|
00002ea0  15 a4 42 79 74 65 73 28  61 63 63 75 72 61 63 79  |..Bytes(accuracy|
00002eb0  25 29 0d 19 fa 0a 2e 6e  65 78 74 32 0d 1a 04 11  |%).....next2....|
00002ec0  41 44 52 20 52 32 2c 72  65 73 75 6c 74 0d 1a 0e  |ADR R2,result...|
00002ed0  0b 42 20 6e 65 78 74 33  0d 1a 18 0b 2e 72 65 73  |.B next3.....res|
00002ee0  75 6c 74 0d 1a 22 15 a4  42 79 74 65 73 28 61 63  |ult.."..Bytes(ac|
00002ef0  63 75 72 61 63 79 25 29  0d 1a 2c 0a 2e 6e 65 78  |curacy%)..,..nex|
00002f00  74 33 0d 1a 36 14 41 44  52 20 52 31 32 2c 65 5f  |t3..6.ADR R12,e_|
00002f10  73 6f 5f 66 61 72 0d 1a  40 13 4c 44 4d 46 44 20  |so_far..@.LDMFD |
00002f20  52 31 33 21 2c 7b 50 43  7d 0d 1a 4a 0d 2e 65 5f  |R13!,{PC}..J..e_|
00002f30  73 6f 5f 66 61 72 0d 1a  54 15 a4 42 79 74 65 73  |so_far..T..Bytes|
00002f40  28 61 63 63 75 72 61 63  79 25 29 0d 1a 5e 05 3a  |(accuracy%)..^.:|
00002f50  0d 1a 68 05 3a 0d 1a 72  0b 2e 66 69 6c 6c 5f 65  |..h.:..r..fill_e|
00002f60  0d 1a 7c 14 53 54 4d 46  44 20 52 31 33 21 2c 7b  |..|.STMFD R13!,{|
00002f70  52 31 34 7d 0d 1a 86 05  3a 0d 1a 90 0d 4d 4f 56  |R14}....:....MOV|
00002f80  20 52 35 2c 23 30 0d 1a  9a 0d 4d 4f 56 20 52 36  | R5,#0....MOV R6|
00002f90  2c 23 30 0d 1a a4 10 2e  6c 6f 6f 70 5f 66 69 6c  |,#0.....loop_fil|
00002fa0  6c 5f 65 0d 1a ae 16 20  20 53 54 52 42 20 52 35  |l_e....  STRB R5|
00002fb0  2c 5b 52 31 32 2c 52 36  5d 0d 1a b8 12 20 20 41  |,[R12,R6]....  A|
00002fc0  44 44 20 52 36 2c 52 36  2c 23 31 0d 1a c2 18 20  |DD R6,R6,#1.... |
00002fd0  20 43 4d 50 20 52 36 2c  23 61 63 63 75 72 61 63  | CMP R6,#accurac|
00002fe0  79 32 25 0d 1a cc 13 42  4e 45 20 6c 6f 6f 70 5f  |y2%....BNE loop_|
00002ff0  66 69 6c 6c 5f 65 0d 1a  d6 0e 4d 4f 56 20 52 35  |fill_e....MOV R5|
00003000  2c 23 31 30 0d 1a e0 10  53 55 42 20 52 36 2c 52  |,#10....SUB R6,R|
00003010  36 2c 23 31 0d 1a ea 14  53 54 52 42 20 52 35 2c  |6,#1....STRB R5,|
00003020  5b 52 31 32 2c 52 36 5d  0d 1a f4 05 3a 0d 1a fe  |[R12,R6]....:...|
00003030  13 4c 44 4d 46 44 20 52  31 33 21 2c 7b 50 43 7d  |.LDMFD R13!,{PC}|
00003040  0d 1b 08 04 0d 1b 12 05  5d 0d 1b 1c 05 ed 0d 1b  |........].......|
00003050  26 05 3a 0d 1b 30 08 eb  20 31 33 0d 1b 3a 0a e6  |&.:..0.. 13..:..|
00003060  20 30 2c 36 33 0d 1b 44  04 0d 1b 4e 18 f1 20 22  | 0,63..D...N.. "|
00003070  43 61 6c 63 75 6c 61 74  69 6e 67 2e 2e 2e 2e 2e  |Calculating.....|
00003080  22 0d 1b 58 13 d6 20 46  61 63 74 6f 72 69 61 6c  |"..X.. Factorial|
00003090  6c 69 66 79 0d 1b 62 04  0d 1b 6c 14 f4 20 2a 53  |lify..b...l.. *S|
000030a0  50 4f 4f 4c 20 45 5f 46  49 4c 45 33 0d 1b 76 07  |POOL E_FILE3..v.|
000030b0  20 20 f1 0d 1b 80 07 20  20 f1 0d 1b 8a 07 20 20  |  .....  .....  |
000030c0  f1 0d 1b 94 09 20 20 41  3d 30 0d 1b 9e 07 20 20  |.....  A=0....  |
000030d0  f5 0d 1b a8 0c 20 20 20  20 41 2b 3d 31 0d 1b b2  |.....    A+=1...|
000030e0  16 20 20 fd 20 28 65 5f  73 6f 5f 66 61 72 3f 41  |.  . (e_so_far?A|
000030f0  29 3d 37 0d 1b bc 0d 20  20 f1 20 22 32 2e 22 3b  |)=7....  . "2.";|
00003100  0d 1b c6 07 20 20 f5 0d  1b d0 18 20 20 20 20 f1  |....  .....    .|
00003110  20 c3 28 65 5f 73 6f 5f  66 61 72 3f 41 29 3b 0d  | .(e_so_far?A);.|
00003120  1b da 0c 20 20 20 20 41  2b 3d 31 0d 1b e4 17 20  |...    A+=1.... |
00003130  20 fd 20 28 65 5f 73 6f  5f 66 61 72 3f 41 29 3d  | . (e_so_far?A)=|
00003140  31 30 0d 1b ee 0c f4 20  2a 53 50 4f 4f 4c 0d 1b  |10..... *SPOOL..|
00003150  f8 04 0d 1c 02 05 e0 0d  1c 0c 05 3a 0d 1c 16 11  |...........:....|
00003160  dd a4 42 79 74 65 73 28  69 6e 63 25 29 0d 1c 20  |..Bytes(inc%).. |
00003170  0c 50 25 2b 3d 69 6e 63  25 0d 1c 2a 06 3d 30 0d  |.P%+=inc%..*.=0.|
00003180  1c 34 05 3a 0d ff                                 |.4.:..|
00003186