-- Environment.mesa (last edited by: Levin on: August 24, 1982 4:38 pm)
Environment: DEFINITIONS =
BEGIN
-- Fundamental properties of the OIS processor
bitsPerWord: CARDINAL = 16;
logBitsPerWord: CARDINAL = 4; -- logarithm of bitsPerWord
bitsPerByte, bitsPerCharacter: CARDINAL = 8;
logBitsPerByte, logBitsPerChar: CARDINAL = 3; -- logarithm of bitsPerByte
bytesPerWord, charsPerWord: CARDINAL = bitsPerWord/bitsPerByte;
logBytesPerWord, logCharsPerWord: CARDINAL = logBitsPerWord - logBitsPerByte; -- 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],
num => [lowbits, highbits: CARDINAL],
any => [low, high: UNSPECIFIED],
ENDCASE];
Comparison: TYPE = MACHINE DEPENDENT {less(0), equal(1), greater(2)};
-- Common types used throughout Pilot
Base: TYPE = LONG BASE POINTER;
BitAddress: TYPE = MACHINE DEPENDENT RECORD [
word: LONG POINTER,
reserved: [0..LAST[WORD]/bitsPerWord) ← 0,
bit: [0..bitsPerWord)];
Block: TYPE = RECORD [
-- descriptor for arbitrary sequence of bytes
blockPointer: LONG POINTER,
startIndex, stopIndexPlusOne: CARDINAL];
nullBlock: Block = [NIL, 0, 0];
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.
Time: January 25, 1980 5:46 PM By: Forrest AR1607: nullBlock added, AR1740: logBitsPerByte, logBitsPerWord added; change any branch of LONG NUMBER to use UNSPECIFIEDs.
Time: April 17, 1980 12:08 AM By: Forrest Action: added BitAddress.
Time: August 24, 1982 4:38 pm By: Levin Action: added Comparison.