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

1.1       root        1: #
                      2: # 25set.s
                      3: #
                      4: # SET OPERATIONS
                      5: #
                      6: _ADDT:
                      7:        cvtbl   (r10)+,r0
                      8:        bneq    l2501
                      9:        cvtwl   (r10)+,r0
                     10: l2501:
                     11:        blbc    r0,l2502
                     12:        incl    r0              #r0 has number of bytes in set
                     13: l2502:
                     14:        addl3   sp,r0,r1        #r1 has pointer to second set
                     15:        ashl    $-1,r0,r0       #r0 has number of words in set
                     16: l2503:
                     17:        bisw2   (sp)+,(r1)+
                     18:        sobgtr  r0,l2503
                     19:        jmp     (r8)
                     20: _SUBT:
                     21:        cvtbl   (r10)+,r0
                     22:        bneq    l2504
                     23:        cvtwl   (r10)+,r0
                     24: l2504:
                     25:        blbc    r0,l2505
                     26:        incl    r0              #r0 has number of bytes in set
                     27: l2505:
                     28:        addl3   sp,r0,r1        #r1 has pointer to second set
                     29:        ashl    $-1,r0,r0       #r0 has number of words in set
                     30: l2506:
                     31:        bicw2   (sp)+,(r1)+
                     32:        sobgtr  r0,l2506
                     33:        bicw2   (r10)+,-(r1)
                     34:        jmp     (r8)
                     35: _MULT:
                     36:        cvtbl   (r10)+,r0
                     37:        bneq    l2507
                     38:        cvtwl   (r10)+,r0
                     39: l2507:
                     40:        blbc    r0,l2508
                     41:        incl    r0              #r0 has number of bytes in set
                     42: l2508:
                     43:        addl3   sp,r0,r1        #r1 has pointer to second set
                     44:        ashl    $-1,r0,r0       #r0 has number of words in set
                     45: l2509:
                     46:        mcomw   (sp)+,r3
                     47:        bicw2   r3,(r1)+
                     48:        sobgtr  r0,l2509
                     49:        jmp     (r8)
                     50: _CARD:
                     51:        cvtbl   (r10)+,r0       #r0 has number of bytes in set
                     52:        bneq    l2510
                     53:        cvtwl   (r10)+,r0
                     54: l2510:
                     55:        blbc    r0,l2511
                     56:        incl    r0
                     57: l2511:
                     58:        addl3   r0,sp,r4        #r4 has new stack addr
                     59:        ashl    $3,r0,r0        #r0 has number of bits in set
                     60:        mnegl   $1,r1           #will init r1 to zero
                     61:        mnegl   $1,r5           #will init r2 to zero
                     62: l2512:
                     63:        incl    r1              #count found element
                     64:        incl    r5              #advance to next field position
                     65: l2521:
                     66:        ffs     r5,$32,(sp),r5  #find next set bit
                     67:        beql    l2521           #nothing found, so continue
                     68:        cmpl    r5,r0           #check for end of field
                     69:        blss    l2512           #element found, so count and continue
                     70:        movl    r4,sp           #clear stack
                     71:        movw    r1,-(sp)        #put answer on stack
                     72:        jmp     (r8)
                     73: _CTTOT:
                     74:        cvtbl   (r10)+,-(sp)
                     75:        bneq    l2513
                     76:        cvtwl   (r10)+,(sp)
                     77: l2513:
                     78:        cvtwl   (r10)+,-(sp)
                     79:        cvtwl   (r10)+,-(sp)
                     80:        calls   $4,_pcttot
                     81:        movw    r0,sp
                     82:        jmp     (r8)
                     83: _IN:
                     84:        cvtbl   (r10)+,r0
                     85:        bneq    l2514
                     86:        cvtwl   (r10)+,r0       #r0 has size of set
                     87: l2514:
                     88:        blbc    r0,l2515
                     89:        incl    r0
                     90: l2515:
                     91:        cvtwl   (sp)+,r1        #r1 has set index
                     92:        addl3   r0,sp,r4        #r4 points to new top of stack
                     93:        subw2   (r10)+,r1       #check below lower
                     94:        blssu   l2516
                     95:        cmpw    r1,(r10)+       #check above upper
                     96:        bgtru   l2517
                     97:        bbc     r1,(sp),l2517   #check for bit set
                     98:        movl    r4,sp           #bit found
                     99:        movw    $1,-(sp)
                    100:        jmp     (r8)
                    101: l2516:
                    102:        addl2   $2,r10
                    103: l2517:
                    104:        movl    r4,sp           #bit not found
                    105:        clrw    -(sp)
                    106:        jmp     (r8)
                    107: _INCT:
                    108:        incl    r10
                    109:        cvtwl   (sp)+,r0        #r0 has value to find
                    110:        cvtwl   (sp)+,r1        #r1 has pair count
                    111: l2518:
                    112:        cmpw    r0,(sp)+
                    113:        blss    l2519
                    114:        cmpw    r0,(sp)+
                    115:        bgtr    l2520
                    116:        decl    r1
                    117:        moval   (sp)[r1],sp     #clear off remaining data on stack
                    118:        movw    $1,-(sp)        #success
                    119:        jmp     (r8)
                    120: l2519:
                    121:        addl2   $2,sp
                    122: l2520:
                    123:        sobgtr  r1,l2518
                    124:        clrw    -(sp)           #failure
                    125:        jmp     (r8)

unix.superglobalmegacorp.com

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