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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1.1
date     86.06.30.16.30.14;  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
@*       UNIFIED GENERAL PURPOSE BYTE MOVE OPERATION

	def     asm_fastmove,asm_movel,asm_mover,asm_moveleft,asm_moveright

length          equ     d0
delta           equ     d1

return          equ     a0
source          equ     a1
destination     equ     a2



asm_movel       equ *
asm_moveleft    equ *
	movea.l (sp)+,return
	move.l  (sp)+,length
	ble.s   nonpos                  length must be > 0
	movea.l (sp)+,destination
	movea.l (sp)+,source
	bra.s   left

asm_mover       equ *
asm_moveright   equ *
	movea.l (sp)+,return
	move.l  (sp)+,length
	ble.s   nonpos                  length must be > 0
	movea.l (sp)+,destination
	movea.l (sp)+,source
	bra.s   right

asm_fastmove    equ *
	movea.l (sp)+,return
	move.l  (sp)+,length
	bgt.s   pos                     length must be > 0
nonpos  addq    #8,sp
	jmp     (return)
pos     movea.l (sp)+,destination
	movea.l (sp)+,source

	cmpa.l  source,destination      test direction
	bhi.s   right
	beq.s   done

left    move    source,d1               copies for testing oddness
	move    destination,d2

	lsr     #1,d1           test source address
	bcc.s   l1
	lsr     #1,d2           source odd, test destination
	bcc.s   slowleft        source odd, destination even, worst case
	move.b  (source)+,(destination)+        both odd, move 1 initial byte
	subq.l  #1,length
	bgt.s   fastleft
	jmp     (return)

l1      lsr     #1,d2           source even, test destination
	bcs.s   slowleft        source even, destination odd, worst case

* both source and destination addresses even, word moves possible

fastleft moveq  #32,delta
	sub.l   delta,length
	blt.s   ll1
lloop1  movem.l (source)+,d2-d7/a3-a4           move 32 byte chunks
	movem.l d2-d7/a3-a4,(destination)
	adda    delta,destination
	sub.l   delta,length
	bge.s   lloop1

ll1     add     #28,length
	blt.s   ll2
lloop2  move.l  (source)+,(destination)+        move 4 byte chunks
	subq    #4,length
	bge.s   lloop2

ll2     addq    #2,length
	blt.s   ll3
	move.w  (source)+,(destination)+        move 2 bytes

ll3     lsr     #1,length
	bcc.s   done
	move.b  (source)+,(destination)+        move odd byte

done    jmp     (return)

lloop3  move.b  (source)+,(destination)+        bytes not on word boundaries
slowleft dbra   length,lloop3
	sub.l   #65536,length
	bcc.s   lloop3
	jmp     (return)


right   adda.l  length,source
	adda.l  length,destination

	move    source,d1               copies for testing oddness
	move    destination,d2

	lsr     #1,d1           test source address
	bcc.s   r1
	lsr     #1,d2           source odd, test destination
	bcc.s   slowright       source odd, destination even, worst case
	move.b  -(source),-(destination)        both odd, move 1 initial byte
	subq.l  #1,length
	bgt.s   fastright
	jmp     (return)

r1      lsr     #1,d2           source even, test destination
	bcs.s   slowright       source even, destination odd, worst case

* both source and destination addresses even, word moves possible

fastright moveq #32,delta
	sub.l   delta,length
	blt.s   rr1
rloop1  suba    delta,source
	movem.l (source),d2-d7/a3-a4            move 32 byte chunks
	movem.l d2-d7/a3-a4,-(destination)
	sub.l   delta,length
	bge.s   rloop1

rr1     add     #28,length
	blt.s   rr2
rloop2  move.l  -(source),-(destination)        move 4 byte chunks
	subq    #4,length
	bge.s   rloop2

rr2     addq    #2,length
	blt.s   rr3
	move.w  -(source),-(destination)        move 2 bytes

rr3     lsr     #1,length
	bcc.s   done
	move.b  -(source),-(destination)        move odd byte
	jmp     (return)

rloop3  move.b  -(source),-(destination)        bytes not on word boundaries
slowright dbra  length,rloop3
	sub.l   #65536,length
	bcc.s   rloop3
	jmp     (return)

	nosyms
	end


@


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


