Research V2 release
[unix-history] / cmd / cmp.s
CommitLineData
ba369452
DR
1/ cmp -- compare files
2
3
4 cmp (sp)+,$3
5 beq 1f
6 jsr r5,mesg; <Usage: cmp arg1 arg2\n\0>; .even
7 sys exit
81:
9 tst (sp)+
10 mov (sp)+,0f
11 sys open; 0:..; 0
12 bec 1f
13 jsr r5,mesg; <Can't open arg1.\n\0>; .even
14 sys exit
151:
16 mov r0,f1
17 mov (sp)+,0f
18 sys open; 0:..; 0
19 bec 1f
20 jsr r5,mesg; <Can't open arg2.\n\0>; .even
21 sys exit
221:
23 mov r0,f2
24 clr r2
251:
26 jsr r5,getw; f1
27 bvs eof1
28 mov r0,r3
29 jsr r5,getw; f2
30 bvs eof2
31 cmp r0,r3
32 beq 2f
33 mov r0,r4
34 mov r2,r0
35 jsr pc,octal
36 jsr r5,mesg; <: \0>; .even
37 mov r3,r0
38 jsr pc,octal
39 jsr r5,mesg; < \0>;
40 mov r4,r0
41 jsr pc,octal
42 jsr r5,mesg; <\n\0>
432:
44 add $2,r2
45 br 1b
46eof1:
47 jsr r5,getw; f2
48 bvs 1f
49 jsr r5,mesg; <EOF on arg1.\n\0>; .even
50 sys exit
511:
52 sys exit
53
54eof2:
55 jsr r5,mesg; <EOF on arg2.\n\0>; .even
56 sys exit
57
58mesg:
59 movb (r5)+,ch
60 beq 1f
61 mov $1,r0
62 sys write; ch; 1
63 br mesg
641:
65 inc r5
66 bic $1,r5
67 rts r5
68
69getw:
70 mov (r5)+,r1
71 cmp 2(r1),$1
72 bne 1f
73 mov *4(r1),r0
74 bic $!377,r0
75 dec 2(r1)
76 rts r5
771:
78 sub $2,2(r1)
79 bge 1f
80 mov (r1),r0
81 mov r1,0f
82 add $6,0f
83 sys read; 0:..; 512.
84 mov r0,2(r1)
85 bne 2f
86 sev
87 rts r5
882:
89 mov r1,4(r1)
90 add $6,4(r1)
91 sub $2,2(r1)
921:
93 mov *4(r1),r0
94 add $2,4(r1)
95 rts r5
96
97octal:
98 mov r4,-(sp)
99 mov r0,r5
100 mov $6,-(sp)
1011:
102 clr r4
103 alsc $1,r4
104 cmp (sp),$6
105 beq 2f
106 alsc $2,r4
1072:
108 add $'0,r4
109 mov r4,ch
110 mov $1,r0
111 sys write; ch; 1
112 dec (sp)
113 bne 1b
114 tst (sp)+
115 mov (sp)+,r4
116 rts pc
117
118 .bss
119
120ch: .=.+2
121f1: .=.+6; .=.+512.
122f2: .=.+6; .=.+512.
123*4(r1),r0
124 bic $!377,r0
125 dec 2(r1)
126 rts r5
1271:
128 sub $2,2(r1)
129 bge 1f
130 mov (r1),r0
131 mov r1,0f
132 add $6,0f
133 sys read; 0:..