Research V2 development
[unix-history] / cmd / cmp.s
/ cmp -- compare files
cmp (sp)+,$3
beq 1f
jsr r5,mesg; <Usage: cmp arg1 arg2\n\0>; .even
sys exit
1:
tst (sp)+
mov (sp)+,0f
sys open; 0:..; 0
bec 1f
jsr r5,mesg; <Can't open arg1.\n\0>; .even
sys exit
1:
mov r0,f1
mov (sp)+,0f
sys open; 0:..; 0
bec 1f
jsr r5,mesg; <Can't open arg2.\n\0>; .even
sys exit
1:
mov r0,f2
clr r2
1:
jsr r5,getw; f1
bvs eof1
mov r0,r3
jsr r5,getw; f2
bvs eof2
cmp r0,r3
beq 2f
mov r0,r4
mov r2,r0
jsr pc,octal
jsr r5,mesg; <: \0>; .even
mov r3,r0
jsr pc,octal
jsr r5,mesg; < \0>;
mov r4,r0
jsr pc,octal
jsr r5,mesg; <\n\0>
2:
add $2,r2
br 1b
eof1:
jsr r5,getw; f2
bvs 1f
jsr r5,mesg; <EOF on arg1.\n\0>; .even
sys exit
1:
sys exit
eof2:
jsr r5,mesg; <EOF on arg2.\n\0>; .even
sys exit
mesg:
movb (r5)+,ch
beq 1f
mov $1,r0
sys write; ch; 1
br mesg
1:
inc r5
bic $1,r5
rts r5
getw:
mov (r5)+,r1
cmp 2(r1),$1
bne 1f
mov *4(r1),r0
bic $!377,r0
dec 2(r1)
rts r5
1:
sub $2,2(r1)
bge 1f
mov (r1),r0
mov r1,0f
add $6,0f
sys read; 0:..; 512.
mov r0,2(r1)
bne 2f
sev
rts r5
2:
mov r1,4(r1)
add $6,4(r1)
sub $2,2(r1)
1:
mov *4(r1),r0
add $2,4(r1)
rts r5
octal:
mov r4,-(sp)
mov r0,r5
mov $6,-(sp)
1:
clr r4
alsc $1,r4
cmp (sp),$6
beq 2f
alsc $2,r4
2:
add $'0,r4
mov r4,ch
mov $1,r0
sys write; ch; 1
dec (sp)
bne 1b
tst (sp)+
mov (sp)+,r4
rts pc
.bss
ch: .=.+2
f1: .=.+6; .=.+512.
f2: .=.+6; .=.+512.
*4(r1),r0
bic $!377,r0
dec 2(r1)
rts r5
1:
sub $2,2(r1)
bge 1f
mov (r1),r0
mov r1,0f
add $6,0f
sys read; 0:..