{mlisp12k.mc
created by cal: 5-Nov-84 15:59:32
}
{*****************************************************************************
BITBLT
*****************************************************************************}
@BBLT: opcode[166'b],
Bank ← 2, c1;
, c2;
CROSS[BBEntry], c3;
PC ← PC + PC16{***1}, GOTO[IBDispOnly] ,c1, at[BBExit];
IBDispOnly:
IBDisp, L2 ← L2.0, c2;
TOSH ← smallpl, L2 ← L2.0, DISPNI[OpTable], c3;
{*****************************************************************************
MISC Input
*****************************************************************************}
@MISC1: opcode[170'b],
L2 ← L2.0, GOTO[Misc], c1;
@MISC2: opcode[171'b],
L2 ← L2.0, c1;
Misc: PC ← PC + 1, Xbus ← ib, XDisp, c2;
uTOS ← TOS, YDisp, DISP4[MiscDisp, 0C], c3;
Misc0: Q ← 121'd, CANCELBR[sink2, 0F], c1, at[0C,10, MiscDisp];{MP9121}
Misc3: Q ← 121'd, CANCELBR[sink2, 0F], c1, at[0F,10, MiscDisp];{MP9121}
{*****************************************************************************
INPUT Input
*****************************************************************************}
INPUT: TOSH ← smallpl, DISP4[MiscIn], c1, at[0D,10, MiscDisp];
TOS ← EIData, IBDisp, L2 ← L2.0, GOTO[MiscInEnd], c2, at[0,10,MiscIn];
TOS ← EStatus, IBDisp, L2 ← L2.0, GOTO[MiscInEnd], c2, at[1,10,MiscIn];
TOS ← KIData, IBDisp, L2 ← L2.0, GOTO[MiscInEnd], c2, at[2,10,MiscIn];
TOS ← KStatus, IBDisp, L2 ← L2.0, GOTO[MiscInEnd], c2, at[3,10,MiscIn];
TOS ← uSTATE, IBDisp, L2 ← L2.0, GOTO[MiscInEnd], c2, at[4,10,MiscIn];
TOS ← MStatus, IBDisp, L2 ← L2.0, GOTO[MiscInEnd], c2, at[5,10,MiscIn];
TOS ← KTest, IBDisp, L2 ← L2.0, GOTO[MiscInEnd], c2, at[6,10,MiscIn];
{TOS ← PPort}Q ← 122'd, GOTO[sink3], c2, at[7,10,MiscIn];
TOS ← VersionHi, GOTO[MiscVers], c2, at[8,10,MiscIn];
{**}{Q ← 122'd, GOTO[sink3], c2, at[09,10,MiscIn];}{MP9122}
{Q ← 122'd, GOTO[sink3], c2, at[0A,10,MiscIn];}{MP9122}
TOS ← uFLmode, IBDisp, L2 ← L2.0, GOTO[MiscInEnd], c2, at[0B,10,MiscIn];
Q ← 122'd, GOTO[sink3], c2, at[0C,10,MiscIn];{MP9122}
Q ← 122'd, GOTO[sink3], c2, at[0D,10,MiscIn];{MP9122}
Q ← 122'd, GOTO[sink3], c2, at[0E,10,MiscIn];{MP9122}
Q ← 122'd, GOTO[sink3], c2, at[0F,10,MiscIn];{MP9122}
MiscInEnd:
TOSH ← smallpl, L2 ← L2.0, DISPNI[OpTable], c3;
MiscVers:
TOS ← TOS LRot8, c3;
TOS ← TOS or VersionLo, c1;
IBDisp, L2 ← L2.0, TOS ← TOS or 1, GOTO[MiscInEnd], c2;
{*****************************************************************************
OUTPUT Output
*****************************************************************************}
OUTPUT:
MAR ← S ← [rhS, S + 0], Xbus ← uTOS, XDisp, CANCELBR[$, 0F], c1, at[0E,10, MiscDisp];
S ← S - 2, DISP4[MiscOut], c2;
{**}{IOPOData ← MD, GOTO[OutEnd], c3, at[0,10,MiscOut];}
IOPCtl ← MD, GOTO[OutEnd], c3, at[1,10,MiscOut];
{**}{KOData ← MD, GOTO[OutEnd], c3, at[2,10,MiscOut];}
TT ← MD, GOTO[OutSetFPmode], c3, at[2,10,MiscOut];
KCtl ← MD, GOTO[OutEnd], c3, at[3,10,MiscOut];
EOData ← MD, GOTO[OutEnd], c3, at[4,10,MiscOut];
EICtl ← MD, GOTO[OutEnd], c3, at[5,10,MiscOut];
DCtl ← MD, GOTO[OutEnd], c3, at[6,10,MiscOut];
TT ← MD, GOTO[OutSetBBTime], c3, at[7,10,MiscOut];
TT ← MD, GOTO[OutSetOpt], c3, at[8,10,MiscOut];
PCtl ← MD, GOTO[OutEnd], c3, at[9,10,MiscOut];
TT ← MD, GOTO[OutMCtl], c3, at[0A,10,MiscOut];
{**}{ Q ← 120'd, GOTO[sink1], c3, at[0B,10,MiscOut];}{MP9120}
EOCtl ← MD, GOTO[OutEnd], c3, at[0C,10,MiscOut];
KCmd ← MD, GOTO[OutEnd], c3, at[0D,10,MiscOut];
TT ← MD, GOTO[OutPPort], c3, at[0E,10,MiscOut];
POData ← MD, GOTO[OutEnd], c3, at[0F,10,MiscOut];
OutSetFPmode:
uFLmode ← TT, GOTO[IB.nop], c1;
OutSetBBTime:
uBBTime ← TT, GOTO[IB.nop], c1;
OutEnd:
Noop, GOTO[IB.nop], c1;
OutPPort:
PPort ← TT, GOTO[IB.nop], c1;
OutSetOpt:
uLispOptions ← TT, GOTO[IB.nop], c1;
OutMCtl:
MCtl ← TT, GOTO[IB.nop], c1;
{*******************************************************************
READPRINTERPORT 3 clicks
*******************************************************************}
@READPRINTERPORT: opcode[164'b],
MAR ← S ← [rhS, S + 1], c1;
ReadRet:
MDR ← TOSH, S ← S + 1, BRANCH[$, ReadCarry, 1], c2;
Ybus ← S xor uStkLimO, ZeroBranch, c3;
MAR ← [rhS, S + 0], BRANCH[$, ReadStkLim], c1;
MDR ← TOS, c2;
TOSH ← smallpl, c3;
TOS ← PPort, GOTO[IB.pc1], c1;
{page cross:}
ReadCarry: S ← S + 0FF, c3;
MAR ← [rhS, S + 0], GOTO[ReadRet], c1;
{Stack Limit:}
ReadStkLim: MDR ← TOS, c2;
TOSH ← smallpl, c3;
TOS ← PPort, c1;
, c2;
PC ← PC + PC16, GOTO[StackOverflow], c3;
{*******************************************************************
WRITEPRINTERPORT 1 click
*******************************************************************}
@WRITEPRINTERPORT: opcode[165'b],
PPort ← TOS, L2 ← L2.0, c1;
PC ← PC + PC16, IBDisp, c2;
uPPsave ← TOS, L2 ← L2.0, DISPNI[OpTable], c3;
{*******************************************************************}
logout: TT ← 55{password to mesa}, c2;
uLispBootMsg ← TT, c3;
Bank ← LOGOBank , c1; {MPL 1-Jan-84 13:20:12 Changed for Domino 10}
TT ← 0, c2;
rhRx ← Rx ← uIOPage, CROSS[LOGOUT] c3;
Off: MAR ← [rhRx, IOPage.ProcessorCommand+0], c1, at[LOGOUT];
MDR{4} ← 4, c2;
Noop, GOTO[Off], c3;
Burdx:
Rx ← 41, CANCELBR[$, 0F], c1;
DCtl ← Rx LRot0, c2;
IOPCtl ← 1, GOTO[Reset], c3;
{ E N D }