head     56.3;
access   paws bayes jws quist brad dew jwh;
symbols  ;
locks    ; strict;
comment  @# @;


56.3
date     93.01.27.13.21.00;  author jwh;  state Exp;
branches ;
next     56.2;

56.2
date     93.01.27.12.01.33;  author jwh;  state Exp;
branches ;
next     56.1;

56.1
date     91.11.05.09.40.37;  author jwh;  state Exp;
branches ;
next     55.1;

55.1
date     91.08.25.10.19.06;  author jwh;  state Exp;
branches ;
next     54.3;

54.3
date     91.08.21.12.36.35;  author jwh;  state Exp;
branches ;
next     54.2;

54.2
date     91.08.21.09.48.12;  author jwh;  state Exp;
branches ;
next     54.1;

54.1
date     91.03.18.15.24.20;  author jwh;  state Exp;
branches ;
next     53.1;

53.1
date     91.03.11.19.25.33;  author jwh;  state Exp;
branches ;
next     52.1;

52.1
date     91.02.19.09.09.18;  author jwh;  state Exp;
branches ;
next     51.1;

51.1
date     91.01.30.16.08.43;  author jwh;  state Exp;
branches ;
next     50.1;

50.1
date     90.10.29.16.23.44;  author jwh;  state Exp;
branches ;
next     49.1;

49.1
date     90.08.14.14.08.01;  author jwh;  state Exp;
branches ;
next     48.1;

48.1
date     90.07.26.11.13.59;  author jwh;  state Exp;
branches ;
next     47.1;

47.1
date     90.05.14.10.55.13;  author dew;  state Exp;
branches ;
next     46.1;

46.1
date     90.05.07.08.41.58;  author jwh;  state Exp;
branches ;
next     45.1;

45.1
date     90.04.19.15.49.22;  author jwh;  state Exp;
branches ;
next     44.1;

44.1
date     90.04.01.22.07.03;  author jwh;  state Exp;
branches ;
next     43.1;

43.1
date     90.03.20.13.58.05;  author jwh;  state Exp;
branches ;
next     42.1;

42.1
date     90.01.23.17.42.31;  author jwh;  state Exp;
branches ;
next     41.1;

41.1
date     89.12.22.11.25.31;  author jwh;  state Exp;
branches ;
next     40.1;

40.1
date     89.09.29.11.47.57;  author jwh;  state Exp;
branches ;
next     39.1;

39.1
date     89.09.26.16.32.31;  author dew;  state Exp;
branches ;
next     38.1;

38.1
date     89.08.29.11.24.01;  author jwh;  state Exp;
branches ;
next     37.1;

37.1
date     89.05.12.11.36.53;  author dew;  state Exp;
branches ;
next     36.1;

36.1
date     89.02.06.10.15.33;  author dew;  state Exp;
branches ;
next     35.1;

35.1
date     89.02.02.13.28.55;  author dew;  state Exp;
branches ;
next     34.1;

34.1
date     89.01.23.16.04.07;  author jwh;  state Exp;
branches ;
next     33.1;

33.1
date     89.01.16.11.37.29;  author dew;  state Exp;
branches ;
next     32.1;

32.1
date     89.01.10.11.44.50;  author bayes;  state Exp;
branches ;
next     31.1;

31.1
date     88.12.14.18.05.59;  author bayes;  state Exp;
branches ;
next     30.1;

30.1
date     88.12.09.13.43.33;  author dew;  state Exp;
branches ;
next     29.1;

29.1
date     88.10.31.15.28.02;  author bayes;  state Exp;
branches ;
next     28.1;

28.1
date     88.10.06.10.56.05;  author dew;  state Exp;
branches ;
next     27.1;

27.1
date     88.09.29.11.25.32;  author bayes;  state Exp;
branches ;
next     26.1;

26.1
date     88.09.28.13.05.03;  author bayes;  state Exp;
branches ;
next     25.1;

25.1
date     88.03.02.09.22.48;  author bayes;  state Exp;
branches ;
next     24.1;

24.1
date     87.08.31.09.40.57;  author jws;  state Exp;
branches ;
next     23.1;

23.1
date     87.08.26.10.17.46;  author bayes;  state Exp;
branches ;
next     22.1;

