dvi4.s 910 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. .sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
  2. .sect .text
  3. .define dvi4~
  4. .extern save~,retu~
  5. ! $Id$
  6. dvi4~:
  7. jsr pc,save~
  8. mov 02(sp),r3
  9. sxt r4
  10. bpl 1f
  11. neg r3
  12. 1: cmp r4,(sp)
  13. bne hardldiv
  14. mov 06(sp),r2
  15. mov 04(sp),r1
  16. bge 2f
  17. neg r1
  18. neg r2
  19. sbc r1
  20. com r4
  21. 2: mov r4,-(sp)
  22. clr r0
  23. div r3,r0
  24. mov r0,-(sp)
  25. mov r1,r0
  26. mov r1,r4
  27. mov r2,r1
  28. div r3,r0
  29. bvc 3f
  30. mov r2,r1
  31. mov r4,r0
  32. sub r3,r0
  33. div r3,r0
  34. tst r1
  35. sxt r1
  36. add r1,r0
  37. 3: mov r0,r1
  38. mov (sp)+,r0
  39. br 4f
  40. hardldiv:
  41. clr -(sp)
  42. mov 010(sp),r2
  43. mov 06(sp),r1
  44. bpl 5f
  45. com (sp)
  46. neg r1
  47. neg r2
  48. sbc r1
  49. 5: clr r0
  50. mov 02(sp),r3
  51. bge 6f
  52. neg r3
  53. neg 04(sp)
  54. sbc r3
  55. com (sp)
  56. 6: mov $16,r4
  57. 9: clc
  58. rol r2
  59. rol r1
  60. rol r0
  61. cmp r3,r0
  62. bhi 7f
  63. bcs 8f
  64. cmp 04(sp),r1
  65. blos 8f
  66. 7: sob r4,9b
  67. br 1f
  68. 8: sub 04(sp),r1
  69. sbc r0
  70. sub r3,r0
  71. inc r2
  72. sob r4,9b
  73. 1:
  74. mov r2,r1
  75. clr r0
  76. 4: tst (sp)+
  77. beq 1f
  78. neg r0
  79. neg r1
  80. sbc r0
  81. 1: add $010,sp
  82. jmp retu~