{Daybreak.dfn Last Revised: 15-Sep-87 17:15:13, JAC , uGFI was a floating pt register Last Revised: 31-Dec-86 12:02:42, AHL/JPM, MDS relief changes Last Revised: 19-Dec-86 13:45:08, JPM, add more image processing definitions Last Revised: 18-Dec-86 10:40:20, JPM, add more image processing definitions Last Revised: 14-Nov-86 10:11:27, JPM, add uIdleCount* for performance study Last Revised: 26-Oct-86 11:44:20, CRF, replaced uRect* & uChar* by uLO* Last Revised: 9-Oct-86 13:11:38, JPM, remove unused reg defs Last Revised: 6-Oct-86 12:14:49, JPM, move Floyd and GrayBlt temp U-regs to bank E Last Revised: 12-Aug-86 9:18:24, JPM, fix bug (RH reg incorrectly defined as R reg) Last Revised: 11-Aug-86 8:48:54, JPM, add more image processing definitions Last Revised: 8-Aug-86 16:54:25, JPM, add image processing definitions Last Revised: 7-Aug-86 16:55:27, SCJ, removed uFactoruCode, FPTEnabled is sufficient to indicate whether or not Floating point uCode is present Removed uTimesWplDisp, which is used only by special Versatec Opcodes Last Revised: 14-May-86 9:57:07, SCJ, merged EIS Daybreak.dfn with the existing Daybreak.dfn to build a MesaDove with floating point microcode Last Revised: 7-Mar-86 12:29:23, GPV, add * to designate sacred registers Last Revised: 18-Dec-85 19:26:25, KxI, add CompressAssist.mc definitions. and trim source code layout. Last Revised: 29-Oct-85 17:56:40, RDH, add BandBLT definitions Last Revised: 19-Jul-85 17:52:32, JAC, add kernel definitions Last Revised: 3-Jul-85 11:00:53, JPM, move non-register defs to Mesa.dfn Last Revised: 7-Feb-85 8:57:57, JPM, add new U regs for IORegion Last Revised: 29-Jan-85 9:49:38, JPM, add U block defs Last Revised: 10-Jan-85 10:59:41, JPM, change kernel locations Last Revised: 8-Jan-85 15:48:31, JPM, incorporate new TextBlt U-register defs Created: 10-Oct-84 12:11:47, JPM } { Copyright (C) 1984, 1985, 1986 by Xerox Corporation. All rights reserved. } {R AND RH REGISTER DEFINITIONS Since there are no task specific registers in the machine, task identifiers are not bound to the register numbers with which they are shown. Q is reserved for the Emulator Task. Also, the stackP, STK, ib, and pc16 registers are reserved for the Emulator task.} {REGISTERS 0 - 9, B, C, E: EMULATOR} RegDef[TOS, R, 0]; {* Top Of Stack} RegDef[Hold, R, 0]; {BBLoops} RegDef[Rbb0, R, 0]; {BitBlt and TextBlt and BandBLT and TrapezoidBLT} RegDef[VS, R, 0]; {BitBlt} RegDef[Mask2, R, 0]; {BitBlt} RegDef[rYheight, R, 0]; {BandBLT} RegDef[rCC, R, 0]; {BandBLT} RegDef[Grayword, R, 0]; {BLTLineGray} RegDef[length, R, 0]; {ChainBlt} RegDef[Count, R, 0]; {CountBits} RegDef[width, R, 0]; {FlipX} RegDef[rTT2, R, 0]; {Floyd: temp R register} RegDef[rCount, R, 0]; {GrayBlt, Scale} RegDef[rMargin, R, 0]; {LineBreak} RegDef[rReason, R, 0]; {LineBreak} RegDef[wplDst, R, 0]; {Rotate} RegDef[rhMDS, RH, 0]; {** VA of 64K aligned MDS} RegDef[rhVS, RH, 0]; {BitBlt uses fact that rhVS = rhMDS} RegDef[T, R, 1]; {temporary} RegDef[Save, R, 1]; {BitBlt} RegDef[VD, R, 1]; {BitBlt, ComMapSub} RegDef[Rbb1, R, 1]; {BitBlt and TextBlt and BandBLT and TrapezoidBLT} RegDef[Mask1, R, 1]; {BitBlt} RegDef[rScratch, R, 1]; {BandBLT} RegDef[rXDisp, R, 1]; {BandBLT} RegDef[rXwidth, R, 1]; {BandBLT} RegDef[GCount, R, 1]; {BLTLineGray} RegDef[tempC, R, 1]; {BLTLineGray: the Count register is free sometimes to be used as a temp register tempC for other operations} RegDef[offset, R, 1]; {BumpBitAddress} RegDef[rdstlow, R, 1]; {ChainBlt} RegDef[rWordA, R, 1]; {CompressAssist.mc @NextMatchAndDiff} RegDef[rDestVA, R, 1]; {CompressAssist.mc @CLR} RegDef[Limit, R, 1]; {CountBits} RegDef[rtemp, R, 1]; {FlipX} RegDef[rError, R, 1]; {Floyd: new error for current pixel value } RegDef[PIX, R, 1]; {Floyd: current pixel pair } RegDef[rSumLow, R, 1]; {GrayBlt} RegDef[rThreshold, R, 1]; {GrayBlt} RegDef[rGrTRC, R, 1]; {GrayBlt} RegDef[rSrcWord, R, 1]; {Halftone: working source pixels(2)} RegDef[rMicaLength, R, 1]; {LineBreak} RegDef[wplSrc, R, 1]; {Rotate} RegDef[rPPW, R, 1]; {Scale} RegDef[rhT, RH, 1]; {temporary} RegDef[rhVD, RH, 1]; {BitBlt, ComMapSub} RegDef[rhFunction, RH, 1]; {BLTLineGray} RegDef[rhdsthigh, RH, 1]; {ChainBlt} RegDef[rhDestVA, RH, 1]; {CompressAssist.mc @CLR} RegDef[rhGrTRC, RH, 1]; {GrayBlt} RegDef[TT, R, 2]; {temporary} RegDef[divisorHigh, R, 2]; {Fpt-div: TT} RegDef[Src, R, 2]; {BitBlt} RegDef[Rbb2, R, 2]; {BitBlt and TextBlt Rbb2 must equal TT to share MaskTbl} RegDef[Temp, R, 2]; {BitBlt} RegDef[TempDelta, R, 2]; {BitBlt} RegDef[rYloc, R, 2]; {BandBLT paired with u1FFF} RegDef[rLOwriteP, R, 2]; {BandBLT paired with u1FFF} RegDef[DstBit, R, 2]; {BLTLineGray} RegDef[rwrdaddh, R, 2]; {BumpBitAddress} RegDef[rWordB, R, 2]; {CompressAssist.mc @NextMatchAndDiff} RegDef[bitWidth, R, 2]; {ComMapSub} RegDef[byteWidth, R, 2]; {ComMapSub} RegDef[wordWidth, R, 2]; {ComMapSub} RegDef[rrightreal, R, 2]; {FlipX} RegDef[rSrcReal, R, 2]; {Floyd, GrayBlt, Scale} RegDef[rScanLineLength, R, 2]; {Halftone} RegDef[rNewHToffset, R, 2]; {Halftone} RegDef[rHalfToneElement,R, 2]; {Halftone: current Halftone element} RegDef[rTextReal, R, 2]; {LineBreak} RegDef[rSylCount, R, 2]; {LineBreak} RegDef[dstWidth, R, 2]; {TrapezoidBlt dst width, bits} RegDef[rhTT, RH, 2]; {temporary} RegDef[rhType, RH, 2]; {BitBlt and TextBlt and BandBLT and TrapezoidBLT} RegDef[rhLOwriteP, RH, 2]; {BandBLT} RegDef[rhrightreal, RH, 2]; {FlipX} RegDef[rhSrcReal, RH, 2]; {Floyd, GrayBlt, Scale} RegDef[rhTextReal, RH, 2]; {LineBreak} RegDef[L, R, 3]; {* real local frame pointer.lowWord} RegDef[divCount, R, 3]; {Fpt-div: L - must be saved and restored} RegDef[Dst, R, 3]; {BitBlt} RegDef[TempBpl, R, 3]; {BitBlt} RegDef[Rbb3, R, 3]; {BitBlt and TextBlt and BandBLT} RegDef[rLOwriteV, R, 3]; {BandBLT} RegDef[rUindex, R, 3]; {BandBLT} RegDef[rLoop, R, 3]; {BandBLT} RegDef[rFont, R, 3]; {BandBLT} RegDef[rSrcLow, R, 3]; {Floyd: real source address low 16 bits} RegDef[rHTAddrLo, R, 3]; {Halftone: current Halftone lo addr} RegDef[rMinSpMLength, R, 3]; {LineBreak: must be saved and restored} RegDef[rSylType, R, 3]; {LineBreak: must be saved and restored} RegDef[rSylBitLength, R, 3]; {LineBreak: must be saved and restored} RegDef[rhL, RH, 3]; {* real local frame (RA, extended by rhL=real rhMDS)} RegDef[rhWho, RH, 3]; {BitBlt} RegDef[rhLOwriteV, RH, 3]; {BandBLT} RegDef[rhSrcHi, RH, 3]; {Floyd: real source address high 5 bits} RegDef[rhHTAddrHi, RH, 3]; {Halftone: current Halftone hi addr} RegDef[G, R, 4]; {* real global frame pointer.lowWord} RegDef[divResult, R, 4]; {Fpt-div: G - must be saved and restored} RegDef[SrcA, R, 4]; {BitBlt} RegDef[Rbb4, R, 4]; {BitBlt and TextBlt and BandBLT} RegDef[rNlines, R, 4]; {BandBLT} RegDef[rReadP, R, 4]; {BandBLT} RegDef[rDstLow, R, 4]; {Floyd: real destination address low 16 bits} RegDef[rSrcPixel, R, 4]; {Halftone: current source pixel} RegDef[rMinSpPLength, R, 4]; {LineBreak: must be saved and restored} RegDef[rFit, R, 4]; {LineBreak: must be saved and restored} RegDef[rSylByteCount, R, 4]; {LineBreak: must be saved and restored} RegDef[rhG, RH, 4]; {* global frame (RA, extended by rhG=real rhMDS)} RegDef[rhSrcA, RH, 4]; {BitBlt} RegDef[rhReadP, RH, 4]; {BandBLT} RegDef[rhDstHi, RH, 4]; {Floyd: real destination address high 5 bits} RegDef[PC, R, 5]; {* word address of real next Instruction pointer} RegDef[DstA, R, 5]; {BitBlt} RegDef[rReadV, R, 5]; {BandBLT} RegDef[rDest, R, 5]; {BandBLT} RegDef[rJunk, R, 5]; {BandBLT--paired with uCurrentLevelCmd, but only to do u ¬ r xor ~r} RegDef[rErrLow, R, 5]; {Floyd: real error address low 16 bits} RegDef[rWhiteSpaceIncr, R, 5]; {LineBreak: must be saved and restored} RegDef[rMinWidth, R, 5]; {LineBreak: must be saved and restored} RegDef[rhPC, RH, 5]; {* word address of real next Instruction pointer} RegDef[rhDstA, RH, 5]; {BitBlt} RegDef[rhReadV, RH, 5]; {BandBLT} RegDef[rhDest, RH, 5]; {BandBLT} RegDef[rhErrHi, RH, 5]; {Floyd: real error address hi 5 bits} RegDef[Rx, R, 6]; RegDef[divisorLow, R, 6]; {Fpt-div: Rx} RegDef[Lcount, R, 6]; {BitBlt} RegDef[TempB, R, 6]; {BitBlt} RegDef[rRealDest, R, 6]; {BLTLineGray} RegDef[rCurRefWordRA, R, 6]; {CompressAssist.mc @NextMatchAndDiff} RegDef[rDestRA, R, 6]; {CompressAssist.mc @CLR} RegDef[SrcBit, R, 6]; {CountBits} RegDef[rleftreal, R, 6]; {FlipX} RegDef[rTT, R, 6]; {Floyd: temp R register} RegDef[rDstReal, R, 6]; {Floyd, GrayBlt, Scale} RegDef[rHTOffset, R, 6]; {Halftone: current Halftone offset} RegDef[rArgReal, R, 6]; {LineBreak} RegDef[rCacheObj, R, 6]; {LineBreak} RegDef[RtbChar, R, 6]; {TextBlt Character pointed to by TextLo,Hi[Index]} RegDef[srcBitOffset, R, 6]; {TrapezoidBlt gray brick bit offset} RegDef[TzbUpdVar, R, 6]; {TrapezoidBlt update loop variables reg.} RegDef[rhRx, RH, 6]; {temporary} RegDef[rhRet, RH, 6]; {BitBlt} RegDef[rhRealDest, RH, 6]; {BLTLineGray} RegDef[rhCurRefWordRA, RH, 6]; {CompressAssist.mc @NextMatchAndDiff} RegDef[rhDestRA, RH, 6]; {CompressAssist.mc @CLR} RegDef[rhleftreal, RH, 6]; {FlipX} RegDef[rhDstReal, RH, 6]; {Floyd, GrayBlt, Scale} RegDef[rhArgReal, RH, 6]; {LineBreak} RegDef[rhCacheObj, RH, 6]; {LineBreak} RegDef[r0100, R, 7]; {** constant for jump/refill code, also used by BandBlt.} RegDef[rOldErrorLow, R, 7]; {Floyd: previous pixel location in real error buffer} RegDef[rGr00FF, R, 7]; {GrayBlt: must restore to 0100 at int/fault/exit} RegDef[rCtMinusIx, R, 7]; {LineBreak: must restore to 0100 at exit} RegDef[rhOldErrorHi, RH, 7]; {Floyd: previous pixel location in real error buffer} RegDef[rIORgn, R, 8]; {** Memory locking} RegDef[rhIORgn, RH, 8]; {** Memory locking} RegDef[rTemp, R, 9]; {BandBLT, GrayBlt, Scale} RegDef[bitnum, R, 9]; {BumpBitAddress} RegDef[DBit, R, 9]; {ComMapSub} RegDef[DByte, R, 9]; {ComMapSub} RegDef[rCurRefWordVA, R, 9]; {CompressAssist.mc} RegDef[rDupStartVA.lowByte,R, 9]; {CompressAssist.mc} RegDef[rEvenOdd, R, 9]; {CompressAssist.mc} RegDef[rwork, R, 9]; {FlipX} RegDef[rTT3, R, 9]; {Floyd: temp R register} RegDef[rDstOrgWord, R, 9]; {Halftone: current original dest word} RegDef[rBitLength, R, 9]; {LineBreak} RegDef[rDstVirt, R, 9]; {Rotate} RegDef[Tzbtmp, R, 9]; {TrapezoidBlt temporary} RegDef[rhTemp, RH, 9]; {BandBLT, GrayBlt, Scale} RegDef[rhCurRefWordVA, RH, 9]; {CompressAssist.mc} RegDef[rhLBHyphenPL, RH, 9]; {LineBreak} RegDef[rtmpadd, R, 0B]; {BumpBitAddress} RegDef[rchainbasel, R, 0B]; {ChainBlt} RegDef[Regb, R, 0B]; {ComMapSub} RegDef[rTopOfNextPg.Low,R, 0B]; {CompressAssist.mc} RegDef[rByteMask, R, 0B]; {CompressAssist.mc} RegDef[rData, R, 0B]; {CompressAssist.mc} RegDef[rcheck, R, 0B]; {FlipX} RegDef[rTT4, R, 0B]; {Floyd: temp R register} RegDef[rVirtualL, R, 0B]; {FlipX, Floyd, GrayBlt, LineBreak, Scale} RegDef[rGrSrcTemp, R, 0B]; {GrayBlt} RegDef[rDstPixel, R, 0B]; {Halftone: current dest pixel} RegDef[rByteCount, R, 0B]; {LineBreak} RegDef[rSrcVirt, R, 0B]; {Rotate} RegDef[dstBitAdjust, R, 0B]; {TrapezoidBlt dst bit adjustment} RegDef[TzbAnother, R, 0B]; {TrapezoidBlt working register} RegDef[rhchainbaseh, RH, 0B]; {ChainBlt} RegDef[rhVirtualH, RH, 0B]; {FlipX, Floyd, GrayBlt, LineBreak, Scale} RegDef[rhGrSrcTemp, RH, 0B]; {GrayBlt} RegDef[rhSrcVirt, RH, 0B]; {Rotate} RegDef[SourceData, R, 0C]; {BLTLineGray} RegDef[rtmpbit, R, 0C]; {BumpBitAddress} RegDef[writebit, R, 0C]; {ChainBlt} RegDef[BARealALo, R, 0C]; {ComMapSub} RegDef[rTopOfCurrentPg.Low,R, 0C]; {CompressAssist.mc} RegDef[rByte, R, 0C]; {CompressAssist.mc} RegDef[Data, R, 0C]; {CountBits, Scale} RegDef[rcount, R, 0C]; {FlipX} RegDef[rGrFF00, R, 0C]; {GrayBlt} RegDef[rAddrLo, R, 0C]; {Halftone: current real lo addr} RegDef[rSpCount, R, 0C]; {LineBreak: paired with rhSuffixChar} RegDef[wordCount, R, 0C]; {Rotate: linked with rhDstVirt for fast map loop} RegDef[BARealAHi, RH, 0C]; {ComMapSub} RegDef[rhGrDispCond, RH, 0C]; {GrayBlt} RegDef[rhAddrHi, RH, 0C]; {Halftone: current real hi addr} RegDef[rhSuffixChar, RH, 0C]; {LineBreak: paired with rSpCount} RegDef[rhDstVirt, RH, 0C]; {Rotate: linked with wordCount for fast map loop} RegDef[Rio, R, 0E]; RegDef[temp, R, 0E]; {BLTLineGray} RegDef[rwrdaddl, R, 0E]; {BumpBitAddress} RegDef[rchaintemp, R, 0E]; {ChainBlt} RegDef[rworkR, R, 0E]; {FlipX} RegDef[rThisCell, R, 0E]; {Floyd: R Register of UThisCell} RegDef[rSumHigh, R, 0E]; {GrayBlt} RegDef[rDstWord, R, 0E]; {GrayBlt} RegDef[rMaskN, R, 0E]; {GrayBlt} RegDef[rDstBitCount, R, 0E]; {Halftone: current dst bit offset} RegDef[rWhiteSpace, R, 0E]; {LineBreak} RegDef[bitCount, R, 0E]; {Rotate} RegDef[srcData, R, 0E]; {Rotate} RegDef[rPixelCount, R, 0E]; {Scale} RegDef[srcWrdOffset, R, 0E]; {TrapezoidBlt source word offset in bits} RegDef[rhRio, RH, 0E]; RegDef[rHE, RH, 0E]; {BLTLineGray} RegDef[rhDstWord, RH, 0E]; {GrayBlt} RegDef[rhLBFlags, RH, 0E]; {LineBreak} {REGISTER A: Kernel} RegDef[rMailBox, R, 0A]; {**} RegDef[rHMailBox, RH, 0A]; {**} {REGISTER D: Interrupt processing} RegDef[rInt, R, 0D]; {**} RegDef[rhInt, RH, 0D]; {REGISTER F: Kernel} RegDef[rK, R, 0F]; {**} RegDef[RHrK, RH, 0F]; {**} {U REGISTER DEFINITIONS Registers indicated by ** contain Emulator state and must not be modified.} {U REGISTER BLOCK 0 -- EMULATOR STACK} RegDef[uyBlk0, UY, 0]; {BandBLT AltUaddr addressing} RegDef[uyStack, UY, 0]; {GrayBltSubs AltUaddr addressing} RegDef[uBlock0, U, 0]: {**} RegDef[uStack1, U, 1]; {**} RegDef[uStack2, U, 2]; {**} RegDef[UBitBltArg, U, 2]; {BitBlt} RegDef[Urleft, U, 2]; {FlipX} RegDef[uArgVL, U, 2]; {Floyd: arg. pointer into virtual space (low 16 bits)} RegDef[uCount, U, 2]; {Floyd: number of input pixels} RegDef[uGrDstLow, U, 2]; {GrayBlt} RegDef[uGrSumLow, U, 2]; {GrayBlt} RegDef[uHTsrcLo, U, 2]; {Halftone: source pointer lo} RegDef[uSBTGDstVALow, U, 2]; {Scale} RegDef[UDtzVALo, U, 2]; {TrapezoidBlt lower Dst VAddr} RegDef[UTrapezBltArgLo, U, 2]; {TrapezoidBlt argument pointer lo} RegDef[uStack3, U, 3]; {**} RegDef[UHeight, U, 3]; {BitBlt} RegDef[Urhleft, U, 3]; {FlipX} RegDef[uArgVH, U, 3]; {Floyd: arg. pointer into virtual space (high 8 bits)} RegDef[uThreshAndMax, U, 3]; {Floyd: threshold and max value} RegDef[uGrDstHigh, U, 3]; {GrayBlt} RegDef[uGrSumHigh, U, 3]; {GrayBlt} RegDef[uHTsrcHi, U, 3]; {Halftone: source pointer hi} RegDef[uSBTGDstVAHigh, U, 3]; {Scale} RegDef[UdstBpl, U, 3]; {TrapezoidBlt dst bits per line} RegDef[UTrapezBltArgHi, U, 3]; {TrapezoidBlt argument pointer hi} RegDef[uStack4, U, 4]; {**} RegDef[UDstVALo, U, 4]; {BitBlt} RegDef[Uwidth, U, 4]; {FlipX} RegDef[uSaveINWrd, U, 4]; {Floyd: save input word containing 2 pixels} RegDef[uGrDstBit, U, 4]; {GrayBlt} RegDef[uGrDstByte, U, 4]; {GrayBlt} RegDef[uHTsrcByteOffset,U, 4]; {Halftone: source byte offset} RegDef[uSBTGDstByte, U, 4]; {Scale} RegDef[UStzVALo, U, 4]; {TrapezoidBlt lower Src VAddr} RegDef[uStack5, U, 5]; {**} RegDef[UDstBit, U, 5]; {BitBlt} RegDef[uInPtrVH, U, 5]; {Floyd: ptr. to input gray scale data in virtual space (high 8 bits) } RegDef[uGrDstBPL, U, 5]; {GrayBlt} RegDef[uHTscanLineLength,U, 5]; {Halftone: scan line length} RegDef[uSBTGSrcVALow, U, 5]; {Scale} RegDef[UrhTzbVSD, U, 5]; {TrapezoidBlt higher Src and Dst VAddr} RegDef[uStack6, U, 6]; {**} RegDef[USrcVALo, U, 6]; {BitBlt} RegDef[uInPtrVL, U, 6]; {Floyd: ptr. to input gray scale data in virtual space (low 16 bits) } RegDef[uGrSrcLow, U, 6]; {GrayBlt} RegDef[uHTlineLo, U, 6]; {Halftone: cell line pointer lo} RegDef[uSBTGSrcVAHigh, U, 6]; {Scale} RegDef[UXMinValFrac, U, 6]; {TrapezoidBlt interpolator} Set[xMinValFrac, 6]; {for BandBLT AltUaddr addressing} RegDef[uStack7, U, 7]; {**} RegDef[USrcBit, U, 7]; {BitBlt} RegDef[uOutPtrVH, U, 7]; {Floyd: pointer to output bit data in virtual space (high 8 bits) } RegDef[uGrSrcHigh, U, 7]; {GrayBlt} RegDef[uHTlineHi, U, 7]; {Halftone: cell line pointer hi} RegDef[uSBTGSrcBit, U, 7]; {Scale} RegDef[UXMinValInt, U, 7]; {TrapezoidBlt interpolator} Set[xMinValInt, 7]; {for BandBLT AltUaddr addressing} RegDef[uStack8, U, 8]; {**} RegDef[UGray, U, 8]; {BitBlt -- shares with USrcBpl} RegDef[USrcBpl, U, 8]; {BitBlt -- shares with UGray} RegDef[uOutPtrVL, U, 8]; {Floyd: pointer to output bit data in virtual space (low 16 bits)} RegDef[uGrSrcByte, U, 8]; {GrayBlt} RegDef[uHTlineLength, U, 8]; {Halftone: cell line length} RegDef[uSBTGSrcBPL, U, 8]; {Scale} RegDef[UXMindValFrac, U, 8]; {TrapezoidBlt interpolator} RegDef[uStack9, U, 9]; {**} RegDef[UDstBpl, U, 9]; {BitBlt} RegDef[uErrorPtrVH, U, 9]; {Floyd: pointer to error data in virtual space (high 8 bits)} RegDef[uGrSrcBPL, U, 9]; {GrayBlt} RegDef[uHTlineOffset, U, 9]; {Halftone: offset into cell line} RegDef[uSBTGPixelCount, U, 9]; {Scale} RegDef[UXMindValInt, U, 9]; {TrapezoidBlt interpolator} RegDef[uStackA, U, 0A]; {**} RegDef[UrhVS, U, 0A]; {BitBlt} RegDef[uErrorPtrVL, U, 0A]; {Floyd: pointer to error data in virtual space (low 16 bits)} RegDef[uGrWidth, U, 0A]; {GrayBlt} RegDef[uHTdstLo, U, 0A]; {Halftone: dest. pointer lo} RegDef[uSBTGScale, U, 0A]; {Scale} RegDef[UXMaxValFrac, U, 0A]; {TrapezoidBlt interpolator} RegDef[uStackB, U, 0B]; {**} RegDef[UrhVD, U, 0B]; {BitBlt} RegDef[uBit, U, 0B]; {Floyd: Bit-address of output pixel (only used on PF returns)} RegDef[uGrHeight, U, 0B]; {GrayBlt} RegDef[uHTdstHi, U, 0B]; {Halftone: dest. pointer hi} RegDef[uSBTGLineCount, U, 0B]; {Scale: fZ = ¬RH} RegDef[UXMaxValInt, U, 0B]; {TrapezoidBlt interpolator} RegDef[uStackC, U, 0C]; {**} RegDef[UFlags, U, 0C]; {BitBlt} RegDef[uFWDError, U, 0C]; {Floyd: forward error} RegDef[uGrFlags, U, 0C]; {GrayBlt} RegDef[uGrThreshold, U, 0C]; {GrayBlt} RegDef[uHTdstBitOffset, U, 0C]; {Halftone: dest. bit offset} RegDef[uSBTGSrcBitWidth,U, 0C]; {Scale} RegDef[UXMaxdValFrac, U, 0C]; {TrapezoidBlt interpolator} RegDef[uStackD, U, 0D]; {**} RegDef[UWidth, U, 0D]; {BitBlt} RegDef[uRTError, U, 0D]; {Floyd: right error} RegDef[uGrTRCLow, U, 0D]; {GrayBlt} RegDef[uGrDstWord, U, 0D]; {GrayBlt} RegDef[uHTinvertReq, U, 0D]; {Halftone: invert dest. boolean} RegDef[UXMaxdValInt, U, 0D]; {TrapezoidBlt interpolator} Set[xMaxdValInt, 0D]; {for BandBLT AltUaddr addressing} Set[xMaxdValIntPlus1, Add[xMaxdValInt,1]]; {for BandBLT AltUaddr addressing} RegDef[uStackE, U, 0E]; {**} RegDef[uMIDError, U, 0E]; {Floyd: middle error} RegDef[uGrTRCHigh, U, 0E]; {GrayBlt} RegDef[UTzbFlags, U, 0E]; {TrapezoidBlt flags} RegDef[uStackF, U, 0F]; {**} RegDef[uSTKMisc, U, 0F]; {Floyd: Misc. values for interrupt/fault handling} RegDef[UTzbHeight, U, 0F]; {TrapezoidBlt object height, rA = Rbb0 = 0} {U REGISTER BLOCK 1 -- EMULATOR} RegDef[uHeaderBlock, UY, 1]: RegDef[uBlock1, U, 10]: RegDef[uWP, U, 10]; {** wakeups pending, rA = T} RegDef[UvC, U, 11]; {** rA = T low half of code (VA, extended by UvChigh)} RegDef[UBrkByte, U, 12]; {**} RegDef[uPPMask, U, 13]; {** rA = T, constant = E000} RegDef[uWW, U, 14]; RegDef[UtbWidth, U, 14]; {TextBlt temporary} RegDef[u3FFF, U, 15]; {** constant, rA = T} RegDef[uPMask, U, 16]; {** rA = T; constant = 1FF8} RegDef[UXferType, U, 17]; {type of Xfer in progress} RegDef[UtbRgFlags, U, 17]; {TextBlt Used to save RgFlags[Char], rA = T} RegDef[uHighHalf1, U, 17]; {Fpt: rA = T} RegDef[uWDC, U, 18]; {** wakeup disable counter} RegDef[uFrame, U, 19]; {rA = T} RegDef[UGsave, U, 19]; RegDef[uLowHalf1, U, 19]; {Fpt: rA = T} RegDef[uDestLo, U, 1A]; {rA = T; destination link of Xfer in progress} RegDef[UtbCount, U, 1A]; {TextBlt Count parameter, rA = T fZ = ErrnIBnStkp} RegDef[uPsbLink, U, 1B]; {rA = T, fZ = ¬RH} RegDef[UvLPhigh, U, 1B]; RegDef[uHighHalf2, U, 1B]; {Fpt: rA = T} RegDef[uHighRem, U, 1B]; {Fpt: rA = T} RegDef[uT, U, 1C]; {rA = T} RegDef[uLowHalf2, U, 1C]; {Fpt: rA = T} RegDef[uLowRem, U, 1C]; {Fpt: rA = T} RegDef[uTemp, U, 1D]; {rA = T, fZ = ¬ib} RegDef[UtbArgPtr, U, 1D]; {TextBlt ArgPtr parameter from Stack, rA = T, } RegDef[uExp1, U, 1D]; {Fpt: Fpt: rA = T} RegDef[uGFI, U, 1E]; {**rA = T; global frame index} RegDef[uExp2, U, 1F]; {Fpt: rA = T} RegDef[uHighTempRoot, U, 1F]; {Fpt: rA = T} RegDef[uDestHighSave, U, 1F]; {Block} {U REGISTER BLOCK 2 -- EMULATOR} RegDef[uBlock2, U, 20]: RegDef[UvGhigh, U, 20]; {** rA = TT, high part of global frame (VA)} RegDef[UvG, U, 21]; {** rA = TT, global frame address (VA)} RegDef[UvChigh, U, 22]; {** rA = TT, high address bits of code segment (VA)} RegDef[UvMDS, U, 23]; {** rA = TT; MDS pointer (VA)} RegDef[uSourceHighSaveTemp,U, 24]; {Block} RegDef[uTT, U, 24]; {rA = TT; Temp} { The following must match corresponding definition in StartMesa. } RegDef[uStickyReg, U, 24]; {Fpt: part of processor state, [0] is non zero if fpt micro code should trap on inexact result, and [15] is non zero if there has been a non trapped inexact result} RegDef[UtbIndex, U, 25]; {TextBlt Index parameter from Stack, rA = TT} RegDef[uStickyBit, U, 25]; {Fpt: rA = TT} RegDef[uFaultParm0, U, 26]; {** rA = TT; fault parameter} RegDef[uTTemp, U, 27]; {rA = TT} RegDef[uSourceHighSave, U, 27]; {rA = TT = 2. } RegDef[uSign1, U, 27]; {Fpt: rA = TT} RegDef[uPCCross, U, 28]; {**} RegDef[uTrapParm0, U, 29]; {**} RegDef[uTicks, U, 2A]; RegDef[uDestHi, U, 2A]; RegDef[UtbMicaPos, U, 2A]; {TextBlt parameter, rA = TT, fZ = ErrnIBnStkp} RegDef[uSign2, U, 2A]; {Fpt: rA = TT} RegDef[UvL, U, 2B]; {** rA = TT, fZ = ¬RH; local frame address (VA)} RegDef[Ufsi, U, 2C]; {rA = TT; temp used in Xfer} RegDef[UvPCpage, U, 2D]; {** rA = TT, fZ = ¬ib; (PC page address)} RegDef[uSourceLo, U, 2E]; {rA = TT} RegDef[u7FF, U, 2F]; {** constant} {U REGISTER BLOCK 3 -- EMULATOR} RegDef[uBlock3, U, 30]; RegDef[uLastInkLOwritten,U, 30]; {** BandBLT -- rA = rLoop} RegDef[uDivCount, U, 31]; {Fpt: divCount = L} RegDef[uSqrtCount, U, 31]; {Fpt: divCount = L} RegDef[UQSave, U, 31]; {BitBlt temp} RegDef[uStackPSave, U, 31]; {used by Block rA = L = 3} RegDef[uPTC, U, 32]; {** Process Tick Count} RegDef[uStkDepth, U, 33]; {temp in Process, Xfer} RegDef[UWidthM1, U, 34]; {BitBlt temp} RegDef[Umask1, U, 35]; {BitBlt temp} RegDef[u1FFF, U, 36]; {** constant} RegDef[uFaultParm1, U, 37]; {fault parameter} RegDef[Umask2, U, 37]; {BitBlt temp} RegDef[UmaskL, U, 38]; {BitBlt temp} RegDef[uPSB, U, 39]; {** Current PSB} RegDef[ULsave, U, 3A]; {rA = L = 3. fZ = ErrnIBnStkp = A} RegDef[UrL, U, 3B]; {rA = L, fZ = ¬RH} RegDef[UrhLsave, U, 3B]; {bank 3, 'B' = ¬ rh } RegDef[UrLHi, U, 3C]; RegDef[UtbFlags, U, 3D]; {** TextBlt constant = 6400} RegDef[uCrSaveStkp, U, 3E]; {**} RegDef[uTickCount, U, 3F]; {** process tick interval} {U REGISTER BLOCK 4 -- EMULATOR} RegDef[uBlock4, U, 40]: RegDef[uCrSaveTOS, U, 40]; {**} RegDef[uCrSavePC, U, 41]; {**} RegDef[UvQ1Hi, U, 42]; RegDef[UXsave, U, 42]; {BitBlt temp} RegDef[uDivResult, U, 42]; {Fpt: divResult = G} RegDef[uLowTempRoot, U, 42]; {Fpt} RegDef[UvQ1, U, 43]; RegDef[UVSsave, U, 43]; {BitBlt temp} RegDef[UvQ2Hi, U, 44]; RegDef[USrcVALoSav, U, 44]; {BitBlt temp} RegDef[UvQ2, U, 45]; {rA = G} RegDef[UtbNewMicaPos, U, 45]; {TextBlt temp} RegDef[UvQTempHi, U, 46]; RegDef[UvQTemp, U, 47]; RegDef[uIntLevel, U, 48]; {rA = G; used in interrupts} RegDef[UrhMDSsave, U, 49]; RegDef[UtbBitPos, U, 4A]; {TextBlt BitPos parameter, rA = G, fZ = ErrnIBnStkp} RegDef[UrG, U, 4B]; {rA = G, fZ = ¬RH} RegDef[UrhGsave, U, 4B]; {rA = G, fZ = ¬RH} RegDef[UrGHi, U, 4C]; RegDef[uTrapParm1, U, 4D]; {Xfer trap parameter} RegDef[UtbMicaWidth, U, 4D]; {TextBlt Used to save MicaWidth[Char]} RegDef[uTrapParm2, U, 4E]; {Xfer trap parameter} RegDef[uCurrentInkwell, U, 4F]; {** BandBLT} {U REGISTER BLOCK 5 -- EMULATOR} RegDef[UtbFontData, UY, 5]; {TextBlt tbFetchFontDataLoop} RegDef[uBlock5, U, 50]; RegDef[UtbHeight, U, 50]; {TextBlt FontBody 10} RegDef[UtbRasterLo, U, 51]; {TextBlt FontBody 0} RegDef[UtbRasterHi, U, 52]; {TextBlt FontBody 1} RegDef[UtbSpacingWidthLo,U, 53]; {TextBlt FontBody 2} RegDef[UtbSpacingWidthHi,U, 54]; {TextBlt FontBody 3} RegDef[UtbPrinterWidthLo,U, 55]; {TextBlt FontBody 4} RegDef[UtbPrinterWidthHi,U, 56]; {TextBlt FontBody 5} RegDef[UtbFlagsLo, U, 57]; {TextBlt FontBody 6} RegDef[UtbFlagsHi, U, 58]; {TextBlt FontBody 7} RegDef[UtbRasterInfoLo, U, 59]; {TextBlt FontRecord 8} RegDef[UtbRasterInfoHi, U, 5A]; {TextBlt FontRecord 9} RegDef[UrPC, U, 5B]; {rA = PC, fZ = ¬RH} RegDef[UrhPCsave, U, 5B]; {rA = PC, fZ = ¬RH} RegDef[UrPCHi, U, 5C]; RegDef[UDstVALoSav, U, 5C]; {BitBlt temp} RegDef[UreturnPC, U, 5D]; {rA = PC, fZ = ¬ib} RegDef[UWidthW, U, 5D]; {BitBlt temp} RegDef[uPCValid, U, 5E]; {** rA = PC; flag for faults} RegDef[uXTS, U, 5F]; {** Xfer Trap Status} {U REGISTER BLOCK 6 -- EMULATOR} RegDef[tbParmBlock, UY, 6]; {TextBlt tbFetchArgLoop} {All but 61 and 62 are destroyed by TextBlt tbFetchArg} RegDef[uBlock6, U, 60]; RegDef[ULcntsav, U, 60]; {BitBlt temp rA = Lcount} RegDef[uLBTextRealLo, U, 60]; {LineBreak} RegDef[uRx, U, 60]; {Xfer temp rA = Rx} RegDef[u8000, U, 61]; {** rA = Rx; constant = 8000} RegDef[uPMask2, U, 62]; {** rA = Rx; constant = 1FF8} RegDef[uib, U, 63]; {Fpt: rA = Rx} RegDef[uLBArgRealLo, U, 63]; {LineBreak} RegDef[UtbFunction, U, 63]; {Function parameter from TextBltArg, must be 63} RegDef[uXferType, U, 63]; {Type of Xfer, rA = Rx} RegDef[uLBArgRealHi, U, 64]; {LineBreak} RegDef[UtbLast, U, 64]; {Last parameter from TextBltArg, must be 64} RegDef[uLBTextCount, U, 65]; {LineBreak} RegDef[UtbTextLo, U, 65]; {TextLo parameter from TextBltArg, must be 65} RegDef[uSourceLowSave, U, 66]; {used by Block rA = Rx = 6} RegDef[uLBCacheLo, U, 66]; {LineBreak} RegDef[UtbTextHi, U, 66]; {TextHi parameter from TextBltArg, must be 66} RegDef[uRetC, U, 66]; {Xfer Temp, rA = Rx} RegDef[uLBCacheHi, U, 67]; {LineBreak} RegDef[UtbFontLo, U, 67]; {FontLo parameter from TextBltArg, must be 67} RegDef[uRetPChi, U, 67]; {Xfer Temp, rA = Rx} RegDef[uLBFont, U, 68]; {LineBreak} RegDef[UtbFontHi, U, 68]; {FontHi parameter from TextBltArg, must be 68} RegDef[uLBPendSyl, U, 69]; {LineBreak} RegDef[UtbDstLo, U, 69]; {DestLo parameter from TextBltArg, must be 69} RegDef[uSourceOffset, U, 6A]; {used by Block rA = Rx = 6. } RegDef[uLBPCtMinusIx, U, 6A]; {LineBreak} RegDef[UtbDstHi, U, 6A]; {DestHi parameter from TextBltArg, must be 6A} RegDef[uDestLowSave, U, 6B]; {Block} RegDef[uLBPMicaLength, U, 6B]; {LineBreak} RegDef[UtbDstBpl, U, 6B]; {DestBpl parameter from TextBltArg, must be 6B} RegDef[uLBPBitLength, U, 6C]; {LineBreak} RegDef[UtbMargin, U, 6C]; {Margin parameter from TextBltArg, must be 6C} RegDef[uLBPSpCount, U, 6D]; {LineBreak} RegDef[UtbSpace, U, 6D]; {TextBlt Space parameter from TextBltArg, must be 6D} RegDef[uLBPByteCount, U, 6E]; {LineBreak} RegDef[UtbCoordLo, U, 6E]; {CoordLo parameter from TextBltArg, must be 6E} RegDef[uLBPWhiteSpace, U, 6F]; {LineBreak} RegDef[UtbCoordHigh, U, 6F]; {CoordHigh parameter from TextBltArg, must be 6F} {U REGISTER BLOCK 7 -- EMULATOR} RegDef[uBlock7, U, 70]; RegDef[uLO0, U, 70]; {** BandBLT} RegDef[uOtherInkCmd, U, 71]; {** BandBLT} RegDef[uOtherVirtPage, U, 72]; {** BandBLT} RegDef[uInkHigh, U, 73]; {** BandBLT} RegDef[uInkLow, U, 74]; {** BandBLT} RegDef[uSaveLOwritePLow,U, 75]; {** BandBLT} RegDef[uSaveList, U, 76]; {** BandBLT} RegDef[uCurrentLevelCmd,U, 77]; {** BandBLT} RegDef[uOtherListHigh, U, 78]; {** BandBLT} RegDef[uSaveReadPHigh, U, 79]; {** BandBLT} RegDef[uCurrentFlags, U, 7A]; {** BandBLT} RegDef[uSaveReadPLow, U, 7B]; {** BandBLT} RegDef[uSaveLOwritePHigh,U, 7C]; {** BandBLT} RegDef[uSaveVirtPage, U, 7D]; {** BandBLT} RegDef[uFPTHigh, U, 7E]; {** BandBLT} RegDef[uRasterHigh, U, 7F]; {BandBLT} {U REGISTER BLOCK 8} RegDef[uBlock8, U, 80]; RegDef[uIORgnHigh, U, 80]; {** high IORegion real addr, rA = rIORgn} RegDef[uMaintPanel, U, 81]; {** low address of IORegion maint panel code} RegDef[uMesaProc, U, 82]; {** low address of IORegion mesa proc. area} RegDef[uVirtPage, U, 83]; {BandBLT} {RegDef[uFactoruCode, U, 83];}{a word of bits which can be used to enable/disable microcode instructions. 0 => disabled. 1 => enabled.} RegDef[uRasterLow, U, 84]; {BandBLT} {RegDef[uTimesWplDisp, U, 84];}{a value IN [0..16) used to branch off to a specialized routine to calculate the number of words of memory needed for backing the indicated number of display lines. 0 => arbitrary so TRAP to Mesa to handle, 1 => 15" monochrome, 2 => 19" monochrome.} RegDef[uBitmapMemHigh, U, 8B]; {** BandBLT} RegDef[uOtherInkwell, U, 8C]; {** BandBLT} RegDef[uFPTLow, U, 8D]; {** BandBLT} RegDef[uOtherListLow, U, 8E]; {** BandBLT} RegDef[uOtherFlags, U, 8F]; {** BandBLT} {U REGISTER BLOCK 9} RegDef[uyBlk, UY, 9]; {BandBLT} RegDef[uBlock9, U, 90]; RegDef[uLastLevelLOwritten,U, 90]; {** BandBLT} RegDef[uBitmapMemLow, U, 91]; {** BandBLT} RegDef[uRetPage, U, 92]; {** BandBLT} RegDef[uRetWord, U, 93]; {** BandBLT} RegDef[uLO1, U, 94]; {** BandBLT, rA = rTemp = 9} RegDef[uLO2, U, 95]; {** BandBLT, rA = rTemp = 9} RegDef[uOtherLevelCmd, U, 96]; {** BandBLT } RegDef[uCurrentInkCmd, U, 97]; {** BandBLT} RegDef[uLOreadV, U, 98]; {BandBLT Arg0} RegDef[uBLreadLow, U, 99]; {BandBLT Arg1} RegDef[uBLreadHigh, U, 9A]; {BandBLT Arg2} RegDef[uLOwriteV, U, 9B]; {** BandBLT Arg3} RegDef[uBandBufLow, U, 9C]; {** BandBLT Arg4} RegDef[uBandBufHigh, U, 9D]; {** BandBLT Arg5, rA = rTemp = 9} RegDef[uFPTPage, U, 9E]; {BandBLT Arg6} RegDef[uBitmapMemPage, U, 9F]; {BandBLT Arg7} {U REGISTER BLOCK A -- KERNEL} RegDef[uBlockA, U, 0A0]; RegDef[UKDispBits, U, 0AE]; RegDef[UKCycleBreakID, U, 0AF]; RegDef[UKSaveDisp, U, 0AE]; {**} RegDef[UBreakID, U, 0AF]; {**} {U REGISTER BLOCK B} RegDef[uBlockB, U, 0B0]; RegDef[uIdleCountLow, U, 0B1]; {** count of times through IdleLoop, low half} RegDef[uIdleCountHigh, U, 0B2]; {** count of times through IdleLoop, high half} RegDef[uSBTGDstTempLow, U, 0BC]; {Scale} RegDef[uSBTGDstTempHigh,U, 0BD]; {Scale} RegDef[uSBTGSrcTempLow, U, 0BE]; {Scale: rA = rVirtualL} RegDef[uSBTGSrcTempHigh,U, 0BF]; {Scale} {U REGISTER BLOCK C -- EMULATOR} RegDef[uBlockC, U, 0C0]; RegDef[uHTlineRealLo, U, 0C0]; {Halftone: HT line Real Addr lo} RegDef[UtmpHi, U, 0C0]: {TrapezoidBlt save Source hi virt addr} RegDef[uHTlineRealHi, U, 0C1]; {Halftone: HT line Real Addr hi} RegDef[UtmpLo, U, 0C1]: {TrapezoidBlt save Source lo virt addr} RegDef[uHTdstRealLo, U, 0C2]; {Halftone: Dst Real Addr lo} RegDef[uHTdstRealHi, U, 0C3]; {Halftone: Dst Real Addr hi} RegDef[uHTsrcRealHi, U, 0C5]; {Halftone: Src Real Addr hi} RegDef[uHTsrcRealLo, U, 0CB]; {Halftone: Src Real Addr lo} RegDef[uSBTGHold, U, 0CB]; {Scale: rA = BARealALo, fZ = ¬RH} {U REGISTER BLOCK D} RegDef[uBlockD, U, 0D0]; {U REGISTER BLOCK E -- EMULATOR} RegDef[uyBlockE, UY, 0E]; {Rotate: rA = srcData} RegDef[uBlockE, U, 0E0]; RegDef[uPolarity, U, 0E0]; {Floyd: invert output flag -- rA = rThisCell = 0E} RegDef[uGrCurrSrcLow, U, 0E0]; {GrayBlt} RegDef[uHTmaskN, U, 0E0]; {Halftone: pixel mask} RegDef[uByte, U, 0E1]; {Floyd: Byte-address of input pixel} RegDef[uGrCurrSrcHigh, U, 0E1]; {GrayBlt} RegDef[uRtnReason, U, 0E2]; {Floyd: reason for saving state and return type} RegDef[uGrCurrDstLow, U, 0E2]; {GrayBlt} RegDef[uThreshold, U, 0E3]; {Floyd: work threshold} RegDef[uGrCurrDstHigh, U, 0E3]; {GrayBlt} RegDef[uMaxValue, U, 0E4]; {Floyd: work max value} RegDef[uGrSaveCarry, U, 0E4]; {GrayBlt} RegDef[uPFlags, U, 0EB]; {Emulator -- fZ = ¬RH; flags for process} RegDef[uBlockEF, U, 0EF]; {Rotate: rA = srcData} {U REGISTER BLOCK F -- EMULATOR} RegDef[uBlockF, U, 0F0]; RegDef[UPCsave, U, 0F0]; {Emulator} RegDef[UrefillType, U, 0F1]; {BitBlt} RegDef[USavelength, U, 0F4]; {ChainBlt} RegDef[UdstWidth, U, 0F4]: {TrapezoidBlt temp storage} RegDef[USavecount, U, 0F5]; {ChainBlt} RegDef[UyOffset, U, 0F5]: {TrapezoidBlt yOffset storage } RegDef[USavedstbit, U, 0F6]; {ChainBlt} RegDef[USavechainbasel, U, 0F7]; {ChainBlt} RegDef[Urightreal, U, 0F7]; {FlipX} RegDef[Utmpdstbit, U, 0F7]: {TrapezoidBlt tmp dst bit offset} RegDef[USavewritebit, U, 0F8]; {ChainBlt} RegDef[Urhrightreal, U, 0F8]; {FlipX} RegDef[UtzDstBit, U, 0F8]: {TrapezoidBlt dst bit offset} RegDef[USavedstlow, U, 0F9]; {ChainBlt} RegDef[Urright, U, 0F9]; {FlipX} RegDef[UtzSrcBit, U, 0F9]: {TrapezoidBlt src bit offset} RegDef[USavechainbaseh, U, 0FA]; {ChainBlt} RegDef[Urhright, U, 0FA]; {FlipX} RegDef[USavedsthigh, U, 0FB]; {ChainBlt} RegDef[Uworkrleft, U, 0FB]; {FlipX} RegDef[Uworkrhleft, U, 0FC]; {FlipX} RegDef[UWrkrhVD, U, 0FC]: {TrapezoidBlt temp higher Dst VAddr} RegDef[USavecheck, U, 0FD]; {FlipX} RegDef[Urleftreal, U, 0FE]; {FlipX} RegDef[UWrkrhVS, U, 0FE]: {TrapezoidBlt temp higher Src VAddr} RegDef[Urhleftreal, U, 0FF]; {FlipX} { End }