DIRECTORY Core, CoreName; IFUCoreDrive: CEDAR DEFINITIONS = BEGIN CellProc: PROC [ name: ROPE _ NIL, data: Drive _ NIL ] RETURNS [cellType: Core.CellType]; -- driveCellClass driveCellClass: Core.CellClass; Drive: TYPE = REF DriveRec; Drives: TYPE = LIST OF Drive; DriveRec: TYPE = RECORD[ name: ROPE _ NIL, -- reference name nameInv: ROPE _ NIL, -- reference name cy: INT _ -1, idx: INT _ -1, drDir: Dir _ in, gate: DrGate _ pos, dualOut: BOOL _ FALSE, inSh: ROPE _ NIL, outSh: ROPE _ NIL, inNm: ROPE _ NIL, -- if not this then inRelatiesignal fire: ROPE _ NIL, fireV: ROPE _ NIL, nPreChg: ROPE _ NIL, in: RelativeSignal _ [ ], ref: RelativeSignal _ [pol: pos], -- ph is latch phase out: RelativeSignal _ [ ], pass: BOOL _ FALSE, plaType: PLAType _ hot, drRowType: RowType _ conn ]; RelativeSignal: TYPE = CoreName.RelativeSignal; ROPE: TYPE = Core.ROPE; Ph: TYPE = CoreName.Ph; DrGate: TYPE = {neg, negAc, negBc, pos}; Dir: TYPE = {in, out}; Polarity: TYPE = CoreName.Polarity; RowType: TYPE = {header, xheader, footer, xfooter, conn, dataUp, dataDn, blank, extend}; PLAType: TYPE = {precharged, hot}; DrTileRec: TYPE = RECORD[nconn: DrTileNonConn, conn: DrTileConn]; DrTileNonConn: TYPE = ARRAY PLAType OF ARRAY RowType OF Core.CellType; DrTileConn: TYPE = ARRAY Dir OF REF DrTileArray; DrTileArray: TYPE = ARRAY DriveTileType OF Core.CellType; DriveTileType: TYPE = {inPos, inNeg, inBlank, gndAB, latchA, latchB, gateP, gateN, gateNA, gateNB, latch, posSing, negSing, posDual, negDual}; DrNmType: TYPE = {in, nin, ref, nref, out, nout, inSh, ninSh, outSh, noutSh, unk}; DriveName: PROC[drive: Drive, type: DrNmType _ unk] RETURNS[ name: ROPE]; GetDriverTiles: PROC RETURNS[tiles: REF DrTileRec]; ConnectDrives: PROC [drives: Drives, inSh: ROPE _ NIL] RETURNS[outSh: ROPE]; ReverseDrives: PROC [drives: Drives] RETURNS[new: Drives]; DrivesToFrame: PROC [name: ROPE, drives: Drives] RETURNS[cell: Core.CellType]; CapDrives: PROC [drives: Drives, sIn, altOut: ROPE _ NIL] RETURNS[newDrives: Drives, sOut: ROPE _ NIL]; SpecificDrive: PROC[ dir: Dir, in: ROPE, out: ROPE, inverted, dual: BOOL _ FALSE ] RETURNS[dr: IFUCoreDrive.Drive]; AdjustDriveOutPh: PROC [ drives: Drives, names: ROPE]; AdjustDriveInPhRef: PROC [inLatchPh: Ph, drives: Drives, names: ROPE]; FindDrive: PROC [drives: Drives, name: ROPE] RETURNS[drive: Drive]; RefToDrives: PROC [refRec: REF, initial: DriveRec] RETURNS[drives: Drives]; RefToDriverFrame: PROC[name: ROPE, refRec: REF, initial: DriveRec] RETURNS[cell: Core.CellType, outSh: ROPE]; SetDShiftIO: PROC[cellType: Core.CellType, sIn, sOut: ROPE]; GetDShiftIO: PROC[cellType: Core.CellType] RETURNS [sIn, sOut: ROPE]; END. ôIFUCoreDrive.mesa Copyright c 1985, 1986 by Xerox Corporation. All rights resersed. Last Edited by: Curry, October 21, 1986 8:55:19 pm PDT Don Curry October 30, 1986 9:09:54 am PST PLAType: TYPE = {precharged, hot, decoder, static}; ʘšÏb Ðbl™Jšœ Ïmœ7™BJ™6Icode™)—J™JšÏk œ˜J˜š œ œ  œ˜!Jš œ˜J˜J˜šÏnœ œ˜Jšœ œ œ˜šœ œ˜Jš œ˜4——J˜Jšœ˜Jšœ œ œ ˜Jšœ œ˜šœ œ œ˜Jšœ œ œÏc˜'Jšœ  œ œ¢˜)Jšœ œ˜Jšœ œ˜Jšœ˜Jšœ˜Jšœ  œ œ˜Jšœ œ œ˜Jšœ  œ œ˜Jšœ œ œ&˜9Jšœ œ œ˜Jšœ  œ œ˜Jšœ  œ œ˜Jšœ˜Jšœ$¢˜8Jšœ˜Jšœ œ œ˜Jšœ˜Jšœ˜—J™Jšœ œ˜/JšÐbkœ œ œ˜Jšœ œ˜Jšœ œ˜+Jšœ œ ˜Jšœ œ˜&Jšœ œK˜XJšœ œ˜"Jšœ œ&™3J˜Jšœ  œ œ)˜CJš œ œ œ  œ œ  œ˜GJš œ œ œ œ œ ˜2Jšœ œ œ œ˜;Jšœ œ{˜J˜Jšœ œD˜TJš¡ œ œ$ œ œ˜KJš¡œ œ œ œ ˜3J™Jš ¡ œ œ œ œ œ œ˜MJš¡ œ œ œ˜;Jš¡ œ œ œ œ˜Oš¡ œ œ œ œ˜Jš¡ œ œ œ  œ˜GJ™Jš œ˜J˜——…— Ò×