Úgy látom szabad a gazda...
Itt a hiba (az 1.3-as EXDOS ROM-ban):
LE1BB: LD A,0B4H ;180-as hibakód, Not a DOS disk
le1bd: OR A
RET
...
DEC DE ;szektorok száma-1, =utolsó logika szektor sorszám
CALL LE28F ;sávok számának kiszámítása, és ellenõrzés
;C lesz, ha a szektorok+rejtett szektorok száma több mint FFFFH
;vagy ha a lemez szektorainak száma/(szektor/sáv)/oldal nem egész szám
JR C,LE1BB ;hibakóddal visszatérés
LD A,D ;sávok száma
OR A ;több mint 255?
RET NZ ;visszatérés ha igen
LD A,E
DEC A
CP 0FEH ;ha sávok száma 255, vagy 0
JR NC,LE1BB ;hibakóddal kilépés
LD (IX+01H),E ;legnagyobb sáv sorszámának letárolása
Amikor a sávok számát ellenõrzi, akkor két esetnél rendesen hibakóddal visszatérésre ugrik. Viszont abban az esetben, ha a sávok száma 255-nél nagyobbra jön ki, elfelejtettek a hibakódra ugorni, csak egy sima RET NZ van, így az A aktuális értéke (=sávok száma felsõ bájt) adódik vissza mint hibakód, így jöhetnek a kamu hibaüzenetek. A korábban emlegetett megfelelõ paraméterek a konkrét kiválasztott hibaüzenet produkálásához: oldalszám: 1, szektor/sáv: 1, az összes szektor száma alsó bájt: 0, felsõ bájt: a kiválasztott hibaüzenet kódja+1
A helyes kód az lenne, ha a RET NZ helyén egy JR NZ,E1BB lenne. Viszont utólag ez már nem fér be...
Úgy viszont igen, ha össze vonjuk a CALL után a C flag vizsgálatát a D regiszter tartalmának vizsgálatával: