Home » Archimedes archive » Acorn User » AU 1996-12 B.adf » Regulars_2 » StarInfo/Clifford/!Macros/MacroCode/s/InsertSrc
StarInfo/Clifford/!Macros/MacroCode/s/InsertSrc
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 1996-12 B.adf » Regulars_2 |
Filename: | StarInfo/Clifford/!Macros/MacroCode/s/InsertSrc |
Read OK: | ✔ |
File size: | 07C7 bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
10DIM code% &1000 20 30FOR pass%=%1000 TO %1010 STEP 2 40P%=code%:L%=code%+&1000 50[ opt pass% 60 equs "MCDE" 70 equd name - code% 71 equd description - code% 80 equd 0 81 equd 0 90 equd key_code - code% 120 130.name 140 equs "InsertText" 150 equb 0 160 170.description 180 equs "Insert text" 190 equb 9 200 equs "0.10 (01 Aug 1996)" 210 equb 0 220 align 230 240.key_code 250 stmfd r13!, {r14} 260 mov r10, r0 ; pointer to string to process 270 mov r0, #6 280 mov r3, #256 290 swi "XOS_Module" 300 ldmvsfd r13!, {pc}^ 310 mov r9, r2 ; pointer to buffer 320 mov r8, #256 ; size of buffer 330.process_string 340 mov r0, r10 350 mov r1, r9 360 mov r2, r8 370 swi "XOS_GSTrans" 380 bvs finished 390 bcs extend_workspace 391 cmp r2, r8 392 beq extend_workspace 400 cmp r2, #1 410 blt finished 420 mov r4, r2 430 mov r3, r9 440 mov r0, #138 450 mov r1, #0 460.send_characters 470 ldrb r2, [r3], #1 480 swi "XOS_Byte" 490 bvs finished 500 subs r4, r4, #1 510 bgt send_characters 520; mov r0, #1 530; mvn r1, #NOT(-15) 540; mov r2, #150 550; mov r3, #1 560; swi "XSound_Control" 570.finished 580 mov r0, #7 590 mov r2, r9 600 swi "XOS_Module" 610 ldmfd r13!, {pc}^ 620.extend_workspace 630; This code is pretty pointless, as the keyboard buffer can only hold 256 631; characters! If this limit changes though, this code should be able to 632; insert any length string into the keyboard buffer. 640 mov r0, #13 650 mov r2, r9 660 mov r3, #256 670 swi "XOS_Module" 680 bvs finished 690 add r8, r8, #256 700 mov r9, r2 710 b process_string 720] 730NEXT 740 750SYS "OS_File", 10, "InsertText", &ffd, , code%, P% 760END
� code% &1000 � pass%=%1000 � %1010 � 2 (P%=code%:L%=code%+&1000 2[ opt pass% < equs "MCDE" F equd name - code% G# equd description - code% P equd 0 Q equd 0 Z equd key_code - code% x � .name � equs "InsertText" � equb 0 � �.description � equs "Insert text" � equb 9 �$ equs "0.10 (01 Aug 1996)" � equb 0 � align � � .key_code � stmfd r13!, {r14} 6 mov r10, r0 ; pointer to string to process mov r0, #6 mov r3, #256 " swi "XOS_Module" , ldmvsfd r13!, {pc}^ 6* mov r9, r2 ; pointer to buffer @) mov r8, #256 ; size of buffer J.process_string T mov r0, r10 ^ mov r1, r9 h mov r2, r8 r swi "XOS_GSTrans" | bvs finished � bcs extend_workspace � cmp r2, r8 � beq extend_workspace � cmp r2, #1 � blt finished � mov r4, r2 � mov r3, r9 � mov r0, #138 � mov r1, #0 �.send_characters � ldrb r2, [r3], #1 � swi "XOS_Byte" � bvs finished � subs r4, r4, #1 � bgt send_characters ; mov r0, #1 ; mvn r1, #�(-15) ; mov r2, #150 &; mov r3, #1 0!; swi "XSound_Control" : .finished D mov r0, #7 N mov r2, r9 X swi "XOS_Module" b ldmfd r13!, {pc}^ l.extend_workspace vO; This code is pretty pointless, as the keyboard buffer can only hold 256 wM; characters! If this limit changes though, this code should be able to x:; insert any length string into the keyboard buffer. � mov r0, #13 � mov r2, r9 � mov r3, #256 � swi "XOS_Module" � bvs finished � add r8, r8, #256 � mov r9, r2 � b process_string �] �� � �5ș "OS_File", 10, "InsertText", &ffd, , code%, P% �� �
00000000 0d 00 0a 11 de 20 63 6f 64 65 25 20 26 31 30 30 |..... code% &100| 00000010 30 0d 00 14 04 0d 00 1e 1d e3 20 70 61 73 73 25 |0......... pass%| 00000020 3d 25 31 30 30 30 20 b8 20 25 31 30 31 30 20 88 |=%1000 . %1010 .| 00000030 20 32 0d 00 28 1b 50 25 3d 63 6f 64 65 25 3a 4c | 2..(.P%=code%:L| 00000040 25 3d 63 6f 64 65 25 2b 26 31 30 30 30 0d 00 32 |%=code%+&1000..2| 00000050 15 5b 20 20 20 6f 70 74 20 20 20 20 20 70 61 73 |.[ opt pas| 00000060 73 25 0d 00 3c 16 20 20 20 20 65 71 75 73 20 20 |s%..<. equs | 00000070 20 20 22 4d 43 44 45 22 0d 00 46 1c 20 20 20 20 | "MCDE"..F. | 00000080 65 71 75 64 20 20 20 20 6e 61 6d 65 20 2d 20 63 |equd name - c| 00000090 6f 64 65 25 0d 00 47 23 20 20 20 20 65 71 75 64 |ode%..G# equd| 000000a0 20 20 20 20 64 65 73 63 72 69 70 74 69 6f 6e 20 | description | 000000b0 2d 20 63 6f 64 65 25 0d 00 50 11 20 20 20 20 65 |- code%..P. e| 000000c0 71 75 64 20 20 20 20 30 0d 00 51 11 20 20 20 20 |qud 0..Q. | 000000d0 65 71 75 64 20 20 20 20 30 0d 00 5a 20 20 20 20 |equd 0..Z | 000000e0 20 65 71 75 64 20 20 20 20 6b 65 79 5f 63 6f 64 | equd key_cod| 000000f0 65 20 2d 20 63 6f 64 65 25 0d 00 78 04 0d 00 82 |e - code%..x....| 00000100 09 2e 6e 61 6d 65 0d 00 8c 1c 20 20 20 20 65 71 |..name.... eq| 00000110 75 73 20 20 20 20 22 49 6e 73 65 72 74 54 65 78 |us "InsertTex| 00000120 74 22 0d 00 96 11 20 20 20 20 65 71 75 62 20 20 |t".... equb | 00000130 20 20 30 0d 00 a0 04 0d 00 aa 10 2e 64 65 73 63 | 0.........desc| 00000140 72 69 70 74 69 6f 6e 0d 00 b4 1d 20 20 20 20 65 |ription.... e| 00000150 71 75 73 20 20 20 20 22 49 6e 73 65 72 74 20 74 |qus "Insert t| 00000160 65 78 74 22 0d 00 be 11 20 20 20 20 65 71 75 62 |ext".... equb| 00000170 20 20 20 20 39 0d 00 c8 24 20 20 20 20 65 71 75 | 9...$ equ| 00000180 73 20 20 20 20 22 30 2e 31 30 20 28 30 31 20 41 |s "0.10 (01 A| 00000190 75 67 20 31 39 39 36 29 22 0d 00 d2 11 20 20 20 |ug 1996)".... | 000001a0 20 65 71 75 62 20 20 20 20 30 0d 00 dc 0d 20 20 | equb 0.... | 000001b0 20 20 61 6c 69 67 6e 0d 00 e6 04 0d 00 f0 0d 2e | align.........| 000001c0 6b 65 79 5f 63 6f 64 65 0d 00 fa 1b 20 20 20 20 |key_code.... | 000001d0 73 74 6d 66 64 20 20 20 72 31 33 21 2c 20 7b 72 |stmfd r13!, {r| 000001e0 31 34 7d 0d 01 04 36 20 20 20 20 6d 6f 76 20 20 |14}...6 mov | 000001f0 20 20 20 72 31 30 2c 20 72 30 20 3b 20 70 6f 69 | r10, r0 ; poi| 00000200 6e 74 65 72 20 74 6f 20 73 74 72 69 6e 67 20 74 |nter to string t| 00000210 6f 20 70 72 6f 63 65 73 73 0d 01 0e 16 20 20 20 |o process.... | 00000220 20 6d 6f 76 20 20 20 20 20 72 30 2c 20 23 36 0d | mov r0, #6.| 00000230 01 18 18 20 20 20 20 6d 6f 76 20 20 20 20 20 72 |... mov r| 00000240 33 2c 20 23 32 35 36 0d 01 22 1c 20 20 20 20 73 |3, #256..". s| 00000250 77 69 20 20 20 20 20 22 58 4f 53 5f 4d 6f 64 75 |wi "XOS_Modu| 00000260 6c 65 22 0d 01 2c 1b 20 20 20 20 6c 64 6d 76 73 |le"..,. ldmvs| 00000270 66 64 20 72 31 33 21 2c 20 7b 70 63 7d 5e 0d 01 |fd r13!, {pc}^..| 00000280 36 2a 20 20 20 20 6d 6f 76 20 20 20 20 20 72 39 |6* mov r9| 00000290 2c 20 72 32 20 3b 20 70 6f 69 6e 74 65 72 20 74 |, r2 ; pointer t| 000002a0 6f 20 62 75 66 66 65 72 0d 01 40 29 20 20 20 20 |o buffer..@) | 000002b0 6d 6f 76 20 20 20 20 20 72 38 2c 20 23 32 35 36 |mov r8, #256| 000002c0 20 3b 20 73 69 7a 65 20 6f 66 20 62 75 66 66 65 | ; size of buffe| 000002d0 72 0d 01 4a 13 2e 70 72 6f 63 65 73 73 5f 73 74 |r..J..process_st| 000002e0 72 69 6e 67 0d 01 54 17 20 20 20 20 6d 6f 76 20 |ring..T. mov | 000002f0 20 20 20 20 72 30 2c 20 72 31 30 0d 01 5e 16 20 | r0, r10..^. | 00000300 20 20 20 6d 6f 76 20 20 20 20 20 72 31 2c 20 72 | mov r1, r| 00000310 39 0d 01 68 16 20 20 20 20 6d 6f 76 20 20 20 20 |9..h. mov | 00000320 20 72 32 2c 20 72 38 0d 01 72 1d 20 20 20 20 73 | r2, r8..r. s| 00000330 77 69 20 20 20 20 20 22 58 4f 53 5f 47 53 54 72 |wi "XOS_GSTr| 00000340 61 6e 73 22 0d 01 7c 18 20 20 20 20 62 76 73 20 |ans"..|. bvs | 00000350 20 20 20 20 66 69 6e 69 73 68 65 64 0d 01 86 20 | finished... | 00000360 20 20 20 20 62 63 73 20 20 20 20 20 65 78 74 65 | bcs exte| 00000370 6e 64 5f 77 6f 72 6b 73 70 61 63 65 0d 01 87 16 |nd_workspace....| 00000380 20 20 20 20 63 6d 70 20 20 20 20 20 72 32 2c 20 | cmp r2, | 00000390 72 38 0d 01 88 20 20 20 20 20 62 65 71 20 20 20 |r8... beq | 000003a0 20 20 65 78 74 65 6e 64 5f 77 6f 72 6b 73 70 61 | extend_workspa| 000003b0 63 65 0d 01 90 16 20 20 20 20 63 6d 70 20 20 20 |ce.... cmp | 000003c0 20 20 72 32 2c 20 23 31 0d 01 9a 18 20 20 20 20 | r2, #1.... | 000003d0 62 6c 74 20 20 20 20 20 66 69 6e 69 73 68 65 64 |blt finished| 000003e0 0d 01 a4 16 20 20 20 20 6d 6f 76 20 20 20 20 20 |.... mov | 000003f0 72 34 2c 20 72 32 0d 01 ae 16 20 20 20 20 6d 6f |r4, r2.... mo| 00000400 76 20 20 20 20 20 72 33 2c 20 72 39 0d 01 b8 18 |v r3, r9....| 00000410 20 20 20 20 6d 6f 76 20 20 20 20 20 72 30 2c 20 | mov r0, | 00000420 23 31 33 38 0d 01 c2 16 20 20 20 20 6d 6f 76 20 |#138.... mov | 00000430 20 20 20 20 72 31 2c 20 23 30 0d 01 cc 14 2e 73 | r1, #0.....s| 00000440 65 6e 64 5f 63 68 61 72 61 63 74 65 72 73 0d 01 |end_characters..| 00000450 d6 1c 20 20 20 20 6c 64 72 62 20 20 20 20 72 32 |.. ldrb r2| 00000460 2c 20 5b 72 33 5d 2c 20 23 31 0d 01 e0 1a 20 20 |, [r3], #1.... | 00000470 20 20 73 77 69 20 20 20 20 20 22 58 4f 53 5f 42 | swi "XOS_B| 00000480 79 74 65 22 0d 01 ea 18 20 20 20 20 62 76 73 20 |yte".... bvs | 00000490 20 20 20 20 66 69 6e 69 73 68 65 64 0d 01 f4 1a | finished....| 000004a0 20 20 20 20 73 75 62 73 20 20 20 20 72 34 2c 20 | subs r4, | 000004b0 72 34 2c 20 23 31 0d 01 fe 1f 20 20 20 20 62 67 |r4, #1.... bg| 000004c0 74 20 20 20 20 20 73 65 6e 64 5f 63 68 61 72 61 |t send_chara| 000004d0 63 74 65 72 73 0d 02 08 17 3b 20 20 20 20 6d 6f |cters....; mo| 000004e0 76 20 20 20 20 20 72 30 2c 20 23 31 0d 02 12 1c |v r0, #1....| 000004f0 3b 20 20 20 20 6d 76 6e 20 20 20 20 20 72 31 2c |; mvn r1,| 00000500 20 23 ac 28 2d 31 35 29 0d 02 1c 19 3b 20 20 20 | #.(-15)....; | 00000510 20 6d 6f 76 20 20 20 20 20 72 32 2c 20 23 31 35 | mov r2, #15| 00000520 30 0d 02 26 17 3b 20 20 20 20 6d 6f 76 20 20 20 |0..&.; mov | 00000530 20 20 72 33 2c 20 23 31 0d 02 30 21 3b 20 20 20 | r3, #1..0!; | 00000540 20 73 77 69 20 20 20 20 20 22 58 53 6f 75 6e 64 | swi "XSound| 00000550 5f 43 6f 6e 74 72 6f 6c 22 0d 02 3a 0d 2e 66 69 |_Control"..:..fi| 00000560 6e 69 73 68 65 64 0d 02 44 16 20 20 20 20 6d 6f |nished..D. mo| 00000570 76 20 20 20 20 20 72 30 2c 20 23 37 0d 02 4e 16 |v r0, #7..N.| 00000580 20 20 20 20 6d 6f 76 20 20 20 20 20 72 32 2c 20 | mov r2, | 00000590 72 39 0d 02 58 1c 20 20 20 20 73 77 69 20 20 20 |r9..X. swi | 000005a0 20 20 22 58 4f 53 5f 4d 6f 64 75 6c 65 22 0d 02 | "XOS_Module"..| 000005b0 62 1b 20 20 20 20 6c 64 6d 66 64 20 20 20 72 31 |b. ldmfd r1| 000005c0 33 21 2c 20 7b 70 63 7d 5e 0d 02 6c 15 2e 65 78 |3!, {pc}^..l..ex| 000005d0 74 65 6e 64 5f 77 6f 72 6b 73 70 61 63 65 0d 02 |tend_workspace..| 000005e0 76 4f 3b 20 20 20 54 68 69 73 20 63 6f 64 65 20 |vO; This code | 000005f0 69 73 20 70 72 65 74 74 79 20 70 6f 69 6e 74 6c |is pretty pointl| 00000600 65 73 73 2c 20 61 73 20 74 68 65 20 6b 65 79 62 |ess, as the keyb| 00000610 6f 61 72 64 20 62 75 66 66 65 72 20 63 61 6e 20 |oard buffer can | 00000620 6f 6e 6c 79 20 68 6f 6c 64 20 32 35 36 0d 02 77 |only hold 256..w| 00000630 4d 3b 20 20 20 63 68 61 72 61 63 74 65 72 73 21 |M; characters!| 00000640 20 49 66 20 74 68 69 73 20 6c 69 6d 69 74 20 63 | If this limit c| 00000650 68 61 6e 67 65 73 20 74 68 6f 75 67 68 2c 20 74 |hanges though, t| 00000660 68 69 73 20 63 6f 64 65 20 73 68 6f 75 6c 64 20 |his code should | 00000670 62 65 20 61 62 6c 65 20 74 6f 0d 02 78 3a 3b 20 |be able to..x:; | 00000680 20 20 69 6e 73 65 72 74 20 61 6e 79 20 6c 65 6e | insert any len| 00000690 67 74 68 20 73 74 72 69 6e 67 20 69 6e 74 6f 20 |gth string into | 000006a0 74 68 65 20 6b 65 79 62 6f 61 72 64 20 62 75 66 |the keyboard buf| 000006b0 66 65 72 2e 0d 02 80 17 20 20 20 20 6d 6f 76 20 |fer..... mov | 000006c0 20 20 20 20 72 30 2c 20 23 31 33 0d 02 8a 16 20 | r0, #13.... | 000006d0 20 20 20 6d 6f 76 20 20 20 20 20 72 32 2c 20 72 | mov r2, r| 000006e0 39 0d 02 94 18 20 20 20 20 6d 6f 76 20 20 20 20 |9.... mov | 000006f0 20 72 33 2c 20 23 32 35 36 0d 02 9e 1c 20 20 20 | r3, #256.... | 00000700 20 73 77 69 20 20 20 20 20 22 58 4f 53 5f 4d 6f | swi "XOS_Mo| 00000710 64 75 6c 65 22 0d 02 a8 18 20 20 20 20 62 76 73 |dule".... bvs| 00000720 20 20 20 20 20 66 69 6e 69 73 68 65 64 0d 02 b2 | finished...| 00000730 1c 20 20 20 20 61 64 64 20 20 20 20 20 72 38 2c |. add r8,| 00000740 20 72 38 2c 20 23 32 35 36 0d 02 bc 16 20 20 20 | r8, #256.... | 00000750 20 6d 6f 76 20 20 20 20 20 72 39 2c 20 72 32 0d | mov r9, r2.| 00000760 02 c6 1e 20 20 20 20 62 20 20 20 20 20 20 20 70 |... b p| 00000770 72 6f 63 65 73 73 5f 73 74 72 69 6e 67 0d 02 d0 |rocess_string...| 00000780 05 5d 0d 02 da 05 ed 0d 02 e4 04 0d 02 ee 35 c8 |.]............5.| 00000790 99 20 22 4f 53 5f 46 69 6c 65 22 2c 20 31 30 2c |. "OS_File", 10,| 000007a0 20 22 49 6e 73 65 72 74 54 65 78 74 22 2c 20 26 | "InsertText", &| 000007b0 66 66 64 2c 20 2c 20 63 6f 64 65 25 2c 20 50 25 |ffd, , code%, P%| 000007c0 0d 02 f8 05 e0 0d ff |.......| 000007c7