Home » Archimedes archive » Acorn User » AU 1993-06.adf » !Render_Render » !Compile/Assemble

!Compile/Assemble

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 1993-06.adf » !Render_Render
Filename: !Compile/Assemble
Read OK:
File size: 5D0D bytes
Load address: 0000
Exec address: 0000
File contents
   10REM     >Assemble
   20REM By  Robin Barnes
   30REM For 32-bit machines
   40REM (c) BAU June 1993
   50:
   60name$="Code"
   70DIM assem% &8000
   80PROCassem(end%)
   90SYS "OS_File",&00,name$,0,0,assem%,end%
  100END
  110:
  120DEF PROCassem(RETURN end%)
  130FOR opt%=0 TO 3 STEP 3
  140P%=assem%
  150[ OPT opt%
  160EQUD boundbox-assem%
  170EQUD plane-assem%
  180EQUD pointnormal-assem%
  190EQUD polynormal-assem%
  200EQUD scanline-assem%
  210EQUD point-assem%
  220EQUD intensity-assem%
  230EQUD colour-assem%
  240EQUD fputobas-assem%
  250EQUD bastofpu-assem%
  260EQUD number-assem%
  270EQUD transform-assem%
  280EQUD perspective-assem%
  290:
  300.input EQUD 0
  310.output EQUD 0
  320]
  330PROCtransform
  340PROCperspective
  350PROCboundbox
  360PROCplane
  370PROCpointnormal
  380PROCpolynormal
  390PROCscanline
  400PROCpoint
  410PROCintensity
  420PROCcolour
  430PROCnumber
  440NEXT opt%
  450end%=P%
  460ENDPROC
  470:
  480DEF PROCtransform
  490[ OPT opt%
  500\ tranform points
  510:
  520.transform
  530LDR R0,input
  540LDR R1,[R0,#8]
  550LDR R2,[R0,#40]
  560LDR R3,[R1]
  570:
  580.translp
  590SUBS R3,R3,#&01
  600MOVLT PC,R14
  610ADD R12,R3,R3,ASL #&01
  620ADD R12,R1,R12,ASL #&02
  630EQUD FNfpu("LDFS F0,[R12,#4]")
  640EQUD FNfpu("LDFS F1,[R12,#8]")
  650EQUD FNfpu("LDFS F2,[R12,#12]")
  660EQUD FNfpu("LDFS F7,[R2,#0]"):EQUD FNfpu("ADFS F0,F0,F7")
  670EQUD FNfpu("LDFS F7,[R2,#4]"):EQUD FNfpu("ADFS F1,F1,F7")
  680EQUD FNfpu("LDFS F7,[R2,#8]"):EQUD FNfpu("ADFS F2,F2,F7")
  690:
  700EQUD FNfpu("LDFS F7,[R2,#12]"):EQUD FNfpu("MUFS F3,F0,F7")
  710EQUD FNfpu("LDFS F7,[R2,#16]"):EQUD FNfpu("MUFS F6,F1,F7")
  720EQUD FNfpu("ADFS F3,F3,F6"):EQUD FNfpu("LDFS F7,[R2,#20]")
  730EQUD FNfpu("MUFS F6,F2,F7"):EQUD FNfpu("ADFS F3,F3,F6")
  740:
  750EQUD FNfpu("LDFS F7,[R2,#24]"):EQUD FNfpu("MUFS F4,F0,F7")
  760EQUD FNfpu("LDFS F7,[R2,#28]"):EQUD FNfpu("MUFS F6,F1,F7")
  770EQUD FNfpu("ADFS F4,F4,F6"):EQUD FNfpu("LDFS F7,[R2,#32]")
  780EQUD FNfpu("MUFS F6,F2,F7"):EQUD FNfpu("ADFS F4,F4,F6")
  790:
  800EQUD FNfpu("LDFS F7,[R2,#36]"):EQUD FNfpu("MUFS F5,F0,F7")
  810EQUD FNfpu("LDFS F7,[R2,#40]"):EQUD FNfpu("MUFS F6,F1,F7")
  820EQUD FNfpu("ADFS F5,F5,F6"):EQUD FNfpu("LDFS F7,[R2,#44]")
  830EQUD FNfpu("MUFS F6,F2,F7"):EQUD FNfpu("ADFS F5,F5,F6")
  840EQUD FNfpu("STFS F3,[R12,#4]")
  850EQUD FNfpu("STFS F4,[R12,#8]")
  860EQUD FNfpu("STFS F5,[R12,#12]")
  870B translp
  880]
  890ENDPROC
  900:
  910DEF PROCperspective
  920[ OPT opt%
  930\ perspective transform
  940:
  950.perspective
  960LDR R0,input
  970LDR R1,[R0,#8]
  980LDR R2,[R1]
  990EQUD FNfpu("MVFS F6,#1.0")
 1000EQUD FNfpu("DVFS F6,F6,#10.0")
 1010EQUD FNfpu("POWS F6,F6,#10.0")
 1020:
 1030.prspctlp
 1040SUBS R2,R2,#&01
 1050MOVLT PC,R14
 1060ADD R12,R2,R2,ASL #&01
 1070ADD R12,R1,R12,ASL #&02
 1080EQUD FNfpu("LDFS F0,[R12,#4]")
 1090EQUD FNfpu("LDFS F1,[R12,#8]")
 1100EQUD FNfpu("LDFS F2,[R12,#12]")
 1110EQUD FNfpu("CMES F2,#0.0")
 1120EQUD FNfpu("MVFLES F2,F6")
 1130EQUD FNfpu("DVFS F0,F0,F2")
 1140EQUD FNfpu("DVFS F1,F1,F2")
 1150EQUD FNfpu("STFS F0,[R12,#4]")
 1160EQUD FNfpu("STFS F1,[R12,#8]")
 1170B prspctlp
 1180]
 1190ENDPROC
 1200:
 1210DEF PROCpolynormal
 1220[ OPT opt%
 1230\ calculate normal to polygon
 1240:
 1250.polynormal
 1260LDR R0,input
 1270LDR R1,output
 1280LDR R2,[R0,#28]
 1290LDR R3,[R0,#44]
 1300ADD R12,R2,R3,ASL #&04
 1310EQUD FNfpu("LDFS F0,[R12,#0]")
 1320EQUD FNfpu("LDFS F1,[R12,#4]")
 1330EQUD FNfpu("LDFS F2,[R12,#8]")
 1340EQUD FNfpu("MUFS F3,F0,F0")
 1350EQUD FNfpu("MUFS F4,F1,F1")
 1360EQUD FNfpu("ADFS F3,F3,F4")
 1370EQUD FNfpu("MUFS F4,F2,F2")
 1380EQUD FNfpu("ADFS F3,F3,F4")
 1390EQUD FNfpu("SQTS F3,F3")
 1400EQUD FNfpu("DVFS F0,F0,F3")
 1410EQUD FNfpu("DVFS F1,F1,F3")
 1420EQUD FNfpu("DVFS F2,F2,F3")
 1430EQUD FNfpu("STFS F0,[R1,#4]")
 1440EQUD FNfpu("STFS F1,[R1,#8]")
 1450EQUD FNfpu("STFS F2,[R1,#12]")
 1460MOV PC,R14
 1470]
 1480ENDPROC
 1490:
 1500DEF PROCboundbox
 1510[OPT opt%
 1520\ calculate bounding boxes for polygons
 1530:
 1540.boundbox
 1550STMFD R13!,{R14}
 1560LDR R0,input
 1570LDR R1,[R0,#8]
 1580LDR R2,[R0,#12]
 1590LDR R3,[R0,#16]
 1600LDR R4,[R0,#36]
 1610LDR R0,output
 1620LDR R5,[R2]
 1630EQUD FNfpu("MVFS F4,#10.0")
 1640EQUD FNfpu("POWS F4,F4,#10.0")
 1650EQUD FNfpu("MVFS F5,F4")
 1660EQUD FNfpu("MNFS F6,F4")
 1670EQUD FNfpu("MNFS F7,F4")
 1680:
 1690.bndboxlp
 1700SUBS R5,R5,#&01
 1710EQUD FNfpu("STFLTS F4,[R0]")
 1720EQUD FNfpu("STFLTS F5,[R0,#4]")
 1730EQUD FNfpu("STFLTS F6,[R0,#8]")
 1740EQUD FNfpu("STFLTS F7,[R0,#12]")
 1750LDMLTFD R13!,{PC}
 1760BL bndpoly
 1770B bndboxlp
 1780:
 1790.bndpoly
 1800ADD R11,R5,#&01
 1810LDR R11,[R2,R11,ASL #&02]
 1820ADD R11,R11,R3
 1830ADD R11,R11,#&04
 1840LDR R6,[R11]
 1850EQUD FNfpu("MVFS F0,#10.0")
 1860EQUD FNfpu("POWS F0,F0,#10.0")
 1870EQUD FNfpu("MNFS F1,F0")
 1880:
 1890.bndpollp
 1900LDR R7,[R11,R6,ASL #&02]
 1910ADD R12,R7,R7,ASL #&01
 1920ADD R12,R1,R12,ASL #&02
 1930EQUD FNfpu("LDFS F2,[R12,#04]")
 1940EQUD FNfpu("LDFS F3,[R12,#08]")
 1950EQUD FNfpu("CMES F3,F0")
 1960EQUD FNfpu("MVFLTS F0,F3")
 1970EQUD FNfpu("CMES F3,F1")
 1980EQUD FNfpu("MVFGTS F1,F3")
 1990EQUD FNfpu("CMES F2,F4")
 2000EQUD FNfpu("MVFLTS F4,F2")
 2010EQUD FNfpu("CMES F2,F6")
 2020EQUD FNfpu("MVFGTS F6,F2")
 2030SUBS R6,R6,#&01
 2040BGT bndpollp
 2050ADD R12,R4,R5,ASL #&03
 2060EQUD FNfpu("STFS F0,[R12,#0]")
 2070EQUD FNfpu("STFS F1,[R12,#4]")
 2080EQUD FNfpu("CMES F0,F5")
 2090EQUD FNfpu("MVFLTS F5,F0")
 2100EQUD FNfpu("CMES F1,F7")
 2110EQUD FNfpu("MVFGTS F7,F1")
 2120MOV PC,R14
 2130]
 2140ENDPROC
 2150:
 2160DEF PROCpointnormal
 2170[ OPT opt%
 2180\ calculate normals at vertices
 2190:
 2200.pointnormal
 2210STMFD R13!,{R14}
 2220LDR R0,input
 2230LDR R4,[R0,#32]
 2240LDR R1,[R0,#8]
 2250LDR R1,[R1]
 2260EQUD FNfpu("MVFS F0,#0.0")
 2270:
 2280.normblnk
 2290SUBS R1,R1,#&01
 2300LDRLT R1,[R0,#12]
 2310LDRLT R2,[R0,#16]
 2320LDRLT R3,[R0,#28]
 2330LDRLT R5,[R1]
 2340BLT pntnormlp
 2350ADD R12,R1,R1,ASL #&01
 2360ADD R12,R4,R12,ASL #&02
 2370EQUD FNfpu("STFS F0,[R12,#0]")
 2380EQUD FNfpu("STFS F0,[R12,#4]")
 2390EQUD FNfpu("STFS F0,[R12,#8]")
 2400B normblnk
 2410:
 2420.pntnormlp
 2430SUBS R5,R5,#&01
 2440LDRLT R1,[R0,#8]
 2450LDRLT R1,[R1]
 2460BLT modulus
 2470BL sumpoly
 2480B pntnormlp
 2490:
 2500.modulus
 2510SUBS R1,R1,#&01
 2520LDMLTFD R13!,{PC}
 2530ADD R12,R1,R1,ASL #&01
 2540ADD R12,R4,R12,ASL #&02
 2550EQUD FNfpu("LDFS F0,[R12]")
 2560EQUD FNfpu("LDFS F1,[R12,#4]")
 2570EQUD FNfpu("LDFS F2,[R12,#8]")
 2580EQUD FNfpu("MUFS F3,F0,F0")
 2590EQUD FNfpu("MUFS F4,F1,F1")
 2600EQUD FNfpu("MUFS F5,F2,F2")
 2610EQUD FNfpu("ADFS F3,F3,F4")
 2620EQUD FNfpu("ADFS F3,F3,F5")
 2630EQUD FNfpu("SQTS F3,F3")
 2640EQUD FNfpu("DVFS F0,F0,F3")
 2650EQUD FNfpu("DVFS F1,F1,F3")
 2660EQUD FNfpu("DVFS F2,F2,F3")
 2670EQUD FNfpu("STFS F0,[R12]")
 2680EQUD FNfpu("STFS F1,[R12,#4]")
 2690EQUD FNfpu("STFS F2,[R12,#8]")
 2700B modulus
 2710:
 2720.sumpoly
 2730ADD R11,R5,#&01
 2740LDR R11,[R1,R11,ASL #&02]
 2750ADD R11,R11,R2
 2760ADD R11,R11,#&04
 2770LDR R6,[R11]
 2780ADD R12,R3,R5,ASL #&04
 2790EQUD FNfpu("LDFS F0,[R12]")
 2800EQUD FNfpu("LDFS F1,[R12,#4]")
 2810EQUD FNfpu("LDFS F2,[R12,#8]")
 2820:
 2830.sumpolylp
 2840SUBS R6,R6,#&01
 2850MOVLE PC,R14
 2860LDR R7,[R11,R6,ASL #&02]
 2870ADD R12,R7,R7,ASL #&01
 2880ADD R12,R4,R12,ASL #&02
 2890EQUD FNfpu("LDFS F3,[R12]")
 2900EQUD FNfpu("LDFS F4,[R12,#4]")
 2910EQUD FNfpu("LDFS F5,[R12,#8]")
 2920EQUD FNfpu("ADFS F3,F3,F0")
 2930EQUD FNfpu("ADFS F4,F4,F1")
 2940EQUD FNfpu("ADFS F5,F5,F2")
 2950EQUD FNfpu("STFS F3,[R12]")
 2960EQUD FNfpu("STFS F4,[R12,#4]")
 2970EQUD FNfpu("STFS F5,[R12,#8]")
 2980B sumpolylp
 2990]
 3000ENDPROC
 3010:
 3020DEF PROCplane
 3030[ OPT opt%
 3040\ calculate plane equations for polygons
 3050:
 3060.plane
 3070STMFD R13!,{R14}
 3080LDR R0,input
 3090LDR R1,[R0,#8]
 3100LDR R2,[R0,#12]
 3110LDR R3,[R0,#16]
 3120LDR R4,[R0,#28]
 3130LDR R5,[R2]
 3140:
 3150.plnpollp
 3160SUBS R5,R5,#&01
 3170LDMLTFD R13!,{PC}
 3180BL planecalc
 3190B plnpollp
 3200:
 3210.planecalc
 3220ADD R10,R5,#&01
 3230LDR R10,[R2,R10,ASL #&02]
 3240ADD R10,R10,R3
 3250ADD R10,R10,#&04
 3260LDR R6,[R10]
 3270EQUD FNfpu("MVFS F0,#0.0")
 3280EQUD FNfpu("MVFS F1,#0.0")
 3290EQUD FNfpu("MVFS F2,#0.0")
 3300:
 3310.planelp
 3320LDR R7,[R10,R6,ASL #&02]
 3330SUBS R6,R6,#&01
 3340BLE planestore
 3350LDR R8,[R10,R6,ASL #&02]
 3360ADD R11,R7,R7,ASL #&01
 3370ADD R11,R1,R11,ASL #&02
 3380ADD R12,R8,R8,ASL #&01
 3390ADD R12,R1,R12,ASL #&02
 3400EQUD FNfpu("LDFS F4,[R11,#04]")
 3410EQUD FNfpu("LDFS F5,[R12,#04]")
 3420EQUD FNfpu("LDFS F6,[R11,#08]")
 3430EQUD FNfpu("LDFS F7,[R12,#08]")
 3440EQUD FNfpu("SUFS F4,F5,F4")
 3450EQUD FNfpu("ADFS F5,F6,F7")
 3460EQUD FNfpu("MUFS F4,F4,F5")
 3470EQUD FNfpu("ADFS F2,F2,F4")
 3480EQUD FNfpu("LDFS F4,[R11,#12]")
 3490EQUD FNfpu("LDFS F5,[R12,#12]")
 3500EQUD FNfpu("SUFS F6,F7,F6")
 3510EQUD FNfpu("ADFS F7,F5,F4")
 3520EQUD FNfpu("MUFS F6,F6,F7")
 3530EQUD FNfpu("ADFS F0,F0,F6")
 3540EQUD FNfpu("LDFS F6,[R11,#4]")
 3550EQUD FNfpu("LDFS F7,[R12,#4]")
 3560EQUD FNfpu("SUFS F4,F5,F4")
 3570EQUD FNfpu("ADFS F5,F7,F6")
 3580EQUD FNfpu("MUFS F4,F4,F5")
 3590EQUD FNfpu("ADFS F1,F1,F4")
 3600B planelp
 3610:
 3620.planestore
 3630ADD R11,R7,R7,ASL #&01
 3640ADD R11,R1,R11,ASL #&02
 3650EQUD FNfpu("LDFS F4,[R11,#4]")
 3660EQUD FNfpu("LDFS F5,[R11,#8]")
 3670EQUD FNfpu("LDFS F6,[R11,#12]")
 3680EQUD FNfpu("MUFS F4,F4,F0")
 3690EQUD FNfpu("MUFS F5,F5,F1")
 3700EQUD FNfpu("MUFS F6,F6,F2")
 3710EQUD FNfpu("ADFS F4,F4,F5")
 3720EQUD FNfpu("ADFS F4,F4,F6")
 3730EQUD FNfpu("MNFS F4,F4")
 3740ADD R12,R4,R5,ASL #&04
 3750EQUD FNfpu("STFS F0,[R12]")
 3760EQUD FNfpu("STFS F1,[R12,#04]")
 3770EQUD FNfpu("STFS F2,[R12,#08]")
 3780EQUD FNfpu("STFS F4,[R12,#12]")
 3790MOV PC,R14
 3800]
 3810ENDPROC
 3820:
 3830DEF PROCscanline
 3840[ OPT opt%
 3850\ produce ordered edge pair list
 3860:
 3870.inside
 3880ADD R12,R5,R7,ASL #&03
 3890EQUD FNfpu("LDFS F2,[R12]")
 3900EQUD FNfpu("CMES F1,F2")
 3910MOVLT PC,R14
 3920EQUD FNfpu("LDFS F2,[R12,#4]")
 3930EQUD FNfpu("CMES F1,F2")
 3940MOVGT PC,R14
 3950ADD R11,R7,#&01
 3960LDR R11,[R2,R11,ASL #&02]
 3970ADD R11,R11,R3
 3980ADD R11,R11,#&04
 3990LDR R8,[R11]
 4000:
 4010.edgelp
 4020LDR R9,[R11,R8,ASL #&02]
 4030SUBS R8,R8,#&01
 4040MOVLE PC,R14
 4050ADD R12,R9,R9,ASL #&01
 4060ADD R12,R1,R12,ASL #&02
 4070EQUD FNfpu("LDFS F2,[R12,#08]")
 4080LDR R10,[R11,R8,ASL #&02]
 4090ADD R12,R10,R10,ASL #&01
 4100ADD R12,R1,R12,ASL #&02
 4110EQUD FNfpu("LDFS F3,[R12,#08]")
 4120:
 4130EQUD FNfpu("MVFS F4,F2")
 4140EQUD FNfpu("MVFS F5,F3")
 4150EQUD FNfpu("CMES F2,F3")
 4160EQUD FNfpu("MVFGTS F5,F2")
 4170EQUD FNfpu("MVFGTS F4,F3")
 4180EQUD FNfpu("CMES F1,F5")
 4190BGT edgelp
 4200EQUD FNfpu("CMES F1,F4")
 4210BLE edgelp
 4220:
 4230EQUD FNfpu("SUFS F5,F3,F2")
 4240ADD R12,R9,R9,ASL #&01
 4250ADD R12,R1,R12,ASL #&02
 4260EQUD FNfpu("LDFS F7,[R12,#04]")
 4270ADD R12,R10,R10,ASL #&01
 4280ADD R12,R1,R12,ASL #&02
 4290EQUD FNfpu("LDFS F3,[R12,#04]")
 4300EQUD FNfpu("SUFS F4,F3,F7")
 4310EQUD FNfpu("SUFS F2,F1,F2")
 4320EQUD FNfpu("DVFS F5,F2,F5")
 4330EQUD FNfpu("MUFS F4,F5,F4")
 4340EQUD FNfpu("ADFS F4,F4,F7")
 4350:
 4360ADD R12,R4,R6,ASL #&03
 4370EQUD FNfpu("STFS F4,[R12]")
 4380MOV R9,R7,ASL #&10
 4390ORR R9,R9,R8
 4400STR R9,[R12,#&04]
 4410ADD R6,R6,#&01
 4420B edgelp
 4430:
 4440.scanline
 4450STMFD R13!,{R14}
 4460LDR R0,input
 4470EQUD FNfpu("LDFS F1,[R0,#4]")
 4480LDR R1,[R0,#8]
 4490LDR R2,[R0,#12]
 4500LDR R3,[R0,#16]
 4510LDR R4,[R0,#20]
 4520ADD R4,R4,#&04
 4530LDR R5,[R0,#36]
 4540MOV R6,#&00
 4550LDR R7,[R2]
 4560:
 4570.scanlp
 4580SUBS R7,R7,#&01
 4590BLT ordertable
 4600BL inside
 4610B scanlp
 4620:
 4630.ordertable
 4640STR R6,[R4,#-4]
 4650CMP R6,#&02
 4660LDMLTFD R13!,{PC}
 4670ANDS R12,R6,#&01
 4680ADDNE R6,R6,#&01
 4690EQUD FNfpu("MVFNES F7,#10.0")
 4700EQUD FNfpu("POWNES F7,F7,#10.0")
 4710EQUD FNfpu("MNFNES F7,F7")
 4720ADDNE R12,R4,R6,ASL #&03
 4730EQUD FNfpu("STFNES F7,[R12,#0]")
 4740MOV R0,R4
 4750MOV R1,R6
 4760BL sort
 4770LDMFD R13!,{PC}
 4780:
 4790.pileup
 4800MOV R5,R3,ASL #&01
 4810CMP R5,R4
 4820MOVGT PC,R14
 4830CMP R5,R4
 4840BEQ equal
 4850MOV R6,R5
 4860ADD R7,R5,#&01
 4870ADD R6,R0,R6,ASL #&03
 4880ADD R7,R0,R7,ASL #&03
 4890EQUD FNfpu("LDFS F3,[R6]")
 4900EQUD FNfpu("LDFS F2,[R7]")
 4910EQUD FNfpu("CMES F3,F2")
 4920ADDGT R5,R5,#&01
 4930ADD R6,R0,R3,ASL #&03
 4940ADD R7,R0,R5,ASL #&03
 4950EQUD FNfpu("LDFS F3,[R6]")
 4960EQUD FNfpu("LDFS F2,[R7]")
 4970EQUD FNfpu("CMES F3,F2")
 4980MOVLE PC,R14
 4990ADD R6,R0,R3,ASL #&03
 5000ADD R7,R0,R5,ASL #&03
 5010LDMIA R6,{R9-R10}
 5020LDMIA R7,{R11-R12}
 5030STMIA R7,{R9-R10}
 5040STMIA R6,{R11-R12}
 5050MOV R3,R5
 5060B pileup
 5070:
 5080.equal
 5090ADD R6,R0,R3,ASL #&03
 5100ADD R7,R0,R4,ASL #&03
 5110EQUD FNfpu("LDFS F3,[R6]")
 5120EQUD FNfpu("LDFS F3,[R7]")
 5130EQUD FNfpu("CMES F3,F2")
 5140MOVLT PC,R14
 5150ADD R6,R0,R3,ASL #&03
 5160ADD R7,R0,R4,ASL #&03
 5170LDMIA R6,{R9-R10}
 5180LDMIA R7,{R11-R12}
 5190STMIA R7,{R9-R10}
 5200STMIA R6,{R11-R12}
 5210MOV PC,R14
 5220:
 5230.sort
 5240STMFD R13!,{R14}
 5250SUB R1,R1,#&01
 5260MOV R2,R1,ASR #&01
 5270:
 5280.upper
 5290MOV R3,R2
 5300MOV R4,R1
 5310BL pileup
 5320SUBS R2,R2,#&01
 5330BGE upper
 5340MOV R2,R1
 5350:
 5360.lower
 5370MOV R6,R0
 5380ADD R7,R0,R2,ASL #&03
 5390LDMIA R6,{R9-R10}
 5400LDMIA R7,{R11-R12}
 5410STMIA R7,{R9-R10}
 5420STMIA R6,{R11-R12}
 5430SUB R4,R2,#&01
 5440MOV R3,#&00
 5450BL pileup
 5460SUBS R2,R2,#&01
 5470BGT lower
 5480LDMFD R13!,{PC}
 5490]
 5500ENDPROC
 5510:
 5520DEF PROCpoint
 5530[ OPT opt%
 5540\ calculate normal at point
 5550:
 5560.point
 5570LDR R0,input
 5580LDR R1,output
 5590EQUD FNfpu("LDFS F0,[R0]")
 5600EQUD FNfpu("LDFS F1,[R0,#4]")
 5610LDR R2,[R0,#12]
 5620LDR R3,[R0,#20]
 5630LDR R4,[R0,#24]
 5640LDR R5,[R0,#28]
 5650LDR R6,[R2]
 5660LDR R7,[R3],#&04
 5670MOV R8,R6
 5680MOV R9,#&00
 5690SUB R9,R9,#&01
 5700EQUD FNfpu("MVFS F7,#10.0")
 5710EQUD FNfpu("POWS F7,F7,#10.0")
 5720:
 5730.pointblnk
 5740SUBS R8,R8,#&01
 5750MOVLT R8,#&00
 5760BLT findedge
 5770STR R9,[R4,R8,ASL #&02]
 5780B pointblnk
 5790:
 5800.findedge
 5810ADD R12,R3,R8,ASL #&03
 5820EQUD FNfpu("LDFS F2,[R12]")
 5830EQUD FNfpu("CMES F2,F0")
 5840MOVLT R8,R6
 5850BLT depth
 5860LDR R10,[R12,#&04]
 5870MOV R10,R10,ASR #&10
 5880LDR R11,[R4,R10,ASL #&02]
 5890CMP R11,R9
 5900MOVNE R11,R9
 5910MOVEQ R11,R8
 5920STR R11,[R4,R10,ASL #&02]
 5930ADD R8,R8,#&01
 5940CMP R8,R7
 5950BLT findedge
 5960MOV R8,R6
 5970:
 5980.depth
 5990SUBS R8,R8,#&01
 6000BLT pair
 6010LDR R10,[R4,R8,ASL #&02]
 6020CMP R10,#&00
 6030BLT depth
 6040ADD R12,R5,R8,ASL #&04
 6050EQUD FNfpu("LDFS F2,[R12]")
 6060EQUD FNfpu("LDFS F3,[R12,#04]")
 6070EQUD FNfpu("LDFS F4,[R12,#08]")
 6080EQUD FNfpu("LDFS F5,[R12,#12]")
 6090EQUD FNfpu("MUFS F2,F2,F0")
 6100EQUD FNfpu("MUFS F3,F3,F1")
 6110EQUD FNfpu("ADFS F2,F2,F3")
 6120EQUD FNfpu("ADFS F4,F4,F2")
 6130EQUD FNfpu("CMES F4,#0.0")
 6140BEQ depth
 6150EQUD FNfpu("DVFS F5,F5,F4")
 6160EQUD FNfpu("MNFS F5,F5")
 6170EQUD FNfpu("CMES F5,#0.0")
 6180EQUD FNfpu("CMEGES F7,F5")
 6190MOVGE R9,R10
 6200EQUD FNfpu("MVFGES F7,F5")
 6210B depth
 6220:
 6230.pair
 6240CMP R9,#&00
 6250STRLT R9,[R1]
 6260MOVLT PC,R14
 6270ADD R12,R3,R9,ASL #&03
 6280LDR R11,[R12,#&04]
 6290MOV R11,R11,ASR #&10
 6300ADD R10,R9,#&01
 6310:
 6320.pairlp
 6330ADD R12,R3,R10,ASL #&03
 6340LDR R8,[R12,#&04]
 6350MOV R8,R8,ASR #&10
 6360CMP R8,R11
 6370BEQ detect
 6380ADD R10,R10,#&01
 6390CMP R10,R7
 6400BLT pairlp
 6410MOV R10,#&00
 6420SUB R10,R10,#&01
 6430STR R10,[R1]
 6440MOV PC,R14
 6450:
 6460.detect
 6470ADD R12,R2,#&04
 6480LDR R12,[R12,R11,ASL #&02]
 6490LDR R2,[R0,#8]
 6500LDR R4,[R0,#16]
 6510LDR R5,[R0,#32]
 6520ADD R4,R4,R12
 6530LDR R6,[R4],#&08
 6540:
 6550ADD R12,R3,R9,ASL #&03
 6560EQUD FNfpu("LDFS F2,[R12]")
 6570LDR R9,[R12,#&04]
 6580ADD R12,R3,R10,ASL #&03
 6590EQUD FNfpu("LDFS F3,[R12]")
 6600LDR R10,[R12,#&04]
 6610MOV R9,R9,ASL #&10:MOV R9,R9,LSR #&10
 6620MOV R10,R10,ASL #&10:MOV R10,R10,LSR #&10
 6630:
 6640LDR R7,[R4,R9,ASL #&02]
 6650SUB R9,R9,#&01
 6660LDR R9,[R4,R9,ASL #&02]
 6670LDR R8,[R4,R10,ASL #&02]
 6680SUB R10,R10,#&01
 6690LDR R10,[R4,R10,ASL #&02]
 6700:
 6710ANDS R12,R6,#&02
 6720STRNE R11,[R1]
 6730STRNE R7,[R1,#16]
 6740STRNE R8,[R1,#20]
 6750STRNE R9,[R1,#24]
 6760STRNE R10,[R1,#28]
 6770MOVNE PC,R14
 6780:
 6790EQUD FNfpu("SUFS F4,F2,F3")
 6800EQUD FNfpu("SUFS F5,F0,F3")
 6810EQUD FNfpu("CMES F4,#0.0")
 6820EQUD FNfpu("DVFNES F7,F5,F4")
 6830EQUD FNfpu("MVFEQS F7,#0.0")
 6840:
 6850ADD R12,R7,R7,ASL #&01
 6860ADD R12,R2,R12,ASL #&02
 6870EQUD FNfpu("LDFS F4,[R12,#04]")
 6880EQUD FNfpu("LDFS F5,[R12,#08]")
 6890ADD R12,R9,R9,ASL #&01
 6900ADD R12,R2,R12,ASL #&02
 6910EQUD FNfpu("LDFS F6,[R12,#04]")
 6920EQUD FNfpu("SUFS F4,F4,F6")
 6930EQUD FNfpu("SUFS F2,F2,F6")
 6940EQUD FNfpu("LDFS F6,[R12,#08]")
 6950EQUD FNfpu("SUFS F5,F5,F6")
 6960EQUD FNfpu("SUFS F6,F1,F6")
 6970EQUD FNfpu("MUFS F4,F4,F4")
 6980EQUD FNfpu("MUFS F5,F5,F5")
 6990EQUD FNfpu("ADFS F4,F4,F5")
 7000EQUD FNfpu("SQTS F4,F4")
 7010EQUD FNfpu("MUFS F6,F6,F6")
 7020EQUD FNfpu("MUFS F2,F2,F2")
 7030EQUD FNfpu("ADFS F2,F2,F6")
 7040EQUD FNfpu("SQTS F2,F2")
 7050EQUD FNfpu("CMES F4,#0.0")
 7060EQUD FNfpu("DVFNES F2,F2,F4")
 7070EQUD FNfpu("MVFEQS F2,#0.0")
 7080:
 7090ADD R12,R8,R8,ASL #&01
 7100ADD R12,R2,R12,ASL #&02
 7110EQUD FNfpu("LDFS F4,[R12,#04]")
 7120EQUD FNfpu("LDFS F5,[R12,#08]")
 7130ADD R12,R10,R10,ASL #&01
 7140ADD R12,R2,R12,ASL #&02
 7150EQUD FNfpu("LDFS F6,[R12,#04]")
 7160EQUD FNfpu("SUFS F4,F4,F6")
 7170EQUD FNfpu("SUFS F3,F3,F6")
 7180EQUD FNfpu("LDFS F6,[R12,#08]")
 7190EQUD FNfpu("SUFS F5,F5,F6")
 7200EQUD FNfpu("SUFS F6,F1,F6")
 7210EQUD FNfpu("MUFS F4,F4,F4")
 7220EQUD FNfpu("MUFS F5,F5,F5")
 7230EQUD FNfpu("ADFS F4,F4,F5")
 7240EQUD FNfpu("SQTS F4,F4")
 7250EQUD FNfpu("MUFS F6,F6,F6")
 7260EQUD FNfpu("MUFS F3,F3,F3")
 7270EQUD FNfpu("ADFS F3,F3,F6")
 7280EQUD FNfpu("SQTS F3,F3")
 7290EQUD FNfpu("CMES F4,#0.0")
 7300EQUD FNfpu("DVFNES F3,F3,F4")
 7310EQUD FNfpu("MVFEQS F3,#0.0")
 7320:
 7330ANDS R12,R6,#&01
 7340STRNE R11,[R1]
 7350STRNE R7,[R1,#16]
 7360STRNE R8,[R1,#20]
 7370STRNE R9,[R1,#24]
 7380STRNE R10,[R1,#28]
 7390EQUD FNfpu("STFNES F2,[R1,#32]")
 7400EQUD FNfpu("STFNES F3,[R1,#36]")
 7410EQUD FNfpu("STFNES F7,[R1,#40]")
 7420MOVNE PC,R14
 7430:
 7440]
 7450FOR nmas%=0 TO 2
 7460[ OPT opt%
 7470ADD R12,R7,R7,ASL #&01
 7480ADD R12,R5,R12,ASL #&02
 7490EQUD FNfpu("LDFS F4,[R12,#"+STR$(4*nmas%)+"]")
 7500ADD R12,R9,R9,ASL #&01
 7510ADD R12,R5,R12,ASL #&02
 7520EQUD FNfpu("LDFS F5,[R12,#"+STR$(4*nmas%)+"]")
 7530EQUD FNfpu("CMES F4,F5")
 7540EQUD FNfpu("MUFNES F4,F4,F2")
 7550EQUD FNfpu("RSFNES F2,F2,#1.0")
 7560EQUD FNfpu("MUFNES F5,F5,F2")
 7570EQUD FNfpu("ADFNES F4,F4,F5")
 7580EQUD FNfpu("RSFNES F2,F2,#1.0")
 7590ADD R12,R8,R8,ASL #&01
 7600ADD R12,R5,R12,ASL #&02
 7610EQUD FNfpu("LDFS F5,[R12,#"+STR$(4*nmas%)+"]")
 7620ADD R12,R10,R10,ASL #&01
 7630ADD R12,R5,R12,ASL #&02
 7640EQUD FNfpu("LDFS F6,[R12,#"+STR$(4*nmas%)+"]")
 7650EQUD FNfpu("CMES F5,F6")
 7660EQUD FNfpu("MUFNES F5,F5,F3")
 7670EQUD FNfpu("RSFNES F3,F3,#1.0")
 7680EQUD FNfpu("MUFNES F6,F6,F3")
 7690EQUD FNfpu("ADFNES F5,F5,F6")
 7700EQUD FNfpu("RSFNES F3,F3,#1.0")
 7710EQUD FNfpu("CMES F4,F5")
 7720EQUD FNfpu("MUFNES F4,F4,F7")
 7730EQUD FNfpu("RSFNES F7,F7,#1.0")
 7740EQUD FNfpu("MUFNES F5,F5,F7")
 7750EQUD FNfpu("ADFNES F4,F4,F5")
 7760EQUD FNfpu("RSFNES F7,F7,#1.0")
 7770EQUD FNfpu("STFS F4,[R1,#"+STR$(4*nmas%+4)+"]")
 7780]
 7790NEXT nmas%
 7800[ OPT opt%
 7810STR R11,[R1]
 7820STR R7,[R1,#16]
 7830STR R8,[R1,#20]
 7840STR R9,[R1,#24]
 7850STR R10,[R1,#28]
 7860EQUD FNfpu("STFS F2,[R1,#32]")
 7870EQUD FNfpu("STFS F3,[R1,#36]")
 7880EQUD FNfpu("STFS F7,[R1,#40]")
 7890MOV PC,R14
 7900]
 7910ENDPROC
 7920:
 7930DEF PROCnumber
 7940[ OPT opt%
 7950.bastofpu
 7960LDR R0,number
 7970LDRB R1,number+4
 7980CMP R0,#&00
 7990CMPEQ R1,#&00
 8000LDREQ R12,[R9]
 8010STREQ R0,[R12]
 8020MOVEQ PC,R14
 8030MOV R2,#&80000000
 8040AND R3,R0,R2
 8050SUB R2,R2,#&01
 8060AND R0,R0,R2
 8070SUB R1,R1,#&02
 8080ORR R3,R3,R1,ASL #23
 8090ORR R0,R3,R0,LSR #8
 8100LDR R12,[R9]
 8110STR R0,[R12]
 8120MOV PC,R14
 8130:
 8140.fputobas
 8150LDR R12,[R9]
 8160LDR R0,[R12]
 8170CMP R0,#&00
 8180STREQ R0,number
 8190STREQB R0,number+4
 8200MOVEQ PC,R14
 8210MOV R1,#&80000000
 8220AND R2,R1,R0
 8230SUB R1,R1,#&01
 8240AND R3,R0,R1,LSR #8
 8250ORR R2,R2,R3,ASL #8
 8260AND R3,R0,R1
 8270MOV R3,R3,LSR #23
 8280ADD R3,R3,#&02
 8290STR R2,number
 8300STRB R3,number+4
 8310MOV PC,R14
 8320:
 8330.number
 8340EQUD &00
 8350EQUD &00
 8360]
 8370ENDPROC
 8380:
 8390DEF PROCintensity
 8400[ OPT opt%
 8410.intensity
 8420LDR R0,input
 8430LDR R1,output
 8440EQUD FNfpu("LDFS F0,[R0]")
 8450EQUD FNfpu("LDFS F1,[R0,#4]")
 8460EQUD FNfpu("LDFS F2,[R0,#8]")
 8470EQUD FNfpu("LDFS F7,[R0,#16]")
 8480EQUD FNfpu("STFS F7,[R1]")
 8490EQUD FNfpu("LDFS F7,[R0,#20]")
 8500EQUD FNfpu("STFS F7,[R1,#4]")
 8510EQUD FNfpu("LDFS F7,[R0,#24]")
 8520EQUD FNfpu("STFS F7,[R1,#8]")
 8530LDR R2,[R0,#12]
 8540LDR R3,[R2]
 8550:
 8560.intenlp
 8570SUBS R3,R3,#&01
 8580MOVLT PC,R14
 8590ADD R12,R3,R3,ASL #&01
 8600ADD R12,R2,R12,ASL #&02
 8610EQUD FNfpu("LDFS F3,[R12,#04]")
 8620EQUD FNfpu("LDFS F4,[R12,#08]")
 8630EQUD FNfpu("LDFS F5,[R12,#12]")
 8640EQUD FNfpu("MUFS F6,F0,F3")
 8650EQUD FNfpu("MUFS F7,F1,F4")
 8660EQUD FNfpu("ADFS F6,F6,F7")
 8670EQUD FNfpu("MUFS F7,F2,F5")
 8680EQUD FNfpu("ADFS F6,F6,F7")
 8690:
 8700EQUD FNfpu("MUFS F3,F3,F2")
 8710EQUD FNfpu("MUFS F3,F3,F0")
 8720EQUD FNfpu("MUFS F3,F3,#2.0")
 8730EQUD FNfpu("MUFS F4,F4,F2")
 8740EQUD FNfpu("MUFS F4,F4,F1")
 8750EQUD FNfpu("MUFS F4,F4,#2.0")
 8760EQUD FNfpu("ADFS F3,F3,F4")
 8770EQUD FNfpu("MUFS F7,F2,F2")
 8780EQUD FNfpu("MUFS F4,F1,F1")
 8790EQUD FNfpu("SUFS F7,F7,F4")
 8800EQUD FNfpu("MUFS F4,F0,F0")
 8810EQUD FNfpu("SUFS F7,F7,F4")
 8820EQUD FNfpu("MUFS F7,F7,F5")
 8830EQUD FNfpu("ADFS F7,F7,F3")
 8840EQUD FNfpu("MUFS F5,F1,F1")
 8850EQUD FNfpu("ADFS F4,F4,F5")
 8860EQUD FNfpu("MUFS F5,F2,F2")
 8870EQUD FNfpu("ADFS F4,F4,F5")
 8880EQUD FNfpu("DVFS F7,F7,F4")
 8890EQUD FNfpu("MNFS F7,F7")
 8900EQUD FNfpu("CMES F7,#0.0")
 8910EQUD FNfpu("MVFLTS F7,#0.0")
 8920EQUD FNfpu("CMES F6,#0.0")
 8930EQUD FNfpu("MVFLTS F6,#0.0")
 8940EQUD FNfpu("LDFS F3,[R0,#52]")
 8950EQUD FNfpu("POWS F7,F7,F3")
 8960EQUD FNfpu("LDFS F3,[R0,#40]")
 8970EQUD FNfpu("MUFS F4,F3,F7")
 8980EQUD FNfpu("LDFS F3,[R0,#28]")
 8990EQUD FNfpu("MUFS F3,F3,F6")
 9000EQUD FNfpu("LDFS F5,[R1]")
 9010EQUD FNfpu("ADFS F5,F5,F3")
 9020EQUD FNfpu("ADFS F5,F5,F4")
 9030EQUD FNfpu("STFS F5,[R1]")
 9040EQUD FNfpu("LDFS F3,[R0,#44]")
 9050EQUD FNfpu("MUFS F4,F3,F7")
 9060EQUD FNfpu("LDFS F3,[R0,#32]")
 9070EQUD FNfpu("MUFS F3,F3,F6")
 9080EQUD FNfpu("LDFS F5,[R1,#4]")
 9090EQUD FNfpu("ADFS F5,F5,F3")
 9100EQUD FNfpu("ADFS F5,F5,F4")
 9110EQUD FNfpu("STFS F5,[R1,#4]")
 9120EQUD FNfpu("LDFS F3,[R0,#48]")
 9130EQUD FNfpu("MUFS F4,F3,F7")
 9140EQUD FNfpu("LDFS F3,[R0,#36]")
 9150EQUD FNfpu("MUFS F3,F3,F6")
 9160EQUD FNfpu("LDFS F5,[R1,#8]")
 9170EQUD FNfpu("ADFS F5,F5,F3")
 9180EQUD FNfpu("ADFS F5,F5,F4")
 9190EQUD FNfpu("STFS F5,[R1,#8]")
 9200B intenlp
 9210]
 9220ENDPROC
 9230:
 9240DEF PROCcolour
 9250[ OPT opt%
 9260.colour
 9270STMFD R13!,{R14}
 9280LDR R0,input
 9290LDR R1,output
 9300LDR R2,[R0]
 9310LDR R3,[R0,#4]
 9320LDR R4,[R0,#8]
 9330LDR R12,seed
 9340LDR R11,bitmap
 9350MOV R9,#&DD
 9360BL random:ADD R2,R2,R10
 9370BL random:ADD R3,R3,R10
 9380BL random:ADD R4,R4,R10
 9390STR R12,seed
 9400CMP R2,#&00:MOVLT R2,#&00:CMP R2,#&FF:MOVGT R2,#&FF
 9410CMP R3,#&00:MOVLT R3,#&00:CMP R3,#&FF:MOVGT R3,#&FF
 9420CMP R4,#&00:MOVLT R4,#&00:CMP R4,#&FF:MOVGT R4,#&FF
 9430AND R5,R2,#&C0:AND R6,R3,#&C0:AND R7,R4,#&C0
 9440AND R2,R2,#&3F:AND R3,R3,#&3F:AND R4,R4,#&3F
 9450MOV R8,R5,ASR #&06:ORR R8,R8,R6,ASR #&04:ORR R8,R8,R7,ASR #&02
 9460MOV R10,#&64:MUL R9,R2,R10:MOV R10,#&82:MLA R9,R3,R10,R9
 9470MOV R10,#&19:MLA R9,R4,R10,R9:AND R9,R9,#&3000
 9480ORR R8,R8,R9,ASR #&06
 9490STR R8,[R1]
 9500LDMFD R13!,{PC}
 9510:
 9520.random
 9530MOVS R12,R12,LSL #1:EORCS R12,R12,R11:MOV R10,R10,LSR #&0A
 9540MOVS R12,R12,LSL #1:EORCS R12,R12,R11:ADD R10,R10,R12,LSR #&0A
 9550MOVS R12,R12,LSL #1:EORCS R12,R12,R11:ADD R10,R10,R12,LSR #&0A
 9560MOVS R12,R12,LSL #1:EORCS R12,R12,R11:ADD R10,R10,R12,LSR #&0A
 9570SUB R10,R10,#&800000
 9580MUL R10,R9,R10
 9590MOV R10,R10,ASR #&1A
 9600MOV PC,R14
 9610:
 9620.seed EQUD TIME
 9630.bitmap EQUD &1D872B41
 9640]
 9650ENDPROC
 9660:
 9670DEF FNfpu(code$)
 9680op$=LEFT$(code$,3)
 9690opt$=MID$(code$,4,INSTR(code$," ")-4)
 9700reg$=MID$(code$,INSTR(code$," ")+1)
 9710IF LEN(opt$)<3 THEN opt$="AL"+opt$
 9720cnd%=INSTR("EQNECSCCMIPLVSVCHILSGELTGTLEALNV",LEFT$(opt$,2)) DIV 2
 9730prc%=INSTR("SDEP",MID$(opt$,3,1))-1
 9740rnd%=INSTR("PMZ",opt$,4)
 9750:
 9760op%=INSTR("STFLDF",op$)-1
 9770IF op%>=0 THEN =FNdata(op% DIV 3,cnd%,prc%,reg$)
 9780:
 9790in%=(cnd%<<28) OR ((prc% AND 2)<<19) OR ((prc% AND 1)<<7) OR (rnd%<<5)
 9800:
 9810op%=INSTR("ADFMUFSUFRSFDVFRDFPOWRPWRMFFMLFDVFRDPOL",op$)-1
 9820IF op%>=0 THEN =FNbinops(op% DIV 3,in%,reg$)
 9830op%=INSTR("MVFMNFABSRNDSQTLOGLGNEXPSINCOSTANASNACSATN",op$)-1
 9840IF op%>=0 THEN =FNunops(op% DIV 3,in%,reg$)
 9850op%=INSTR("CMFCNFCMECNE",op$)-1
 9860IF op%>=0 THEN =FNcmp(op% DIV 3,in%,reg$)
 9870:
 9880ERROR 255,"Unrecognised fpu instruction"
 9890:
 9900DEF FNeval(reg$,type$,RETURN chr%)
 9910chr%=INSTR(reg$,type$,chr%+1)
 9920=VAL(MID$(reg$,chr%+1))
 9930:
 9940DEF FNconstant(reg$,chr%)
 9950=INSTR("0  1  2  3  4  5  0.510",STR$(FNeval(reg$,"#",chr%))) DIV 3
 9960:
 9970DEF FNdata(op%,cnd%,prc%,reg$)
 9980chr%=0
 9990fd%=FNeval(reg$,"F",chr%)<<12
10000rn%=FNeval(reg$,"R",chr%)<<16
10010offset%=FNeval(reg$,"#",chr%)
10020pre%=(INSTR(reg$,"]",chr%)>0) AND (1<<24)
10030wb%=(INSTR(reg$,"!")>0)AND (1<<21)
10040sgn%=(offset%>=0) AND (1<<23)
10050offset%=ABS(offset% DIV 4)
10060in%=(cnd%<<28) OR ((prc% AND 2)<<22) OR ((prc% AND 1)<<15) OR (op%<<20)
10070=in% OR pre% OR sgn% OR wb% OR rn% OR fd% OR offset% OR &C000100
10080:
10090DEF FNbinops(op%,in%,reg$)
10100chr%=0
10110fd%=FNeval(reg$,"F",chr%)<<12
10120fn%=FNeval(reg$,"F",chr%)<<16
10130fm%=FNeval(reg$,"F",chr%)
10140IF chr%=0 THEN fm%=FNconstant(reg$,chr%):i%=1<<3 ELSE i%=0
10150=in% OR (op%<<20) OR fn% OR fd% OR i% OR fm% OR &E000100
10160:
10170DEF FNunops(op%,in%,reg$)
10180chr%=0
10190fd%=FNeval(reg$,"F",chr%)<<12
10200fm%=FNeval(reg$,"F",chr%)
10210IF chr%=0 THEN fm%=FNconstant(reg$,chr%):i%=1<<3 ELSE i%=0
10220=in% OR (op%<<20) OR fd% OR i% OR fm% OR &E008100
10230:
10240DEF FNcmp(op%,in%,reg$)
10250chr%=0
10260fd%=FNeval(reg$,"F",chr%)<<16
10270fm%=FNeval(reg$,"F",chr%)
10280IF chr%=0 THEN fm%=FNconstant(reg$,chr%):i%=1<<3 ELSE i%=0
10290=in% OR (op%<<21) OR fd% OR i% OR fm% OR &E90F110

�     >Assemble
� By  Robin Barnes
� For 32-bit machines
(� (c) BAU June 1993
2:
<name$="Code"
F� assem% &8000
P�assem(end%)
Z*ș "OS_File",&00,name$,0,0,assem%,end%
d�
n:
x� �assem(� end%)
�� opt%=0 � 3 � 3
�
P%=assem%
�[ OPT opt%
�EQUD boundbox-assem%
�EQUD plane-assem%
�EQUD pointnormal-assem%
�EQUD polynormal-assem%
�EQUD scanline-assem%
�EQUD point-assem%
�EQUD intensity-assem%
�EQUD colour-assem%
�EQUD fputobas-assem%
�EQUD bastofpu-assem%
EQUD number-assem%
EQUD transform-assem%
EQUD perspective-assem%
":
,.input EQUD 0
6.output EQUD 0
@]
J�transform
T�perspective
^
�boundbox
h
�plane
r�pointnormal
|�polynormal
�
�scanline
�
�point
��intensity
��colour
��number
�
� opt%
�end%=P%
��
�:
�� �transform
�[ OPT opt%
�\ tranform points
�:
.transform
LDR R0,input
LDR R1,[R0,#8]
&LDR R2,[R0,#40]
0LDR R3,[R1]
::
D.translp
NSUBS R3,R3,#&01
XMOVLT PC,R14
bADD R12,R3,R3,ASL #&01
lADD R12,R1,R12,ASL #&02
v!EQUD �fpu("LDFS F0,[R12,#4]")
�!EQUD �fpu("LDFS F1,[R12,#8]")
�"EQUD �fpu("LDFS F2,[R12,#12]")
�;EQUD �fpu("LDFS F7,[R2,#0]"):EQUD �fpu("ADFS F0,F0,F7")
�;EQUD �fpu("LDFS F7,[R2,#4]"):EQUD �fpu("ADFS F1,F1,F7")
�;EQUD �fpu("LDFS F7,[R2,#8]"):EQUD �fpu("ADFS F2,F2,F7")
�:
�<EQUD �fpu("LDFS F7,[R2,#12]"):EQUD �fpu("MUFS F3,F0,F7")
�<EQUD �fpu("LDFS F7,[R2,#16]"):EQUD �fpu("MUFS F6,F1,F7")
�<EQUD �fpu("ADFS F3,F3,F6"):EQUD �fpu("LDFS F7,[R2,#20]")
�9EQUD �fpu("MUFS F6,F2,F7"):EQUD �fpu("ADFS F3,F3,F6")
�:
�<EQUD �fpu("LDFS F7,[R2,#24]"):EQUD �fpu("MUFS F4,F0,F7")
�<EQUD �fpu("LDFS F7,[R2,#28]"):EQUD �fpu("MUFS F6,F1,F7")
<EQUD �fpu("ADFS F4,F4,F6"):EQUD �fpu("LDFS F7,[R2,#32]")
9EQUD �fpu("MUFS F6,F2,F7"):EQUD �fpu("ADFS F4,F4,F6")
:
 <EQUD �fpu("LDFS F7,[R2,#36]"):EQUD �fpu("MUFS F5,F0,F7")
*<EQUD �fpu("LDFS F7,[R2,#40]"):EQUD �fpu("MUFS F6,F1,F7")
4<EQUD �fpu("ADFS F5,F5,F6"):EQUD �fpu("LDFS F7,[R2,#44]")
>9EQUD �fpu("MUFS F6,F2,F7"):EQUD �fpu("ADFS F5,F5,F6")
H!EQUD �fpu("STFS F3,[R12,#4]")
R!EQUD �fpu("STFS F4,[R12,#8]")
\"EQUD �fpu("STFS F5,[R12,#12]")
f
B translp
p]
z�
�:
�� �perspective
�[ OPT opt%
�\ perspective transform
�:
�.perspective
�LDR R0,input
�LDR R1,[R0,#8]
�LDR R2,[R1]
�EQUD �fpu("MVFS F6,#1.0")
�!EQUD �fpu("DVFS F6,F6,#10.0")
�!EQUD �fpu("POWS F6,F6,#10.0")
�:

.prspctlp
SUBS R2,R2,#&01
MOVLT PC,R14
$ADD R12,R2,R2,ASL #&01
.ADD R12,R1,R12,ASL #&02
8!EQUD �fpu("LDFS F0,[R12,#4]")
B!EQUD �fpu("LDFS F1,[R12,#8]")
L"EQUD �fpu("LDFS F2,[R12,#12]")
VEQUD �fpu("CMES F2,#0.0")
`EQUD �fpu("MVFLES F2,F6")
jEQUD �fpu("DVFS F0,F0,F2")
tEQUD �fpu("DVFS F1,F1,F2")
~!EQUD �fpu("STFS F0,[R12,#4]")
�!EQUD �fpu("STFS F1,[R12,#8]")
�B prspctlp
�]
��
�:
�� �polynormal
�[ OPT opt%
�!\ calculate normal to polygon
�:
�.polynormal
�LDR R0,input
�LDR R1,output
LDR R2,[R0,#28]

LDR R3,[R0,#44]
ADD R12,R2,R3,ASL #&04
!EQUD �fpu("LDFS F0,[R12,#0]")
(!EQUD �fpu("LDFS F1,[R12,#4]")
2!EQUD �fpu("LDFS F2,[R12,#8]")
<EQUD �fpu("MUFS F3,F0,F0")
FEQUD �fpu("MUFS F4,F1,F1")
PEQUD �fpu("ADFS F3,F3,F4")
ZEQUD �fpu("MUFS F4,F2,F2")
dEQUD �fpu("ADFS F3,F3,F4")
nEQUD �fpu("SQTS F3,F3")
xEQUD �fpu("DVFS F0,F0,F3")
�EQUD �fpu("DVFS F1,F1,F3")
�EQUD �fpu("DVFS F2,F2,F3")
� EQUD �fpu("STFS F0,[R1,#4]")
� EQUD �fpu("STFS F1,[R1,#8]")
�!EQUD �fpu("STFS F2,[R1,#12]")
�MOV PC,R14
�]
��
�:
�� �boundbox
�
[OPT opt%
�+\ calculate bounding boxes for polygons
�:

.boundbox
STMFD R13!,{R14}
LDR R0,input
"LDR R1,[R0,#8]
,LDR R2,[R0,#12]
6LDR R3,[R0,#16]
@LDR R4,[R0,#36]
JLDR R0,output
TLDR R5,[R2]
^EQUD �fpu("MVFS F4,#10.0")
h!EQUD �fpu("POWS F4,F4,#10.0")
rEQUD �fpu("MVFS F5,F4")
|EQUD �fpu("MNFS F6,F4")
�EQUD �fpu("MNFS F7,F4")
�:
�
.bndboxlp
�SUBS R5,R5,#&01
�EQUD �fpu("STFLTS F4,[R0]")
�"EQUD �fpu("STFLTS F5,[R0,#4]")
�"EQUD �fpu("STFLTS F6,[R0,#8]")
�#EQUD �fpu("STFLTS F7,[R0,#12]")
�LDMLTFD R13!,{PC}
�BL bndpoly
�B bndboxlp
�:
�.bndpoly
ADD R11,R5,#&01
LDR R11,[R2,R11,ASL #&02]
ADD R11,R11,R3
&ADD R11,R11,#&04
0LDR R6,[R11]
:EQUD �fpu("MVFS F0,#10.0")
D!EQUD �fpu("POWS F0,F0,#10.0")
NEQUD �fpu("MNFS F1,F0")
X:
b
.bndpollp
lLDR R7,[R11,R6,ASL #&02]
vADD R12,R7,R7,ASL #&01
�ADD R12,R1,R12,ASL #&02
�"EQUD �fpu("LDFS F2,[R12,#04]")
�"EQUD �fpu("LDFS F3,[R12,#08]")
�EQUD �fpu("CMES F3,F0")
�EQUD �fpu("MVFLTS F0,F3")
�EQUD �fpu("CMES F3,F1")
�EQUD �fpu("MVFGTS F1,F3")
�EQUD �fpu("CMES F2,F4")
�EQUD �fpu("MVFLTS F4,F2")
�EQUD �fpu("CMES F2,F6")
�EQUD �fpu("MVFGTS F6,F2")
�SUBS R6,R6,#&01
�BGT bndpollp
ADD R12,R4,R5,ASL #&03
!EQUD �fpu("STFS F0,[R12,#0]")
!EQUD �fpu("STFS F1,[R12,#4]")
 EQUD �fpu("CMES F0,F5")
*EQUD �fpu("MVFLTS F5,F0")
4EQUD �fpu("CMES F1,F7")
>EQUD �fpu("MVFGTS F7,F1")
HMOV PC,R14
R]
\�
f:
p� �pointnormal
z[ OPT opt%
�#\ calculate normals at vertices
�:
�.pointnormal
�STMFD R13!,{R14}
�LDR R0,input
�LDR R4,[R0,#32]
�LDR R1,[R0,#8]
�LDR R1,[R1]
�EQUD �fpu("MVFS F0,#0.0")
�:
�
.normblnk
�SUBS R1,R1,#&01
�LDRLT R1,[R0,#12]
	LDRLT R2,[R0,#16]
	LDRLT R3,[R0,#28]
	LDRLT R5,[R1]
	$BLT pntnormlp
	.ADD R12,R1,R1,ASL #&01
	8ADD R12,R4,R12,ASL #&02
	B!EQUD �fpu("STFS F0,[R12,#0]")
	L!EQUD �fpu("STFS F0,[R12,#4]")
	V!EQUD �fpu("STFS F0,[R12,#8]")
	`B normblnk
	j:
	t.pntnormlp
	~SUBS R5,R5,#&01
	�LDRLT R1,[R0,#8]
	�LDRLT R1,[R1]
	�BLT modulus
	�BL sumpoly
	�B pntnormlp
	�:
	�.modulus
	�SUBS R1,R1,#&01
	�LDMLTFD R13!,{PC}
	�ADD R12,R1,R1,ASL #&01
	�ADD R12,R4,R12,ASL #&02
	�EQUD �fpu("LDFS F0,[R12]")
!EQUD �fpu("LDFS F1,[R12,#4]")

!EQUD �fpu("LDFS F2,[R12,#8]")
EQUD �fpu("MUFS F3,F0,F0")
EQUD �fpu("MUFS F4,F1,F1")
(EQUD �fpu("MUFS F5,F2,F2")
2EQUD �fpu("ADFS F3,F3,F4")
<EQUD �fpu("ADFS F3,F3,F5")
FEQUD �fpu("SQTS F3,F3")
PEQUD �fpu("DVFS F0,F0,F3")
ZEQUD �fpu("DVFS F1,F1,F3")
dEQUD �fpu("DVFS F2,F2,F3")
nEQUD �fpu("STFS F0,[R12]")
x!EQUD �fpu("STFS F1,[R12,#4]")
�!EQUD �fpu("STFS F2,[R12,#8]")
�
B modulus
�:
�.sumpoly
�ADD R11,R5,#&01
�LDR R11,[R1,R11,ASL #&02]
�ADD R11,R11,R2
�ADD R11,R11,#&04
�LDR R6,[R11]
�ADD R12,R3,R5,ASL #&04
�EQUD �fpu("LDFS F0,[R12]")
�!EQUD �fpu("LDFS F1,[R12,#4]")
�!EQUD �fpu("LDFS F2,[R12,#8]")
:
.sumpolylp
SUBS R6,R6,#&01
"MOVLE PC,R14
,LDR R7,[R11,R6,ASL #&02]
6ADD R12,R7,R7,ASL #&01
@ADD R12,R4,R12,ASL #&02
JEQUD �fpu("LDFS F3,[R12]")
T!EQUD �fpu("LDFS F4,[R12,#4]")
^!EQUD �fpu("LDFS F5,[R12,#8]")
hEQUD �fpu("ADFS F3,F3,F0")
rEQUD �fpu("ADFS F4,F4,F1")
|EQUD �fpu("ADFS F5,F5,F2")
�EQUD �fpu("STFS F3,[R12]")
�!EQUD �fpu("STFS F4,[R12,#4]")
�!EQUD �fpu("STFS F5,[R12,#8]")
�B sumpolylp
�]
��
�:
�� �plane
�[ OPT opt%
�,\ calculate plane equations for polygons
�:
�
.plane
�STMFD R13!,{R14}
LDR R0,input
LDR R1,[R0,#8]
LDR R2,[R0,#12]
&LDR R3,[R0,#16]
0LDR R4,[R0,#28]
:LDR R5,[R2]
D:
N
.plnpollp
XSUBS R5,R5,#&01
bLDMLTFD R13!,{PC}
lBL planecalc
vB plnpollp
�:
�.planecalc
�ADD R10,R5,#&01
�LDR R10,[R2,R10,ASL #&02]
�ADD R10,R10,R3
�ADD R10,R10,#&04
�LDR R6,[R10]
�EQUD �fpu("MVFS F0,#0.0")
�EQUD �fpu("MVFS F1,#0.0")
�EQUD �fpu("MVFS F2,#0.0")
�:
�.planelp
�LDR R7,[R10,R6,ASL #&02]

SUBS R6,R6,#&01

BLE planestore

LDR R8,[R10,R6,ASL #&02]

 ADD R11,R7,R7,ASL #&01

*ADD R11,R1,R11,ASL #&02

4ADD R12,R8,R8,ASL #&01

>ADD R12,R1,R12,ASL #&02

H"EQUD �fpu("LDFS F4,[R11,#04]")

R"EQUD �fpu("LDFS F5,[R12,#04]")

\"EQUD �fpu("LDFS F6,[R11,#08]")

f"EQUD �fpu("LDFS F7,[R12,#08]")

pEQUD �fpu("SUFS F4,F5,F4")

zEQUD �fpu("ADFS F5,F6,F7")

�EQUD �fpu("MUFS F4,F4,F5")

�EQUD �fpu("ADFS F2,F2,F4")

�"EQUD �fpu("LDFS F4,[R11,#12]")

�"EQUD �fpu("LDFS F5,[R12,#12]")

�EQUD �fpu("SUFS F6,F7,F6")

�EQUD �fpu("ADFS F7,F5,F4")

�EQUD �fpu("MUFS F6,F6,F7")

�EQUD �fpu("ADFS F0,F0,F6")

�!EQUD �fpu("LDFS F6,[R11,#4]")

�!EQUD �fpu("LDFS F7,[R12,#4]")

�EQUD �fpu("SUFS F4,F5,F4")

�EQUD �fpu("ADFS F5,F7,F6")

�EQUD �fpu("MUFS F4,F4,F5")
EQUD �fpu("ADFS F1,F1,F4")

B planelp
:
$.planestore
.ADD R11,R7,R7,ASL #&01
8ADD R11,R1,R11,ASL #&02
B!EQUD �fpu("LDFS F4,[R11,#4]")
L!EQUD �fpu("LDFS F5,[R11,#8]")
V"EQUD �fpu("LDFS F6,[R11,#12]")
`EQUD �fpu("MUFS F4,F4,F0")
jEQUD �fpu("MUFS F5,F5,F1")
tEQUD �fpu("MUFS F6,F6,F2")
~EQUD �fpu("ADFS F4,F4,F5")
�EQUD �fpu("ADFS F4,F4,F6")
�EQUD �fpu("MNFS F4,F4")
�ADD R12,R4,R5,ASL #&04
�EQUD �fpu("STFS F0,[R12]")
�"EQUD �fpu("STFS F1,[R12,#04]")
�"EQUD �fpu("STFS F2,[R12,#08]")
�"EQUD �fpu("STFS F4,[R12,#12]")
�MOV PC,R14
�]
��
�:
�� �scanline
[ OPT opt%

$\ produce ordered edge pair list
:
.inside
(ADD R12,R5,R7,ASL #&03
2EQUD �fpu("LDFS F2,[R12]")
<EQUD �fpu("CMES F1,F2")
FMOVLT PC,R14
P!EQUD �fpu("LDFS F2,[R12,#4]")
ZEQUD �fpu("CMES F1,F2")
dMOVGT PC,R14
nADD R11,R7,#&01
xLDR R11,[R2,R11,ASL #&02]
�ADD R11,R11,R3
�ADD R11,R11,#&04
�LDR R8,[R11]
�:
�.edgelp
�LDR R9,[R11,R8,ASL #&02]
�SUBS R8,R8,#&01
�MOVLE PC,R14
�ADD R12,R9,R9,ASL #&01
�ADD R12,R1,R12,ASL #&02
�"EQUD �fpu("LDFS F2,[R12,#08]")
�LDR R10,[R11,R8,ASL #&02]
�ADD R12,R10,R10,ASL #&01
ADD R12,R1,R12,ASL #&02
"EQUD �fpu("LDFS F3,[R12,#08]")
:
"EQUD �fpu("MVFS F4,F2")
,EQUD �fpu("MVFS F5,F3")
6EQUD �fpu("CMES F2,F3")
@EQUD �fpu("MVFGTS F5,F2")
JEQUD �fpu("MVFGTS F4,F3")
TEQUD �fpu("CMES F1,F5")
^BGT edgelp
hEQUD �fpu("CMES F1,F4")
rBLE edgelp
|:
�EQUD �fpu("SUFS F5,F3,F2")
�ADD R12,R9,R9,ASL #&01
�ADD R12,R1,R12,ASL #&02
�"EQUD �fpu("LDFS F7,[R12,#04]")
�ADD R12,R10,R10,ASL #&01
�ADD R12,R1,R12,ASL #&02
�"EQUD �fpu("LDFS F3,[R12,#04]")
�EQUD �fpu("SUFS F4,F3,F7")
�EQUD �fpu("SUFS F2,F1,F2")
�EQUD �fpu("DVFS F5,F2,F5")
�EQUD �fpu("MUFS F4,F5,F4")
�EQUD �fpu("ADFS F4,F4,F7")
�:
ADD R12,R4,R6,ASL #&03
EQUD �fpu("STFS F4,[R12]")
MOV R9,R7,ASL #&10
&�R R9,R9,R8
0STR R9,[R12,#&04]
:ADD R6,R6,#&01
DB edgelp
N:
X
.scanline
bSTMFD R13!,{R14}
lLDR R0,input
v EQUD �fpu("LDFS F1,[R0,#4]")
�LDR R1,[R0,#8]
�LDR R2,[R0,#12]
�LDR R3,[R0,#16]
�LDR R4,[R0,#20]
�ADD R4,R4,#&04
�LDR R5,[R0,#36]
�MOV R6,#&00
�LDR R7,[R2]
�:
�.scanlp
�SUBS R7,R7,#&01
�BLT ordertable
�
BL inside
B scanlp
:
.ordertable
 STR R6,[R4,#-4]
*CMP R6,#&02
4LDMLTFD R13!,{PC}
>�S R12,R6,#&01
HADDNE R6,R6,#&01
R EQUD �fpu("MVFNES F7,#10.0")
\#EQUD �fpu("POWNES F7,F7,#10.0")
fEQUD �fpu("MNFNES F7,F7")
pADDNE R12,R4,R6,ASL #&03
z#EQUD �fpu("STFNES F7,[R12,#0]")
�
MOV R0,R4
�
MOV R1,R6
�BL sort
�LDMFD R13!,{PC}
�:
�.pileup
�MOV R5,R3,ASL #&01
�
CMP R5,R4
�MOVGT PC,R14
�
CMP R5,R4
�
BEQ equal
�
MOV R6,R5
�ADD R7,R5,#&01
ADD R6,R0,R6,ASL #&03
ADD R7,R0,R7,ASL #&03
EQUD �fpu("LDFS F3,[R6]")
$EQUD �fpu("LDFS F2,[R7]")
.EQUD �fpu("CMES F3,F2")
8ADDGT R5,R5,#&01
BADD R6,R0,R3,ASL #&03
LADD R7,R0,R5,ASL #&03
VEQUD �fpu("LDFS F3,[R6]")
`EQUD �fpu("LDFS F2,[R7]")
jEQUD �fpu("CMES F3,F2")
tMOVLE PC,R14
~ADD R6,R0,R3,ASL #&03
�ADD R7,R0,R5,ASL #&03
�LDMIA R6,{R9-R10}
�LDMIA R7,{R11-R12}
�STMIA R7,{R9-R10}
�STMIA R6,{R11-R12}
�
MOV R3,R5
�B pileup
�:
�
.equal
�ADD R6,R0,R3,ASL #&03
�ADD R7,R0,R4,ASL #&03
�EQUD �fpu("LDFS F3,[R6]")
EQUD �fpu("LDFS F3,[R7]")

EQUD �fpu("CMES F3,F2")
MOVLT PC,R14
ADD R6,R0,R3,ASL #&03
(ADD R7,R0,R4,ASL #&03
2LDMIA R6,{R9-R10}
<LDMIA R7,{R11-R12}
FSTMIA R7,{R9-R10}
PSTMIA R6,{R11-R12}
ZMOV PC,R14
d:
n	.sort
xSTMFD R13!,{R14}
�SUB R1,R1,#&01
�MOV R2,R1,ASR #&01
�:
�
.upper
�
MOV R3,R2
�
MOV R4,R1
�
BL pileup
�SUBS R2,R2,#&01
�
BGE upper
�
MOV R2,R1
�:
�
.lower
�
MOV R6,R0
ADD R7,R0,R2,ASL #&03
LDMIA R6,{R9-R10}
LDMIA R7,{R11-R12}
"STMIA R7,{R9-R10}
,STMIA R6,{R11-R12}
6SUB R4,R2,#&01
@MOV R3,#&00
J
BL pileup
TSUBS R2,R2,#&01
^
BGT lower
hLDMFD R13!,{PC}
r]
|�
�:
�� �point
�[ OPT opt%
�\ calculate normal at point
�:
�
.point
�LDR R0,input
�LDR R1,output
�EQUD �fpu("LDFS F0,[R0]")
� EQUD �fpu("LDFS F1,[R0,#4]")
�LDR R2,[R0,#12]
�LDR R3,[R0,#20]
�LDR R4,[R0,#24]
LDR R5,[R0,#28]
LDR R6,[R2]
LDR R7,[R3],#&04
&
MOV R8,R6
0MOV R9,#&00
:SUB R9,R9,#&01
DEQUD �fpu("MVFS F7,#10.0")
N!EQUD �fpu("POWS F7,F7,#10.0")
X:
b.pointblnk
lSUBS R8,R8,#&01
vMOVLT R8,#&00
�BLT findedge
�STR R9,[R4,R8,ASL #&02]
�B pointblnk
�:
�
.findedge
�ADD R12,R3,R8,ASL #&03
�EQUD �fpu("LDFS F2,[R12]")
�EQUD �fpu("CMES F2,F0")
�MOVLT R8,R6
�
BLT depth
�LDR R10,[R12,#&04]
�MOV R10,R10,ASR #&10
�LDR R11,[R4,R10,ASL #&02]
CMP R11,R9
MOVNE R11,R9

�Q R11,R8
 STR R11,[R4,R10,ASL #&02]
*ADD R8,R8,#&01
4
CMP R8,R7
>BLT findedge
H
MOV R8,R6
R:
\
.depth
fSUBS R8,R8,#&01
pBLT pair
zLDR R10,[R4,R8,ASL #&02]
�CMP R10,#&00
�
BLT depth
�ADD R12,R5,R8,ASL #&04
�EQUD �fpu("LDFS F2,[R12]")
�"EQUD �fpu("LDFS F3,[R12,#04]")
�"EQUD �fpu("LDFS F4,[R12,#08]")
�"EQUD �fpu("LDFS F5,[R12,#12]")
�EQUD �fpu("MUFS F2,F2,F0")
�EQUD �fpu("MUFS F3,F3,F1")
�EQUD �fpu("ADFS F2,F2,F3")
�EQUD �fpu("ADFS F4,F4,F2")
�EQUD �fpu("CMES F4,#0.0")
�
BEQ depth
EQUD �fpu("DVFS F5,F5,F4")
EQUD �fpu("MNFS F5,F5")
EQUD �fpu("CMES F5,#0.0")
$EQUD �fpu("CMEGES F7,F5")
.MOVGE R9,R10
8EQUD �fpu("MVFGES F7,F5")
BB depth
L:
V	.pair
`CMP R9,#&00
jSTRLT R9,[R1]
tMOVLT PC,R14
~ADD R12,R3,R9,ASL #&03
�LDR R11,[R12,#&04]
�MOV R11,R11,ASR #&10
�ADD R10,R9,#&01
�:
�.pairlp
�ADD R12,R3,R10,ASL #&03
�LDR R8,[R12,#&04]
�MOV R8,R8,ASR #&10
�CMP R8,R11
�BEQ detect
�ADD R10,R10,#&01
�CMP R10,R7
BLT pairlp

MOV R10,#&00
SUB R10,R10,#&01
STR R10,[R1]
(MOV PC,R14
2:
<.detect
FADD R12,R2,#&04
PLDR R12,[R12,R11,ASL #&02]
ZLDR R2,[R0,#8]
dLDR R4,[R0,#16]
nLDR R5,[R0,#32]
xADD R4,R4,R12
�LDR R6,[R4],#&08
�:
�ADD R12,R3,R9,ASL #&03
�EQUD �fpu("LDFS F2,[R12]")
�LDR R9,[R12,#&04]
�ADD R12,R3,R10,ASL #&03
�EQUD �fpu("LDFS F3,[R12]")
�LDR R10,[R12,#&04]
�)MOV R9,R9,ASL #&10:MOV R9,R9,LSR #&10
�-MOV R10,R10,ASL #&10:MOV R10,R10,LSR #&10
�:
�LDR R7,[R4,R9,ASL #&02]
�SUB R9,R9,#&01
LDR R9,[R4,R9,ASL #&02]
LDR R8,[R4,R10,ASL #&02]
SUB R10,R10,#&01
"LDR R10,[R4,R10,ASL #&02]
,:
6�S R12,R6,#&02
@STRNE R11,[R1]
JSTRNE R7,[R1,#16]
TSTRNE R8,[R1,#20]
^STRNE R9,[R1,#24]
hSTRNE R10,[R1,#28]
rMOVNE PC,R14
|:
�EQUD �fpu("SUFS F4,F2,F3")
�EQUD �fpu("SUFS F5,F0,F3")
�EQUD �fpu("CMES F4,#0.0")
� EQUD �fpu("DVFNES F7,F5,F4")
�EQUD �fpu("MVFEQS F7,#0.0")
�:
�ADD R12,R7,R7,ASL #&01
�ADD R12,R2,R12,ASL #&02
�"EQUD �fpu("LDFS F4,[R12,#04]")
�"EQUD �fpu("LDFS F5,[R12,#08]")
�ADD R12,R9,R9,ASL #&01
�ADD R12,R2,R12,ASL #&02
�"EQUD �fpu("LDFS F6,[R12,#04]")
EQUD �fpu("SUFS F4,F4,F6")
EQUD �fpu("SUFS F2,F2,F6")
"EQUD �fpu("LDFS F6,[R12,#08]")
&EQUD �fpu("SUFS F5,F5,F6")
0EQUD �fpu("SUFS F6,F1,F6")
:EQUD �fpu("MUFS F4,F4,F4")
DEQUD �fpu("MUFS F5,F5,F5")
NEQUD �fpu("ADFS F4,F4,F5")
XEQUD �fpu("SQTS F4,F4")
bEQUD �fpu("MUFS F6,F6,F6")
lEQUD �fpu("MUFS F2,F2,F2")
vEQUD �fpu("ADFS F2,F2,F6")
�EQUD �fpu("SQTS F2,F2")
�EQUD �fpu("CMES F4,#0.0")
� EQUD �fpu("DVFNES F2,F2,F4")
�EQUD �fpu("MVFEQS F2,#0.0")
�:
�ADD R12,R8,R8,ASL #&01
�ADD R12,R2,R12,ASL #&02
�"EQUD �fpu("LDFS F4,[R12,#04]")
�"EQUD �fpu("LDFS F5,[R12,#08]")
�ADD R12,R10,R10,ASL #&01
�ADD R12,R2,R12,ASL #&02
�"EQUD �fpu("LDFS F6,[R12,#04]")
�EQUD �fpu("SUFS F4,F4,F6")
EQUD �fpu("SUFS F3,F3,F6")
"EQUD �fpu("LDFS F6,[R12,#08]")
EQUD �fpu("SUFS F5,F5,F6")
 EQUD �fpu("SUFS F6,F1,F6")
*EQUD �fpu("MUFS F4,F4,F4")
4EQUD �fpu("MUFS F5,F5,F5")
>EQUD �fpu("ADFS F4,F4,F5")
HEQUD �fpu("SQTS F4,F4")
REQUD �fpu("MUFS F6,F6,F6")
\EQUD �fpu("MUFS F3,F3,F3")
fEQUD �fpu("ADFS F3,F3,F6")
pEQUD �fpu("SQTS F3,F3")
zEQUD �fpu("CMES F4,#0.0")
� EQUD �fpu("DVFNES F3,F3,F4")
�EQUD �fpu("MVFEQS F3,#0.0")
�:
��S R12,R6,#&01
�STRNE R11,[R1]
�STRNE R7,[R1,#16]
�STRNE R8,[R1,#20]
�STRNE R9,[R1,#24]
�STRNE R10,[R1,#28]
�#EQUD �fpu("STFNES F2,[R1,#32]")
�#EQUD �fpu("STFNES F3,[R1,#36]")
�#EQUD �fpu("STFNES F7,[R1,#40]")
�MOVNE PC,R14
:
]
� nmas%=0 � 2
$[ OPT opt%
.ADD R12,R7,R7,ASL #&01
8ADD R12,R5,R12,ASL #&02
B.EQUD �fpu("LDFS F4,[R12,#"+�(4*nmas%)+"]")
LADD R12,R9,R9,ASL #&01
VADD R12,R5,R12,ASL #&02
`.EQUD �fpu("LDFS F5,[R12,#"+�(4*nmas%)+"]")
jEQUD �fpu("CMES F4,F5")
t EQUD �fpu("MUFNES F4,F4,F2")
~"EQUD �fpu("RSFNES F2,F2,#1.0")
� EQUD �fpu("MUFNES F5,F5,F2")
� EQUD �fpu("ADFNES F4,F4,F5")
�"EQUD �fpu("RSFNES F2,F2,#1.0")
�ADD R12,R8,R8,ASL #&01
�ADD R12,R5,R12,ASL #&02
�.EQUD �fpu("LDFS F5,[R12,#"+�(4*nmas%)+"]")
�ADD R12,R10,R10,ASL #&01
�ADD R12,R5,R12,ASL #&02
�.EQUD �fpu("LDFS F6,[R12,#"+�(4*nmas%)+"]")
�EQUD �fpu("CMES F5,F6")
� EQUD �fpu("MUFNES F5,F5,F3")
�"EQUD �fpu("RSFNES F3,F3,#1.0")
 EQUD �fpu("MUFNES F6,F6,F3")

 EQUD �fpu("ADFNES F5,F5,F6")
"EQUD �fpu("RSFNES F3,F3,#1.0")
EQUD �fpu("CMES F4,F5")
( EQUD �fpu("MUFNES F4,F4,F7")
2"EQUD �fpu("RSFNES F7,F7,#1.0")
< EQUD �fpu("MUFNES F5,F5,F7")
F EQUD �fpu("ADFNES F4,F4,F5")
P"EQUD �fpu("RSFNES F7,F7,#1.0")
Z/EQUD �fpu("STFS F4,[R1,#"+�(4*nmas%+4)+"]")
d]
n� nmas%
x[ OPT opt%
�STR R11,[R1]
�STR R7,[R1,#16]
�STR R8,[R1,#20]
�STR R9,[R1,#24]
�STR R10,[R1,#28]
�!EQUD �fpu("STFS F2,[R1,#32]")
�!EQUD �fpu("STFS F3,[R1,#36]")
�!EQUD �fpu("STFS F7,[R1,#40]")
�MOV PC,R14
�]
��
�:
�
� �number
[ OPT opt%

.bastofpu
LDR R0,number
"LDRB R1,number+4
,CMP R0,#&00
6CMPEQ R1,#&00
@LDREQ R12,[R9]
JSTREQ R0,[R12]
T
�Q PC,R14
^MOV R2,#&80000000
h� R3,R0,R2
rSUB R2,R2,#&01
|� R0,R0,R2
�SUB R1,R1,#&02
��R R3,R3,R1,ASL #23
��R R0,R3,R0,LSR #8
�LDR R12,[R9]
�STR R0,[R12]
�MOV PC,R14
�:
�
.fputobas
�LDR R12,[R9]
�LDR R0,[R12]
�CMP R0,#&00
�STREQ R0,number
�STREQB R0,number+4
 
�Q PC,R14
 MOV R1,#&80000000
 � R2,R1,R0
 &SUB R1,R1,#&01
 0� R3,R0,R1,LSR #8
 :�R R2,R2,R3,ASL #8
 D� R3,R0,R1
 NMOV R3,R3,LSR #23
 XADD R3,R3,#&02
 bSTR R2,number
 lSTRB R3,number+4
 vMOV PC,R14
 �:
 �.number
 �EQUD &00
 �EQUD &00
 �]
 ��
 �:
 �� �intensity
 �[ OPT opt%
 �.intensity
 �LDR R0,input
 �LDR R1,output
 �EQUD �fpu("LDFS F0,[R0]")
! EQUD �fpu("LDFS F1,[R0,#4]")
! EQUD �fpu("LDFS F2,[R0,#8]")
!!EQUD �fpu("LDFS F7,[R0,#16]")
! EQUD �fpu("STFS F7,[R1]")
!*!EQUD �fpu("LDFS F7,[R0,#20]")
!4 EQUD �fpu("STFS F7,[R1,#4]")
!>!EQUD �fpu("LDFS F7,[R0,#24]")
!H EQUD �fpu("STFS F7,[R1,#8]")
!RLDR R2,[R0,#12]
!\LDR R3,[R2]
!f:
!p.intenlp
!zSUBS R3,R3,#&01
!�MOVLT PC,R14
!�ADD R12,R3,R3,ASL #&01
!�ADD R12,R2,R12,ASL #&02
!�"EQUD �fpu("LDFS F3,[R12,#04]")
!�"EQUD �fpu("LDFS F4,[R12,#08]")
!�"EQUD �fpu("LDFS F5,[R12,#12]")
!�EQUD �fpu("MUFS F6,F0,F3")
!�EQUD �fpu("MUFS F7,F1,F4")
!�EQUD �fpu("ADFS F6,F6,F7")
!�EQUD �fpu("MUFS F7,F2,F5")
!�EQUD �fpu("ADFS F6,F6,F7")
!�:
!�EQUD �fpu("MUFS F3,F3,F2")
"EQUD �fpu("MUFS F3,F3,F0")
" EQUD �fpu("MUFS F3,F3,#2.0")
"EQUD �fpu("MUFS F4,F4,F2")
"$EQUD �fpu("MUFS F4,F4,F1")
". EQUD �fpu("MUFS F4,F4,#2.0")
"8EQUD �fpu("ADFS F3,F3,F4")
"BEQUD �fpu("MUFS F7,F2,F2")
"LEQUD �fpu("MUFS F4,F1,F1")
"VEQUD �fpu("SUFS F7,F7,F4")
"`EQUD �fpu("MUFS F4,F0,F0")
"jEQUD �fpu("SUFS F7,F7,F4")
"tEQUD �fpu("MUFS F7,F7,F5")
"~EQUD �fpu("ADFS F7,F7,F3")
"�EQUD �fpu("MUFS F5,F1,F1")
"�EQUD �fpu("ADFS F4,F4,F5")
"�EQUD �fpu("MUFS F5,F2,F2")
"�EQUD �fpu("ADFS F4,F4,F5")
"�EQUD �fpu("DVFS F7,F7,F4")
"�EQUD �fpu("MNFS F7,F7")
"�EQUD �fpu("CMES F7,#0.0")
"�EQUD �fpu("MVFLTS F7,#0.0")
"�EQUD �fpu("CMES F6,#0.0")
"�EQUD �fpu("MVFLTS F6,#0.0")
"�!EQUD �fpu("LDFS F3,[R0,#52]")
"�EQUD �fpu("POWS F7,F7,F3")
#!EQUD �fpu("LDFS F3,[R0,#40]")
#
EQUD �fpu("MUFS F4,F3,F7")
#!EQUD �fpu("LDFS F3,[R0,#28]")
#EQUD �fpu("MUFS F3,F3,F6")
#(EQUD �fpu("LDFS F5,[R1]")
#2EQUD �fpu("ADFS F5,F5,F3")
#<EQUD �fpu("ADFS F5,F5,F4")
#FEQUD �fpu("STFS F5,[R1]")
#P!EQUD �fpu("LDFS F3,[R0,#44]")
#ZEQUD �fpu("MUFS F4,F3,F7")
#d!EQUD �fpu("LDFS F3,[R0,#32]")
#nEQUD �fpu("MUFS F3,F3,F6")
#x EQUD �fpu("LDFS F5,[R1,#4]")
#�EQUD �fpu("ADFS F5,F5,F3")
#�EQUD �fpu("ADFS F5,F5,F4")
#� EQUD �fpu("STFS F5,[R1,#4]")
#�!EQUD �fpu("LDFS F3,[R0,#48]")
#�EQUD �fpu("MUFS F4,F3,F7")
#�!EQUD �fpu("LDFS F3,[R0,#36]")
#�EQUD �fpu("MUFS F3,F3,F6")
#� EQUD �fpu("LDFS F5,[R1,#8]")
#�EQUD �fpu("ADFS F5,F5,F3")
#�EQUD �fpu("ADFS F5,F5,F4")
#� EQUD �fpu("STFS F5,[R1,#8]")
#�
B intenlp
#�]
$�
$:
$
� �colour
$"[ OPT opt%
$,.colour
$6STMFD R13!,{R14}
$@LDR R0,input
$JLDR R1,output
$TLDR R2,[R0]
$^LDR R3,[R0,#4]
$hLDR R4,[R0,#8]
$rLDR R12,seed
$|LDR R11,bitmap
$�MOV R9,#&DD
$�BL random:ADD R2,R2,R10
$�BL random:ADD R3,R3,R10
$�BL random:ADD R4,R4,R10
$�STR R12,seed
$�7CMP R2,#&00:MOVLT R2,#&00:CMP R2,#&FF:MOVGT R2,#&FF
$�7CMP R3,#&00:MOVLT R3,#&00:CMP R3,#&FF:MOVGT R3,#&FF
$�7CMP R4,#&00:MOVLT R4,#&00:CMP R4,#&FF:MOVGT R4,#&FF
$�*� R5,R2,#&C0:� R6,R3,#&C0:� R7,R4,#&C0
$�*� R2,R2,#&3F:� R3,R3,#&3F:� R4,R4,#&3F
$�@MOV R8,R5,ASR #&06:�R R8,R8,R6,ASR #&04:�R R8,R8,R7,ASR #&02
$�<MOV R10,#&64:MUL R9,R2,R10:MOV R10,#&82:MLA R9,R3,R10,R9
$�0MOV R10,#&19:MLA R9,R4,R10,R9:� R9,R9,#&3000
%�R R8,R8,R9,ASR #&06
%STR R8,[R1]
%LDMFD R13!,{PC}
%&:
%0.random
%:<MOVS R12,R12,LSL #1:�CS R12,R12,R11:MOV R10,R10,LSR #&0A
%D@MOVS R12,R12,LSL #1:�CS R12,R12,R11:ADD R10,R10,R12,LSR #&0A
%N@MOVS R12,R12,LSL #1:�CS R12,R12,R11:ADD R10,R10,R12,LSR #&0A
%X@MOVS R12,R12,LSL #1:�CS R12,R12,R11:ADD R10,R10,R12,LSR #&0A
%bSUB R10,R10,#&800000
%lMUL R10,R9,R10
%vMOV R10,R10,ASR #&1A
%�MOV PC,R14
%�:
%�.seed EQUD �
%�.bitmap EQUD &1D872B41
%�]
%��
%�:
%�� �fpu(code$)
%�op$=�code$,3)
%� opt$=�code$,4,�code$," ")-4)
%�reg$=�code$,�code$," ")+1)
%� � �(opt$)<3 � opt$="AL"+opt$
%�:cnd%=�"EQNECSCCMIPLVSVCHILSGELTGTLEALNV",�opt$,2)) � 2
&prc%=�"SDEP",�opt$,3,1))-1
&rnd%=�"PMZ",opt$,4)
&:
& op%=�"STFLDF",op$)-1
&*-� op%>=0 � =�data(op% � 3,cnd%,prc%,reg$)
&4:
&>Cin%=(cnd%<<28) � ((prc% � 2)<<19) � ((prc% � 1)<<7) � (rnd%<<5)
&H:
&R9op%=�"ADFMUFSUFRSFDVFRDFPOWRPWRMFFMLFDVFRDPOL",op$)-1
&\)� op%>=0 � =�binops(op% � 3,in%,reg$)
&f<op%=�"MVFMNFABSRNDSQTLOGLGNEXPSINCOSTANASNACSATN",op$)-1
&p(� op%>=0 � =�unops(op% � 3,in%,reg$)
&zop%=�"CMFCNFCMECNE",op$)-1
&�&� op%>=0 � =�cmp(op% � 3,in%,reg$)
&�:
&�(� 255,"Unrecognised fpu instruction"
&�:
&�� �eval(reg$,type$,� chr%)
&�chr%=�reg$,type$,chr%+1)
&�=�(�reg$,chr%+1))
&�:
&�� �constant(reg$,chr%)
&�<=�"0  1  2  3  4  5  0.510",�(�eval(reg$,"#",chr%))) � 3
&�:
&�� �data(op%,cnd%,prc%,reg$)
&�
chr%=0
' fd%=�eval(reg$,"F",chr%)<<12
' rn%=�eval(reg$,"R",chr%)<<16
' offset%=�eval(reg$,"#",chr%)
'$&pre%=(�reg$,"]",chr%)>0) � (1<<24)
'.wb%=(�reg$,"!")>0)� (1<<21)
'8sgn%=(offset%>=0) � (1<<23)
'Boffset%=�(offset% � 4)
'LDin%=(cnd%<<28) � ((prc% � 2)<<22) � ((prc% � 1)<<15) � (op%<<20)
'V==in% � pre% � sgn% � wb% � rn% � fd% � offset% � &C000100
'`:
'j� �binops(op%,in%,reg$)
't
chr%=0
'~ fd%=�eval(reg$,"F",chr%)<<12
'� fn%=�eval(reg$,"F",chr%)<<16
'�fm%=�eval(reg$,"F",chr%)
'�6� chr%=0 � fm%=�constant(reg$,chr%):i%=1<<3 � i%=0
'�6=in% � (op%<<20) � fn% � fd% � i% � fm% � &E000100
'�:
'�� �unops(op%,in%,reg$)
'�
chr%=0
'� fd%=�eval(reg$,"F",chr%)<<12
'�fm%=�eval(reg$,"F",chr%)
'�6� chr%=0 � fm%=�constant(reg$,chr%):i%=1<<3 � i%=0
'�0=in% � (op%<<20) � fd% � i% � fm% � &E008100
'�:
(� �cmp(op%,in%,reg$)
(

chr%=0
( fd%=�eval(reg$,"F",chr%)<<16
(fm%=�eval(reg$,"F",chr%)
((6� chr%=0 � fm%=�constant(reg$,chr%):i%=1<<3 � i%=0
(20=in% � (op%<<21) � fd% � i% � fm% � &E90F110
�
00000000  0d 00 0a 13 f4 20 20 20  20 20 3e 41 73 73 65 6d  |.....     >Assem|
00000010  62 6c 65 0d 00 14 16 f4  20 42 79 20 20 52 6f 62  |ble..... By  Rob|
00000020  69 6e 20 42 61 72 6e 65  73 0d 00 1e 19 f4 20 46  |in Barnes..... F|
00000030  6f 72 20 33 32 2d 62 69  74 20 6d 61 63 68 69 6e  |or 32-bit machin|
00000040  65 73 0d 00 28 17 f4 20  28 63 29 20 42 41 55 20  |es..(.. (c) BAU |
00000050  4a 75 6e 65 20 31 39 39  33 0d 00 32 05 3a 0d 00  |June 1993..2.:..|
00000060  3c 10 6e 61 6d 65 24 3d  22 43 6f 64 65 22 0d 00  |<.name$="Code"..|
00000070  46 12 de 20 61 73 73 65  6d 25 20 26 38 30 30 30  |F.. assem% &8000|
00000080  0d 00 50 10 f2 61 73 73  65 6d 28 65 6e 64 25 29  |..P..assem(end%)|
00000090  0d 00 5a 2a c8 99 20 22  4f 53 5f 46 69 6c 65 22  |..Z*.. "OS_File"|
000000a0  2c 26 30 30 2c 6e 61 6d  65 24 2c 30 2c 30 2c 61  |,&00,name$,0,0,a|
000000b0  73 73 65 6d 25 2c 65 6e  64 25 0d 00 64 05 e0 0d  |ssem%,end%..d...|
000000c0  00 6e 05 3a 0d 00 78 14  dd 20 f2 61 73 73 65 6d  |.n.:..x.. .assem|
000000d0  28 f8 20 65 6e 64 25 29  0d 00 82 14 e3 20 6f 70  |(. end%)..... op|
000000e0  74 25 3d 30 20 b8 20 33  20 88 20 33 0d 00 8c 0d  |t%=0 . 3 . 3....|
000000f0  50 25 3d 61 73 73 65 6d  25 0d 00 96 0e 5b 20 4f  |P%=assem%....[ O|
00000100  50 54 20 6f 70 74 25 0d  00 a0 18 45 51 55 44 20  |PT opt%....EQUD |
00000110  62 6f 75 6e 64 62 6f 78  2d 61 73 73 65 6d 25 0d  |boundbox-assem%.|
00000120  00 aa 15 45 51 55 44 20  70 6c 61 6e 65 2d 61 73  |...EQUD plane-as|
00000130  73 65 6d 25 0d 00 b4 1b  45 51 55 44 20 70 6f 69  |sem%....EQUD poi|
00000140  6e 74 6e 6f 72 6d 61 6c  2d 61 73 73 65 6d 25 0d  |ntnormal-assem%.|
00000150  00 be 1a 45 51 55 44 20  70 6f 6c 79 6e 6f 72 6d  |...EQUD polynorm|
00000160  61 6c 2d 61 73 73 65 6d  25 0d 00 c8 18 45 51 55  |al-assem%....EQU|
00000170  44 20 73 63 61 6e 6c 69  6e 65 2d 61 73 73 65 6d  |D scanline-assem|
00000180  25 0d 00 d2 15 45 51 55  44 20 70 6f 69 6e 74 2d  |%....EQUD point-|
00000190  61 73 73 65 6d 25 0d 00  dc 19 45 51 55 44 20 69  |assem%....EQUD i|
000001a0  6e 74 65 6e 73 69 74 79  2d 61 73 73 65 6d 25 0d  |ntensity-assem%.|
000001b0  00 e6 16 45 51 55 44 20  63 6f 6c 6f 75 72 2d 61  |...EQUD colour-a|
000001c0  73 73 65 6d 25 0d 00 f0  18 45 51 55 44 20 66 70  |ssem%....EQUD fp|
000001d0  75 74 6f 62 61 73 2d 61  73 73 65 6d 25 0d 00 fa  |utobas-assem%...|
000001e0  18 45 51 55 44 20 62 61  73 74 6f 66 70 75 2d 61  |.EQUD bastofpu-a|
000001f0  73 73 65 6d 25 0d 01 04  16 45 51 55 44 20 6e 75  |ssem%....EQUD nu|
00000200  6d 62 65 72 2d 61 73 73  65 6d 25 0d 01 0e 19 45  |mber-assem%....E|
00000210  51 55 44 20 74 72 61 6e  73 66 6f 72 6d 2d 61 73  |QUD transform-as|
00000220  73 65 6d 25 0d 01 18 1b  45 51 55 44 20 70 65 72  |sem%....EQUD per|
00000230  73 70 65 63 74 69 76 65  2d 61 73 73 65 6d 25 0d  |spective-assem%.|
00000240  01 22 05 3a 0d 01 2c 11  2e 69 6e 70 75 74 20 45  |.".:..,..input E|
00000250  51 55 44 20 30 0d 01 36  12 2e 6f 75 74 70 75 74  |QUD 0..6..output|
00000260  20 45 51 55 44 20 30 0d  01 40 05 5d 0d 01 4a 0e  | EQUD 0..@.]..J.|
00000270  f2 74 72 61 6e 73 66 6f  72 6d 0d 01 54 10 f2 70  |.transform..T..p|
00000280  65 72 73 70 65 63 74 69  76 65 0d 01 5e 0d f2 62  |erspective..^..b|
00000290  6f 75 6e 64 62 6f 78 0d  01 68 0a f2 70 6c 61 6e  |oundbox..h..plan|
000002a0  65 0d 01 72 10 f2 70 6f  69 6e 74 6e 6f 72 6d 61  |e..r..pointnorma|
000002b0  6c 0d 01 7c 0f f2 70 6f  6c 79 6e 6f 72 6d 61 6c  |l..|..polynormal|
000002c0  0d 01 86 0d f2 73 63 61  6e 6c 69 6e 65 0d 01 90  |.....scanline...|
000002d0  0a f2 70 6f 69 6e 74 0d  01 9a 0e f2 69 6e 74 65  |..point.....inte|
000002e0  6e 73 69 74 79 0d 01 a4  0b f2 63 6f 6c 6f 75 72  |nsity.....colour|
000002f0  0d 01 ae 0b f2 6e 75 6d  62 65 72 0d 01 b8 0a ed  |.....number.....|
00000300  20 6f 70 74 25 0d 01 c2  0b 65 6e 64 25 3d 50 25  | opt%....end%=P%|
00000310  0d 01 cc 05 e1 0d 01 d6  05 3a 0d 01 e0 10 dd 20  |.........:..... |
00000320  f2 74 72 61 6e 73 66 6f  72 6d 0d 01 ea 0e 5b 20  |.transform....[ |
00000330  4f 50 54 20 6f 70 74 25  0d 01 f4 15 5c 20 74 72  |OPT opt%....\ tr|
00000340  61 6e 66 6f 72 6d 20 70  6f 69 6e 74 73 0d 01 fe  |anform points...|
00000350  05 3a 0d 02 08 0e 2e 74  72 61 6e 73 66 6f 72 6d  |.:.....transform|
00000360  0d 02 12 10 4c 44 52 20  52 30 2c 69 6e 70 75 74  |....LDR R0,input|
00000370  0d 02 1c 12 4c 44 52 20  52 31 2c 5b 52 30 2c 23  |....LDR R1,[R0,#|
00000380  38 5d 0d 02 26 13 4c 44  52 20 52 32 2c 5b 52 30  |8]..&.LDR R2,[R0|
00000390  2c 23 34 30 5d 0d 02 30  0f 4c 44 52 20 52 33 2c  |,#40]..0.LDR R3,|
000003a0  5b 52 31 5d 0d 02 3a 05  3a 0d 02 44 0c 2e 74 72  |[R1]..:.:..D..tr|
000003b0  61 6e 73 6c 70 0d 02 4e  13 53 55 42 53 20 52 33  |anslp..N.SUBS R3|
000003c0  2c 52 33 2c 23 26 30 31  0d 02 58 10 4d 4f 56 4c  |,R3,#&01..X.MOVL|
000003d0  54 20 50 43 2c 52 31 34  0d 02 62 1a 41 44 44 20  |T PC,R14..b.ADD |
000003e0  52 31 32 2c 52 33 2c 52  33 2c 41 53 4c 20 23 26  |R12,R3,R3,ASL #&|
000003f0  30 31 0d 02 6c 1b 41 44  44 20 52 31 32 2c 52 31  |01..l.ADD R12,R1|
00000400  2c 52 31 32 2c 41 53 4c  20 23 26 30 32 0d 02 76  |,R12,ASL #&02..v|
00000410  21 45 51 55 44 20 a4 66  70 75 28 22 4c 44 46 53  |!EQUD .fpu("LDFS|
00000420  20 46 30 2c 5b 52 31 32  2c 23 34 5d 22 29 0d 02  | F0,[R12,#4]")..|
00000430  80 21 45 51 55 44 20 a4  66 70 75 28 22 4c 44 46  |.!EQUD .fpu("LDF|
00000440  53 20 46 31 2c 5b 52 31  32 2c 23 38 5d 22 29 0d  |S F1,[R12,#8]").|
00000450  02 8a 22 45 51 55 44 20  a4 66 70 75 28 22 4c 44  |.."EQUD .fpu("LD|
00000460  46 53 20 46 32 2c 5b 52  31 32 2c 23 31 32 5d 22  |FS F2,[R12,#12]"|
00000470  29 0d 02 94 3b 45 51 55  44 20 a4 66 70 75 28 22  |)...;EQUD .fpu("|
00000480  4c 44 46 53 20 46 37 2c  5b 52 32 2c 23 30 5d 22  |LDFS F7,[R2,#0]"|
00000490  29 3a 45 51 55 44 20 a4  66 70 75 28 22 41 44 46  |):EQUD .fpu("ADF|
000004a0  53 20 46 30 2c 46 30 2c  46 37 22 29 0d 02 9e 3b  |S F0,F0,F7")...;|
000004b0  45 51 55 44 20 a4 66 70  75 28 22 4c 44 46 53 20  |EQUD .fpu("LDFS |
000004c0  46 37 2c 5b 52 32 2c 23  34 5d 22 29 3a 45 51 55  |F7,[R2,#4]"):EQU|
000004d0  44 20 a4 66 70 75 28 22  41 44 46 53 20 46 31 2c  |D .fpu("ADFS F1,|
000004e0  46 31 2c 46 37 22 29 0d  02 a8 3b 45 51 55 44 20  |F1,F7")...;EQUD |
000004f0  a4 66 70 75 28 22 4c 44  46 53 20 46 37 2c 5b 52  |.fpu("LDFS F7,[R|
00000500  32 2c 23 38 5d 22 29 3a  45 51 55 44 20 a4 66 70  |2,#8]"):EQUD .fp|
00000510  75 28 22 41 44 46 53 20  46 32 2c 46 32 2c 46 37  |u("ADFS F2,F2,F7|
00000520  22 29 0d 02 b2 05 3a 0d  02 bc 3c 45 51 55 44 20  |")....:...<EQUD |
00000530  a4 66 70 75 28 22 4c 44  46 53 20 46 37 2c 5b 52  |.fpu("LDFS F7,[R|
00000540  32 2c 23 31 32 5d 22 29  3a 45 51 55 44 20 a4 66  |2,#12]"):EQUD .f|
00000550  70 75 28 22 4d 55 46 53  20 46 33 2c 46 30 2c 46  |pu("MUFS F3,F0,F|
00000560  37 22 29 0d 02 c6 3c 45  51 55 44 20 a4 66 70 75  |7")...<EQUD .fpu|
00000570  28 22 4c 44 46 53 20 46  37 2c 5b 52 32 2c 23 31  |("LDFS F7,[R2,#1|
00000580  36 5d 22 29 3a 45 51 55  44 20 a4 66 70 75 28 22  |6]"):EQUD .fpu("|
00000590  4d 55 46 53 20 46 36 2c  46 31 2c 46 37 22 29 0d  |MUFS F6,F1,F7").|
000005a0  02 d0 3c 45 51 55 44 20  a4 66 70 75 28 22 41 44  |..<EQUD .fpu("AD|
000005b0  46 53 20 46 33 2c 46 33  2c 46 36 22 29 3a 45 51  |FS F3,F3,F6"):EQ|
000005c0  55 44 20 a4 66 70 75 28  22 4c 44 46 53 20 46 37  |UD .fpu("LDFS F7|
000005d0  2c 5b 52 32 2c 23 32 30  5d 22 29 0d 02 da 39 45  |,[R2,#20]")...9E|
000005e0  51 55 44 20 a4 66 70 75  28 22 4d 55 46 53 20 46  |QUD .fpu("MUFS F|
000005f0  36 2c 46 32 2c 46 37 22  29 3a 45 51 55 44 20 a4  |6,F2,F7"):EQUD .|
00000600  66 70 75 28 22 41 44 46  53 20 46 33 2c 46 33 2c  |fpu("ADFS F3,F3,|
00000610  46 36 22 29 0d 02 e4 05  3a 0d 02 ee 3c 45 51 55  |F6")....:...<EQU|
00000620  44 20 a4 66 70 75 28 22  4c 44 46 53 20 46 37 2c  |D .fpu("LDFS F7,|
00000630  5b 52 32 2c 23 32 34 5d  22 29 3a 45 51 55 44 20  |[R2,#24]"):EQUD |
00000640  a4 66 70 75 28 22 4d 55  46 53 20 46 34 2c 46 30  |.fpu("MUFS F4,F0|
00000650  2c 46 37 22 29 0d 02 f8  3c 45 51 55 44 20 a4 66  |,F7")...<EQUD .f|
00000660  70 75 28 22 4c 44 46 53  20 46 37 2c 5b 52 32 2c  |pu("LDFS F7,[R2,|
00000670  23 32 38 5d 22 29 3a 45  51 55 44 20 a4 66 70 75  |#28]"):EQUD .fpu|
00000680  28 22 4d 55 46 53 20 46  36 2c 46 31 2c 46 37 22  |("MUFS F6,F1,F7"|
00000690  29 0d 03 02 3c 45 51 55  44 20 a4 66 70 75 28 22  |)...<EQUD .fpu("|
000006a0  41 44 46 53 20 46 34 2c  46 34 2c 46 36 22 29 3a  |ADFS F4,F4,F6"):|
000006b0  45 51 55 44 20 a4 66 70  75 28 22 4c 44 46 53 20  |EQUD .fpu("LDFS |
000006c0  46 37 2c 5b 52 32 2c 23  33 32 5d 22 29 0d 03 0c  |F7,[R2,#32]")...|
000006d0  39 45 51 55 44 20 a4 66  70 75 28 22 4d 55 46 53  |9EQUD .fpu("MUFS|
000006e0  20 46 36 2c 46 32 2c 46  37 22 29 3a 45 51 55 44  | F6,F2,F7"):EQUD|
000006f0  20 a4 66 70 75 28 22 41  44 46 53 20 46 34 2c 46  | .fpu("ADFS F4,F|
00000700  34 2c 46 36 22 29 0d 03  16 05 3a 0d 03 20 3c 45  |4,F6")....:.. <E|
00000710  51 55 44 20 a4 66 70 75  28 22 4c 44 46 53 20 46  |QUD .fpu("LDFS F|
00000720  37 2c 5b 52 32 2c 23 33  36 5d 22 29 3a 45 51 55  |7,[R2,#36]"):EQU|
00000730  44 20 a4 66 70 75 28 22  4d 55 46 53 20 46 35 2c  |D .fpu("MUFS F5,|
00000740  46 30 2c 46 37 22 29 0d  03 2a 3c 45 51 55 44 20  |F0,F7")..*<EQUD |
00000750  a4 66 70 75 28 22 4c 44  46 53 20 46 37 2c 5b 52  |.fpu("LDFS F7,[R|
00000760  32 2c 23 34 30 5d 22 29  3a 45 51 55 44 20 a4 66  |2,#40]"):EQUD .f|
00000770  70 75 28 22 4d 55 46 53  20 46 36 2c 46 31 2c 46  |pu("MUFS F6,F1,F|
00000780  37 22 29 0d 03 34 3c 45  51 55 44 20 a4 66 70 75  |7")..4<EQUD .fpu|
00000790  28 22 41 44 46 53 20 46  35 2c 46 35 2c 46 36 22  |("ADFS F5,F5,F6"|
000007a0  29 3a 45 51 55 44 20 a4  66 70 75 28 22 4c 44 46  |):EQUD .fpu("LDF|
000007b0  53 20 46 37 2c 5b 52 32  2c 23 34 34 5d 22 29 0d  |S F7,[R2,#44]").|
000007c0  03 3e 39 45 51 55 44 20  a4 66 70 75 28 22 4d 55  |.>9EQUD .fpu("MU|
000007d0  46 53 20 46 36 2c 46 32  2c 46 37 22 29 3a 45 51  |FS F6,F2,F7"):EQ|
000007e0  55 44 20 a4 66 70 75 28  22 41 44 46 53 20 46 35  |UD .fpu("ADFS F5|
000007f0  2c 46 35 2c 46 36 22 29  0d 03 48 21 45 51 55 44  |,F5,F6")..H!EQUD|
00000800  20 a4 66 70 75 28 22 53  54 46 53 20 46 33 2c 5b  | .fpu("STFS F3,[|
00000810  52 31 32 2c 23 34 5d 22  29 0d 03 52 21 45 51 55  |R12,#4]")..R!EQU|
00000820  44 20 a4 66 70 75 28 22  53 54 46 53 20 46 34 2c  |D .fpu("STFS F4,|
00000830  5b 52 31 32 2c 23 38 5d  22 29 0d 03 5c 22 45 51  |[R12,#8]")..\"EQ|
00000840  55 44 20 a4 66 70 75 28  22 53 54 46 53 20 46 35  |UD .fpu("STFS F5|
00000850  2c 5b 52 31 32 2c 23 31  32 5d 22 29 0d 03 66 0d  |,[R12,#12]")..f.|
00000860  42 20 74 72 61 6e 73 6c  70 0d 03 70 05 5d 0d 03  |B translp..p.]..|
00000870  7a 05 e1 0d 03 84 05 3a  0d 03 8e 12 dd 20 f2 70  |z......:..... .p|
00000880  65 72 73 70 65 63 74 69  76 65 0d 03 98 0e 5b 20  |erspective....[ |
00000890  4f 50 54 20 6f 70 74 25  0d 03 a2 1b 5c 20 70 65  |OPT opt%....\ pe|
000008a0  72 73 70 65 63 74 69 76  65 20 74 72 61 6e 73 66  |rspective transf|
000008b0  6f 72 6d 0d 03 ac 05 3a  0d 03 b6 10 2e 70 65 72  |orm....:.....per|
000008c0  73 70 65 63 74 69 76 65  0d 03 c0 10 4c 44 52 20  |spective....LDR |
000008d0  52 30 2c 69 6e 70 75 74  0d 03 ca 12 4c 44 52 20  |R0,input....LDR |
000008e0  52 31 2c 5b 52 30 2c 23  38 5d 0d 03 d4 0f 4c 44  |R1,[R0,#8]....LD|
000008f0  52 20 52 32 2c 5b 52 31  5d 0d 03 de 1d 45 51 55  |R R2,[R1]....EQU|
00000900  44 20 a4 66 70 75 28 22  4d 56 46 53 20 46 36 2c  |D .fpu("MVFS F6,|
00000910  23 31 2e 30 22 29 0d 03  e8 21 45 51 55 44 20 a4  |#1.0")...!EQUD .|
00000920  66 70 75 28 22 44 56 46  53 20 46 36 2c 46 36 2c  |fpu("DVFS F6,F6,|
00000930  23 31 30 2e 30 22 29 0d  03 f2 21 45 51 55 44 20  |#10.0")...!EQUD |
00000940  a4 66 70 75 28 22 50 4f  57 53 20 46 36 2c 46 36  |.fpu("POWS F6,F6|
00000950  2c 23 31 30 2e 30 22 29  0d 03 fc 05 3a 0d 04 06  |,#10.0")....:...|
00000960  0d 2e 70 72 73 70 63 74  6c 70 0d 04 10 13 53 55  |..prspctlp....SU|
00000970  42 53 20 52 32 2c 52 32  2c 23 26 30 31 0d 04 1a  |BS R2,R2,#&01...|
00000980  10 4d 4f 56 4c 54 20 50  43 2c 52 31 34 0d 04 24  |.MOVLT PC,R14..$|
00000990  1a 41 44 44 20 52 31 32  2c 52 32 2c 52 32 2c 41  |.ADD R12,R2,R2,A|
000009a0  53 4c 20 23 26 30 31 0d  04 2e 1b 41 44 44 20 52  |SL #&01....ADD R|
000009b0  31 32 2c 52 31 2c 52 31  32 2c 41 53 4c 20 23 26  |12,R1,R12,ASL #&|
000009c0  30 32 0d 04 38 21 45 51  55 44 20 a4 66 70 75 28  |02..8!EQUD .fpu(|
000009d0  22 4c 44 46 53 20 46 30  2c 5b 52 31 32 2c 23 34  |"LDFS F0,[R12,#4|
000009e0  5d 22 29 0d 04 42 21 45  51 55 44 20 a4 66 70 75  |]")..B!EQUD .fpu|
000009f0  28 22 4c 44 46 53 20 46  31 2c 5b 52 31 32 2c 23  |("LDFS F1,[R12,#|
00000a00  38 5d 22 29 0d 04 4c 22  45 51 55 44 20 a4 66 70  |8]")..L"EQUD .fp|
00000a10  75 28 22 4c 44 46 53 20  46 32 2c 5b 52 31 32 2c  |u("LDFS F2,[R12,|
00000a20  23 31 32 5d 22 29 0d 04  56 1d 45 51 55 44 20 a4  |#12]")..V.EQUD .|
00000a30  66 70 75 28 22 43 4d 45  53 20 46 32 2c 23 30 2e  |fpu("CMES F2,#0.|
00000a40  30 22 29 0d 04 60 1d 45  51 55 44 20 a4 66 70 75  |0")..`.EQUD .fpu|
00000a50  28 22 4d 56 46 4c 45 53  20 46 32 2c 46 36 22 29  |("MVFLES F2,F6")|
00000a60  0d 04 6a 1e 45 51 55 44  20 a4 66 70 75 28 22 44  |..j.EQUD .fpu("D|
00000a70  56 46 53 20 46 30 2c 46  30 2c 46 32 22 29 0d 04  |VFS F0,F0,F2")..|
00000a80  74 1e 45 51 55 44 20 a4  66 70 75 28 22 44 56 46  |t.EQUD .fpu("DVF|
00000a90  53 20 46 31 2c 46 31 2c  46 32 22 29 0d 04 7e 21  |S F1,F1,F2")..~!|
00000aa0  45 51 55 44 20 a4 66 70  75 28 22 53 54 46 53 20  |EQUD .fpu("STFS |
00000ab0  46 30 2c 5b 52 31 32 2c  23 34 5d 22 29 0d 04 88  |F0,[R12,#4]")...|
00000ac0  21 45 51 55 44 20 a4 66  70 75 28 22 53 54 46 53  |!EQUD .fpu("STFS|
00000ad0  20 46 31 2c 5b 52 31 32  2c 23 38 5d 22 29 0d 04  | F1,[R12,#8]")..|
00000ae0  92 0e 42 20 70 72 73 70  63 74 6c 70 0d 04 9c 05  |..B prspctlp....|
00000af0  5d 0d 04 a6 05 e1 0d 04  b0 05 3a 0d 04 ba 11 dd  |].........:.....|
00000b00  20 f2 70 6f 6c 79 6e 6f  72 6d 61 6c 0d 04 c4 0e  | .polynormal....|
00000b10  5b 20 4f 50 54 20 6f 70  74 25 0d 04 ce 21 5c 20  |[ OPT opt%...!\ |
00000b20  63 61 6c 63 75 6c 61 74  65 20 6e 6f 72 6d 61 6c  |calculate normal|
00000b30  20 74 6f 20 70 6f 6c 79  67 6f 6e 0d 04 d8 05 3a  | to polygon....:|
00000b40  0d 04 e2 0f 2e 70 6f 6c  79 6e 6f 72 6d 61 6c 0d  |.....polynormal.|
00000b50  04 ec 10 4c 44 52 20 52  30 2c 69 6e 70 75 74 0d  |...LDR R0,input.|
00000b60  04 f6 11 4c 44 52 20 52  31 2c 6f 75 74 70 75 74  |...LDR R1,output|
00000b70  0d 05 00 13 4c 44 52 20  52 32 2c 5b 52 30 2c 23  |....LDR R2,[R0,#|
00000b80  32 38 5d 0d 05 0a 13 4c  44 52 20 52 33 2c 5b 52  |28]....LDR R3,[R|
00000b90  30 2c 23 34 34 5d 0d 05  14 1a 41 44 44 20 52 31  |0,#44]....ADD R1|
00000ba0  32 2c 52 32 2c 52 33 2c  41 53 4c 20 23 26 30 34  |2,R2,R3,ASL #&04|
00000bb0  0d 05 1e 21 45 51 55 44  20 a4 66 70 75 28 22 4c  |...!EQUD .fpu("L|
00000bc0  44 46 53 20 46 30 2c 5b  52 31 32 2c 23 30 5d 22  |DFS F0,[R12,#0]"|
00000bd0  29 0d 05 28 21 45 51 55  44 20 a4 66 70 75 28 22  |)..(!EQUD .fpu("|
00000be0  4c 44 46 53 20 46 31 2c  5b 52 31 32 2c 23 34 5d  |LDFS F1,[R12,#4]|
00000bf0  22 29 0d 05 32 21 45 51  55 44 20 a4 66 70 75 28  |")..2!EQUD .fpu(|
00000c00  22 4c 44 46 53 20 46 32  2c 5b 52 31 32 2c 23 38  |"LDFS F2,[R12,#8|
00000c10  5d 22 29 0d 05 3c 1e 45  51 55 44 20 a4 66 70 75  |]")..<.EQUD .fpu|
00000c20  28 22 4d 55 46 53 20 46  33 2c 46 30 2c 46 30 22  |("MUFS F3,F0,F0"|
00000c30  29 0d 05 46 1e 45 51 55  44 20 a4 66 70 75 28 22  |)..F.EQUD .fpu("|
00000c40  4d 55 46 53 20 46 34 2c  46 31 2c 46 31 22 29 0d  |MUFS F4,F1,F1").|
00000c50  05 50 1e 45 51 55 44 20  a4 66 70 75 28 22 41 44  |.P.EQUD .fpu("AD|
00000c60  46 53 20 46 33 2c 46 33  2c 46 34 22 29 0d 05 5a  |FS F3,F3,F4")..Z|
00000c70  1e 45 51 55 44 20 a4 66  70 75 28 22 4d 55 46 53  |.EQUD .fpu("MUFS|
00000c80  20 46 34 2c 46 32 2c 46  32 22 29 0d 05 64 1e 45  | F4,F2,F2")..d.E|
00000c90  51 55 44 20 a4 66 70 75  28 22 41 44 46 53 20 46  |QUD .fpu("ADFS F|
00000ca0  33 2c 46 33 2c 46 34 22  29 0d 05 6e 1b 45 51 55  |3,F3,F4")..n.EQU|
00000cb0  44 20 a4 66 70 75 28 22  53 51 54 53 20 46 33 2c  |D .fpu("SQTS F3,|
00000cc0  46 33 22 29 0d 05 78 1e  45 51 55 44 20 a4 66 70  |F3")..x.EQUD .fp|
00000cd0  75 28 22 44 56 46 53 20  46 30 2c 46 30 2c 46 33  |u("DVFS F0,F0,F3|
00000ce0  22 29 0d 05 82 1e 45 51  55 44 20 a4 66 70 75 28  |")....EQUD .fpu(|
00000cf0  22 44 56 46 53 20 46 31  2c 46 31 2c 46 33 22 29  |"DVFS F1,F1,F3")|
00000d00  0d 05 8c 1e 45 51 55 44  20 a4 66 70 75 28 22 44  |....EQUD .fpu("D|
00000d10  56 46 53 20 46 32 2c 46  32 2c 46 33 22 29 0d 05  |VFS F2,F2,F3")..|
00000d20  96 20 45 51 55 44 20 a4  66 70 75 28 22 53 54 46  |. EQUD .fpu("STF|
00000d30  53 20 46 30 2c 5b 52 31  2c 23 34 5d 22 29 0d 05  |S F0,[R1,#4]")..|
00000d40  a0 20 45 51 55 44 20 a4  66 70 75 28 22 53 54 46  |. EQUD .fpu("STF|
00000d50  53 20 46 31 2c 5b 52 31  2c 23 38 5d 22 29 0d 05  |S F1,[R1,#8]")..|
00000d60  aa 21 45 51 55 44 20 a4  66 70 75 28 22 53 54 46  |.!EQUD .fpu("STF|
00000d70  53 20 46 32 2c 5b 52 31  2c 23 31 32 5d 22 29 0d  |S F2,[R1,#12]").|
00000d80  05 b4 0e 4d 4f 56 20 50  43 2c 52 31 34 0d 05 be  |...MOV PC,R14...|
00000d90  05 5d 0d 05 c8 05 e1 0d  05 d2 05 3a 0d 05 dc 0f  |.].........:....|
00000da0  dd 20 f2 62 6f 75 6e 64  62 6f 78 0d 05 e6 0d 5b  |. .boundbox....[|
00000db0  4f 50 54 20 6f 70 74 25  0d 05 f0 2b 5c 20 63 61  |OPT opt%...+\ ca|
00000dc0  6c 63 75 6c 61 74 65 20  62 6f 75 6e 64 69 6e 67  |lculate bounding|
00000dd0  20 62 6f 78 65 73 20 66  6f 72 20 70 6f 6c 79 67  | boxes for polyg|
00000de0  6f 6e 73 0d 05 fa 05 3a  0d 06 04 0d 2e 62 6f 75  |ons....:.....bou|
00000df0  6e 64 62 6f 78 0d 06 0e  14 53 54 4d 46 44 20 52  |ndbox....STMFD R|
00000e00  31 33 21 2c 7b 52 31 34  7d 0d 06 18 10 4c 44 52  |13!,{R14}....LDR|
00000e10  20 52 30 2c 69 6e 70 75  74 0d 06 22 12 4c 44 52  | R0,input..".LDR|
00000e20  20 52 31 2c 5b 52 30 2c  23 38 5d 0d 06 2c 13 4c  | R1,[R0,#8]..,.L|
00000e30  44 52 20 52 32 2c 5b 52  30 2c 23 31 32 5d 0d 06  |DR R2,[R0,#12]..|
00000e40  36 13 4c 44 52 20 52 33  2c 5b 52 30 2c 23 31 36  |6.LDR R3,[R0,#16|
00000e50  5d 0d 06 40 13 4c 44 52  20 52 34 2c 5b 52 30 2c  |]..@.LDR R4,[R0,|
00000e60  23 33 36 5d 0d 06 4a 11  4c 44 52 20 52 30 2c 6f  |#36]..J.LDR R0,o|
00000e70  75 74 70 75 74 0d 06 54  0f 4c 44 52 20 52 35 2c  |utput..T.LDR R5,|
00000e80  5b 52 32 5d 0d 06 5e 1e  45 51 55 44 20 a4 66 70  |[R2]..^.EQUD .fp|
00000e90  75 28 22 4d 56 46 53 20  46 34 2c 23 31 30 2e 30  |u("MVFS F4,#10.0|
00000ea0  22 29 0d 06 68 21 45 51  55 44 20 a4 66 70 75 28  |")..h!EQUD .fpu(|
00000eb0  22 50 4f 57 53 20 46 34  2c 46 34 2c 23 31 30 2e  |"POWS F4,F4,#10.|
00000ec0  30 22 29 0d 06 72 1b 45  51 55 44 20 a4 66 70 75  |0")..r.EQUD .fpu|
00000ed0  28 22 4d 56 46 53 20 46  35 2c 46 34 22 29 0d 06  |("MVFS F5,F4")..|
00000ee0  7c 1b 45 51 55 44 20 a4  66 70 75 28 22 4d 4e 46  ||.EQUD .fpu("MNF|
00000ef0  53 20 46 36 2c 46 34 22  29 0d 06 86 1b 45 51 55  |S F6,F4")....EQU|
00000f00  44 20 a4 66 70 75 28 22  4d 4e 46 53 20 46 37 2c  |D .fpu("MNFS F7,|
00000f10  46 34 22 29 0d 06 90 05  3a 0d 06 9a 0d 2e 62 6e  |F4")....:.....bn|
00000f20  64 62 6f 78 6c 70 0d 06  a4 13 53 55 42 53 20 52  |dboxlp....SUBS R|
00000f30  35 2c 52 35 2c 23 26 30  31 0d 06 ae 1f 45 51 55  |5,R5,#&01....EQU|
00000f40  44 20 a4 66 70 75 28 22  53 54 46 4c 54 53 20 46  |D .fpu("STFLTS F|
00000f50  34 2c 5b 52 30 5d 22 29  0d 06 b8 22 45 51 55 44  |4,[R0]")..."EQUD|
00000f60  20 a4 66 70 75 28 22 53  54 46 4c 54 53 20 46 35  | .fpu("STFLTS F5|
00000f70  2c 5b 52 30 2c 23 34 5d  22 29 0d 06 c2 22 45 51  |,[R0,#4]")..."EQ|
00000f80  55 44 20 a4 66 70 75 28  22 53 54 46 4c 54 53 20  |UD .fpu("STFLTS |
00000f90  46 36 2c 5b 52 30 2c 23  38 5d 22 29 0d 06 cc 23  |F6,[R0,#8]")...#|
00000fa0  45 51 55 44 20 a4 66 70  75 28 22 53 54 46 4c 54  |EQUD .fpu("STFLT|
00000fb0  53 20 46 37 2c 5b 52 30  2c 23 31 32 5d 22 29 0d  |S F7,[R0,#12]").|
00000fc0  06 d6 15 4c 44 4d 4c 54  46 44 20 52 31 33 21 2c  |...LDMLTFD R13!,|
00000fd0  7b 50 43 7d 0d 06 e0 0e  42 4c 20 62 6e 64 70 6f  |{PC}....BL bndpo|
00000fe0  6c 79 0d 06 ea 0e 42 20  62 6e 64 62 6f 78 6c 70  |ly....B bndboxlp|
00000ff0  0d 06 f4 05 3a 0d 06 fe  0c 2e 62 6e 64 70 6f 6c  |....:.....bndpol|
00001000  79 0d 07 08 13 41 44 44  20 52 31 31 2c 52 35 2c  |y....ADD R11,R5,|
00001010  23 26 30 31 0d 07 12 1d  4c 44 52 20 52 31 31 2c  |#&01....LDR R11,|
00001020  5b 52 32 2c 52 31 31 2c  41 53 4c 20 23 26 30 32  |[R2,R11,ASL #&02|
00001030  5d 0d 07 1c 12 41 44 44  20 52 31 31 2c 52 31 31  |]....ADD R11,R11|
00001040  2c 52 33 0d 07 26 14 41  44 44 20 52 31 31 2c 52  |,R3..&.ADD R11,R|
00001050  31 31 2c 23 26 30 34 0d  07 30 10 4c 44 52 20 52  |11,#&04..0.LDR R|
00001060  36 2c 5b 52 31 31 5d 0d  07 3a 1e 45 51 55 44 20  |6,[R11]..:.EQUD |
00001070  a4 66 70 75 28 22 4d 56  46 53 20 46 30 2c 23 31  |.fpu("MVFS F0,#1|
00001080  30 2e 30 22 29 0d 07 44  21 45 51 55 44 20 a4 66  |0.0")..D!EQUD .f|
00001090  70 75 28 22 50 4f 57 53  20 46 30 2c 46 30 2c 23  |pu("POWS F0,F0,#|
000010a0  31 30 2e 30 22 29 0d 07  4e 1b 45 51 55 44 20 a4  |10.0")..N.EQUD .|
000010b0  66 70 75 28 22 4d 4e 46  53 20 46 31 2c 46 30 22  |fpu("MNFS F1,F0"|
000010c0  29 0d 07 58 05 3a 0d 07  62 0d 2e 62 6e 64 70 6f  |)..X.:..b..bndpo|
000010d0  6c 6c 70 0d 07 6c 1c 4c  44 52 20 52 37 2c 5b 52  |llp..l.LDR R7,[R|
000010e0  31 31 2c 52 36 2c 41 53  4c 20 23 26 30 32 5d 0d  |11,R6,ASL #&02].|
000010f0  07 76 1a 41 44 44 20 52  31 32 2c 52 37 2c 52 37  |.v.ADD R12,R7,R7|
00001100  2c 41 53 4c 20 23 26 30  31 0d 07 80 1b 41 44 44  |,ASL #&01....ADD|
00001110  20 52 31 32 2c 52 31 2c  52 31 32 2c 41 53 4c 20  | R12,R1,R12,ASL |
00001120  23 26 30 32 0d 07 8a 22  45 51 55 44 20 a4 66 70  |#&02..."EQUD .fp|
00001130  75 28 22 4c 44 46 53 20  46 32 2c 5b 52 31 32 2c  |u("LDFS F2,[R12,|
00001140  23 30 34 5d 22 29 0d 07  94 22 45 51 55 44 20 a4  |#04]")..."EQUD .|
00001150  66 70 75 28 22 4c 44 46  53 20 46 33 2c 5b 52 31  |fpu("LDFS F3,[R1|
00001160  32 2c 23 30 38 5d 22 29  0d 07 9e 1b 45 51 55 44  |2,#08]")....EQUD|
00001170  20 a4 66 70 75 28 22 43  4d 45 53 20 46 33 2c 46  | .fpu("CMES F3,F|
00001180  30 22 29 0d 07 a8 1d 45  51 55 44 20 a4 66 70 75  |0")....EQUD .fpu|
00001190  28 22 4d 56 46 4c 54 53  20 46 30 2c 46 33 22 29  |("MVFLTS F0,F3")|
000011a0  0d 07 b2 1b 45 51 55 44  20 a4 66 70 75 28 22 43  |....EQUD .fpu("C|
000011b0  4d 45 53 20 46 33 2c 46  31 22 29 0d 07 bc 1d 45  |MES F3,F1")....E|
000011c0  51 55 44 20 a4 66 70 75  28 22 4d 56 46 47 54 53  |QUD .fpu("MVFGTS|
000011d0  20 46 31 2c 46 33 22 29  0d 07 c6 1b 45 51 55 44  | F1,F3")....EQUD|
000011e0  20 a4 66 70 75 28 22 43  4d 45 53 20 46 32 2c 46  | .fpu("CMES F2,F|
000011f0  34 22 29 0d 07 d0 1d 45  51 55 44 20 a4 66 70 75  |4")....EQUD .fpu|
00001200  28 22 4d 56 46 4c 54 53  20 46 34 2c 46 32 22 29  |("MVFLTS F4,F2")|
00001210  0d 07 da 1b 45 51 55 44  20 a4 66 70 75 28 22 43  |....EQUD .fpu("C|
00001220  4d 45 53 20 46 32 2c 46  36 22 29 0d 07 e4 1d 45  |MES F2,F6")....E|
00001230  51 55 44 20 a4 66 70 75  28 22 4d 56 46 47 54 53  |QUD .fpu("MVFGTS|
00001240  20 46 36 2c 46 32 22 29  0d 07 ee 13 53 55 42 53  | F6,F2")....SUBS|
00001250  20 52 36 2c 52 36 2c 23  26 30 31 0d 07 f8 10 42  | R6,R6,#&01....B|
00001260  47 54 20 62 6e 64 70 6f  6c 6c 70 0d 08 02 1a 41  |GT bndpollp....A|
00001270  44 44 20 52 31 32 2c 52  34 2c 52 35 2c 41 53 4c  |DD R12,R4,R5,ASL|
00001280  20 23 26 30 33 0d 08 0c  21 45 51 55 44 20 a4 66  | #&03...!EQUD .f|
00001290  70 75 28 22 53 54 46 53  20 46 30 2c 5b 52 31 32  |pu("STFS F0,[R12|
000012a0  2c 23 30 5d 22 29 0d 08  16 21 45 51 55 44 20 a4  |,#0]")...!EQUD .|
000012b0  66 70 75 28 22 53 54 46  53 20 46 31 2c 5b 52 31  |fpu("STFS F1,[R1|
000012c0  32 2c 23 34 5d 22 29 0d  08 20 1b 45 51 55 44 20  |2,#4]").. .EQUD |
000012d0  a4 66 70 75 28 22 43 4d  45 53 20 46 30 2c 46 35  |.fpu("CMES F0,F5|
000012e0  22 29 0d 08 2a 1d 45 51  55 44 20 a4 66 70 75 28  |")..*.EQUD .fpu(|
000012f0  22 4d 56 46 4c 54 53 20  46 35 2c 46 30 22 29 0d  |"MVFLTS F5,F0").|
00001300  08 34 1b 45 51 55 44 20  a4 66 70 75 28 22 43 4d  |.4.EQUD .fpu("CM|
00001310  45 53 20 46 31 2c 46 37  22 29 0d 08 3e 1d 45 51  |ES F1,F7")..>.EQ|
00001320  55 44 20 a4 66 70 75 28  22 4d 56 46 47 54 53 20  |UD .fpu("MVFGTS |
00001330  46 37 2c 46 31 22 29 0d  08 48 0e 4d 4f 56 20 50  |F7,F1")..H.MOV P|
00001340  43 2c 52 31 34 0d 08 52  05 5d 0d 08 5c 05 e1 0d  |C,R14..R.]..\...|
00001350  08 66 05 3a 0d 08 70 12  dd 20 f2 70 6f 69 6e 74  |.f.:..p.. .point|
00001360  6e 6f 72 6d 61 6c 0d 08  7a 0e 5b 20 4f 50 54 20  |normal..z.[ OPT |
00001370  6f 70 74 25 0d 08 84 23  5c 20 63 61 6c 63 75 6c  |opt%...#\ calcul|
00001380  61 74 65 20 6e 6f 72 6d  61 6c 73 20 61 74 20 76  |ate normals at v|
00001390  65 72 74 69 63 65 73 0d  08 8e 05 3a 0d 08 98 10  |ertices....:....|
000013a0  2e 70 6f 69 6e 74 6e 6f  72 6d 61 6c 0d 08 a2 14  |.pointnormal....|
000013b0  53 54 4d 46 44 20 52 31  33 21 2c 7b 52 31 34 7d  |STMFD R13!,{R14}|
000013c0  0d 08 ac 10 4c 44 52 20  52 30 2c 69 6e 70 75 74  |....LDR R0,input|
000013d0  0d 08 b6 13 4c 44 52 20  52 34 2c 5b 52 30 2c 23  |....LDR R4,[R0,#|
000013e0  33 32 5d 0d 08 c0 12 4c  44 52 20 52 31 2c 5b 52  |32]....LDR R1,[R|
000013f0  30 2c 23 38 5d 0d 08 ca  0f 4c 44 52 20 52 31 2c  |0,#8]....LDR R1,|
00001400  5b 52 31 5d 0d 08 d4 1d  45 51 55 44 20 a4 66 70  |[R1]....EQUD .fp|
00001410  75 28 22 4d 56 46 53 20  46 30 2c 23 30 2e 30 22  |u("MVFS F0,#0.0"|
00001420  29 0d 08 de 05 3a 0d 08  e8 0d 2e 6e 6f 72 6d 62  |)....:.....normb|
00001430  6c 6e 6b 0d 08 f2 13 53  55 42 53 20 52 31 2c 52  |lnk....SUBS R1,R|
00001440  31 2c 23 26 30 31 0d 08  fc 15 4c 44 52 4c 54 20  |1,#&01....LDRLT |
00001450  52 31 2c 5b 52 30 2c 23  31 32 5d 0d 09 06 15 4c  |R1,[R0,#12]....L|
00001460  44 52 4c 54 20 52 32 2c  5b 52 30 2c 23 31 36 5d  |DRLT R2,[R0,#16]|
00001470  0d 09 10 15 4c 44 52 4c  54 20 52 33 2c 5b 52 30  |....LDRLT R3,[R0|
00001480  2c 23 32 38 5d 0d 09 1a  11 4c 44 52 4c 54 20 52  |,#28]....LDRLT R|
00001490  35 2c 5b 52 31 5d 0d 09  24 11 42 4c 54 20 70 6e  |5,[R1]..$.BLT pn|
000014a0  74 6e 6f 72 6d 6c 70 0d  09 2e 1a 41 44 44 20 52  |tnormlp....ADD R|
000014b0  31 32 2c 52 31 2c 52 31  2c 41 53 4c 20 23 26 30  |12,R1,R1,ASL #&0|
000014c0  31 0d 09 38 1b 41 44 44  20 52 31 32 2c 52 34 2c  |1..8.ADD R12,R4,|
000014d0  52 31 32 2c 41 53 4c 20  23 26 30 32 0d 09 42 21  |R12,ASL #&02..B!|
000014e0  45 51 55 44 20 a4 66 70  75 28 22 53 54 46 53 20  |EQUD .fpu("STFS |
000014f0  46 30 2c 5b 52 31 32 2c  23 30 5d 22 29 0d 09 4c  |F0,[R12,#0]")..L|
00001500  21 45 51 55 44 20 a4 66  70 75 28 22 53 54 46 53  |!EQUD .fpu("STFS|
00001510  20 46 30 2c 5b 52 31 32  2c 23 34 5d 22 29 0d 09  | F0,[R12,#4]")..|
00001520  56 21 45 51 55 44 20 a4  66 70 75 28 22 53 54 46  |V!EQUD .fpu("STF|
00001530  53 20 46 30 2c 5b 52 31  32 2c 23 38 5d 22 29 0d  |S F0,[R12,#8]").|
00001540  09 60 0e 42 20 6e 6f 72  6d 62 6c 6e 6b 0d 09 6a  |.`.B normblnk..j|
00001550  05 3a 0d 09 74 0e 2e 70  6e 74 6e 6f 72 6d 6c 70  |.:..t..pntnormlp|
00001560  0d 09 7e 13 53 55 42 53  20 52 35 2c 52 35 2c 23  |..~.SUBS R5,R5,#|
00001570  26 30 31 0d 09 88 14 4c  44 52 4c 54 20 52 31 2c  |&01....LDRLT R1,|
00001580  5b 52 30 2c 23 38 5d 0d  09 92 11 4c 44 52 4c 54  |[R0,#8]....LDRLT|
00001590  20 52 31 2c 5b 52 31 5d  0d 09 9c 0f 42 4c 54 20  | R1,[R1]....BLT |
000015a0  6d 6f 64 75 6c 75 73 0d  09 a6 0e 42 4c 20 73 75  |modulus....BL su|
000015b0  6d 70 6f 6c 79 0d 09 b0  0f 42 20 70 6e 74 6e 6f  |mpoly....B pntno|
000015c0  72 6d 6c 70 0d 09 ba 05  3a 0d 09 c4 0c 2e 6d 6f  |rmlp....:.....mo|
000015d0  64 75 6c 75 73 0d 09 ce  13 53 55 42 53 20 52 31  |dulus....SUBS R1|
000015e0  2c 52 31 2c 23 26 30 31  0d 09 d8 15 4c 44 4d 4c  |,R1,#&01....LDML|
000015f0  54 46 44 20 52 31 33 21  2c 7b 50 43 7d 0d 09 e2  |TFD R13!,{PC}...|
00001600  1a 41 44 44 20 52 31 32  2c 52 31 2c 52 31 2c 41  |.ADD R12,R1,R1,A|
00001610  53 4c 20 23 26 30 31 0d  09 ec 1b 41 44 44 20 52  |SL #&01....ADD R|
00001620  31 32 2c 52 34 2c 52 31  32 2c 41 53 4c 20 23 26  |12,R4,R12,ASL #&|
00001630  30 32 0d 09 f6 1e 45 51  55 44 20 a4 66 70 75 28  |02....EQUD .fpu(|
00001640  22 4c 44 46 53 20 46 30  2c 5b 52 31 32 5d 22 29  |"LDFS F0,[R12]")|
00001650  0d 0a 00 21 45 51 55 44  20 a4 66 70 75 28 22 4c  |...!EQUD .fpu("L|
00001660  44 46 53 20 46 31 2c 5b  52 31 32 2c 23 34 5d 22  |DFS F1,[R12,#4]"|
00001670  29 0d 0a 0a 21 45 51 55  44 20 a4 66 70 75 28 22  |)...!EQUD .fpu("|
00001680  4c 44 46 53 20 46 32 2c  5b 52 31 32 2c 23 38 5d  |LDFS F2,[R12,#8]|
00001690  22 29 0d 0a 14 1e 45 51  55 44 20 a4 66 70 75 28  |")....EQUD .fpu(|
000016a0  22 4d 55 46 53 20 46 33  2c 46 30 2c 46 30 22 29  |"MUFS F3,F0,F0")|
000016b0  0d 0a 1e 1e 45 51 55 44  20 a4 66 70 75 28 22 4d  |....EQUD .fpu("M|
000016c0  55 46 53 20 46 34 2c 46  31 2c 46 31 22 29 0d 0a  |UFS F4,F1,F1")..|
000016d0  28 1e 45 51 55 44 20 a4  66 70 75 28 22 4d 55 46  |(.EQUD .fpu("MUF|
000016e0  53 20 46 35 2c 46 32 2c  46 32 22 29 0d 0a 32 1e  |S F5,F2,F2")..2.|
000016f0  45 51 55 44 20 a4 66 70  75 28 22 41 44 46 53 20  |EQUD .fpu("ADFS |
00001700  46 33 2c 46 33 2c 46 34  22 29 0d 0a 3c 1e 45 51  |F3,F3,F4")..<.EQ|
00001710  55 44 20 a4 66 70 75 28  22 41 44 46 53 20 46 33  |UD .fpu("ADFS F3|
00001720  2c 46 33 2c 46 35 22 29  0d 0a 46 1b 45 51 55 44  |,F3,F5")..F.EQUD|
00001730  20 a4 66 70 75 28 22 53  51 54 53 20 46 33 2c 46  | .fpu("SQTS F3,F|
00001740  33 22 29 0d 0a 50 1e 45  51 55 44 20 a4 66 70 75  |3")..P.EQUD .fpu|
00001750  28 22 44 56 46 53 20 46  30 2c 46 30 2c 46 33 22  |("DVFS F0,F0,F3"|
00001760  29 0d 0a 5a 1e 45 51 55  44 20 a4 66 70 75 28 22  |)..Z.EQUD .fpu("|
00001770  44 56 46 53 20 46 31 2c  46 31 2c 46 33 22 29 0d  |DVFS F1,F1,F3").|
00001780  0a 64 1e 45 51 55 44 20  a4 66 70 75 28 22 44 56  |.d.EQUD .fpu("DV|
00001790  46 53 20 46 32 2c 46 32  2c 46 33 22 29 0d 0a 6e  |FS F2,F2,F3")..n|
000017a0  1e 45 51 55 44 20 a4 66  70 75 28 22 53 54 46 53  |.EQUD .fpu("STFS|
000017b0  20 46 30 2c 5b 52 31 32  5d 22 29 0d 0a 78 21 45  | F0,[R12]")..x!E|
000017c0  51 55 44 20 a4 66 70 75  28 22 53 54 46 53 20 46  |QUD .fpu("STFS F|
000017d0  31 2c 5b 52 31 32 2c 23  34 5d 22 29 0d 0a 82 21  |1,[R12,#4]")...!|
000017e0  45 51 55 44 20 a4 66 70  75 28 22 53 54 46 53 20  |EQUD .fpu("STFS |
000017f0  46 32 2c 5b 52 31 32 2c  23 38 5d 22 29 0d 0a 8c  |F2,[R12,#8]")...|
00001800  0d 42 20 6d 6f 64 75 6c  75 73 0d 0a 96 05 3a 0d  |.B modulus....:.|
00001810  0a a0 0c 2e 73 75 6d 70  6f 6c 79 0d 0a aa 13 41  |....sumpoly....A|
00001820  44 44 20 52 31 31 2c 52  35 2c 23 26 30 31 0d 0a  |DD R11,R5,#&01..|
00001830  b4 1d 4c 44 52 20 52 31  31 2c 5b 52 31 2c 52 31  |..LDR R11,[R1,R1|
00001840  31 2c 41 53 4c 20 23 26  30 32 5d 0d 0a be 12 41  |1,ASL #&02]....A|
00001850  44 44 20 52 31 31 2c 52  31 31 2c 52 32 0d 0a c8  |DD R11,R11,R2...|
00001860  14 41 44 44 20 52 31 31  2c 52 31 31 2c 23 26 30  |.ADD R11,R11,#&0|
00001870  34 0d 0a d2 10 4c 44 52  20 52 36 2c 5b 52 31 31  |4....LDR R6,[R11|
00001880  5d 0d 0a dc 1a 41 44 44  20 52 31 32 2c 52 33 2c  |]....ADD R12,R3,|
00001890  52 35 2c 41 53 4c 20 23  26 30 34 0d 0a e6 1e 45  |R5,ASL #&04....E|
000018a0  51 55 44 20 a4 66 70 75  28 22 4c 44 46 53 20 46  |QUD .fpu("LDFS F|
000018b0  30 2c 5b 52 31 32 5d 22  29 0d 0a f0 21 45 51 55  |0,[R12]")...!EQU|
000018c0  44 20 a4 66 70 75 28 22  4c 44 46 53 20 46 31 2c  |D .fpu("LDFS F1,|
000018d0  5b 52 31 32 2c 23 34 5d  22 29 0d 0a fa 21 45 51  |[R12,#4]")...!EQ|
000018e0  55 44 20 a4 66 70 75 28  22 4c 44 46 53 20 46 32  |UD .fpu("LDFS F2|
000018f0  2c 5b 52 31 32 2c 23 38  5d 22 29 0d 0b 04 05 3a  |,[R12,#8]")....:|
00001900  0d 0b 0e 0e 2e 73 75 6d  70 6f 6c 79 6c 70 0d 0b  |.....sumpolylp..|
00001910  18 13 53 55 42 53 20 52  36 2c 52 36 2c 23 26 30  |..SUBS R6,R6,#&0|
00001920  31 0d 0b 22 10 4d 4f 56  4c 45 20 50 43 2c 52 31  |1..".MOVLE PC,R1|
00001930  34 0d 0b 2c 1c 4c 44 52  20 52 37 2c 5b 52 31 31  |4..,.LDR R7,[R11|
00001940  2c 52 36 2c 41 53 4c 20  23 26 30 32 5d 0d 0b 36  |,R6,ASL #&02]..6|
00001950  1a 41 44 44 20 52 31 32  2c 52 37 2c 52 37 2c 41  |.ADD R12,R7,R7,A|
00001960  53 4c 20 23 26 30 31 0d  0b 40 1b 41 44 44 20 52  |SL #&01..@.ADD R|
00001970  31 32 2c 52 34 2c 52 31  32 2c 41 53 4c 20 23 26  |12,R4,R12,ASL #&|
00001980  30 32 0d 0b 4a 1e 45 51  55 44 20 a4 66 70 75 28  |02..J.EQUD .fpu(|
00001990  22 4c 44 46 53 20 46 33  2c 5b 52 31 32 5d 22 29  |"LDFS F3,[R12]")|
000019a0  0d 0b 54 21 45 51 55 44  20 a4 66 70 75 28 22 4c  |..T!EQUD .fpu("L|
000019b0  44 46 53 20 46 34 2c 5b  52 31 32 2c 23 34 5d 22  |DFS F4,[R12,#4]"|
000019c0  29 0d 0b 5e 21 45 51 55  44 20 a4 66 70 75 28 22  |)..^!EQUD .fpu("|
000019d0  4c 44 46 53 20 46 35 2c  5b 52 31 32 2c 23 38 5d  |LDFS F5,[R12,#8]|
000019e0  22 29 0d 0b 68 1e 45 51  55 44 20 a4 66 70 75 28  |")..h.EQUD .fpu(|
000019f0  22 41 44 46 53 20 46 33  2c 46 33 2c 46 30 22 29  |"ADFS F3,F3,F0")|
00001a00  0d 0b 72 1e 45 51 55 44  20 a4 66 70 75 28 22 41  |..r.EQUD .fpu("A|
00001a10  44 46 53 20 46 34 2c 46  34 2c 46 31 22 29 0d 0b  |DFS F4,F4,F1")..|
00001a20  7c 1e 45 51 55 44 20 a4  66 70 75 28 22 41 44 46  ||.EQUD .fpu("ADF|
00001a30  53 20 46 35 2c 46 35 2c  46 32 22 29 0d 0b 86 1e  |S F5,F5,F2")....|
00001a40  45 51 55 44 20 a4 66 70  75 28 22 53 54 46 53 20  |EQUD .fpu("STFS |
00001a50  46 33 2c 5b 52 31 32 5d  22 29 0d 0b 90 21 45 51  |F3,[R12]")...!EQ|
00001a60  55 44 20 a4 66 70 75 28  22 53 54 46 53 20 46 34  |UD .fpu("STFS F4|
00001a70  2c 5b 52 31 32 2c 23 34  5d 22 29 0d 0b 9a 21 45  |,[R12,#4]")...!E|
00001a80  51 55 44 20 a4 66 70 75  28 22 53 54 46 53 20 46  |QUD .fpu("STFS F|
00001a90  35 2c 5b 52 31 32 2c 23  38 5d 22 29 0d 0b a4 0f  |5,[R12,#8]")....|
00001aa0  42 20 73 75 6d 70 6f 6c  79 6c 70 0d 0b ae 05 5d  |B sumpolylp....]|
00001ab0  0d 0b b8 05 e1 0d 0b c2  05 3a 0d 0b cc 0c dd 20  |.........:..... |
00001ac0  f2 70 6c 61 6e 65 0d 0b  d6 0e 5b 20 4f 50 54 20  |.plane....[ OPT |
00001ad0  6f 70 74 25 0d 0b e0 2c  5c 20 63 61 6c 63 75 6c  |opt%...,\ calcul|
00001ae0  61 74 65 20 70 6c 61 6e  65 20 65 71 75 61 74 69  |ate plane equati|
00001af0  6f 6e 73 20 66 6f 72 20  70 6f 6c 79 67 6f 6e 73  |ons for polygons|
00001b00  0d 0b ea 05 3a 0d 0b f4  0a 2e 70 6c 61 6e 65 0d  |....:.....plane.|
00001b10  0b fe 14 53 54 4d 46 44  20 52 31 33 21 2c 7b 52  |...STMFD R13!,{R|
00001b20  31 34 7d 0d 0c 08 10 4c  44 52 20 52 30 2c 69 6e  |14}....LDR R0,in|
00001b30  70 75 74 0d 0c 12 12 4c  44 52 20 52 31 2c 5b 52  |put....LDR R1,[R|
00001b40  30 2c 23 38 5d 0d 0c 1c  13 4c 44 52 20 52 32 2c  |0,#8]....LDR R2,|
00001b50  5b 52 30 2c 23 31 32 5d  0d 0c 26 13 4c 44 52 20  |[R0,#12]..&.LDR |
00001b60  52 33 2c 5b 52 30 2c 23  31 36 5d 0d 0c 30 13 4c  |R3,[R0,#16]..0.L|
00001b70  44 52 20 52 34 2c 5b 52  30 2c 23 32 38 5d 0d 0c  |DR R4,[R0,#28]..|
00001b80  3a 0f 4c 44 52 20 52 35  2c 5b 52 32 5d 0d 0c 44  |:.LDR R5,[R2]..D|
00001b90  05 3a 0d 0c 4e 0d 2e 70  6c 6e 70 6f 6c 6c 70 0d  |.:..N..plnpollp.|
00001ba0  0c 58 13 53 55 42 53 20  52 35 2c 52 35 2c 23 26  |.X.SUBS R5,R5,#&|
00001bb0  30 31 0d 0c 62 15 4c 44  4d 4c 54 46 44 20 52 31  |01..b.LDMLTFD R1|
00001bc0  33 21 2c 7b 50 43 7d 0d  0c 6c 10 42 4c 20 70 6c  |3!,{PC}..l.BL pl|
00001bd0  61 6e 65 63 61 6c 63 0d  0c 76 0e 42 20 70 6c 6e  |anecalc..v.B pln|
00001be0  70 6f 6c 6c 70 0d 0c 80  05 3a 0d 0c 8a 0e 2e 70  |pollp....:.....p|
00001bf0  6c 61 6e 65 63 61 6c 63  0d 0c 94 13 41 44 44 20  |lanecalc....ADD |
00001c00  52 31 30 2c 52 35 2c 23  26 30 31 0d 0c 9e 1d 4c  |R10,R5,#&01....L|
00001c10  44 52 20 52 31 30 2c 5b  52 32 2c 52 31 30 2c 41  |DR R10,[R2,R10,A|
00001c20  53 4c 20 23 26 30 32 5d  0d 0c a8 12 41 44 44 20  |SL #&02]....ADD |
00001c30  52 31 30 2c 52 31 30 2c  52 33 0d 0c b2 14 41 44  |R10,R10,R3....AD|
00001c40  44 20 52 31 30 2c 52 31  30 2c 23 26 30 34 0d 0c  |D R10,R10,#&04..|
00001c50  bc 10 4c 44 52 20 52 36  2c 5b 52 31 30 5d 0d 0c  |..LDR R6,[R10]..|
00001c60  c6 1d 45 51 55 44 20 a4  66 70 75 28 22 4d 56 46  |..EQUD .fpu("MVF|
00001c70  53 20 46 30 2c 23 30 2e  30 22 29 0d 0c d0 1d 45  |S F0,#0.0")....E|
00001c80  51 55 44 20 a4 66 70 75  28 22 4d 56 46 53 20 46  |QUD .fpu("MVFS F|
00001c90  31 2c 23 30 2e 30 22 29  0d 0c da 1d 45 51 55 44  |1,#0.0")....EQUD|
00001ca0  20 a4 66 70 75 28 22 4d  56 46 53 20 46 32 2c 23  | .fpu("MVFS F2,#|
00001cb0  30 2e 30 22 29 0d 0c e4  05 3a 0d 0c ee 0c 2e 70  |0.0")....:.....p|
00001cc0  6c 61 6e 65 6c 70 0d 0c  f8 1c 4c 44 52 20 52 37  |lanelp....LDR R7|
00001cd0  2c 5b 52 31 30 2c 52 36  2c 41 53 4c 20 23 26 30  |,[R10,R6,ASL #&0|
00001ce0  32 5d 0d 0d 02 13 53 55  42 53 20 52 36 2c 52 36  |2]....SUBS R6,R6|
00001cf0  2c 23 26 30 31 0d 0d 0c  12 42 4c 45 20 70 6c 61  |,#&01....BLE pla|
00001d00  6e 65 73 74 6f 72 65 0d  0d 16 1c 4c 44 52 20 52  |nestore....LDR R|
00001d10  38 2c 5b 52 31 30 2c 52  36 2c 41 53 4c 20 23 26  |8,[R10,R6,ASL #&|
00001d20  30 32 5d 0d 0d 20 1a 41  44 44 20 52 31 31 2c 52  |02].. .ADD R11,R|
00001d30  37 2c 52 37 2c 41 53 4c  20 23 26 30 31 0d 0d 2a  |7,R7,ASL #&01..*|
00001d40  1b 41 44 44 20 52 31 31  2c 52 31 2c 52 31 31 2c  |.ADD R11,R1,R11,|
00001d50  41 53 4c 20 23 26 30 32  0d 0d 34 1a 41 44 44 20  |ASL #&02..4.ADD |
00001d60  52 31 32 2c 52 38 2c 52  38 2c 41 53 4c 20 23 26  |R12,R8,R8,ASL #&|
00001d70  30 31 0d 0d 3e 1b 41 44  44 20 52 31 32 2c 52 31  |01..>.ADD R12,R1|
00001d80  2c 52 31 32 2c 41 53 4c  20 23 26 30 32 0d 0d 48  |,R12,ASL #&02..H|
00001d90  22 45 51 55 44 20 a4 66  70 75 28 22 4c 44 46 53  |"EQUD .fpu("LDFS|
00001da0  20 46 34 2c 5b 52 31 31  2c 23 30 34 5d 22 29 0d  | F4,[R11,#04]").|
00001db0  0d 52 22 45 51 55 44 20  a4 66 70 75 28 22 4c 44  |.R"EQUD .fpu("LD|
00001dc0  46 53 20 46 35 2c 5b 52  31 32 2c 23 30 34 5d 22  |FS F5,[R12,#04]"|
00001dd0  29 0d 0d 5c 22 45 51 55  44 20 a4 66 70 75 28 22  |)..\"EQUD .fpu("|
00001de0  4c 44 46 53 20 46 36 2c  5b 52 31 31 2c 23 30 38  |LDFS F6,[R11,#08|
00001df0  5d 22 29 0d 0d 66 22 45  51 55 44 20 a4 66 70 75  |]")..f"EQUD .fpu|
00001e00  28 22 4c 44 46 53 20 46  37 2c 5b 52 31 32 2c 23  |("LDFS F7,[R12,#|
00001e10  30 38 5d 22 29 0d 0d 70  1e 45 51 55 44 20 a4 66  |08]")..p.EQUD .f|
00001e20  70 75 28 22 53 55 46 53  20 46 34 2c 46 35 2c 46  |pu("SUFS F4,F5,F|
00001e30  34 22 29 0d 0d 7a 1e 45  51 55 44 20 a4 66 70 75  |4")..z.EQUD .fpu|
00001e40  28 22 41 44 46 53 20 46  35 2c 46 36 2c 46 37 22  |("ADFS F5,F6,F7"|
00001e50  29 0d 0d 84 1e 45 51 55  44 20 a4 66 70 75 28 22  |)....EQUD .fpu("|
00001e60  4d 55 46 53 20 46 34 2c  46 34 2c 46 35 22 29 0d  |MUFS F4,F4,F5").|
00001e70  0d 8e 1e 45 51 55 44 20  a4 66 70 75 28 22 41 44  |...EQUD .fpu("AD|
00001e80  46 53 20 46 32 2c 46 32  2c 46 34 22 29 0d 0d 98  |FS F2,F2,F4")...|
00001e90  22 45 51 55 44 20 a4 66  70 75 28 22 4c 44 46 53  |"EQUD .fpu("LDFS|
00001ea0  20 46 34 2c 5b 52 31 31  2c 23 31 32 5d 22 29 0d  | F4,[R11,#12]").|
00001eb0  0d a2 22 45 51 55 44 20  a4 66 70 75 28 22 4c 44  |.."EQUD .fpu("LD|
00001ec0  46 53 20 46 35 2c 5b 52  31 32 2c 23 31 32 5d 22  |FS F5,[R12,#12]"|
00001ed0  29 0d 0d ac 1e 45 51 55  44 20 a4 66 70 75 28 22  |)....EQUD .fpu("|
00001ee0  53 55 46 53 20 46 36 2c  46 37 2c 46 36 22 29 0d  |SUFS F6,F7,F6").|
00001ef0  0d b6 1e 45 51 55 44 20  a4 66 70 75 28 22 41 44  |...EQUD .fpu("AD|
00001f00  46 53 20 46 37 2c 46 35  2c 46 34 22 29 0d 0d c0  |FS F7,F5,F4")...|
00001f10  1e 45 51 55 44 20 a4 66  70 75 28 22 4d 55 46 53  |.EQUD .fpu("MUFS|
00001f20  20 46 36 2c 46 36 2c 46  37 22 29 0d 0d ca 1e 45  | F6,F6,F7")....E|
00001f30  51 55 44 20 a4 66 70 75  28 22 41 44 46 53 20 46  |QUD .fpu("ADFS F|
00001f40  30 2c 46 30 2c 46 36 22  29 0d 0d d4 21 45 51 55  |0,F0,F6")...!EQU|
00001f50  44 20 a4 66 70 75 28 22  4c 44 46 53 20 46 36 2c  |D .fpu("LDFS F6,|
00001f60  5b 52 31 31 2c 23 34 5d  22 29 0d 0d de 21 45 51  |[R11,#4]")...!EQ|
00001f70  55 44 20 a4 66 70 75 28  22 4c 44 46 53 20 46 37  |UD .fpu("LDFS F7|
00001f80  2c 5b 52 31 32 2c 23 34  5d 22 29 0d 0d e8 1e 45  |,[R12,#4]")....E|
00001f90  51 55 44 20 a4 66 70 75  28 22 53 55 46 53 20 46  |QUD .fpu("SUFS F|
00001fa0  34 2c 46 35 2c 46 34 22  29 0d 0d f2 1e 45 51 55  |4,F5,F4")....EQU|
00001fb0  44 20 a4 66 70 75 28 22  41 44 46 53 20 46 35 2c  |D .fpu("ADFS F5,|
00001fc0  46 37 2c 46 36 22 29 0d  0d fc 1e 45 51 55 44 20  |F7,F6")....EQUD |
00001fd0  a4 66 70 75 28 22 4d 55  46 53 20 46 34 2c 46 34  |.fpu("MUFS F4,F4|
00001fe0  2c 46 35 22 29 0d 0e 06  1e 45 51 55 44 20 a4 66  |,F5")....EQUD .f|
00001ff0  70 75 28 22 41 44 46 53  20 46 31 2c 46 31 2c 46  |pu("ADFS F1,F1,F|
00002000  34 22 29 0d 0e 10 0d 42  20 70 6c 61 6e 65 6c 70  |4")....B planelp|
00002010  0d 0e 1a 05 3a 0d 0e 24  0f 2e 70 6c 61 6e 65 73  |....:..$..planes|
00002020  74 6f 72 65 0d 0e 2e 1a  41 44 44 20 52 31 31 2c  |tore....ADD R11,|
00002030  52 37 2c 52 37 2c 41 53  4c 20 23 26 30 31 0d 0e  |R7,R7,ASL #&01..|
00002040  38 1b 41 44 44 20 52 31  31 2c 52 31 2c 52 31 31  |8.ADD R11,R1,R11|
00002050  2c 41 53 4c 20 23 26 30  32 0d 0e 42 21 45 51 55  |,ASL #&02..B!EQU|
00002060  44 20 a4 66 70 75 28 22  4c 44 46 53 20 46 34 2c  |D .fpu("LDFS F4,|
00002070  5b 52 31 31 2c 23 34 5d  22 29 0d 0e 4c 21 45 51  |[R11,#4]")..L!EQ|
00002080  55 44 20 a4 66 70 75 28  22 4c 44 46 53 20 46 35  |UD .fpu("LDFS F5|
00002090  2c 5b 52 31 31 2c 23 38  5d 22 29 0d 0e 56 22 45  |,[R11,#8]")..V"E|
000020a0  51 55 44 20 a4 66 70 75  28 22 4c 44 46 53 20 46  |QUD .fpu("LDFS F|
000020b0  36 2c 5b 52 31 31 2c 23  31 32 5d 22 29 0d 0e 60  |6,[R11,#12]")..`|
000020c0  1e 45 51 55 44 20 a4 66  70 75 28 22 4d 55 46 53  |.EQUD .fpu("MUFS|
000020d0  20 46 34 2c 46 34 2c 46  30 22 29 0d 0e 6a 1e 45  | F4,F4,F0")..j.E|
000020e0  51 55 44 20 a4 66 70 75  28 22 4d 55 46 53 20 46  |QUD .fpu("MUFS F|
000020f0  35 2c 46 35 2c 46 31 22  29 0d 0e 74 1e 45 51 55  |5,F5,F1")..t.EQU|
00002100  44 20 a4 66 70 75 28 22  4d 55 46 53 20 46 36 2c  |D .fpu("MUFS F6,|
00002110  46 36 2c 46 32 22 29 0d  0e 7e 1e 45 51 55 44 20  |F6,F2")..~.EQUD |
00002120  a4 66 70 75 28 22 41 44  46 53 20 46 34 2c 46 34  |.fpu("ADFS F4,F4|
00002130  2c 46 35 22 29 0d 0e 88  1e 45 51 55 44 20 a4 66  |,F5")....EQUD .f|
00002140  70 75 28 22 41 44 46 53  20 46 34 2c 46 34 2c 46  |pu("ADFS F4,F4,F|
00002150  36 22 29 0d 0e 92 1b 45  51 55 44 20 a4 66 70 75  |6")....EQUD .fpu|
00002160  28 22 4d 4e 46 53 20 46  34 2c 46 34 22 29 0d 0e  |("MNFS F4,F4")..|
00002170  9c 1a 41 44 44 20 52 31  32 2c 52 34 2c 52 35 2c  |..ADD R12,R4,R5,|
00002180  41 53 4c 20 23 26 30 34  0d 0e a6 1e 45 51 55 44  |ASL #&04....EQUD|
00002190  20 a4 66 70 75 28 22 53  54 46 53 20 46 30 2c 5b  | .fpu("STFS F0,[|
000021a0  52 31 32 5d 22 29 0d 0e  b0 22 45 51 55 44 20 a4  |R12]")..."EQUD .|
000021b0  66 70 75 28 22 53 54 46  53 20 46 31 2c 5b 52 31  |fpu("STFS F1,[R1|
000021c0  32 2c 23 30 34 5d 22 29  0d 0e ba 22 45 51 55 44  |2,#04]")..."EQUD|
000021d0  20 a4 66 70 75 28 22 53  54 46 53 20 46 32 2c 5b  | .fpu("STFS F2,[|
000021e0  52 31 32 2c 23 30 38 5d  22 29 0d 0e c4 22 45 51  |R12,#08]")..."EQ|
000021f0  55 44 20 a4 66 70 75 28  22 53 54 46 53 20 46 34  |UD .fpu("STFS F4|
00002200  2c 5b 52 31 32 2c 23 31  32 5d 22 29 0d 0e ce 0e  |,[R12,#12]")....|
00002210  4d 4f 56 20 50 43 2c 52  31 34 0d 0e d8 05 5d 0d  |MOV PC,R14....].|
00002220  0e e2 05 e1 0d 0e ec 05  3a 0d 0e f6 0f dd 20 f2  |........:..... .|
00002230  73 63 61 6e 6c 69 6e 65  0d 0f 00 0e 5b 20 4f 50  |scanline....[ OP|
00002240  54 20 6f 70 74 25 0d 0f  0a 24 5c 20 70 72 6f 64  |T opt%...$\ prod|
00002250  75 63 65 20 6f 72 64 65  72 65 64 20 65 64 67 65  |uce ordered edge|
00002260  20 70 61 69 72 20 6c 69  73 74 0d 0f 14 05 3a 0d  | pair list....:.|
00002270  0f 1e 0b 2e 69 6e 73 69  64 65 0d 0f 28 1a 41 44  |....inside..(.AD|
00002280  44 20 52 31 32 2c 52 35  2c 52 37 2c 41 53 4c 20  |D R12,R5,R7,ASL |
00002290  23 26 30 33 0d 0f 32 1e  45 51 55 44 20 a4 66 70  |#&03..2.EQUD .fp|
000022a0  75 28 22 4c 44 46 53 20  46 32 2c 5b 52 31 32 5d  |u("LDFS F2,[R12]|
000022b0  22 29 0d 0f 3c 1b 45 51  55 44 20 a4 66 70 75 28  |")..<.EQUD .fpu(|
000022c0  22 43 4d 45 53 20 46 31  2c 46 32 22 29 0d 0f 46  |"CMES F1,F2")..F|
000022d0  10 4d 4f 56 4c 54 20 50  43 2c 52 31 34 0d 0f 50  |.MOVLT PC,R14..P|
000022e0  21 45 51 55 44 20 a4 66  70 75 28 22 4c 44 46 53  |!EQUD .fpu("LDFS|
000022f0  20 46 32 2c 5b 52 31 32  2c 23 34 5d 22 29 0d 0f  | F2,[R12,#4]")..|
00002300  5a 1b 45 51 55 44 20 a4  66 70 75 28 22 43 4d 45  |Z.EQUD .fpu("CME|
00002310  53 20 46 31 2c 46 32 22  29 0d 0f 64 10 4d 4f 56  |S F1,F2")..d.MOV|
00002320  47 54 20 50 43 2c 52 31  34 0d 0f 6e 13 41 44 44  |GT PC,R14..n.ADD|
00002330  20 52 31 31 2c 52 37 2c  23 26 30 31 0d 0f 78 1d  | R11,R7,#&01..x.|
00002340  4c 44 52 20 52 31 31 2c  5b 52 32 2c 52 31 31 2c  |LDR R11,[R2,R11,|
00002350  41 53 4c 20 23 26 30 32  5d 0d 0f 82 12 41 44 44  |ASL #&02]....ADD|
00002360  20 52 31 31 2c 52 31 31  2c 52 33 0d 0f 8c 14 41  | R11,R11,R3....A|
00002370  44 44 20 52 31 31 2c 52  31 31 2c 23 26 30 34 0d  |DD R11,R11,#&04.|
00002380  0f 96 10 4c 44 52 20 52  38 2c 5b 52 31 31 5d 0d  |...LDR R8,[R11].|
00002390  0f a0 05 3a 0d 0f aa 0b  2e 65 64 67 65 6c 70 0d  |...:.....edgelp.|
000023a0  0f b4 1c 4c 44 52 20 52  39 2c 5b 52 31 31 2c 52  |...LDR R9,[R11,R|
000023b0  38 2c 41 53 4c 20 23 26  30 32 5d 0d 0f be 13 53  |8,ASL #&02]....S|
000023c0  55 42 53 20 52 38 2c 52  38 2c 23 26 30 31 0d 0f  |UBS R8,R8,#&01..|
000023d0  c8 10 4d 4f 56 4c 45 20  50 43 2c 52 31 34 0d 0f  |..MOVLE PC,R14..|
000023e0  d2 1a 41 44 44 20 52 31  32 2c 52 39 2c 52 39 2c  |..ADD R12,R9,R9,|
000023f0  41 53 4c 20 23 26 30 31  0d 0f dc 1b 41 44 44 20  |ASL #&01....ADD |
00002400  52 31 32 2c 52 31 2c 52  31 32 2c 41 53 4c 20 23  |R12,R1,R12,ASL #|
00002410  26 30 32 0d 0f e6 22 45  51 55 44 20 a4 66 70 75  |&02..."EQUD .fpu|
00002420  28 22 4c 44 46 53 20 46  32 2c 5b 52 31 32 2c 23  |("LDFS F2,[R12,#|
00002430  30 38 5d 22 29 0d 0f f0  1d 4c 44 52 20 52 31 30  |08]")....LDR R10|
00002440  2c 5b 52 31 31 2c 52 38  2c 41 53 4c 20 23 26 30  |,[R11,R8,ASL #&0|
00002450  32 5d 0d 0f fa 1c 41 44  44 20 52 31 32 2c 52 31  |2]....ADD R12,R1|
00002460  30 2c 52 31 30 2c 41 53  4c 20 23 26 30 31 0d 10  |0,R10,ASL #&01..|
00002470  04 1b 41 44 44 20 52 31  32 2c 52 31 2c 52 31 32  |..ADD R12,R1,R12|
00002480  2c 41 53 4c 20 23 26 30  32 0d 10 0e 22 45 51 55  |,ASL #&02..."EQU|
00002490  44 20 a4 66 70 75 28 22  4c 44 46 53 20 46 33 2c  |D .fpu("LDFS F3,|
000024a0  5b 52 31 32 2c 23 30 38  5d 22 29 0d 10 18 05 3a  |[R12,#08]")....:|
000024b0  0d 10 22 1b 45 51 55 44  20 a4 66 70 75 28 22 4d  |..".EQUD .fpu("M|
000024c0  56 46 53 20 46 34 2c 46  32 22 29 0d 10 2c 1b 45  |VFS F4,F2")..,.E|
000024d0  51 55 44 20 a4 66 70 75  28 22 4d 56 46 53 20 46  |QUD .fpu("MVFS F|
000024e0  35 2c 46 33 22 29 0d 10  36 1b 45 51 55 44 20 a4  |5,F3")..6.EQUD .|
000024f0  66 70 75 28 22 43 4d 45  53 20 46 32 2c 46 33 22  |fpu("CMES F2,F3"|
00002500  29 0d 10 40 1d 45 51 55  44 20 a4 66 70 75 28 22  |)..@.EQUD .fpu("|
00002510  4d 56 46 47 54 53 20 46  35 2c 46 32 22 29 0d 10  |MVFGTS F5,F2")..|
00002520  4a 1d 45 51 55 44 20 a4  66 70 75 28 22 4d 56 46  |J.EQUD .fpu("MVF|
00002530  47 54 53 20 46 34 2c 46  33 22 29 0d 10 54 1b 45  |GTS F4,F3")..T.E|
00002540  51 55 44 20 a4 66 70 75  28 22 43 4d 45 53 20 46  |QUD .fpu("CMES F|
00002550  31 2c 46 35 22 29 0d 10  5e 0e 42 47 54 20 65 64  |1,F5")..^.BGT ed|
00002560  67 65 6c 70 0d 10 68 1b  45 51 55 44 20 a4 66 70  |gelp..h.EQUD .fp|
00002570  75 28 22 43 4d 45 53 20  46 31 2c 46 34 22 29 0d  |u("CMES F1,F4").|
00002580  10 72 0e 42 4c 45 20 65  64 67 65 6c 70 0d 10 7c  |.r.BLE edgelp..||
00002590  05 3a 0d 10 86 1e 45 51  55 44 20 a4 66 70 75 28  |.:....EQUD .fpu(|
000025a0  22 53 55 46 53 20 46 35  2c 46 33 2c 46 32 22 29  |"SUFS F5,F3,F2")|
000025b0  0d 10 90 1a 41 44 44 20  52 31 32 2c 52 39 2c 52  |....ADD R12,R9,R|
000025c0  39 2c 41 53 4c 20 23 26  30 31 0d 10 9a 1b 41 44  |9,ASL #&01....AD|
000025d0  44 20 52 31 32 2c 52 31  2c 52 31 32 2c 41 53 4c  |D R12,R1,R12,ASL|
000025e0  20 23 26 30 32 0d 10 a4  22 45 51 55 44 20 a4 66  | #&02..."EQUD .f|
000025f0  70 75 28 22 4c 44 46 53  20 46 37 2c 5b 52 31 32  |pu("LDFS F7,[R12|
00002600  2c 23 30 34 5d 22 29 0d  10 ae 1c 41 44 44 20 52  |,#04]")....ADD R|
00002610  31 32 2c 52 31 30 2c 52  31 30 2c 41 53 4c 20 23  |12,R10,R10,ASL #|
00002620  26 30 31 0d 10 b8 1b 41  44 44 20 52 31 32 2c 52  |&01....ADD R12,R|
00002630  31 2c 52 31 32 2c 41 53  4c 20 23 26 30 32 0d 10  |1,R12,ASL #&02..|
00002640  c2 22 45 51 55 44 20 a4  66 70 75 28 22 4c 44 46  |."EQUD .fpu("LDF|
00002650  53 20 46 33 2c 5b 52 31  32 2c 23 30 34 5d 22 29  |S F3,[R12,#04]")|
00002660  0d 10 cc 1e 45 51 55 44  20 a4 66 70 75 28 22 53  |....EQUD .fpu("S|
00002670  55 46 53 20 46 34 2c 46  33 2c 46 37 22 29 0d 10  |UFS F4,F3,F7")..|
00002680  d6 1e 45 51 55 44 20 a4  66 70 75 28 22 53 55 46  |..EQUD .fpu("SUF|
00002690  53 20 46 32 2c 46 31 2c  46 32 22 29 0d 10 e0 1e  |S F2,F1,F2")....|
000026a0  45 51 55 44 20 a4 66 70  75 28 22 44 56 46 53 20  |EQUD .fpu("DVFS |
000026b0  46 35 2c 46 32 2c 46 35  22 29 0d 10 ea 1e 45 51  |F5,F2,F5")....EQ|
000026c0  55 44 20 a4 66 70 75 28  22 4d 55 46 53 20 46 34  |UD .fpu("MUFS F4|
000026d0  2c 46 35 2c 46 34 22 29  0d 10 f4 1e 45 51 55 44  |,F5,F4")....EQUD|
000026e0  20 a4 66 70 75 28 22 41  44 46 53 20 46 34 2c 46  | .fpu("ADFS F4,F|
000026f0  34 2c 46 37 22 29 0d 10  fe 05 3a 0d 11 08 1a 41  |4,F7")....:....A|
00002700  44 44 20 52 31 32 2c 52  34 2c 52 36 2c 41 53 4c  |DD R12,R4,R6,ASL|
00002710  20 23 26 30 33 0d 11 12  1e 45 51 55 44 20 a4 66  | #&03....EQUD .f|
00002720  70 75 28 22 53 54 46 53  20 46 34 2c 5b 52 31 32  |pu("STFS F4,[R12|
00002730  5d 22 29 0d 11 1c 16 4d  4f 56 20 52 39 2c 52 37  |]")....MOV R9,R7|
00002740  2c 41 53 4c 20 23 26 31  30 0d 11 26 0f 84 52 20  |,ASL #&10..&..R |
00002750  52 39 2c 52 39 2c 52 38  0d 11 30 15 53 54 52 20  |R9,R9,R8..0.STR |
00002760  52 39 2c 5b 52 31 32 2c  23 26 30 34 5d 0d 11 3a  |R9,[R12,#&04]..:|
00002770  12 41 44 44 20 52 36 2c  52 36 2c 23 26 30 31 0d  |.ADD R6,R6,#&01.|
00002780  11 44 0c 42 20 65 64 67  65 6c 70 0d 11 4e 05 3a  |.D.B edgelp..N.:|
00002790  0d 11 58 0d 2e 73 63 61  6e 6c 69 6e 65 0d 11 62  |..X..scanline..b|
000027a0  14 53 54 4d 46 44 20 52  31 33 21 2c 7b 52 31 34  |.STMFD R13!,{R14|
000027b0  7d 0d 11 6c 10 4c 44 52  20 52 30 2c 69 6e 70 75  |}..l.LDR R0,inpu|
000027c0  74 0d 11 76 20 45 51 55  44 20 a4 66 70 75 28 22  |t..v EQUD .fpu("|
000027d0  4c 44 46 53 20 46 31 2c  5b 52 30 2c 23 34 5d 22  |LDFS F1,[R0,#4]"|
000027e0  29 0d 11 80 12 4c 44 52  20 52 31 2c 5b 52 30 2c  |)....LDR R1,[R0,|
000027f0  23 38 5d 0d 11 8a 13 4c  44 52 20 52 32 2c 5b 52  |#8]....LDR R2,[R|
00002800  30 2c 23 31 32 5d 0d 11  94 13 4c 44 52 20 52 33  |0,#12]....LDR R3|
00002810  2c 5b 52 30 2c 23 31 36  5d 0d 11 9e 13 4c 44 52  |,[R0,#16]....LDR|
00002820  20 52 34 2c 5b 52 30 2c  23 32 30 5d 0d 11 a8 12  | R4,[R0,#20]....|
00002830  41 44 44 20 52 34 2c 52  34 2c 23 26 30 34 0d 11  |ADD R4,R4,#&04..|
00002840  b2 13 4c 44 52 20 52 35  2c 5b 52 30 2c 23 33 36  |..LDR R5,[R0,#36|
00002850  5d 0d 11 bc 0f 4d 4f 56  20 52 36 2c 23 26 30 30  |]....MOV R6,#&00|
00002860  0d 11 c6 0f 4c 44 52 20  52 37 2c 5b 52 32 5d 0d  |....LDR R7,[R2].|
00002870  11 d0 05 3a 0d 11 da 0b  2e 73 63 61 6e 6c 70 0d  |...:.....scanlp.|
00002880  11 e4 13 53 55 42 53 20  52 37 2c 52 37 2c 23 26  |...SUBS R7,R7,#&|
00002890  30 31 0d 11 ee 12 42 4c  54 20 6f 72 64 65 72 74  |01....BLT ordert|
000028a0  61 62 6c 65 0d 11 f8 0d  42 4c 20 69 6e 73 69 64  |able....BL insid|
000028b0  65 0d 12 02 0c 42 20 73  63 61 6e 6c 70 0d 12 0c  |e....B scanlp...|
000028c0  05 3a 0d 12 16 0f 2e 6f  72 64 65 72 74 61 62 6c  |.:.....ordertabl|
000028d0  65 0d 12 20 13 53 54 52  20 52 36 2c 5b 52 34 2c  |e.. .STR R6,[R4,|
000028e0  23 2d 34 5d 0d 12 2a 0f  43 4d 50 20 52 36 2c 23  |#-4]..*.CMP R6,#|
000028f0  26 30 32 0d 12 34 15 4c  44 4d 4c 54 46 44 20 52  |&02..4.LDMLTFD R|
00002900  31 33 21 2c 7b 50 43 7d  0d 12 3e 12 80 53 20 52  |13!,{PC}..>..S R|
00002910  31 32 2c 52 36 2c 23 26  30 31 0d 12 48 14 41 44  |12,R6,#&01..H.AD|
00002920  44 4e 45 20 52 36 2c 52  36 2c 23 26 30 31 0d 12  |DNE R6,R6,#&01..|
00002930  52 20 45 51 55 44 20 a4  66 70 75 28 22 4d 56 46  |R EQUD .fpu("MVF|
00002940  4e 45 53 20 46 37 2c 23  31 30 2e 30 22 29 0d 12  |NES F7,#10.0")..|
00002950  5c 23 45 51 55 44 20 a4  66 70 75 28 22 50 4f 57  |\#EQUD .fpu("POW|
00002960  4e 45 53 20 46 37 2c 46  37 2c 23 31 30 2e 30 22  |NES F7,F7,#10.0"|
00002970  29 0d 12 66 1d 45 51 55  44 20 a4 66 70 75 28 22  |)..f.EQUD .fpu("|
00002980  4d 4e 46 4e 45 53 20 46  37 2c 46 37 22 29 0d 12  |MNFNES F7,F7")..|
00002990  70 1c 41 44 44 4e 45 20  52 31 32 2c 52 34 2c 52  |p.ADDNE R12,R4,R|
000029a0  36 2c 41 53 4c 20 23 26  30 33 0d 12 7a 23 45 51  |6,ASL #&03..z#EQ|
000029b0  55 44 20 a4 66 70 75 28  22 53 54 46 4e 45 53 20  |UD .fpu("STFNES |
000029c0  46 37 2c 5b 52 31 32 2c  23 30 5d 22 29 0d 12 84  |F7,[R12,#0]")...|
000029d0  0d 4d 4f 56 20 52 30 2c  52 34 0d 12 8e 0d 4d 4f  |.MOV R0,R4....MO|
000029e0  56 20 52 31 2c 52 36 0d  12 98 0b 42 4c 20 73 6f  |V R1,R6....BL so|
000029f0  72 74 0d 12 a2 13 4c 44  4d 46 44 20 52 31 33 21  |rt....LDMFD R13!|
00002a00  2c 7b 50 43 7d 0d 12 ac  05 3a 0d 12 b6 0b 2e 70  |,{PC}....:.....p|
00002a10  69 6c 65 75 70 0d 12 c0  16 4d 4f 56 20 52 35 2c  |ileup....MOV R5,|
00002a20  52 33 2c 41 53 4c 20 23  26 30 31 0d 12 ca 0d 43  |R3,ASL #&01....C|
00002a30  4d 50 20 52 35 2c 52 34  0d 12 d4 10 4d 4f 56 47  |MP R5,R4....MOVG|
00002a40  54 20 50 43 2c 52 31 34  0d 12 de 0d 43 4d 50 20  |T PC,R14....CMP |
00002a50  52 35 2c 52 34 0d 12 e8  0d 42 45 51 20 65 71 75  |R5,R4....BEQ equ|
00002a60  61 6c 0d 12 f2 0d 4d 4f  56 20 52 36 2c 52 35 0d  |al....MOV R6,R5.|
00002a70  12 fc 12 41 44 44 20 52  37 2c 52 35 2c 23 26 30  |...ADD R7,R5,#&0|
00002a80  31 0d 13 06 19 41 44 44  20 52 36 2c 52 30 2c 52  |1....ADD R6,R0,R|
00002a90  36 2c 41 53 4c 20 23 26  30 33 0d 13 10 19 41 44  |6,ASL #&03....AD|
00002aa0  44 20 52 37 2c 52 30 2c  52 37 2c 41 53 4c 20 23  |D R7,R0,R7,ASL #|
00002ab0  26 30 33 0d 13 1a 1d 45  51 55 44 20 a4 66 70 75  |&03....EQUD .fpu|
00002ac0  28 22 4c 44 46 53 20 46  33 2c 5b 52 36 5d 22 29  |("LDFS F3,[R6]")|
00002ad0  0d 13 24 1d 45 51 55 44  20 a4 66 70 75 28 22 4c  |..$.EQUD .fpu("L|
00002ae0  44 46 53 20 46 32 2c 5b  52 37 5d 22 29 0d 13 2e  |DFS F2,[R7]")...|
00002af0  1b 45 51 55 44 20 a4 66  70 75 28 22 43 4d 45 53  |.EQUD .fpu("CMES|
00002b00  20 46 33 2c 46 32 22 29  0d 13 38 14 41 44 44 47  | F3,F2")..8.ADDG|
00002b10  54 20 52 35 2c 52 35 2c  23 26 30 31 0d 13 42 19  |T R5,R5,#&01..B.|
00002b20  41 44 44 20 52 36 2c 52  30 2c 52 33 2c 41 53 4c  |ADD R6,R0,R3,ASL|
00002b30  20 23 26 30 33 0d 13 4c  19 41 44 44 20 52 37 2c  | #&03..L.ADD R7,|
00002b40  52 30 2c 52 35 2c 41 53  4c 20 23 26 30 33 0d 13  |R0,R5,ASL #&03..|
00002b50  56 1d 45 51 55 44 20 a4  66 70 75 28 22 4c 44 46  |V.EQUD .fpu("LDF|
00002b60  53 20 46 33 2c 5b 52 36  5d 22 29 0d 13 60 1d 45  |S F3,[R6]")..`.E|
00002b70  51 55 44 20 a4 66 70 75  28 22 4c 44 46 53 20 46  |QUD .fpu("LDFS F|
00002b80  32 2c 5b 52 37 5d 22 29  0d 13 6a 1b 45 51 55 44  |2,[R7]")..j.EQUD|
00002b90  20 a4 66 70 75 28 22 43  4d 45 53 20 46 33 2c 46  | .fpu("CMES F3,F|
00002ba0  32 22 29 0d 13 74 10 4d  4f 56 4c 45 20 50 43 2c  |2")..t.MOVLE PC,|
00002bb0  52 31 34 0d 13 7e 19 41  44 44 20 52 36 2c 52 30  |R14..~.ADD R6,R0|
00002bc0  2c 52 33 2c 41 53 4c 20  23 26 30 33 0d 13 88 19  |,R3,ASL #&03....|
00002bd0  41 44 44 20 52 37 2c 52  30 2c 52 35 2c 41 53 4c  |ADD R7,R0,R5,ASL|
00002be0  20 23 26 30 33 0d 13 92  15 4c 44 4d 49 41 20 52  | #&03....LDMIA R|
00002bf0  36 2c 7b 52 39 2d 52 31  30 7d 0d 13 9c 16 4c 44  |6,{R9-R10}....LD|
00002c00  4d 49 41 20 52 37 2c 7b  52 31 31 2d 52 31 32 7d  |MIA R7,{R11-R12}|
00002c10  0d 13 a6 15 53 54 4d 49  41 20 52 37 2c 7b 52 39  |....STMIA R7,{R9|
00002c20  2d 52 31 30 7d 0d 13 b0  16 53 54 4d 49 41 20 52  |-R10}....STMIA R|
00002c30  36 2c 7b 52 31 31 2d 52  31 32 7d 0d 13 ba 0d 4d  |6,{R11-R12}....M|
00002c40  4f 56 20 52 33 2c 52 35  0d 13 c4 0c 42 20 70 69  |OV R3,R5....B pi|
00002c50  6c 65 75 70 0d 13 ce 05  3a 0d 13 d8 0a 2e 65 71  |leup....:.....eq|
00002c60  75 61 6c 0d 13 e2 19 41  44 44 20 52 36 2c 52 30  |ual....ADD R6,R0|
00002c70  2c 52 33 2c 41 53 4c 20  23 26 30 33 0d 13 ec 19  |,R3,ASL #&03....|
00002c80  41 44 44 20 52 37 2c 52  30 2c 52 34 2c 41 53 4c  |ADD R7,R0,R4,ASL|
00002c90  20 23 26 30 33 0d 13 f6  1d 45 51 55 44 20 a4 66  | #&03....EQUD .f|
00002ca0  70 75 28 22 4c 44 46 53  20 46 33 2c 5b 52 36 5d  |pu("LDFS F3,[R6]|
00002cb0  22 29 0d 14 00 1d 45 51  55 44 20 a4 66 70 75 28  |")....EQUD .fpu(|
00002cc0  22 4c 44 46 53 20 46 33  2c 5b 52 37 5d 22 29 0d  |"LDFS F3,[R7]").|
00002cd0  14 0a 1b 45 51 55 44 20  a4 66 70 75 28 22 43 4d  |...EQUD .fpu("CM|
00002ce0  45 53 20 46 33 2c 46 32  22 29 0d 14 14 10 4d 4f  |ES F3,F2")....MO|
00002cf0  56 4c 54 20 50 43 2c 52  31 34 0d 14 1e 19 41 44  |VLT PC,R14....AD|
00002d00  44 20 52 36 2c 52 30 2c  52 33 2c 41 53 4c 20 23  |D R6,R0,R3,ASL #|
00002d10  26 30 33 0d 14 28 19 41  44 44 20 52 37 2c 52 30  |&03..(.ADD R7,R0|
00002d20  2c 52 34 2c 41 53 4c 20  23 26 30 33 0d 14 32 15  |,R4,ASL #&03..2.|
00002d30  4c 44 4d 49 41 20 52 36  2c 7b 52 39 2d 52 31 30  |LDMIA R6,{R9-R10|
00002d40  7d 0d 14 3c 16 4c 44 4d  49 41 20 52 37 2c 7b 52  |}..<.LDMIA R7,{R|
00002d50  31 31 2d 52 31 32 7d 0d  14 46 15 53 54 4d 49 41  |11-R12}..F.STMIA|
00002d60  20 52 37 2c 7b 52 39 2d  52 31 30 7d 0d 14 50 16  | R7,{R9-R10}..P.|
00002d70  53 54 4d 49 41 20 52 36  2c 7b 52 31 31 2d 52 31  |STMIA R6,{R11-R1|
00002d80  32 7d 0d 14 5a 0e 4d 4f  56 20 50 43 2c 52 31 34  |2}..Z.MOV PC,R14|
00002d90  0d 14 64 05 3a 0d 14 6e  09 2e 73 6f 72 74 0d 14  |..d.:..n..sort..|
00002da0  78 14 53 54 4d 46 44 20  52 31 33 21 2c 7b 52 31  |x.STMFD R13!,{R1|
00002db0  34 7d 0d 14 82 12 53 55  42 20 52 31 2c 52 31 2c  |4}....SUB R1,R1,|
00002dc0  23 26 30 31 0d 14 8c 16  4d 4f 56 20 52 32 2c 52  |#&01....MOV R2,R|
00002dd0  31 2c 41 53 52 20 23 26  30 31 0d 14 96 05 3a 0d  |1,ASR #&01....:.|
00002de0  14 a0 0a 2e 75 70 70 65  72 0d 14 aa 0d 4d 4f 56  |....upper....MOV|
00002df0  20 52 33 2c 52 32 0d 14  b4 0d 4d 4f 56 20 52 34  | R3,R2....MOV R4|
00002e00  2c 52 31 0d 14 be 0d 42  4c 20 70 69 6c 65 75 70  |,R1....BL pileup|
00002e10  0d 14 c8 13 53 55 42 53  20 52 32 2c 52 32 2c 23  |....SUBS R2,R2,#|
00002e20  26 30 31 0d 14 d2 0d 42  47 45 20 75 70 70 65 72  |&01....BGE upper|
00002e30  0d 14 dc 0d 4d 4f 56 20  52 32 2c 52 31 0d 14 e6  |....MOV R2,R1...|
00002e40  05 3a 0d 14 f0 0a 2e 6c  6f 77 65 72 0d 14 fa 0d  |.:.....lower....|
00002e50  4d 4f 56 20 52 36 2c 52  30 0d 15 04 19 41 44 44  |MOV R6,R0....ADD|
00002e60  20 52 37 2c 52 30 2c 52  32 2c 41 53 4c 20 23 26  | R7,R0,R2,ASL #&|
00002e70  30 33 0d 15 0e 15 4c 44  4d 49 41 20 52 36 2c 7b  |03....LDMIA R6,{|
00002e80  52 39 2d 52 31 30 7d 0d  15 18 16 4c 44 4d 49 41  |R9-R10}....LDMIA|
00002e90  20 52 37 2c 7b 52 31 31  2d 52 31 32 7d 0d 15 22  | R7,{R11-R12}.."|
00002ea0  15 53 54 4d 49 41 20 52  37 2c 7b 52 39 2d 52 31  |.STMIA R7,{R9-R1|
00002eb0  30 7d 0d 15 2c 16 53 54  4d 49 41 20 52 36 2c 7b  |0}..,.STMIA R6,{|
00002ec0  52 31 31 2d 52 31 32 7d  0d 15 36 12 53 55 42 20  |R11-R12}..6.SUB |
00002ed0  52 34 2c 52 32 2c 23 26  30 31 0d 15 40 0f 4d 4f  |R4,R2,#&01..@.MO|
00002ee0  56 20 52 33 2c 23 26 30  30 0d 15 4a 0d 42 4c 20  |V R3,#&00..J.BL |
00002ef0  70 69 6c 65 75 70 0d 15  54 13 53 55 42 53 20 52  |pileup..T.SUBS R|
00002f00  32 2c 52 32 2c 23 26 30  31 0d 15 5e 0d 42 47 54  |2,R2,#&01..^.BGT|
00002f10  20 6c 6f 77 65 72 0d 15  68 13 4c 44 4d 46 44 20  | lower..h.LDMFD |
00002f20  52 31 33 21 2c 7b 50 43  7d 0d 15 72 05 5d 0d 15  |R13!,{PC}..r.]..|
00002f30  7c 05 e1 0d 15 86 05 3a  0d 15 90 0c dd 20 f2 70  ||......:..... .p|
00002f40  6f 69 6e 74 0d 15 9a 0e  5b 20 4f 50 54 20 6f 70  |oint....[ OPT op|
00002f50  74 25 0d 15 a4 1f 5c 20  63 61 6c 63 75 6c 61 74  |t%....\ calculat|
00002f60  65 20 6e 6f 72 6d 61 6c  20 61 74 20 70 6f 69 6e  |e normal at poin|
00002f70  74 0d 15 ae 05 3a 0d 15  b8 0a 2e 70 6f 69 6e 74  |t....:.....point|
00002f80  0d 15 c2 10 4c 44 52 20  52 30 2c 69 6e 70 75 74  |....LDR R0,input|
00002f90  0d 15 cc 11 4c 44 52 20  52 31 2c 6f 75 74 70 75  |....LDR R1,outpu|
00002fa0  74 0d 15 d6 1d 45 51 55  44 20 a4 66 70 75 28 22  |t....EQUD .fpu("|
00002fb0  4c 44 46 53 20 46 30 2c  5b 52 30 5d 22 29 0d 15  |LDFS F0,[R0]")..|
00002fc0  e0 20 45 51 55 44 20 a4  66 70 75 28 22 4c 44 46  |. EQUD .fpu("LDF|
00002fd0  53 20 46 31 2c 5b 52 30  2c 23 34 5d 22 29 0d 15  |S F1,[R0,#4]")..|
00002fe0  ea 13 4c 44 52 20 52 32  2c 5b 52 30 2c 23 31 32  |..LDR R2,[R0,#12|
00002ff0  5d 0d 15 f4 13 4c 44 52  20 52 33 2c 5b 52 30 2c  |]....LDR R3,[R0,|
00003000  23 32 30 5d 0d 15 fe 13  4c 44 52 20 52 34 2c 5b  |#20]....LDR R4,[|
00003010  52 30 2c 23 32 34 5d 0d  16 08 13 4c 44 52 20 52  |R0,#24]....LDR R|
00003020  35 2c 5b 52 30 2c 23 32  38 5d 0d 16 12 0f 4c 44  |5,[R0,#28]....LD|
00003030  52 20 52 36 2c 5b 52 32  5d 0d 16 1c 14 4c 44 52  |R R6,[R2]....LDR|
00003040  20 52 37 2c 5b 52 33 5d  2c 23 26 30 34 0d 16 26  | R7,[R3],#&04..&|
00003050  0d 4d 4f 56 20 52 38 2c  52 36 0d 16 30 0f 4d 4f  |.MOV R8,R6..0.MO|
00003060  56 20 52 39 2c 23 26 30  30 0d 16 3a 12 53 55 42  |V R9,#&00..:.SUB|
00003070  20 52 39 2c 52 39 2c 23  26 30 31 0d 16 44 1e 45  | R9,R9,#&01..D.E|
00003080  51 55 44 20 a4 66 70 75  28 22 4d 56 46 53 20 46  |QUD .fpu("MVFS F|
00003090  37 2c 23 31 30 2e 30 22  29 0d 16 4e 21 45 51 55  |7,#10.0")..N!EQU|
000030a0  44 20 a4 66 70 75 28 22  50 4f 57 53 20 46 37 2c  |D .fpu("POWS F7,|
000030b0  46 37 2c 23 31 30 2e 30  22 29 0d 16 58 05 3a 0d  |F7,#10.0")..X.:.|
000030c0  16 62 0e 2e 70 6f 69 6e  74 62 6c 6e 6b 0d 16 6c  |.b..pointblnk..l|
000030d0  13 53 55 42 53 20 52 38  2c 52 38 2c 23 26 30 31  |.SUBS R8,R8,#&01|
000030e0  0d 16 76 11 4d 4f 56 4c  54 20 52 38 2c 23 26 30  |..v.MOVLT R8,#&0|
000030f0  30 0d 16 80 10 42 4c 54  20 66 69 6e 64 65 64 67  |0....BLT findedg|
00003100  65 0d 16 8a 1b 53 54 52  20 52 39 2c 5b 52 34 2c  |e....STR R9,[R4,|
00003110  52 38 2c 41 53 4c 20 23  26 30 32 5d 0d 16 94 0f  |R8,ASL #&02]....|
00003120  42 20 70 6f 69 6e 74 62  6c 6e 6b 0d 16 9e 05 3a  |B pointblnk....:|
00003130  0d 16 a8 0d 2e 66 69 6e  64 65 64 67 65 0d 16 b2  |.....findedge...|
00003140  1a 41 44 44 20 52 31 32  2c 52 33 2c 52 38 2c 41  |.ADD R12,R3,R8,A|
00003150  53 4c 20 23 26 30 33 0d  16 bc 1e 45 51 55 44 20  |SL #&03....EQUD |
00003160  a4 66 70 75 28 22 4c 44  46 53 20 46 32 2c 5b 52  |.fpu("LDFS F2,[R|
00003170  31 32 5d 22 29 0d 16 c6  1b 45 51 55 44 20 a4 66  |12]")....EQUD .f|
00003180  70 75 28 22 43 4d 45 53  20 46 32 2c 46 30 22 29  |pu("CMES F2,F0")|
00003190  0d 16 d0 0f 4d 4f 56 4c  54 20 52 38 2c 52 36 0d  |....MOVLT R8,R6.|
000031a0  16 da 0d 42 4c 54 20 64  65 70 74 68 0d 16 e4 16  |...BLT depth....|
000031b0  4c 44 52 20 52 31 30 2c  5b 52 31 32 2c 23 26 30  |LDR R10,[R12,#&0|
000031c0  34 5d 0d 16 ee 18 4d 4f  56 20 52 31 30 2c 52 31  |4]....MOV R10,R1|
000031d0  30 2c 41 53 52 20 23 26  31 30 0d 16 f8 1d 4c 44  |0,ASR #&10....LD|
000031e0  52 20 52 31 31 2c 5b 52  34 2c 52 31 30 2c 41 53  |R R11,[R4,R10,AS|
000031f0  4c 20 23 26 30 32 5d 0d  17 02 0e 43 4d 50 20 52  |L #&02]....CMP R|
00003200  31 31 2c 52 39 0d 17 0c  10 4d 4f 56 4e 45 20 52  |11,R9....MOVNE R|
00003210  31 31 2c 52 39 0d 17 16  0d ec 51 20 52 31 31 2c  |11,R9.....Q R11,|
00003220  52 38 0d 17 20 1d 53 54  52 20 52 31 31 2c 5b 52  |R8.. .STR R11,[R|
00003230  34 2c 52 31 30 2c 41 53  4c 20 23 26 30 32 5d 0d  |4,R10,ASL #&02].|
00003240  17 2a 12 41 44 44 20 52  38 2c 52 38 2c 23 26 30  |.*.ADD R8,R8,#&0|
00003250  31 0d 17 34 0d 43 4d 50  20 52 38 2c 52 37 0d 17  |1..4.CMP R8,R7..|
00003260  3e 10 42 4c 54 20 66 69  6e 64 65 64 67 65 0d 17  |>.BLT findedge..|
00003270  48 0d 4d 4f 56 20 52 38  2c 52 36 0d 17 52 05 3a  |H.MOV R8,R6..R.:|
00003280  0d 17 5c 0a 2e 64 65 70  74 68 0d 17 66 13 53 55  |..\..depth..f.SU|
00003290  42 53 20 52 38 2c 52 38  2c 23 26 30 31 0d 17 70  |BS R8,R8,#&01..p|
000032a0  0c 42 4c 54 20 70 61 69  72 0d 17 7a 1c 4c 44 52  |.BLT pair..z.LDR|
000032b0  20 52 31 30 2c 5b 52 34  2c 52 38 2c 41 53 4c 20  | R10,[R4,R8,ASL |
000032c0  23 26 30 32 5d 0d 17 84  10 43 4d 50 20 52 31 30  |#&02]....CMP R10|
000032d0  2c 23 26 30 30 0d 17 8e  0d 42 4c 54 20 64 65 70  |,#&00....BLT dep|
000032e0  74 68 0d 17 98 1a 41 44  44 20 52 31 32 2c 52 35  |th....ADD R12,R5|
000032f0  2c 52 38 2c 41 53 4c 20  23 26 30 34 0d 17 a2 1e  |,R8,ASL #&04....|
00003300  45 51 55 44 20 a4 66 70  75 28 22 4c 44 46 53 20  |EQUD .fpu("LDFS |
00003310  46 32 2c 5b 52 31 32 5d  22 29 0d 17 ac 22 45 51  |F2,[R12]")..."EQ|
00003320  55 44 20 a4 66 70 75 28  22 4c 44 46 53 20 46 33  |UD .fpu("LDFS F3|
00003330  2c 5b 52 31 32 2c 23 30  34 5d 22 29 0d 17 b6 22  |,[R12,#04]")..."|
00003340  45 51 55 44 20 a4 66 70  75 28 22 4c 44 46 53 20  |EQUD .fpu("LDFS |
00003350  46 34 2c 5b 52 31 32 2c  23 30 38 5d 22 29 0d 17  |F4,[R12,#08]")..|
00003360  c0 22 45 51 55 44 20 a4  66 70 75 28 22 4c 44 46  |."EQUD .fpu("LDF|
00003370  53 20 46 35 2c 5b 52 31  32 2c 23 31 32 5d 22 29  |S F5,[R12,#12]")|
00003380  0d 17 ca 1e 45 51 55 44  20 a4 66 70 75 28 22 4d  |....EQUD .fpu("M|
00003390  55 46 53 20 46 32 2c 46  32 2c 46 30 22 29 0d 17  |UFS F2,F2,F0")..|
000033a0  d4 1e 45 51 55 44 20 a4  66 70 75 28 22 4d 55 46  |..EQUD .fpu("MUF|
000033b0  53 20 46 33 2c 46 33 2c  46 31 22 29 0d 17 de 1e  |S F3,F3,F1")....|
000033c0  45 51 55 44 20 a4 66 70  75 28 22 41 44 46 53 20  |EQUD .fpu("ADFS |
000033d0  46 32 2c 46 32 2c 46 33  22 29 0d 17 e8 1e 45 51  |F2,F2,F3")....EQ|
000033e0  55 44 20 a4 66 70 75 28  22 41 44 46 53 20 46 34  |UD .fpu("ADFS F4|
000033f0  2c 46 34 2c 46 32 22 29  0d 17 f2 1d 45 51 55 44  |,F4,F2")....EQUD|
00003400  20 a4 66 70 75 28 22 43  4d 45 53 20 46 34 2c 23  | .fpu("CMES F4,#|
00003410  30 2e 30 22 29 0d 17 fc  0d 42 45 51 20 64 65 70  |0.0")....BEQ dep|
00003420  74 68 0d 18 06 1e 45 51  55 44 20 a4 66 70 75 28  |th....EQUD .fpu(|
00003430  22 44 56 46 53 20 46 35  2c 46 35 2c 46 34 22 29  |"DVFS F5,F5,F4")|
00003440  0d 18 10 1b 45 51 55 44  20 a4 66 70 75 28 22 4d  |....EQUD .fpu("M|
00003450  4e 46 53 20 46 35 2c 46  35 22 29 0d 18 1a 1d 45  |NFS F5,F5")....E|
00003460  51 55 44 20 a4 66 70 75  28 22 43 4d 45 53 20 46  |QUD .fpu("CMES F|
00003470  35 2c 23 30 2e 30 22 29  0d 18 24 1d 45 51 55 44  |5,#0.0")..$.EQUD|
00003480  20 a4 66 70 75 28 22 43  4d 45 47 45 53 20 46 37  | .fpu("CMEGES F7|
00003490  2c 46 35 22 29 0d 18 2e  10 4d 4f 56 47 45 20 52  |,F5")....MOVGE R|
000034a0  39 2c 52 31 30 0d 18 38  1d 45 51 55 44 20 a4 66  |9,R10..8.EQUD .f|
000034b0  70 75 28 22 4d 56 46 47  45 53 20 46 37 2c 46 35  |pu("MVFGES F7,F5|
000034c0  22 29 0d 18 42 0b 42 20  64 65 70 74 68 0d 18 4c  |")..B.B depth..L|
000034d0  05 3a 0d 18 56 09 2e 70  61 69 72 0d 18 60 0f 43  |.:..V..pair..`.C|
000034e0  4d 50 20 52 39 2c 23 26  30 30 0d 18 6a 11 53 54  |MP R9,#&00..j.ST|
000034f0  52 4c 54 20 52 39 2c 5b  52 31 5d 0d 18 74 10 4d  |RLT R9,[R1]..t.M|
00003500  4f 56 4c 54 20 50 43 2c  52 31 34 0d 18 7e 1a 41  |OVLT PC,R14..~.A|
00003510  44 44 20 52 31 32 2c 52  33 2c 52 39 2c 41 53 4c  |DD R12,R3,R9,ASL|
00003520  20 23 26 30 33 0d 18 88  16 4c 44 52 20 52 31 31  | #&03....LDR R11|
00003530  2c 5b 52 31 32 2c 23 26  30 34 5d 0d 18 92 18 4d  |,[R12,#&04]....M|
00003540  4f 56 20 52 31 31 2c 52  31 31 2c 41 53 52 20 23  |OV R11,R11,ASR #|
00003550  26 31 30 0d 18 9c 13 41  44 44 20 52 31 30 2c 52  |&10....ADD R10,R|
00003560  39 2c 23 26 30 31 0d 18  a6 05 3a 0d 18 b0 0b 2e  |9,#&01....:.....|
00003570  70 61 69 72 6c 70 0d 18  ba 1b 41 44 44 20 52 31  |pairlp....ADD R1|
00003580  32 2c 52 33 2c 52 31 30  2c 41 53 4c 20 23 26 30  |2,R3,R10,ASL #&0|
00003590  33 0d 18 c4 15 4c 44 52  20 52 38 2c 5b 52 31 32  |3....LDR R8,[R12|
000035a0  2c 23 26 30 34 5d 0d 18  ce 16 4d 4f 56 20 52 38  |,#&04]....MOV R8|
000035b0  2c 52 38 2c 41 53 52 20  23 26 31 30 0d 18 d8 0e  |,R8,ASR #&10....|
000035c0  43 4d 50 20 52 38 2c 52  31 31 0d 18 e2 0e 42 45  |CMP R8,R11....BE|
000035d0  51 20 64 65 74 65 63 74  0d 18 ec 14 41 44 44 20  |Q detect....ADD |
000035e0  52 31 30 2c 52 31 30 2c  23 26 30 31 0d 18 f6 0e  |R10,R10,#&01....|
000035f0  43 4d 50 20 52 31 30 2c  52 37 0d 19 00 0e 42 4c  |CMP R10,R7....BL|
00003600  54 20 70 61 69 72 6c 70  0d 19 0a 10 4d 4f 56 20  |T pairlp....MOV |
00003610  52 31 30 2c 23 26 30 30  0d 19 14 14 53 55 42 20  |R10,#&00....SUB |
00003620  52 31 30 2c 52 31 30 2c  23 26 30 31 0d 19 1e 10  |R10,R10,#&01....|
00003630  53 54 52 20 52 31 30 2c  5b 52 31 5d 0d 19 28 0e  |STR R10,[R1]..(.|
00003640  4d 4f 56 20 50 43 2c 52  31 34 0d 19 32 05 3a 0d  |MOV PC,R14..2.:.|
00003650  19 3c 0b 2e 64 65 74 65  63 74 0d 19 46 13 41 44  |.<..detect..F.AD|
00003660  44 20 52 31 32 2c 52 32  2c 23 26 30 34 0d 19 50  |D R12,R2,#&04..P|
00003670  1e 4c 44 52 20 52 31 32  2c 5b 52 31 32 2c 52 31  |.LDR R12,[R12,R1|
00003680  31 2c 41 53 4c 20 23 26  30 32 5d 0d 19 5a 12 4c  |1,ASL #&02]..Z.L|
00003690  44 52 20 52 32 2c 5b 52  30 2c 23 38 5d 0d 19 64  |DR R2,[R0,#8]..d|
000036a0  13 4c 44 52 20 52 34 2c  5b 52 30 2c 23 31 36 5d  |.LDR R4,[R0,#16]|
000036b0  0d 19 6e 13 4c 44 52 20  52 35 2c 5b 52 30 2c 23  |..n.LDR R5,[R0,#|
000036c0  33 32 5d 0d 19 78 11 41  44 44 20 52 34 2c 52 34  |32]..x.ADD R4,R4|
000036d0  2c 52 31 32 0d 19 82 14  4c 44 52 20 52 36 2c 5b  |,R12....LDR R6,[|
000036e0  52 34 5d 2c 23 26 30 38  0d 19 8c 05 3a 0d 19 96  |R4],#&08....:...|
000036f0  1a 41 44 44 20 52 31 32  2c 52 33 2c 52 39 2c 41  |.ADD R12,R3,R9,A|
00003700  53 4c 20 23 26 30 33 0d  19 a0 1e 45 51 55 44 20  |SL #&03....EQUD |
00003710  a4 66 70 75 28 22 4c 44  46 53 20 46 32 2c 5b 52  |.fpu("LDFS F2,[R|
00003720  31 32 5d 22 29 0d 19 aa  15 4c 44 52 20 52 39 2c  |12]")....LDR R9,|
00003730  5b 52 31 32 2c 23 26 30  34 5d 0d 19 b4 1b 41 44  |[R12,#&04]....AD|
00003740  44 20 52 31 32 2c 52 33  2c 52 31 30 2c 41 53 4c  |D R12,R3,R10,ASL|
00003750  20 23 26 30 33 0d 19 be  1e 45 51 55 44 20 a4 66  | #&03....EQUD .f|
00003760  70 75 28 22 4c 44 46 53  20 46 33 2c 5b 52 31 32  |pu("LDFS F3,[R12|
00003770  5d 22 29 0d 19 c8 16 4c  44 52 20 52 31 30 2c 5b  |]")....LDR R10,[|
00003780  52 31 32 2c 23 26 30 34  5d 0d 19 d2 29 4d 4f 56  |R12,#&04]...)MOV|
00003790  20 52 39 2c 52 39 2c 41  53 4c 20 23 26 31 30 3a  | R9,R9,ASL #&10:|
000037a0  4d 4f 56 20 52 39 2c 52  39 2c 4c 53 52 20 23 26  |MOV R9,R9,LSR #&|
000037b0  31 30 0d 19 dc 2d 4d 4f  56 20 52 31 30 2c 52 31  |10...-MOV R10,R1|
000037c0  30 2c 41 53 4c 20 23 26  31 30 3a 4d 4f 56 20 52  |0,ASL #&10:MOV R|
000037d0  31 30 2c 52 31 30 2c 4c  53 52 20 23 26 31 30 0d  |10,R10,LSR #&10.|
000037e0  19 e6 05 3a 0d 19 f0 1b  4c 44 52 20 52 37 2c 5b  |...:....LDR R7,[|
000037f0  52 34 2c 52 39 2c 41 53  4c 20 23 26 30 32 5d 0d  |R4,R9,ASL #&02].|
00003800  19 fa 12 53 55 42 20 52  39 2c 52 39 2c 23 26 30  |...SUB R9,R9,#&0|
00003810  31 0d 1a 04 1b 4c 44 52  20 52 39 2c 5b 52 34 2c  |1....LDR R9,[R4,|
00003820  52 39 2c 41 53 4c 20 23  26 30 32 5d 0d 1a 0e 1c  |R9,ASL #&02]....|
00003830  4c 44 52 20 52 38 2c 5b  52 34 2c 52 31 30 2c 41  |LDR R8,[R4,R10,A|
00003840  53 4c 20 23 26 30 32 5d  0d 1a 18 14 53 55 42 20  |SL #&02]....SUB |
00003850  52 31 30 2c 52 31 30 2c  23 26 30 31 0d 1a 22 1d  |R10,R10,#&01..".|
00003860  4c 44 52 20 52 31 30 2c  5b 52 34 2c 52 31 30 2c  |LDR R10,[R4,R10,|
00003870  41 53 4c 20 23 26 30 32  5d 0d 1a 2c 05 3a 0d 1a  |ASL #&02]..,.:..|
00003880  36 12 80 53 20 52 31 32  2c 52 36 2c 23 26 30 32  |6..S R12,R6,#&02|
00003890  0d 1a 40 12 53 54 52 4e  45 20 52 31 31 2c 5b 52  |..@.STRNE R11,[R|
000038a0  31 5d 0d 1a 4a 15 53 54  52 4e 45 20 52 37 2c 5b  |1]..J.STRNE R7,[|
000038b0  52 31 2c 23 31 36 5d 0d  1a 54 15 53 54 52 4e 45  |R1,#16]..T.STRNE|
000038c0  20 52 38 2c 5b 52 31 2c  23 32 30 5d 0d 1a 5e 15  | R8,[R1,#20]..^.|
000038d0  53 54 52 4e 45 20 52 39  2c 5b 52 31 2c 23 32 34  |STRNE R9,[R1,#24|
000038e0  5d 0d 1a 68 16 53 54 52  4e 45 20 52 31 30 2c 5b  |]..h.STRNE R10,[|
000038f0  52 31 2c 23 32 38 5d 0d  1a 72 10 4d 4f 56 4e 45  |R1,#28]..r.MOVNE|
00003900  20 50 43 2c 52 31 34 0d  1a 7c 05 3a 0d 1a 86 1e  | PC,R14..|.:....|
00003910  45 51 55 44 20 a4 66 70  75 28 22 53 55 46 53 20  |EQUD .fpu("SUFS |
00003920  46 34 2c 46 32 2c 46 33  22 29 0d 1a 90 1e 45 51  |F4,F2,F3")....EQ|
00003930  55 44 20 a4 66 70 75 28  22 53 55 46 53 20 46 35  |UD .fpu("SUFS F5|
00003940  2c 46 30 2c 46 33 22 29  0d 1a 9a 1d 45 51 55 44  |,F0,F3")....EQUD|
00003950  20 a4 66 70 75 28 22 43  4d 45 53 20 46 34 2c 23  | .fpu("CMES F4,#|
00003960  30 2e 30 22 29 0d 1a a4  20 45 51 55 44 20 a4 66  |0.0")... EQUD .f|
00003970  70 75 28 22 44 56 46 4e  45 53 20 46 37 2c 46 35  |pu("DVFNES F7,F5|
00003980  2c 46 34 22 29 0d 1a ae  1f 45 51 55 44 20 a4 66  |,F4")....EQUD .f|
00003990  70 75 28 22 4d 56 46 45  51 53 20 46 37 2c 23 30  |pu("MVFEQS F7,#0|
000039a0  2e 30 22 29 0d 1a b8 05  3a 0d 1a c2 1a 41 44 44  |.0")....:....ADD|
000039b0  20 52 31 32 2c 52 37 2c  52 37 2c 41 53 4c 20 23  | R12,R7,R7,ASL #|
000039c0  26 30 31 0d 1a cc 1b 41  44 44 20 52 31 32 2c 52  |&01....ADD R12,R|
000039d0  32 2c 52 31 32 2c 41 53  4c 20 23 26 30 32 0d 1a  |2,R12,ASL #&02..|
000039e0  d6 22 45 51 55 44 20 a4  66 70 75 28 22 4c 44 46  |."EQUD .fpu("LDF|
000039f0  53 20 46 34 2c 5b 52 31  32 2c 23 30 34 5d 22 29  |S F4,[R12,#04]")|
00003a00  0d 1a e0 22 45 51 55 44  20 a4 66 70 75 28 22 4c  |..."EQUD .fpu("L|
00003a10  44 46 53 20 46 35 2c 5b  52 31 32 2c 23 30 38 5d  |DFS F5,[R12,#08]|
00003a20  22 29 0d 1a ea 1a 41 44  44 20 52 31 32 2c 52 39  |")....ADD R12,R9|
00003a30  2c 52 39 2c 41 53 4c 20  23 26 30 31 0d 1a f4 1b  |,R9,ASL #&01....|
00003a40  41 44 44 20 52 31 32 2c  52 32 2c 52 31 32 2c 41  |ADD R12,R2,R12,A|
00003a50  53 4c 20 23 26 30 32 0d  1a fe 22 45 51 55 44 20  |SL #&02..."EQUD |
00003a60  a4 66 70 75 28 22 4c 44  46 53 20 46 36 2c 5b 52  |.fpu("LDFS F6,[R|
00003a70  31 32 2c 23 30 34 5d 22  29 0d 1b 08 1e 45 51 55  |12,#04]")....EQU|
00003a80  44 20 a4 66 70 75 28 22  53 55 46 53 20 46 34 2c  |D .fpu("SUFS F4,|
00003a90  46 34 2c 46 36 22 29 0d  1b 12 1e 45 51 55 44 20  |F4,F6")....EQUD |
00003aa0  a4 66 70 75 28 22 53 55  46 53 20 46 32 2c 46 32  |.fpu("SUFS F2,F2|
00003ab0  2c 46 36 22 29 0d 1b 1c  22 45 51 55 44 20 a4 66  |,F6")..."EQUD .f|
00003ac0  70 75 28 22 4c 44 46 53  20 46 36 2c 5b 52 31 32  |pu("LDFS F6,[R12|
00003ad0  2c 23 30 38 5d 22 29 0d  1b 26 1e 45 51 55 44 20  |,#08]")..&.EQUD |
00003ae0  a4 66 70 75 28 22 53 55  46 53 20 46 35 2c 46 35  |.fpu("SUFS F5,F5|
00003af0  2c 46 36 22 29 0d 1b 30  1e 45 51 55 44 20 a4 66  |,F6")..0.EQUD .f|
00003b00  70 75 28 22 53 55 46 53  20 46 36 2c 46 31 2c 46  |pu("SUFS F6,F1,F|
00003b10  36 22 29 0d 1b 3a 1e 45  51 55 44 20 a4 66 70 75  |6")..:.EQUD .fpu|
00003b20  28 22 4d 55 46 53 20 46  34 2c 46 34 2c 46 34 22  |("MUFS F4,F4,F4"|
00003b30  29 0d 1b 44 1e 45 51 55  44 20 a4 66 70 75 28 22  |)..D.EQUD .fpu("|
00003b40  4d 55 46 53 20 46 35 2c  46 35 2c 46 35 22 29 0d  |MUFS F5,F5,F5").|
00003b50  1b 4e 1e 45 51 55 44 20  a4 66 70 75 28 22 41 44  |.N.EQUD .fpu("AD|
00003b60  46 53 20 46 34 2c 46 34  2c 46 35 22 29 0d 1b 58  |FS F4,F4,F5")..X|
00003b70  1b 45 51 55 44 20 a4 66  70 75 28 22 53 51 54 53  |.EQUD .fpu("SQTS|
00003b80  20 46 34 2c 46 34 22 29  0d 1b 62 1e 45 51 55 44  | F4,F4")..b.EQUD|
00003b90  20 a4 66 70 75 28 22 4d  55 46 53 20 46 36 2c 46  | .fpu("MUFS F6,F|
00003ba0  36 2c 46 36 22 29 0d 1b  6c 1e 45 51 55 44 20 a4  |6,F6")..l.EQUD .|
00003bb0  66 70 75 28 22 4d 55 46  53 20 46 32 2c 46 32 2c  |fpu("MUFS F2,F2,|
00003bc0  46 32 22 29 0d 1b 76 1e  45 51 55 44 20 a4 66 70  |F2")..v.EQUD .fp|
00003bd0  75 28 22 41 44 46 53 20  46 32 2c 46 32 2c 46 36  |u("ADFS F2,F2,F6|
00003be0  22 29 0d 1b 80 1b 45 51  55 44 20 a4 66 70 75 28  |")....EQUD .fpu(|
00003bf0  22 53 51 54 53 20 46 32  2c 46 32 22 29 0d 1b 8a  |"SQTS F2,F2")...|
00003c00  1d 45 51 55 44 20 a4 66  70 75 28 22 43 4d 45 53  |.EQUD .fpu("CMES|
00003c10  20 46 34 2c 23 30 2e 30  22 29 0d 1b 94 20 45 51  | F4,#0.0")... EQ|
00003c20  55 44 20 a4 66 70 75 28  22 44 56 46 4e 45 53 20  |UD .fpu("DVFNES |
00003c30  46 32 2c 46 32 2c 46 34  22 29 0d 1b 9e 1f 45 51  |F2,F2,F4")....EQ|
00003c40  55 44 20 a4 66 70 75 28  22 4d 56 46 45 51 53 20  |UD .fpu("MVFEQS |
00003c50  46 32 2c 23 30 2e 30 22  29 0d 1b a8 05 3a 0d 1b  |F2,#0.0")....:..|
00003c60  b2 1a 41 44 44 20 52 31  32 2c 52 38 2c 52 38 2c  |..ADD R12,R8,R8,|
00003c70  41 53 4c 20 23 26 30 31  0d 1b bc 1b 41 44 44 20  |ASL #&01....ADD |
00003c80  52 31 32 2c 52 32 2c 52  31 32 2c 41 53 4c 20 23  |R12,R2,R12,ASL #|
00003c90  26 30 32 0d 1b c6 22 45  51 55 44 20 a4 66 70 75  |&02..."EQUD .fpu|
00003ca0  28 22 4c 44 46 53 20 46  34 2c 5b 52 31 32 2c 23  |("LDFS F4,[R12,#|
00003cb0  30 34 5d 22 29 0d 1b d0  22 45 51 55 44 20 a4 66  |04]")..."EQUD .f|
00003cc0  70 75 28 22 4c 44 46 53  20 46 35 2c 5b 52 31 32  |pu("LDFS F5,[R12|
00003cd0  2c 23 30 38 5d 22 29 0d  1b da 1c 41 44 44 20 52  |,#08]")....ADD R|
00003ce0  31 32 2c 52 31 30 2c 52  31 30 2c 41 53 4c 20 23  |12,R10,R10,ASL #|
00003cf0  26 30 31 0d 1b e4 1b 41  44 44 20 52 31 32 2c 52  |&01....ADD R12,R|
00003d00  32 2c 52 31 32 2c 41 53  4c 20 23 26 30 32 0d 1b  |2,R12,ASL #&02..|
00003d10  ee 22 45 51 55 44 20 a4  66 70 75 28 22 4c 44 46  |."EQUD .fpu("LDF|
00003d20  53 20 46 36 2c 5b 52 31  32 2c 23 30 34 5d 22 29  |S F6,[R12,#04]")|
00003d30  0d 1b f8 1e 45 51 55 44  20 a4 66 70 75 28 22 53  |....EQUD .fpu("S|
00003d40  55 46 53 20 46 34 2c 46  34 2c 46 36 22 29 0d 1c  |UFS F4,F4,F6")..|
00003d50  02 1e 45 51 55 44 20 a4  66 70 75 28 22 53 55 46  |..EQUD .fpu("SUF|
00003d60  53 20 46 33 2c 46 33 2c  46 36 22 29 0d 1c 0c 22  |S F3,F3,F6")..."|
00003d70  45 51 55 44 20 a4 66 70  75 28 22 4c 44 46 53 20  |EQUD .fpu("LDFS |
00003d80  46 36 2c 5b 52 31 32 2c  23 30 38 5d 22 29 0d 1c  |F6,[R12,#08]")..|
00003d90  16 1e 45 51 55 44 20 a4  66 70 75 28 22 53 55 46  |..EQUD .fpu("SUF|
00003da0  53 20 46 35 2c 46 35 2c  46 36 22 29 0d 1c 20 1e  |S F5,F5,F6").. .|
00003db0  45 51 55 44 20 a4 66 70  75 28 22 53 55 46 53 20  |EQUD .fpu("SUFS |
00003dc0  46 36 2c 46 31 2c 46 36  22 29 0d 1c 2a 1e 45 51  |F6,F1,F6")..*.EQ|
00003dd0  55 44 20 a4 66 70 75 28  22 4d 55 46 53 20 46 34  |UD .fpu("MUFS F4|
00003de0  2c 46 34 2c 46 34 22 29  0d 1c 34 1e 45 51 55 44  |,F4,F4")..4.EQUD|
00003df0  20 a4 66 70 75 28 22 4d  55 46 53 20 46 35 2c 46  | .fpu("MUFS F5,F|
00003e00  35 2c 46 35 22 29 0d 1c  3e 1e 45 51 55 44 20 a4  |5,F5")..>.EQUD .|
00003e10  66 70 75 28 22 41 44 46  53 20 46 34 2c 46 34 2c  |fpu("ADFS F4,F4,|
00003e20  46 35 22 29 0d 1c 48 1b  45 51 55 44 20 a4 66 70  |F5")..H.EQUD .fp|
00003e30  75 28 22 53 51 54 53 20  46 34 2c 46 34 22 29 0d  |u("SQTS F4,F4").|
00003e40  1c 52 1e 45 51 55 44 20  a4 66 70 75 28 22 4d 55  |.R.EQUD .fpu("MU|
00003e50  46 53 20 46 36 2c 46 36  2c 46 36 22 29 0d 1c 5c  |FS F6,F6,F6")..\|
00003e60  1e 45 51 55 44 20 a4 66  70 75 28 22 4d 55 46 53  |.EQUD .fpu("MUFS|
00003e70  20 46 33 2c 46 33 2c 46  33 22 29 0d 1c 66 1e 45  | F3,F3,F3")..f.E|
00003e80  51 55 44 20 a4 66 70 75  28 22 41 44 46 53 20 46  |QUD .fpu("ADFS F|
00003e90  33 2c 46 33 2c 46 36 22  29 0d 1c 70 1b 45 51 55  |3,F3,F6")..p.EQU|
00003ea0  44 20 a4 66 70 75 28 22  53 51 54 53 20 46 33 2c  |D .fpu("SQTS F3,|
00003eb0  46 33 22 29 0d 1c 7a 1d  45 51 55 44 20 a4 66 70  |F3")..z.EQUD .fp|
00003ec0  75 28 22 43 4d 45 53 20  46 34 2c 23 30 2e 30 22  |u("CMES F4,#0.0"|
00003ed0  29 0d 1c 84 20 45 51 55  44 20 a4 66 70 75 28 22  |)... EQUD .fpu("|
00003ee0  44 56 46 4e 45 53 20 46  33 2c 46 33 2c 46 34 22  |DVFNES F3,F3,F4"|
00003ef0  29 0d 1c 8e 1f 45 51 55  44 20 a4 66 70 75 28 22  |)....EQUD .fpu("|
00003f00  4d 56 46 45 51 53 20 46  33 2c 23 30 2e 30 22 29  |MVFEQS F3,#0.0")|
00003f10  0d 1c 98 05 3a 0d 1c a2  12 80 53 20 52 31 32 2c  |....:.....S R12,|
00003f20  52 36 2c 23 26 30 31 0d  1c ac 12 53 54 52 4e 45  |R6,#&01....STRNE|
00003f30  20 52 31 31 2c 5b 52 31  5d 0d 1c b6 15 53 54 52  | R11,[R1]....STR|
00003f40  4e 45 20 52 37 2c 5b 52  31 2c 23 31 36 5d 0d 1c  |NE R7,[R1,#16]..|
00003f50  c0 15 53 54 52 4e 45 20  52 38 2c 5b 52 31 2c 23  |..STRNE R8,[R1,#|
00003f60  32 30 5d 0d 1c ca 15 53  54 52 4e 45 20 52 39 2c  |20]....STRNE R9,|
00003f70  5b 52 31 2c 23 32 34 5d  0d 1c d4 16 53 54 52 4e  |[R1,#24]....STRN|
00003f80  45 20 52 31 30 2c 5b 52  31 2c 23 32 38 5d 0d 1c  |E R10,[R1,#28]..|
00003f90  de 23 45 51 55 44 20 a4  66 70 75 28 22 53 54 46  |.#EQUD .fpu("STF|
00003fa0  4e 45 53 20 46 32 2c 5b  52 31 2c 23 33 32 5d 22  |NES F2,[R1,#32]"|
00003fb0  29 0d 1c e8 23 45 51 55  44 20 a4 66 70 75 28 22  |)...#EQUD .fpu("|
00003fc0  53 54 46 4e 45 53 20 46  33 2c 5b 52 31 2c 23 33  |STFNES F3,[R1,#3|
00003fd0  36 5d 22 29 0d 1c f2 23  45 51 55 44 20 a4 66 70  |6]")...#EQUD .fp|
00003fe0  75 28 22 53 54 46 4e 45  53 20 46 37 2c 5b 52 31  |u("STFNES F7,[R1|
00003ff0  2c 23 34 30 5d 22 29 0d  1c fc 10 4d 4f 56 4e 45  |,#40]")....MOVNE|
00004000  20 50 43 2c 52 31 34 0d  1d 06 05 3a 0d 1d 10 05  | PC,R14....:....|
00004010  5d 0d 1d 1a 11 e3 20 6e  6d 61 73 25 3d 30 20 b8  |]..... nmas%=0 .|
00004020  20 32 0d 1d 24 0e 5b 20  4f 50 54 20 6f 70 74 25  | 2..$.[ OPT opt%|
00004030  0d 1d 2e 1a 41 44 44 20  52 31 32 2c 52 37 2c 52  |....ADD R12,R7,R|
00004040  37 2c 41 53 4c 20 23 26  30 31 0d 1d 38 1b 41 44  |7,ASL #&01..8.AD|
00004050  44 20 52 31 32 2c 52 35  2c 52 31 32 2c 41 53 4c  |D R12,R5,R12,ASL|
00004060  20 23 26 30 32 0d 1d 42  2e 45 51 55 44 20 a4 66  | #&02..B.EQUD .f|
00004070  70 75 28 22 4c 44 46 53  20 46 34 2c 5b 52 31 32  |pu("LDFS F4,[R12|
00004080  2c 23 22 2b c3 28 34 2a  6e 6d 61 73 25 29 2b 22  |,#"+.(4*nmas%)+"|
00004090  5d 22 29 0d 1d 4c 1a 41  44 44 20 52 31 32 2c 52  |]")..L.ADD R12,R|
000040a0  39 2c 52 39 2c 41 53 4c  20 23 26 30 31 0d 1d 56  |9,R9,ASL #&01..V|
000040b0  1b 41 44 44 20 52 31 32  2c 52 35 2c 52 31 32 2c  |.ADD R12,R5,R12,|
000040c0  41 53 4c 20 23 26 30 32  0d 1d 60 2e 45 51 55 44  |ASL #&02..`.EQUD|
000040d0  20 a4 66 70 75 28 22 4c  44 46 53 20 46 35 2c 5b  | .fpu("LDFS F5,[|
000040e0  52 31 32 2c 23 22 2b c3  28 34 2a 6e 6d 61 73 25  |R12,#"+.(4*nmas%|
000040f0  29 2b 22 5d 22 29 0d 1d  6a 1b 45 51 55 44 20 a4  |)+"]")..j.EQUD .|
00004100  66 70 75 28 22 43 4d 45  53 20 46 34 2c 46 35 22  |fpu("CMES F4,F5"|
00004110  29 0d 1d 74 20 45 51 55  44 20 a4 66 70 75 28 22  |)..t EQUD .fpu("|
00004120  4d 55 46 4e 45 53 20 46  34 2c 46 34 2c 46 32 22  |MUFNES F4,F4,F2"|
00004130  29 0d 1d 7e 22 45 51 55  44 20 a4 66 70 75 28 22  |)..~"EQUD .fpu("|
00004140  52 53 46 4e 45 53 20 46  32 2c 46 32 2c 23 31 2e  |RSFNES F2,F2,#1.|
00004150  30 22 29 0d 1d 88 20 45  51 55 44 20 a4 66 70 75  |0")... EQUD .fpu|
00004160  28 22 4d 55 46 4e 45 53  20 46 35 2c 46 35 2c 46  |("MUFNES F5,F5,F|
00004170  32 22 29 0d 1d 92 20 45  51 55 44 20 a4 66 70 75  |2")... EQUD .fpu|
00004180  28 22 41 44 46 4e 45 53  20 46 34 2c 46 34 2c 46  |("ADFNES F4,F4,F|
00004190  35 22 29 0d 1d 9c 22 45  51 55 44 20 a4 66 70 75  |5")..."EQUD .fpu|
000041a0  28 22 52 53 46 4e 45 53  20 46 32 2c 46 32 2c 23  |("RSFNES F2,F2,#|
000041b0  31 2e 30 22 29 0d 1d a6  1a 41 44 44 20 52 31 32  |1.0")....ADD R12|
000041c0  2c 52 38 2c 52 38 2c 41  53 4c 20 23 26 30 31 0d  |,R8,R8,ASL #&01.|
000041d0  1d b0 1b 41 44 44 20 52  31 32 2c 52 35 2c 52 31  |...ADD R12,R5,R1|
000041e0  32 2c 41 53 4c 20 23 26  30 32 0d 1d ba 2e 45 51  |2,ASL #&02....EQ|
000041f0  55 44 20 a4 66 70 75 28  22 4c 44 46 53 20 46 35  |UD .fpu("LDFS F5|
00004200  2c 5b 52 31 32 2c 23 22  2b c3 28 34 2a 6e 6d 61  |,[R12,#"+.(4*nma|
00004210  73 25 29 2b 22 5d 22 29  0d 1d c4 1c 41 44 44 20  |s%)+"]")....ADD |
00004220  52 31 32 2c 52 31 30 2c  52 31 30 2c 41 53 4c 20  |R12,R10,R10,ASL |
00004230  23 26 30 31 0d 1d ce 1b  41 44 44 20 52 31 32 2c  |#&01....ADD R12,|
00004240  52 35 2c 52 31 32 2c 41  53 4c 20 23 26 30 32 0d  |R5,R12,ASL #&02.|
00004250  1d d8 2e 45 51 55 44 20  a4 66 70 75 28 22 4c 44  |...EQUD .fpu("LD|
00004260  46 53 20 46 36 2c 5b 52  31 32 2c 23 22 2b c3 28  |FS F6,[R12,#"+.(|
00004270  34 2a 6e 6d 61 73 25 29  2b 22 5d 22 29 0d 1d e2  |4*nmas%)+"]")...|
00004280  1b 45 51 55 44 20 a4 66  70 75 28 22 43 4d 45 53  |.EQUD .fpu("CMES|
00004290  20 46 35 2c 46 36 22 29  0d 1d ec 20 45 51 55 44  | F5,F6")... EQUD|
000042a0  20 a4 66 70 75 28 22 4d  55 46 4e 45 53 20 46 35  | .fpu("MUFNES F5|
000042b0  2c 46 35 2c 46 33 22 29  0d 1d f6 22 45 51 55 44  |,F5,F3")..."EQUD|
000042c0  20 a4 66 70 75 28 22 52  53 46 4e 45 53 20 46 33  | .fpu("RSFNES F3|
000042d0  2c 46 33 2c 23 31 2e 30  22 29 0d 1e 00 20 45 51  |,F3,#1.0")... EQ|
000042e0  55 44 20 a4 66 70 75 28  22 4d 55 46 4e 45 53 20  |UD .fpu("MUFNES |
000042f0  46 36 2c 46 36 2c 46 33  22 29 0d 1e 0a 20 45 51  |F6,F6,F3")... EQ|
00004300  55 44 20 a4 66 70 75 28  22 41 44 46 4e 45 53 20  |UD .fpu("ADFNES |
00004310  46 35 2c 46 35 2c 46 36  22 29 0d 1e 14 22 45 51  |F5,F5,F6")..."EQ|
00004320  55 44 20 a4 66 70 75 28  22 52 53 46 4e 45 53 20  |UD .fpu("RSFNES |
00004330  46 33 2c 46 33 2c 23 31  2e 30 22 29 0d 1e 1e 1b  |F3,F3,#1.0")....|
00004340  45 51 55 44 20 a4 66 70  75 28 22 43 4d 45 53 20  |EQUD .fpu("CMES |
00004350  46 34 2c 46 35 22 29 0d  1e 28 20 45 51 55 44 20  |F4,F5")..( EQUD |
00004360  a4 66 70 75 28 22 4d 55  46 4e 45 53 20 46 34 2c  |.fpu("MUFNES F4,|
00004370  46 34 2c 46 37 22 29 0d  1e 32 22 45 51 55 44 20  |F4,F7")..2"EQUD |
00004380  a4 66 70 75 28 22 52 53  46 4e 45 53 20 46 37 2c  |.fpu("RSFNES F7,|
00004390  46 37 2c 23 31 2e 30 22  29 0d 1e 3c 20 45 51 55  |F7,#1.0")..< EQU|
000043a0  44 20 a4 66 70 75 28 22  4d 55 46 4e 45 53 20 46  |D .fpu("MUFNES F|
000043b0  35 2c 46 35 2c 46 37 22  29 0d 1e 46 20 45 51 55  |5,F5,F7")..F EQU|
000043c0  44 20 a4 66 70 75 28 22  41 44 46 4e 45 53 20 46  |D .fpu("ADFNES F|
000043d0  34 2c 46 34 2c 46 35 22  29 0d 1e 50 22 45 51 55  |4,F4,F5")..P"EQU|
000043e0  44 20 a4 66 70 75 28 22  52 53 46 4e 45 53 20 46  |D .fpu("RSFNES F|
000043f0  37 2c 46 37 2c 23 31 2e  30 22 29 0d 1e 5a 2f 45  |7,F7,#1.0")..Z/E|
00004400  51 55 44 20 a4 66 70 75  28 22 53 54 46 53 20 46  |QUD .fpu("STFS F|
00004410  34 2c 5b 52 31 2c 23 22  2b c3 28 34 2a 6e 6d 61  |4,[R1,#"+.(4*nma|
00004420  73 25 2b 34 29 2b 22 5d  22 29 0d 1e 64 05 5d 0d  |s%+4)+"]")..d.].|
00004430  1e 6e 0b ed 20 6e 6d 61  73 25 0d 1e 78 0e 5b 20  |.n.. nmas%..x.[ |
00004440  4f 50 54 20 6f 70 74 25  0d 1e 82 10 53 54 52 20  |OPT opt%....STR |
00004450  52 31 31 2c 5b 52 31 5d  0d 1e 8c 13 53 54 52 20  |R11,[R1]....STR |
00004460  52 37 2c 5b 52 31 2c 23  31 36 5d 0d 1e 96 13 53  |R7,[R1,#16]....S|
00004470  54 52 20 52 38 2c 5b 52  31 2c 23 32 30 5d 0d 1e  |TR R8,[R1,#20]..|
00004480  a0 13 53 54 52 20 52 39  2c 5b 52 31 2c 23 32 34  |..STR R9,[R1,#24|
00004490  5d 0d 1e aa 14 53 54 52  20 52 31 30 2c 5b 52 31  |]....STR R10,[R1|
000044a0  2c 23 32 38 5d 0d 1e b4  21 45 51 55 44 20 a4 66  |,#28]...!EQUD .f|
000044b0  70 75 28 22 53 54 46 53  20 46 32 2c 5b 52 31 2c  |pu("STFS F2,[R1,|
000044c0  23 33 32 5d 22 29 0d 1e  be 21 45 51 55 44 20 a4  |#32]")...!EQUD .|
000044d0  66 70 75 28 22 53 54 46  53 20 46 33 2c 5b 52 31  |fpu("STFS F3,[R1|
000044e0  2c 23 33 36 5d 22 29 0d  1e c8 21 45 51 55 44 20  |,#36]")...!EQUD |
000044f0  a4 66 70 75 28 22 53 54  46 53 20 46 37 2c 5b 52  |.fpu("STFS F7,[R|
00004500  31 2c 23 34 30 5d 22 29  0d 1e d2 0e 4d 4f 56 20  |1,#40]")....MOV |
00004510  50 43 2c 52 31 34 0d 1e  dc 05 5d 0d 1e e6 05 e1  |PC,R14....].....|
00004520  0d 1e f0 05 3a 0d 1e fa  0d dd 20 f2 6e 75 6d 62  |....:..... .numb|
00004530  65 72 0d 1f 04 0e 5b 20  4f 50 54 20 6f 70 74 25  |er....[ OPT opt%|
00004540  0d 1f 0e 0d 2e 62 61 73  74 6f 66 70 75 0d 1f 18  |.....bastofpu...|
00004550  11 4c 44 52 20 52 30 2c  6e 75 6d 62 65 72 0d 1f  |.LDR R0,number..|
00004560  22 14 4c 44 52 42 20 52  31 2c 6e 75 6d 62 65 72  |".LDRB R1,number|
00004570  2b 34 0d 1f 2c 0f 43 4d  50 20 52 30 2c 23 26 30  |+4..,.CMP R0,#&0|
00004580  30 0d 1f 36 11 43 4d 50  45 51 20 52 31 2c 23 26  |0..6.CMPEQ R1,#&|
00004590  30 30 0d 1f 40 12 4c 44  52 45 51 20 52 31 32 2c  |00..@.LDREQ R12,|
000045a0  5b 52 39 5d 0d 1f 4a 12  53 54 52 45 51 20 52 30  |[R9]..J.STREQ R0|
000045b0  2c 5b 52 31 32 5d 0d 1f  54 0d ec 51 20 50 43 2c  |,[R12]..T..Q PC,|
000045c0  52 31 34 0d 1f 5e 15 4d  4f 56 20 52 32 2c 23 26  |R14..^.MOV R2,#&|
000045d0  38 30 30 30 30 30 30 30  0d 1f 68 0e 80 20 52 33  |80000000..h.. R3|
000045e0  2c 52 30 2c 52 32 0d 1f  72 12 53 55 42 20 52 32  |,R0,R2..r.SUB R2|
000045f0  2c 52 32 2c 23 26 30 31  0d 1f 7c 0e 80 20 52 30  |,R2,#&01..|.. R0|
00004600  2c 52 30 2c 52 32 0d 1f  86 12 53 55 42 20 52 31  |,R0,R2....SUB R1|
00004610  2c 52 31 2c 23 26 30 32  0d 1f 90 17 84 52 20 52  |,R1,#&02.....R R|
00004620  33 2c 52 33 2c 52 31 2c  41 53 4c 20 23 32 33 0d  |3,R3,R1,ASL #23.|
00004630  1f 9a 16 84 52 20 52 30  2c 52 33 2c 52 30 2c 4c  |....R R0,R3,R0,L|
00004640  53 52 20 23 38 0d 1f a4  10 4c 44 52 20 52 31 32  |SR #8....LDR R12|
00004650  2c 5b 52 39 5d 0d 1f ae  10 53 54 52 20 52 30 2c  |,[R9]....STR R0,|
00004660  5b 52 31 32 5d 0d 1f b8  0e 4d 4f 56 20 50 43 2c  |[R12]....MOV PC,|
00004670  52 31 34 0d 1f c2 05 3a  0d 1f cc 0d 2e 66 70 75  |R14....:.....fpu|
00004680  74 6f 62 61 73 0d 1f d6  10 4c 44 52 20 52 31 32  |tobas....LDR R12|
00004690  2c 5b 52 39 5d 0d 1f e0  10 4c 44 52 20 52 30 2c  |,[R9]....LDR R0,|
000046a0  5b 52 31 32 5d 0d 1f ea  0f 43 4d 50 20 52 30 2c  |[R12]....CMP R0,|
000046b0  23 26 30 30 0d 1f f4 13  53 54 52 45 51 20 52 30  |#&00....STREQ R0|
000046c0  2c 6e 75 6d 62 65 72 0d  1f fe 16 53 54 52 45 51  |,number....STREQ|
000046d0  42 20 52 30 2c 6e 75 6d  62 65 72 2b 34 0d 20 08  |B R0,number+4. .|
000046e0  0d ec 51 20 50 43 2c 52  31 34 0d 20 12 15 4d 4f  |..Q PC,R14. ..MO|
000046f0  56 20 52 31 2c 23 26 38  30 30 30 30 30 30 30 0d  |V R1,#&80000000.|
00004700  20 1c 0e 80 20 52 32 2c  52 31 2c 52 30 0d 20 26  | ... R2,R1,R0. &|
00004710  12 53 55 42 20 52 31 2c  52 31 2c 23 26 30 31 0d  |.SUB R1,R1,#&01.|
00004720  20 30 15 80 20 52 33 2c  52 30 2c 52 31 2c 4c 53  | 0.. R3,R0,R1,LS|
00004730  52 20 23 38 0d 20 3a 16  84 52 20 52 32 2c 52 32  |R #8. :..R R2,R2|
00004740  2c 52 33 2c 41 53 4c 20  23 38 0d 20 44 0e 80 20  |,R3,ASL #8. D.. |
00004750  52 33 2c 52 30 2c 52 31  0d 20 4e 15 4d 4f 56 20  |R3,R0,R1. N.MOV |
00004760  52 33 2c 52 33 2c 4c 53  52 20 23 32 33 0d 20 58  |R3,R3,LSR #23. X|
00004770  12 41 44 44 20 52 33 2c  52 33 2c 23 26 30 32 0d  |.ADD R3,R3,#&02.|
00004780  20 62 11 53 54 52 20 52  32 2c 6e 75 6d 62 65 72  | b.STR R2,number|
00004790  0d 20 6c 14 53 54 52 42  20 52 33 2c 6e 75 6d 62  |. l.STRB R3,numb|
000047a0  65 72 2b 34 0d 20 76 0e  4d 4f 56 20 50 43 2c 52  |er+4. v.MOV PC,R|
000047b0  31 34 0d 20 80 05 3a 0d  20 8a 0b 2e 6e 75 6d 62  |14. ..:. ...numb|
000047c0  65 72 0d 20 94 0c 45 51  55 44 20 26 30 30 0d 20  |er. ..EQUD &00. |
000047d0  9e 0c 45 51 55 44 20 26  30 30 0d 20 a8 05 5d 0d  |..EQUD &00. ..].|
000047e0  20 b2 05 e1 0d 20 bc 05  3a 0d 20 c6 10 dd 20 f2  | .... ..:. ... .|
000047f0  69 6e 74 65 6e 73 69 74  79 0d 20 d0 0e 5b 20 4f  |intensity. ..[ O|
00004800  50 54 20 6f 70 74 25 0d  20 da 0e 2e 69 6e 74 65  |PT opt%. ...inte|
00004810  6e 73 69 74 79 0d 20 e4  10 4c 44 52 20 52 30 2c  |nsity. ..LDR R0,|
00004820  69 6e 70 75 74 0d 20 ee  11 4c 44 52 20 52 31 2c  |input. ..LDR R1,|
00004830  6f 75 74 70 75 74 0d 20  f8 1d 45 51 55 44 20 a4  |output. ..EQUD .|
00004840  66 70 75 28 22 4c 44 46  53 20 46 30 2c 5b 52 30  |fpu("LDFS F0,[R0|
00004850  5d 22 29 0d 21 02 20 45  51 55 44 20 a4 66 70 75  |]").!. EQUD .fpu|
00004860  28 22 4c 44 46 53 20 46  31 2c 5b 52 30 2c 23 34  |("LDFS F1,[R0,#4|
00004870  5d 22 29 0d 21 0c 20 45  51 55 44 20 a4 66 70 75  |]").!. EQUD .fpu|
00004880  28 22 4c 44 46 53 20 46  32 2c 5b 52 30 2c 23 38  |("LDFS F2,[R0,#8|
00004890  5d 22 29 0d 21 16 21 45  51 55 44 20 a4 66 70 75  |]").!.!EQUD .fpu|
000048a0  28 22 4c 44 46 53 20 46  37 2c 5b 52 30 2c 23 31  |("LDFS F7,[R0,#1|
000048b0  36 5d 22 29 0d 21 20 1d  45 51 55 44 20 a4 66 70  |6]").! .EQUD .fp|
000048c0  75 28 22 53 54 46 53 20  46 37 2c 5b 52 31 5d 22  |u("STFS F7,[R1]"|
000048d0  29 0d 21 2a 21 45 51 55  44 20 a4 66 70 75 28 22  |).!*!EQUD .fpu("|
000048e0  4c 44 46 53 20 46 37 2c  5b 52 30 2c 23 32 30 5d  |LDFS F7,[R0,#20]|
000048f0  22 29 0d 21 34 20 45 51  55 44 20 a4 66 70 75 28  |").!4 EQUD .fpu(|
00004900  22 53 54 46 53 20 46 37  2c 5b 52 31 2c 23 34 5d  |"STFS F7,[R1,#4]|
00004910  22 29 0d 21 3e 21 45 51  55 44 20 a4 66 70 75 28  |").!>!EQUD .fpu(|
00004920  22 4c 44 46 53 20 46 37  2c 5b 52 30 2c 23 32 34  |"LDFS F7,[R0,#24|
00004930  5d 22 29 0d 21 48 20 45  51 55 44 20 a4 66 70 75  |]").!H EQUD .fpu|
00004940  28 22 53 54 46 53 20 46  37 2c 5b 52 31 2c 23 38  |("STFS F7,[R1,#8|
00004950  5d 22 29 0d 21 52 13 4c  44 52 20 52 32 2c 5b 52  |]").!R.LDR R2,[R|
00004960  30 2c 23 31 32 5d 0d 21  5c 0f 4c 44 52 20 52 33  |0,#12].!\.LDR R3|
00004970  2c 5b 52 32 5d 0d 21 66  05 3a 0d 21 70 0c 2e 69  |,[R2].!f.:.!p..i|
00004980  6e 74 65 6e 6c 70 0d 21  7a 13 53 55 42 53 20 52  |ntenlp.!z.SUBS R|
00004990  33 2c 52 33 2c 23 26 30  31 0d 21 84 10 4d 4f 56  |3,R3,#&01.!..MOV|
000049a0  4c 54 20 50 43 2c 52 31  34 0d 21 8e 1a 41 44 44  |LT PC,R14.!..ADD|
000049b0  20 52 31 32 2c 52 33 2c  52 33 2c 41 53 4c 20 23  | R12,R3,R3,ASL #|
000049c0  26 30 31 0d 21 98 1b 41  44 44 20 52 31 32 2c 52  |&01.!..ADD R12,R|
000049d0  32 2c 52 31 32 2c 41 53  4c 20 23 26 30 32 0d 21  |2,R12,ASL #&02.!|
000049e0  a2 22 45 51 55 44 20 a4  66 70 75 28 22 4c 44 46  |."EQUD .fpu("LDF|
000049f0  53 20 46 33 2c 5b 52 31  32 2c 23 30 34 5d 22 29  |S F3,[R12,#04]")|
00004a00  0d 21 ac 22 45 51 55 44  20 a4 66 70 75 28 22 4c  |.!."EQUD .fpu("L|
00004a10  44 46 53 20 46 34 2c 5b  52 31 32 2c 23 30 38 5d  |DFS F4,[R12,#08]|
00004a20  22 29 0d 21 b6 22 45 51  55 44 20 a4 66 70 75 28  |").!."EQUD .fpu(|
00004a30  22 4c 44 46 53 20 46 35  2c 5b 52 31 32 2c 23 31  |"LDFS F5,[R12,#1|
00004a40  32 5d 22 29 0d 21 c0 1e  45 51 55 44 20 a4 66 70  |2]").!..EQUD .fp|
00004a50  75 28 22 4d 55 46 53 20  46 36 2c 46 30 2c 46 33  |u("MUFS F6,F0,F3|
00004a60  22 29 0d 21 ca 1e 45 51  55 44 20 a4 66 70 75 28  |").!..EQUD .fpu(|
00004a70  22 4d 55 46 53 20 46 37  2c 46 31 2c 46 34 22 29  |"MUFS F7,F1,F4")|
00004a80  0d 21 d4 1e 45 51 55 44  20 a4 66 70 75 28 22 41  |.!..EQUD .fpu("A|
00004a90  44 46 53 20 46 36 2c 46  36 2c 46 37 22 29 0d 21  |DFS F6,F6,F7").!|
00004aa0  de 1e 45 51 55 44 20 a4  66 70 75 28 22 4d 55 46  |..EQUD .fpu("MUF|
00004ab0  53 20 46 37 2c 46 32 2c  46 35 22 29 0d 21 e8 1e  |S F7,F2,F5").!..|
00004ac0  45 51 55 44 20 a4 66 70  75 28 22 41 44 46 53 20  |EQUD .fpu("ADFS |
00004ad0  46 36 2c 46 36 2c 46 37  22 29 0d 21 f2 05 3a 0d  |F6,F6,F7").!..:.|
00004ae0  21 fc 1e 45 51 55 44 20  a4 66 70 75 28 22 4d 55  |!..EQUD .fpu("MU|
00004af0  46 53 20 46 33 2c 46 33  2c 46 32 22 29 0d 22 06  |FS F3,F3,F2").".|
00004b00  1e 45 51 55 44 20 a4 66  70 75 28 22 4d 55 46 53  |.EQUD .fpu("MUFS|
00004b10  20 46 33 2c 46 33 2c 46  30 22 29 0d 22 10 20 45  | F3,F3,F0").". E|
00004b20  51 55 44 20 a4 66 70 75  28 22 4d 55 46 53 20 46  |QUD .fpu("MUFS F|
00004b30  33 2c 46 33 2c 23 32 2e  30 22 29 0d 22 1a 1e 45  |3,F3,#2.0")."..E|
00004b40  51 55 44 20 a4 66 70 75  28 22 4d 55 46 53 20 46  |QUD .fpu("MUFS F|
00004b50  34 2c 46 34 2c 46 32 22  29 0d 22 24 1e 45 51 55  |4,F4,F2")."$.EQU|
00004b60  44 20 a4 66 70 75 28 22  4d 55 46 53 20 46 34 2c  |D .fpu("MUFS F4,|
00004b70  46 34 2c 46 31 22 29 0d  22 2e 20 45 51 55 44 20  |F4,F1").". EQUD |
00004b80  a4 66 70 75 28 22 4d 55  46 53 20 46 34 2c 46 34  |.fpu("MUFS F4,F4|
00004b90  2c 23 32 2e 30 22 29 0d  22 38 1e 45 51 55 44 20  |,#2.0")."8.EQUD |
00004ba0  a4 66 70 75 28 22 41 44  46 53 20 46 33 2c 46 33  |.fpu("ADFS F3,F3|
00004bb0  2c 46 34 22 29 0d 22 42  1e 45 51 55 44 20 a4 66  |,F4")."B.EQUD .f|
00004bc0  70 75 28 22 4d 55 46 53  20 46 37 2c 46 32 2c 46  |pu("MUFS F7,F2,F|
00004bd0  32 22 29 0d 22 4c 1e 45  51 55 44 20 a4 66 70 75  |2")."L.EQUD .fpu|
00004be0  28 22 4d 55 46 53 20 46  34 2c 46 31 2c 46 31 22  |("MUFS F4,F1,F1"|
00004bf0  29 0d 22 56 1e 45 51 55  44 20 a4 66 70 75 28 22  |)."V.EQUD .fpu("|
00004c00  53 55 46 53 20 46 37 2c  46 37 2c 46 34 22 29 0d  |SUFS F7,F7,F4").|
00004c10  22 60 1e 45 51 55 44 20  a4 66 70 75 28 22 4d 55  |"`.EQUD .fpu("MU|
00004c20  46 53 20 46 34 2c 46 30  2c 46 30 22 29 0d 22 6a  |FS F4,F0,F0")."j|
00004c30  1e 45 51 55 44 20 a4 66  70 75 28 22 53 55 46 53  |.EQUD .fpu("SUFS|
00004c40  20 46 37 2c 46 37 2c 46  34 22 29 0d 22 74 1e 45  | F7,F7,F4")."t.E|
00004c50  51 55 44 20 a4 66 70 75  28 22 4d 55 46 53 20 46  |QUD .fpu("MUFS F|
00004c60  37 2c 46 37 2c 46 35 22  29 0d 22 7e 1e 45 51 55  |7,F7,F5")."~.EQU|
00004c70  44 20 a4 66 70 75 28 22  41 44 46 53 20 46 37 2c  |D .fpu("ADFS F7,|
00004c80  46 37 2c 46 33 22 29 0d  22 88 1e 45 51 55 44 20  |F7,F3")."..EQUD |
00004c90  a4 66 70 75 28 22 4d 55  46 53 20 46 35 2c 46 31  |.fpu("MUFS F5,F1|
00004ca0  2c 46 31 22 29 0d 22 92  1e 45 51 55 44 20 a4 66  |,F1")."..EQUD .f|
00004cb0  70 75 28 22 41 44 46 53  20 46 34 2c 46 34 2c 46  |pu("ADFS F4,F4,F|
00004cc0  35 22 29 0d 22 9c 1e 45  51 55 44 20 a4 66 70 75  |5")."..EQUD .fpu|
00004cd0  28 22 4d 55 46 53 20 46  35 2c 46 32 2c 46 32 22  |("MUFS F5,F2,F2"|
00004ce0  29 0d 22 a6 1e 45 51 55  44 20 a4 66 70 75 28 22  |)."..EQUD .fpu("|
00004cf0  41 44 46 53 20 46 34 2c  46 34 2c 46 35 22 29 0d  |ADFS F4,F4,F5").|
00004d00  22 b0 1e 45 51 55 44 20  a4 66 70 75 28 22 44 56  |"..EQUD .fpu("DV|
00004d10  46 53 20 46 37 2c 46 37  2c 46 34 22 29 0d 22 ba  |FS F7,F7,F4").".|
00004d20  1b 45 51 55 44 20 a4 66  70 75 28 22 4d 4e 46 53  |.EQUD .fpu("MNFS|
00004d30  20 46 37 2c 46 37 22 29  0d 22 c4 1d 45 51 55 44  | F7,F7")."..EQUD|
00004d40  20 a4 66 70 75 28 22 43  4d 45 53 20 46 37 2c 23  | .fpu("CMES F7,#|
00004d50  30 2e 30 22 29 0d 22 ce  1f 45 51 55 44 20 a4 66  |0.0")."..EQUD .f|
00004d60  70 75 28 22 4d 56 46 4c  54 53 20 46 37 2c 23 30  |pu("MVFLTS F7,#0|
00004d70  2e 30 22 29 0d 22 d8 1d  45 51 55 44 20 a4 66 70  |.0")."..EQUD .fp|
00004d80  75 28 22 43 4d 45 53 20  46 36 2c 23 30 2e 30 22  |u("CMES F6,#0.0"|
00004d90  29 0d 22 e2 1f 45 51 55  44 20 a4 66 70 75 28 22  |)."..EQUD .fpu("|
00004da0  4d 56 46 4c 54 53 20 46  36 2c 23 30 2e 30 22 29  |MVFLTS F6,#0.0")|
00004db0  0d 22 ec 21 45 51 55 44  20 a4 66 70 75 28 22 4c  |.".!EQUD .fpu("L|
00004dc0  44 46 53 20 46 33 2c 5b  52 30 2c 23 35 32 5d 22  |DFS F3,[R0,#52]"|
00004dd0  29 0d 22 f6 1e 45 51 55  44 20 a4 66 70 75 28 22  |)."..EQUD .fpu("|
00004de0  50 4f 57 53 20 46 37 2c  46 37 2c 46 33 22 29 0d  |POWS F7,F7,F3").|
00004df0  23 00 21 45 51 55 44 20  a4 66 70 75 28 22 4c 44  |#.!EQUD .fpu("LD|
00004e00  46 53 20 46 33 2c 5b 52  30 2c 23 34 30 5d 22 29  |FS F3,[R0,#40]")|
00004e10  0d 23 0a 1e 45 51 55 44  20 a4 66 70 75 28 22 4d  |.#..EQUD .fpu("M|
00004e20  55 46 53 20 46 34 2c 46  33 2c 46 37 22 29 0d 23  |UFS F4,F3,F7").#|
00004e30  14 21 45 51 55 44 20 a4  66 70 75 28 22 4c 44 46  |.!EQUD .fpu("LDF|
00004e40  53 20 46 33 2c 5b 52 30  2c 23 32 38 5d 22 29 0d  |S F3,[R0,#28]").|
00004e50  23 1e 1e 45 51 55 44 20  a4 66 70 75 28 22 4d 55  |#..EQUD .fpu("MU|
00004e60  46 53 20 46 33 2c 46 33  2c 46 36 22 29 0d 23 28  |FS F3,F3,F6").#(|
00004e70  1d 45 51 55 44 20 a4 66  70 75 28 22 4c 44 46 53  |.EQUD .fpu("LDFS|
00004e80  20 46 35 2c 5b 52 31 5d  22 29 0d 23 32 1e 45 51  | F5,[R1]").#2.EQ|
00004e90  55 44 20 a4 66 70 75 28  22 41 44 46 53 20 46 35  |UD .fpu("ADFS F5|
00004ea0  2c 46 35 2c 46 33 22 29  0d 23 3c 1e 45 51 55 44  |,F5,F3").#<.EQUD|
00004eb0  20 a4 66 70 75 28 22 41  44 46 53 20 46 35 2c 46  | .fpu("ADFS F5,F|
00004ec0  35 2c 46 34 22 29 0d 23  46 1d 45 51 55 44 20 a4  |5,F4").#F.EQUD .|
00004ed0  66 70 75 28 22 53 54 46  53 20 46 35 2c 5b 52 31  |fpu("STFS F5,[R1|
00004ee0  5d 22 29 0d 23 50 21 45  51 55 44 20 a4 66 70 75  |]").#P!EQUD .fpu|
00004ef0  28 22 4c 44 46 53 20 46  33 2c 5b 52 30 2c 23 34  |("LDFS F3,[R0,#4|
00004f00  34 5d 22 29 0d 23 5a 1e  45 51 55 44 20 a4 66 70  |4]").#Z.EQUD .fp|
00004f10  75 28 22 4d 55 46 53 20  46 34 2c 46 33 2c 46 37  |u("MUFS F4,F3,F7|
00004f20  22 29 0d 23 64 21 45 51  55 44 20 a4 66 70 75 28  |").#d!EQUD .fpu(|
00004f30  22 4c 44 46 53 20 46 33  2c 5b 52 30 2c 23 33 32  |"LDFS F3,[R0,#32|
00004f40  5d 22 29 0d 23 6e 1e 45  51 55 44 20 a4 66 70 75  |]").#n.EQUD .fpu|
00004f50  28 22 4d 55 46 53 20 46  33 2c 46 33 2c 46 36 22  |("MUFS F3,F3,F6"|
00004f60  29 0d 23 78 20 45 51 55  44 20 a4 66 70 75 28 22  |).#x EQUD .fpu("|
00004f70  4c 44 46 53 20 46 35 2c  5b 52 31 2c 23 34 5d 22  |LDFS F5,[R1,#4]"|
00004f80  29 0d 23 82 1e 45 51 55  44 20 a4 66 70 75 28 22  |).#..EQUD .fpu("|
00004f90  41 44 46 53 20 46 35 2c  46 35 2c 46 33 22 29 0d  |ADFS F5,F5,F3").|
00004fa0  23 8c 1e 45 51 55 44 20  a4 66 70 75 28 22 41 44  |#..EQUD .fpu("AD|
00004fb0  46 53 20 46 35 2c 46 35  2c 46 34 22 29 0d 23 96  |FS F5,F5,F4").#.|
00004fc0  20 45 51 55 44 20 a4 66  70 75 28 22 53 54 46 53  | EQUD .fpu("STFS|
00004fd0  20 46 35 2c 5b 52 31 2c  23 34 5d 22 29 0d 23 a0  | F5,[R1,#4]").#.|
00004fe0  21 45 51 55 44 20 a4 66  70 75 28 22 4c 44 46 53  |!EQUD .fpu("LDFS|
00004ff0  20 46 33 2c 5b 52 30 2c  23 34 38 5d 22 29 0d 23  | F3,[R0,#48]").#|
00005000  aa 1e 45 51 55 44 20 a4  66 70 75 28 22 4d 55 46  |..EQUD .fpu("MUF|
00005010  53 20 46 34 2c 46 33 2c  46 37 22 29 0d 23 b4 21  |S F4,F3,F7").#.!|
00005020  45 51 55 44 20 a4 66 70  75 28 22 4c 44 46 53 20  |EQUD .fpu("LDFS |
00005030  46 33 2c 5b 52 30 2c 23  33 36 5d 22 29 0d 23 be  |F3,[R0,#36]").#.|
00005040  1e 45 51 55 44 20 a4 66  70 75 28 22 4d 55 46 53  |.EQUD .fpu("MUFS|
00005050  20 46 33 2c 46 33 2c 46  36 22 29 0d 23 c8 20 45  | F3,F3,F6").#. E|
00005060  51 55 44 20 a4 66 70 75  28 22 4c 44 46 53 20 46  |QUD .fpu("LDFS F|
00005070  35 2c 5b 52 31 2c 23 38  5d 22 29 0d 23 d2 1e 45  |5,[R1,#8]").#..E|
00005080  51 55 44 20 a4 66 70 75  28 22 41 44 46 53 20 46  |QUD .fpu("ADFS F|
00005090  35 2c 46 35 2c 46 33 22  29 0d 23 dc 1e 45 51 55  |5,F5,F3").#..EQU|
000050a0  44 20 a4 66 70 75 28 22  41 44 46 53 20 46 35 2c  |D .fpu("ADFS F5,|
000050b0  46 35 2c 46 34 22 29 0d  23 e6 20 45 51 55 44 20  |F5,F4").#. EQUD |
000050c0  a4 66 70 75 28 22 53 54  46 53 20 46 35 2c 5b 52  |.fpu("STFS F5,[R|
000050d0  31 2c 23 38 5d 22 29 0d  23 f0 0d 42 20 69 6e 74  |1,#8]").#..B int|
000050e0  65 6e 6c 70 0d 23 fa 05  5d 0d 24 04 05 e1 0d 24  |enlp.#..].$....$|
000050f0  0e 05 3a 0d 24 18 0d dd  20 f2 63 6f 6c 6f 75 72  |..:.$... .colour|
00005100  0d 24 22 0e 5b 20 4f 50  54 20 6f 70 74 25 0d 24  |.$".[ OPT opt%.$|
00005110  2c 0b 2e 63 6f 6c 6f 75  72 0d 24 36 14 53 54 4d  |,..colour.$6.STM|
00005120  46 44 20 52 31 33 21 2c  7b 52 31 34 7d 0d 24 40  |FD R13!,{R14}.$@|
00005130  10 4c 44 52 20 52 30 2c  69 6e 70 75 74 0d 24 4a  |.LDR R0,input.$J|
00005140  11 4c 44 52 20 52 31 2c  6f 75 74 70 75 74 0d 24  |.LDR R1,output.$|
00005150  54 0f 4c 44 52 20 52 32  2c 5b 52 30 5d 0d 24 5e  |T.LDR R2,[R0].$^|
00005160  12 4c 44 52 20 52 33 2c  5b 52 30 2c 23 34 5d 0d  |.LDR R3,[R0,#4].|
00005170  24 68 12 4c 44 52 20 52  34 2c 5b 52 30 2c 23 38  |$h.LDR R4,[R0,#8|
00005180  5d 0d 24 72 10 4c 44 52  20 52 31 32 2c 73 65 65  |].$r.LDR R12,see|
00005190  64 0d 24 7c 12 4c 44 52  20 52 31 31 2c 62 69 74  |d.$|.LDR R11,bit|
000051a0  6d 61 70 0d 24 86 0f 4d  4f 56 20 52 39 2c 23 26  |map.$..MOV R9,#&|
000051b0  44 44 0d 24 90 1b 42 4c  20 72 61 6e 64 6f 6d 3a  |DD.$..BL random:|
000051c0  41 44 44 20 52 32 2c 52  32 2c 52 31 30 0d 24 9a  |ADD R2,R2,R10.$.|
000051d0  1b 42 4c 20 72 61 6e 64  6f 6d 3a 41 44 44 20 52  |.BL random:ADD R|
000051e0  33 2c 52 33 2c 52 31 30  0d 24 a4 1b 42 4c 20 72  |3,R3,R10.$..BL r|
000051f0  61 6e 64 6f 6d 3a 41 44  44 20 52 34 2c 52 34 2c  |andom:ADD R4,R4,|
00005200  52 31 30 0d 24 ae 10 53  54 52 20 52 31 32 2c 73  |R10.$..STR R12,s|
00005210  65 65 64 0d 24 b8 37 43  4d 50 20 52 32 2c 23 26  |eed.$.7CMP R2,#&|
00005220  30 30 3a 4d 4f 56 4c 54  20 52 32 2c 23 26 30 30  |00:MOVLT R2,#&00|
00005230  3a 43 4d 50 20 52 32 2c  23 26 46 46 3a 4d 4f 56  |:CMP R2,#&FF:MOV|
00005240  47 54 20 52 32 2c 23 26  46 46 0d 24 c2 37 43 4d  |GT R2,#&FF.$.7CM|
00005250  50 20 52 33 2c 23 26 30  30 3a 4d 4f 56 4c 54 20  |P R3,#&00:MOVLT |
00005260  52 33 2c 23 26 30 30 3a  43 4d 50 20 52 33 2c 23  |R3,#&00:CMP R3,#|
00005270  26 46 46 3a 4d 4f 56 47  54 20 52 33 2c 23 26 46  |&FF:MOVGT R3,#&F|
00005280  46 0d 24 cc 37 43 4d 50  20 52 34 2c 23 26 30 30  |F.$.7CMP R4,#&00|
00005290  3a 4d 4f 56 4c 54 20 52  34 2c 23 26 30 30 3a 43  |:MOVLT R4,#&00:C|
000052a0  4d 50 20 52 34 2c 23 26  46 46 3a 4d 4f 56 47 54  |MP R4,#&FF:MOVGT|
000052b0  20 52 34 2c 23 26 46 46  0d 24 d6 2a 80 20 52 35  | R4,#&FF.$.*. R5|
000052c0  2c 52 32 2c 23 26 43 30  3a 80 20 52 36 2c 52 33  |,R2,#&C0:. R6,R3|
000052d0  2c 23 26 43 30 3a 80 20  52 37 2c 52 34 2c 23 26  |,#&C0:. R7,R4,#&|
000052e0  43 30 0d 24 e0 2a 80 20  52 32 2c 52 32 2c 23 26  |C0.$.*. R2,R2,#&|
000052f0  33 46 3a 80 20 52 33 2c  52 33 2c 23 26 33 46 3a  |3F:. R3,R3,#&3F:|
00005300  80 20 52 34 2c 52 34 2c  23 26 33 46 0d 24 ea 40  |. R4,R4,#&3F.$.@|
00005310  4d 4f 56 20 52 38 2c 52  35 2c 41 53 52 20 23 26  |MOV R8,R5,ASR #&|
00005320  30 36 3a 84 52 20 52 38  2c 52 38 2c 52 36 2c 41  |06:.R R8,R8,R6,A|
00005330  53 52 20 23 26 30 34 3a  84 52 20 52 38 2c 52 38  |SR #&04:.R R8,R8|
00005340  2c 52 37 2c 41 53 52 20  23 26 30 32 0d 24 f4 3c  |,R7,ASR #&02.$.<|
00005350  4d 4f 56 20 52 31 30 2c  23 26 36 34 3a 4d 55 4c  |MOV R10,#&64:MUL|
00005360  20 52 39 2c 52 32 2c 52  31 30 3a 4d 4f 56 20 52  | R9,R2,R10:MOV R|
00005370  31 30 2c 23 26 38 32 3a  4d 4c 41 20 52 39 2c 52  |10,#&82:MLA R9,R|
00005380  33 2c 52 31 30 2c 52 39  0d 24 fe 30 4d 4f 56 20  |3,R10,R9.$.0MOV |
00005390  52 31 30 2c 23 26 31 39  3a 4d 4c 41 20 52 39 2c  |R10,#&19:MLA R9,|
000053a0  52 34 2c 52 31 30 2c 52  39 3a 80 20 52 39 2c 52  |R4,R10,R9:. R9,R|
000053b0  39 2c 23 26 33 30 30 30  0d 25 08 18 84 52 20 52  |9,#&3000.%...R R|
000053c0  38 2c 52 38 2c 52 39 2c  41 53 52 20 23 26 30 36  |8,R8,R9,ASR #&06|
000053d0  0d 25 12 0f 53 54 52 20  52 38 2c 5b 52 31 5d 0d  |.%..STR R8,[R1].|
000053e0  25 1c 13 4c 44 4d 46 44  20 52 31 33 21 2c 7b 50  |%..LDMFD R13!,{P|
000053f0  43 7d 0d 25 26 05 3a 0d  25 30 0b 2e 72 61 6e 64  |C}.%&.:.%0..rand|
00005400  6f 6d 0d 25 3a 3c 4d 4f  56 53 20 52 31 32 2c 52  |om.%:<MOVS R12,R|
00005410  31 32 2c 4c 53 4c 20 23  31 3a 82 43 53 20 52 31  |12,LSL #1:.CS R1|
00005420  32 2c 52 31 32 2c 52 31  31 3a 4d 4f 56 20 52 31  |2,R12,R11:MOV R1|
00005430  30 2c 52 31 30 2c 4c 53  52 20 23 26 30 41 0d 25  |0,R10,LSR #&0A.%|
00005440  44 40 4d 4f 56 53 20 52  31 32 2c 52 31 32 2c 4c  |D@MOVS R12,R12,L|
00005450  53 4c 20 23 31 3a 82 43  53 20 52 31 32 2c 52 31  |SL #1:.CS R12,R1|
00005460  32 2c 52 31 31 3a 41 44  44 20 52 31 30 2c 52 31  |2,R11:ADD R10,R1|
00005470  30 2c 52 31 32 2c 4c 53  52 20 23 26 30 41 0d 25  |0,R12,LSR #&0A.%|
00005480  4e 40 4d 4f 56 53 20 52  31 32 2c 52 31 32 2c 4c  |N@MOVS R12,R12,L|
00005490  53 4c 20 23 31 3a 82 43  53 20 52 31 32 2c 52 31  |SL #1:.CS R12,R1|
000054a0  32 2c 52 31 31 3a 41 44  44 20 52 31 30 2c 52 31  |2,R11:ADD R10,R1|
000054b0  30 2c 52 31 32 2c 4c 53  52 20 23 26 30 41 0d 25  |0,R12,LSR #&0A.%|
000054c0  58 40 4d 4f 56 53 20 52  31 32 2c 52 31 32 2c 4c  |X@MOVS R12,R12,L|
000054d0  53 4c 20 23 31 3a 82 43  53 20 52 31 32 2c 52 31  |SL #1:.CS R12,R1|
000054e0  32 2c 52 31 31 3a 41 44  44 20 52 31 30 2c 52 31  |2,R11:ADD R10,R1|
000054f0  30 2c 52 31 32 2c 4c 53  52 20 23 26 30 41 0d 25  |0,R12,LSR #&0A.%|
00005500  62 18 53 55 42 20 52 31  30 2c 52 31 30 2c 23 26  |b.SUB R10,R10,#&|
00005510  38 30 30 30 30 30 0d 25  6c 12 4d 55 4c 20 52 31  |800000.%l.MUL R1|
00005520  30 2c 52 39 2c 52 31 30  0d 25 76 18 4d 4f 56 20  |0,R9,R10.%v.MOV |
00005530  52 31 30 2c 52 31 30 2c  41 53 52 20 23 26 31 41  |R10,R10,ASR #&1A|
00005540  0d 25 80 0e 4d 4f 56 20  50 43 2c 52 31 34 0d 25  |.%..MOV PC,R14.%|
00005550  8a 05 3a 0d 25 94 10 2e  73 65 65 64 20 45 51 55  |..:.%...seed EQU|
00005560  44 20 91 0d 25 9e 1a 2e  62 69 74 6d 61 70 20 45  |D ..%...bitmap E|
00005570  51 55 44 20 26 31 44 38  37 32 42 34 31 0d 25 a8  |QUD &1D872B41.%.|
00005580  05 5d 0d 25 b2 05 e1 0d  25 bc 05 3a 0d 25 c6 11  |.].%....%..:.%..|
00005590  dd 20 a4 66 70 75 28 63  6f 64 65 24 29 0d 25 d0  |. .fpu(code$).%.|
000055a0  11 6f 70 24 3d c0 63 6f  64 65 24 2c 33 29 0d 25  |.op$=.code$,3).%|
000055b0  da 20 6f 70 74 24 3d c1  63 6f 64 65 24 2c 34 2c  |. opt$=.code$,4,|
000055c0  a7 63 6f 64 65 24 2c 22  20 22 29 2d 34 29 0d 25  |.code$," ")-4).%|
000055d0  e4 1e 72 65 67 24 3d c1  63 6f 64 65 24 2c a7 63  |..reg$=.code$,.c|
000055e0  6f 64 65 24 2c 22 20 22  29 2b 31 29 0d 25 ee 20  |ode$," ")+1).%. |
000055f0  e7 20 a9 28 6f 70 74 24  29 3c 33 20 8c 20 6f 70  |. .(opt$)<3 . op|
00005600  74 24 3d 22 41 4c 22 2b  6f 70 74 24 0d 25 f8 3a  |t$="AL"+opt$.%.:|
00005610  63 6e 64 25 3d a7 22 45  51 4e 45 43 53 43 43 4d  |cnd%=."EQNECSCCM|
00005620  49 50 4c 56 53 56 43 48  49 4c 53 47 45 4c 54 47  |IPLVSVCHILSGELTG|
00005630  54 4c 45 41 4c 4e 56 22  2c c0 6f 70 74 24 2c 32  |TLEALNV",.opt$,2|
00005640  29 29 20 81 20 32 0d 26  02 1e 70 72 63 25 3d a7  |)) . 2.&..prc%=.|
00005650  22 53 44 45 50 22 2c c1  6f 70 74 24 2c 33 2c 31  |"SDEP",.opt$,3,1|
00005660  29 29 2d 31 0d 26 0c 17  72 6e 64 25 3d a7 22 50  |))-1.&..rnd%=."P|
00005670  4d 5a 22 2c 6f 70 74 24  2c 34 29 0d 26 16 05 3a  |MZ",opt$,4).&..:|
00005680  0d 26 20 18 6f 70 25 3d  a7 22 53 54 46 4c 44 46  |.& .op%=."STFLDF|
00005690  22 2c 6f 70 24 29 2d 31  0d 26 2a 2d e7 20 6f 70  |",op$)-1.&*-. op|
000056a0  25 3e 3d 30 20 8c 20 3d  a4 64 61 74 61 28 6f 70  |%>=0 . =.data(op|
000056b0  25 20 81 20 33 2c 63 6e  64 25 2c 70 72 63 25 2c  |% . 3,cnd%,prc%,|
000056c0  72 65 67 24 29 0d 26 34  05 3a 0d 26 3e 43 69 6e  |reg$).&4.:.&>Cin|
000056d0  25 3d 28 63 6e 64 25 3c  3c 32 38 29 20 84 20 28  |%=(cnd%<<28) . (|
000056e0  28 70 72 63 25 20 80 20  32 29 3c 3c 31 39 29 20  |(prc% . 2)<<19) |
000056f0  84 20 28 28 70 72 63 25  20 80 20 31 29 3c 3c 37  |. ((prc% . 1)<<7|
00005700  29 20 84 20 28 72 6e 64  25 3c 3c 35 29 0d 26 48  |) . (rnd%<<5).&H|
00005710  05 3a 0d 26 52 39 6f 70  25 3d a7 22 41 44 46 4d  |.:.&R9op%=."ADFM|
00005720  55 46 53 55 46 52 53 46  44 56 46 52 44 46 50 4f  |UFSUFRSFDVFRDFPO|
00005730  57 52 50 57 52 4d 46 46  4d 4c 46 44 56 46 52 44  |WRPWRMFFMLFDVFRD|
00005740  50 4f 4c 22 2c 6f 70 24  29 2d 31 0d 26 5c 29 e7  |POL",op$)-1.&\).|
00005750  20 6f 70 25 3e 3d 30 20  8c 20 3d a4 62 69 6e 6f  | op%>=0 . =.bino|
00005760  70 73 28 6f 70 25 20 81  20 33 2c 69 6e 25 2c 72  |ps(op% . 3,in%,r|
00005770  65 67 24 29 0d 26 66 3c  6f 70 25 3d a7 22 4d 56  |eg$).&f<op%=."MV|
00005780  46 4d 4e 46 41 42 53 52  4e 44 53 51 54 4c 4f 47  |FMNFABSRNDSQTLOG|
00005790  4c 47 4e 45 58 50 53 49  4e 43 4f 53 54 41 4e 41  |LGNEXPSINCOSTANA|
000057a0  53 4e 41 43 53 41 54 4e  22 2c 6f 70 24 29 2d 31  |SNACSATN",op$)-1|
000057b0  0d 26 70 28 e7 20 6f 70  25 3e 3d 30 20 8c 20 3d  |.&p(. op%>=0 . =|
000057c0  a4 75 6e 6f 70 73 28 6f  70 25 20 81 20 33 2c 69  |.unops(op% . 3,i|
000057d0  6e 25 2c 72 65 67 24 29  0d 26 7a 1e 6f 70 25 3d  |n%,reg$).&z.op%=|
000057e0  a7 22 43 4d 46 43 4e 46  43 4d 45 43 4e 45 22 2c  |."CMFCNFCMECNE",|
000057f0  6f 70 24 29 2d 31 0d 26  84 26 e7 20 6f 70 25 3e  |op$)-1.&.&. op%>|
00005800  3d 30 20 8c 20 3d a4 63  6d 70 28 6f 70 25 20 81  |=0 . =.cmp(op% .|
00005810  20 33 2c 69 6e 25 2c 72  65 67 24 29 0d 26 8e 05  | 3,in%,reg$).&..|
00005820  3a 0d 26 98 28 85 20 32  35 35 2c 22 55 6e 72 65  |:.&.(. 255,"Unre|
00005830  63 6f 67 6e 69 73 65 64  20 66 70 75 20 69 6e 73  |cognised fpu ins|
00005840  74 72 75 63 74 69 6f 6e  22 0d 26 a2 05 3a 0d 26  |truction".&..:.&|
00005850  ac 1e dd 20 a4 65 76 61  6c 28 72 65 67 24 2c 74  |... .eval(reg$,t|
00005860  79 70 65 24 2c f8 20 63  68 72 25 29 0d 26 b6 1c  |ype$,. chr%).&..|
00005870  63 68 72 25 3d a7 72 65  67 24 2c 74 79 70 65 24  |chr%=.reg$,type$|
00005880  2c 63 68 72 25 2b 31 29  0d 26 c0 15 3d bb 28 c1  |,chr%+1).&..=.(.|
00005890  72 65 67 24 2c 63 68 72  25 2b 31 29 29 0d 26 ca  |reg$,chr%+1)).&.|
000058a0  05 3a 0d 26 d4 1a dd 20  a4 63 6f 6e 73 74 61 6e  |.:.&... .constan|
000058b0  74 28 72 65 67 24 2c 63  68 72 25 29 0d 26 de 3c  |t(reg$,chr%).&.<|
000058c0  3d a7 22 30 20 20 31 20  20 32 20 20 33 20 20 34  |=."0  1  2  3  4|
000058d0  20 20 35 20 20 30 2e 35  31 30 22 2c c3 28 a4 65  |  5  0.510",.(.e|
000058e0  76 61 6c 28 72 65 67 24  2c 22 23 22 2c 63 68 72  |val(reg$,"#",chr|
000058f0  25 29 29 29 20 81 20 33  0d 26 e8 05 3a 0d 26 f2  |%))) . 3.&..:.&.|
00005900  1f dd 20 a4 64 61 74 61  28 6f 70 25 2c 63 6e 64  |.. .data(op%,cnd|
00005910  25 2c 70 72 63 25 2c 72  65 67 24 29 0d 26 fc 0a  |%,prc%,reg$).&..|
00005920  63 68 72 25 3d 30 0d 27  06 20 66 64 25 3d a4 65  |chr%=0.'. fd%=.e|
00005930  76 61 6c 28 72 65 67 24  2c 22 46 22 2c 63 68 72  |val(reg$,"F",chr|
00005940  25 29 3c 3c 31 32 0d 27  10 20 72 6e 25 3d a4 65  |%)<<12.'. rn%=.e|
00005950  76 61 6c 28 72 65 67 24  2c 22 52 22 2c 63 68 72  |val(reg$,"R",chr|
00005960  25 29 3c 3c 31 36 0d 27  1a 20 6f 66 66 73 65 74  |%)<<16.'. offset|
00005970  25 3d a4 65 76 61 6c 28  72 65 67 24 2c 22 23 22  |%=.eval(reg$,"#"|
00005980  2c 63 68 72 25 29 0d 27  24 26 70 72 65 25 3d 28  |,chr%).'$&pre%=(|
00005990  a7 72 65 67 24 2c 22 5d  22 2c 63 68 72 25 29 3e  |.reg$,"]",chr%)>|
000059a0  30 29 20 80 20 28 31 3c  3c 32 34 29 0d 27 2e 1f  |0) . (1<<24).'..|
000059b0  77 62 25 3d 28 a7 72 65  67 24 2c 22 21 22 29 3e  |wb%=(.reg$,"!")>|
000059c0  30 29 80 20 28 31 3c 3c  32 31 29 0d 27 38 1f 73  |0). (1<<21).'8.s|
000059d0  67 6e 25 3d 28 6f 66 66  73 65 74 25 3e 3d 30 29  |gn%=(offset%>=0)|
000059e0  20 80 20 28 31 3c 3c 32  33 29 0d 27 42 1a 6f 66  | . (1<<23).'B.of|
000059f0  66 73 65 74 25 3d 94 28  6f 66 66 73 65 74 25 20  |fset%=.(offset% |
00005a00  81 20 34 29 0d 27 4c 44  69 6e 25 3d 28 63 6e 64  |. 4).'LDin%=(cnd|
00005a10  25 3c 3c 32 38 29 20 84  20 28 28 70 72 63 25 20  |%<<28) . ((prc% |
00005a20  80 20 32 29 3c 3c 32 32  29 20 84 20 28 28 70 72  |. 2)<<22) . ((pr|
00005a30  63 25 20 80 20 31 29 3c  3c 31 35 29 20 84 20 28  |c% . 1)<<15) . (|
00005a40  6f 70 25 3c 3c 32 30 29  0d 27 56 3d 3d 69 6e 25  |op%<<20).'V==in%|
00005a50  20 84 20 70 72 65 25 20  84 20 73 67 6e 25 20 84  | . pre% . sgn% .|
00005a60  20 77 62 25 20 84 20 72  6e 25 20 84 20 66 64 25  | wb% . rn% . fd%|
00005a70  20 84 20 6f 66 66 73 65  74 25 20 84 20 26 43 30  | . offset% . &C0|
00005a80  30 30 31 30 30 0d 27 60  05 3a 0d 27 6a 1b dd 20  |00100.'`.:.'j.. |
00005a90  a4 62 69 6e 6f 70 73 28  6f 70 25 2c 69 6e 25 2c  |.binops(op%,in%,|
00005aa0  72 65 67 24 29 0d 27 74  0a 63 68 72 25 3d 30 0d  |reg$).'t.chr%=0.|
00005ab0  27 7e 20 66 64 25 3d a4  65 76 61 6c 28 72 65 67  |'~ fd%=.eval(reg|
00005ac0  24 2c 22 46 22 2c 63 68  72 25 29 3c 3c 31 32 0d  |$,"F",chr%)<<12.|
00005ad0  27 88 20 66 6e 25 3d a4  65 76 61 6c 28 72 65 67  |'. fn%=.eval(reg|
00005ae0  24 2c 22 46 22 2c 63 68  72 25 29 3c 3c 31 36 0d  |$,"F",chr%)<<16.|
00005af0  27 92 1c 66 6d 25 3d a4  65 76 61 6c 28 72 65 67  |'..fm%=.eval(reg|
00005b00  24 2c 22 46 22 2c 63 68  72 25 29 0d 27 9c 36 e7  |$,"F",chr%).'.6.|
00005b10  20 63 68 72 25 3d 30 20  8c 20 66 6d 25 3d a4 63  | chr%=0 . fm%=.c|
00005b20  6f 6e 73 74 61 6e 74 28  72 65 67 24 2c 63 68 72  |onstant(reg$,chr|
00005b30  25 29 3a 69 25 3d 31 3c  3c 33 20 8b 20 69 25 3d  |%):i%=1<<3 . i%=|
00005b40  30 0d 27 a6 36 3d 69 6e  25 20 84 20 28 6f 70 25  |0.'.6=in% . (op%|
00005b50  3c 3c 32 30 29 20 84 20  66 6e 25 20 84 20 66 64  |<<20) . fn% . fd|
00005b60  25 20 84 20 69 25 20 84  20 66 6d 25 20 84 20 26  |% . i% . fm% . &|
00005b70  45 30 30 30 31 30 30 0d  27 b0 05 3a 0d 27 ba 1a  |E000100.'..:.'..|
00005b80  dd 20 a4 75 6e 6f 70 73  28 6f 70 25 2c 69 6e 25  |. .unops(op%,in%|
00005b90  2c 72 65 67 24 29 0d 27  c4 0a 63 68 72 25 3d 30  |,reg$).'..chr%=0|
00005ba0  0d 27 ce 20 66 64 25 3d  a4 65 76 61 6c 28 72 65  |.'. fd%=.eval(re|
00005bb0  67 24 2c 22 46 22 2c 63  68 72 25 29 3c 3c 31 32  |g$,"F",chr%)<<12|
00005bc0  0d 27 d8 1c 66 6d 25 3d  a4 65 76 61 6c 28 72 65  |.'..fm%=.eval(re|
00005bd0  67 24 2c 22 46 22 2c 63  68 72 25 29 0d 27 e2 36  |g$,"F",chr%).'.6|
00005be0  e7 20 63 68 72 25 3d 30  20 8c 20 66 6d 25 3d a4  |. chr%=0 . fm%=.|
00005bf0  63 6f 6e 73 74 61 6e 74  28 72 65 67 24 2c 63 68  |constant(reg$,ch|
00005c00  72 25 29 3a 69 25 3d 31  3c 3c 33 20 8b 20 69 25  |r%):i%=1<<3 . i%|
00005c10  3d 30 0d 27 ec 30 3d 69  6e 25 20 84 20 28 6f 70  |=0.'.0=in% . (op|
00005c20  25 3c 3c 32 30 29 20 84  20 66 64 25 20 84 20 69  |%<<20) . fd% . i|
00005c30  25 20 84 20 66 6d 25 20  84 20 26 45 30 30 38 31  |% . fm% . &E0081|
00005c40  30 30 0d 27 f6 05 3a 0d  28 00 18 dd 20 a4 63 6d  |00.'..:.(... .cm|
00005c50  70 28 6f 70 25 2c 69 6e  25 2c 72 65 67 24 29 0d  |p(op%,in%,reg$).|
00005c60  28 0a 0a 63 68 72 25 3d  30 0d 28 14 20 66 64 25  |(..chr%=0.(. fd%|
00005c70  3d a4 65 76 61 6c 28 72  65 67 24 2c 22 46 22 2c  |=.eval(reg$,"F",|
00005c80  63 68 72 25 29 3c 3c 31  36 0d 28 1e 1c 66 6d 25  |chr%)<<16.(..fm%|
00005c90  3d a4 65 76 61 6c 28 72  65 67 24 2c 22 46 22 2c  |=.eval(reg$,"F",|
00005ca0  63 68 72 25 29 0d 28 28  36 e7 20 63 68 72 25 3d  |chr%).((6. chr%=|
00005cb0  30 20 8c 20 66 6d 25 3d  a4 63 6f 6e 73 74 61 6e  |0 . fm%=.constan|
00005cc0  74 28 72 65 67 24 2c 63  68 72 25 29 3a 69 25 3d  |t(reg$,chr%):i%=|
00005cd0  31 3c 3c 33 20 8b 20 69  25 3d 30 0d 28 32 30 3d  |1<<3 . i%=0.(20=|
00005ce0  69 6e 25 20 84 20 28 6f  70 25 3c 3c 32 31 29 20  |in% . (op%<<21) |
00005cf0  84 20 66 64 25 20 84 20  69 25 20 84 20 66 6d 25  |. fd% . i% . fm%|
00005d00  20 84 20 26 45 39 30 46  31 31 30 0d ff           | . &E90F110..|
00005d0d