/* $Revision Header *** Header built automatically - do not edit! ***********
 *
 *	(C) Copyright 1992 by Amit Fridman
 *
 *	Name .....: Virtual.h
 *	Created ..: Friday 13-Nov-92 15:21:07
 *	Revision .: 1
 *
 *	Date        Author                 Comment
 *	=========   ====================   ====================
 *	14-Nov-92   Amit Fridman           Version 1.0 finished
 *	13-Nov-92   Amit Fridman           Created this file!
 *
 * $Revision Header ********************************************************/
#define REVISION	1

#include <exec/types.h>

struct SegEntry {
	struct SegEntry *NextP;
	char *Base;
	ULONG Size;
	ULONG FOffset;
	ULONG Access;
	SHORT Pri;
	UWORD Flags;
};

#define SF_PRESENT 1
#define SF_DIRTY   2
#define SF_USED    4
#define SF_INFILE  8

struct VirtMem {
	struct SegEntry *Segments;
	struct SegEntry *PSegments;
	ULONG VirtSize;
	ULONG PhysSize;
	SHORT SegNum;
	char *PhysMem;
	char FName[108];
	BPTR File;
	ULONG AccOffset;
	ULONG Count;
	UWORD Flags;
};

#define NORMALIZE(seg,offset) ((seg)->Base+(offset))
#define OFFSET(seg,full)      ((full)-(seg)->Base)
#define DIRTY(seg)            ((seg)->Flags|=SF_DIRTY)
#define PRESENT(seg)          ((seg)->Flags & SF_PRESENT)

/* Virtual.c */
short InitVirtualMem(struct VirtMem *vm, char const *FName, unsigned long VirtSize, unsigned long PhysSize, unsigned short SegNum);
void FreeVirtMem(struct VirtMem *vm);
struct SegEntry *CreateSegment(struct VirtMem *vm, unsigned long size, short pri);
short Access(struct VirtMem *vm,struct SegEntry *seg);
