/ 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)+
	sys	exec; end; ibuf
	mov	$end-10.,r0
	mov	$"x/,(r0)+
	mov	$"us,(r0)+
	mov	$"r/,(r0)+
	mov	$"bi,(r0)+
	mov	$"n/,(r0)+
	sys	exec; end-5; ibuf
	sys	exec; end-9.; ibuf
	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
ibuf:	.=.+50.
tbuf:	.=.+10.
ltbuf:	.=.+16.
end:	.=.+1000.