56.1
log
@Automatic bump of revision number for PWS version 3.25
@
text
@a0 147
*       UNIFIED GENERAL PURPOSE BYTE MOVE OPERATION

	def     asm_fastmove,asm_movel,asm_mover,asm_moveleft,asm_moveright

length          equ     d0
delta           equ     d1

return          equ     a0
source          equ     a1
destination     equ     a2



asm_movel       equ *
asm_moveleft    equ *
	movea.l (sp)+,return
	move.l  (sp)+,length
	ble.s   nonpos                  length must be > 0
	movea.l (sp)+,destination
	movea.l (sp)+,source
	bra.s   left

asm_mover       equ *
asm_moveright   equ *
	movea.l (sp)+,return
	move.l  (sp)+,length
	ble.s   nonpos                  length must be > 0
	movea.l (sp)+,destination
	movea.l (sp)+,source
	bra.s   right

asm_fastmove    equ *
	movea.l (sp)+,return
	move.l  (sp)+,length
	bgt.s   pos                     length must be > 0
nonpos  addq    #8,sp
	jmp     (return)
pos     movea.l (sp)+,destination
	movea.l (sp)+,source

	cmpa.l  source,destination      test direction
	bhi.s   right
	beq.s   done

left    move    source,d1               copies for testing oddness
	move    destination,d2

	lsr     #1,d1           test source address
	bcc.s   l1
	lsr     #1,d2           source odd, test destination
	bcc.s   slowleft        source odd, destination even, worst case
	move.b  (source)+,(destination)+        both odd, move 1 initial byte
	subq.l  #1,length
	bgt.s   fastleft
	jmp     (return)

l1      lsr     #1,d2           source even, test destination
	bcs.s   slowleft        source even, destination odd, worst case

* both source and destination addresses even, word moves possible

fastleft moveq  #32,delta
	sub.l   delta,length
	blt.s   ll1
lloop1  movem.l (source)+,d2-d7/a3-a4           move 32 byte chunks
	movem.l d2-d7/a3-a4,(destination)
	adda    delta,destination
	sub.l   delta,length
	bge.s   lloop1

ll1     add     #28,length
	blt.s   ll2
lloop2  move.l  (source)+,(destination)+        move 4 byte chunks
	subq    #4,length
	bge.s   lloop2

ll2     addq    #2,length
	blt.s   ll3
	move.w  (source)+,(destination)+        move 2 bytes

ll3     lsr     #1,length
	bcc.s   done
	move.b  (source)+,(destination)+        move odd byte

done    jmp     (return)

lloop3  move.b  (source)+,(destination)+        bytes not on word boundaries
slowleft dbra   length,lloop3
	sub.l   #65536,length
	bcc.s   lloop3
	jmp     (return)


right   adda.l  length,source
	adda.l  length,destination

	move    source,d1               copies for testing oddness
	move    destination,d2

	lsr     #1,d1           test source address
	bcc.s   r1
	lsr     #1,d2           source odd, test destination
	bcc.s   slowright       source odd, destination even, worst case
	move.b  -(source),-(destination)        both odd, move 1 initial byte
	subq.l  #1,length
	bgt.s   fastright
	jmp     (return)

r1      lsr     #1,d2           source even, test destination
	bcs.s   slowright       source even, destination odd, worst case

* both source and destination addresses even, word moves possible

fastright moveq #32,delta
	sub.l   delta,length
	blt.s   rr1
rloop1  suba    delta,source
	movem.l (source),d2-d7/a3-a4            move 32 byte chunks
	movem.l d2-d7/a3-a4,-(destination)
	sub.l   delta,length
	bge.s   rloop1

rr1     add     #28,length
	blt.s   rr2
rloop2  move.l  -(source),-(destination)        move 4 byte chunks
	subq    #4,length
	bge.s   rloop2

rr2     addq    #2,length
	blt.s   rr3
	move.w  -(source),-(destination)        move 2 bytes

rr3     lsr     #1,length
	bcc.s   done
	move.b  -(source),-(destination)        move odd byte
	jmp     (return)

rloop3  move.b  -(source),-(destination)        bytes not on word boundaries
slowright dbra  length,rloop3
	sub.l   #65536,length
	bcc.s   rloop3
	jmp     (return)

	nosyms
	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 10:27:27 MDT 1991
@
text
@@


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


