V5/usr/source/s2/msh.s

Compare this file to the similar file:
Show the results in this format:

/ ms -- mini-shell

	mov	$sbuf,r1
	mov	$cbuf,r2
	clr	r3
	jsr	pc,nonblank
	cmp	r0,$'\n
	bne	loop
	sys	exit

loop:
	mov	r1,(r2)+
1:
	movb	r0,(r1)+
	jsr	pc,getc
	cmp	r0,$' /
	beq	1f
	cmp	r0,$'\n
	beq	go
	br	1b
1:
	clrb	(r1)+
	jsr	pc,nonblank
	cmp	r0,$'\n
	beq	go
	br	loop

go:
	clr	(r2)+
	tst	r3	/ to call glob
	bne	1f
	sys	exec; sbuf; cbuf
	mov	$bn,r0
	mov	$"/b,(r0)+
	mov	$"in,(r0)+
	movb	$'/,(r0)+
	sys	exec; bn; cbuf
	mov	$usr,r0
	mov	$"/u,(r0)+
	mov	$"sr,(r0)+
	sys	exec; usr; cbuf
	br	error
1:
	mov	$gl,cbuf-2
	sys	exec; gl; cbuf-2

error:
	mov	$1,r0
	sys	write; 1f; 2
	sys	exit
1:	<?\n>

nonblank:
	jsr	pc,getc
	cmp	r0,$' /
	beq	nonblank
	rts	pc

getc:
	clr	r0
	sys	read; ch; 1
	bes	1f
	tst	r0
	beq	1f
	movb	ch,r0
	cmp	r0,$'?
	beq	3f
	cmp	r0,$'*
	beq	3f
	cmp	r0,$'[
	bne	2f
3:
	inc	r3
2:
	rts	pc
1:
	sys	exit

ch:	.=.+1
gl:	</etc/glob\0>
	.even

.bss
usr:	.=.+4		/ room for /usr
bn:	.=.+5		/ room for /bin/
sbuf:	.=.+1000.
	.even
	.=.+2	/ slot for ptr to glob
cbuf:	.=.+20.