{PokeDevice.mc, HGM, 4-Nov-84 6:29:45}
Reserve[0F5F, 0FFF]; { section used by the CP Kernel }
SetTask[7]; StartAddress[Go];
RegDef[R0,R,0];
RegDef[RH0,RH,0];
Go: ClrIntErr, c1, at[0];
Noop, c2, at[00FF];
Noop, c3, at[0F00];
Loop: IB ← 0, {Scope sync} c1;
stackP ← 8, c2;
Noop, c3;
IOXIn: R0 ← EIData, {0} c1;
R0 ← EStatus, {1} c2;
R0 ← KIData, {2} c3;
R0 ← KStatus, {3} c1;
KStrobe, {4} c2;
R0 ← MStatus, {5} c3;
R0 ← KTest, {6} c1;
EStrobe, {7} c2;
R0 ← IOPIData, {8} c3;
R0 ← IOPStatus, {9} c1;
R0 ← ErrnIBnStkp, {A} c2;
R0 ← RH0, {B} c3;
R0 ← ibNA, {C} c1;
R0 ← ib, {D} c2;
R0 ← ibLow, {E} c3;
R0 ← ibHigh, {F} c1;
Noop, c2;
Noop, c3;
FYOut: IOPOData ← 0, c1;
IOPCtl ← 0, {1} c2;
KOData ← 0, {2} c3;
KCtl ← 0, {3} c1;
EOData ← 0 {4} c2;
EICtl ← 0, {5} c3;
DCtlFifo ← 0, {6}, c1;
DCtl ← 0, {7} c2;
DBorder ← 0, {8} c3;
PCtl ← 0, {9} c1;
MCtl ← 0, {A} c2;
R0 ← TStatus, {B} c3;
EOCtl ← 0, {C} c1;
KCmd ← 0, {D} c2;
R0 ← TIData, {E} c3;
POData ← 0, {F} c1;
Noop, c2;
Noop, c3;
FZNorm: Refresh, {0} MesaIntRq, {to use FY} c1;
IBPtr ← 1, {1} c2;
IBPtr ← 0, {2} c3;
R0 ← R0 + PC16, {3} L0 ← 0, {use FX} c1;
Noop, {4} {←DES, Beware, Bank← in book} c2;
fZpop, {5} c3;
push {fZpush}, {6} L0 ← 0, MesaIntBr, c1;
Ybus ← 0, AltUaddr, {7} CANCELBR[$], c2;
Noop, {8} c3;
Noop, {9} {DES←} c1;
Noop, {A} {Port←, But Mass isn't ready} c2;
Noop, {B} {←Port} c3;
Xbus ← R0 LRot0, {C} c1;
Xbus ← R0 LRot12, {D} c2;
Xbus ← R0 LRot8, {E} c3;
Xbus ← R0 LRot4, {F} c1;
Noop, c2;
Noop, c3;
Noop, c1;
Noop, c2;
GOTO[Loop], c3;