date and time created 86/11/16 15:33:49 by minshall
[unix-history] / usr / src / usr.bin / tn3270 / general / vaxbsubs.s
CommitLineData
8a547ac9
GM
1/*
2 * @(#)vaxbsubs.s 3.1 10/29/86
3 */
4
5/*
6 * Copyright (c) 1984, 1985, 1986 by the Regents of the
7 * University of California and by Gregory Glenn Minshall.
8 *
9 * Permission to use, copy, modify, and distribute these
10 * programs and their documentation for any purpose and
11 * without fee is hereby granted, provided that this
12 * copyright and permission appear on all copies and
13 * supporting documentation, the name of the Regents of
14 * the University of California not be used in advertising
15 * or publicity pertaining to distribution of the programs
16 * without specific prior permission, and notice be given in
17 * supporting documentation that copying and distribution is
18 * by permission of the Regents of the University of California
19 * and by Gregory Glenn Minshall. Neither the Regents of the
20 * University of California nor Gregory Glenn Minshall make
21 * representations about the suitability of this software
22 * for any purpose. It is provided "as is" without
23 * express or implied warranty.
24 */
25
26/* This is taken from bcmp.s from 4.2.
27 * The output of bunequal is the offset of the byte which didn't match;
28 * if all the bytes match, then we return n.
29 *
30 * BUGNOTE: This has no chance of working for lengths greater than 64K.
31 * (so, if you use this somewhere else, you may need to
32 * fix it...)
33 */
34
35/* bunequal(s1, s2, n) */
36
37#include "defs.h"
38
39ENTRY(bunequal)
40 movl 4(ap),r1
41 movl 8(ap),r3
42 movl 12(ap),r4
431:
44 movzwl $65535,r0
45 cmpl r4,r0
46 jleq 2f
47 subl2 r0,r4
48 cmpc3 r0,(r1),(r3)
49 jeql 1b
50 addl2 r4,r0
51 /* changes... */
52 subl3 r0,12(ap),r0
53 /* end of changes for bunequal... */
54 ret
552:
56 cmpc3 r4,(r1),(r3)
57 /* changes... */
58 subl3 r0,12(ap),r0
59 /* end of changes for bunequal... */
60 ret
61
62
63
64
65/* brand new code, using the above as base... */
66/* bskip(s1, n, b) : finds the first occurrence of any byte != 'b' in the 'n'
67 * bytes beginning at 's1'.
68 *
69 * BUGNOTE: This has no chance of working for lengths greater than 64K.
70 * (so, if you use this somewhere else, you may need to
71 * fix it...)
72 */
73
74ENTRY(bskip)
75 movl 4(ap),r1
76 movl 8(ap),r3
77 movl 12(ap),r4
781:
79 movzwl $65535,r0
80 cmpl r3,r0
81 jleq 2f
82 subl2 r0,r3
83 skpc r4,r0,(r1)
84 jeql 1b
85 addl2 r3,r0
86 subl3 r0,8(ap),r0
87 ret
882:
89 skpc r4,r3,(r1)
90 subl3 r0,8(ap),r0
91 ret