/ C library -- mount

/ error = mount(dev, file, flag)

.globl	_mount, cerror

_mount:
	mov	r5,-(sp)
	mov	sp,r5
	mov	4(sp),0f
	mov	6(sp),0f+2
	mov	8(sp),0f+4
	sys	0; 9f
	bec	1f
	jmp	cerror
1:
	clr	r0
	mov	(sp)+,r5
	rts	pc
.data
9:
	sys	mount; 0:..; ..; ..
= bufsiz;
	buf[0] = lowpc;
	buf[1] = highpc;
	buf[2] = cntsiz;
	sbuf = buf;
	buf =+ 3*(cntsiz+1);
	bufsiz =- 3*(cntsiz+1);
	if (bufsiz<=0)
		return;
	o = ((highpc - lowpc)>>1) & 077777;
	if(bufsiz < o)
		o = ldiv(bufsiz>>1, 0, o); else
		o = 077777;
	profi/ C library -- nargs

/ WARNING: this routine does not work
/ with user I&D space separate.
/ Moreover, due to a design botch in
/ the 11/45, it cannot be made to work
/ by adding mfpi instructions.

.globl	_nargs

_nargs:
	mov	r5,-(sp)
	mov	2(r5),r1		/ pc of caller of caller
	mov	sp,r5
	clr	r0
	cmp	-4(r1),jsrsd
	bne	8f
	mov	$2,r0
8:
	cmp	(r1),tsti
	bne	1f
	add	$2,r0
	br	2f
1:
	cmp	(r1),cmpi
	bne	1f
	add	$4,r0
	br	2f
1:
	cmp	(r1),addi
	bne	1f
	add	2(r1),r0
	br	2f
1:
	cmp	(r1),jmpi
	bne	1f
	add	2(r1),r1
	add	$4,r1
	br	8b
1:
	cmpb	1(r1),bri+1
	bne	2f
	mov	r0,-(sp)
	mov	(r1),r0
	swab	r0
	ash	$-7,r0
	add	r0,r1
	add	$2,r1
	mov	(sp)+,r0
	br	8b
2:
	asr	r0
	mov	(sp)+,r5
	rts	pc

.data
jsrsd:	jsr	pc,*$0
tsti:	tst	(sp)+
cmpi:	cmp	(sp)+,(sp)+
addi:	add	$0,sp
jmpi:	jmp	0
bri:	br	.
f caller
	mov	sp,r5
	clr	r0
	cmp	-4(r1),jsrsd
	bne	8f
	mov	$2,r0
8:
	cmp	(r1),tsti
	bne	1f
	add	$2,r0
	br	2f
1:
	cmp	(r1),cmpi
	bne	1f
	add	$4,r0
	br	2f
1:
	cmp	(r1),addi
	bne	1f
	add	2(r1),r0
	br	2f
1:
	cmp	(r1),jmpi
	bne	1f
	add	2(r1),r1
	add/ C library-- nice

/ error = nice(hownice)

.globl	_nice, cerror

_nice:
	mov	r5,-(sp)
	mov	sp,r5
	mov	4(sp),r0
	sys	nice
	bec	1f
	jmp	cerror
1:
	clr	r0
	mov	(sp)+,r5
	rts	pc
rsd:	jsr	pc,*$0
tsti:	tst	(sp)+
cmpi:	cmp	(sp)+,(sp)+
addi:	add	$0,sp
jmpi:	jmp	0
bri:	br	.
f caller
	mov	sp,r5
	clr	r0
	cmp	-4(r1),jsrsd
	bne	8f
	mov	$2,r0
8:
	cmp	(r1),tsti
	bne	1f
	add	$2,r0
	br	2f
1:
	cmp	(r1),cmpi
	bne	1f
	add	$4,r0
	br	2f
1:
	cmp	(r1),addi
	bne	1f
	add	2(r1),r0
	br	2f
1:
	cmp	(r1),jmpi
	bne	1f
	add	2(r1),r1
	addlong	itol();
struct
{
	int	high;
	int	low;
};
struct nlist
{
	int	name[4]; /* really char[8] */
	int	type;
	int	value;
};

nlist(name, list)
char *name;
struct nlist *list;
{
	register struct nlist *p, *q;
	int f, n, m;
	long lng;
	int buf[010];
	struct nlist space[100];

	for(p = list; p->name[0]; p++) {
		p->type = 0;
		p->