public override void AssembleNew(Cosmos.Assembler.Assembler aAssembler, object aMethodInfo) { new CPUx86.ClrInterruptFlag(); /* Clear all keyboard buffers (output and command buffers) */ new CPUAll.Label(".waitBuffer"); XS.Mov(XSRegisters.DX, 0x64); XS.InFromDX(XSRegisters.AL); XS.Test(XSRegisters.AL, 2); XS.Jump(ConditionalTestEnum.NotEqual, ".waitBuffer"); XS.Mov(XSRegisters.AL, 0xD1); XS.Mov(XSRegisters.DX, 0x64); XS.OutToDX(XSRegisters.AL); new CPUAll.Label(".clearBuffer"); XS.Mov(XSRegisters.DX, 0x64); XS.InFromDX(XSRegisters.AL); XS.Test(XSRegisters.AL, 2); XS.Jump(ConditionalTestEnum.NotEqual, ".clearBuffer"); XS.Mov(XSRegisters.AL, 0xFE); XS.Mov(XSRegisters.DX, 0x60); XS.OutToDX(XSRegisters.AL); new CPUAll.Label(".loop");//failed... halt XS.Halt(); XS.Jump(".loop"); }