Home » Archimedes archive » Archimedes World » AW-1991-11.adf » November91 » !AWNov91/Goodies/3DGraphics/MODULESRC
!AWNov91/Goodies/3DGraphics/MODULESRC
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 » Archimedes World » AW-1991-11.adf » November91 |
Filename: | !AWNov91/Goodies/3DGraphics/MODULESRC |
Read OK: | ✔ |
File size: | 24AB bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
10REM >MODULESRC 15REM LEN Archimedes World November 1991 20DIM code% &3500 30REM registers 40lhs=0 50rhs=1 60div=2 70mod=3 80divsgn=4 90modsgn=5 100count=6 110index=7 120sp=13 130link=14 140: 150FOR pass=4 TO 7 STEP 3 160O%=code% 170P%=0 180[ OPT pass 190ALIGN 200equd 0 ;start code 210equd initialise_code ;init code 220equd finialise_code ;quit code 230equd 0 ;service code 240equd title_string ;module title 250equd help_string ;help text 260equd 0 ;command block 270equd &200 ;swi chunk base 280equd swi_handle ;swi handler 290equd swi_decode ;swi decoding table 300equd 0 ;swi decoding code 310; 320.title_string 330; 340; string given in *modules 350; 360equs "3DGraphics" 370equb 0 380align 390; 400.help_string 410; 420; string given in *help modules 430; 440equs "VectorGraphics" 450equb 9 460equs "0.03 (09 Apr 1991)" 470equb 0 480align 490; 500.initialise_code 510; 520; initialise module code 530; 540stmfd (sp)!,{R0,link} 550mov r0,#45 560bl set_viewangle 570mov r0,#1 580bl set_xangle 590bl set_yangle 600bl set_zangle 610ldmfd (sp)!,{R0,pc} 620: 630.finialise_code 640; 650;quit module code 660; 670stmfd (sp)!,{link} 680ldmfd (sp)!,{pc} 690: 700align 710.swi_decode 720; 730; sys command table the first is the block command 740; 750equs "Vector" 760equb 0 770equs "Plot" 780equb 0 790equs "SetViewangle" 800equb 0 810equs "SetXangle" 820equb 0 830equs "SetYangle" 840equb 0 850equs "SetZangle" 860equb 0 870equs "CalculateObject" 880equb 0 890equs "PlotObjectLine" 900equb 0 910equs "PlotObjectSolid" 920equb 0 930equb 0 940align 950; 960.swi_handle 970; 980; setion to jump to correct rountine on sys 990; 1000cmp r11,#(endofjumptable-startofjumptable)/4 1010addcc pc,pc,r11,lsl#2 1020b error 1030; 1040.startofjumptable 1050 1060b plot_code 1070b setview_code 1080b setx_code 1090b sety_code 1100b setz_code 1110b calcobject_code 1120b plotobjectL_code 1130b plotobjectS_code 1140 1150.endofjumptable 1160mov pc,link 1170; 1180; illegal sys error 1190; 1200.error 1210stmfd (sp)!,{link} 1220swi 1 1230equb 10 1240equs "SWI not known" 1250equb 13 1260equb 10 1270equb 0 1280align 1290ldmfd (sp)!,{pc} 1300; 1310; following procedures are sys calls 1320; 1330.plot_code 1340stmfd (sp)!,{link} 1350bl transfer 1360ldmfd (sp)!,{pc} 1370; 1380.setview_code 1390stmfd (sp)!,{link} 1400bl set_viewangle 1410ldmfd (sp)!,{pc} 1420; 1430.setx_code 1440stmfd (sp)!,{link} 1450bl set_xangle 1460ldmfd (sp)!,{pc} 1470; 1480.sety_code 1490stmfd (sp)!,{link} 1500bl set_yangle 1510ldmfd (sp)!,{pc} 1520; 1530.setz_code 1540stmfd (sp)!,{link} 1550bl set_zangle 1560ldmfd (sp)!,{pc} 1570; 1580.calcobject_code 1590stmfd (sp)!,{link} 1600bl calc_object 1610ldmfd (sp)!,{pc} 1620; 1630.plotobjectL_code 1640stmfd (sp)!,{link} 1650bl plot_objectL 1660ldmfd (sp)!,{pc} 1670; 1680.plotobjectS_code 1690stmfd (sp)!,{link} 1700bl plot_objectS 1710ldmfd (sp)!,{pc} 1720align 1730.getsin 1740; 1750; on entry r0 is angle in degrees 1760; on exit r6 is int value of angle 1770; 1780stmfd (sp)!,{r0,r1,link} 1790mov r0,r0,lsl#2 1800adr r1,sin 1810ldr r6,[r1,r0] 1820ldmfd (sp)!,{r0,r1,pc} 1830.sin 1840; 1850] 1860A=O% 1870FOR sin%=0 TO 359 1880IF SINRAD(sin%)<0.0001 AND SINRAD(sin%)>-0.0001 THEN 1890!O%=2 1900ELSE 1910!O%=(1/SINRAD(sin%))*1024 1920ENDIF 1930O%=O%+4 1940P%=P%+4 1950NEXT 1960[ 1970; 1980opt pass 1990.getcos 2000; 2010; on entry r0 is angle in degrees 2020; on exit r7 is int value of angle 2030; 2040stmfd (sp)!,{r0,r1,link} 2050mov r0,r0,lsl#2 2060adr r1,cos 2070ldr r7,[r1,r0] 2080ldmfd (sp)!,{r0,r1,pc} 2090.cos 2100; 2110] 2120FOR cos%=0 TO 359 2130IF COSRAD(cos%)<0.0001 AND COSRAD(cos%)>-0.0001 THEN 2140!O%=2 2150ELSE 2160!O%=(1/COSRAD(cos%))*1024 2170ENDIF 2180O%=O%+4 2190P%=P%+4 2200NEXT 2210[ 2220; 2230opt pass 2240; 2250.divide 2260; r0 lhs 2270; r1 rhs 2280; r2 on exit lhs DIV rhs 2290; r3 on exit lhs MOD rhs 2300; answer+0 DIV 2310; answer+4 MOD 2320; 2330stmfd (sp)!,{r0-r6,link} 2340eors divsgn,lhs,rhs 2350movs modsgn,lhs 2360rsbmi lhs,lhs,#0 2370teq rhs,#0 2380rsbmi rhs,rhs,#0 2390bl udiv32 2400teq divsgn,#0 2410rsbmi div,div,#0 2420teq modsgn,#0 2430rsbmi mod,mod,#0 2440adr count,answer 2450stmia count,{mod,div} 2460ldmfd (sp)!,{r0-r6,pc} 2470; 2480.udiv32 2490teq rhs,#0 2500beq diverr 2510mov mod,#0 2520mov div,#0 2530mov count,#32 2540; 2550.divlp1 2560subs count,count,#1 2570moveq pc,link 2580movs lhs,lhs,asl#1 2590bpl divlp1 2600; 2610.divlp2 2620movs lhs,lhs,asl#1 2630adc mod,mod,mod 2640cmp mod,rhs 2650subcs mod,mod,rhs 2660adc div,div,div 2670subs count,count,#1 2680bne divlp2 2690; 2700.diverr 2710mov pc,link 2720; 2730.set_xangle 2740stmfd (sp)!,{r0-r2,link} 2750adr r2,answer 2760mov r1,#90 2770bl divide 2780ldr r1,[r2,#4] 2790cmp r1,#0 2800addeq r0,r0,#1 2810mov r1,#360 2820bl divide 2830ldr r0,[r2,#4] 2840adr r1,xangle 2850str r0,[r1] 2860ldmfd (sp)!,{r0-r2,pc} 2870; 2880.set_yangle 2890stmfd (sp)!,{r0-r2,link} 2900adr r2,answer 2910mov r1,#90 2920bl divide 2930ldr r1,[r2,#4] 2940cmp r1,#0 2950addeq r0,r0,#1 2960mov r1,#360 2970bl divide 2980ldr r0,[r2,#4] 2990adr r1,yangle 3000str r0,[r1] 3010ldmfd (sp)!,{r0-r2,pc} 3020; 3030.set_zangle 3040stmfd (sp)!,{r0-r2,link} 3050adr r2,answer 3060mov r1,#90 3070bl divide 3080ldr r1,[r2,#4] 3090cmp r1,#0 3100addeq r0,r0,#1 3110mov r1,#360 3120bl divide 3130ldr r0,[r2,#4] 3140adr r1,zangle 3150str r0,[r1] 3160ldmfd (sp)!,{r0-r2,pc} 3170; 3180.set_viewangle 3190stmfd (sp)!,{r0-r2,link} 3200adr r2,answer 3210mov r1,#90 3220bl divide 3230ldr r1,[r2,#4] 3240cmp r1,#0 3250addeq r0,r0,#1 3260mov r1,#360 3270bl divide 3280ldr r0,[r2,#4] 3290adr r1,viewangle 3300str r0,[r1] 3310ldmfd (sp)!,{r0-r2,pc} 3320; 3330.plot3D 3340; 3350; converts x,y,z position to x,y position and plots point 3360; 3370stmfd (sp)!,{r0-r3,link} 3380bl calc_pos 3390adr r3,plotaction 3400ldmia r3,{r0-r2} 3410swi "OS_Plot" 3420ldmfd (sp)!,{r0-r3,pc} 3430; 3440.transfer 3450; 3460; transfers r0-r3 to storage points, plotaction,xpos,ypos,zpos 3470; 3480stmfd (sp)!,{r0-r4,link} 3490adr r4,plotaction 3500stmia r4,{r0-r3} 3510bl plot3D 3520ldmfd (sp)!,{r0-r4,pc} 3530 3540; 3550.answer 3560equd 0 3570equd 0 3580.viewangle 3590equd 0 3600.xangle 3610equd 0 3620.yangle 3630equd 0 3640.zangle 3650equd 0 3660.plotaction 3670equd 0 3680.xpos 3690equd 0 3700.ypos 3710equd 0 3720.zpos 3730equd 0 3740; 3750.readpos 3760; 3770; reads point storage block and *1024 3780; stores result in r8-r10 3790; 3800stmfd (sp)!,{r0,link} 3810adr r0,xpos 3820ldmia r0,{r8-r10} 3830cmp r8,#0 3840addeq r8,r8,#1 3850cmp r9,#0 3860addeq r9,r9,#1 3870cmp r10,#0 3880addeq r10,r10,#1 3890mov r8,r8,asl#10 3900mov r9,r9,asl#10 3910mov r10,r10,asl#10 3920.skip 3930ldmfd (sp)!,{r0,pc} 3940; 3950.calc_pos 3960; 3970; calculates 2D position from all given information 3980; 3990stmfd (sp)!,{r0-r10,link} 4000bl readpos 4010adr r0,zangle 4020ldr r0,[r0] 4030bl getcos 4040bl getsin 4050mov r0,r8 4060mov r1,r7 4070bl divide 4080adr r0,answer 4090ldr r3,[r0] 4100mov r0,r9 4110mov r1,r6 4120bl divide 4130adr r0,answer 4140ldr r4,[r0] 4150sub r0,r3,r4 4160adr r1,xpos 4170str r0,[r1] 4180mov r0,r8 4190mov r1,r6 4200bl divide 4210adr r0,answer 4220ldr r3,[r0] 4230mov r0,r9 4240mov r1,r7 4250bl divide 4260adr r0,answer 4270ldr r4,[r0] 4280add r0,r3,r4 4290adr r1,ypos 4300str r0,[r1] 4310mov r10,r10,asr#10 4320adr r1,zpos 4330str r10,[r1] 4340; 4350bl readpos 4360adr r0,yangle 4370ldr r0,[r0] 4380bl getcos 4390bl getsin 4400mov r0,r8 4410mov r1,r7 4420bl divide 4430adr r0,answer 4440ldr r3,[r0] 4450mov r0,r10 4460mov r1,r6 4470bl divide 4480adr r0,answer 4490ldr r4,[r0] 4500add r0,r3,r4 4510adr r1,xpos 4520str r0,[r1] 4530mov r9,r9,asr#10 4540adr r1,ypos 4550str r9,[r1] 4560mov r0,r10 4570mov r1,r7 4580bl divide 4590adr r0,answer 4600ldr r3,[r0] 4610mov r0,r8 4620mov r1,r6 4630bl divide 4640adr r0,answer 4650ldr r4,[r0] 4660sub r0,r3,r4 4670adr r1,zpos 4680str r0,[r1] 4690; 4700bl readpos 4710adr r0,xangle 4720ldr r0,[r0] 4730bl getcos 4740bl getsin 4750mov r8,r8,asr#10 4760adr r1,xpos 4770str r8,[r1] 4780mov r0,r9 4790mov r1,r7 4800bl divide 4810adr r0,answer 4820ldr r3,[r0] 4830mov r0,r10 4840mov r1,r6 4850bl divide 4860adr r0,answer 4870ldr r4,[r0] 4880sub r0,r3,r4 4890adr r1,ypos 4900str r0,[r1] 4910mov r0,r9 4920mov r1,r6 4930bl divide 4940adr r0,answer 4950ldr r3,[r0] 4960mov r0,10 4970mov r1,r7 4980bl divide 4990adr r0,answer 5000ldr r4,[r0] 5010add r0,r3,r4 5020adr r1,zpos 5030str r0,[r1] 5040; 5050bl readpos 5060adr r0,viewangle 5070ldr r0,[r0] 5080bl getcos 5090bl getsin 5100mov r0,r10 5110mov r1,r7 5120bl divide 5130adr r0,answer 5140ldr r3,[r0] 5150mov r8,r8,asr#10 5160add r8,r8,r3 5170adr r1,xpos 5180str r8,[r1] 5190; 5200mov r0,r10 5210mov r1,r6 5220bl divide 5230adr r0,answer 5240ldr r3,[r0] 5250mov r9,r9,asr#10 5260add r9,r9,r3 5270adr r1,ypos 5280str r9,[r1] 5290; 5300ldmfd (sp)!,{r0-r10,pc} 5310; 5320.calc_object 5330stmfd (sp)!,{r0-r6,link} 5340; r0 is pointer to co-ordinate block 5350; r1 is pointer to plot block 5360stmfd (sp)!,{r0} 5370mov r0,r2 5380bl set_xangle 5390mov r0,r3 5400bl set_yangle 5410mov r0,r4 5420bl set_zangle 5430mov r0,r5 5440bl set_viewangle 5450ldmfd (sp)!,{r0} 5460adr r2,plotaction 5470.return 5480ldmia r0!,{r3-r6} 5490cmp r3,#256 5500streq r3,[r1,#0] 5510ldmeqfd (sp)!,{r0-r6,pc} 5520stmia r2,{r3-r6} 5530bl calc_pos 5540ldmia r2,{r3-r5} 5550stmia r1!,{r3-r5} 5560b return 5570; 5580.plot_objectL 5590stmfd (sp)!,{r0-r2,link} 5600; r0 is pointer to plot block 5610mov r3,r0 5620.returnplot 5630ldmia r3!,{r0-r2} 5640cmp r0,#256 5650ldmeqfd (sp)!,{r0-r2,pc} 5660swi "OS_Plot" 5670b returnplot 5680; 5690.plot_objectS 5700stmfd (sp)!,{link} 5710; r0 is pointer to plot block 5720ldmfd (sp)!,{pc} 5730] 5740NEXT 5750PROCsave 5760END 5770: 5780DEFPROCsave 5790OSCLI "SAVE 3DGraphics "+STR$~code%+" "+STR$~O% 5800OSCLI "SETTYPE 3DGraphics FFA" 5810ENDPROC
� >MODULESRC &� � Archimedes World November 1991 � code% &3500 � registers ( lhs=0 2 rhs=1 < div=2 F mod=3 Pdivsgn=4 Zmodsgn=5 dcount=6 nindex=7 x sp=13 �link=14 �: �� pass=4 � 7 � 3 �O%=code% �P%=0 �[ OPT pass � ALIGN �-equd 0 ;start code �,equd initialise_code ;init code �,equd finialise_code ;quit code �/equd 0 ;service code �/equd title_string ;module title �,equd help_string ;help text 0equd 0 ;command block 1equd &200 ;swi chunk base .equd swi_handle ;swi handler "5equd swi_decode ;swi decoding table ,4equd 0 ;swi decoding code 6; @.title_string J; T; string given in *modules ^; hequs "3DGraphics" r equb 0 | align �; �.help_string �; �#; string given in *help modules �; �equs "VectorGraphics" � equb 9 �equs "0.03 (09 Apr 1991)" � equb 0 � align �; �.initialise_code �; ; initialise module code ; stmfd (sp)!,{R0,link} &mov r0,#45 0bl set_viewangle : mov r0,#1 Dbl set_xangle Nbl set_yangle Xbl set_zangle bldmfd (sp)!,{R0,pc} l: v.finialise_code �; �;quit module code �; �stmfd (sp)!,{link} �ldmfd (sp)!,{pc} �: � align �.swi_decode �; �6; sys command table the first is the block command �; �equs "Vector" � equb 0 equs "Plot" equb 0 equs "SetViewangle" equb 0 *equs "SetXangle" 4 equb 0 >equs "SetYangle" H equb 0 Requs "SetZangle" \ equb 0 fequs "CalculateObject" p equb 0 zequs "PlotObjectLine" � equb 0 �equs "PlotObjectSolid" � equb 0 � equb 0 � align �; �.swi_handle �; �/; setion to jump to correct rountine on sys �; �0cmp r11,#(endofjumptable-startofjumptable)/4 �addcc pc,pc,r11,lsl#2 �b error ; .startofjumptable $b plot_code .b setview_code 8b setx_code Bb sety_code Lb setz_code Vb calcobject_code `b plotobjectL_code jb plotobjectS_code t ~.endofjumptable �mov pc,link �; �; illegal sys error �; � .error �stmfd (sp)!,{link} � swi 1 �equb 10 �equs "SWI not known" �equb 13 �equb 10 � equb 0 align ldmfd (sp)!,{pc} ; (; following procedures are sys calls (; 2.plot_code <stmfd (sp)!,{link} Fbl transfer Pldmfd (sp)!,{pc} Z; d.setview_code nstmfd (sp)!,{link} xbl set_viewangle �ldmfd (sp)!,{pc} �; �.setx_code �stmfd (sp)!,{link} �bl set_xangle �ldmfd (sp)!,{pc} �; �.sety_code �stmfd (sp)!,{link} �bl set_yangle �ldmfd (sp)!,{pc} �; �.setz_code stmfd (sp)!,{link} bl set_zangle ldmfd (sp)!,{pc} "; ,.calcobject_code 6stmfd (sp)!,{link} @bl calc_object Jldmfd (sp)!,{pc} T; ^.plotobjectL_code hstmfd (sp)!,{link} rbl plot_objectL |ldmfd (sp)!,{pc} �; �.plotobjectS_code �stmfd (sp)!,{link} �bl plot_objectS �ldmfd (sp)!,{pc} � align �.getsin �; �%; on entry r0 is angle in degrees �&; on exit r6 is int value of angle �; �stmfd (sp)!,{r0,r1,link} �mov r0,r0,lsl#2 adr r1,sin ldr r6,[r1,r0] ldmfd (sp)!,{r0,r1,pc} &.sin 0; :] DA=O% N� sin%=0 � 359 X*� ��(sin%)<0.0001 � ��(sin%)>-0.0001 � b !O%=2 l� v!O%=(1/��(sin%))*1024 �� �O%=O%+4 �P%=P%+4 �� �[ �; �opt pass �.getcos �; �%; on entry r0 is angle in degrees �&; on exit r7 is int value of angle �; �stmfd (sp)!,{r0,r1,link} mov r0,r0,lsl#2 adr r1,cos ldr r7,[r1,r0] ldmfd (sp)!,{r0,r1,pc} *.cos 4; >] H� cos%=0 � 359 R*� ��(cos%)<0.0001 � ��(cos%)>-0.0001 � \ !O%=2 f� p!O%=(1/��(cos%))*1024 z� �O%=O%+4 �P%=P%+4 �� �[ �; �opt pass �; �.divide �; r0 lhs �; r1 rhs �; r2 on exit lhs � rhs �; r3 on exit lhs � rhs �; answer+0 � ; answer+4 � ; stmfd (sp)!,{r0-r6,link} $eors divsgn,lhs,rhs .movs modsgn,lhs 8rsbmi lhs,lhs,#0 Bteq rhs,#0 Lrsbmi rhs,rhs,#0 V bl udiv32 `teq divsgn,#0 jrsbmi div,div,#0 tteq modsgn,#0 ~rsbmi mod,mod,#0 �adr count,answer �stmia count,{mod,div} �ldmfd (sp)!,{r0-r6,pc} �; �.udiv32 �teq rhs,#0 �beq diverr �mov mod,#0 �mov div,#0 �mov count,#32 �; �.divlp1 subs count,count,#1 moveq pc,link movs lhs,lhs,asl#1 bpl divlp1 (; 2.divlp2 <movs lhs,lhs,asl#1 Fadc mod,mod,mod Pcmp mod,rhs Zsubcs mod,mod,rhs dadc div,div,div nsubs count,count,#1 xbne divlp2 �; �.diverr �mov pc,link �; �.set_xangle �stmfd (sp)!,{r0-r2,link} �adr r2,answer �mov r1,#90 � bl divide �ldr r1,[r2,#4] � cmp r1,#0 �addeq r0,r0,#1 �mov r1,#360 bl divide ldr r0,[r2,#4] adr r1,xangle "str r0,[r1] ,ldmfd (sp)!,{r0-r2,pc} 6; @.set_yangle Jstmfd (sp)!,{r0-r2,link} Tadr r2,answer ^mov r1,#90 h bl divide rldr r1,[r2,#4] | cmp r1,#0 �addeq r0,r0,#1 �mov r1,#360 � bl divide �ldr r0,[r2,#4] �adr r1,yangle �str r0,[r1] �ldmfd (sp)!,{r0-r2,pc} �; �.set_zangle �stmfd (sp)!,{r0-r2,link} �adr r2,answer �mov r1,#90 � bl divide ldr r1,[r2,#4] cmp r1,#0 addeq r0,r0,#1 &mov r1,#360 0 bl divide :ldr r0,[r2,#4] Dadr r1,zangle Nstr r0,[r1] Xldmfd (sp)!,{r0-r2,pc} b; l.set_viewangle vstmfd (sp)!,{r0-r2,link} �adr r2,answer �mov r1,#90 � bl divide �ldr r1,[r2,#4] � cmp r1,#0 �addeq r0,r0,#1 �mov r1,#360 � bl divide �ldr r0,[r2,#4] �adr r1,viewangle �str r0,[r1] �ldmfd (sp)!,{r0-r2,pc} �; .plot3D ; >; converts x,y,z position to x,y position and plots point ; *stmfd (sp)!,{r0-r3,link} 4bl calc_pos >adr r3,plotaction Hldmia r3,{r0-r2} Rswi "OS_Plot" \ldmfd (sp)!,{r0-r3,pc} f; p .transfer z; �C; transfers r0-r3 to storage points, plotaction,xpos,ypos,zpos �; �stmfd (sp)!,{r0-r4,link} �adr r4,plotaction �stmia r4,{r0-r3} � bl plot3D �ldmfd (sp)!,{r0-r4,pc} � �; �.answer � equd 0 � equd 0 �.viewangle equd 0 .xangle equd 0 $.yangle . equd 0 8.zangle B equd 0 L.plotaction V equd 0 ` .xpos j equd 0 t .ypos ~ equd 0 � .zpos � equd 0 �; �.readpos �; �); reads point storage block and *1024 �; stores result in r8-r10 �; �stmfd (sp)!,{r0,link} �adr r0,xpos �ldmia r0,{r8-r10} � cmp r8,#0 addeq r8,r8,#1 cmp r9,#0 addeq r9,r9,#1 cmp r10,#0 (addeq r10,r10,#1 2mov r8,r8,asl#10 <mov r9,r9,asl#10 Fmov r10,r10,asl#10 P .skip Zldmfd (sp)!,{r0,pc} d; n .calc_pos x; �7; calculates 2D position from all given information �; �stmfd (sp)!,{r0-r10,link} �bl readpos �adr r0,zangle �ldr r0,[r0] � bl getcos � bl getsin � mov r0,r8 � mov r1,r7 � bl divide �adr r0,answer �ldr r3,[r0] mov r0,r9 mov r1,r6 bl divide "adr r0,answer ,ldr r4,[r0] 6sub r0,r3,r4 @adr r1,xpos Jstr r0,[r1] T mov r0,r8 ^ mov r1,r6 h bl divide radr r0,answer |ldr r3,[r0] � mov r0,r9 � mov r1,r7 � bl divide �adr r0,answer �ldr r4,[r0] �add r0,r3,r4 �adr r1,ypos �str r0,[r1] �mov r10,r10,asr#10 �adr r1,zpos �str r10,[r1] �; �bl readpos adr r0,yangle ldr r0,[r0] bl getcos & bl getsin 0 mov r0,r8 : mov r1,r7 D bl divide Nadr r0,answer Xldr r3,[r0] bmov r0,r10 l mov r1,r6 v bl divide �adr r0,answer �ldr r4,[r0] �add r0,r3,r4 �adr r1,xpos �str r0,[r1] �mov r9,r9,asr#10 �adr r1,ypos �str r9,[r1] �mov r0,r10 � mov r1,r7 � bl divide �adr r0,answer �ldr r3,[r0] mov r0,r8 mov r1,r6 bl divide adr r0,answer *ldr r4,[r0] 4sub r0,r3,r4 >adr r1,zpos Hstr r0,[r1] R; \bl readpos fadr r0,xangle pldr r0,[r0] z bl getcos � bl getsin �mov r8,r8,asr#10 �adr r1,xpos �str r8,[r1] � mov r0,r9 � mov r1,r7 � bl divide �adr r0,answer �ldr r3,[r0] �mov r0,r10 � mov r1,r6 � bl divide �adr r0,answer ldr r4,[r0] sub r0,r3,r4 adr r1,ypos $str r0,[r1] . mov r0,r9 8 mov r1,r6 B bl divide Ladr r0,answer Vldr r3,[r0] ` mov r0,10 j mov r1,r7 t bl divide ~adr r0,answer �ldr r4,[r0] �add r0,r3,r4 �adr r1,zpos �str r0,[r1] �; �bl readpos �adr r0,viewangle �ldr r0,[r0] � bl getcos � bl getsin �mov r0,r10 � mov r1,r7 bl divide adr r0,answer ldr r3,[r0] mov r8,r8,asr#10 (add r8,r8,r3 2adr r1,xpos <str r8,[r1] F; Pmov r0,r10 Z mov r1,r6 d bl divide nadr r0,answer xldr r3,[r0] �mov r9,r9,asr#10 �add r9,r9,r3 �adr r1,ypos �str r9,[r1] �; �ldmfd (sp)!,{r0-r10,pc} �; �.calc_object �stmfd (sp)!,{r0-r6,link} �(; r0 is pointer to co-ordinate block �!; r1 is pointer to plot block �stmfd (sp)!,{r0} � mov r0,r2 bl set_xangle mov r0,r3 bl set_yangle " mov r0,r4 ,bl set_zangle 6 mov r0,r5 @bl set_viewangle Jldmfd (sp)!,{r0} Tadr r2,plotaction ^.return hldmia r0!,{r3-r6} rcmp r3,#256 |streq r3,[r1,#0] �ldmeqfd (sp)!,{r0-r6,pc} �stmia r2,{r3-r6} �bl calc_pos �ldmia r2,{r3-r5} �stmia r1!,{r3-r5} �b return �; �.plot_objectL �stmfd (sp)!,{r0-r2,link} �!; r0 is pointer to plot block � mov r3,r0 �.returnplot �ldmia r3!,{r0-r2} cmp r0,#256 ldmeqfd (sp)!,{r0-r2,pc} swi "OS_Plot" &b returnplot 0; :.plot_objectS Dstmfd (sp)!,{link} N!; r0 is pointer to plot block Xldmfd (sp)!,{pc} b] l� v �save �� �: � ��save �)� "SAVE 3DGraphics "+�~code%+" "+�~O% �� "SETTYPE 3DGraphics FFA" �� �
00000000 0d 00 0a 10 f4 20 3e 4d 4f 44 55 4c 45 53 52 43 |..... >MODULESRC| 00000010 0d 00 0f 26 f4 20 a9 20 41 72 63 68 69 6d 65 64 |...&. . Archimed| 00000020 65 73 20 57 6f 72 6c 64 20 4e 6f 76 65 6d 62 65 |es World Novembe| 00000030 72 20 31 39 39 31 0d 00 14 11 de 20 63 6f 64 65 |r 1991..... code| 00000040 25 20 26 33 35 30 30 0d 00 1e 0f f4 20 72 65 67 |% &3500..... reg| 00000050 69 73 74 65 72 73 0d 00 28 09 6c 68 73 3d 30 0d |isters..(.lhs=0.| 00000060 00 32 09 72 68 73 3d 31 0d 00 3c 09 64 69 76 3d |.2.rhs=1..<.div=| 00000070 32 0d 00 46 09 6d 6f 64 3d 33 0d 00 50 0c 64 69 |2..F.mod=3..P.di| 00000080 76 73 67 6e 3d 34 0d 00 5a 0c 6d 6f 64 73 67 6e |vsgn=4..Z.modsgn| 00000090 3d 35 0d 00 64 0b 63 6f 75 6e 74 3d 36 0d 00 6e |=5..d.count=6..n| 000000a0 0b 69 6e 64 65 78 3d 37 0d 00 78 09 73 70 3d 31 |.index=7..x.sp=1| 000000b0 33 0d 00 82 0b 6c 69 6e 6b 3d 31 34 0d 00 8c 05 |3....link=14....| 000000c0 3a 0d 00 96 14 e3 20 70 61 73 73 3d 34 20 b8 20 |:..... pass=4 . | 000000d0 37 20 88 20 33 0d 00 a0 0c 4f 25 3d 63 6f 64 65 |7 . 3....O%=code| 000000e0 25 0d 00 aa 08 50 25 3d 30 0d 00 b4 0e 5b 20 4f |%....P%=0....[ O| 000000f0 50 54 20 70 61 73 73 0d 00 be 09 41 4c 49 47 4e |PT pass....ALIGN| 00000100 0d 00 c8 2d 65 71 75 64 20 30 20 20 20 20 20 20 |...-equd 0 | 00000110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000120 20 20 3b 73 74 61 72 74 20 63 6f 64 65 0d 00 d2 | ;start code...| 00000130 2c 65 71 75 64 20 69 6e 69 74 69 61 6c 69 73 65 |,equd initialise| 00000140 5f 63 6f 64 65 20 20 20 20 20 20 20 20 20 20 3b |_code ;| 00000150 69 6e 69 74 20 63 6f 64 65 0d 00 dc 2c 65 71 75 |init code...,equ| 00000160 64 20 66 69 6e 69 61 6c 69 73 65 5f 63 6f 64 65 |d finialise_code| 00000170 20 20 20 20 20 20 20 20 20 20 20 3b 71 75 69 74 | ;quit| 00000180 20 63 6f 64 65 0d 00 e6 2f 65 71 75 64 20 30 20 | code.../equd 0 | 00000190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000001a0 20 20 20 20 20 20 20 3b 73 65 72 76 69 63 65 20 | ;service | 000001b0 63 6f 64 65 0d 00 f0 2f 65 71 75 64 20 74 69 74 |code.../equd tit| 000001c0 6c 65 5f 73 74 72 69 6e 67 20 20 20 20 20 20 20 |le_string | 000001d0 20 20 20 20 20 20 3b 6d 6f 64 75 6c 65 20 74 69 | ;module ti| 000001e0 74 6c 65 0d 00 fa 2c 65 71 75 64 20 68 65 6c 70 |tle...,equd help| 000001f0 5f 73 74 72 69 6e 67 20 20 20 20 20 20 20 20 20 |_string | 00000200 20 20 20 20 20 3b 68 65 6c 70 20 74 65 78 74 0d | ;help text.| 00000210 01 04 30 65 71 75 64 20 30 20 20 20 20 20 20 20 |..0equd 0 | 00000220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000230 20 3b 63 6f 6d 6d 61 6e 64 20 62 6c 6f 63 6b 0d | ;command block.| 00000240 01 0e 31 65 71 75 64 20 26 32 30 30 20 20 20 20 |..1equd &200 | 00000250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000260 20 3b 73 77 69 20 63 68 75 6e 6b 20 62 61 73 65 | ;swi chunk base| 00000270 0d 01 18 2e 65 71 75 64 20 73 77 69 5f 68 61 6e |....equd swi_han| 00000280 64 6c 65 20 20 20 20 20 20 20 20 20 20 20 20 20 |dle | 00000290 20 20 3b 73 77 69 20 68 61 6e 64 6c 65 72 0d 01 | ;swi handler..| 000002a0 22 35 65 71 75 64 20 73 77 69 5f 64 65 63 6f 64 |"5equd swi_decod| 000002b0 65 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |e | 000002c0 3b 73 77 69 20 64 65 63 6f 64 69 6e 67 20 74 61 |;swi decoding ta| 000002d0 62 6c 65 0d 01 2c 34 65 71 75 64 20 30 20 20 20 |ble..,4equd 0 | 000002e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000002f0 20 20 20 20 20 3b 73 77 69 20 64 65 63 6f 64 69 | ;swi decodi| 00000300 6e 67 20 63 6f 64 65 0d 01 36 05 3b 0d 01 40 11 |ng code..6.;..@.| 00000310 2e 74 69 74 6c 65 5f 73 74 72 69 6e 67 0d 01 4a |.title_string..J| 00000320 05 3b 0d 01 54 1e 3b 20 73 74 72 69 6e 67 20 67 |.;..T.; string g| 00000330 69 76 65 6e 20 69 6e 20 2a 6d 6f 64 75 6c 65 73 |iven in *modules| 00000340 0d 01 5e 05 3b 0d 01 68 15 65 71 75 73 20 22 33 |..^.;..h.equs "3| 00000350 44 47 72 61 70 68 69 63 73 22 0d 01 72 0a 65 71 |DGraphics"..r.eq| 00000360 75 62 20 30 0d 01 7c 09 61 6c 69 67 6e 0d 01 86 |ub 0..|.align...| 00000370 05 3b 0d 01 90 10 2e 68 65 6c 70 5f 73 74 72 69 |.;.....help_stri| 00000380 6e 67 0d 01 9a 05 3b 0d 01 a4 23 3b 20 73 74 72 |ng....;...#; str| 00000390 69 6e 67 20 67 69 76 65 6e 20 69 6e 20 2a 68 65 |ing given in *he| 000003a0 6c 70 20 6d 6f 64 75 6c 65 73 0d 01 ae 05 3b 0d |lp modules....;.| 000003b0 01 b8 19 65 71 75 73 20 22 56 65 63 74 6f 72 47 |...equs "VectorG| 000003c0 72 61 70 68 69 63 73 22 0d 01 c2 0a 65 71 75 62 |raphics"....equb| 000003d0 20 39 0d 01 cc 1d 65 71 75 73 20 22 30 2e 30 33 | 9....equs "0.03| 000003e0 20 28 30 39 20 41 70 72 20 31 39 39 31 29 22 0d | (09 Apr 1991)".| 000003f0 01 d6 0a 65 71 75 62 20 30 0d 01 e0 09 61 6c 69 |...equb 0....ali| 00000400 67 6e 0d 01 ea 05 3b 0d 01 f4 14 2e 69 6e 69 74 |gn....;.....init| 00000410 69 61 6c 69 73 65 5f 63 6f 64 65 0d 01 fe 05 3b |ialise_code....;| 00000420 0d 02 08 1c 3b 20 69 6e 69 74 69 61 6c 69 73 65 |....; initialise| 00000430 20 6d 6f 64 75 6c 65 20 63 6f 64 65 0d 02 12 05 | module code....| 00000440 3b 0d 02 1c 19 73 74 6d 66 64 20 28 73 70 29 21 |;....stmfd (sp)!| 00000450 2c 7b 52 30 2c 6c 69 6e 6b 7d 0d 02 26 0e 6d 6f |,{R0,link}..&.mo| 00000460 76 20 72 30 2c 23 34 35 0d 02 30 14 62 6c 20 73 |v r0,#45..0.bl s| 00000470 65 74 5f 76 69 65 77 61 6e 67 6c 65 0d 02 3a 0d |et_viewangle..:.| 00000480 6d 6f 76 20 72 30 2c 23 31 0d 02 44 11 62 6c 20 |mov r0,#1..D.bl | 00000490 73 65 74 5f 78 61 6e 67 6c 65 0d 02 4e 11 62 6c |set_xangle..N.bl| 000004a0 20 73 65 74 5f 79 61 6e 67 6c 65 0d 02 58 11 62 | set_yangle..X.b| 000004b0 6c 20 73 65 74 5f 7a 61 6e 67 6c 65 0d 02 62 17 |l set_zangle..b.| 000004c0 6c 64 6d 66 64 20 28 73 70 29 21 2c 7b 52 30 2c |ldmfd (sp)!,{R0,| 000004d0 70 63 7d 0d 02 6c 05 3a 0d 02 76 13 2e 66 69 6e |pc}..l.:..v..fin| 000004e0 69 61 6c 69 73 65 5f 63 6f 64 65 0d 02 80 05 3b |ialise_code....;| 000004f0 0d 02 8a 15 3b 71 75 69 74 20 6d 6f 64 75 6c 65 |....;quit module| 00000500 20 63 6f 64 65 0d 02 94 05 3b 0d 02 9e 16 73 74 | code....;....st| 00000510 6d 66 64 20 28 73 70 29 21 2c 7b 6c 69 6e 6b 7d |mfd (sp)!,{link}| 00000520 0d 02 a8 14 6c 64 6d 66 64 20 28 73 70 29 21 2c |....ldmfd (sp)!,| 00000530 7b 70 63 7d 0d 02 b2 05 3a 0d 02 bc 09 61 6c 69 |{pc}....:....ali| 00000540 67 6e 0d 02 c6 0f 2e 73 77 69 5f 64 65 63 6f 64 |gn.....swi_decod| 00000550 65 0d 02 d0 05 3b 0d 02 da 36 3b 20 73 79 73 20 |e....;...6; sys | 00000560 63 6f 6d 6d 61 6e 64 20 74 61 62 6c 65 20 74 68 |command table th| 00000570 65 20 66 69 72 73 74 20 69 73 20 74 68 65 20 62 |e first is the b| 00000580 6c 6f 63 6b 20 63 6f 6d 6d 61 6e 64 0d 02 e4 05 |lock command....| 00000590 3b 0d 02 ee 11 65 71 75 73 20 22 56 65 63 74 6f |;....equs "Vecto| 000005a0 72 22 0d 02 f8 0a 65 71 75 62 20 30 0d 03 02 0f |r"....equb 0....| 000005b0 65 71 75 73 20 22 50 6c 6f 74 22 0d 03 0c 0a 65 |equs "Plot"....e| 000005c0 71 75 62 20 30 0d 03 16 17 65 71 75 73 20 22 53 |qub 0....equs "S| 000005d0 65 74 56 69 65 77 61 6e 67 6c 65 22 0d 03 20 0a |etViewangle".. .| 000005e0 65 71 75 62 20 30 0d 03 2a 14 65 71 75 73 20 22 |equb 0..*.equs "| 000005f0 53 65 74 58 61 6e 67 6c 65 22 0d 03 34 0a 65 71 |SetXangle"..4.eq| 00000600 75 62 20 30 0d 03 3e 14 65 71 75 73 20 22 53 65 |ub 0..>.equs "Se| 00000610 74 59 61 6e 67 6c 65 22 0d 03 48 0a 65 71 75 62 |tYangle"..H.equb| 00000620 20 30 0d 03 52 14 65 71 75 73 20 22 53 65 74 5a | 0..R.equs "SetZ| 00000630 61 6e 67 6c 65 22 0d 03 5c 0a 65 71 75 62 20 30 |angle"..\.equb 0| 00000640 0d 03 66 1a 65 71 75 73 20 22 43 61 6c 63 75 6c |..f.equs "Calcul| 00000650 61 74 65 4f 62 6a 65 63 74 22 0d 03 70 0a 65 71 |ateObject"..p.eq| 00000660 75 62 20 30 0d 03 7a 19 65 71 75 73 20 22 50 6c |ub 0..z.equs "Pl| 00000670 6f 74 4f 62 6a 65 63 74 4c 69 6e 65 22 0d 03 84 |otObjectLine"...| 00000680 0a 65 71 75 62 20 30 0d 03 8e 1a 65 71 75 73 20 |.equb 0....equs | 00000690 22 50 6c 6f 74 4f 62 6a 65 63 74 53 6f 6c 69 64 |"PlotObjectSolid| 000006a0 22 0d 03 98 0a 65 71 75 62 20 30 0d 03 a2 0a 65 |"....equb 0....e| 000006b0 71 75 62 20 30 0d 03 ac 09 61 6c 69 67 6e 0d 03 |qub 0....align..| 000006c0 b6 05 3b 0d 03 c0 0f 2e 73 77 69 5f 68 61 6e 64 |..;.....swi_hand| 000006d0 6c 65 0d 03 ca 05 3b 0d 03 d4 2f 3b 20 73 65 74 |le....;.../; set| 000006e0 69 6f 6e 20 74 6f 20 6a 75 6d 70 20 74 6f 20 63 |ion to jump to c| 000006f0 6f 72 72 65 63 74 20 72 6f 75 6e 74 69 6e 65 20 |orrect rountine | 00000700 6f 6e 20 73 79 73 0d 03 de 05 3b 0d 03 e8 30 63 |on sys....;...0c| 00000710 6d 70 20 72 31 31 2c 23 28 65 6e 64 6f 66 6a 75 |mp r11,#(endofju| 00000720 6d 70 74 61 62 6c 65 2d 73 74 61 72 74 6f 66 6a |mptable-startofj| 00000730 75 6d 70 74 61 62 6c 65 29 2f 34 0d 03 f2 19 61 |umptable)/4....a| 00000740 64 64 63 63 20 70 63 2c 70 63 2c 72 31 31 2c 6c |ddcc pc,pc,r11,l| 00000750 73 6c 23 32 0d 03 fc 0b 62 20 65 72 72 6f 72 0d |sl#2....b error.| 00000760 04 06 05 3b 0d 04 10 15 2e 73 74 61 72 74 6f 66 |...;.....startof| 00000770 6a 75 6d 70 74 61 62 6c 65 0d 04 1a 04 0d 04 24 |jumptable......$| 00000780 0f 62 20 70 6c 6f 74 5f 63 6f 64 65 0d 04 2e 12 |.b plot_code....| 00000790 62 20 73 65 74 76 69 65 77 5f 63 6f 64 65 0d 04 |b setview_code..| 000007a0 38 0f 62 20 73 65 74 78 5f 63 6f 64 65 0d 04 42 |8.b setx_code..B| 000007b0 0f 62 20 73 65 74 79 5f 63 6f 64 65 0d 04 4c 0f |.b sety_code..L.| 000007c0 62 20 73 65 74 7a 5f 63 6f 64 65 0d 04 56 15 62 |b setz_code..V.b| 000007d0 20 63 61 6c 63 6f 62 6a 65 63 74 5f 63 6f 64 65 | calcobject_code| 000007e0 0d 04 60 16 62 20 70 6c 6f 74 6f 62 6a 65 63 74 |..`.b plotobject| 000007f0 4c 5f 63 6f 64 65 0d 04 6a 16 62 20 70 6c 6f 74 |L_code..j.b plot| 00000800 6f 62 6a 65 63 74 53 5f 63 6f 64 65 0d 04 74 04 |objectS_code..t.| 00000810 0d 04 7e 13 2e 65 6e 64 6f 66 6a 75 6d 70 74 61 |..~..endofjumpta| 00000820 62 6c 65 0d 04 88 0f 6d 6f 76 20 70 63 2c 6c 69 |ble....mov pc,li| 00000830 6e 6b 0d 04 92 05 3b 0d 04 9c 17 3b 20 69 6c 6c |nk....;....; ill| 00000840 65 67 61 6c 20 73 79 73 20 65 72 72 6f 72 0d 04 |egal sys error..| 00000850 a6 05 3b 0d 04 b0 0a 2e 65 72 72 6f 72 0d 04 ba |..;.....error...| 00000860 16 73 74 6d 66 64 20 28 73 70 29 21 2c 7b 6c 69 |.stmfd (sp)!,{li| 00000870 6e 6b 7d 0d 04 c4 09 73 77 69 20 31 0d 04 ce 0b |nk}....swi 1....| 00000880 65 71 75 62 20 31 30 0d 04 d8 18 65 71 75 73 20 |equb 10....equs | 00000890 22 53 57 49 20 6e 6f 74 20 6b 6e 6f 77 6e 22 0d |"SWI not known".| 000008a0 04 e2 0b 65 71 75 62 20 31 33 0d 04 ec 0b 65 71 |...equb 13....eq| 000008b0 75 62 20 31 30 0d 04 f6 0a 65 71 75 62 20 30 0d |ub 10....equb 0.| 000008c0 05 00 09 61 6c 69 67 6e 0d 05 0a 14 6c 64 6d 66 |...align....ldmf| 000008d0 64 20 28 73 70 29 21 2c 7b 70 63 7d 0d 05 14 05 |d (sp)!,{pc}....| 000008e0 3b 0d 05 1e 28 3b 20 66 6f 6c 6c 6f 77 69 6e 67 |;...(; following| 000008f0 20 70 72 6f 63 65 64 75 72 65 73 20 61 72 65 20 | procedures are | 00000900 73 79 73 20 63 61 6c 6c 73 0d 05 28 05 3b 0d 05 |sys calls..(.;..| 00000910 32 0e 2e 70 6c 6f 74 5f 63 6f 64 65 0d 05 3c 16 |2..plot_code..<.| 00000920 73 74 6d 66 64 20 28 73 70 29 21 2c 7b 6c 69 6e |stmfd (sp)!,{lin| 00000930 6b 7d 0d 05 46 0f 62 6c 20 74 72 61 6e 73 66 65 |k}..F.bl transfe| 00000940 72 0d 05 50 14 6c 64 6d 66 64 20 28 73 70 29 21 |r..P.ldmfd (sp)!| 00000950 2c 7b 70 63 7d 0d 05 5a 05 3b 0d 05 64 11 2e 73 |,{pc}..Z.;..d..s| 00000960 65 74 76 69 65 77 5f 63 6f 64 65 0d 05 6e 16 73 |etview_code..n.s| 00000970 74 6d 66 64 20 28 73 70 29 21 2c 7b 6c 69 6e 6b |tmfd (sp)!,{link| 00000980 7d 0d 05 78 14 62 6c 20 73 65 74 5f 76 69 65 77 |}..x.bl set_view| 00000990 61 6e 67 6c 65 0d 05 82 14 6c 64 6d 66 64 20 28 |angle....ldmfd (| 000009a0 73 70 29 21 2c 7b 70 63 7d 0d 05 8c 05 3b 0d 05 |sp)!,{pc}....;..| 000009b0 96 0e 2e 73 65 74 78 5f 63 6f 64 65 0d 05 a0 16 |...setx_code....| 000009c0 73 74 6d 66 64 20 28 73 70 29 21 2c 7b 6c 69 6e |stmfd (sp)!,{lin| 000009d0 6b 7d 0d 05 aa 11 62 6c 20 73 65 74 5f 78 61 6e |k}....bl set_xan| 000009e0 67 6c 65 0d 05 b4 14 6c 64 6d 66 64 20 28 73 70 |gle....ldmfd (sp| 000009f0 29 21 2c 7b 70 63 7d 0d 05 be 05 3b 0d 05 c8 0e |)!,{pc}....;....| 00000a00 2e 73 65 74 79 5f 63 6f 64 65 0d 05 d2 16 73 74 |.sety_code....st| 00000a10 6d 66 64 20 28 73 70 29 21 2c 7b 6c 69 6e 6b 7d |mfd (sp)!,{link}| 00000a20 0d 05 dc 11 62 6c 20 73 65 74 5f 79 61 6e 67 6c |....bl set_yangl| 00000a30 65 0d 05 e6 14 6c 64 6d 66 64 20 28 73 70 29 21 |e....ldmfd (sp)!| 00000a40 2c 7b 70 63 7d 0d 05 f0 05 3b 0d 05 fa 0e 2e 73 |,{pc}....;.....s| 00000a50 65 74 7a 5f 63 6f 64 65 0d 06 04 16 73 74 6d 66 |etz_code....stmf| 00000a60 64 20 28 73 70 29 21 2c 7b 6c 69 6e 6b 7d 0d 06 |d (sp)!,{link}..| 00000a70 0e 11 62 6c 20 73 65 74 5f 7a 61 6e 67 6c 65 0d |..bl set_zangle.| 00000a80 06 18 14 6c 64 6d 66 64 20 28 73 70 29 21 2c 7b |...ldmfd (sp)!,{| 00000a90 70 63 7d 0d 06 22 05 3b 0d 06 2c 14 2e 63 61 6c |pc}..".;..,..cal| 00000aa0 63 6f 62 6a 65 63 74 5f 63 6f 64 65 0d 06 36 16 |cobject_code..6.| 00000ab0 73 74 6d 66 64 20 28 73 70 29 21 2c 7b 6c 69 6e |stmfd (sp)!,{lin| 00000ac0 6b 7d 0d 06 40 12 62 6c 20 63 61 6c 63 5f 6f 62 |k}..@.bl calc_ob| 00000ad0 6a 65 63 74 0d 06 4a 14 6c 64 6d 66 64 20 28 73 |ject..J.ldmfd (s| 00000ae0 70 29 21 2c 7b 70 63 7d 0d 06 54 05 3b 0d 06 5e |p)!,{pc}..T.;..^| 00000af0 15 2e 70 6c 6f 74 6f 62 6a 65 63 74 4c 5f 63 6f |..plotobjectL_co| 00000b00 64 65 0d 06 68 16 73 74 6d 66 64 20 28 73 70 29 |de..h.stmfd (sp)| 00000b10 21 2c 7b 6c 69 6e 6b 7d 0d 06 72 13 62 6c 20 70 |!,{link}..r.bl p| 00000b20 6c 6f 74 5f 6f 62 6a 65 63 74 4c 0d 06 7c 14 6c |lot_objectL..|.l| 00000b30 64 6d 66 64 20 28 73 70 29 21 2c 7b 70 63 7d 0d |dmfd (sp)!,{pc}.| 00000b40 06 86 05 3b 0d 06 90 15 2e 70 6c 6f 74 6f 62 6a |...;.....plotobj| 00000b50 65 63 74 53 5f 63 6f 64 65 0d 06 9a 16 73 74 6d |ectS_code....stm| 00000b60 66 64 20 28 73 70 29 21 2c 7b 6c 69 6e 6b 7d 0d |fd (sp)!,{link}.| 00000b70 06 a4 13 62 6c 20 70 6c 6f 74 5f 6f 62 6a 65 63 |...bl plot_objec| 00000b80 74 53 0d 06 ae 14 6c 64 6d 66 64 20 28 73 70 29 |tS....ldmfd (sp)| 00000b90 21 2c 7b 70 63 7d 0d 06 b8 09 61 6c 69 67 6e 0d |!,{pc}....align.| 00000ba0 06 c2 0b 2e 67 65 74 73 69 6e 0d 06 cc 05 3b 0d |....getsin....;.| 00000bb0 06 d6 25 3b 20 6f 6e 20 65 6e 74 72 79 20 72 30 |..%; on entry r0| 00000bc0 20 69 73 20 61 6e 67 6c 65 20 69 6e 20 64 65 67 | is angle in deg| 00000bd0 72 65 65 73 0d 06 e0 26 3b 20 6f 6e 20 65 78 69 |rees...&; on exi| 00000be0 74 20 72 36 20 69 73 20 69 6e 74 20 76 61 6c 75 |t r6 is int valu| 00000bf0 65 20 6f 66 20 61 6e 67 6c 65 0d 06 ea 05 3b 0d |e of angle....;.| 00000c00 06 f4 1c 73 74 6d 66 64 20 28 73 70 29 21 2c 7b |...stmfd (sp)!,{| 00000c10 72 30 2c 72 31 2c 6c 69 6e 6b 7d 0d 06 fe 13 6d |r0,r1,link}....m| 00000c20 6f 76 20 72 30 2c 72 30 2c 6c 73 6c 23 32 0d 07 |ov r0,r0,lsl#2..| 00000c30 08 0e 61 64 72 20 72 31 2c 73 69 6e 0d 07 12 12 |..adr r1,sin....| 00000c40 6c 64 72 20 72 36 2c 5b 72 31 2c 72 30 5d 0d 07 |ldr r6,[r1,r0]..| 00000c50 1c 1a 6c 64 6d 66 64 20 28 73 70 29 21 2c 7b 72 |..ldmfd (sp)!,{r| 00000c60 30 2c 72 31 2c 70 63 7d 0d 07 26 08 2e 73 69 6e |0,r1,pc}..&..sin| 00000c70 0d 07 30 05 3b 0d 07 3a 05 5d 0d 07 44 08 41 3d |..0.;..:.]..D.A=| 00000c80 4f 25 0d 07 4e 12 e3 20 73 69 6e 25 3d 30 20 b8 |O%..N.. sin%=0 .| 00000c90 20 33 35 39 0d 07 58 2a e7 20 b5 b2 28 73 69 6e | 359..X*. ..(sin| 00000ca0 25 29 3c 30 2e 30 30 30 31 20 80 20 b5 b2 28 73 |%)<0.0001 . ..(s| 00000cb0 69 6e 25 29 3e 2d 30 2e 30 30 30 31 20 8c 0d 07 |in%)>-0.0001 ...| 00000cc0 62 09 21 4f 25 3d 32 0d 07 6c 05 cc 0d 07 76 19 |b.!O%=2..l....v.| 00000cd0 21 4f 25 3d 28 31 2f b5 b2 28 73 69 6e 25 29 29 |!O%=(1/..(sin%))| 00000ce0 2a 31 30 32 34 0d 07 80 05 cd 0d 07 8a 0b 4f 25 |*1024.........O%| 00000cf0 3d 4f 25 2b 34 0d 07 94 0b 50 25 3d 50 25 2b 34 |=O%+4....P%=P%+4| 00000d00 0d 07 9e 05 ed 0d 07 a8 05 5b 0d 07 b2 05 3b 0d |.........[....;.| 00000d10 07 bc 0c 6f 70 74 20 70 61 73 73 0d 07 c6 0b 2e |...opt pass.....| 00000d20 67 65 74 63 6f 73 0d 07 d0 05 3b 0d 07 da 25 3b |getcos....;...%;| 00000d30 20 6f 6e 20 65 6e 74 72 79 20 72 30 20 69 73 20 | on entry r0 is | 00000d40 61 6e 67 6c 65 20 69 6e 20 64 65 67 72 65 65 73 |angle in degrees| 00000d50 0d 07 e4 26 3b 20 6f 6e 20 65 78 69 74 20 72 37 |...&; on exit r7| 00000d60 20 69 73 20 69 6e 74 20 76 61 6c 75 65 20 6f 66 | is int value of| 00000d70 20 61 6e 67 6c 65 0d 07 ee 05 3b 0d 07 f8 1c 73 | angle....;....s| 00000d80 74 6d 66 64 20 28 73 70 29 21 2c 7b 72 30 2c 72 |tmfd (sp)!,{r0,r| 00000d90 31 2c 6c 69 6e 6b 7d 0d 08 02 13 6d 6f 76 20 72 |1,link}....mov r| 00000da0 30 2c 72 30 2c 6c 73 6c 23 32 0d 08 0c 0e 61 64 |0,r0,lsl#2....ad| 00000db0 72 20 72 31 2c 63 6f 73 0d 08 16 12 6c 64 72 20 |r r1,cos....ldr | 00000dc0 72 37 2c 5b 72 31 2c 72 30 5d 0d 08 20 1a 6c 64 |r7,[r1,r0].. .ld| 00000dd0 6d 66 64 20 28 73 70 29 21 2c 7b 72 30 2c 72 31 |mfd (sp)!,{r0,r1| 00000de0 2c 70 63 7d 0d 08 2a 08 2e 63 6f 73 0d 08 34 05 |,pc}..*..cos..4.| 00000df0 3b 0d 08 3e 05 5d 0d 08 48 12 e3 20 63 6f 73 25 |;..>.]..H.. cos%| 00000e00 3d 30 20 b8 20 33 35 39 0d 08 52 2a e7 20 9b b2 |=0 . 359..R*. ..| 00000e10 28 63 6f 73 25 29 3c 30 2e 30 30 30 31 20 80 20 |(cos%)<0.0001 . | 00000e20 9b b2 28 63 6f 73 25 29 3e 2d 30 2e 30 30 30 31 |..(cos%)>-0.0001| 00000e30 20 8c 0d 08 5c 09 21 4f 25 3d 32 0d 08 66 05 cc | ...\.!O%=2..f..| 00000e40 0d 08 70 19 21 4f 25 3d 28 31 2f 9b b2 28 63 6f |..p.!O%=(1/..(co| 00000e50 73 25 29 29 2a 31 30 32 34 0d 08 7a 05 cd 0d 08 |s%))*1024..z....| 00000e60 84 0b 4f 25 3d 4f 25 2b 34 0d 08 8e 0b 50 25 3d |..O%=O%+4....P%=| 00000e70 50 25 2b 34 0d 08 98 05 ed 0d 08 a2 05 5b 0d 08 |P%+4.........[..| 00000e80 ac 05 3b 0d 08 b6 0c 6f 70 74 20 70 61 73 73 0d |..;....opt pass.| 00000e90 08 c0 05 3b 0d 08 ca 0b 2e 64 69 76 69 64 65 0d |...;.....divide.| 00000ea0 08 d4 0c 3b 20 72 30 20 6c 68 73 0d 08 de 0c 3b |...; r0 lhs....;| 00000eb0 20 72 31 20 72 68 73 0d 08 e8 1a 3b 20 72 32 20 | r1 rhs....; r2 | 00000ec0 6f 6e 20 65 78 69 74 20 6c 68 73 20 81 20 72 68 |on exit lhs . rh| 00000ed0 73 0d 08 f2 1a 3b 20 72 33 20 6f 6e 20 65 78 69 |s....; r3 on exi| 00000ee0 74 20 6c 68 73 20 83 20 72 68 73 0d 08 fc 10 3b |t lhs . rhs....;| 00000ef0 20 61 6e 73 77 65 72 2b 30 20 81 0d 09 06 10 3b | answer+0 .....;| 00000f00 20 61 6e 73 77 65 72 2b 34 20 83 0d 09 10 05 3b | answer+4 .....;| 00000f10 0d 09 1a 1c 73 74 6d 66 64 20 28 73 70 29 21 2c |....stmfd (sp)!,| 00000f20 7b 72 30 2d 72 36 2c 6c 69 6e 6b 7d 0d 09 24 17 |{r0-r6,link}..$.| 00000f30 65 6f 72 73 20 64 69 76 73 67 6e 2c 6c 68 73 2c |eors divsgn,lhs,| 00000f40 72 68 73 0d 09 2e 13 6d 6f 76 73 20 6d 6f 64 73 |rhs....movs mods| 00000f50 67 6e 2c 6c 68 73 0d 09 38 14 72 73 62 6d 69 20 |gn,lhs..8.rsbmi | 00000f60 6c 68 73 2c 6c 68 73 2c 23 30 0d 09 42 0e 74 65 |lhs,lhs,#0..B.te| 00000f70 71 20 72 68 73 2c 23 30 0d 09 4c 14 72 73 62 6d |q rhs,#0..L.rsbm| 00000f80 69 20 72 68 73 2c 72 68 73 2c 23 30 0d 09 56 0d |i rhs,rhs,#0..V.| 00000f90 62 6c 20 75 64 69 76 33 32 0d 09 60 11 74 65 71 |bl udiv32..`.teq| 00000fa0 20 64 69 76 73 67 6e 2c 23 30 0d 09 6a 14 72 73 | divsgn,#0..j.rs| 00000fb0 62 6d 69 20 64 69 76 2c 64 69 76 2c 23 30 0d 09 |bmi div,div,#0..| 00000fc0 74 11 74 65 71 20 6d 6f 64 73 67 6e 2c 23 30 0d |t.teq modsgn,#0.| 00000fd0 09 7e 14 72 73 62 6d 69 20 6d 6f 64 2c 6d 6f 64 |.~.rsbmi mod,mod| 00000fe0 2c 23 30 0d 09 88 14 61 64 72 20 63 6f 75 6e 74 |,#0....adr count| 00000ff0 2c 61 6e 73 77 65 72 0d 09 92 19 73 74 6d 69 61 |,answer....stmia| 00001000 20 63 6f 75 6e 74 2c 7b 6d 6f 64 2c 64 69 76 7d | count,{mod,div}| 00001010 0d 09 9c 1a 6c 64 6d 66 64 20 28 73 70 29 21 2c |....ldmfd (sp)!,| 00001020 7b 72 30 2d 72 36 2c 70 63 7d 0d 09 a6 05 3b 0d |{r0-r6,pc}....;.| 00001030 09 b0 0b 2e 75 64 69 76 33 32 0d 09 ba 0e 74 65 |....udiv32....te| 00001040 71 20 72 68 73 2c 23 30 0d 09 c4 0e 62 65 71 20 |q rhs,#0....beq | 00001050 64 69 76 65 72 72 0d 09 ce 0e 6d 6f 76 20 6d 6f |diverr....mov mo| 00001060 64 2c 23 30 0d 09 d8 0e 6d 6f 76 20 64 69 76 2c |d,#0....mov div,| 00001070 23 30 0d 09 e2 11 6d 6f 76 20 63 6f 75 6e 74 2c |#0....mov count,| 00001080 23 33 32 0d 09 ec 05 3b 0d 09 f6 0b 2e 64 69 76 |#32....;.....div| 00001090 6c 70 31 0d 0a 00 17 73 75 62 73 20 63 6f 75 6e |lp1....subs coun| 000010a0 74 2c 63 6f 75 6e 74 2c 23 31 0d 0a 0a 11 6d 6f |t,count,#1....mo| 000010b0 76 65 71 20 70 63 2c 6c 69 6e 6b 0d 0a 14 16 6d |veq pc,link....m| 000010c0 6f 76 73 20 6c 68 73 2c 6c 68 73 2c 61 73 6c 23 |ovs lhs,lhs,asl#| 000010d0 31 0d 0a 1e 0e 62 70 6c 20 64 69 76 6c 70 31 0d |1....bpl divlp1.| 000010e0 0a 28 05 3b 0d 0a 32 0b 2e 64 69 76 6c 70 32 0d |.(.;..2..divlp2.| 000010f0 0a 3c 16 6d 6f 76 73 20 6c 68 73 2c 6c 68 73 2c |.<.movs lhs,lhs,| 00001100 61 73 6c 23 31 0d 0a 46 13 61 64 63 20 6d 6f 64 |asl#1..F.adc mod| 00001110 2c 6d 6f 64 2c 6d 6f 64 0d 0a 50 0f 63 6d 70 20 |,mod,mod..P.cmp | 00001120 6d 6f 64 2c 72 68 73 0d 0a 5a 15 73 75 62 63 73 |mod,rhs..Z.subcs| 00001130 20 6d 6f 64 2c 6d 6f 64 2c 72 68 73 0d 0a 64 13 | mod,mod,rhs..d.| 00001140 61 64 63 20 64 69 76 2c 64 69 76 2c 64 69 76 0d |adc div,div,div.| 00001150 0a 6e 17 73 75 62 73 20 63 6f 75 6e 74 2c 63 6f |.n.subs count,co| 00001160 75 6e 74 2c 23 31 0d 0a 78 0e 62 6e 65 20 64 69 |unt,#1..x.bne di| 00001170 76 6c 70 32 0d 0a 82 05 3b 0d 0a 8c 0b 2e 64 69 |vlp2....;.....di| 00001180 76 65 72 72 0d 0a 96 0f 6d 6f 76 20 70 63 2c 6c |verr....mov pc,l| 00001190 69 6e 6b 0d 0a a0 05 3b 0d 0a aa 0f 2e 73 65 74 |ink....;.....set| 000011a0 5f 78 61 6e 67 6c 65 0d 0a b4 1c 73 74 6d 66 64 |_xangle....stmfd| 000011b0 20 28 73 70 29 21 2c 7b 72 30 2d 72 32 2c 6c 69 | (sp)!,{r0-r2,li| 000011c0 6e 6b 7d 0d 0a be 11 61 64 72 20 72 32 2c 61 6e |nk}....adr r2,an| 000011d0 73 77 65 72 0d 0a c8 0e 6d 6f 76 20 72 31 2c 23 |swer....mov r1,#| 000011e0 39 30 0d 0a d2 0d 62 6c 20 64 69 76 69 64 65 0d |90....bl divide.| 000011f0 0a dc 12 6c 64 72 20 72 31 2c 5b 72 32 2c 23 34 |...ldr r1,[r2,#4| 00001200 5d 0d 0a e6 0d 63 6d 70 20 72 31 2c 23 30 0d 0a |]....cmp r1,#0..| 00001210 f0 12 61 64 64 65 71 20 72 30 2c 72 30 2c 23 31 |..addeq r0,r0,#1| 00001220 0d 0a fa 0f 6d 6f 76 20 72 31 2c 23 33 36 30 0d |....mov r1,#360.| 00001230 0b 04 0d 62 6c 20 64 69 76 69 64 65 0d 0b 0e 12 |...bl divide....| 00001240 6c 64 72 20 72 30 2c 5b 72 32 2c 23 34 5d 0d 0b |ldr r0,[r2,#4]..| 00001250 18 11 61 64 72 20 72 31 2c 78 61 6e 67 6c 65 0d |..adr r1,xangle.| 00001260 0b 22 10 73 74 72 20 20 72 30 2c 5b 72 31 5d 0d |.".str r0,[r1].| 00001270 0b 2c 1a 6c 64 6d 66 64 20 28 73 70 29 21 2c 7b |.,.ldmfd (sp)!,{| 00001280 72 30 2d 72 32 2c 70 63 7d 0d 0b 36 05 3b 0d 0b |r0-r2,pc}..6.;..| 00001290 40 0f 2e 73 65 74 5f 79 61 6e 67 6c 65 0d 0b 4a |@..set_yangle..J| 000012a0 1c 73 74 6d 66 64 20 28 73 70 29 21 2c 7b 72 30 |.stmfd (sp)!,{r0| 000012b0 2d 72 32 2c 6c 69 6e 6b 7d 0d 0b 54 11 61 64 72 |-r2,link}..T.adr| 000012c0 20 72 32 2c 61 6e 73 77 65 72 0d 0b 5e 0e 6d 6f | r2,answer..^.mo| 000012d0 76 20 72 31 2c 23 39 30 0d 0b 68 0d 62 6c 20 64 |v r1,#90..h.bl d| 000012e0 69 76 69 64 65 0d 0b 72 12 6c 64 72 20 72 31 2c |ivide..r.ldr r1,| 000012f0 5b 72 32 2c 23 34 5d 0d 0b 7c 0d 63 6d 70 20 72 |[r2,#4]..|.cmp r| 00001300 31 2c 23 30 0d 0b 86 12 61 64 64 65 71 20 72 30 |1,#0....addeq r0| 00001310 2c 72 30 2c 23 31 0d 0b 90 0f 6d 6f 76 20 72 31 |,r0,#1....mov r1| 00001320 2c 23 33 36 30 0d 0b 9a 0d 62 6c 20 64 69 76 69 |,#360....bl divi| 00001330 64 65 0d 0b a4 12 6c 64 72 20 72 30 2c 5b 72 32 |de....ldr r0,[r2| 00001340 2c 23 34 5d 0d 0b ae 11 61 64 72 20 72 31 2c 79 |,#4]....adr r1,y| 00001350 61 6e 67 6c 65 0d 0b b8 0f 73 74 72 20 72 30 2c |angle....str r0,| 00001360 5b 72 31 5d 0d 0b c2 1a 6c 64 6d 66 64 20 28 73 |[r1]....ldmfd (s| 00001370 70 29 21 2c 7b 72 30 2d 72 32 2c 70 63 7d 0d 0b |p)!,{r0-r2,pc}..| 00001380 cc 05 3b 0d 0b d6 0f 2e 73 65 74 5f 7a 61 6e 67 |..;.....set_zang| 00001390 6c 65 0d 0b e0 1c 73 74 6d 66 64 20 28 73 70 29 |le....stmfd (sp)| 000013a0 21 2c 7b 72 30 2d 72 32 2c 6c 69 6e 6b 7d 0d 0b |!,{r0-r2,link}..| 000013b0 ea 11 61 64 72 20 72 32 2c 61 6e 73 77 65 72 0d |..adr r2,answer.| 000013c0 0b f4 0e 6d 6f 76 20 72 31 2c 23 39 30 0d 0b fe |...mov r1,#90...| 000013d0 0d 62 6c 20 64 69 76 69 64 65 0d 0c 08 12 6c 64 |.bl divide....ld| 000013e0 72 20 72 31 2c 5b 72 32 2c 23 34 5d 0d 0c 12 0d |r r1,[r2,#4]....| 000013f0 63 6d 70 20 72 31 2c 23 30 0d 0c 1c 12 61 64 64 |cmp r1,#0....add| 00001400 65 71 20 72 30 2c 72 30 2c 23 31 0d 0c 26 0f 6d |eq r0,r0,#1..&.m| 00001410 6f 76 20 72 31 2c 23 33 36 30 0d 0c 30 0d 62 6c |ov r1,#360..0.bl| 00001420 20 64 69 76 69 64 65 0d 0c 3a 12 6c 64 72 20 72 | divide..:.ldr r| 00001430 30 2c 5b 72 32 2c 23 34 5d 0d 0c 44 11 61 64 72 |0,[r2,#4]..D.adr| 00001440 20 72 31 2c 7a 61 6e 67 6c 65 0d 0c 4e 0f 73 74 | r1,zangle..N.st| 00001450 72 20 72 30 2c 5b 72 31 5d 0d 0c 58 1a 6c 64 6d |r r0,[r1]..X.ldm| 00001460 66 64 20 28 73 70 29 21 2c 7b 72 30 2d 72 32 2c |fd (sp)!,{r0-r2,| 00001470 70 63 7d 0d 0c 62 05 3b 0d 0c 6c 12 2e 73 65 74 |pc}..b.;..l..set| 00001480 5f 76 69 65 77 61 6e 67 6c 65 0d 0c 76 1c 73 74 |_viewangle..v.st| 00001490 6d 66 64 20 28 73 70 29 21 2c 7b 72 30 2d 72 32 |mfd (sp)!,{r0-r2| 000014a0 2c 6c 69 6e 6b 7d 0d 0c 80 11 61 64 72 20 72 32 |,link}....adr r2| 000014b0 2c 61 6e 73 77 65 72 0d 0c 8a 0e 6d 6f 76 20 72 |,answer....mov r| 000014c0 31 2c 23 39 30 0d 0c 94 0d 62 6c 20 64 69 76 69 |1,#90....bl divi| 000014d0 64 65 0d 0c 9e 12 6c 64 72 20 72 31 2c 5b 72 32 |de....ldr r1,[r2| 000014e0 2c 23 34 5d 0d 0c a8 0d 63 6d 70 20 72 31 2c 23 |,#4]....cmp r1,#| 000014f0 30 0d 0c b2 12 61 64 64 65 71 20 72 30 2c 72 30 |0....addeq r0,r0| 00001500 2c 23 31 0d 0c bc 0f 6d 6f 76 20 72 31 2c 23 33 |,#1....mov r1,#3| 00001510 36 30 0d 0c c6 0d 62 6c 20 64 69 76 69 64 65 0d |60....bl divide.| 00001520 0c d0 12 6c 64 72 20 72 30 2c 5b 72 32 2c 23 34 |...ldr r0,[r2,#4| 00001530 5d 0d 0c da 14 61 64 72 20 72 31 2c 76 69 65 77 |]....adr r1,view| 00001540 61 6e 67 6c 65 0d 0c e4 0f 73 74 72 20 72 30 2c |angle....str r0,| 00001550 5b 72 31 5d 0d 0c ee 1a 6c 64 6d 66 64 20 28 73 |[r1]....ldmfd (s| 00001560 70 29 21 2c 7b 72 30 2d 72 32 2c 70 63 7d 0d 0c |p)!,{r0-r2,pc}..| 00001570 f8 05 3b 0d 0d 02 0b 2e 70 6c 6f 74 33 44 0d 0d |..;.....plot3D..| 00001580 0c 05 3b 0d 0d 16 3e 3b 20 20 63 6f 6e 76 65 72 |..;...>; conver| 00001590 74 73 20 78 2c 79 2c 7a 20 70 6f 73 69 74 69 6f |ts x,y,z positio| 000015a0 6e 20 74 6f 20 78 2c 79 20 70 6f 73 69 74 69 6f |n to x,y positio| 000015b0 6e 20 61 6e 64 20 70 6c 6f 74 73 20 70 6f 69 6e |n and plots poin| 000015c0 74 0d 0d 20 05 3b 0d 0d 2a 1c 73 74 6d 66 64 20 |t.. .;..*.stmfd | 000015d0 28 73 70 29 21 2c 7b 72 30 2d 72 33 2c 6c 69 6e |(sp)!,{r0-r3,lin| 000015e0 6b 7d 0d 0d 34 0f 62 6c 20 63 61 6c 63 5f 70 6f |k}..4.bl calc_po| 000015f0 73 0d 0d 3e 15 61 64 72 20 72 33 2c 70 6c 6f 74 |s..>.adr r3,plot| 00001600 61 63 74 69 6f 6e 0d 0d 48 14 6c 64 6d 69 61 20 |action..H.ldmia | 00001610 72 33 2c 7b 72 30 2d 72 32 7d 0d 0d 52 11 73 77 |r3,{r0-r2}..R.sw| 00001620 69 20 22 4f 53 5f 50 6c 6f 74 22 0d 0d 5c 1a 6c |i "OS_Plot"..\.l| 00001630 64 6d 66 64 20 28 73 70 29 21 2c 7b 72 30 2d 72 |dmfd (sp)!,{r0-r| 00001640 33 2c 70 63 7d 0d 0d 66 05 3b 0d 0d 70 0d 2e 74 |3,pc}..f.;..p..t| 00001650 72 61 6e 73 66 65 72 0d 0d 7a 05 3b 0d 0d 84 43 |ransfer..z.;...C| 00001660 3b 20 20 74 72 61 6e 73 66 65 72 73 20 72 30 2d |; transfers r0-| 00001670 72 33 20 74 6f 20 73 74 6f 72 61 67 65 20 70 6f |r3 to storage po| 00001680 69 6e 74 73 2c 20 70 6c 6f 74 61 63 74 69 6f 6e |ints, plotaction| 00001690 2c 78 70 6f 73 2c 79 70 6f 73 2c 7a 70 6f 73 0d |,xpos,ypos,zpos.| 000016a0 0d 8e 05 3b 0d 0d 98 1c 73 74 6d 66 64 20 28 73 |...;....stmfd (s| 000016b0 70 29 21 2c 7b 72 30 2d 72 34 2c 6c 69 6e 6b 7d |p)!,{r0-r4,link}| 000016c0 0d 0d a2 15 61 64 72 20 72 34 2c 70 6c 6f 74 61 |....adr r4,plota| 000016d0 63 74 69 6f 6e 0d 0d ac 14 73 74 6d 69 61 20 72 |ction....stmia r| 000016e0 34 2c 7b 72 30 2d 72 33 7d 0d 0d b6 0d 62 6c 20 |4,{r0-r3}....bl | 000016f0 70 6c 6f 74 33 44 0d 0d c0 1a 6c 64 6d 66 64 20 |plot3D....ldmfd | 00001700 28 73 70 29 21 2c 7b 72 30 2d 72 34 2c 70 63 7d |(sp)!,{r0-r4,pc}| 00001710 0d 0d ca 04 0d 0d d4 05 3b 0d 0d de 0b 2e 61 6e |........;.....an| 00001720 73 77 65 72 0d 0d e8 0a 65 71 75 64 20 30 0d 0d |swer....equd 0..| 00001730 f2 0a 65 71 75 64 20 30 0d 0d fc 0e 2e 76 69 65 |..equd 0.....vie| 00001740 77 61 6e 67 6c 65 0d 0e 06 0a 65 71 75 64 20 30 |wangle....equd 0| 00001750 0d 0e 10 0b 2e 78 61 6e 67 6c 65 0d 0e 1a 0a 65 |.....xangle....e| 00001760 71 75 64 20 30 0d 0e 24 0b 2e 79 61 6e 67 6c 65 |qud 0..$..yangle| 00001770 0d 0e 2e 0a 65 71 75 64 20 30 0d 0e 38 0b 2e 7a |....equd 0..8..z| 00001780 61 6e 67 6c 65 0d 0e 42 0a 65 71 75 64 20 30 0d |angle..B.equd 0.| 00001790 0e 4c 0f 2e 70 6c 6f 74 61 63 74 69 6f 6e 0d 0e |.L..plotaction..| 000017a0 56 0a 65 71 75 64 20 30 0d 0e 60 09 2e 78 70 6f |V.equd 0..`..xpo| 000017b0 73 0d 0e 6a 0a 65 71 75 64 20 30 0d 0e 74 09 2e |s..j.equd 0..t..| 000017c0 79 70 6f 73 0d 0e 7e 0a 65 71 75 64 20 30 0d 0e |ypos..~.equd 0..| 000017d0 88 09 2e 7a 70 6f 73 0d 0e 92 0a 65 71 75 64 20 |...zpos....equd | 000017e0 30 0d 0e 9c 05 3b 0d 0e a6 0c 2e 72 65 61 64 70 |0....;.....readp| 000017f0 6f 73 0d 0e b0 05 3b 0d 0e ba 29 3b 20 72 65 61 |os....;...); rea| 00001800 64 73 20 70 6f 69 6e 74 20 73 74 6f 72 61 67 65 |ds point storage| 00001810 20 62 6c 6f 63 6b 20 61 6e 64 20 2a 31 30 32 34 | block and *1024| 00001820 0d 0e c4 1d 3b 20 73 74 6f 72 65 73 20 72 65 73 |....; stores res| 00001830 75 6c 74 20 69 6e 20 72 38 2d 72 31 30 0d 0e ce |ult in r8-r10...| 00001840 05 3b 0d 0e d8 19 73 74 6d 66 64 20 28 73 70 29 |.;....stmfd (sp)| 00001850 21 2c 7b 72 30 2c 6c 69 6e 6b 7d 0d 0e e2 0f 61 |!,{r0,link}....a| 00001860 64 72 20 72 30 2c 78 70 6f 73 0d 0e ec 15 6c 64 |dr r0,xpos....ld| 00001870 6d 69 61 20 72 30 2c 7b 72 38 2d 72 31 30 7d 0d |mia r0,{r8-r10}.| 00001880 0e f6 0d 63 6d 70 20 72 38 2c 23 30 0d 0f 00 12 |...cmp r8,#0....| 00001890 61 64 64 65 71 20 72 38 2c 72 38 2c 23 31 0d 0f |addeq r8,r8,#1..| 000018a0 0a 0d 63 6d 70 20 72 39 2c 23 30 0d 0f 14 12 61 |..cmp r9,#0....a| 000018b0 64 64 65 71 20 72 39 2c 72 39 2c 23 31 0d 0f 1e |ddeq r9,r9,#1...| 000018c0 0e 63 6d 70 20 72 31 30 2c 23 30 0d 0f 28 14 61 |.cmp r10,#0..(.a| 000018d0 64 64 65 71 20 72 31 30 2c 72 31 30 2c 23 31 0d |ddeq r10,r10,#1.| 000018e0 0f 32 14 6d 6f 76 20 72 38 2c 72 38 2c 61 73 6c |.2.mov r8,r8,asl| 000018f0 23 31 30 0d 0f 3c 14 6d 6f 76 20 72 39 2c 72 39 |#10..<.mov r9,r9| 00001900 2c 61 73 6c 23 31 30 0d 0f 46 16 6d 6f 76 20 72 |,asl#10..F.mov r| 00001910 31 30 2c 72 31 30 2c 61 73 6c 23 31 30 0d 0f 50 |10,r10,asl#10..P| 00001920 09 2e 73 6b 69 70 0d 0f 5a 17 6c 64 6d 66 64 20 |..skip..Z.ldmfd | 00001930 28 73 70 29 21 2c 7b 72 30 2c 70 63 7d 0d 0f 64 |(sp)!,{r0,pc}..d| 00001940 05 3b 0d 0f 6e 0d 2e 63 61 6c 63 5f 70 6f 73 0d |.;..n..calc_pos.| 00001950 0f 78 05 3b 0d 0f 82 37 3b 20 63 61 6c 63 75 6c |.x.;...7; calcul| 00001960 61 74 65 73 20 32 44 20 70 6f 73 69 74 69 6f 6e |ates 2D position| 00001970 20 66 72 6f 6d 20 61 6c 6c 20 67 69 76 65 6e 20 | from all given | 00001980 69 6e 66 6f 72 6d 61 74 69 6f 6e 0d 0f 8c 05 3b |information....;| 00001990 0d 0f 96 1d 73 74 6d 66 64 20 28 73 70 29 21 2c |....stmfd (sp)!,| 000019a0 7b 72 30 2d 72 31 30 2c 6c 69 6e 6b 7d 0d 0f a0 |{r0-r10,link}...| 000019b0 0e 62 6c 20 72 65 61 64 70 6f 73 0d 0f aa 11 61 |.bl readpos....a| 000019c0 64 72 20 72 30 2c 7a 61 6e 67 6c 65 0d 0f b4 0f |dr r0,zangle....| 000019d0 6c 64 72 20 72 30 2c 5b 72 30 5d 0d 0f be 0d 62 |ldr r0,[r0]....b| 000019e0 6c 20 67 65 74 63 6f 73 0d 0f c8 0d 62 6c 20 67 |l getcos....bl g| 000019f0 65 74 73 69 6e 0d 0f d2 0d 6d 6f 76 20 72 30 2c |etsin....mov r0,| 00001a00 72 38 0d 0f dc 0d 6d 6f 76 20 72 31 2c 72 37 0d |r8....mov r1,r7.| 00001a10 0f e6 0d 62 6c 20 64 69 76 69 64 65 0d 0f f0 11 |...bl divide....| 00001a20 61 64 72 20 72 30 2c 61 6e 73 77 65 72 0d 0f fa |adr r0,answer...| 00001a30 0f 6c 64 72 20 72 33 2c 5b 72 30 5d 0d 10 04 0d |.ldr r3,[r0]....| 00001a40 6d 6f 76 20 72 30 2c 72 39 0d 10 0e 0d 6d 6f 76 |mov r0,r9....mov| 00001a50 20 72 31 2c 72 36 0d 10 18 0d 62 6c 20 64 69 76 | r1,r6....bl div| 00001a60 69 64 65 0d 10 22 11 61 64 72 20 72 30 2c 61 6e |ide..".adr r0,an| 00001a70 73 77 65 72 0d 10 2c 0f 6c 64 72 20 72 34 2c 5b |swer..,.ldr r4,[| 00001a80 72 30 5d 0d 10 36 10 73 75 62 20 72 30 2c 72 33 |r0]..6.sub r0,r3| 00001a90 2c 72 34 0d 10 40 0f 61 64 72 20 72 31 2c 78 70 |,r4..@.adr r1,xp| 00001aa0 6f 73 0d 10 4a 0f 73 74 72 20 72 30 2c 5b 72 31 |os..J.str r0,[r1| 00001ab0 5d 0d 10 54 0d 6d 6f 76 20 72 30 2c 72 38 0d 10 |]..T.mov r0,r8..| 00001ac0 5e 0d 6d 6f 76 20 72 31 2c 72 36 0d 10 68 0d 62 |^.mov r1,r6..h.b| 00001ad0 6c 20 64 69 76 69 64 65 0d 10 72 11 61 64 72 20 |l divide..r.adr | 00001ae0 72 30 2c 61 6e 73 77 65 72 0d 10 7c 0f 6c 64 72 |r0,answer..|.ldr| 00001af0 20 72 33 2c 5b 72 30 5d 0d 10 86 0d 6d 6f 76 20 | r3,[r0]....mov | 00001b00 72 30 2c 72 39 0d 10 90 0d 6d 6f 76 20 72 31 2c |r0,r9....mov r1,| 00001b10 72 37 0d 10 9a 0d 62 6c 20 64 69 76 69 64 65 0d |r7....bl divide.| 00001b20 10 a4 11 61 64 72 20 72 30 2c 61 6e 73 77 65 72 |...adr r0,answer| 00001b30 0d 10 ae 0f 6c 64 72 20 72 34 2c 5b 72 30 5d 0d |....ldr r4,[r0].| 00001b40 10 b8 10 61 64 64 20 72 30 2c 72 33 2c 72 34 0d |...add r0,r3,r4.| 00001b50 10 c2 0f 61 64 72 20 72 31 2c 79 70 6f 73 0d 10 |...adr r1,ypos..| 00001b60 cc 0f 73 74 72 20 72 30 2c 5b 72 31 5d 0d 10 d6 |..str r0,[r1]...| 00001b70 16 6d 6f 76 20 72 31 30 2c 72 31 30 2c 61 73 72 |.mov r10,r10,asr| 00001b80 23 31 30 0d 10 e0 0f 61 64 72 20 72 31 2c 7a 70 |#10....adr r1,zp| 00001b90 6f 73 0d 10 ea 10 73 74 72 20 72 31 30 2c 5b 72 |os....str r10,[r| 00001ba0 31 5d 0d 10 f4 05 3b 0d 10 fe 0e 62 6c 20 72 65 |1]....;....bl re| 00001bb0 61 64 70 6f 73 0d 11 08 11 61 64 72 20 72 30 2c |adpos....adr r0,| 00001bc0 79 61 6e 67 6c 65 0d 11 12 0f 6c 64 72 20 72 30 |yangle....ldr r0| 00001bd0 2c 5b 72 30 5d 0d 11 1c 0d 62 6c 20 67 65 74 63 |,[r0]....bl getc| 00001be0 6f 73 0d 11 26 0d 62 6c 20 67 65 74 73 69 6e 0d |os..&.bl getsin.| 00001bf0 11 30 0d 6d 6f 76 20 72 30 2c 72 38 0d 11 3a 0d |.0.mov r0,r8..:.| 00001c00 6d 6f 76 20 72 31 2c 72 37 0d 11 44 0d 62 6c 20 |mov r1,r7..D.bl | 00001c10 64 69 76 69 64 65 0d 11 4e 11 61 64 72 20 72 30 |divide..N.adr r0| 00001c20 2c 61 6e 73 77 65 72 0d 11 58 0f 6c 64 72 20 72 |,answer..X.ldr r| 00001c30 33 2c 5b 72 30 5d 0d 11 62 0e 6d 6f 76 20 72 30 |3,[r0]..b.mov r0| 00001c40 2c 72 31 30 0d 11 6c 0d 6d 6f 76 20 72 31 2c 72 |,r10..l.mov r1,r| 00001c50 36 0d 11 76 0d 62 6c 20 64 69 76 69 64 65 0d 11 |6..v.bl divide..| 00001c60 80 11 61 64 72 20 72 30 2c 61 6e 73 77 65 72 0d |..adr r0,answer.| 00001c70 11 8a 0f 6c 64 72 20 72 34 2c 5b 72 30 5d 0d 11 |...ldr r4,[r0]..| 00001c80 94 10 61 64 64 20 72 30 2c 72 33 2c 72 34 0d 11 |..add r0,r3,r4..| 00001c90 9e 0f 61 64 72 20 72 31 2c 78 70 6f 73 0d 11 a8 |..adr r1,xpos...| 00001ca0 0f 73 74 72 20 72 30 2c 5b 72 31 5d 0d 11 b2 14 |.str r0,[r1]....| 00001cb0 6d 6f 76 20 72 39 2c 72 39 2c 61 73 72 23 31 30 |mov r9,r9,asr#10| 00001cc0 0d 11 bc 0f 61 64 72 20 72 31 2c 79 70 6f 73 0d |....adr r1,ypos.| 00001cd0 11 c6 0f 73 74 72 20 72 39 2c 5b 72 31 5d 0d 11 |...str r9,[r1]..| 00001ce0 d0 0e 6d 6f 76 20 72 30 2c 72 31 30 0d 11 da 0d |..mov r0,r10....| 00001cf0 6d 6f 76 20 72 31 2c 72 37 0d 11 e4 0d 62 6c 20 |mov r1,r7....bl | 00001d00 64 69 76 69 64 65 0d 11 ee 11 61 64 72 20 72 30 |divide....adr r0| 00001d10 2c 61 6e 73 77 65 72 0d 11 f8 0f 6c 64 72 20 72 |,answer....ldr r| 00001d20 33 2c 5b 72 30 5d 0d 12 02 0d 6d 6f 76 20 72 30 |3,[r0]....mov r0| 00001d30 2c 72 38 0d 12 0c 0d 6d 6f 76 20 72 31 2c 72 36 |,r8....mov r1,r6| 00001d40 0d 12 16 0d 62 6c 20 64 69 76 69 64 65 0d 12 20 |....bl divide.. | 00001d50 11 61 64 72 20 72 30 2c 61 6e 73 77 65 72 0d 12 |.adr r0,answer..| 00001d60 2a 0f 6c 64 72 20 72 34 2c 5b 72 30 5d 0d 12 34 |*.ldr r4,[r0]..4| 00001d70 10 73 75 62 20 72 30 2c 72 33 2c 72 34 0d 12 3e |.sub r0,r3,r4..>| 00001d80 0f 61 64 72 20 72 31 2c 7a 70 6f 73 0d 12 48 0f |.adr r1,zpos..H.| 00001d90 73 74 72 20 72 30 2c 5b 72 31 5d 0d 12 52 05 3b |str r0,[r1]..R.;| 00001da0 0d 12 5c 0e 62 6c 20 72 65 61 64 70 6f 73 0d 12 |..\.bl readpos..| 00001db0 66 11 61 64 72 20 72 30 2c 78 61 6e 67 6c 65 0d |f.adr r0,xangle.| 00001dc0 12 70 0f 6c 64 72 20 72 30 2c 5b 72 30 5d 0d 12 |.p.ldr r0,[r0]..| 00001dd0 7a 0d 62 6c 20 67 65 74 63 6f 73 0d 12 84 0d 62 |z.bl getcos....b| 00001de0 6c 20 67 65 74 73 69 6e 0d 12 8e 14 6d 6f 76 20 |l getsin....mov | 00001df0 72 38 2c 72 38 2c 61 73 72 23 31 30 0d 12 98 0f |r8,r8,asr#10....| 00001e00 61 64 72 20 72 31 2c 78 70 6f 73 0d 12 a2 0f 73 |adr r1,xpos....s| 00001e10 74 72 20 72 38 2c 5b 72 31 5d 0d 12 ac 0d 6d 6f |tr r8,[r1]....mo| 00001e20 76 20 72 30 2c 72 39 0d 12 b6 0d 6d 6f 76 20 72 |v r0,r9....mov r| 00001e30 31 2c 72 37 0d 12 c0 0d 62 6c 20 64 69 76 69 64 |1,r7....bl divid| 00001e40 65 0d 12 ca 11 61 64 72 20 72 30 2c 61 6e 73 77 |e....adr r0,answ| 00001e50 65 72 0d 12 d4 0f 6c 64 72 20 72 33 2c 5b 72 30 |er....ldr r3,[r0| 00001e60 5d 0d 12 de 0e 6d 6f 76 20 72 30 2c 72 31 30 0d |]....mov r0,r10.| 00001e70 12 e8 0d 6d 6f 76 20 72 31 2c 72 36 0d 12 f2 0d |...mov r1,r6....| 00001e80 62 6c 20 64 69 76 69 64 65 0d 12 fc 11 61 64 72 |bl divide....adr| 00001e90 20 72 30 2c 61 6e 73 77 65 72 0d 13 06 0f 6c 64 | r0,answer....ld| 00001ea0 72 20 72 34 2c 5b 72 30 5d 0d 13 10 10 73 75 62 |r r4,[r0]....sub| 00001eb0 20 72 30 2c 72 33 2c 72 34 0d 13 1a 0f 61 64 72 | r0,r3,r4....adr| 00001ec0 20 72 31 2c 79 70 6f 73 0d 13 24 0f 73 74 72 20 | r1,ypos..$.str | 00001ed0 72 30 2c 5b 72 31 5d 0d 13 2e 0d 6d 6f 76 20 72 |r0,[r1]....mov r| 00001ee0 30 2c 72 39 0d 13 38 0d 6d 6f 76 20 72 31 2c 72 |0,r9..8.mov r1,r| 00001ef0 36 0d 13 42 0d 62 6c 20 64 69 76 69 64 65 0d 13 |6..B.bl divide..| 00001f00 4c 11 61 64 72 20 72 30 2c 61 6e 73 77 65 72 0d |L.adr r0,answer.| 00001f10 13 56 0f 6c 64 72 20 72 33 2c 5b 72 30 5d 0d 13 |.V.ldr r3,[r0]..| 00001f20 60 0d 6d 6f 76 20 72 30 2c 31 30 0d 13 6a 0d 6d |`.mov r0,10..j.m| 00001f30 6f 76 20 72 31 2c 72 37 0d 13 74 0d 62 6c 20 64 |ov r1,r7..t.bl d| 00001f40 69 76 69 64 65 0d 13 7e 11 61 64 72 20 72 30 2c |ivide..~.adr r0,| 00001f50 61 6e 73 77 65 72 0d 13 88 0f 6c 64 72 20 72 34 |answer....ldr r4| 00001f60 2c 5b 72 30 5d 0d 13 92 10 61 64 64 20 72 30 2c |,[r0]....add r0,| 00001f70 72 33 2c 72 34 0d 13 9c 0f 61 64 72 20 72 31 2c |r3,r4....adr r1,| 00001f80 7a 70 6f 73 0d 13 a6 0f 73 74 72 20 72 30 2c 5b |zpos....str r0,[| 00001f90 72 31 5d 0d 13 b0 05 3b 0d 13 ba 0e 62 6c 20 72 |r1]....;....bl r| 00001fa0 65 61 64 70 6f 73 0d 13 c4 14 61 64 72 20 72 30 |eadpos....adr r0| 00001fb0 2c 76 69 65 77 61 6e 67 6c 65 0d 13 ce 0f 6c 64 |,viewangle....ld| 00001fc0 72 20 72 30 2c 5b 72 30 5d 0d 13 d8 0d 62 6c 20 |r r0,[r0]....bl | 00001fd0 67 65 74 63 6f 73 0d 13 e2 0d 62 6c 20 67 65 74 |getcos....bl get| 00001fe0 73 69 6e 0d 13 ec 0e 6d 6f 76 20 72 30 2c 72 31 |sin....mov r0,r1| 00001ff0 30 0d 13 f6 0d 6d 6f 76 20 72 31 2c 72 37 0d 14 |0....mov r1,r7..| 00002000 00 0d 62 6c 20 64 69 76 69 64 65 0d 14 0a 11 61 |..bl divide....a| 00002010 64 72 20 72 30 2c 61 6e 73 77 65 72 0d 14 14 0f |dr r0,answer....| 00002020 6c 64 72 20 72 33 2c 5b 72 30 5d 0d 14 1e 14 6d |ldr r3,[r0]....m| 00002030 6f 76 20 72 38 2c 72 38 2c 61 73 72 23 31 30 0d |ov r8,r8,asr#10.| 00002040 14 28 10 61 64 64 20 72 38 2c 72 38 2c 72 33 0d |.(.add r8,r8,r3.| 00002050 14 32 0f 61 64 72 20 72 31 2c 78 70 6f 73 0d 14 |.2.adr r1,xpos..| 00002060 3c 0f 73 74 72 20 72 38 2c 5b 72 31 5d 0d 14 46 |<.str r8,[r1]..F| 00002070 05 3b 0d 14 50 0e 6d 6f 76 20 72 30 2c 72 31 30 |.;..P.mov r0,r10| 00002080 0d 14 5a 0d 6d 6f 76 20 72 31 2c 72 36 0d 14 64 |..Z.mov r1,r6..d| 00002090 0d 62 6c 20 64 69 76 69 64 65 0d 14 6e 11 61 64 |.bl divide..n.ad| 000020a0 72 20 72 30 2c 61 6e 73 77 65 72 0d 14 78 0f 6c |r r0,answer..x.l| 000020b0 64 72 20 72 33 2c 5b 72 30 5d 0d 14 82 14 6d 6f |dr r3,[r0]....mo| 000020c0 76 20 72 39 2c 72 39 2c 61 73 72 23 31 30 0d 14 |v r9,r9,asr#10..| 000020d0 8c 10 61 64 64 20 72 39 2c 72 39 2c 72 33 0d 14 |..add r9,r9,r3..| 000020e0 96 0f 61 64 72 20 72 31 2c 79 70 6f 73 0d 14 a0 |..adr r1,ypos...| 000020f0 0f 73 74 72 20 72 39 2c 5b 72 31 5d 0d 14 aa 05 |.str r9,[r1]....| 00002100 3b 0d 14 b4 1b 6c 64 6d 66 64 20 28 73 70 29 21 |;....ldmfd (sp)!| 00002110 2c 7b 72 30 2d 72 31 30 2c 70 63 7d 0d 14 be 05 |,{r0-r10,pc}....| 00002120 3b 0d 14 c8 10 2e 63 61 6c 63 5f 6f 62 6a 65 63 |;.....calc_objec| 00002130 74 0d 14 d2 1c 73 74 6d 66 64 20 28 73 70 29 21 |t....stmfd (sp)!| 00002140 2c 7b 72 30 2d 72 36 2c 6c 69 6e 6b 7d 0d 14 dc |,{r0-r6,link}...| 00002150 28 3b 20 72 30 20 69 73 20 70 6f 69 6e 74 65 72 |(; r0 is pointer| 00002160 20 74 6f 20 63 6f 2d 6f 72 64 69 6e 61 74 65 20 | to co-ordinate | 00002170 62 6c 6f 63 6b 0d 14 e6 21 3b 20 72 31 20 69 73 |block...!; r1 is| 00002180 20 70 6f 69 6e 74 65 72 20 74 6f 20 70 6c 6f 74 | pointer to plot| 00002190 20 62 6c 6f 63 6b 0d 14 f0 14 73 74 6d 66 64 20 | block....stmfd | 000021a0 28 73 70 29 21 2c 7b 72 30 7d 0d 14 fa 0d 6d 6f |(sp)!,{r0}....mo| 000021b0 76 20 72 30 2c 72 32 0d 15 04 11 62 6c 20 73 65 |v r0,r2....bl se| 000021c0 74 5f 78 61 6e 67 6c 65 0d 15 0e 0d 6d 6f 76 20 |t_xangle....mov | 000021d0 72 30 2c 72 33 0d 15 18 11 62 6c 20 73 65 74 5f |r0,r3....bl set_| 000021e0 79 61 6e 67 6c 65 0d 15 22 0d 6d 6f 76 20 72 30 |yangle..".mov r0| 000021f0 2c 72 34 0d 15 2c 11 62 6c 20 73 65 74 5f 7a 61 |,r4..,.bl set_za| 00002200 6e 67 6c 65 0d 15 36 0d 6d 6f 76 20 72 30 2c 72 |ngle..6.mov r0,r| 00002210 35 0d 15 40 14 62 6c 20 73 65 74 5f 76 69 65 77 |5..@.bl set_view| 00002220 61 6e 67 6c 65 0d 15 4a 14 6c 64 6d 66 64 20 28 |angle..J.ldmfd (| 00002230 73 70 29 21 2c 7b 72 30 7d 0d 15 54 15 61 64 72 |sp)!,{r0}..T.adr| 00002240 20 72 32 2c 70 6c 6f 74 61 63 74 69 6f 6e 0d 15 | r2,plotaction..| 00002250 5e 0b 2e 72 65 74 75 72 6e 0d 15 68 15 6c 64 6d |^..return..h.ldm| 00002260 69 61 20 72 30 21 2c 7b 72 33 2d 72 36 7d 0d 15 |ia r0!,{r3-r6}..| 00002270 72 0f 63 6d 70 20 72 33 2c 23 32 35 36 0d 15 7c |r.cmp r3,#256..|| 00002280 14 73 74 72 65 71 20 72 33 2c 5b 72 31 2c 23 30 |.streq r3,[r1,#0| 00002290 5d 0d 15 86 1c 6c 64 6d 65 71 66 64 20 28 73 70 |]....ldmeqfd (sp| 000022a0 29 21 2c 7b 72 30 2d 72 36 2c 70 63 7d 0d 15 90 |)!,{r0-r6,pc}...| 000022b0 14 73 74 6d 69 61 20 72 32 2c 7b 72 33 2d 72 36 |.stmia r2,{r3-r6| 000022c0 7d 0d 15 9a 0f 62 6c 20 63 61 6c 63 5f 70 6f 73 |}....bl calc_pos| 000022d0 0d 15 a4 14 6c 64 6d 69 61 20 72 32 2c 7b 72 33 |....ldmia r2,{r3| 000022e0 2d 72 35 7d 0d 15 ae 15 73 74 6d 69 61 20 72 31 |-r5}....stmia r1| 000022f0 21 2c 7b 72 33 2d 72 35 7d 0d 15 b8 0c 62 20 72 |!,{r3-r5}....b r| 00002300 65 74 75 72 6e 0d 15 c2 05 3b 0d 15 cc 11 2e 70 |eturn....;.....p| 00002310 6c 6f 74 5f 6f 62 6a 65 63 74 4c 0d 15 d6 1c 73 |lot_objectL....s| 00002320 74 6d 66 64 20 28 73 70 29 21 2c 7b 72 30 2d 72 |tmfd (sp)!,{r0-r| 00002330 32 2c 6c 69 6e 6b 7d 0d 15 e0 21 3b 20 72 30 20 |2,link}...!; r0 | 00002340 69 73 20 70 6f 69 6e 74 65 72 20 74 6f 20 70 6c |is pointer to pl| 00002350 6f 74 20 62 6c 6f 63 6b 0d 15 ea 0d 6d 6f 76 20 |ot block....mov | 00002360 72 33 2c 72 30 0d 15 f4 0f 2e 72 65 74 75 72 6e |r3,r0.....return| 00002370 70 6c 6f 74 0d 15 fe 15 6c 64 6d 69 61 20 72 33 |plot....ldmia r3| 00002380 21 2c 7b 72 30 2d 72 32 7d 0d 16 08 0f 63 6d 70 |!,{r0-r2}....cmp| 00002390 20 72 30 2c 23 32 35 36 0d 16 12 1c 6c 64 6d 65 | r0,#256....ldme| 000023a0 71 66 64 20 28 73 70 29 21 2c 7b 72 30 2d 72 32 |qfd (sp)!,{r0-r2| 000023b0 2c 70 63 7d 0d 16 1c 11 73 77 69 20 22 4f 53 5f |,pc}....swi "OS_| 000023c0 50 6c 6f 74 22 0d 16 26 10 62 20 72 65 74 75 72 |Plot"..&.b retur| 000023d0 6e 70 6c 6f 74 0d 16 30 05 3b 0d 16 3a 11 2e 70 |nplot..0.;..:..p| 000023e0 6c 6f 74 5f 6f 62 6a 65 63 74 53 0d 16 44 16 73 |lot_objectS..D.s| 000023f0 74 6d 66 64 20 28 73 70 29 21 2c 7b 6c 69 6e 6b |tmfd (sp)!,{link| 00002400 7d 0d 16 4e 21 3b 20 72 30 20 69 73 20 70 6f 69 |}..N!; r0 is poi| 00002410 6e 74 65 72 20 74 6f 20 70 6c 6f 74 20 62 6c 6f |nter to plot blo| 00002420 63 6b 0d 16 58 14 6c 64 6d 66 64 20 28 73 70 29 |ck..X.ldmfd (sp)| 00002430 21 2c 7b 70 63 7d 0d 16 62 05 5d 0d 16 6c 05 ed |!,{pc}..b.]..l..| 00002440 0d 16 76 09 f2 73 61 76 65 0d 16 80 05 e0 0d 16 |..v..save.......| 00002450 8a 05 3a 0d 16 94 0a dd f2 73 61 76 65 0d 16 9e |..:......save...| 00002460 29 ff 20 22 53 41 56 45 20 33 44 47 72 61 70 68 |). "SAVE 3DGraph| 00002470 69 63 73 20 22 2b c3 7e 63 6f 64 65 25 2b 22 20 |ics "+.~code%+" | 00002480 22 2b c3 7e 4f 25 0d 16 a8 1e ff 20 22 53 45 54 |"+.~O%..... "SET| 00002490 54 59 50 45 20 33 44 47 72 61 70 68 69 63 73 20 |TYPE 3DGraphics | 000024a0 46 46 41 22 0d 16 b2 05 e1 0d ff |FFA".......| 000024ab