54.1
log
@Automatic bump of revision number for PWS version 3.24
@
text
@a0 147
*       UNIFIED GENERAL PURPOSE BYTE MOVE OPERATION

	def     asm_fastmove,asm_movel,asm_mover,asm_moveleft,asm_moveright

length          equ     d0
delta           equ     d1

return          equ     a0
source          equ     a1
destination     equ     a2



asm_movel       equ *
asm_moveleft    equ *
	movea.l (sp)+,return
	move.l  (sp)+,length
	ble.s   nonpos                  length must be > 0
	movea.l (sp)+,destination
	movea.l (sp)+,source
	bra.s   left

asm_mover       equ *
asm_moveright   equ *
	movea.l (sp)+,return
	move.l  (sp)+,length
	ble.s   nonpos                  length must be > 0
	movea.l (sp)+,destination
	movea.l (sp)+,source
	bra.s   right

asm_fastmove    equ *
	movea.l (sp)+,return
	move.l  (sp)+,length
	bgt.s   pos                     length must be > 0
nonpos  addq    #8,sp
	jmp     (return)
pos     movea.l (sp)+,destination
	movea.l (sp)+,source

	cmpa.l  source,destination      test direction
	bhi.s   right
	beq.s   done

left    move    source,d1               copies for testing oddness
	move    destination,d2

	lsr     #1,d1           test source address
	bcc.s   l1
	lsr     #1,d2           source odd, test destination
	bcc.s   slowleft        source odd, destination even, worst case
	move.b  (source)+,(destination)+        both odd, move 1 initial byte
	subq.l  #1,length
	bgt.s   fastleft
	jmp     (return)

l1      lsr     #1,d2           source even, test destination
	bcs.s   slowleft        source even, destination odd, worst case

* both source and destination addresses even, word moves possible

fastleft moveq  #32,delta
	sub.l   delta,length
	blt.s   ll1
lloop1  movem.l (source)+,d2-d7/a3-a4           move 32 byte chunks
	movem.l d2-d7/a3-a4,(destination)
	adda    delta,destination
	sub.l   delta,length
	bge.s   lloop1

ll1     add     #28,length
	blt.s   ll2
lloop2  move.l  (source)+,(destination)+        move 4 byte chunks
	subq    #4,length
	bge.s   lloop2

ll2     addq    #2,length
	blt.s   ll3
	move.w  (source)+,(destination)+        move 2 bytes

ll3     lsr     #1,length
	bcc.s   done
	move.b  (source)+,(destination)+        move odd byte

done    jmp     (return)

lloop3  move.b  (source)+,(destination)+        bytes not on word boundaries
slowleft dbra   length,lloop3
	sub.l   #65536,length
	bcc.s   lloop3
	jmp     (return)


right   adda.l  length,source
	adda.l  length,destination

	move    source,d1               copies for testing oddness
	move    destination,d2

	lsr     #1,d1           test source address
	bcc.s   r1
	lsr     #1,d2           source odd, test destination
	bcc.s   slowright       source odd, destination even, worst case
	move.b  -(source),-(destination)        both odd, move 1 initial byte
	subq.l  #1,length
	bgt.s   fastright
	jmp     (return)

r1      lsr     #1,d2           source even, test destination
	bcs.s   slowright       source even, destination odd, worst case

* both source and destination addresses even, word moves possible

fastright moveq #32,delta
	sub.l   delta,length
	blt.s   rr1
rloop1  suba    delta,source
	movem.l (source),d2-d7/a3-a4            move 32 byte chunks
	movem.l d2-d7/a3-a4,-(destination)
	sub.l   delta,length
	bge.s   rloop1

rr1     add     #28,length
	blt.s   rr2
rloop2  move.l  -(source),-(destination)        move 4 byte chunks
	subq    #4,length
	bge.s   rloop2

rr2     addq    #2,length
	blt.s   rr3
	move.w  -(source),-(destination)        move 2 bytes

rr3     lsr     #1,length
	bcc.s   done
	move.b  -(source),-(destination)        move odd byte
	jmp     (return)

rloop3  move.b  -(source),-(destination)        bytes not on word boundaries
slowright dbra  length,rloop3
	sub.l   #65536,length
	bcc.s   rloop3
	jmp     (return)

	nosyms
	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
@@
