/**************************************************
UZI (Unix Z80 Implementation) Kernel:  devmisc.c
***************************************************/


#include <sys/unix.h>
#include <sys/extern.h>


/* Block zero of /dev/mem appears as an array of pointers */
static int *blkzero[128] =
{
	(int*)&udata,
	(int*)ptab,
	(int*)uds,
	(int*)0
};


mem_read( minor, rawflag )
int	minor;
int	rawflag;
{
	char	*from;
	if( (udata.u_offset.o_blkno==0) && (udata.u_offset.o_offset==0) )
	{
		blkzero[3] = (int*)udata.u_ptab;
		from = (char*)blkzero;
	}
	else
		from = (char*)((512*udata.u_offset.o_blkno)+udata.u_offset.o_offset);
	bcopy( from, udata.u_base, udata.u_count);
	return( udata.u_count );
}

mem_write( minor, rawflag )
int	minor;
int	rawflag;
{
	bcopy( udata.u_base,
	       (char*)((512*udata.u_offset.o_blkno)+udata.u_offset.o_offset),
	       udata.u_count);
	return( udata.u_count );
}



null_write(minor, rawflag)
int minor;
int rawflag;
{
    return(udata.u_count);
}

