Home » Archimedes archive » Acorn User » AU 1995-02.adf » !Dark_DarkHorse » !DarkHorse/WorkHorses/Zoomer
!DarkHorse/WorkHorses/Zoomer
This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.
Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.
Tape/disk: | Home » Archimedes archive » Acorn User » AU 1995-02.adf » !Dark_DarkHorse |
Filename: | !DarkHorse/WorkHorses/Zoomer |
Read OK: | ✔ |
File size: | 0F9B bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
10REM > <Dark$Dir>.WorkHorses.Zoomer 20 30DIM code% 4096 40 50PROCAssemble 60PROCSetV 70END 80PROCDo 90END 100 110DEFPROCSetV 120!(code%+0)=256 : REM saver takes 1 arg. 130!(code%+4)=500 : REM arg1 140 150$(code%+36)="<no. of zoom iterations>" 160$(code%+68)="fade to black when complete." 170 180ENDPROC 190 200DEFPROCDo 210 220A%=1280:B%=1023:C%=256 230CIRCLE FILL 640,512,100 240ENDPROC 250 260DEF FNadr(r,l) 270p%=P% 280IF l>p% THEN 290[opt pass 300ADD r,PC,#(l-p%-8)MOD &100 310ADD r,r,#(l-p%-8) DIV &100<<8:] 320ELSE 330[opt pass 340SUB r,PC,#(p%+8-l)MOD &100 350SUB r,r,#(p%+8-l)DIV &100<<8:] 360ENDIF 370="" 380 390 400DEFPROCAssemble 410ncol=8:gcol=9:tint=10 420FOR pass=0 TO 3 STEP 3 430P%=code% 440[OPT pass 450 460.argtype 470EQUD 256 ; Dont CLS, and one arg. 480 490.args 500EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0 510 520.help 530EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0 540EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0 550 560 570B init ; Jumps to the initialisation routine. 580 ; this is location code+100 590 600B shutdown ; Jumps to the shutdown routine. 610 ; this is location code+104 620 630.poll_ret 660 670; copy inputs r0,r1 into r11,r12 680 690MOV r11,r0 700MOV r12,r1 710 720ADR r0,regs 730STMIA r0!,{r1-r14} 740 750ADR r10,vars 760LDR r9,[r10] ; r9=number of iterations to make 770LDR r8,[r10,#4] ; r8=number of iterations made 780 790CMPS r8,r9 800MOVGE r8,#0 810MOV r0,#0 820STRGE r0,[r10,#12] ; store finished flag =0 830ADD r8,r8,#1 840STR r8,[r10,#4] 850 860LDR r0,[r10,#12] 870CMP r0,#0 880BNE zoom 890 900; set gcol to black 910 920SWI 256+18 930MOV r0,#0 940SWI "OS_WriteC" 950LDR r0,[r10,#8] ; get number of colours. 960CMP r0,#254 970MOVLT r0,#7 980MOVGE r0,#0 990SWI "OS_WriteC" 1000 1010MOV r0,#4 ; draw a small circle 1020MOV r1,r11 1030MOV r2,r12 1040SWI "OS_Plot" 1050MOV r0,#153 1060MOV r1,#16 1070MOV r2,#0 1080SWI "OS_Plot" 1090 1100.zoom 1110 1120MOV r0,#188:MOV r1,r11:MOV r2,r12:SWI "OS_Plot" 1130MOV r0,#188:MOV r1,#4096:MOV r2,#4096:SWI "OS_Plot" 1140MOV r0,#190:ADD r1,r11,#4:ADD r2,r12,#4:SWI "OS_Plot" 1150 1160MOV r0,#188:MOV r1,#0:MOV r2,r12:SWI "OS_Plot" 1170MOV r0,#188:MOV r1,r11:MOV r2,#4096:SWI "OS_Plot" 1180MOV r0,#190:SUB r1,r0,#194:ADD r2,r12,#4:SWI "OS_Plot" 1190 1200MOV r0,#188:MOV r1,#0:MOV r2,#0:SWI "OS_Plot" 1210MOV r0,#188:MOV r1,r11:MOV r2,r12:SWI "OS_Plot" 1220MOV r0,#190:SUB r1,r0,#194:MOV r2,r1:SWI "OS_Plot" 1230 1240MOV r0,#188:MOV r1,r11:MOV r2,#0:SWI "OS_Plot" 1250MOV r0,#188:MOV r1,#4096:MOV r2,r12:SWI "OS_Plot" 1260MOV r0,#190:ADD r1,r11,#4:SUB r2,r0,#194:SWI "OS_Plot" 1270 1280 1290 1300ADR r0,regs 1310LDMIA r0!,{r1-r14} 1320MOV PC,r14 1330 1340.init 1350 1360ADR r10,vars 1370 1380ADR r9,args 1390LDR r0,[r9] ; r0=arg1 1400CMP r0,#0 1410MOVLE r0,#500 1420STR r0,[r10] ; store iterations to make 1430MOV r0,#0 1440STR r0,[r10,#4] ; store iterations made 1450STR r2,[r10,#8] ; store no.of colours 1460MOV r0,#1 1470STR r0,[r10,#12] ; store finished flag=1 1480 1490MOV PC,r14 1500 1510;----------------------------------------------------------------- 1520 1530.shutdown ; the shutdown code 1540 1550;-------------------------------------------------------------------- 1560; ******************************************** 1570; *** YOUR SHUTDOWN CODE STARTS HERE *** 1580; ******************************************** 1590 1600; blah! blah! blah! blah! blah! blah! blah! 1610 1620; ******************************************** 1630; *** YOUR SHUTDOWN CODE ENDS HERE *** 1640; ******************************************** 1650;-------------------------------------------------------------------- 1660MOV PC,r14 ; exit shutdown code. 1670 1680 1690 1700.vars 1710EQUD 0 ; number of iterations to make 1720EQUD 0 ; number of iterations made 1730EQUD 0 ; number of colours 1740EQUD 1 ; finished ? 1750 1760.regs 1770EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0 1780EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0 1790 1800MOV PC,r14 1810] 1820NEXT pass 1830PRINT P%-code% 1840REM A$=GET$ 1850ENDPROC
$� > <Dark$Dir>.WorkHorses.Zoomer � code% 4096 ( 2 �Assemble < �SetV F� P�Do Z� d n ��SetV x*!(code%+0)=256 : � saver takes 1 arg. �!(code%+4)=500 : � arg1 � �*$(code%+36)="<no. of zoom iterations>" �.$(code%+68)="fade to black when complete." � �� � ���Do � �A%=1280:B%=1023:C%=256 �ȏ Ȑ 640,512,100 �� � � �adr(r,l) p%=P% � l>p% � " [opt pass ,ADD r,PC,#(l-p%-8)� &100 6!ADD r,r,#(l-p%-8) � &100<<8:] @� J [opt pass TSUB r,PC,#(p%+8-l)� &100 ^ SUB r,r,#(p%+8-l)� &100<<8:] h� r="" | � ���Assemble �ncol=8:gcol=9:tint=10 �� pass=0 � 3 � 3 �P%=code% � [OPT pass � �.argtype �#EQUD 256 ; Dont �, and one arg. � � .args �;EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0 � .help ;EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0 ;EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0 & 0 :5B init ; Jumps to the initialisation routine. D* ; this is location code+100 N X/B shutdown ; Jumps to the shutdown routine. b* ; this is location code+104 l v .poll_ret � �$; copy inputs r0,r1 into r11,r12 � �MOV r11,r0 �MOV r12,r1 � �ADR r0,regs �STMIA r0!,{r1-r14} � �ADR r10,vars �5LDR r9,[r10] ; r9=number of iterations to make 2LDR r8,[r10,#4] ; r8=number of iterations made CMPS r8,r9 MOVGE r8,#0 * MOV r0,#0 4/STRGE r0,[r10,#12] ; store finished flag =0 >ADD r8,r8,#1 HSTR r8,[r10,#4] R \LDR r0,[r10,#12] f CMP r0,#0 pBNE zoom z �; set gcol to black � �SWI 256+18 � MOV r0,#0 �SWI "OS_WriteC" �,LDR r0,[r10,#8] ; get number of colours. �CMP r0,#254 �MOVLT r0,#7 �MOVGE r0,#0 �SWI "OS_WriteC" � �#MOV r0,#4 ; draw a small circle �MOV r1,r11 MOV r2,r12 SWI "OS_Plot" MOV r0,#153 $MOV r1,#16 . MOV r2,#0 8SWI "OS_Plot" B L .zoom V `3MOV r0,#188:MOV r1,r11:MOV r2,r12:SWI "OS_Plot" j7MOV r0,#188:MOV r1,#4096:MOV r2,#4096:SWI "OS_Plot" t9MOV r0,#190:ADD r1,r11,#4:ADD r2,r12,#4:SWI "OS_Plot" ~ �2MOV r0,#188:MOV r1,#0:MOV r2,r12:SWI "OS_Plot" �5MOV r0,#188:MOV r1,r11:MOV r2,#4096:SWI "OS_Plot" �:MOV r0,#190:SUB r1,r0,#194:ADD r2,r12,#4:SWI "OS_Plot" � �1MOV r0,#188:MOV r1,#0:MOV r2,#0:SWI "OS_Plot" �3MOV r0,#188:MOV r1,r11:MOV r2,r12:SWI "OS_Plot" �6MOV r0,#190:SUB r1,r0,#194:MOV r2,r1:SWI "OS_Plot" � �2MOV r0,#188:MOV r1,r11:MOV r2,#0:SWI "OS_Plot" �5MOV r0,#188:MOV r1,#4096:MOV r2,r12:SWI "OS_Plot" �:MOV r0,#190:ADD r1,r11,#4:SUB r2,r0,#194:SWI "OS_Plot" � ADR r0,regs LDMIA r0!,{r1-r14} (MOV PC,r14 2 < .init F PADR r10,vars Z dADR r9,args nLDR r0,[r9] ; r0=arg1 x CMP r0,#0 �MOVLE r0,#500 �/STR r0,[r10] ; store iterations to make � MOV r0,#0 �,STR r0,[r10,#4] ; store iterations made �*STR r2,[r10,#8] ; store no.of colours � MOV r0,#1 �-STR r0,[r10,#12] ; store finished flag=1 � �MOV PC,r14 � �F;----------------------------------------------------------------- � �!.shutdown ; the shutdown code I;-------------------------------------------------------------------- <; ******************************************** "<; *** YOUR SHUTDOWN CODE STARTS HERE *** ,<; ******************************************** 6 @:; blah! blah! blah! blah! blah! blah! blah! J T<; ******************************************** ^<; *** YOUR SHUTDOWN CODE ENDS HERE *** h<; ******************************************** rI;-------------------------------------------------------------------- |$MOV PC,r14 ; exit shutdown code. � � � � .vars �)EQUD 0 ; number of iterations to make �&EQUD 0 ; number of iterations made �EQUD 0 ; number of colours �EQUD 1 ; finished ? � � .regs �;EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0 �;EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0 � MOV PC,r14 ] � pass &� P%-code% 0 � A$=GET$ :� �
00000000 0d 00 0a 24 f4 20 3e 20 3c 44 61 72 6b 24 44 69 |...$. > <Dark$Di| 00000010 72 3e 2e 57 6f 72 6b 48 6f 72 73 65 73 2e 5a 6f |r>.WorkHorses.Zo| 00000020 6f 6d 65 72 0d 00 14 04 0d 00 1e 10 de 20 63 6f |omer......... co| 00000030 64 65 25 20 34 30 39 36 0d 00 28 04 0d 00 32 0d |de% 4096..(...2.| 00000040 f2 41 73 73 65 6d 62 6c 65 0d 00 3c 09 f2 53 65 |.Assemble..<..Se| 00000050 74 56 0d 00 46 05 e0 0d 00 50 07 f2 44 6f 0d 00 |tV..F....P..Do..| 00000060 5a 05 e0 0d 00 64 04 0d 00 6e 0a dd f2 53 65 74 |Z....d...n...Set| 00000070 56 0d 00 78 2a 21 28 63 6f 64 65 25 2b 30 29 3d |V..x*!(code%+0)=| 00000080 32 35 36 20 20 3a 20 f4 20 73 61 76 65 72 20 74 |256 : . saver t| 00000090 61 6b 65 73 20 31 20 61 72 67 2e 0d 00 82 1c 21 |akes 1 arg.....!| 000000a0 28 63 6f 64 65 25 2b 34 29 3d 35 30 30 20 20 3a |(code%+4)=500 :| 000000b0 20 f4 20 61 72 67 31 0d 00 8c 04 0d 00 96 2a 24 | . arg1.......*$| 000000c0 28 63 6f 64 65 25 2b 33 36 29 3d 22 3c 6e 6f 2e |(code%+36)="<no.| 000000d0 20 6f 66 20 7a 6f 6f 6d 20 69 74 65 72 61 74 69 | of zoom iterati| 000000e0 6f 6e 73 3e 22 0d 00 a0 2e 24 28 63 6f 64 65 25 |ons>"....$(code%| 000000f0 2b 36 38 29 3d 22 66 61 64 65 20 74 6f 20 62 6c |+68)="fade to bl| 00000100 61 63 6b 20 77 68 65 6e 20 63 6f 6d 70 6c 65 74 |ack when complet| 00000110 65 2e 22 0d 00 aa 04 0d 00 b4 05 e1 0d 00 be 04 |e.".............| 00000120 0d 00 c8 08 dd f2 44 6f 0d 00 d2 04 0d 00 dc 1a |......Do........| 00000130 41 25 3d 31 32 38 30 3a 42 25 3d 31 30 32 33 3a |A%=1280:B%=1023:| 00000140 43 25 3d 32 35 36 0d 00 e6 15 c8 8f 20 c8 90 20 |C%=256...... .. | 00000150 36 34 30 2c 35 31 32 2c 31 30 30 0d 00 f0 05 e1 |640,512,100.....| 00000160 0d 00 fa 04 0d 01 04 0f dd 20 a4 61 64 72 28 72 |......... .adr(r| 00000170 2c 6c 29 0d 01 0e 09 70 25 3d 50 25 0d 01 18 0c |,l)....p%=P%....| 00000180 e7 20 6c 3e 70 25 20 8c 0d 01 22 0d 5b 6f 70 74 |. l>p% ...".[opt| 00000190 20 70 61 73 73 0d 01 2c 1c 41 44 44 20 72 2c 50 | pass..,.ADD r,P| 000001a0 43 2c 23 28 6c 2d 70 25 2d 38 29 83 20 26 31 30 |C,#(l-p%-8). &10| 000001b0 30 0d 01 36 21 41 44 44 20 72 2c 72 2c 23 28 6c |0..6!ADD r,r,#(l| 000001c0 2d 70 25 2d 38 29 20 81 20 26 31 30 30 3c 3c 38 |-p%-8) . &100<<8| 000001d0 3a 5d 0d 01 40 05 cc 0d 01 4a 0d 5b 6f 70 74 20 |:]..@....J.[opt | 000001e0 70 61 73 73 0d 01 54 1c 53 55 42 20 72 2c 50 43 |pass..T.SUB r,PC| 000001f0 2c 23 28 70 25 2b 38 2d 6c 29 83 20 26 31 30 30 |,#(p%+8-l). &100| 00000200 0d 01 5e 20 53 55 42 20 72 2c 72 2c 23 28 70 25 |..^ SUB r,r,#(p%| 00000210 2b 38 2d 6c 29 81 20 26 31 30 30 3c 3c 38 3a 5d |+8-l). &100<<8:]| 00000220 0d 01 68 05 cd 0d 01 72 07 3d 22 22 0d 01 7c 04 |..h....r.=""..|.| 00000230 0d 01 86 04 0d 01 90 0e dd f2 41 73 73 65 6d 62 |..........Assemb| 00000240 6c 65 0d 01 9a 19 6e 63 6f 6c 3d 38 3a 67 63 6f |le....ncol=8:gco| 00000250 6c 3d 39 3a 74 69 6e 74 3d 31 30 0d 01 a4 14 e3 |l=9:tint=10.....| 00000260 20 70 61 73 73 3d 30 20 b8 20 33 20 88 20 33 0d | pass=0 . 3 . 3.| 00000270 01 ae 0c 50 25 3d 63 6f 64 65 25 0d 01 b8 0d 5b |...P%=code%....[| 00000280 4f 50 54 20 70 61 73 73 0d 01 c2 04 0d 01 cc 0c |OPT pass........| 00000290 2e 61 72 67 74 79 70 65 0d 01 d6 23 45 51 55 44 |.argtype...#EQUD| 000002a0 20 32 35 36 20 3b 20 44 6f 6e 74 20 db 2c 20 61 | 256 ; Dont ., a| 000002b0 6e 64 20 6f 6e 65 20 61 72 67 2e 0d 01 e0 04 0d |nd one arg......| 000002c0 01 ea 09 2e 61 72 67 73 0d 01 f4 3b 45 51 55 44 |....args...;EQUD| 000002d0 20 30 3a 45 51 55 44 20 30 3a 45 51 55 44 20 30 | 0:EQUD 0:EQUD 0| 000002e0 3a 45 51 55 44 20 30 3a 45 51 55 44 20 30 3a 45 |:EQUD 0:EQUD 0:E| 000002f0 51 55 44 20 30 3a 45 51 55 44 20 30 3a 45 51 55 |QUD 0:EQUD 0:EQU| 00000300 44 20 30 0d 01 fe 04 0d 02 08 09 2e 68 65 6c 70 |D 0.........help| 00000310 0d 02 12 3b 45 51 55 44 20 30 3a 45 51 55 44 20 |...;EQUD 0:EQUD | 00000320 30 3a 45 51 55 44 20 30 3a 45 51 55 44 20 30 3a |0:EQUD 0:EQUD 0:| 00000330 45 51 55 44 20 30 3a 45 51 55 44 20 30 3a 45 51 |EQUD 0:EQUD 0:EQ| 00000340 55 44 20 30 3a 45 51 55 44 20 30 0d 02 1c 3b 45 |UD 0:EQUD 0...;E| 00000350 51 55 44 20 30 3a 45 51 55 44 20 30 3a 45 51 55 |QUD 0:EQUD 0:EQU| 00000360 44 20 30 3a 45 51 55 44 20 30 3a 45 51 55 44 20 |D 0:EQUD 0:EQUD | 00000370 30 3a 45 51 55 44 20 30 3a 45 51 55 44 20 30 3a |0:EQUD 0:EQUD 0:| 00000380 45 51 55 44 20 30 0d 02 26 04 0d 02 30 04 0d 02 |EQUD 0..&...0...| 00000390 3a 35 42 20 69 6e 69 74 20 20 20 20 20 3b 20 4a |:5B init ; J| 000003a0 75 6d 70 73 20 74 6f 20 74 68 65 20 69 6e 69 74 |umps to the init| 000003b0 69 61 6c 69 73 61 74 69 6f 6e 20 72 6f 75 74 69 |ialisation routi| 000003c0 6e 65 2e 0d 02 44 2a 20 20 20 20 20 20 20 20 20 |ne...D* | 000003d0 20 20 3b 20 74 68 69 73 20 69 73 20 6c 6f 63 61 | ; this is loca| 000003e0 74 69 6f 6e 20 63 6f 64 65 2b 31 30 30 0d 02 4e |tion code+100..N| 000003f0 04 0d 02 58 2f 42 20 73 68 75 74 64 6f 77 6e 20 |...X/B shutdown | 00000400 3b 20 4a 75 6d 70 73 20 74 6f 20 74 68 65 20 73 |; Jumps to the s| 00000410 68 75 74 64 6f 77 6e 20 72 6f 75 74 69 6e 65 2e |hutdown routine.| 00000420 0d 02 62 2a 20 20 20 20 20 20 20 20 20 20 20 3b |..b* ;| 00000430 20 74 68 69 73 20 69 73 20 6c 6f 63 61 74 69 6f | this is locatio| 00000440 6e 20 63 6f 64 65 2b 31 30 34 0d 02 6c 04 0d 02 |n code+104..l...| 00000450 76 0d 2e 70 6f 6c 6c 5f 72 65 74 0d 02 94 04 0d |v..poll_ret.....| 00000460 02 9e 24 3b 20 63 6f 70 79 20 69 6e 70 75 74 73 |..$; copy inputs| 00000470 20 72 30 2c 72 31 20 69 6e 74 6f 20 72 31 31 2c | r0,r1 into r11,| 00000480 72 31 32 0d 02 a8 04 0d 02 b2 0e 4d 4f 56 20 72 |r12........MOV r| 00000490 31 31 2c 72 30 0d 02 bc 0e 4d 4f 56 20 72 31 32 |11,r0....MOV r12| 000004a0 2c 72 31 0d 02 c6 04 0d 02 d0 0f 41 44 52 20 72 |,r1........ADR r| 000004b0 30 2c 72 65 67 73 0d 02 da 16 53 54 4d 49 41 20 |0,regs....STMIA | 000004c0 72 30 21 2c 7b 72 31 2d 72 31 34 7d 0d 02 e4 04 |r0!,{r1-r14}....| 000004d0 0d 02 ee 10 41 44 52 20 72 31 30 2c 76 61 72 73 |....ADR r10,vars| 000004e0 0d 02 f8 35 4c 44 52 20 72 39 2c 5b 72 31 30 5d |...5LDR r9,[r10]| 000004f0 20 20 20 20 3b 20 72 39 3d 6e 75 6d 62 65 72 20 | ; r9=number | 00000500 6f 66 20 69 74 65 72 61 74 69 6f 6e 73 20 74 6f |of iterations to| 00000510 20 6d 61 6b 65 0d 03 02 32 4c 44 52 20 72 38 2c | make...2LDR r8,| 00000520 5b 72 31 30 2c 23 34 5d 20 3b 20 72 38 3d 6e 75 |[r10,#4] ; r8=nu| 00000530 6d 62 65 72 20 6f 66 20 69 74 65 72 61 74 69 6f |mber of iteratio| 00000540 6e 73 20 6d 61 64 65 0d 03 0c 04 0d 03 16 0e 43 |ns made........C| 00000550 4d 50 53 20 72 38 2c 72 39 0d 03 20 0f 4d 4f 56 |MPS r8,r9.. .MOV| 00000560 47 45 20 72 38 2c 23 30 0d 03 2a 0d 4d 4f 56 20 |GE r8,#0..*.MOV | 00000570 72 30 2c 23 30 0d 03 34 2f 53 54 52 47 45 20 72 |r0,#0..4/STRGE r| 00000580 30 2c 5b 72 31 30 2c 23 31 32 5d 20 3b 20 73 74 |0,[r10,#12] ; st| 00000590 6f 72 65 20 66 69 6e 69 73 68 65 64 20 66 6c 61 |ore finished fla| 000005a0 67 20 3d 30 0d 03 3e 10 41 44 44 20 72 38 2c 72 |g =0..>.ADD r8,r| 000005b0 38 2c 23 31 0d 03 48 13 53 54 52 20 72 38 2c 5b |8,#1..H.STR r8,[| 000005c0 72 31 30 2c 23 34 5d 0d 03 52 04 0d 03 5c 14 4c |r10,#4]..R...\.L| 000005d0 44 52 20 72 30 2c 5b 72 31 30 2c 23 31 32 5d 0d |DR r0,[r10,#12].| 000005e0 03 66 0d 43 4d 50 20 72 30 2c 23 30 0d 03 70 0c |.f.CMP r0,#0..p.| 000005f0 42 4e 45 20 7a 6f 6f 6d 0d 03 7a 04 0d 03 84 17 |BNE zoom..z.....| 00000600 3b 20 73 65 74 20 67 63 6f 6c 20 74 6f 20 62 6c |; set gcol to bl| 00000610 61 63 6b 0d 03 8e 04 0d 03 98 0e 53 57 49 20 32 |ack........SWI 2| 00000620 35 36 2b 31 38 0d 03 a2 0d 4d 4f 56 20 72 30 2c |56+18....MOV r0,| 00000630 23 30 0d 03 ac 13 53 57 49 20 22 4f 53 5f 57 72 |#0....SWI "OS_Wr| 00000640 69 74 65 43 22 0d 03 b6 2c 4c 44 52 20 72 30 2c |iteC"...,LDR r0,| 00000650 5b 72 31 30 2c 23 38 5d 20 3b 20 67 65 74 20 6e |[r10,#8] ; get n| 00000660 75 6d 62 65 72 20 6f 66 20 63 6f 6c 6f 75 72 73 |umber of colours| 00000670 2e 0d 03 c0 0f 43 4d 50 20 72 30 2c 23 32 35 34 |.....CMP r0,#254| 00000680 0d 03 ca 0f 4d 4f 56 4c 54 20 72 30 2c 23 37 0d |....MOVLT r0,#7.| 00000690 03 d4 0f 4d 4f 56 47 45 20 72 30 2c 23 30 0d 03 |...MOVGE r0,#0..| 000006a0 de 13 53 57 49 20 22 4f 53 5f 57 72 69 74 65 43 |..SWI "OS_WriteC| 000006b0 22 0d 03 e8 04 0d 03 f2 23 4d 4f 56 20 72 30 2c |".......#MOV r0,| 000006c0 23 34 20 3b 20 64 72 61 77 20 61 20 73 6d 61 6c |#4 ; draw a smal| 000006d0 6c 20 63 69 72 63 6c 65 0d 03 fc 0e 4d 4f 56 20 |l circle....MOV | 000006e0 72 31 2c 72 31 31 0d 04 06 0e 4d 4f 56 20 72 32 |r1,r11....MOV r2| 000006f0 2c 72 31 32 0d 04 10 11 53 57 49 20 22 4f 53 5f |,r12....SWI "OS_| 00000700 50 6c 6f 74 22 0d 04 1a 0f 4d 4f 56 20 72 30 2c |Plot"....MOV r0,| 00000710 23 31 35 33 0d 04 24 0e 4d 4f 56 20 72 31 2c 23 |#153..$.MOV r1,#| 00000720 31 36 0d 04 2e 0d 4d 4f 56 20 72 32 2c 23 30 0d |16....MOV r2,#0.| 00000730 04 38 11 53 57 49 20 22 4f 53 5f 50 6c 6f 74 22 |.8.SWI "OS_Plot"| 00000740 0d 04 42 04 0d 04 4c 09 2e 7a 6f 6f 6d 0d 04 56 |..B...L..zoom..V| 00000750 04 0d 04 60 33 4d 4f 56 20 72 30 2c 23 31 38 38 |...`3MOV r0,#188| 00000760 3a 4d 4f 56 20 72 31 2c 72 31 31 3a 4d 4f 56 20 |:MOV r1,r11:MOV | 00000770 72 32 2c 72 31 32 3a 53 57 49 20 22 4f 53 5f 50 |r2,r12:SWI "OS_P| 00000780 6c 6f 74 22 0d 04 6a 37 4d 4f 56 20 72 30 2c 23 |lot"..j7MOV r0,#| 00000790 31 38 38 3a 4d 4f 56 20 72 31 2c 23 34 30 39 36 |188:MOV r1,#4096| 000007a0 3a 4d 4f 56 20 72 32 2c 23 34 30 39 36 3a 53 57 |:MOV r2,#4096:SW| 000007b0 49 20 22 4f 53 5f 50 6c 6f 74 22 0d 04 74 39 4d |I "OS_Plot"..t9M| 000007c0 4f 56 20 72 30 2c 23 31 39 30 3a 41 44 44 20 72 |OV r0,#190:ADD r| 000007d0 31 2c 72 31 31 2c 23 34 3a 41 44 44 20 72 32 2c |1,r11,#4:ADD r2,| 000007e0 72 31 32 2c 23 34 3a 53 57 49 20 22 4f 53 5f 50 |r12,#4:SWI "OS_P| 000007f0 6c 6f 74 22 0d 04 7e 04 0d 04 88 32 4d 4f 56 20 |lot"..~....2MOV | 00000800 72 30 2c 23 31 38 38 3a 4d 4f 56 20 72 31 2c 23 |r0,#188:MOV r1,#| 00000810 30 3a 4d 4f 56 20 72 32 2c 72 31 32 3a 53 57 49 |0:MOV r2,r12:SWI| 00000820 20 22 4f 53 5f 50 6c 6f 74 22 0d 04 92 35 4d 4f | "OS_Plot"...5MO| 00000830 56 20 72 30 2c 23 31 38 38 3a 4d 4f 56 20 72 31 |V r0,#188:MOV r1| 00000840 2c 72 31 31 3a 4d 4f 56 20 72 32 2c 23 34 30 39 |,r11:MOV r2,#409| 00000850 36 3a 53 57 49 20 22 4f 53 5f 50 6c 6f 74 22 0d |6:SWI "OS_Plot".| 00000860 04 9c 3a 4d 4f 56 20 72 30 2c 23 31 39 30 3a 53 |..:MOV r0,#190:S| 00000870 55 42 20 72 31 2c 72 30 2c 23 31 39 34 3a 41 44 |UB r1,r0,#194:AD| 00000880 44 20 72 32 2c 72 31 32 2c 23 34 3a 53 57 49 20 |D r2,r12,#4:SWI | 00000890 22 4f 53 5f 50 6c 6f 74 22 0d 04 a6 04 0d 04 b0 |"OS_Plot".......| 000008a0 31 4d 4f 56 20 72 30 2c 23 31 38 38 3a 4d 4f 56 |1MOV r0,#188:MOV| 000008b0 20 72 31 2c 23 30 3a 4d 4f 56 20 72 32 2c 23 30 | r1,#0:MOV r2,#0| 000008c0 3a 53 57 49 20 22 4f 53 5f 50 6c 6f 74 22 0d 04 |:SWI "OS_Plot"..| 000008d0 ba 33 4d 4f 56 20 72 30 2c 23 31 38 38 3a 4d 4f |.3MOV r0,#188:MO| 000008e0 56 20 72 31 2c 72 31 31 3a 4d 4f 56 20 72 32 2c |V r1,r11:MOV r2,| 000008f0 72 31 32 3a 53 57 49 20 22 4f 53 5f 50 6c 6f 74 |r12:SWI "OS_Plot| 00000900 22 0d 04 c4 36 4d 4f 56 20 72 30 2c 23 31 39 30 |"...6MOV r0,#190| 00000910 3a 53 55 42 20 72 31 2c 72 30 2c 23 31 39 34 3a |:SUB r1,r0,#194:| 00000920 4d 4f 56 20 72 32 2c 72 31 3a 53 57 49 20 22 4f |MOV r2,r1:SWI "O| 00000930 53 5f 50 6c 6f 74 22 0d 04 ce 04 0d 04 d8 32 4d |S_Plot".......2M| 00000940 4f 56 20 72 30 2c 23 31 38 38 3a 4d 4f 56 20 72 |OV r0,#188:MOV r| 00000950 31 2c 72 31 31 3a 4d 4f 56 20 72 32 2c 23 30 3a |1,r11:MOV r2,#0:| 00000960 53 57 49 20 22 4f 53 5f 50 6c 6f 74 22 0d 04 e2 |SWI "OS_Plot"...| 00000970 35 4d 4f 56 20 72 30 2c 23 31 38 38 3a 4d 4f 56 |5MOV r0,#188:MOV| 00000980 20 72 31 2c 23 34 30 39 36 3a 4d 4f 56 20 72 32 | r1,#4096:MOV r2| 00000990 2c 72 31 32 3a 53 57 49 20 22 4f 53 5f 50 6c 6f |,r12:SWI "OS_Plo| 000009a0 74 22 0d 04 ec 3a 4d 4f 56 20 72 30 2c 23 31 39 |t"...:MOV r0,#19| 000009b0 30 3a 41 44 44 20 72 31 2c 72 31 31 2c 23 34 3a |0:ADD r1,r11,#4:| 000009c0 53 55 42 20 72 32 2c 72 30 2c 23 31 39 34 3a 53 |SUB r2,r0,#194:S| 000009d0 57 49 20 22 4f 53 5f 50 6c 6f 74 22 0d 04 f6 04 |WI "OS_Plot"....| 000009e0 0d 05 00 04 0d 05 0a 04 0d 05 14 0f 41 44 52 20 |............ADR | 000009f0 72 30 2c 72 65 67 73 0d 05 1e 16 4c 44 4d 49 41 |r0,regs....LDMIA| 00000a00 20 72 30 21 2c 7b 72 31 2d 72 31 34 7d 0d 05 28 | r0!,{r1-r14}..(| 00000a10 0e 4d 4f 56 20 50 43 2c 72 31 34 0d 05 32 04 0d |.MOV PC,r14..2..| 00000a20 05 3c 09 2e 69 6e 69 74 0d 05 46 04 0d 05 50 10 |.<..init..F...P.| 00000a30 41 44 52 20 72 31 30 2c 76 61 72 73 0d 05 5a 04 |ADR r10,vars..Z.| 00000a40 0d 05 64 0f 41 44 52 20 72 39 2c 61 72 67 73 0d |..d.ADR r9,args.| 00000a50 05 6e 1e 4c 44 52 20 72 30 2c 5b 72 39 5d 20 20 |.n.LDR r0,[r9] | 00000a60 20 20 20 20 3b 20 72 30 3d 61 72 67 31 0d 05 78 | ; r0=arg1..x| 00000a70 0d 43 4d 50 20 72 30 2c 23 30 0d 05 82 11 4d 4f |.CMP r0,#0....MO| 00000a80 56 4c 45 20 72 30 2c 23 35 30 30 0d 05 8c 2f 53 |VLE r0,#500.../S| 00000a90 54 52 20 72 30 2c 5b 72 31 30 5d 20 20 20 20 20 |TR r0,[r10] | 00000aa0 3b 20 73 74 6f 72 65 20 69 74 65 72 61 74 69 6f |; store iteratio| 00000ab0 6e 73 20 74 6f 20 6d 61 6b 65 0d 05 96 0d 4d 4f |ns to make....MO| 00000ac0 56 20 72 30 2c 23 30 0d 05 a0 2c 53 54 52 20 72 |V r0,#0...,STR r| 00000ad0 30 2c 5b 72 31 30 2c 23 34 5d 20 20 3b 20 73 74 |0,[r10,#4] ; st| 00000ae0 6f 72 65 20 69 74 65 72 61 74 69 6f 6e 73 20 6d |ore iterations m| 00000af0 61 64 65 0d 05 aa 2a 53 54 52 20 72 32 2c 5b 72 |ade...*STR r2,[r| 00000b00 31 30 2c 23 38 5d 20 20 3b 20 73 74 6f 72 65 20 |10,#8] ; store | 00000b10 6e 6f 2e 6f 66 20 63 6f 6c 6f 75 72 73 0d 05 b4 |no.of colours...| 00000b20 0d 4d 4f 56 20 72 30 2c 23 31 0d 05 be 2d 53 54 |.MOV r0,#1...-ST| 00000b30 52 20 72 30 2c 5b 72 31 30 2c 23 31 32 5d 20 20 |R r0,[r10,#12] | 00000b40 3b 20 73 74 6f 72 65 20 66 69 6e 69 73 68 65 64 |; store finished| 00000b50 20 66 6c 61 67 3d 31 0d 05 c8 04 0d 05 d2 0e 4d | flag=1........M| 00000b60 4f 56 20 50 43 2c 72 31 34 0d 05 dc 04 0d 05 e6 |OV PC,r14.......| 00000b70 46 3b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |F;--------------| 00000b80 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00000bb0 2d 2d 2d 0d 05 f0 04 0d 05 fa 21 2e 73 68 75 74 |---.......!.shut| 00000bc0 64 6f 77 6e 20 3b 20 74 68 65 20 73 68 75 74 64 |down ; the shutd| 00000bd0 6f 77 6e 20 63 6f 64 65 0d 06 04 04 0d 06 0e 49 |own code.......I| 00000be0 3b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |;---------------| 00000bf0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00000c20 2d 2d 2d 2d 2d 0d 06 18 3c 3b 20 20 20 20 20 20 |-----...<; | 00000c30 20 20 20 20 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | ***********| 00000c40 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00000c60 2a 0d 06 22 3c 3b 20 20 20 20 20 20 20 20 20 20 |*.."<; | 00000c70 20 2a 2a 2a 20 20 20 20 59 4f 55 52 20 53 48 55 | *** YOUR SHU| 00000c80 54 44 4f 57 4e 20 43 4f 44 45 20 53 54 41 52 54 |TDOWN CODE START| 00000c90 53 20 48 45 52 45 20 20 20 20 2a 2a 2a 0d 06 2c |S HERE ***..,| 00000ca0 3c 3b 20 20 20 20 20 20 20 20 20 20 20 2a 2a 2a |<; ***| 00000cb0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00000cd0 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 06 36 04 0d 06 40 |*********..6...@| 00000ce0 3a 3b 20 20 20 20 20 20 20 20 20 20 20 20 62 6c |:; bl| 00000cf0 61 68 21 20 62 6c 61 68 21 20 62 6c 61 68 21 20 |ah! blah! blah! | 00000d00 62 6c 61 68 21 20 62 6c 61 68 21 20 62 6c 61 68 |blah! blah! blah| 00000d10 21 20 62 6c 61 68 21 0d 06 4a 04 0d 06 54 3c 3b |! blah!..J...T<;| 00000d20 20 20 20 20 20 20 20 20 20 20 20 2a 2a 2a 2a 2a | *****| 00000d30 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00000d50 2a 2a 2a 2a 2a 2a 2a 0d 06 5e 3c 3b 20 20 20 20 |*******..^<; | 00000d60 20 20 20 20 20 20 20 2a 2a 2a 20 20 20 20 20 59 | *** Y| 00000d70 4f 55 52 20 53 48 55 54 44 4f 57 4e 20 43 4f 44 |OUR SHUTDOWN COD| 00000d80 45 20 45 4e 44 53 20 48 45 52 45 20 20 20 20 20 |E ENDS HERE | 00000d90 2a 2a 2a 0d 06 68 3c 3b 20 20 20 20 20 20 20 20 |***..h<; | 00000da0 20 20 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | *************| 00000db0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| 00000dc0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d |***************.| 00000dd0 06 72 49 3b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |.rI;------------| 00000de0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00000e10 2d 2d 2d 2d 2d 2d 2d 2d 0d 06 7c 24 4d 4f 56 20 |--------..|$MOV | 00000e20 50 43 2c 72 31 34 20 3b 20 65 78 69 74 20 73 68 |PC,r14 ; exit sh| 00000e30 75 74 64 6f 77 6e 20 63 6f 64 65 2e 0d 06 86 04 |utdown code.....| 00000e40 0d 06 90 04 0d 06 9a 04 0d 06 a4 09 2e 76 61 72 |.............var| 00000e50 73 0d 06 ae 29 45 51 55 44 20 30 20 3b 20 6e 75 |s...)EQUD 0 ; nu| 00000e60 6d 62 65 72 20 6f 66 20 69 74 65 72 61 74 69 6f |mber of iteratio| 00000e70 6e 73 20 74 6f 20 6d 61 6b 65 0d 06 b8 26 45 51 |ns to make...&EQ| 00000e80 55 44 20 30 20 3b 20 6e 75 6d 62 65 72 20 6f 66 |UD 0 ; number of| 00000e90 20 69 74 65 72 61 74 69 6f 6e 73 20 6d 61 64 65 | iterations made| 00000ea0 0d 06 c2 1e 45 51 55 44 20 30 20 3b 20 6e 75 6d |....EQUD 0 ; num| 00000eb0 62 65 72 20 6f 66 20 63 6f 6c 6f 75 72 73 0d 06 |ber of colours..| 00000ec0 cc 17 45 51 55 44 20 31 20 3b 20 66 69 6e 69 73 |..EQUD 1 ; finis| 00000ed0 68 65 64 20 3f 0d 06 d6 04 0d 06 e0 09 2e 72 65 |hed ?.........re| 00000ee0 67 73 0d 06 ea 3b 45 51 55 44 20 30 3a 45 51 55 |gs...;EQUD 0:EQU| 00000ef0 44 20 30 3a 45 51 55 44 20 30 3a 45 51 55 44 20 |D 0:EQUD 0:EQUD | 00000f00 30 3a 45 51 55 44 20 30 3a 45 51 55 44 20 30 3a |0:EQUD 0:EQUD 0:| 00000f10 45 51 55 44 20 30 3a 45 51 55 44 20 30 0d 06 f4 |EQUD 0:EQUD 0...| 00000f20 3b 45 51 55 44 20 30 3a 45 51 55 44 20 30 3a 45 |;EQUD 0:EQUD 0:E| 00000f30 51 55 44 20 30 3a 45 51 55 44 20 30 3a 45 51 55 |QUD 0:EQUD 0:EQU| 00000f40 44 20 30 3a 45 51 55 44 20 30 3a 45 51 55 44 20 |D 0:EQUD 0:EQUD | 00000f50 30 3a 45 51 55 44 20 30 0d 06 fe 04 0d 07 08 0e |0:EQUD 0........| 00000f60 4d 4f 56 20 50 43 2c 72 31 34 0d 07 12 05 5d 0d |MOV PC,r14....].| 00000f70 07 1c 0a ed 20 70 61 73 73 0d 07 26 0e f1 20 50 |.... pass..&.. P| 00000f80 25 2d 63 6f 64 65 25 0d 07 30 0d f4 20 41 24 3d |%-code%..0.. A$=| 00000f90 47 45 54 24 0d 07 3a 05 e1 0d ff |GET$..:....| 00000f9b