<> <> <> <> <<>> DIRECTORY SparcSoftcard; SparcSoftcardOps: CEDAR DEFINITIONS ~ { OPEN SparcSoftcard; <> SparcReset: PROC; SparcResetAndStart: PROC; <> SparcCacheDisable: PROC; SparcCacheEnable: PROC; <> <> DMAState: TYPE = {active, inactive}; SetDMAState: PROC [dMAState: DMAState]; DMAMode: TYPE = {printer, display, versatecOneShot, versatecStream}; SetDMAMode: PUBLIC PROC [dMAMode: DMAMode]; DMAAddressRegisterLoad: PROC [ byteAddress: CARD32 ]; < It is strongely recommanded to start any DMA buffer on a 64 bits word bondary>> <> VMSpaceName: TYPE = {dMA, iOP, cP, sparcUserData, sparcUserProgram, sparcSuperData, sparcSuperProgram}; VMSpace: TYPE = RECORD [ name: VMSpaceName, task: CARD32 _ 0 ]; Flags: TYPE = RECORD [ dirty: BOOLEAN _ FALSE, referenced: BOOLEAN _ FALSE, readOnly: BOOLEAN _ FALSE, nonCachable: BOOLEAN _ FALSE, interrupt: BOOLEAN _ FALSE ]; MapEntry: TYPE = RECORD [ flags: Flags, vMSpace: VMSpace, virtualAddressByte: CARD32, realAddressByte: CARD32 ]; <> <<>> MapEntryConcrete: TYPE = MACHINE DEPENDENT RECORD [ dirty: BOOLEAN, referenced: BOOLEAN, readOnly: BOOLEAN, nonCachable: BOOLEAN, interrupt: BOOLEAN, task: BYTE, virtualPageHiHi: [0..7H], -- 3 bits, virtualPageHiLow: [0..3H], -- 2 bits, trash: BOOL, realPage: [0..1FFFH] -- 13 bits ]; WriteMapEntry: PROC [mapEntry: MapEntry]; <<>> ReadMapEntry: PROC [ mapEntry: MapEntry ] RETURNS [ oldMapEntry: MapEntry ]; <> <> MemoryConfig: TYPE = ARRAY [0..7] OF BOOLEAN; MemoryConfigPointer: TYPE = LONG POINTER TO MemoryConfig; FindMemoryConfig: PROC [memoryConfigPointer: MemoryConfigPointer]; <<>> <> }.