-- XMesaDefs.Mesa Edited by Levin on October 16, 1978 3:10 PM DIRECTORY AltoDefs: FROM "altodefs" USING [PageNumber, PageCount], BitBltDefs: FROM "BitBltDefs" USING [BBptr], SegmentDefs: FROM "segmentdefs" USING [SegmentHandle, FileSegmentHandle, DataSegmentHandle], Mopcodes: FROM "mopcodes" USING [zEXCH, zKFCB, zPOP]; XMesaDefs: DEFINITIONS = BEGIN -- XM Memory Management XVMtoSegment: PROCEDURE [a: LONG POINTER] RETURNS [SegmentDefs.SegmentHandle]; XSegmentAddress: PROCEDURE [seg: SegmentDefs.SegmentHandle] RETURNS [LONG POINTER]; XVMtoDataSegment: PROCEDURE [a: LONG POINTER] RETURNS [SegmentDefs.DataSegmentHandle]; XDataSegmentAddress: PROCEDURE [seg: SegmentDefs.DataSegmentHandle] RETURNS [LONG POINTER]; XVMtoFileSegment: PROCEDURE [a: LONG POINTER] RETURNS [SegmentDefs.FileSegmentHandle]; XFileSegmentAddress: PROCEDURE [seg: SegmentDefs.FileSegmentHandle] RETURNS [LONG POINTER]; ImmovableSegmentInHighBank: SIGNAL [SegmentDefs.FileSegmentHandle]; -- Additional Options for Memory Allocation BankIndex: TYPE = [0..3]; PagesPerBank: AltoDefs.PageCount = LAST[AltoDefs.PageCount]; MaxXPage: AltoDefs.PageNumber = 1777B; DefaultBase0: AltoDefs.PageNumber = MaxXPage+1; DefaultBase1: AltoDefs.PageNumber = DefaultBase0+1; DefaultBase2: AltoDefs.PageNumber = DefaultBase1+1; DefaultBase3: AltoDefs.PageNumber = DefaultBase2+1; DefaultXMBase: AltoDefs.PageNumber = DefaultBase3+1; -- LONG POINTER support sXCOPY: CARDINAL = 17B; XCOPY: PROCEDURE[from, to: LONG POINTER,nwords: CARDINAL] = MACHINE CODE BEGIN Mopcodes.zKFCB, sXCOPY END; InvalidXCOPY: ERROR; HighHalfPtr: PROCEDURE [LONG POINTER] RETURNS [CARDINAL] = MACHINE CODE BEGIN Mopcodes.zEXCH; Mopcodes.zPOP END; LowHalfPtr: PROCEDURE [LONG POINTER] RETURNS [POINTER] = MACHINE CODE BEGIN Mopcodes.zPOP END; LongAddressFromPage: PROCEDURE[page: AltoDefs.PageNumber] RETURNS[lp: LONG POINTER]; PageFromLongAddress: PROCEDURE[lp: LONG POINTER] RETURNS[page: AltoDefs.PageNumber]; InvalidLongPointer: ERROR [lp: LONG POINTER]; InvalidXMPage: ERROR [page: AltoDefs.PageNumber]; -- Configuration Information MachineType: TYPE = {unknown, AltoI, AltoII, AltoIIXM, D0, Dorado}; MemoryConfig: TYPE = MACHINE DEPENDENT RECORD[ reserved: [0..37B], AltoType: MachineType, useXM: BOOLEAN, unused: [0..3], secondROM: BOOLEAN, banks: [0..17B], mesaMicrocodeVersion: [0..377B], XMMicrocodeVersion: [0..377B]]; GetMemoryConfig: PROCEDURE RETURNS [MemoryConfig]; XMNotAvailable: ERROR; -- Miscellaneous XBitBlt: PROCEDURE[bbt:BitBltDefs.BBptr, bank:BankIndex]; END.