{File name <tajo>dbBusExt.mc BX clauses removed
Description: Daybreak Interlisp Emulator Bus Extension
use daybreak assembler on dbBusExt.mc to make dbBusExt.si and dbBusExt.ml
use dlion assembler on dlBusExt.mc to make dlBusExt.eb and rename to dbBusExt
Assumes only reg mBusStat and mBusIData will be read, to avoid tight memory timing
Purcell 27-Jul-85 13:17:53 edited
Purcell 22-Jul-85 22:50:49 created from BusExt.mc of 17-Apr-85 1:34:04 PST
}
{INPUT: TOSH ← smallpl, DISP4[MiscIn], c1, at[0D,10, MiscDisp];}
{
(SETQ MBUS.OUTL (PLUS 0 (LLSH REG 4)))
(SETQ MBUS.OUTM (PLUS 11 (LLSH REG 4)))
(SETQ MBUS.INL (PLUS 9 (LLSH REG 4)))
(SETQ MBUS.INM (PLUS 10 (LLSH REG 4)))
(\DEVICE.OUTPUT DATA MBUS.OUTL)
(\DEVICE.OUTPUT DATA MBUS.OUTM)
(SETQ DATA (\DEVICE.INPUT MBUS.INL))
(SETQ DATA (\DEVICE.INPUT MBUS.INM))
}
RegDef[uDummy, UY, 0];
RegDef[uDat, U, 0D];{uTOS}{~0D = mBusStat or mBusIData}
{OpTable: , c1, at[500];}
BusX: Noop, c2, at[09,10,MiscIn];{read L}
TOS ← TOS LRot12, c3;
Ybus ← TOS, AltUaddr, c1;
{Float.L, {TOS ← FloatResult}FloatA← uDummy,} c2;
pcInDn: {TOS ← FloatA← FloatResult,} c3;
GOTO[IB.nop], c1;
Noop, c2, at[0A,10,MiscIn];{read M}
TOS ← TOS LRot12, c3;
Ybus ← TOS, AltUaddr, c1;
{Float.M, {FloatResult}FloatA← uDummy,}GOTO[pcInDn], c2;
Noop, c3, at[0,10,MiscOut];{Write L}
Rx ← S + 2, c1;
Q ← rhS, c2;
rhRx ← Q LRot0, c3;
MAR ← Rx ← [rhRx, Rx + 0], c1;
TOS ← TOS LRot12, c2;
TT ← MD, c3;
uDat ← TT, c1;
Ybus ← TOS, {AltUaddr,} L2 ← L2.0, IBDisp, c2;
{Float.L,} Xbus ← uDat, L2 ← L2.0, DISPNI[OpTable], c3;
label: Noop, c3, at[0B,10,MiscOut];{Write M}
Rx ← S + 2, c1;
Q ← rhS, c2;
rhRx ← Q LRot0, c3;
MAR ← Rx ← [rhRx, Rx + 0], c1;
TOS ← TOS LRot12, c2;
TT ← MD, c3;
uDat ← TT, c1;
Ybus ← TOS, {AltUaddr,} L2 ← L2.0, IBDisp, c2;
{Float.M,} Xbus ← uDat, L2 ← L2.0, DISPNI[OpTable], c3;
{ E N D }