Memory.def 1.1 KB

1234567891011121314151617181920212223242526272829303132
  1. DEFINITION MODULE Memory ;
  2. (* MC64 virtual machine memory: a single linear byte array.
  3. Machine addresses (IP, SP, FP, GP, OFP) are LONGCARD offsets
  4. into this array. No host allocation is performed. *)
  5. EXPORT QUALIFIED MaxMem, Init, ArenaBase, TopOfMemory, heapPointer,
  6. ReadByte, WriteByte, ReadSlot, WriteSlot, ReadWord, WriteWord,
  7. ReadLong, WriteLong, CopyBytes, FillBytes, LoadImage ;
  8. CONST MaxMem = 16777216 ; (* 16 MiB *)
  9. VAR heapPointer: LONGCARD ;
  10. PROCEDURE Init ;
  11. PROCEDURE ArenaBase () : LONGCARD ;
  12. PROCEDURE TopOfMemory () : LONGCARD ;
  13. PROCEDURE ReadByte (a: LONGCARD) : CARDINAL ;
  14. PROCEDURE WriteByte (a: LONGCARD; b: CARDINAL) ;
  15. PROCEDURE ReadSlot (a: LONGCARD) : LONGCARD ;
  16. PROCEDURE WriteSlot (a: LONGCARD; v: LONGCARD) ;
  17. PROCEDURE ReadWord (a: LONGCARD) : CARDINAL ;
  18. PROCEDURE WriteWord (a: LONGCARD; v: CARDINAL) ;
  19. PROCEDURE ReadLong (a: LONGCARD) : LONGINT ;
  20. PROCEDURE WriteLong (a: LONGCARD; v: LONGINT) ;
  21. PROCEDURE CopyBytes (src, dst: LONGCARD; n: LONGCARD) ;
  22. PROCEDURE FillBytes (dst: LONGCARD; n: LONGCARD; b: CARDINAL) ;
  23. PROCEDURE LoadImage (VAR data: ARRAY OF CHAR; off: CARDINAL; dst: LONGCARD; n: CARDINAL) ;
  24. END Memory.