*** RegisterDefs.mc last edited October 23, 1979 11:48 AM
** stored in [ivy]<DoradoSource>AemuSources.dm
*** T H I S I S F O R S E R I A L 1 ****
TITLE[RegisterDefs.mc... November 9, 1979 6:31 PM];
%
November 9, 1979 6:31 PM
Add eventReturn and use a new RBASE for all events.
November 9, 1979 2:16 PM
Add eventAovFlg, eventBovFlg
November 9, 1979 11:39 AM
Add event* registers for tripple precision event counters.
%
***** - - - - - - - - - - - - - - - - - - - -
*** Region 0
RMREGION[RMforIFU];* needs to be first
rvn[IFUreg0]; reserve[17];
** MACRO for renaming the first 20b registers
M[RenameIFUreg, (IFG[#2,17,ER[too-many-IFUregs]],
RM[#1, ADD[ IP[IFUreg0], #2]])];
**e.g., RenameIFUreg[RTEMP1, 1]
***** - - - - - - - - - - - - - - - - - - - -
M[rme, RM[#1, IP[#2]]];
***** - - - - - - - - - - - - - - - - - - - -
*** Region 1
RMREGION[AemRegs]; *AltoEmulator Registers
RVN[AC0];
RVN[AC1];
RVN[AC2];
RVN[AC3];
RVN[PC];* emulator program counter
RVN[NWW];* New Wakeups Waiting
RVN[CRY];* Emulator carry bit
RVN[ACRY];* Emulator carry bit during AFunctions
rvn[EmuBrHiReg];* holds hi bits of emulator normal space
rvn[EmuXMBrHiReg];* holds hi bits of emulator alternate space
rvn[debugReg];* may be useful
rvn[EmuFltPC];* save pc of task 0 at fault time
** define temps as the higher numbered registers
RVN[Ireg];* holds current instruction
RVN[Xreg];* a temp
RVN[Yreg];
RVN[temp17];* temp for mult and div - must be 17b
***** - - - - - - - - - - - - - - - - - - - -
*** Region 2
RMREGION[BBREGS]; * AltoEmulator Registers, for Convert and BitBlt
RVN[NWRDS];* number of words per scan line
RVN[XH];* bit map height
RVN[DWAX];* destination word address
RVN[DBA];* destination bit address
RVN[CMASK];* mask from MASKTAB
RVN[PtrXW];* ptr to XW words of character descriptor block
RVN[ct1];* temp
RVN[ct2];* temp
* Remainder not used by Convert but used by BitBlt
***** - - - - - - - - - - - - - - - - - - - -
* BitBlt registers, selected during horizontal loops.
rme[BBDST, NWRDS];
rme[BBSRC, XH];
rme[DSTINC, DWAX];
rme[SRCINC, DBA];
rme[DRAST, CMASK];
rme[SRAST, PtrXW];
rme[PREFDST, ct1];
rme[PREFSRC, ct2];
rvn[PREFINC]
rvn[VCOUNT];
rvn[HCOUNT];
rvn[IHCOUNT];
rvn[ICNT];
rvn[BBDISP];
RESERVE[1];
rvn[SRCWD];*Must be RVREL 17
* BitBlt temps, overlaid with Alto emulator temps
rme[GRAY0, ACRY];
rme[GRAY1, Ireg];
rme[GRAY2, Xreg];
rme[GRAY3, Yreg];
***** - - - - - - - - - - - - - - - - - - - -
*** Region 3
RMREGION[EIREGS];*Used by ether input task
RVN[EIPTR];*Input main loop pointer/count
RVN[EITEMP1];*Input temporaries
RVN[EITEMP2];
rvn[FltPipe0];
rvn[FltPipe1];
rvn[FltPointers];
rvn[FltErrors];
rvn[FaultVal];
rvn[FaultMapVal];
rvn[FaultInfo];
rvn[FltMemPtr];
rvn[fltTemp];* one always needs a temp
***** - - - - - - - - - - - - - - - - - - - -
*** Region 4
** Register definitions for the display
** These definitions really reside in RegisterDefs.mc
** AChannelRegion must be assigned an RBase value with zero in bit 2.
** BChannelRegion must equal AChannelRegion, but with one in bit 2.
RmRegion[AChannelRegion];
* following registers hold subtask specific values for the A channel
* accessed by DWT
rvn[AAddress];
rvn[ACount];
rvn[ANextCount];
rvn[ANextAddrLo];
rvn[ANextAddrHi];
rvn[ASetCWCBFlagANDClearNWCBFlag];
* following registers hold parameters NOT accessed by DWT
rvn[AReaderPtrReg];
rvn[ADWRDSMinus1];
rvn[ADCBChainReg];
rvn[AVCWShadowReg];
rvn[ASAHiReg];
rvn[ASALoReg];
rvn[ANWRDSReg];
rvn[ASLCReg];
rvn[AChannelReg];
rvn[AScratch];
***** - - - - - - - - - - - - - - - - - - - -
*** Region 5
* Register definitions for the display horizontal task DHT
RmRegion[DHTRegion];
rvn[VCWShadowReg];
rvn[FieldAreaReg];
rvn[CursorBaseMinus2];
rvn[CursorYReg];
rvn[HRamSAReg];
rvn[HRamLengthReg];
rvn[HRamDataReg];
rvn[Reg400C];
rvn[DHTScratch];
rvn[TerminalHi];
rvn[TerminalLo];
rvn[OISMdReg];
rvn[OISScratch];
rvn[OISMCount];
rvn[OISBootCount];
rvn[AllowXtdAddr];
***** - - - - - - - - - - - - - - - - - - - -
*** Region 6
RmRegion[BChannelRegion];
* following registers hold subtask specific values for the B channel
* accessed by DWT
rvn[BAddress];
rvn[BCount];
rvn[BNextCount];
rvn[BNextAddrLo];
rvn[BNextAddrHi];
rvn[BSetCWCBFlagANDClearNWCBFlag];
* following registers hold parameters NOT accessed by DWT
rvn[BReaderPtrReg];
rvn[BDWRDSMinus1];
rvn[BDCBChainReg];
rvn[BVCWShadowReg];
rvn[BSAHiReg];
rvn[BSALoReg];
rvn[BNWRDSReg];
rvn[BSLCReg];
rvn[BChannelReg];
rvn[BScratch];
***** - - - - - - - - - - - - - - - - - - - -
*** Region 7
RMREGION[EOREGS];*Used by output task
RVN[EOPTR];*Output main loop pointer/count
RVN[EOTEMP1];*Output temporaries
RVN[EOTEMP2];
RVN[RNUM];*Random number generator state
*RV[RCONST, 33031];*Constant (13849) for random number generator
RVN[RCONST];
***** - - - - - RealTimeClock registers
RVN[RTCLOCK];*Real-time clock, updated by display task
rvn[RtClockHi];* holds core addr for hi part of RtClock
rvn[RTC430];* copy of vm 430
***** - - - - - - - - - - - - - - - - - - - -
*** Region 10
rmregion[DiskRegs];* disk registers
rvn[sector];* sector counter
rvn[KPTR];* command block pointer
rvn[KAddr];* disk address
rvn[KCmmd];* disk command
rvn[DskMAddr];* memory address
rvn[KStatus];* temp
rvn[Krscr6];* temp
rvn[Krscr7];* temp, mostly used to save ShC
rvn[Krscr2];* no longer need to be aliases
rvn[Krscr3];
rvn[Krscr4];
rvn[Krscr5];
rvn[KrscrLink];* for nested subroutines
rvn[KrscrLink2];
rvn[TridentFlag];
rvn[DefaultDisk];
rmregion[events];* event counter registers
****These registers used by junk wakeup task to provide tripple precision event counters
rvn[eventAHi0];
rvn[eventAhi1];
rvn[eventALo];
rvn[eventAovFlag];
rvn[eventBHi0];
rvn[eventBHi1];
rvn[eventBLo];
rvn[eventBovFlag];
rvn[eventReturn];