rmu4.s 640 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. .sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
  2. .sect .text
  3. .define rmu4~
  4. .extern save~,retu~
  5. ! $Id$
  6. rmu4~:
  7. jsr pc,save~
  8. clr r0
  9. tst (sp)
  10. bne hardrmu4
  11. tst 02(sp)
  12. blt hardrmu4
  13. mov 06(sp),r2
  14. mov 04(sp),r1
  15. mov 02(sp),r3
  16. div r3,r0
  17. mov r1,r0
  18. mov r1,r4
  19. mov r2,r1
  20. div r3,r0
  21. bvc 1f
  22. mov r2,r1
  23. mov r4,r0
  24. sub r3,r0
  25. div r3,r0
  26. tst r1
  27. beq 1f
  28. add r3,r1
  29. 1: clr r0
  30. br 2f
  31. hardrmu4:
  32. mov 06(sp),r2
  33. mov 04(sp),r1
  34. mov (sp),r3
  35. mov $17,r4
  36. br 3f
  37. 6: clc
  38. rol r2
  39. rol r1
  40. rol r0
  41. 3: cmp r3,r0
  42. bhi 4f
  43. bcs 5f
  44. cmp 02(sp),r1
  45. blos 5f
  46. 4: sob r4,6b
  47. br 2f
  48. 5: sub 02(sp),r1
  49. sbc r0
  50. sub r3,r0
  51. sob r4,6b
  52. 2: add $010,sp
  53. jmp retu~