Home » Archimedes archive » Acorn Computing » 1994 06 subscription disc.adf » 9406s » PD/3D_Tutor/MakeMod
PD/3D_Tutor/MakeMod
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 Computing » 1994 06 subscription disc.adf » 9406s |
Filename: | PD/3D_Tutor/MakeMod |
Read OK: | ✔ |
File size: | 0C3B bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
10REM > Listing3 20REM 3-Dimensional Plot routines (glasses effect) 30REM by Paul Mason 40REM LEN Paul Mason, 1994 50 60DIM code% 8192 70FOR opt%=4 TO 7 STEP 3 80 P%=0:O%=code% 90 [OPT opt% 100 DCD 0 110 DCD 0 120 DCD 0 130 DCD 0 140 DCD title 150 DCD help 160 DCD 0 170 DCD &3D3D00 180 DCD handler 190 DCD swilist 200 DCD 0 210 .title 220 DCB "3DLines" 230 DCB 0 240 .help 250 DCB "3D Plotter"+CHR$(9) 260 DCB " (9 Jan 1994) by Paul Mason, � Paul Mason" 270 DCB 0:ALIGN 280 .swilist 290 DCB "3D" 300 DCB 0 310 DCB "Plot" 320 DCW 0:ALIGN 330 .handler 340 CMP R11,#0 350 BEQ threeDplot 360 ADR R0,swierr 370 ORRS PC,R14,#(1<<28) 380 .swierr 390 DCD &1E6 400 DCB "Unknown 3D operation" 410 DCB 0:ALIGN 420 430 .divide 440 ; < R0 = numerator 450 ; R1 = denominator 460 ; > R2 = result of division 470 CMP R1,#0 480 BEQ end 490 MOV R5,#1 500 CMP R0,#0 510 MVNLT R5,R5:RSBLT R0,R0,#0 520 CMP R1,#0 530 MVNLT R5,R5:RSBLT R1,R1,#0 540 MOV R2,#0 550 MOV R3,#0 560 MOV R4,#1 570 .div_lp1 580 ADD R2,R2,#1 590 MOV R1,R1,ASL#1 600 CMP R1,R0 610 BLE div_lp1 620 .div_lp2 630 SUB R2,R2,#1 640 MOV R1,R1,ASR#1 650 CMP R0,R1 660 BLT div_lp2 670 CMP R1,#0 680 ADDGE R3,R3,R4,ASL R2 690 SUB R0,R0,R1 700 CMP R2,#0 710 BGT div_lp2 720 CMP R5,#0 730 RSBLT R3,R3,#0 740 MOV R2,R3 750 .end 760 MOV PC,R14 770 780 .threeDdata1 790 DCD 0 800 DCD 0 810 DCD 0 820 .threeDdata2 830 DCD 0 840 DCD 0 850 DCD 0 860 .threeDdata3 870 DCD 0 880 DCD 0 890 DCD 0 900 .threeDdata4 910 DCD 0 920 DCD 0 930 DCD 0 940 .threeDact 950 DCD 0 960 .temp 970 DCD 0 980 990 .threeDplot 1000 STMFD R13!,{R0-R12,R14} 1010 ADR R12,threeDdata4 1020 CMP R3,#1 1030 MOVLT R3,#1 1040 STMIA R12,{R1,R2,R3} 1050 STR R0,threeDact 1060 FNplot(-1) 1070 FNplot(1) 1080 ADR R12,threeDdata3 1090 SUB R11,R12,#12 1100 LDMIA R12,{R0-R8} 1110 STMIA R11,{R0-R8} 1120 LDMFD R13!,{R0-R12,PC} 1130 ] 1140NEXT 1150SYS "OS_File",10,"3DPlotMod",&FFA,,code%,O% 1160END 1170 1180DEFFNconv(x%,y%,z%,val%) 1190 [OPT opt% 1200 FNconvert(x%,z%,val%) 1210 FNconvert(y%,z%,0) 1220 ] 1230=0 1240 1250DEFPROCcolour(col%) 1260 [OPT opt% 1270 SWI 256+18 1280 SWI 256+1 1290 SWI 256+col% 1300 ] 1310ENDPROC 1320 1330DEFFNconvert(xy%,z%,val%) 1340 [OPT opt% 1350 STMFD R13!,{R0-R5} 1360 STR z%,temp 1370 TST xy%,#(1<<31) 1380 RSBNE xy%,xy%,#0 1390 MOV xy%,xy%,LSL #9 1400 RSBNE xy%,xy%,#0 1410 ADD z%,z%,#512 1420 MOV R0,xy% 1430 MOV R1,z% 1440 BL divide 1450 MOV xy%,R2 1460 LDR z%,temp 1470 MOV R0,#16 1480 MOVS R1,z%,ASR #9 1490 MOVLE R1,#1 1500 BL divide 1510 RSB R2,R2,#16 1520 ] 1530 CASE val% OF 1540 WHEN 1 : [OPT opt%:ADD xy%,xy%,R2:] 1550 WHEN -1 : [OPT opt%:SUB xy%,xy%,R2:] 1560 ENDCASE 1570 [OPT opt% 1580 LDR z%,temp 1590 LDMFD R13!,{R0-R5} 1600 ] 1610=0 1620 1630DEFFNplot_it 1640 [OPT opt% 1650 LDMIA R12!,{R8,R9,R10} 1660 FNconv(8,9,10,side%) 1670 MOV R1,R8 1680 MOV R2,R9 1690 SWI "XOS_Plot" 1700 ] 1710=0 1720 1730DEFFNplot(side%) 1740 IF side%=1 PROCcolour(2) 1750 IF side%=-1 PROCcolour(1) 1760 [OPT opt% 1770 ADR R12,threeDdata1 1780 MOV R0,#4 1790 FNplot_it 1800 FNplot_it 1810 FNplot_it 1820 LDR R0,threeDact 1830 FNplot_it 1840 ] 1850=0 1860 1870DEFFNadrb(reg%,addr%) 1880 [OPT opt% 1890 ADR reg%,(addr%+1024) 1900 SUB reg%,reg%,#1024 1910 ] 1920=0
� > Listing3 2� 3-Dimensional Plot routines (glasses effect) � by Paul Mason (� � Paul Mason, 1994 2 <� code% 8192 F� opt%=4 � 7 � 3 P P%=0:O%=code% Z [OPT opt% d DCD 0 n DCD 0 x DCD 0 � DCD 0 � DCD title � DCD help � DCD 0 � DCD &3D3D00 � DCD handler � DCD swilist � DCD 0 � .title � DCB "3DLines" � DCB 0 � .help � DCB "3D Plotter"+�(9) 5 DCB " (9 Jan 1994) by Paul Mason, � Paul Mason" DCB 0:ALIGN .swilist " DCB "3D" , DCB 0 6 DCB "Plot" @ DCW 0:ALIGN J .handler T CMP R11,#0 ^ BEQ threeDplot h ADR R0,swierr r �RS PC,R14,#(1<<28) | .swierr � DCD &1E6 � DCB "Unknown 3D operation" � DCB 0:ALIGN � � .divide � ; < R0 = numerator � ; R1 = denominator �! ; > R2 = result of division � CMP R1,#0 � BEQ end � MOV R5,#1 � CMP R0,#0 � MVNLT R5,R5:RSBLT R0,R0,#0 CMP R1,#0 MVNLT R5,R5:RSBLT R1,R1,#0 MOV R2,#0 & MOV R3,#0 0 MOV R4,#1 : .div_lp1 D ADD R2,R2,#1 N MOV R1,R1,ASL#1 X CMP R1,R0 b BLE div_lp1 l .div_lp2 v SUB R2,R2,#1 � MOV R1,R1,ASR#1 � CMP R0,R1 � BLT div_lp2 � CMP R1,#0 � ADDGE R3,R3,R4,ASL R2 � SUB R0,R0,R1 � CMP R2,#0 � BGT div_lp2 � CMP R5,#0 � RSBLT R3,R3,#0 � MOV R2,R3 � .end � MOV PC,R14 .threeDdata1 DCD 0 DCD 0 * DCD 0 4 .threeDdata2 > DCD 0 H DCD 0 R DCD 0 \ .threeDdata3 f DCD 0 p DCD 0 z DCD 0 � .threeDdata4 � DCD 0 � DCD 0 � DCD 0 � .threeDact � DCD 0 � .temp � DCD 0 � � .threeDplot � STMFD R13!,{R0-R12,R14} � ADR R12,threeDdata4 � CMP R3,#1 MOVLT R3,#1 STMIA R12,{R1,R2,R3} STR R0,threeDact $ �plot(-1) . �plot(1) 8 ADR R12,threeDdata3 B SUB R11,R12,#12 L LDMIA R12,{R0-R8} V STMIA R11,{R0-R8} ` LDMFD R13!,{R0-R12,PC} j ] t� ~.ș "OS_File",10,"3DPlotMod",&FFA,,code%,O% �� � �ݤconv(x%,y%,z%,val%) � [OPT opt% � �convert(x%,z%,val%) � �convert(y%,z%,0) � ] �=0 � ���colour(col%) � [OPT opt% � SWI 256+18 SWI 256+1 SWI 256+col% ] � ( 2ݤconvert(xy%,z%,val%) < [OPT opt% F STMFD R13!,{R0-R5} P STR z%,temp Z TST xy%,#(1<<31) d RSBNE xy%,xy%,#0 n MOV xy%,xy%,LSL #9 x RSBNE xy%,xy%,#0 � ADD z%,z%,#512 � MOV R0,xy% � MOV R1,z% � BL divide � MOV xy%,R2 � LDR z%,temp � MOV R0,#16 � MOVS R1,z%,ASR #9 � MOVLE R1,#1 � BL divide � RSB R2,R2,#16 � ] � Ȏ val% � ' � 1 : [OPT opt%:ADD xy%,xy%,R2:] ( � -1 : [OPT opt%:SUB xy%,xy%,R2:] � " [OPT opt% , LDR z%,temp 6 LDMFD R13!,{R0-R5} @ ] J=0 T ^ ݤplot_it h [OPT opt% r LDMIA R12!,{R8,R9,R10} | �conv(8,9,10,side%) � MOV R1,R8 � MOV R2,R9 � SWI "XOS_Plot" � ] �=0 � �ݤplot(side%) � � side%=1 �colour(2) � � side%=-1 �colour(1) � [OPT opt% � ADR R12,threeDdata1 � MOV R0,#4 � �plot_it �plot_it �plot_it LDR R0,threeDact & �plot_it 0 ] :=0 D Nݤadrb(reg%,addr%) X [OPT opt% b ADR reg%,(addr%+1024) l SUB reg%,reg%,#1024 v ] �=0 �
00000000 0d 00 0a 10 f4 20 3e 20 4c 69 73 74 69 6e 67 33 |..... > Listing3| 00000010 0d 00 14 32 f4 20 33 2d 44 69 6d 65 6e 73 69 6f |...2. 3-Dimensio| 00000020 6e 61 6c 20 50 6c 6f 74 20 72 6f 75 74 69 6e 65 |nal Plot routine| 00000030 73 20 28 67 6c 61 73 73 65 73 20 65 66 66 65 63 |s (glasses effec| 00000040 74 29 0d 00 1e 13 f4 20 62 79 20 50 61 75 6c 20 |t)..... by Paul | 00000050 4d 61 73 6f 6e 0d 00 28 18 f4 20 a9 20 50 61 75 |Mason..(.. . Pau| 00000060 6c 20 4d 61 73 6f 6e 2c 20 31 39 39 34 0d 00 32 |l Mason, 1994..2| 00000070 04 0d 00 3c 10 de 20 63 6f 64 65 25 20 38 31 39 |...<.. code% 819| 00000080 32 0d 00 46 14 e3 20 6f 70 74 25 3d 34 20 b8 20 |2..F.. opt%=4 . | 00000090 37 20 88 20 33 0d 00 50 13 20 20 50 25 3d 30 3a |7 . 3..P. P%=0:| 000000a0 4f 25 3d 63 6f 64 65 25 0d 00 5a 0f 20 20 5b 4f |O%=code%..Z. [O| 000000b0 50 54 20 6f 70 74 25 0d 00 64 0b 20 20 44 43 44 |PT opt%..d. DCD| 000000c0 20 30 0d 00 6e 0b 20 20 44 43 44 20 30 0d 00 78 | 0..n. DCD 0..x| 000000d0 0b 20 20 44 43 44 20 30 0d 00 82 0b 20 20 44 43 |. DCD 0.... DC| 000000e0 44 20 30 0d 00 8c 0f 20 20 44 43 44 20 74 69 74 |D 0.... DCD tit| 000000f0 6c 65 0d 00 96 0e 20 20 44 43 44 20 68 65 6c 70 |le.... DCD help| 00000100 0d 00 a0 0b 20 20 44 43 44 20 30 0d 00 aa 11 20 |.... DCD 0.... | 00000110 20 44 43 44 20 26 33 44 33 44 30 30 0d 00 b4 11 | DCD &3D3D00....| 00000120 20 20 44 43 44 20 68 61 6e 64 6c 65 72 0d 00 be | DCD handler...| 00000130 11 20 20 44 43 44 20 73 77 69 6c 69 73 74 0d 00 |. DCD swilist..| 00000140 c8 0b 20 20 44 43 44 20 30 0d 00 d2 0c 20 20 2e |.. DCD 0.... .| 00000150 74 69 74 6c 65 0d 00 dc 13 20 20 44 43 42 20 22 |title.... DCB "| 00000160 33 44 4c 69 6e 65 73 22 0d 00 e6 0b 20 20 44 43 |3DLines".... DC| 00000170 42 20 30 0d 00 f0 0b 20 20 2e 68 65 6c 70 0d 00 |B 0.... .help..| 00000180 fa 1b 20 20 44 43 42 20 22 33 44 20 50 6c 6f 74 |.. DCB "3D Plot| 00000190 74 65 72 22 2b bd 28 39 29 0d 01 04 35 20 20 44 |ter"+.(9)...5 D| 000001a0 43 42 20 22 20 28 39 20 4a 61 6e 20 31 39 39 34 |CB " (9 Jan 1994| 000001b0 29 20 62 79 20 50 61 75 6c 20 4d 61 73 6f 6e 2c |) by Paul Mason,| 000001c0 20 a9 20 50 61 75 6c 20 4d 61 73 6f 6e 22 0d 01 | . Paul Mason"..| 000001d0 0e 11 20 20 44 43 42 20 30 3a 41 4c 49 47 4e 0d |.. DCB 0:ALIGN.| 000001e0 01 18 0e 20 20 2e 73 77 69 6c 69 73 74 0d 01 22 |... .swilist.."| 000001f0 0e 20 20 44 43 42 20 22 33 44 22 0d 01 2c 0b 20 |. DCB "3D"..,. | 00000200 20 44 43 42 20 30 0d 01 36 10 20 20 44 43 42 20 | DCB 0..6. DCB | 00000210 22 50 6c 6f 74 22 0d 01 40 11 20 20 44 43 57 20 |"Plot"..@. DCW | 00000220 30 3a 41 4c 49 47 4e 0d 01 4a 0e 20 20 2e 68 61 |0:ALIGN..J. .ha| 00000230 6e 64 6c 65 72 0d 01 54 10 20 20 43 4d 50 20 52 |ndler..T. CMP R| 00000240 31 31 2c 23 30 0d 01 5e 14 20 20 42 45 51 20 74 |11,#0..^. BEQ t| 00000250 68 72 65 65 44 70 6c 6f 74 0d 01 68 13 20 20 41 |hreeDplot..h. A| 00000260 44 52 20 52 30 2c 73 77 69 65 72 72 0d 01 72 19 |DR R0,swierr..r.| 00000270 20 20 84 52 53 20 50 43 2c 52 31 34 2c 23 28 31 | .RS PC,R14,#(1| 00000280 3c 3c 32 38 29 0d 01 7c 0d 20 20 2e 73 77 69 65 |<<28)..|. .swie| 00000290 72 72 0d 01 86 0e 20 20 44 43 44 20 26 31 45 36 |rr.... DCD &1E6| 000002a0 0d 01 90 20 20 20 44 43 42 20 22 55 6e 6b 6e 6f |... DCB "Unkno| 000002b0 77 6e 20 33 44 20 6f 70 65 72 61 74 69 6f 6e 22 |wn 3D operation"| 000002c0 0d 01 9a 11 20 20 44 43 42 20 30 3a 41 4c 49 47 |.... DCB 0:ALIG| 000002d0 4e 0d 01 a4 04 0d 01 ae 0d 20 20 2e 64 69 76 69 |N........ .divi| 000002e0 64 65 0d 01 b8 18 20 20 3b 20 3c 20 52 30 20 3d |de.... ; < R0 =| 000002f0 20 6e 75 6d 65 72 61 74 6f 72 0d 01 c2 1a 20 20 | numerator.... | 00000300 3b 20 20 20 52 31 20 3d 20 64 65 6e 6f 6d 69 6e |; R1 = denomin| 00000310 61 74 6f 72 0d 01 cc 21 20 20 3b 20 3e 20 52 32 |ator...! ; > R2| 00000320 20 3d 20 72 65 73 75 6c 74 20 6f 66 20 64 69 76 | = result of div| 00000330 69 73 69 6f 6e 0d 01 d6 0f 20 20 43 4d 50 20 52 |ision.... CMP R| 00000340 31 2c 23 30 0d 01 e0 0d 20 20 42 45 51 20 65 6e |1,#0.... BEQ en| 00000350 64 0d 01 ea 0f 20 20 4d 4f 56 20 52 35 2c 23 31 |d.... MOV R5,#1| 00000360 0d 01 f4 0f 20 20 43 4d 50 20 52 30 2c 23 30 0d |.... CMP R0,#0.| 00000370 01 fe 20 20 20 4d 56 4e 4c 54 20 52 35 2c 52 35 |.. MVNLT R5,R5| 00000380 3a 52 53 42 4c 54 20 52 30 2c 52 30 2c 23 30 0d |:RSBLT R0,R0,#0.| 00000390 02 08 0f 20 20 43 4d 50 20 52 31 2c 23 30 0d 02 |... CMP R1,#0..| 000003a0 12 20 20 20 4d 56 4e 4c 54 20 52 35 2c 52 35 3a |. MVNLT R5,R5:| 000003b0 52 53 42 4c 54 20 52 31 2c 52 31 2c 23 30 0d 02 |RSBLT R1,R1,#0..| 000003c0 1c 0f 20 20 4d 4f 56 20 52 32 2c 23 30 0d 02 26 |.. MOV R2,#0..&| 000003d0 0f 20 20 4d 4f 56 20 52 33 2c 23 30 0d 02 30 0f |. MOV R3,#0..0.| 000003e0 20 20 4d 4f 56 20 52 34 2c 23 31 0d 02 3a 0e 20 | MOV R4,#1..:. | 000003f0 20 2e 64 69 76 5f 6c 70 31 0d 02 44 12 20 20 41 | .div_lp1..D. A| 00000400 44 44 20 52 32 2c 52 32 2c 23 31 0d 02 4e 15 20 |DD R2,R2,#1..N. | 00000410 20 4d 4f 56 20 52 31 2c 52 31 2c 41 53 4c 23 31 | MOV R1,R1,ASL#1| 00000420 0d 02 58 0f 20 20 43 4d 50 20 52 31 2c 52 30 0d |..X. CMP R1,R0.| 00000430 02 62 11 20 20 42 4c 45 20 64 69 76 5f 6c 70 31 |.b. BLE div_lp1| 00000440 0d 02 6c 0e 20 20 2e 64 69 76 5f 6c 70 32 0d 02 |..l. .div_lp2..| 00000450 76 12 20 20 53 55 42 20 52 32 2c 52 32 2c 23 31 |v. SUB R2,R2,#1| 00000460 0d 02 80 15 20 20 4d 4f 56 20 52 31 2c 52 31 2c |.... MOV R1,R1,| 00000470 41 53 52 23 31 0d 02 8a 0f 20 20 43 4d 50 20 52 |ASR#1.... CMP R| 00000480 30 2c 52 31 0d 02 94 11 20 20 42 4c 54 20 64 69 |0,R1.... BLT di| 00000490 76 5f 6c 70 32 0d 02 9e 0f 20 20 43 4d 50 20 52 |v_lp2.... CMP R| 000004a0 31 2c 23 30 0d 02 a8 1b 20 20 41 44 44 47 45 20 |1,#0.... ADDGE | 000004b0 52 33 2c 52 33 2c 52 34 2c 41 53 4c 20 52 32 0d |R3,R3,R4,ASL R2.| 000004c0 02 b2 12 20 20 53 55 42 20 52 30 2c 52 30 2c 52 |... SUB R0,R0,R| 000004d0 31 0d 02 bc 0f 20 20 43 4d 50 20 52 32 2c 23 30 |1.... CMP R2,#0| 000004e0 0d 02 c6 11 20 20 42 47 54 20 64 69 76 5f 6c 70 |.... BGT div_lp| 000004f0 32 0d 02 d0 0f 20 20 43 4d 50 20 52 35 2c 23 30 |2.... CMP R5,#0| 00000500 0d 02 da 14 20 20 52 53 42 4c 54 20 52 33 2c 52 |.... RSBLT R3,R| 00000510 33 2c 23 30 0d 02 e4 0f 20 20 4d 4f 56 20 52 32 |3,#0.... MOV R2| 00000520 2c 52 33 0d 02 ee 0a 20 20 2e 65 6e 64 0d 02 f8 |,R3.... .end...| 00000530 10 20 20 4d 4f 56 20 50 43 2c 52 31 34 0d 03 02 |. MOV PC,R14...| 00000540 04 0d 03 0c 12 20 20 2e 74 68 72 65 65 44 64 61 |..... .threeDda| 00000550 74 61 31 0d 03 16 0b 20 20 44 43 44 20 30 0d 03 |ta1.... DCD 0..| 00000560 20 0b 20 20 44 43 44 20 30 0d 03 2a 0b 20 20 44 | . DCD 0..*. D| 00000570 43 44 20 30 0d 03 34 12 20 20 2e 74 68 72 65 65 |CD 0..4. .three| 00000580 44 64 61 74 61 32 0d 03 3e 0b 20 20 44 43 44 20 |Ddata2..>. DCD | 00000590 30 0d 03 48 0b 20 20 44 43 44 20 30 0d 03 52 0b |0..H. DCD 0..R.| 000005a0 20 20 44 43 44 20 30 0d 03 5c 12 20 20 2e 74 68 | DCD 0..\. .th| 000005b0 72 65 65 44 64 61 74 61 33 0d 03 66 0b 20 20 44 |reeDdata3..f. D| 000005c0 43 44 20 30 0d 03 70 0b 20 20 44 43 44 20 30 0d |CD 0..p. DCD 0.| 000005d0 03 7a 0b 20 20 44 43 44 20 30 0d 03 84 12 20 20 |.z. DCD 0.... | 000005e0 2e 74 68 72 65 65 44 64 61 74 61 34 0d 03 8e 0b |.threeDdata4....| 000005f0 20 20 44 43 44 20 30 0d 03 98 0b 20 20 44 43 44 | DCD 0.... DCD| 00000600 20 30 0d 03 a2 0b 20 20 44 43 44 20 30 0d 03 ac | 0.... DCD 0...| 00000610 10 20 20 2e 74 68 72 65 65 44 61 63 74 0d 03 b6 |. .threeDact...| 00000620 0b 20 20 44 43 44 20 30 0d 03 c0 0b 20 20 2e 74 |. DCD 0.... .t| 00000630 65 6d 70 0d 03 ca 0b 20 20 44 43 44 20 30 0d 03 |emp.... DCD 0..| 00000640 d4 04 0d 03 de 11 20 20 2e 74 68 72 65 65 44 70 |...... .threeDp| 00000650 6c 6f 74 0d 03 e8 1d 20 20 53 54 4d 46 44 20 52 |lot.... STMFD R| 00000660 31 33 21 2c 7b 52 30 2d 52 31 32 2c 52 31 34 7d |13!,{R0-R12,R14}| 00000670 0d 03 f2 19 20 20 41 44 52 20 52 31 32 2c 74 68 |.... ADR R12,th| 00000680 72 65 65 44 64 61 74 61 34 0d 03 fc 0f 20 20 43 |reeDdata4.... C| 00000690 4d 50 20 52 33 2c 23 31 0d 04 06 11 20 20 4d 4f |MP R3,#1.... MO| 000006a0 56 4c 54 20 52 33 2c 23 31 0d 04 10 1a 20 20 53 |VLT R3,#1.... S| 000006b0 54 4d 49 41 20 52 31 32 2c 7b 52 31 2c 52 32 2c |TMIA R12,{R1,R2,| 000006c0 52 33 7d 0d 04 1a 16 20 20 53 54 52 20 52 30 2c |R3}.... STR R0,| 000006d0 74 68 72 65 65 44 61 63 74 0d 04 24 0f 20 20 a4 |threeDact..$. .| 000006e0 70 6c 6f 74 28 2d 31 29 0d 04 2e 0e 20 20 a4 70 |plot(-1).... .p| 000006f0 6c 6f 74 28 31 29 0d 04 38 19 20 20 41 44 52 20 |lot(1)..8. ADR | 00000700 52 31 32 2c 74 68 72 65 65 44 64 61 74 61 33 0d |R12,threeDdata3.| 00000710 04 42 15 20 20 53 55 42 20 52 31 31 2c 52 31 32 |.B. SUB R11,R12| 00000720 2c 23 31 32 0d 04 4c 17 20 20 4c 44 4d 49 41 20 |,#12..L. LDMIA | 00000730 52 31 32 2c 7b 52 30 2d 52 38 7d 0d 04 56 17 20 |R12,{R0-R8}..V. | 00000740 20 53 54 4d 49 41 20 52 31 31 2c 7b 52 30 2d 52 | STMIA R11,{R0-R| 00000750 38 7d 0d 04 60 1c 20 20 4c 44 4d 46 44 20 52 31 |8}..`. LDMFD R1| 00000760 33 21 2c 7b 52 30 2d 52 31 32 2c 50 43 7d 0d 04 |3!,{R0-R12,PC}..| 00000770 6a 07 20 20 5d 0d 04 74 05 ed 0d 04 7e 2e c8 99 |j. ]..t....~...| 00000780 20 22 4f 53 5f 46 69 6c 65 22 2c 31 30 2c 22 33 | "OS_File",10,"3| 00000790 44 50 6c 6f 74 4d 6f 64 22 2c 26 46 46 41 2c 2c |DPlotMod",&FFA,,| 000007a0 63 6f 64 65 25 2c 4f 25 0d 04 88 05 e0 0d 04 92 |code%,O%........| 000007b0 04 0d 04 9c 19 dd a4 63 6f 6e 76 28 78 25 2c 79 |.......conv(x%,y| 000007c0 25 2c 7a 25 2c 76 61 6c 25 29 0d 04 a6 0e 20 5b |%,z%,val%).... [| 000007d0 4f 50 54 20 6f 70 74 25 0d 04 b0 19 20 a4 63 6f |OPT opt%.... .co| 000007e0 6e 76 65 72 74 28 78 25 2c 7a 25 2c 76 61 6c 25 |nvert(x%,z%,val%| 000007f0 29 0d 04 ba 16 20 a4 63 6f 6e 76 65 72 74 28 79 |).... .convert(y| 00000800 25 2c 7a 25 2c 30 29 0d 04 c4 06 20 5d 0d 04 ce |%,z%,0).... ]...| 00000810 06 3d 30 0d 04 d8 04 0d 04 e2 12 dd f2 63 6f 6c |.=0..........col| 00000820 6f 75 72 28 63 6f 6c 25 29 0d 04 ec 0e 20 5b 4f |our(col%).... [O| 00000830 50 54 20 6f 70 74 25 0d 04 f6 0f 20 53 57 49 20 |PT opt%.... SWI | 00000840 32 35 36 2b 31 38 0d 05 00 0e 20 53 57 49 20 32 |256+18.... SWI 2| 00000850 35 36 2b 31 0d 05 0a 11 20 53 57 49 20 32 35 36 |56+1.... SWI 256| 00000860 2b 63 6f 6c 25 0d 05 14 06 20 5d 0d 05 1e 05 e1 |+col%.... ].....| 00000870 0d 05 28 04 0d 05 32 1a dd a4 63 6f 6e 76 65 72 |..(...2...conver| 00000880 74 28 78 79 25 2c 7a 25 2c 76 61 6c 25 29 0d 05 |t(xy%,z%,val%)..| 00000890 3c 0e 20 5b 4f 50 54 20 6f 70 74 25 0d 05 46 17 |<. [OPT opt%..F.| 000008a0 20 53 54 4d 46 44 20 52 31 33 21 2c 7b 52 30 2d | STMFD R13!,{R0-| 000008b0 52 35 7d 0d 05 50 10 20 53 54 52 20 7a 25 2c 74 |R5}..P. STR z%,t| 000008c0 65 6d 70 0d 05 5a 15 20 54 53 54 20 78 79 25 2c |emp..Z. TST xy%,| 000008d0 23 28 31 3c 3c 33 31 29 0d 05 64 15 20 52 53 42 |#(1<<31)..d. RSB| 000008e0 4e 45 20 78 79 25 2c 78 79 25 2c 23 30 0d 05 6e |NE xy%,xy%,#0..n| 000008f0 17 20 4d 4f 56 20 78 79 25 2c 78 79 25 2c 4c 53 |. MOV xy%,xy%,LS| 00000900 4c 20 23 39 0d 05 78 15 20 52 53 42 4e 45 20 78 |L #9..x. RSBNE x| 00000910 79 25 2c 78 79 25 2c 23 30 0d 05 82 13 20 41 44 |y%,xy%,#0.... AD| 00000920 44 20 7a 25 2c 7a 25 2c 23 35 31 32 0d 05 8c 0f |D z%,z%,#512....| 00000930 20 4d 4f 56 20 52 30 2c 78 79 25 0d 05 96 0e 20 | MOV R0,xy%.... | 00000940 4d 4f 56 20 52 31 2c 7a 25 0d 05 a0 0e 20 42 4c |MOV R1,z%.... BL| 00000950 20 64 69 76 69 64 65 0d 05 aa 0f 20 4d 4f 56 20 | divide.... MOV | 00000960 78 79 25 2c 52 32 0d 05 b4 10 20 4c 44 52 20 7a |xy%,R2.... LDR z| 00000970 25 2c 74 65 6d 70 0d 05 be 0f 20 4d 4f 56 20 52 |%,temp.... MOV R| 00000980 30 2c 23 31 36 0d 05 c8 16 20 4d 4f 56 53 20 52 |0,#16.... MOVS R| 00000990 31 2c 7a 25 2c 41 53 52 20 23 39 0d 05 d2 10 20 |1,z%,ASR #9.... | 000009a0 4d 4f 56 4c 45 20 52 31 2c 23 31 0d 05 dc 0e 20 |MOVLE R1,#1.... | 000009b0 42 4c 20 64 69 76 69 64 65 0d 05 e6 12 20 52 53 |BL divide.... RS| 000009c0 42 20 52 32 2c 52 32 2c 23 31 36 0d 05 f0 06 20 |B R2,R2,#16.... | 000009d0 5d 0d 05 fa 0e 20 c8 8e 20 76 61 6c 25 20 ca 0d |].... .. val% ..| 000009e0 06 04 27 20 20 20 c9 20 31 20 3a 20 5b 4f 50 54 |..' . 1 : [OPT| 000009f0 20 6f 70 74 25 3a 41 44 44 20 78 79 25 2c 78 79 | opt%:ADD xy%,xy| 00000a00 25 2c 52 32 3a 5d 0d 06 0e 28 20 20 20 c9 20 2d |%,R2:]...( . -| 00000a10 31 20 3a 20 5b 4f 50 54 20 6f 70 74 25 3a 53 55 |1 : [OPT opt%:SU| 00000a20 42 20 78 79 25 2c 78 79 25 2c 52 32 3a 5d 0d 06 |B xy%,xy%,R2:]..| 00000a30 18 06 20 cb 0d 06 22 0e 20 5b 4f 50 54 20 6f 70 |.. ...". [OPT op| 00000a40 74 25 0d 06 2c 10 20 4c 44 52 20 7a 25 2c 74 65 |t%..,. LDR z%,te| 00000a50 6d 70 0d 06 36 17 20 4c 44 4d 46 44 20 52 31 33 |mp..6. LDMFD R13| 00000a60 21 2c 7b 52 30 2d 52 35 7d 0d 06 40 06 20 5d 0d |!,{R0-R5}..@. ].| 00000a70 06 4a 06 3d 30 0d 06 54 04 0d 06 5e 0d dd a4 70 |.J.=0..T...^...p| 00000a80 6c 6f 74 5f 69 74 0d 06 68 0e 20 5b 4f 50 54 20 |lot_it..h. [OPT | 00000a90 6f 70 74 25 0d 06 72 1b 20 4c 44 4d 49 41 20 52 |opt%..r. LDMIA R| 00000aa0 31 32 21 2c 7b 52 38 2c 52 39 2c 52 31 30 7d 0d |12!,{R8,R9,R10}.| 00000ab0 06 7c 18 20 a4 63 6f 6e 76 28 38 2c 39 2c 31 30 |.|. .conv(8,9,10| 00000ac0 2c 73 69 64 65 25 29 0d 06 86 0e 20 4d 4f 56 20 |,side%).... MOV | 00000ad0 52 31 2c 52 38 0d 06 90 0e 20 4d 4f 56 20 52 32 |R1,R8.... MOV R2| 00000ae0 2c 52 39 0d 06 9a 13 20 53 57 49 20 22 58 4f 53 |,R9.... SWI "XOS| 00000af0 5f 50 6c 6f 74 22 0d 06 a4 06 20 5d 0d 06 ae 06 |_Plot".... ]....| 00000b00 3d 30 0d 06 b8 04 0d 06 c2 11 dd a4 70 6c 6f 74 |=0..........plot| 00000b10 28 73 69 64 65 25 29 0d 06 cc 19 20 e7 20 73 69 |(side%).... . si| 00000b20 64 65 25 3d 31 20 f2 63 6f 6c 6f 75 72 28 32 29 |de%=1 .colour(2)| 00000b30 0d 06 d6 1a 20 e7 20 73 69 64 65 25 3d 2d 31 20 |.... . side%=-1 | 00000b40 f2 63 6f 6c 6f 75 72 28 31 29 0d 06 e0 0e 20 5b |.colour(1).... [| 00000b50 4f 50 54 20 6f 70 74 25 0d 06 ea 18 20 41 44 52 |OPT opt%.... ADR| 00000b60 20 52 31 32 2c 74 68 72 65 65 44 64 61 74 61 31 | R12,threeDdata1| 00000b70 0d 06 f4 0e 20 4d 4f 56 20 52 30 2c 23 34 0d 06 |.... MOV R0,#4..| 00000b80 fe 0d 20 a4 70 6c 6f 74 5f 69 74 0d 07 08 0d 20 |.. .plot_it.... | 00000b90 a4 70 6c 6f 74 5f 69 74 0d 07 12 0d 20 a4 70 6c |.plot_it.... .pl| 00000ba0 6f 74 5f 69 74 0d 07 1c 15 20 4c 44 52 20 52 30 |ot_it.... LDR R0| 00000bb0 2c 74 68 72 65 65 44 61 63 74 0d 07 26 0d 20 a4 |,threeDact..&. .| 00000bc0 70 6c 6f 74 5f 69 74 0d 07 30 06 20 5d 0d 07 3a |plot_it..0. ]..:| 00000bd0 06 3d 30 0d 07 44 04 0d 07 4e 16 dd a4 61 64 72 |.=0..D...N...adr| 00000be0 62 28 72 65 67 25 2c 61 64 64 72 25 29 0d 07 58 |b(reg%,addr%)..X| 00000bf0 0e 20 5b 4f 50 54 20 6f 70 74 25 0d 07 62 1a 20 |. [OPT opt%..b. | 00000c00 41 44 52 20 72 65 67 25 2c 28 61 64 64 72 25 2b |ADR reg%,(addr%+| 00000c10 31 30 32 34 29 0d 07 6c 18 20 53 55 42 20 72 65 |1024)..l. SUB re| 00000c20 67 25 2c 72 65 67 25 2c 23 31 30 32 34 0d 07 76 |g%,reg%,#1024..v| 00000c30 06 20 5d 0d 07 80 06 3d 30 0d ff |. ]....=0..| 00000c3b