Annotation of researchv10no/cmd/PDP11/fpp/ilongops.s, revision 1.1.1.1

1.1       root        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

unix.superglobalmegacorp.com

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