{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;