Annotation of researchv10no/cmd/PDP11/crt/alrem.s, revision 1.1.1.1

1.1       root        1: / Long remainder
                      2: 
                      3: .globl alrem
                      4: .globl csv, cret
                      5: alrem:
                      6:        jsr     r5,csv
                      7:        mov     8.(r5),r3
                      8:        sxt     r4
                      9:        bpl     1f
                     10:        neg     r3
                     11:        bmi     hardlrem
                     12: 1:
                     13:        cmp     r4,6.(r5)
                     14:        bne     hardlrem
                     15:        mov     4.(r5),r0
                     16:        mov     2(r0),r2
                     17:        mov     (r0),r1
                     18:        mov     r1,r4
                     19:        bge     1f
                     20:        neg     r1
                     21:        neg     r2
                     22:        sbc     r1
                     23: 1:
                     24:        clr     r0
                     25:        div     r3,r0
                     26:        mov     r1,r0
                     27:        mov     r2,r1
                     28:        mov     r0,(sp)
                     29:        div     r3,r0
                     30:        bvc     1f
                     31:        mov     r2,r1                   / restore dividend
                     32:        mov     (sp),r0
                     33:        sub     r3,r0
                     34:        div     r3,r0
                     35:        tst     r1
                     36:        beq     9f
                     37:        add     r3,r1
                     38: 1:
                     39:        tst     r4
                     40:        bpl     9f
                     41:        neg     r1
                     42: 9:
                     43:        sxt     r0
                     44:        mov     4.(r5),r3
                     45:        mov     r0,(r3)+
                     46:        mov     r1,(r3)
                     47:        jmp     cret
                     48: 
                     49: / The divisor is known to be >= 2^15.  Only 17 cycles are
                     50: / needed to get a remainder.
                     51: hardlrem:
                     52:        mov     4.(r5),r0
                     53:        mov     2(r0),r2
                     54:        mov     (r0),r1
                     55:        bpl     1f
                     56:        neg     r1
                     57:        neg     r2
                     58:        sbc     r1
                     59: 1:
                     60:        clr     r0
                     61:        mov     6.(r5),r3
                     62:        bge     1f
                     63:        neg     r3
                     64:        neg     8.(r5)
                     65:        sbc     r3
                     66: 1:
                     67:        cmp     r3,r0
                     68:        blo     1f
                     69:        bhi     2f
                     70:        cmp     8.(r5),r1
                     71:        bhi     2f
                     72: 1:
                     73:        sub     r3,r0
                     74:        sub     8.(r5),r1
                     75:        sbc     r0
                     76: 2:
                     77:        mov     $16.,r4
                     78: 1:
                     79:        clc
                     80:        rol     r2
                     81:        rol     r1
                     82:        rol     r0
                     83:        cmp     r3,r0
                     84:        blo     2f
                     85:        bhi     3f
                     86:        cmp     8.(r5),r1
                     87:        blos    2f
                     88: 3:
                     89:        sob     r4,1b
                     90:        br      1f
                     91: 2:
                     92:        sub     8.(r5),r1
                     93:        sbc     r0
                     94:        sub     r3,r0
                     95:        sob     r4,1b
                     96: 1:
                     97:        mov     4.(r5),r3
                     98:        tst     (r3)
                     99:        bge     1f
                    100:        neg     r0
                    101:        neg     r1
                    102:        sbc     r0
                    103: 1:
                    104:        mov     r0,(r3)+
                    105:        mov     r1,(r3)
                    106:        jmp     cret

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.