ggf. alten Puffer speichern, dann Folgeblock(s) einlesen ($e03c)
[Wenn der letzte Jobcode 'Lesen' war, dann geht die Routine davon aus, dass
der gesuchte Datenblock bereits durch den 2-Puffer-Modus bereitgestellt
worden ist. Sie versucht dann, wenn der gerade aktive Puffer nicht noch
vorher abgespeichert werden muss, den uebernaechsten Datenblock zu lesen.
Ist der letzte Jobcode 'Schreiben', dann konnte der Folgeblock noch nicht
gelesen werden. Die Routine versucht dann, sowohl den naechsten, als auch
den uebernaechsten Block zu lesen.]
Einsprung von $9F73, $A02F, $A0C3:
9FBF: 20 CE 9D JSR $9DCE T&S des Folgeblocks holen
9FC2: 20 1C 9F JSR $9F1C aktiven Puffer holen
9FC5: 50 16 BVC $9FDD Puffer veraendert ? nein, ==>
aktuellen Puffer speichern, Folgeblock ggf. lesen
9FC7: 20 9A 9D JSR $9D9A Puffer schreiben
9FCA: 20 7D 8D JSR $8D7D Puffer wechseln
9FCD: A9 02 LDA #$02
9FCF: 20 22 94 JSR $9422 Pufferzeiger auf 2 setzen
9FD2: 20 E9 9C JSR $9CE9 War letzter Jobcode 'Schreiben' ?
9FD5: D0 24 BNE $9FFB nein, (Puffer ist bereits gelesen) ==>
9FD7: 20 94 9D JSR $9D94 Folgeblock lesen
9FDA: 4C ED 94 JMP $94ED Jobausfuehrung pruefen
den naechsten und uebernaechsten Puffer bereitstellen
Einsprung von $9FC5:
9FDD: 20 7D 8D JSR $8D7D Puffer wechseln
9FE0: 20 E9 9C JSR $9CE9 War letzter Jobcode 'Schreiben' ?
9FE3: D0 06 BNE $9FEB nein, (Block ist bereits gelesen) ==>
9FE5: 20 94 9D JSR $9D94 Folgeblock lesen
9FE8: 20 ED 94 JSR $94ED Jobausfuehrung pruefen
Einsprung von $9FE3:
9FEB: 20 CE 9D JSR $9DCE T&S des uebernaechsten Blocks holen
9FEE: A5 4D LDA $4D existiert noch ein Block ?
9FF0: F0 09 BEQ $9FFB nein, ==>
9FF2: 20 7D 8D JSR $8D7D Puffer wechseln
9FF5: 20 94 9D JSR $9D94 uebernaechsten Block lesen
[Hier wird die Jobausfuehrung nicht abge-
wartet. In frueheren Commodore-Laufwerken
konnte so der Puffer 'im Hintergrund'
eingelesen werden.]
9FF8: 4C 7D 8D JMP $8D7D Puffer wechseln
Einsprung von $9FD5, $9FF0:
9FFB: 60 RTS
Previous Page / Next Page