22.1
date     87.08.17.11.01.43;  author bayes;  state Exp;
branches ;
next     21.1;

21.1
date     87.08.12.13.46.16;  author bayes;  state Exp;
branches ;
next     20.1;

20.1
date     87.07.30.10.59.07;  author bayes;  state Exp;
branches ;
next     19.1;

19.1
date     87.06.01.08.15.18;  author jws;  state Exp;
branches ;
next     18.1;

18.1
date     87.05.20.15.10.59;  author bayes;  state Exp;
branches ;
next     17.1;

17.1
date     87.04.30.10.26.38;  author jws;  state Exp;
branches ;
next     16.1;

16.1
date     87.04.26.15.39.17;  author jws;  state Exp;
branches ;
next     15.1;

15.1
date     87.04.13.09.12.13;  author jws;  state Exp;
branches ;
next     14.1;

14.1
date     87.04.01.15.14.27;  author jws;  state Exp;
branches ;
next     13.1;

13.1
date     87.02.28.18.25.28;  author jws;  state Exp;
branches ;
next     12.1;

12.1
date     87.02.02.13.15.12;  author jws;  state Exp;
branches ;
next     11.1;

11.1
date     87.01.19.09.41.08;  author jws;  state Exp;
branches ;
next     10.1;

10.1
date     86.12.24.10.48.32;  author jws;  state Exp;
branches ;
next     9.1;

9.1
date     86.12.12.14.25.25;  author bayes;  state Exp;
branches ;
next     8.1;

8.1
date     86.11.27.11.46.01;  author jws;  state Exp;
branches ;
next     7.1;

7.1
date     86.11.20.13.34.55;  author hal;  state Exp;
branches ;
next     6.1;

6.1
date     86.11.04.17.45.17;  author paws;  state Exp;
branches ;
next     5.1;

5.1
date     86.10.28.16.32.24;  author hal;  state Exp;
branches ;
next     4.1;

4.1
date     86.09.30.19.38.00;  author hal;  state Exp;
branches ;
next     3.1;

3.1
date     86.09.01.11.47.35;  author hal;  state Exp;
branches ;
next     2.1;

2.1
date     86.07.30.14.33.18;  author hal;  state Exp;
branches ;
next     1.1;

1.1
date     86.06.30.14.30.10;  author danm;  state tmp;
branches ;
next     ;


desc
@Base file for PWS 3.2 release.

@


56.3
log
@
pws2rcs automatic delta on Wed Jan 27 13:14:25 MST 1993
@
text
@*------------------------------------------
	    DEF asm_SETASSIGN
*------------------------------------------
asm_SETASSIGN    EQU *
* obtain sets from stack
	    movea.l    4(sp),a3          address of source
	    movea.l    8(sp),a4          address of dest
* place size in d7
	    move.w     (a3)+,d7          size of source
	    move.w     d7,(a4)           store size in dest
	    beq.s      done2             check for zero length set
	    move.w     12(sp),d0         dest min
	    beq.s      testhigh
	    moveq      #0,d2             zero count
	    move.w     d7,d3
	    movea.l    a3,a2
loop1       tst.b      (a2)+             find nonzero byte
	    bne.s      NZbyte
	    addq.w     #1,d2
	    subq.w     #1,d3
	    bgt.s      loop1

	    clr.w      (a4)
	    bra.s      done2

NZbyte      lsl.w      #3,d2             byte count * 8
	    cmp.w      d2,d0
	    ble.s      testhigh

	    move.b     -1(a2),d3         get first nonzero byte
loop2       lsl.b      #1,d3
	    bcs.s      NZbit             nonzero bit found
	    addq.w     #1,d2
	    bra.s      loop2

NZbit       cmp.w      d2,d0
	    ble.s      testhigh
	    trap       #7                error

testhigh    move.w     14(sp),d1         dest max
lastword    move.w     -2(a3,d7.w),d3    get last word of set
	    bne.s      NZword
	    subq.w     #2,d7
	    bgt.s      lastword
	    clr.w      (a4)              set was empty
	    bra.s      done2

NZword      move.w     d7,d2
	    lsl.w      #3,d2             byte count * 8
