	clr	u.break
	mov	r5,sp / point sp to user's stack
	mov	$14,u.count
	mov	$u.off,u.fofp
	clr	u.off / set offset in file to be read to zero
	jsr	r0,readi / read in first six words of user's file, starting 
			 / at $core
	mov	sp,r5 / put users stack address in r5
	sub	$core+40.,r5 / subtract $core +40, from r5 (leaves
			     / number of words less 26 available for
			     / program in user core
	mov	r5,u.count /
	cmp	core,$405 / br .+14 is first instruction if file is
			  / standard a.out format
	bne	1f / branch, if not standard format
	mov	core+2,r5 / put 2nd word of users program in r5; number of
			  / bytes in program text
	sub	$14,r5 / subtract 12
	cmp	r5,u.count /
	bgt	1f / branch if r5 greater than u.count
	mov	r5,u.count
	jsr	r0,readi / read in rest of user's program text
	add	core+10,u.nread / add size of user data area to u.nread
	br	2f
1:
	jsr	r0,readi / read in rest of file
2:
	mov	u.nread,u.break / set users program break to end of 
				/ user code
	add	$core+14,u.break / plus data area
	jsr	r0,iclose / does nothing
	br	sysret3 / return to core image at $core
	
sysfstat: / set status of open file
	jsr	r0,arg; u.off / put buffer address in u.off
	mov	u.off,-(sp) / put buffer address on the stack
	mov	*u.r0,r1 / put file descriptor in r1
	jsr	r0,getf / get the files i-number
	tst	r1 / is it 0?
	beq	error3 / yes, error
	bgt	1f / if i-number is negative (open for writing)
	neg	r1 / make it positive, then branch
	br	1f / to 1f
	
sysstat: / ; name of file; buffer - get files status
	jsr	r0,arg2 / get the 2 arguments
	jsr	r0,namei / get the i-number for the file
		br error3 / no such file, error
1:
	jsr	r0,iget / get the i-node into core
	mov	(sp)+,r3 / move u.off to r3 (points to buffer)
	mov	r1,(r3)+ / put i-number in 1st word of buffer
	mov	$inode,r2 / r2 points to i-node
1:
	mov	(r2)+,(r3)+ / move rest of i-node to buffer
	cmp	r2,$inode+32 / done?
