Es ist mir ein Rätsel, warum auch das nicht funktioniert; Es wird einfach ignoriert. Ich poste hier mal den relevanten Code. Irgendwo muss ich einen Fehler gemacht haben:
keyboard.c
char keyboard_handler(int show) {
if (ignore_keypress == 1) return 0;
volatile char scancode=inb(0x60);
if (!(scancode & 0x80)) {
if (show == 1) print_char(kbdus[(short)scancode], 4*160+12, 0x02);
return kbdus[(short)scancode];
}
return 0;
}
main.c
while(I_had_enough == 0)
{
ignore_keypress=1;
PlayMusic();
print("Drücke Enter, um die Töne nochmal zu hören", 15*160+12, 0x0E);
print("oder eine andere Taste, wenn du genug hattest.", 16*160+12, 0x0E);
ignore_keypress=0;
while(keyboard_handler(0) == 0);
if (keyboard_handler(0) == '\n') {
I_had_enough=0;
}
else {
I_had_enough=1;
}
ignore_keypress=1;
}
ignore_keypress=1;
cls(15*160+12, 42);
print("Drücke 'r' um den PC neuzustarten..", 20*160+12, 0x04);
cls(16*160+12, 39);
ignore_keypress=0;
while (keyboard_handler(1) != 'r');
print("Restart...", 4, 0x07);
restart_pc();
Habe ich hier einen Fehler gemacht?