loop3       subq.w     #1,d2
	    lsr.w      #1,d3
	    bcc.s      loop3

	    cmp.w      d2,d1             last nonzero bit found
	    bge.s      ok
	    trap       #7                error
* perform assignment
ok          move.w     d7,(a4)+           store size in dest
	    asr.w      #2,d7              determine size in long words
	    bcc.s        evenn              even number of long words
	    move.w     (a3)+,(a4)+        move "odd" word
	    tst.w      d7                 min size single word?
	    beq.s        done2
EVENN       move.l     (a3)+,(a4)+        move long words
	    subq.w     #1,d7
	    bgt.s        evenn
DONE2       movea.l    (sp)+,a0            eliminate extra bytes in stack
	    adda.l     #12,sp
	    jmp        (a0)
	    page
*------------------------------------------
	   DEF asm_aDELEMENT
*------------------------------------------
asm_aDELEMENT EQU         *
	movea.l         (sp)+,a0         return address
	move.l          (sp)+,d0        element number to add to set
	cmpi.l          #255,d0
	bls.s           strt
	    trap    #7
strt    movea.l         (sp)+,a1        source address
	movea.l         (sp),a2         destination address
	move.w          (a1)+,d7        get set size of source
	move.w          d7,(a2)+        store size value
	cmpa.l          a2,a1           see if source and destination are equal
	beq.s           insert
* copy source set to the destination set
setcopy movea.l         a2,a3           save destination address
	move.w          d7,d6           save size for destination
	ble.s           insert          check for size of zero
rept    move.w          (a1)+,(a3)+     sets are always an even number of bytes
	subq.w          #2,d6
	bgt.s           rept
* insert an element in a set, adjusting the size of the destination if needed
insert  ext.l           d0
	divs            #16,d0           byte offset in low word
	move.l          d0,d5
	swap            d5              bit offset from left of byte
	sub.w           #15,d5
	neg.w           d5              bit offset from right
	asl             #1,d0           make d0 a byte offset
	move.w          d0,d1           compute final size into d1
	addq.w          #2,d1           put zeros in the two bytes containing
	move.w          d1,d2           the new bit if it is beyond current size
	sub.w           -2(a2),d1
	ble.s           exxiit
	move.w          d2,-2(a2)       store appropriate size for set
	lea             0(a2,d2),a3
zerout  clr.w           -(a3)
	subq.w          #2,d1
	bgt.s           zerout
exxiit  bclr            #3,d5           { received upgrade 9/9 }
	beq.s           skiipp
	bset            d5,0(a2,d0)
	jmp             (a0)
skiipp  bset            d5,1(a2,d0)
	jmp             (a0)
*------------------------------------------
	end
@


56.2
log
@
pws2rcs automatic delta on Wed Jan 27 11:57:27 MST 1993
@
text
@d1 118
@


56.1
log
@Automatic bump of revision number for PWS version 3.25
@
text
@a0 118
*------------------------------------------
	    DEF asm_SETASSIGN
*------------------------------------------
asm_SETASSIGN    EQU *
* obtain sets from stack
	    movea.l    4(sp),a3          address of source
	    movea.l    8(sp),a4          address of dest
* place size in d7
	    move.w     (a3)+,d7          size of source
	    move.w     d7,(a4)           store size in dest
	    beq.s      done2             check for zero length set
	    move.w     12(sp),d0         dest min
	    beq.s      testhigh
	    moveq      #0,d2             zero count
	    move.w     d7,d3
	    movea.l    a3,a2
loop1       tst.b      (a2)+             find nonzero byte
	    bne.s      NZbyte
	    addq.w     #1,d2
	    subq.w     #1,d3
	    bgt.s      loop1

	    clr.w      (a4)
	    bra.s      done2

NZbyte      lsl.w      #3,d2             byte count * 8
	    cmp.w      d2,d0
	    ble.s      testhigh

	    move.b     -1(a2),d3         get first nonzero byte
loop2       lsl.b      #1,d3
	    bcs.s      NZbit             nonzero bit found
	    addq.w     #1,d2
	    bra.s      loop2

NZbit       cmp.w      d2,d0
	    ble.s      testhigh
	    trap       #7                error

