Add original unix v6
This commit is contained in:
@@ -0,0 +1,186 @@
|
||||
/ time -- prints out system times
|
||||
|
||||
times = 43.
|
||||
|
||||
cmp (sp),$1
|
||||
bgt 1f
|
||||
sys exit
|
||||
1:
|
||||
sys time
|
||||
mov r1,ltbuf
|
||||
jsr pc,execarg
|
||||
sys time
|
||||
sub ltbuf,r1
|
||||
sys times; ltbuf
|
||||
mov r1,r0
|
||||
mul $60.,r0
|
||||
mov r0,ltbuf
|
||||
mov r1,ltbuf+2
|
||||
jsr r5,mesg; <\nreal\0>; .even
|
||||
mov $ltbuf,r2
|
||||
jsr r5,ptime
|
||||
jsr r5,mesg; <user\0>; .even
|
||||
jsr r5,ptime
|
||||
jsr r5,mesg; <sys \0>; .even
|
||||
jsr r5,ptime
|
||||
sys exit
|
||||
|
||||
execarg:
|
||||
sys fork
|
||||
br newproc
|
||||
bec 2f
|
||||
jsr r5,mesg; <Try again.\n\0>; .even
|
||||
sys exit
|
||||
2:
|
||||
mov r0,r2
|
||||
sys signal; 2; 1
|
||||
2:
|
||||
sys wait
|
||||
cmp r0,r2
|
||||
bne 2b
|
||||
bit $377,r1
|
||||
beq 1f
|
||||
jsr r5,mesg; <Command terminated abnormally.\n\0>; .even
|
||||
clr r0
|
||||
sys seek; 0; 2
|
||||
1:
|
||||
rts pc
|
||||
|
||||
newproc:
|
||||
tst (sp)+
|
||||
mov (sp)+,r0
|
||||
tst (sp)+
|
||||
mov $ibuf,r1
|
||||
mov $end,r2
|
||||
1:
|
||||
mov (sp)+,r3
|
||||
mov r2,(r1)+
|
||||
2:
|
||||
movb (r3)+,(r2)+
|
||||
bne 2b
|
||||
dec r0
|
||||
cmp r0,$1
|
||||
bgt 1b
|
||||
clr (r1)+
|
||||
mov $end,r1
|
||||
sys exec; end; ibuf
|
||||
cmp $8,r0
|
||||
beq rcom
|
||||
mov $end-10.,r0
|
||||
mov $"x/,(r0)+
|
||||
mov $"us,(r0)+
|
||||
mov $"r/,(r0)+
|
||||
mov $"bi,(r0)+
|
||||
mov $"n/,(r0)+
|
||||
mov $end-5,r1
|
||||
sys exec; end-5; ibuf
|
||||
cmp $8,r0
|
||||
beq rcom
|
||||
mov $end-9,r1
|
||||
sys exec; end-9.; ibuf
|
||||
cmp $8,r0
|
||||
bne 1f
|
||||
rcom:
|
||||
mov r1,ibuf
|
||||
mov $shname+5,ibuf-2
|
||||
sys exec ; shname ; ibuf-2
|
||||
1:
|
||||
jsr r5,mesg; <Command not found.\n\0>; .even
|
||||
clr r0
|
||||
sys seek; 0; 2
|
||||
sys exit
|
||||
|
||||
printd:
|
||||
mov $tbuf+4,r4
|
||||
jsr r5,tdiv; 10.
|
||||
jsr r5,tdiv; 10.
|
||||
jsr r5,tdiv; 10.
|
||||
jsr r5,tdiv; 10.
|
||||
1:
|
||||
cmpb (r4),$'0
|
||||
bne 1f
|
||||
movb $' ,(r4)+
|
||||
cmp r4,$tbuf+3
|
||||
bne 1b
|
||||
1:
|
||||
mov $2,r0
|
||||
sys write; tbuf; 4
|
||||
rts pc
|
||||
|
||||
ptime:
|
||||
mov (r2)+,r0
|
||||
mov (r2)+,r1
|
||||
div $3600.,r0
|
||||
mov r0,-(sp)
|
||||
clr r0
|
||||
div $60.,r0
|
||||
mov r1,clicks
|
||||
mov $tbuf+9.,r4
|
||||
jsr r5,tdiv; 10.
|
||||
jsr r5,tdiv; 6.
|
||||
movb $':,-(r4)
|
||||
mov (sp)+,r0
|
||||
jsr r5,tdiv; 10.
|
||||
jsr r5,tdiv; 6.
|
||||
movb $':,-(r4)
|
||||
jsr r5,tdiv; 10.
|
||||
jsr r5,tdiv; 10.
|
||||
jsr r5,tdiv; 10.
|
||||
1:
|
||||
cmpb (r4),$'0
|
||||
beq 2f
|
||||
cmpb (r4),$':
|
||||
bne 1f
|
||||
2:
|
||||
movb $' ,(r4)+
|
||||
cmp r4,$tbuf+8.
|
||||
bne 1b
|
||||
1:
|
||||
mov $2,r0
|
||||
sys write; tbuf; 9.
|
||||
jsr r5,mesg; <.\0>; .even
|
||||
mov clicks,r1
|
||||
clr r0
|
||||
div $6,r0
|
||||
add $'0,r0
|
||||
mov r0,ch
|
||||
mov $2,r0
|
||||
sys write; ch; 1
|
||||
jsr r5,mesg; <\n\0>; .even
|
||||
rts r5
|
||||
|
||||
tdiv:
|
||||
mov r1,-(sp)
|
||||
mov r0,r1
|
||||
clr r0
|
||||
div (r5)+,r0
|
||||
add $'0,r1
|
||||
movb r1,-(r4)
|
||||
mov (sp)+,r1
|
||||
rts r5
|
||||
|
||||
mesg:
|
||||
movb (r5)+,ch
|
||||
beq 2f
|
||||
mov $2,r0
|
||||
sys write; ch; 1
|
||||
br mesg
|
||||
2:
|
||||
inc r5
|
||||
bic $1,r5
|
||||
rts r5
|
||||
|
||||
ch: .=.+1
|
||||
.even
|
||||
.bss
|
||||
|
||||
clicks: .=.+2
|
||||
.=.+2
|
||||
ibuf: .=.+50.
|
||||
tbuf: .=.+10.
|
||||
ltbuf: .=.+16.
|
||||
end: .=.+1000.
|
||||
|
||||
.data
|
||||
shname: </bin/sh\0>
|
||||
.even
|
||||
Reference in New Issue
Block a user