示例#1
0
static int
vidc_ischar(void)
{

    v86.ctl = V86_FLAGS;
    v86.addr = 0x16;
    v86.eax = 0x100;
    v86int();
    return (!V86_ZR(v86.efl));
}
示例#2
0
int
getc(int fn)
{

	/*
	 * The extra comparison against zero is an attempt to work around
	 * what appears to be a bug in QEMU and Bochs. Both emulators
	 * sometimes report a key-press with scancode one and ascii zero
	 * when no such key is pressed in reality. As far as I can tell,
	 * this only happens shortly after a reboot.
	 */
	v86.ctl = V86_FLAGS;
	v86.addr = 0x16;
	v86.eax = fn << 8;
	v86int();
	return fn == 0 ? v86.eax & 0xff : (!V86_ZR(v86.efl) && (v86.eax & 0xff));
}