testhigh    move.w     14(sp),d1         dest max
lastword    move.w     -2(a3,d7.w),d3    get last word of set
	    bne.s      NZword
	    subq.w     #2,d7
	    bgt.s      lastword
	    clr.w      (a4)              set was empty
	    bra.s      done2

NZword      move.w     d7,d2
	    lsl.w      #3,d2             byte count * 8
loop3       subq.w     #1,d2
	    lsr.w      #1,d3
	    bcc.s      loop3

	    cmp.w      d2,d1             last nonzero bit found
	    bge.s      ok
	    trap       #7                error
* perform assignment
ok          move.w     d7,(a4)+           store size in dest
	    asr.w      #2,d7              determine size in long words
	    bcc.s        evenn              even number of long words
	    move.w     (a3)+,(a4)+        move "odd" word
	    tst.w      d7                 min size single word?
	    beq.s        done2
EVENN       move.l     (a3)+,(a4)+        move long words
	    subq.w     #1,d7
	    bgt.s        evenn
DONE2       movea.l    (sp)+,a0            eliminate extra bytes in stack
	    adda.l     #12,sp
	    jmp        (a0)
	    page
*------------------------------------------
	   DEF asm_aDELEMENT
*------------------------------------------
asm_aDELEMENT EQU         *
	movea.l         (sp)+,a0         return address
	move.l          (sp)+,d0        element number to add to set
	cmpi.l          #255,d0
	bls.s           strt
	    trap    #7
strt    movea.l         (sp)+,a1        source address
	movea.l         (sp),a2         destination address
	move.w          (a1)+,d7        get set size of source
	move.w          d7,(a2)+        store size value
	cmpa.l          a2,a1           see if source and destination are equal
	beq.s           insert
* copy source set to the destination set
setcopy movea.l         a2,a3           save destination address
	move.w          d7,d6           save size for destination
	ble.s           insert          check for size of zero
rept    move.w          (a1)+,(a3)+     sets are always an even number of bytes
	subq.w          #2,d6
	bgt.s           rept
* insert an element in a set, adjusting the size of the destination if needed
insert  ext.l           d0
	divs            #16,d0           byte offset in low word
	move.l          d0,d5
	swap            d5              bit offset from left of byte
	sub.w           #15,d5
	neg.w           d5              bit offset from right
	asl             #1,d0           make d0 a byte offset
	move.w          d0,d1           compute final size into d1
	addq.w          #2,d1           put zeros in the two bytes containing
	move.w          d1,d2           the new bit if it is beyond current size
	sub.w           -2(a2),d1
	ble.s           exxiit
	move.w          d2,-2(a2)       store appropriate size for set
	lea             0(a2,d2),a3
zerout  clr.w           -(a3)
	subq.w          #2,d1
	bgt.s           zerout
exxiit  bclr            #3,d5           { received upgrade 9/9 }
	beq.s           skiipp
	bset            d5,0(a2,d0)
	jmp             (a0)
skiipp  bset            d5,1(a2,d0)
	jmp             (a0)
*------------------------------------------
	end
@


55.1
log
@Automatic bump of revision number for PWS version 3.25A
@
text
@@


54.3
log
@
pws2rcs automatic delta on Wed Aug 21 12:27:56 MDT 1991
@
text
@@


54.2
log
@
pws2rcs automatic delta on Wed Aug 21 09:35:48 MDT 1991
@
text
@d1 118
@


54.1
log
@Automatic bump of revision number for PWS version 3.24
@
text
@a0 118
*------------------------------------------
	    DEF asm_SETASSIGN
*------------------------------------------
asm_SETASSIGN    EQU *
* obtain sets from stack
	    movea.l    4(sp),a3          address of source
	    movea.l    8(sp),a4          address of dest
* place size in d7
	    move.w     (a3)+,d7          size of source
	    move.w     d7,(a4)           store size in dest
	    beq.s      done2             check for zero length set
	    move.w     12(sp),d0         dest min
	    beq.s      testhigh
	    moveq      #0,d2             zero count
	    move.w     d7,d3
	    movea.l    a3,a2
