Home » Archimedes archive » Acorn Computing » 1994 05.adf » 9405 » TechForum/!OS3_Fix/Modify
TechForum/!OS3_Fix/Modify
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 05.adf » 9405 |
Filename: | TechForum/!OS3_Fix/Modify |
Read OK: | ✔ |
File size: | 0308 bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
10 20SYS "OS_File",5,"<tabletos3fix$dir>.OldMod" TO type%,,,,len% 30IF type%<>1 ERROR 0, "File !OS3_Fix.OldMod not found" 40DIM data% len%+256, search% 12 50SYS "OS_File",255,"<tabletos3fix$dir>.OldMod",data%,0 60P%=search% 70[OPT 2 80MOV R0, #&9C 90MOV R1, #&DE 100SWI "XOS_Byte" 110] 120P%=0 130Q%=data% 140REPEAT 150 IF (Q%!0 = search%!0) AND (Q%!4 = search%!4) AND (Q%!8 = search%!8) P%=Q%+8 160 Q%+=4 170UNTIL (P%<>0) OR (Q%>data%+len%-12) 180IF P%=0 ERROR 0, "Can't find instructions to patch" 190[OPT 2 200BL data%+len% 210] 220P%=data%+len% 230[OPT 2 240.ms% 250STMFD R13!,{R14} 260MOV R0,#1 270MOV R1,#%1000 280SWI "XOS_SerialOp" 290MOV R0,#2 300MOV R1,#2 310SWI "XOS_Byte" 320LDMFD R13!,{PC} 330.me% 340] 350SYS "OS_File",10,"<tabletos3fix$dir>.NewMod",&FFA,,data%,data%+len%+(me%-ms%)
>ș "OS_File",5,"<tabletos3fix$dir>.OldMod" � type%,,,,len% 4� type%<>1 � 0, "File !OS3_Fix.OldMod not found" ( � data% len%+256, search% 12 28ș "OS_File",255,"<tabletos3fix$dir>.OldMod",data%,0 <P%=search% F [OPT 2 PMOV R0, #&9C ZMOV R1, #&DE dSWI "XOS_Byte" n] xP%=0 �Q%=data% �� �K � (Q%!0 = search%!0) � (Q%!4 = search%!4) � (Q%!8 = search%!8) P%=Q%+8 � Q%+=4 �"� (P%<>0) � (Q%>data%+len%-12) �2� P%=0 � 0, "Can't find instructions to patch" � [OPT 2 �BL data%+len% �] �P%=data%+len% � [OPT 2 �.ms% �STMFD R13!,{R14} MOV R0,#1 MOV R1,#%1000 SWI "XOS_SerialOp" " MOV R0,#2 , MOV R1,#2 6SWI "XOS_Byte" @LDMFD R13!,{PC} J.me% T] ^Pș "OS_File",10,"<tabletos3fix$dir>.NewMod",&FFA,,data%,data%+len%+(me%-ms%) �
00000000 0d 00 0a 04 0d 00 14 3e c8 99 20 22 4f 53 5f 46 |.......>.. "OS_F| 00000010 69 6c 65 22 2c 35 2c 22 3c 74 61 62 6c 65 74 6f |ile",5,"<tableto| 00000020 73 33 66 69 78 24 64 69 72 3e 2e 4f 6c 64 4d 6f |s3fix$dir>.OldMo| 00000030 64 22 20 b8 20 74 79 70 65 25 2c 2c 2c 2c 6c 65 |d" . type%,,,,le| 00000040 6e 25 0d 00 1e 34 e7 20 74 79 70 65 25 3c 3e 31 |n%...4. type%<>1| 00000050 20 85 20 30 2c 20 22 46 69 6c 65 20 21 4f 53 33 | . 0, "File !OS3| 00000060 5f 46 69 78 2e 4f 6c 64 4d 6f 64 20 6e 6f 74 20 |_Fix.OldMod not | 00000070 66 6f 75 6e 64 22 0d 00 28 20 de 20 64 61 74 61 |found"..( . data| 00000080 25 20 6c 65 6e 25 2b 32 35 36 2c 20 73 65 61 72 |% len%+256, sear| 00000090 63 68 25 20 31 32 0d 00 32 38 c8 99 20 22 4f 53 |ch% 12..28.. "OS| 000000a0 5f 46 69 6c 65 22 2c 32 35 35 2c 22 3c 74 61 62 |_File",255,"<tab| 000000b0 6c 65 74 6f 73 33 66 69 78 24 64 69 72 3e 2e 4f |letos3fix$dir>.O| 000000c0 6c 64 4d 6f 64 22 2c 64 61 74 61 25 2c 30 0d 00 |ldMod",data%,0..| 000000d0 3c 0e 50 25 3d 73 65 61 72 63 68 25 0d 00 46 0a |<.P%=search%..F.| 000000e0 5b 4f 50 54 20 32 0d 00 50 10 4d 4f 56 20 52 30 |[OPT 2..P.MOV R0| 000000f0 2c 20 23 26 39 43 0d 00 5a 10 4d 4f 56 20 52 31 |, #&9C..Z.MOV R1| 00000100 2c 20 23 26 44 45 0d 00 64 12 53 57 49 20 22 58 |, #&DE..d.SWI "X| 00000110 4f 53 5f 42 79 74 65 22 0d 00 6e 05 5d 0d 00 78 |OS_Byte"..n.]..x| 00000120 08 50 25 3d 30 0d 00 82 0c 51 25 3d 64 61 74 61 |.P%=0....Q%=data| 00000130 25 0d 00 8c 05 f5 0d 00 96 4b 20 e7 20 28 51 25 |%........K . (Q%| 00000140 21 30 20 3d 20 73 65 61 72 63 68 25 21 30 29 20 |!0 = search%!0) | 00000150 80 20 28 51 25 21 34 20 3d 20 73 65 61 72 63 68 |. (Q%!4 = search| 00000160 25 21 34 29 20 80 20 28 51 25 21 38 20 3d 20 73 |%!4) . (Q%!8 = s| 00000170 65 61 72 63 68 25 21 38 29 20 50 25 3d 51 25 2b |earch%!8) P%=Q%+| 00000180 38 0d 00 a0 0a 20 51 25 2b 3d 34 0d 00 aa 22 fd |8.... Q%+=4...".| 00000190 20 28 50 25 3c 3e 30 29 20 84 20 28 51 25 3e 64 | (P%<>0) . (Q%>d| 000001a0 61 74 61 25 2b 6c 65 6e 25 2d 31 32 29 0d 00 b4 |ata%+len%-12)...| 000001b0 32 e7 20 50 25 3d 30 20 85 20 30 2c 20 22 43 61 |2. P%=0 . 0, "Ca| 000001c0 6e 27 74 20 66 69 6e 64 20 69 6e 73 74 72 75 63 |n't find instruc| 000001d0 74 69 6f 6e 73 20 74 6f 20 70 61 74 63 68 22 0d |tions to patch".| 000001e0 00 be 0a 5b 4f 50 54 20 32 0d 00 c8 11 42 4c 20 |...[OPT 2....BL | 000001f0 64 61 74 61 25 2b 6c 65 6e 25 0d 00 d2 05 5d 0d |data%+len%....].| 00000200 00 dc 11 50 25 3d 64 61 74 61 25 2b 6c 65 6e 25 |...P%=data%+len%| 00000210 0d 00 e6 0a 5b 4f 50 54 20 32 0d 00 f0 08 2e 6d |....[OPT 2.....m| 00000220 73 25 0d 00 fa 14 53 54 4d 46 44 20 52 31 33 21 |s%....STMFD R13!| 00000230 2c 7b 52 31 34 7d 0d 01 04 0d 4d 4f 56 20 52 30 |,{R14}....MOV R0| 00000240 2c 23 31 0d 01 0e 11 4d 4f 56 20 52 31 2c 23 25 |,#1....MOV R1,#%| 00000250 31 30 30 30 0d 01 18 16 53 57 49 20 22 58 4f 53 |1000....SWI "XOS| 00000260 5f 53 65 72 69 61 6c 4f 70 22 0d 01 22 0d 4d 4f |_SerialOp"..".MO| 00000270 56 20 52 30 2c 23 32 0d 01 2c 0d 4d 4f 56 20 52 |V R0,#2..,.MOV R| 00000280 31 2c 23 32 0d 01 36 12 53 57 49 20 22 58 4f 53 |1,#2..6.SWI "XOS| 00000290 5f 42 79 74 65 22 0d 01 40 13 4c 44 4d 46 44 20 |_Byte"..@.LDMFD | 000002a0 52 31 33 21 2c 7b 50 43 7d 0d 01 4a 08 2e 6d 65 |R13!,{PC}..J..me| 000002b0 25 0d 01 54 05 5d 0d 01 5e 50 c8 99 20 22 4f 53 |%..T.]..^P.. "OS| 000002c0 5f 46 69 6c 65 22 2c 31 30 2c 22 3c 74 61 62 6c |_File",10,"<tabl| 000002d0 65 74 6f 73 33 66 69 78 24 64 69 72 3e 2e 4e 65 |etos3fix$dir>.Ne| 000002e0 77 4d 6f 64 22 2c 26 46 46 41 2c 2c 64 61 74 61 |wMod",&FFA,,data| 000002f0 25 2c 64 61 74 61 25 2b 6c 65 6e 25 2b 28 6d 65 |%,data%+len%+(me| 00000300 25 2d 6d 73 25 29 0d ff |%-ms%)..| 00000308