BSD 4 release
[unix-history] / usr / src / cmd / px / 25set.s
index e5e81c8..0a5ed2c 100644 (file)
@@ -1,60 +1,56 @@
 #\f
 #\f
-# 25set.s
+# Copyright (c) 1979 Regents of the University of California
+#
+# char sccsid[] = "@(#)25set.s 4.1 10/10/80";
 #
 # SET OPERATIONS
 #
 _ADDT:
        cvtbl   (r10)+,r0
        bneq    l2501
 #
 # SET OPERATIONS
 #
 _ADDT:
        cvtbl   (r10)+,r0
        bneq    l2501
-       cvtwl   (r10)+,r0
+       movzwl  (r10)+,r0
 l2501:
 l2501:
-       blbc    r0,l2502
-       incl    r0              #r0 has number of bytes in set
-l2502:
        addl3   sp,r0,r1        #r1 has pointer to second set
        addl3   sp,r0,r1        #r1 has pointer to second set
-       ashl    $-1,r0,r0       #r0 has number of words in set
+       ashl    $-2,r0,r4       #r4 has number of longs in set
 l2503:
 l2503:
-       bisw2   (sp)+,(r1)+
-       sobgtr  r0,l2503
+       bisl2   (sp)+,(r1)+
+       sobgtr  r4,l2503
        jmp     (r8)
 _SUBT:
        cvtbl   (r10)+,r0
        bneq    l2504
        jmp     (r8)
 _SUBT:
        cvtbl   (r10)+,r0
        bneq    l2504
-       cvtwl   (r10)+,r0
+       movzwl  (r10)+,r0
 l2504:
 l2504:
-       blbc    r0,l2505
-       incl    r0              #r0 has number of bytes in set
-l2505:
        addl3   sp,r0,r1        #r1 has pointer to second set
        addl3   sp,r0,r1        #r1 has pointer to second set
-       ashl    $-1,r0,r0       #r0 has number of words in set
+       ashl    $-2,r0,r4       #r4 has number of longs in set
 l2506:
 l2506:
-       bicw2   (sp)+,(r1)+
-       sobgtr  r0,l2506
-       bicw2   (r10)+,-(r1)
+       bicl2   (sp)+,(r1)+
+       sobgtr  r4,l2506
        jmp     (r8)
 _MULT:
        cvtbl   (r10)+,r0
        bneq    l2507
        jmp     (r8)
 _MULT:
        cvtbl   (r10)+,r0
        bneq    l2507
-       cvtwl   (r10)+,r0
+       movzwl  (r10)+,r0
 l2507:
 l2507:
-       blbc    r0,l2508
-       incl    r0              #r0 has number of bytes in set
-l2508:
        addl3   sp,r0,r1        #r1 has pointer to second set
        addl3   sp,r0,r1        #r1 has pointer to second set
-       ashl    $-1,r0,r0       #r0 has number of words in set
+       ashl    $-2,r0,r4       #r4 has number of longs in set
 l2509:
 l2509:
-       mcomw   (sp)+,r3
-       bicw2   r3,(r1)+
-       sobgtr  r0,l2509
+       mcoml   (sp)+,r3
+       bicl2   r3,(r1)+
+       sobgtr  r4,l2509
        jmp     (r8)
 _CARD:
        cvtbl   (r10)+,r0       #r0 has number of bytes in set
        bneq    l2510
        jmp     (r8)
 _CARD:
        cvtbl   (r10)+,r0       #r0 has number of bytes in set
        bneq    l2510
-       cvtwl   (r10)+,r0
+       movzwl  (r10)+,r0
 l2510:
        blbc    r0,l2511
        incl    r0
 l2511:
 l2510:
        blbc    r0,l2511
        incl    r0
 l2511:
+       cmpl    r0,$2           #check for long align
+       bneq    l2525
+       addl2   $2,r0           #if so append it
+l2525:
        addl3   r0,sp,r4        #r4 has new stack addr
        ashl    $3,r0,r0        #r0 has number of bits in set
        mnegl   $1,r1           #will init r1 to zero
        addl3   r0,sp,r4        #r4 has new stack addr
        ashl    $3,r0,r0        #r0 has number of bits in set
        mnegl   $1,r1           #will init r1 to zero
@@ -71,24 +67,19 @@ l2521:
        movw    r1,-(sp)        #put answer on stack
        jmp     (r8)
 _CTTOT:
        movw    r1,-(sp)        #put answer on stack
        jmp     (r8)
 _CTTOT:
-       cvtbl   (r10)+,-(sp)
+       cvtbl   (r10)+,r0
        bneq    l2513
        bneq    l2513
-       cvtwl   (r10)+,(sp)
+       movzwl  (r10)+,r0
 l2513:
 l2513:
-       cvtwl   (r10)+,-(sp)
-       cvtwl   (r10)+,-(sp)
-       calls   $4,_pcttot
-       movw    r0,sp
+       pushal  -4(sp)[r0]
+       calls   r0,_cttot
        jmp     (r8)
 _IN:
        cvtbl   (r10)+,r0
        bneq    l2514
        jmp     (r8)
 _IN:
        cvtbl   (r10)+,r0
        bneq    l2514
-       cvtwl   (r10)+,r0       #r0 has size of set
+       movzwl  (r10)+,r0       #r0 has size of set
 l2514:
 l2514:
-       blbc    r0,l2515
-       incl    r0
-l2515:
-       cvtwl   (sp)+,r1        #r1 has set index
+       movl    (sp)+,r1        #r1 has set index
        addl3   r0,sp,r4        #r4 points to new top of stack
        subw2   (r10)+,r1       #check below lower
        blssu   l2516
        addl3   r0,sp,r4        #r4 points to new top of stack
        subw2   (r10)+,r1       #check below lower
        blssu   l2516
@@ -105,21 +96,10 @@ l2517:
        clrw    -(sp)
        jmp     (r8)
 _INCT:
        clrw    -(sp)
        jmp     (r8)
 _INCT:
-       incl    r10
-       cvtwl   (sp)+,r0        #r0 has value to find
-       cvtwl   (sp)+,r1        #r1 has pair count
+       cvtbl   (r10)+,r0
+       bneq    l2518
+       movzwl  (r10)+,r0       #r0 has number of elements
 l2518:
 l2518:
-       cmpw    r0,(sp)+
-       blss    l2519
-       cmpw    r0,(sp)+
-       bgtr    l2520
-       decl    r1
-       moval   (sp)[r1],sp     #clear off remaining data on stack
-       movw    $1,-(sp)        #success
-       jmp     (r8)
-l2519:
-       addl2   $2,sp
-l2520:
-       sobgtr  r1,l2518
-       clrw    -(sp)           #failure
+       calls   r0,_inct
+       movw    r0,-(sp)
        jmp     (r8)
        jmp     (r8)