loop1       tst.b      (a2)+             find nonzero byte
	    bne.s      NZbyte
	    addq.w     #1,d2
	    subq.w     #1,d3
	    bgt.s      loop1

	    clr.w      (a4)
	    bra.s      done2

NZbyte      lsl.w      #3,d2             byte count * 8
	    cmp.w      d2,d0
	    ble.s      testhigh

	    move.b     -1(a2),d3         get first nonzero byte
loop2       lsl.b      #1,d3
	    bcs.s      NZbit             nonzero bit found
	    addq.w     #1,d2
	    bra.s      loop2

NZbit       cmp.w      d2,d0
	    ble.s      testhigh
	    trap       #7                error

testhigh    move.w     14(sp),d1         dest max
lastword    move.w     -2(a3,d7.w),d3    get last word of set
	    bne.s      NZword
	    subq.w     #2,d7
	    bgt.s      lastword
	    clr.w      (a4)              set was empty
	    bra.s      done2

NZword      move.w     d7,d2
	    lsl.w      #3,d2             byte count * 8
loop3       subq.w     #1,d2
	    lsr.w      #1,d3
	    bcc.s      loop3

	    cmp.w      d2,d1             last nonzero bit found
	    bge.s      ok
	    trap       #7                error
* perform assignment
ok          move.w     d7,(a4)+           store size in dest
	    asr.w      #2,d7              determine size in long words
	    bcc.s        evenn              even number of long words
	    move.w     (a3)+,(a4)+        move "odd" word
	    tst.w      d7                 min size single word?
	    beq.s        done2
EVENN       move.l     (a3)+,(a4)+        move long words
	    subq.w     #1,d7
	    bgt.s        evenn
DONE2       movea.l    (sp)+,a0            eliminate extra bytes in stack
	    adda.l     #12,sp
	    jmp        (a0)
	    page
*------------------------------------------
	   DEF asm_aDELEMENT
*------------------------------------------
asm_aDELEMENT EQU         *
	movea.l         (sp)+,a0         return address
	move.l          (sp)+,d0        element number to add to set
	cmpi.l          #255,d0
	bls.s           strt
	    trap    #7
strt    movea.l         (sp)+,a1        source address
	movea.l         (sp),a2         destination address
	move.w          (a1)+,d7        get set size of source
	move.w          d7,(a2)+        store size value
	cmpa.l          a2,a1           see if source and destination are equal
	beq.s           insert
* copy source set to the destination set
setcopy movea.l         a2,a3           save destination address
	move.w          d7,d6           save size for destination
	ble.s           insert          check for size of zero
rept    move.w          (a1)+,(a3)+     sets are always an even number of bytes
	subq.w          #2,d6
	bgt.s           rept
* insert an element in a set, adjusting the size of the destination if needed
insert  ext.l           d0
	divs            #16,d0           byte offset in low word
	move.l          d0,d5
	swap            d5              bit offset from left of byte
	sub.w           #15,d5
	neg.w           d5              bit offset from right
	asl             #1,d0           make d0 a byte offset
	move.w          d0,d1           compute final size into d1
	addq.w          #2,d1           put zeros in the two bytes containing
	move.w          d1,d2           the new bit if it is beyond current size
	sub.w           -2(a2),d1
	ble.s           exxiit
	move.w          d2,-2(a2)       store appropriate size for set
	lea             0(a2,d2),a3
zerout  clr.w           -(a3)
	subq.w          #2,d1
	bgt.s           zerout
exxiit  bclr            #3,d5           { received upgrade 9/9 }
	beq.s           skiipp
	bset            d5,0(a2,d0)
	jmp             (a0)
skiipp  bset            d5,1(a2,d0)
	jmp             (a0)
*------------------------------------------
	end
@


53.1
log
@Automatic bump of revision number for PWS version 3.24B
@
text
@@


52.1
log
@Automatic bump of revision number for PWS version 3.24A
@
text
@@


51.1
log
@Automatic bump of revision number for PWS version 3.24d
@
text
@@


50.1
log
@Automatic bump of revision number for PWS version 3.23c
@
text
@@


49.1
log
@Automatic bump of revision number for PWS version 3.24b
@
text
@@


