home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 3 / TheARMClub_PDCD3.iso / hensa / programming / gamesuite_1 / GameSuite / Sources / AsmLib / Standard < prev   
Encoding:
Text File  |  1994-07-28  |  2.2 KB  |  175 lines

  1.  
  2. macro loadrma m0,m1
  3. ;load filename m0 in rma, return address in m1
  4. {
  5. STMFD R13!,{R0-R4}
  6. MOV R1,m0
  7. filelength R1,R2
  8. MOVVS R2,#4  ;R2 is used internally as an error type marker
  9. BVS _LOADRMA1
  10. MOVNE R2,R0
  11. BNE _LOADRMA1
  12. STMFD R13!,{R0,R2-R3}
  13. ADD R3,R2,#3
  14. BIC R3,R3,#3
  15. MOV R0,#6
  16. SWI XOS_Module
  17. MOVVS R14,R0
  18. MOVVC R14,R2
  19. LDMFD R13!,{R0,R2-R3}
  20. MOVVS R0,R14
  21. MOVVC R2,R14
  22. MOVVS R14,R0
  23. BVS _LOADRMA2
  24. STMFD R13!,{R0-R3}
  25. MOV R1,R1
  26. MOV R2,R2
  27. MOV R0,#255
  28. MOV R3,#0
  29. SWI XOS_File
  30. MOVVS R14,R0
  31. LDMFD R13!,{R0-R3}
  32. MOVVS R0,R14
  33. MOV R14,R2
  34. BVC _LOADRMA2
  35. STMFD R13!,{R0}
  36. STMFD R13!,{R0,R2}
  37. ;MOV R2,R2
  38. MOV R0,#7
  39. SWI XOS_Module
  40. MOVVS R14,R0
  41. LDMFD R13!,{R0,R2}
  42. MOVVS R0,R14
  43. LDMFD R13!,{R0}
  44. MOV R2,#4
  45. ._LOADRMA1
  46. CMP R2,#0
  47. CMPNE R2,#2
  48. MOVEQ R0,#19
  49. SWIEQ XOS_File
  50. MOV R14,R0
  51. ._LOADRMA2
  52. LDMFD R13!,{R0-R4}
  53. MOVVC m1,R14
  54. MOVVS R0,R14
  55. }
  56.  
  57. macro claimrma m0,m1
  58. {
  59. STMFD R13!,{R0,R2-R3}
  60. ADD R3,m0,#3
  61. BIC R3,R3,#3
  62. MOV R0,#6
  63. SWI XOS_Module
  64. MOVVS R14,R0
  65. MOVVC R14,R2
  66. LDMFD R13!,{R0,R2-R3}
  67. MOVVS R0,R14
  68. MOVVC m1,R14
  69. }
  70.  
  71. macro releaserma m0
  72. ;VS error
  73. {
  74. STMFD R13!,{R0,R2}
  75. MOV R2,m0
  76. MOV R0,#7
  77. SWI XOS_Module
  78. MOVVS R14,R0
  79. LDMFD R13!,{R0,R2}
  80. MOVVS R0,R14
  81. }
  82.  
  83. macro filelength m0,m1
  84. ;VS if error
  85. ;NE if not a file, type in R0.
  86. {
  87. STMFD R13!,{R0-R5}
  88. MOV R1,m0
  89. MOV R0,#5
  90. SWI XOS_File
  91. MOV R14,R4
  92. MOVVS R14,R0
  93. MOVVS R0,#0
  94. CMP R0,#1
  95. MOVNE R14,R0
  96. LDMFD R13!,{R0-R5}
  97. MOVVC m1,R14
  98. MOVNE R0,R14
  99. MOVVS R0,R14
  100. }
  101.  
  102. macro getfiletype m0,m1
  103. ;VS if error
  104. ;m1=0 if unable to find
  105. {
  106. STMFD R13!,{R0-R6}
  107. MOV R0,#20
  108. MOV R1,m0
  109. SWI XOS_File
  110. MOV R14,R6
  111. CMP R0,#0
  112. MOVEQ R14,#0
  113. MOVVS R14,R0
  114. LDMFD R13!,{R0-R6}
  115. MOVVC m1,R14
  116. MOVVS R0,R14
  117. }
  118.  
  119.  
  120. macro loadfile m0,m1
  121. ;filename in m0, load adress in m1
  122. {
  123. STMFD R13!,{R0-R3}
  124. MOV R1,m0
  125. MOV R2,m1
  126. MOV R0,#255
  127. MOV R3,#0
  128. SWI XOS_File
  129. MOVVS R14,R0
  130. LDMFD R13!,{R0-R3}
  131. MOVVS R0,R14
  132. }
  133.  
  134. macro MYDIV m0,m1,m2,t0
  135. {
  136. TST R13,#3
  137. MOVNE PC,#0
  138. CMP m1,#0
  139. RSBLT m1,m1,#0
  140. EORLT R13,R13,#1
  141. CMP m2,#0
  142. RSBLT m2,m2,#0
  143. EORLT R13,R13,#2
  144. BNE _MYDIV4
  145. CMP m1,#0
  146. MOVEQ m0,#0
  147. MOVNE m0,#&7f000000
  148. B _MYDIV1
  149. ._MYDIV4
  150. MOV t0,#1
  151. ._MYDIV2
  152. CMP m2,#&80000000
  153. CMPCC m2,m1
  154. MOVCC m2,m2,LSL #1
  155. MOVCC t0,t0,LSL #1
  156. BCC _MYDIV2
  157. MOV m0,#0
  158. ._MYDIV3
  159. CMP m1,m2
  160. SUBCS m1,m1,m2
  161. ADDCS m0,m0,t0
  162. MOVS t0,t0,LSR #1
  163. MOVNE m2,m2,LSR #1
  164. BNE _MYDIV3
  165. ._MYDIV1
  166. TST R13,#2
  167. RSBNE m2,m2,#0
  168. TST R13,#1
  169. RSBNE m1,m1,#0
  170. EORNE R13,R13,#2
  171. TST R13,#2
  172. RSBNE m0,m0,#0
  173. BIC R13,R13,#3
  174. }
  175.