Add original unix v6
This commit is contained in:
@@ -0,0 +1,106 @@
|
||||
/ rmdir -- unlink directory
|
||||
|
||||
mov (sp)+,r5
|
||||
tst (sp)+
|
||||
|
||||
loop:
|
||||
dec r5
|
||||
ble done
|
||||
mov (sp)+,r1
|
||||
mov $name,r2
|
||||
clr r0
|
||||
1:
|
||||
inc r0
|
||||
movb (r1)+,(r2)+
|
||||
bne 1b
|
||||
dec r2
|
||||
dec r0
|
||||
mov r0,size
|
||||
cmp r2,$name
|
||||
beq error
|
||||
sys stat; name; stbuf
|
||||
bes error
|
||||
bic $!60000,stbuf+4
|
||||
cmp $40000,stbuf+4
|
||||
bne error
|
||||
cmpb -1(r2),$'.
|
||||
bne 1f
|
||||
cmp r2,$name+1
|
||||
beq error
|
||||
cmpb -2(r2),$'/
|
||||
beq error
|
||||
cmpb -2(r2),$'.
|
||||
bne 1f
|
||||
cmp r2,$name+2
|
||||
beq error
|
||||
cmpb -3(r2),$'/
|
||||
beq error
|
||||
1:
|
||||
sys open; name; 0
|
||||
bes error
|
||||
mov r0,r1
|
||||
1:
|
||||
mov r1,r0
|
||||
sys read; stbuf; 16.
|
||||
bes 1f
|
||||
tst r0
|
||||
beq 1f
|
||||
tst stbuf
|
||||
beq 1b
|
||||
cmpb stbuf+2,$'.
|
||||
bne error1
|
||||
tstb stbuf+3
|
||||
beq 1b
|
||||
cmpb stbuf+3,$'.
|
||||
bne error1
|
||||
tstb stbuf+4
|
||||
beq 1b
|
||||
|
||||
error1:
|
||||
jsr pc,prname
|
||||
mov r1,r0
|
||||
sys close
|
||||
mov $1,r0
|
||||
sys write; mes1; emes1-mes1
|
||||
br loop
|
||||
|
||||
1:
|
||||
mov r1,r0
|
||||
sys close
|
||||
movb $'/,(r2)+
|
||||
movb $'.,(r2)+
|
||||
movb $'.,(r2)+
|
||||
clrb (r2)
|
||||
sys unlink; name
|
||||
clrb -(r2)
|
||||
sys unlink; name
|
||||
clrb -2(r2)
|
||||
sys unlink; name
|
||||
br loop
|
||||
|
||||
error:
|
||||
jsr pc,prname
|
||||
mov $1,r0
|
||||
sys write; mes2; emes2-mes2
|
||||
br loop
|
||||
|
||||
prname:
|
||||
mov $1,r0
|
||||
sys write; name; size:..
|
||||
rts pc
|
||||
|
||||
done:
|
||||
sys exit
|
||||
|
||||
mes1:
|
||||
< -- directory not empty\n>
|
||||
emes1:
|
||||
mes2:
|
||||
< ?\n>
|
||||
emes2:
|
||||
.even
|
||||
|
||||
.bss
|
||||
name: .=.+40.
|
||||
stbuf: .=.+40.
|
||||
|
||||
Reference in New Issue
Block a user