home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 3 / TheARMClub_PDCD3.iso / programs / patches / liberian / SA-patch (.txt)
Encoding:
RISC OS BBC BASIC V Source  |  1998-06-29  |  5.2 KB  |  213 lines

  1.  swiveneer taken by RISC OS 3.70 ROM, and patched in Librarian's !RunImage
  2.  by Excelsior, on 11/10/96 @ army
  3. size% = 700
  4. &code%=
  5. claim(size%):L%=code%+size%
  6.  _swix veneer starts at &1cd7c in !RunImage absolute address
  7. $opcode% = 
  8. branch(&1cd7c, _swix)
  9. "Set alias$Patch_Librarian_SA memorya 1cd7c "+
  10. ~opcode%
  11. branch(address%, branch%)
  12.  offset%, opcode%
  13.  offset%=(branch%-address%-8)
  14. "offset%=offset%>>2 
  15.  &00FFFFFF
  16. opcode%=&EA000000 
  17.  offset%
  18. =opcode%
  19.  pass=8 
  20. 2:P%=code%:[OPTpass
  21. ._swix
  22. R     R0,R0,#&00020000
  23.     TST     R1,#&0FF0
  24.     BNE     _swi
  25.     STMFD   R13!,{R2,R3}
  26. #    STMFD   R13!,{R1,R4-R9,R14}
  27.     SUB     R13,R13,#&14
  28.     ADD     R14,R13,#&34
  29.     MOV     R12,R0
  30.     STR     R11,[R13,#0]
  31.     MOV     R11,R1
  32.     TST     R11,#1
  33.     LDRNE   R0,[R14],#4
  34.     TST     R11,#2
  35.     LDRNE   R1,[R14],#4
  36.     TST     R11,#4
  37.     LDRNE   R2,[R14],#4
  38.     TST     R11,#8
  39.     LDRNE   R3,[R14],#4
  40.     STR     R14,[R13,#4]
  41. +!    SWI     "XOS_CallASWIR12"
  42.     LDMFD   R13,{R11,R12}
  43.     B       J_7%
  44. .    ._swi
  45.     STMFD   R13!,{R2,R3}
  46. 0#    STMFD   R13!,{R1,R4-R9,R14}
  47.     SUB     R13,R13,#&14
  48.     ADD     R14,R13,#&34
  49.     MOV     R12,R0
  50.     STR     R11,[R13,#0]
  51.     MOV     R11,R1
  52.     TST     R11,#1
  53.     LDRNE   R0,[R14],#4
  54.     TST     R11,#2
  55.     LDRNE   R1,[R14],#4
  56.     TST     R11,#4
  57.     LDRNE   R2,[R14],#4
  58.     TST     R11,#8
  59.     LDRNE   R3,[R14],#4
  60.     TST     R11,#&10
  61.     LDRNE   R4,[R14],#4
  62.     TST     R11,#&20
  63.     LDRNE   R5,[R14],#4
  64.     TST     R11,#&40
  65.     LDRNE   R6,[R14],#4
  66.     TST     R11,#&80
  67.     LDRNE   R7,[R14],#4
  68.     TST     R11,#&0100
  69.     LDRNE   R8,[R14],#4
  70.     TST     R11,#&0200
  71.     LDRNE   R9,[R14],#4
  72.     STR     R14,[R13,#4]
  73.     TST     R11,#&0800
  74.     BLNE    J_4%
  75.     LDRNE   R14,[R13,#4]
  76.     TST     R12,#&00020000
  77.     BEQ     J_2%
  78. P!    SWI     "XOS_CallASWIR12"
  79.     LDMFD   R13,{R11,R12}
  80.     B       J_7%
  81. S    .J_2%
  82. T!    SWI     "XOS_CallASWIR12"
  83.     LDMFD   R13,{R11,R12}
  84.     STR     PC,[R13,#16]!
  85.     LDR     R14,[R13,#4]
  86.     TST     R14,#&80000000
  87.     BEQ     J_3%
  88.     LDRNE   R14,[R12],#4
  89.     STRNE   R0,[R14,#0]
  90.     LDR     R14,[R13,#4]
  91. ]"    BIC     R14,R14,#&80000000
  92.     STR     R14,[R13,#4]
  93. _    .J_3%
  94. `     
  95. S    R14,R14,#&000F0000
  96.     BEQ     J_6%
  97.     CMP     R14,#&00010000
  98. Q   R0,R1
  99.     CMP     R14,#&00020000
  100. Q   R0,R2
  101.     CMP     R14,#&00030000
  102. Q   R0,R3
  103.     CMP     R14,#&00040000
  104. Q   R0,R4
  105.     CMP     R14,#&00050000
  106. Q   R0,R5
  107.     CMP     R14,#&00060000
  108. Q   R0,R6
  109.     CMP     R14,#&00070000
  110. Q   R0,R7
  111.     CMP     R14,#&00080000
  112. Q   R0,R8
  113.     CMP     R14,#&00090000
  114. Q   R0,R9
  115.     CMP     R14,#&000F0000
  116.     LDREQ   R0,[R13,#0]
  117.     B       J_6%
  118. w    .J_4%
  119. x"    STMFD   R13!,{R10-R12,R14}
  120.     LDR     R12,[R13,#20]
  121.     MOVS    R11,R11,LSL #1
  122.     ADDCS   R12,R12,#4
  123.     ADDMI   R12,R12,#4
  124.     MOV     R10,#5
  125. ~    .J_5%
  126.     MOVS    R11,R11,LSL #2
  127.     ADDCS   R12,R12,#4
  128.     ADDMI   R12,R12,#4
  129.     SUBS    R10,R10,#1
  130.     BNE     J_5%
  131.     LDR     R11,[R13,#4]
  132. S    R11,R11,#&F000
  133. Q   R0,R12
  134.     CMP     R11,#&1000
  135. Q   R1,R12
  136.     CMP     R11,#&2000
  137. Q   R2,R12
  138.     CMP     R11,#&3000
  139. Q   R3,R12
  140.     CMP     R11,#&4000
  141. Q   R4,R12
  142.     CMP     R11,#&5000
  143. Q   R5,R12
  144.     CMP     R11,#&6000
  145. Q   R6,R12
  146.     CMP     R11,#&7000
  147. Q   R7,R12
  148.     CMP     R11,#&8000
  149. Q   R8,R12
  150.     CMP     R11,#&9000
  151. Q   R9,R12
  152. "    LDMFD   R13!,{R10-R12,PC}^
  153.     .J_6%
  154.     LDR     R14,[R13,#4]
  155.     MOVS    R14,R14,LSL #1
  156.     LDRCS   R14,[R12],#4
  157.     STRCS   R0,[R14,#0]
  158.     LDRMI   R14,[R12],#4
  159.     STRMI   R1,[R14,#0]
  160.     LDR     R14,[R13,#4]
  161.     B       J_8%
  162.     .J_7%
  163.     STR     PC,[R13,#16]!
  164.     LDR     R14,[R13,#4]
  165.     BVS     J_9%
  166.     MOVS    R14,R14,LSL #1
  167.     LDRCS   R14,[R12],#4
  168.     STRCS   R0,[R14,#0]
  169.     LDRMI   R14,[R12],#4
  170.     STRMI   R1,[R14,#0]
  171.     LDR     R14,[R13,#4]
  172.     TST     R14,#&000F0000
  173. Q   R0,#0
  174.     .J_8%
  175.     MOVS    R14,R14,LSL #3
  176.     LDRCS   R1,[R12],#4
  177.     STRCS   R2,[R1,#0]
  178.     LDRMI   R1,[R12],#4
  179.     STRMI   R3,[R1,#0]
  180.      
  181.      R14,R14,#&FF000000
  182.     MOVS    R14,R14,LSL #2
  183.     LDRCS   R1,[R12],#4
  184.     STRCS   R4,[R1,#0]
  185.     BEQ     J_9%
  186.     LDRMI   R1,[R12],#4
  187.     STRMI   R5,[R1,#0]
  188.     MOVS    R14,R14,LSL #2
  189.     LDRCS   R1,[R12],#4
  190.     STRCS   R6,[R1,#0]
  191.     LDRMI   R1,[R12],#4
  192.     STRMI   R7,[R1,#0]
  193.     MOVS    R14,R14,LSL #2
  194.     LDRCS   R1,[R12],#4
  195.     STRCS   R8,[R1,#0]
  196.     LDRMI   R1,[R12],#4
  197.     STRMI   R9,[R1,#0]
  198.     MOVS    R14,R14,LSL #2
  199.     LDRCS   R9,[R13,#0]
  200.     LDRCS   R1,[R12],#4
  201.     STRCS   R9,[R1,#0]
  202.     .J_9%
  203.     ADD     R13,R13,#8
  204.      LDMFD   R13!,{R4-R9,R14}
  205.     ADD     R13,R13,#8
  206.     MOVS    PC,R14
  207. claim(size%)
  208.  "OS_Module",6,,,size% 
  209.  ,,ptr%
  210.  ptr%<1 
  211.  "Not enough memory"
  212.     =ptr%
  213.