registertimer.s 1003 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. .xdef OSVRegisterTimer
  2. .text
  3. OSVRegisterTimer:
  4. subq.w #1,%d0
  5. cmpi.w #2,%d0
  6. bcc.s .L__timer_rfai
  7. muls.w #12,%d0
  8. move.l 0x74,%a0
  9. cmpi.l #132133782,(%a0,-4)
  10. beq.s .L__timer_rins
  11. lea .L__timer_told(%pc),%a1
  12. move.l %a0,(%a1)
  13. lea .L__timer_rti5(%pc),%a0
  14. .L__timer_rins:
  15. lea -32(%a0,%d0.w),%a1
  16. cmpi.l #-1,(%a1)
  17. bne.s .L__timer_rfai
  18. move.l %d3,(%a1)+
  19. move.l %d3,(%a1)+
  20. move.l %d4,(%a1)
  21. bclr.b #2,0x600001
  22. move.l %a0,0x74:w
  23. bset.b #2,0x600001
  24. moveq #1,%d0
  25. rts
  26. .L__timer_rfai:
  27. clr.w %d0
  28. rts
  29. .even
  30. .L__timer_ttab:
  31. .long -1,0,0,-1,0,0
  32. .L__timer_told:
  33. .long 0
  34. .long 132133782 /* magic */
  35. .even
  36. .L__timer_rti5:
  37. move.w #0x2700,%sr
  38. movem.l %d0-%d7/%a0-%a6,-(%sp)
  39. lea .L__timer_ttab(%pc),%a4
  40. moveq #1,%d4
  41. .L__timer_i5lp:
  42. cmpi.l #-1,(%a4)
  43. beq.s .L__timer_i5sk
  44. subq.l #1,(%a4,4)
  45. bne.s .L__timer_i5sk
  46. move.l (%a4),(%a4,4)
  47. move.l (%a4,8),%a0
  48. jsr (%a0)
  49. .L__timer_i5sk:
  50. lea (%a4,12),%a4
  51. dbra %d4,.L__timer_i5lp
  52. movem.l (%sp)+,%d0-%d7/%a0-%a6
  53. move.l .L__timer_told(%pc),-(%sp)
  54. rts