tari

Untitled

Feb 18th, 2011
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.63 KB | None | 0 0
  1. # Truncate R1 to a byte, save param 4 (interrupt priority)
  2. FFFC48D2 5B11 _R_SCI_CreateAll MOVU.B R1,R1
  3. FFFC48D4 5B4F MOVU.B R4,R15
  4.  
  5. # ((char *)0x0037)[channel] = prio;
  6. FFFC48D6 FB5237000000 MOV.L #00000037H,R5
  7. FFFC48DC 6604 MOV.L #0H,R4
  8. FFFC48DE FE0154 MOV.B R4,[R1,R5]
  9.  
  10. # ((char *)0x003E)[channel] = prio
  11. FFFC48E1 FB523E000000 MOV.L #0000003EH,R5
  12. FFFC48E7 FE0154 MOV.B R4,[R1,R5]
  13.  
  14. FFFC48EA EF25 MOV.L R2,R5
  15. FFFC48EC 64F5 AND #0FH,R5
  16. FFFC48EE 6115 CMP #1H,R5 # PDL_SCI_ASYNC
  17. FFFC48F0 201B BEQ.B 0FFFC490BH # Hit
  18.  
  19. # Additional comparisons, all skipped
  20. FFFC48F2 6185 CMP #8H,R5
  21. FFFC48F4 2017 BEQ.B 0FFFC490BH
  22. FFFC48F6 6125 CMP #2H,R5
  23. FFFC48F8 16 BEQ.S 0FFFC48FEH
  24. FFFC48F9 6145 CMP #4H,R5
  25. FFFC48FB 10 BEQ.S 0FFFC4903H
  26. FFFC48FC 2E0C BRA.B 0FFFC4908H
  27. FFFC48FE EFF4 MOV.L R15,R4
  28. FFFC4900 381B01 BRA.W R_SCI_CreateSyncAll
  29. FFFC4903 EFF4 MOV.L R15,R4
  30. FFFC4905 386D01 BRA.W R_SCI_CreateSmartAll
  31. FFFC4908 6601 MOV.L #0H,R1
  32. FFFC490A 02 RTS # Return 0
  33.  
  34. # Tail call into _R_SCI_CreateAllAsync
  35. FFFC490B EFF4 MOV.L R15,R4
  36.  
  37.  
  38. # bool _R_SCI_CreateAllAsync() - same arguments as _R_SCI_CreateAll
  39. FFFC490D 6E69 _R_SCI_CreateAllAsy PUSHM R6-R9
  40.  
  41. # Parameter dance
  42. FFFC490F EF26 MOV.L R2,R6
  43. FFFC4911 EF38 MOV.L R3,R8
  44. FFFC4913 5B17 MOVU.B R1,R7
  45. FFFC4915 EF49 MOV.L R4,R9
  46.  
  47. FFFC4917 6602 MOV.L #0H,R2
  48. FFFC4919 6603 MOV.L #0H,R3
  49. FFFC491B 6601 MOV.L #0H,R1
  50. FFFC491D 660F MOV.L #0H,R15
  51.  
  52. # PDL_SCI_ASYNC_MP - omit parity flags if MP mode
  53. FFFC491F 7C36 BTST #3,R6
  54. FFFC4921 2019 BEQ.B 0FFFC493AH
  55.  
  56. # PDL_SCI_PARITY_* sanity check
  57. FFFC4923 FD78C60006 TST #0600H,R6
  58. FFFC4928 3BEE00 BNE.W 0FFFC4A16H # Fail out
  59.  
  60. # ((char *)0x0037)[chan] = prio;
  61. FFFC492B FB5237000000 MOV.L #00000037H,R5
  62. FFFC4931 6614 MOV.L #1H,R4
  63. FFFC4933 FE0754 MOV.B R4,[R7,R5]
  64.  
  65. # Setting bit length
  66. FFFC4936 6642 MOV.L #4H,R2
  67. FFFC4938 6683 MOV.L #8H,R3
  68. FFFC493A EF65 MOV.L R6,R5 # R5 = param2
  69. FFFC493C 7725008001 AND #018000H,R5
  70. FFFC4941 2013 BEQ.B 0FFFC4954H
  71. # Set R2.6 if PDL_SCI_7_BIT_LENGTH
  72. FFFC4943 7705008000 CMP #008000H,R5
  73. FFFC4948 200C BEQ.B 0FFFC4954H
  74. FFFC494A 7705000001 CMP #010000H,R5
  75. FFFC494F 3BC700 BNE.W 0FFFC4A16H
  76. FFFC4952 7862 BSET #6,R2
  77.  
  78. # Setting parity - set R2.5 if EVEN, R2 |= 0x30 if ODD, else fail out
  79. FFFC4954 EF65 MOV.L R6,R5 # param2
  80. FFFC4956 7725000602 AND #020600H,R5
  81. FFFC495B 201C BEQ.B 0FFFC4977H
  82. FFFC495D 7705000002 CMP #020000H,R5
  83. FFFC4962 2015 BEQ.B 0FFFC4977H
  84. FFFC4964 76050002 CMP #0200H,R5
  85. FFFC4968 11 BEQ.S 0FFFC4971H
  86. FFFC4969 76050004 CMP #0400H,R5
  87. FFFC496D 17 BEQ.S 0FFFC4974H
  88. FFFC496E 38A800 BRA.W 0FFFC4A16H
  89. FFFC4971 7852 BSET #5,R2
  90. FFFC4973 0C BRA.S 0FFFC4977H
  91. FFFC4974 753230 OR #30H,R2
  92.  
  93. # PDL_SCI_STOP_* - set R2.3 if STOP_2
  94. FFFC4977 EF65 MOV.L R6,R5 # ..more param2
  95. FFFC4979 772500000C AND #0C0000H,R5
  96. FFFC497E 2013 BEQ.B 0FFFC4991H
  97. FFFC4980 7705000004 CMP #040000H,R5
  98. FFFC4985 200C BEQ.B 0FFFC4991H
  99. FFFC4987 7705000008 CMP #080000H,R5
  100. FFFC498C 3B8A00 BNE.W 0FFFC4A16H
  101. FFFC498F 7832 BSET #3,R2
  102.  
  103. # PDL_SCI_CLK_* - setting clock source
  104. #
  105. FFFC4991 EF65 MOV.L R6,R5 # still examining options
  106. FFFC4993 76250079 AND #7900H,R5
  107. FFFC4997 203C BEQ.B 0FFFC49D3H
  108. # INT_IO default
  109. FFFC4999 76050008 CMP #0800H,R5
  110. FFFC499D 2036 BEQ.B 0FFFC49D3H
  111. # INT_OUT set R3.0
  112. FFFC499F 76050001 CMP #0100H,R5
  113. FFFC49A3 2016 BEQ.B 0FFFC49B9H
  114. # EXT_DIV_8 set R3.1, R1 = 0x10
  115. FFFC49A5 76050010 CMP #1000H,R5
  116. FFFC49A9 2014 BEQ.B 0FFFC49BDH
  117. # EXT_DIV_16 set R3.1 only
  118. FFFC49AB 76050020 CMP #2000H,R5
  119. FFFC49AF 2015 BEQ.B 0FFFC49C4H
  120. # TMR set R3.1, R1 = 0x10 but only legal on channels 5 and 6
  121. FFFC49B1 76050040 CMP #4000H,R5
  122. FFFC49B5 2013 BEQ.B 0FFFC49C8H
  123. # else fail out
  124. FFFC49B7 2E5F BRA.B 0FFFC4A16H
  125. FFFC49B9 7803 BSET #0,R3
  126. FFFC49BB 2E18 BRA.B 0FFFC49D3H
  127. FFFC49BD 7813 BSET #1,R3
  128. FFFC49BF 754110 MOV.L #10H,R1
  129. FFFC49C2 2E11 BRA.B 0FFFC49D3H
  130. FFFC49C4 7813 BSET #1,R3
  131. FFFC49C6 2E0D BRA.B 0FFFC49D3H
  132. # Channel check for TMR
  133. FFFC49C8 6157 CMP #5H,R7
  134. FFFC49CA 15 BEQ.S 0FFFC49CFH
  135. FFFC49CB 6167 CMP #6H,R7
  136. FFFC49CD 2149 BNE.B 0FFFC4A16H
  137. FFFC49CF 7813 BSET #1,R3
  138. FFFC49D1 6611 MOV.L #1H,R1
  139.  
  140. # if R3.1 set, omit this, bitrate calculation
  141. FFFC49D3 7C13 BTST #1,R3
  142. FFFC49D5 2124 BNE.B 0FFFC49F9H
  143. # Skip if top 8 bits illegally set
  144. FFFC49D7 7408FFFFFF00 CMP #00FFFFFFH,R8
  145. FFFC49DD 241C BGTU.B 0FFFC49F9H
  146. FFFC49DF FB42FC070000 MOV.L #000007FCH,R4
  147. FFFC49E5 EC45 MOV.L [R4],R5
  148. FFFC49E7 7841 BSET #4,R1
  149. FFFC49E9 FC2785 DIVU R8,R5
  150. FFFC49EC FD845F SHLR #4,R5,R15
  151. FFFC49EF 760F0040 CMP #4000H,R15
  152. FFFC49F3 2506 BLEU.B 0FFFC49F9H
  153. FFFC49F5 7A41 BCLR #4,R1
  154. FFFC49F7 681F SHLR #1,R15
  155.  
  156. # Call out to _R_SCI_CreateCommon, analysis TODO
  157. FFFC49F9 7EAF PUSH.L R15
  158. FFFC49FB 6040 SUB #4H,R0
  159. FFFC49FD 3C0372 MOV.B #72H,03H[R0]
  160. FFFC4A00 8083 MOV.B R3,02H[R0]
  161. FFFC4A02 8009 MOV.B R1,01H[R0]
  162. FFFC4A04 C302 MOV.B R2,[R0]
  163. FFFC4A06 EF62 MOV.L R6,R2
  164. FFFC4A08 EF83 MOV.L R8,R3
  165. FFFC4A0A EF71 MOV.L R7,R1
  166. FFFC4A0C 5B94 MOVU.B R9,R4
  167. FFFC4A0E 39F901 BSR.W _R_SCI_CreateCommon
  168. FFFC4A11 6280 ADD #8H,R0
  169. FFFC4A13 3F6904 RTSD #10H,R6-R9
  170. FFFC4A16 6601 MOV.L #0H,R1
  171. FFFC4A18 3F6904 RTSD #10H,R6-R9
Add Comment
Please, Sign In to add comment