home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Distributions / ucb / 2bsd.tar.gz / 2bsd.tar / upgrade / libretro / ilongops.s < prev    next >
Encoding:
Text File  |  1979-04-19  |  1.8 KB  |  191 lines

  1. / C library-- versions of long *, /, % for non-floating point hardware
  2. /  also =* =% =/
  3.  
  4. .globl    lmul, almul
  5. .globl    csv, cret
  6.  
  7. /
  8. / called:2(sp):LHS 6(sp):RHS
  9. lmul:
  10.     jsr    r5,csv
  11.     mov    4.(r5),r2
  12.     mov    6.(r5),r3
  13.     clr    r0
  14.     clr    r1
  15.     mov    $32.,r4
  16. 1:
  17.     asl    r1
  18.     rol    r0
  19.     rol    r3
  20.     rol    r2
  21.     bcc    2f
  22.     add    10.(r5),r1
  23.     adc    r0
  24.     add    8.(r5),r0
  25. 2:
  26.     sob    r4,1b
  27.     jmp    cret
  28.  
  29. / call is 2(sp):LHSptr 4(sp):RHS
  30. almul:
  31.     jsr    r5,csv
  32.     mov    4.(r5),r3
  33.     mov    (r3)+,r2
  34.     mov    (r3)+,r3
  35.     clr    r0
  36.     clr    r1
  37.     mov    $32.,r4
  38. 1:
  39.     asl    r1
  40.     rol    r0
  41.     rol    r3
  42.     rol    r2
  43.     bcc    2f
  44.     add    8.(r5),r1
  45.     adc    r0
  46.     add    6.(r5),r0
  47. 2:
  48.     sob    r4,1b
  49.     mov    4.(r5),r3
  50.     mov    r0,(r3)+
  51.     mov    r1,(r3)+
  52.     jmp    cret
  53.  
  54. .globl    ldiv
  55. .globl    lrem
  56.  
  57. / Both called 2(sp):LHS 6(sp):RHS
  58. lrem:
  59.     jsr    r5,csv
  60.     mov    $100,-(sp)
  61.     br    1f
  62.  
  63. ldiv:
  64.     jsr    r5,csv
  65.     clr    -(sp)
  66. 1:
  67.     mov    6.(r5),r3
  68.     mov    4.(r5),r2
  69.     bpl    1f
  70.     inc    (sp)
  71.     neg    r2
  72.     neg    r3
  73.     sbc    r2
  74. 1:
  75.     clr    r0
  76.     clr    r1
  77.     tst    8.(r5)
  78.     bge    1f
  79.     neg    8.(r5)
  80.     neg    10.(r5)
  81.     sbc    8.(r5)
  82.     inc    (sp)
  83. 1:
  84.     mov    $32.,r4
  85. 1:
  86.     ashc    $1,r2
  87.     rol    r1
  88.     rol    r0
  89.     cmp    8.(r5),r0
  90.     blt    2f
  91.     bgt    3f
  92.     cmp    10.(r5),r1
  93.     blos    2f
  94. 3:
  95.     sob    r4,1b
  96.     br    1f
  97. 2:
  98.     sub    10.(r5),r1
  99.     sbc    r0
  100.     sub    8.(r5),r0
  101.     inc    r3
  102.     sob    r4,1b
  103. 1:
  104.     bit    $100,(sp)
  105.     beq    3f
  106.     tst    4.(r5)
  107.     bpl    1f
  108.     br    2f
  109. 3:
  110.     mov    r2,r0
  111.     mov    r3,r1
  112.     bit    $1,(sp)+
  113.     beq    1f
  114. 2:
  115.     neg    r0
  116.     neg    r1
  117.     sbc    r0
  118. 1:
  119.     jmp    cret
  120.  
  121. .globl    alrem, aldiv
  122.  
  123. / Called 2(sp):LHSptr 4(sp):RHS
  124.  
  125. alrem:
  126.     jsr    r5,csv
  127.     mov    $100,-(sp)
  128.     br    1f
  129.  
  130. aldiv:
  131.     jsr    r5,csv
  132.     clr    -(sp)
  133. 1:
  134.     mov    4.(r5),r2
  135.     mov    2(r2),r3
  136.     mov    (r2),r2
  137.     bpl    1f
  138.     inc    (sp)
  139.     neg    r2
  140.     neg    r3
  141.     sbc    r2
  142. 1:
  143.     clr    r0
  144.     clr    r1
  145.     tst    6.(r5)
  146.     bge    1f
  147.     neg    6.(r5)
  148.     neg    8.(r5)
  149.     sbc    6.(r5)
  150.     inc    (sp)
  151. 1:
  152.     mov    $32.,r4
  153. 1:
  154.     ashc    $1,r2
  155.     rol    r1
  156.     rol    r0
  157.     cmp    6.(r5),r0
  158.     blt    2f
  159.     bgt    3f
  160.     cmp    8.(r5),r1
  161.     blos    2f
  162. 3:
  163.     sob    r4,1b
  164.     br    1f
  165. 2:
  166.     sub    8.(r5),r1
  167.     sbc    r0
  168.     sub    6.(r5),r0
  169.     inc    r3
  170.     sob    r4,1b
  171. 1:
  172.     mov    4(r5),r4
  173.     bit    $100,(sp)
  174.     beq    3f
  175.     tst    (r4)
  176.     bpl    1f
  177.     br    2f
  178. 3:
  179.     mov    r2,r0
  180.     mov    r3,r1
  181.     bit    $1,(sp)+
  182.     beq    1f
  183. 2:
  184.     neg    r0
  185.     neg    r1
  186.     sbc    r0
  187. 1:
  188.     mov    r0,(r4)+
  189.     mov    r1,(r4)
  190.     jmp    cret
  191.