Ich habe nochmal eine Frage zur Frequenz. Eigentlich bräuchte ich wirkliche Millisekunden, also, dass jede Millisekunde IRQ 0 ausgelöst wird. Die Begründung, warum das nicht ging, war, dass der counter 16-bit groß ist. Aber warum kann der counter nicht größer sein?
Zum Beispiel
int _sleep(int millisec) {
	if (_slept != 1) {
		int counter=1193182;
		IRQ_install_handler(0, sleep_ret);
		port_out(0x43, 0x36);
		port_out(0x40, counter & 0xFF);
		port_out(0x40, (counter >> 8));
		port_out(0x40, (counter >> 16));
		port_out(0x40, (counter >> 24));
	}
	while (_slept < millisec);
	slept=0;
	_slept=0;
	return 0;
}
void sleep_ret(struct regs* null) {
	slept=1;
	_slept++;
}
führt bei mir dazu, dass IRQ 0 häufiger, aber irgendwie unregelmäßiger ausgelöst wird. Hat jemand einen Vorschlag?[/code]