DEFINITION MODULE Memory ; (* MC64 virtual machine memory: a single linear byte array. Machine addresses (IP, SP, FP, GP, OFP) are LONGCARD offsets into this array. No host allocation is performed. *) EXPORT QUALIFIED MaxMem, Init, ArenaBase, TopOfMemory, heapPointer, ReadByte, WriteByte, ReadSlot, WriteSlot, ReadWord, WriteWord, ReadLong, WriteLong, CopyBytes, FillBytes, LoadImage ; CONST MaxMem = 16777216 ; (* 16 MiB *) VAR heapPointer: LONGCARD ; PROCEDURE Init ; PROCEDURE ArenaBase () : LONGCARD ; PROCEDURE TopOfMemory () : LONGCARD ; PROCEDURE ReadByte (a: LONGCARD) : CARDINAL ; PROCEDURE WriteByte (a: LONGCARD; b: CARDINAL) ; PROCEDURE ReadSlot (a: LONGCARD) : LONGCARD ; PROCEDURE WriteSlot (a: LONGCARD; v: LONGCARD) ; PROCEDURE ReadWord (a: LONGCARD) : CARDINAL ; PROCEDURE WriteWord (a: LONGCARD; v: CARDINAL) ; PROCEDURE ReadLong (a: LONGCARD) : LONGINT ; PROCEDURE WriteLong (a: LONGCARD; v: LONGINT) ; PROCEDURE CopyBytes (src, dst: LONGCARD; n: LONGCARD) ; PROCEDURE FillBytes (dst: LONGCARD; n: LONGCARD; b: CARDINAL) ; PROCEDURE LoadImage (VAR data: ARRAY OF CHAR; off: CARDINAL; dst: LONGCARD; n: CARDINAL) ; END Memory.