BOOLEAN DosCheckInput(VOID) { HANDLE Handle = DosGetRealHandle(DOS_INPUT_HANDLE); if (IsConsoleHandle(Handle)) { /* Save AX */ USHORT AX = getAX(); /* Call the BIOS */ setAH(0x01); // or 0x11 for enhanced, but what to choose? Int32Call(&DosContext, BIOS_KBD_INTERRUPT); /* Restore AX */ setAX(AX); /* Return keyboard status */ return (getZF() == 0); } else { DWORD FileSizeHigh; DWORD FileSize = GetFileSize(Handle, &FileSizeHigh); LONG LocationHigh = 0; DWORD Location = SetFilePointer(Handle, 0, &LocationHigh, FILE_CURRENT); return ((Location != FileSize) || (LocationHigh != FileSizeHigh)); } }
void CPU::_LOOPNZ_imm8(Instruction& insn) { doLOOP(insn, !getZF()); }