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?