-- Environment.mesa (last edited by: Knutsen on: July 16, 1979  6:26 PM)
Environment: DEFINITIONS =
  BEGIN
  -- Fundamental properties of the OIS processor
  bitsPerWord: CARDINAL = 16;
  bitsPerByte, bitsPerCharacter: CARDINAL = 8;
  bytesPerWord, charsPerWord: CARDINAL = bitsPerWord/bitsPerCharacter;
  logBytesPerWord, logCharsPerWord: CARDINAL = 1; -- logarithm of bytesPerWord
  wordsPerPage: CARDINAL = 256;
  bytesPerPage, charsPerPage: CARDINAL = wordsPerPage*bytesPerWord;
  logWordsPerPage: CARDINAL = 8; -- logarithm of wordsPerPage
  logBytesPerPage, logCharsPerPage: CARDINAL = logWordsPerPage + logBytesPerWord;
  -- logarithm of bytesPerPage
  --	The following is the base pointer to the first 64K of virtual memory
  first64K: Base = LOOPHOLE[LONG[0]];
  maxINTEGER: INTEGER = LAST[INTEGER]; -- 32767
  minINTEGER: INTEGER = FIRST[INTEGER]; -- -32768
  maxCARDINAL: CARDINAL = LAST[CARDINAL]; -- 177777B
  maxLONGINTEGER: LONG INTEGER = LAST[LONG INTEGER]; -- 2147483647
  minLONGINTEGER: LONG INTEGER = FIRST[LONG INTEGER]; -- -2147483648
  maxLONGCARDINAL: LONG CARDINAL = LAST[LONG CARDINAL]; -- 4294967295
  Byte: TYPE = [0..255];
  Word: TYPE = [0..65535];
  Long, LongNumber: TYPE = MACHINE DEPENDENT RECORD [
    SELECT OVERLAID * FROM
      lc => [lc: LONG CARDINAL],
      li => [li: LONG INTEGER],
      lp => [lp: LONG POINTER],
      lu => [lu: LONG UNSPECIFIED],
      any, num => [lowbits, highbits: CARDINAL],
      ENDCASE];
  -- Common types used throughout Pilot
  Base: TYPE = LONG BASE POINTER;
  Block: TYPE = RECORD [
    -- descriptor for arbitrary sequence of bytes
    blockPointer: LONG POINTER,
    startIndex, stopIndexPlusOne: CARDINAL];
  maxPagesInVM: CARDINAL = 65535;
  -- Note that this is one less than the number of VM pages provided by the hardware; the highest numbered VM page is pre-empted for system purposes
  maxPagesInMDS: CARDINAL = 256;
  PageNumber: TYPE = [0..maxPagesInVM];
  PageOffset: TYPE = [0..maxPagesInVM];
  PageCount: TYPE = [0..maxPagesInVM];
  END.
LOG
Time: April 26, 1978  4:34 PM	By: McJones	Action: Created file
Time: May 3, 1978  1:46 PM	By: Lauer	Action: Merged contents of AltoDefs into file; changed name of file from "Processor".
Time: June 21, 1978  10:03 AM	By: Lauer	Action: Added maxINTEGER, minINTEGER, maxCARDINAL, maxLONGINTEGER, minLONGINTEGER
Time: July 21, 1978  11:31 AM	By: Lauer	Action: Moved type 'Block' from Stream to Environment
Time: August 14, 1978  10:26 AM	By: Horsley	Action: Used FIRST and LAST for number bounds
Time: March 7, 1979  10:31 AM	By: McJones	Action: Added Long; increased upper bound for PageNumber, PageOffset
Time: July 16, 1979  6:26 PM		By: Knutsen	Action: Added first64K, Base.