Interrupts sind normalerweise schneller als Polling, also würde ich Interrupts benutzen.
Dann ist der Ablauf:
- Menüpunkt Kopiere von Floppy A auf Floppy B
- Setze Variablen im Ram
- Aktiviere Interrupts für beide Floppys
- Kopiere von A in Ram
- ... Erlaube Menüwechsel...
- Interrupt: Lesen von A fertig
- Lese Variablen
- Schreibe auf B
- Interrupt ende
- Interrupt: Schreiben auf B fertig
- Lese Variablen
- Lade von A in den Ram
- Interrupt ende
Und alles darf, wenn die Interrupts fliegen, keine anderen Register überschreiben und die Variablen nicht in einen Zustand geraten, dass irgendwas falsch geschrieben wird.
Ansonsten hört es sich doch einfach an oder? (PS wenn jemand das Floppy Öffnet muss auch reagiert werden...).
- Interrupt: Fataler User Error Dau hat Disc aus Floppy entfernt
- Breche Kopieren ab
- Interrupt ende