-- WartDefs.mesa  Modified by: Sandman, January 4, 1980  11:08 AM
-- Copyright  Xerox Corporation 1979, 1980

WartDefs: DEFINITIONS =
  BEGIN

  VersionID: CARDINAL = 1020;
  TableLimit: INTEGER = 7777B;
  TableBase: TYPE = BASE POINTER TO Header;

  Header: TYPE = MACHINE DEPENDENT RECORD [
    version: CARDINAL,
    tablebase: TableBase, -- origin of the script table
    segOffset: CARDINAL,
    fill4: [0..17B] ← 0,
    segLength: SegIndex,
    linkOffset: CARDINAL,
    fill5: [0..17B] ← 0,
    linkLength: LinkIndex,
    diskAddresses: POINTER,
    ffvmp, lfvmp: CARDINAL,
    loadState: SegIndex,
    useHyperSpace: BOOLEAN,
    fill1: [0..7B] ← 0,
    initLoadState: SegIndex,
    fill2: [0..17B] ← 0,
    bcd: SegIndex,
    fill3: [0..17B] ← 0,
    nub, user: POINTER]; -- who to start

  PagesPerMDS: CARDINAL = 256;
  LastMDSPage: CARDINAL = 255;
  MaxImagePage: CARDINAL = 7777B;

  SegEntry: TYPE = MACHINE DEPENDENT RECORD [
    base: [0..MaxImagePage],
    data, write, locked, in: BOOLEAN,
    pages: [1..PagesPerMDS],
    vmPage: [0..LastMDSPage],
    handle: POINTER];

  SegIndex: TYPE = TableBase RELATIVE POINTER [0..TableLimit] TO SegEntry;
  SegHandle: TYPE = POINTER TO SegEntry;
  NullSeg: SegIndex = LOOPHOLE[TableLimit];

  LinkEntry: TYPE = MACHINE DEPENDENT RECORD [
    fill1: [0..17B] ← 0, codeseg: SegIndex, frame: POINTER];

  LinkIndex: TYPE = TableBase RELATIVE POINTER [0..TableLimit] TO LinkEntry;
  LinkHandle: TYPE = POINTER TO LinkEntry;
  NullLink: LinkIndex = LOOPHOLE[TableLimit];

  END.