48.1
log
@Automatic bump of revision number for PWS version 3.24a
@
text
@@


47.1
log
@Automatic bump of revision number for PWS version 3.23
@
text
@@


46.1
log
@Automatic bump of revision number for PWS version 3.23
@
text
@@


45.1
log
@Automatic bump of revision number for PWS version 3.23C
@
text
@@


44.1
log
@Automatic bump of revision number for PWS version 3.23B
@
text
@@


43.1
log
@Automatic bump of revision number for PWS version 3.23aA
@
text
@@


42.1
log
@Automatic bump of revision number for PWS version 3.23e
@
text
@@


41.1
log
@Automatic bump of revision number for PWS version 3.23d
@
text
@@


40.1
log
@Automatic bump of revision number for PWS version 3.23c
@
text
@@


39.1
log
@Automatic bump of revision number for PWS version 3.23b
@
text
@@


38.1
log
@Automatic bump of revision number for PWS version 3.23a
@
text
@@


37.1
log
@Automatic bump of revision number for PWS version 3.3a
@
text
@@


36.1
log
@Automatic bump of revision number for PWS version 3.22
@
text
@@


35.1
log
@Automatic bump of revision number for PWS version 3.22
@
text
@@


34.1
log
@Automatic bump of revision number for PWS version 3.22
@
text
@@


33.1
log
@Automatic bump of revision number for PWS version 3.22D
@
text
@@


32.1
log
@Automatic bump of revision number for PWS version 3.22C
@
text
@@


31.1
log
@Automatic bump of revision number for PWS version 3.22B
@
text
@@


30.1
log
@Automatic bump of revision number for PWS version 3.22A
@
text
@@


29.1
log
@Automatic bump of revision number for PWS version 3.22b
@
text
@@


28.1
log
@Automatic bump of revision number for PWS version 3.3b
@
text
@@


27.1
log
@Automatic bump of revision number for PWS version 3.3a
@
text
@@


26.1
log
@Automatic bump of revision number for PWS version 3.3 Synch
@
text
@@


25.1
log
@Automatic bump of revision number for PWS version 3.2Y
@
text
@@


24.1
log
@Automatic bump of revision number for PWS version 3.2
@
text
@@


23.1
log
@Automatic bump of revision number for PWS version 3.2P
@
text
@@


22.1
log
@Automatic bump of revision number for PWS version 3.2N
@
text
@@


21.1
log
@Automatic bump of revision number for PWS version 3.2M
@
text
@@


20.1
log
@Automatic bump of revision number for PWS version 3.2L
@
text
@@


19.1
log
@Automatic bump of revision number for PWS version 3.2K
@
text
@@


18.1
log
@Automatic bump of revision number for PWS version 3.2J
@
text
@@


17.1
log
@Automatic bump of revision number for PWS version 3.2I+
@
text
@@


16.1
log
@Automatic bump of revision number for PWS version 3.2I
@
text
@@


15.1
log
@Automatic bump of revision number for PWS version 3.2H
@
text
@@


14.1
log
@Automatic bump of revision number for PWS version 3.2G
@
text
@@


13.1
log
@Automatic bump of revision number for PWS version 3.2F
@
text
@@


12.1
log
@Automatic bump of revision number for PWS version 3.2E
@
text
@@


11.1
log
@Automatic bump of revision number for PWS version 3.2D
@
text
@@


10.1
log
@Automatic bump of revision number for PWS version 3.2C
@
text
@@


9.1
log
@Automatic bump of revision number for PWS version 3.2B
@
text
@@


8.1
log
@Automatic bump of revision number for PWS version 3.2A
@
text
@@


7.1
log
@Automatic bump of revision number for PWS version 3.2l
@
text
@@


6.1
log
@Automatic bump of revision number for PWS version 3.2k
@
text
@@


5.1
log
@Automatic bump of revision number for PWS version 3.2j
@
text
@@


4.1
log
@Automatic bump of revision number for PWS version 3.2i
@
text
@@


3.1
log
@Automatic bump of revision number for PWS version 3.2h
@
text
@@


2.1
log
@Auto bump rev number to 2.1 for sys 3.2e.
@
text
@@


1.1
log
@Initial revision
@
text
@@
