Annotation of 40BSD/cmd/px/25set.s, revision 1.1.1.1

1.1       root        1: #
                      2: # Copyright (c) 1979 Regents of the University of California
                      3: #
                      4: # char sccsid[] = "@(#)25set.s 4.1 10/10/80";
                      5: #
                      6: # SET OPERATIONS
                      7: #
                      8: _ADDT:
                      9:        cvtbl   (r10)+,r0
                     10:        bneq    l2501
                     11:        movzwl  (r10)+,r0
                     12: l2501:
                     13:        addl3   sp,r0,r1        #r1 has pointer to second set
                     14:        ashl    $-2,r0,r4       #r4 has number of longs in set
                     15: l2503:
                     16:        bisl2   (sp)+,(r1)+
                     17:        sobgtr  r4,l2503
                     18:        jmp     (r8)
                     19: _SUBT:
                     20:        cvtbl   (r10)+,r0
                     21:        bneq    l2504
                     22:        movzwl  (r10)+,r0
                     23: l2504:
                     24:        addl3   sp,r0,r1        #r1 has pointer to second set
                     25:        ashl    $-2,r0,r4       #r4 has number of longs in set
                     26: l2506:
                     27:        bicl2   (sp)+,(r1)+
                     28:        sobgtr  r4,l2506
                     29:        jmp     (r8)
                     30: _MULT:
                     31:        cvtbl   (r10)+,r0
                     32:        bneq    l2507
                     33:        movzwl  (r10)+,r0
                     34: l2507:
                     35:        addl3   sp,r0,r1        #r1 has pointer to second set
                     36:        ashl    $-2,r0,r4       #r4 has number of longs in set
                     37: l2509:
                     38:        mcoml   (sp)+,r3
                     39:        bicl2   r3,(r1)+
                     40:        sobgtr  r4,l2509
                     41:        jmp     (r8)
                     42: _CARD:
                     43:        cvtbl   (r10)+,r0       #r0 has number of bytes in set
                     44:        bneq    l2510
                     45:        movzwl  (r10)+,r0
                     46: l2510:
                     47:        blbc    r0,l2511
                     48:        incl    r0
                     49: l2511:
                     50:        cmpl    r0,$2           #check for long align
                     51:        bneq    l2525
                     52:        addl2   $2,r0           #if so append it
                     53: l2525:
                     54:        addl3   r0,sp,r4        #r4 has new stack addr
                     55:        ashl    $3,r0,r0        #r0 has number of bits in set
                     56:        mnegl   $1,r1           #will init r1 to zero
                     57:        mnegl   $1,r5           #will init r2 to zero
                     58: l2512:
                     59:        incl    r1              #count found element
                     60:        incl    r5              #advance to next field position
                     61: l2521:
                     62:        ffs     r5,$32,(sp),r5  #find next set bit
                     63:        beql    l2521           #nothing found, so continue
                     64:        cmpl    r5,r0           #check for end of field
                     65:        blss    l2512           #element found, so count and continue
                     66:        movl    r4,sp           #clear stack
                     67:        movw    r1,-(sp)        #put answer on stack
                     68:        jmp     (r8)
                     69: _CTTOT:
                     70:        cvtbl   (r10)+,r0
                     71:        bneq    l2513
                     72:        movzwl  (r10)+,r0
                     73: l2513:
                     74:        pushal  -4(sp)[r0]
                     75:        calls   r0,_cttot
                     76:        jmp     (r8)
                     77: _IN:
                     78:        cvtbl   (r10)+,r0
                     79:        bneq    l2514
                     80:        movzwl  (r10)+,r0       #r0 has size of set
                     81: l2514:
                     82:        movl    (sp)+,r1        #r1 has set index
                     83:        addl3   r0,sp,r4        #r4 points to new top of stack
                     84:        subw2   (r10)+,r1       #check below lower
                     85:        blssu   l2516
                     86:        cmpw    r1,(r10)+       #check above upper
                     87:        bgtru   l2517
                     88:        bbc     r1,(sp),l2517   #check for bit set
                     89:        movl    r4,sp           #bit found
                     90:        movw    $1,-(sp)
                     91:        jmp     (r8)
                     92: l2516:
                     93:        addl2   $2,r10
                     94: l2517:
                     95:        movl    r4,sp           #bit not found
                     96:        clrw    -(sp)
                     97:        jmp     (r8)
                     98: _INCT:
                     99:        cvtbl   (r10)+,r0
                    100:        bneq    l2518
                    101:        movzwl  (r10)+,r0       #r0 has number of elements
                    102: l2518:
                    103:        calls   r0,_inct
                    104:        movw    r0,-(sp)
                    105:        jmp     (r8)

unix.superglobalmegacorp.com

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