So am rande: Track == Cylinder, richtig?
Habe mich vom unteren code verabschiedet. Die unteren, freien Sektoren reserviere ich für spätere Zweckte.
Nun beginne ich beim 2. Cylinder. (Also Cylinder 1).
Dabei habe ich wider probleme:
erstmal code:
mov ax, 0x1000
mov es, ax
mov bx, 0 ; Zieladresse(es:bx)
mov ah, 2 ; Funktion 2 (Lesen)
mov al, 36
mov cx, 0x0101
xor dx, dx
int 0x13
So, nun zum Fehler:
erstmal sei gesagt, dass ich vorher das ganze segment 0x1000 prüfe (also lesen und schreiben) - ich kann lesen und schreiben. Ich weiß dass es eigentlich nicht nötig ist.
Desweiteren wird vorher das LW resettet
Fehlerbeschreibung:
int 0x13 wird nicht mehr verlassen (hängt sich auf), die LED des Diskettenlaufwerks leuchtet.
So: nun das komische an diesem Fehler:
Wenn ich nur 1 oder 2 Sektoren aufmal lese, funktioniert alles, bei 3 oder mehr kommt es zu dem Fehler
Getestete Kombinationen (Startsector+anzahl)
1+2, 3+1, 3+2, 4+2, 6+2 OK
1+3, 3+5, 3+3, 4+3, 4+4, 6+3 Fehler