[SharpMZ] Chovani realneho FD radice u disket s "cizim" formatem
Michal Hucik - ORDOZ
ordoz na ordoz.com
Úterý Leden 26 15:28:36 CET 2016
Vasku,
podle Zdenkova napadu jsem si dal v emulatoru vypsat vsechna mista, na
kterych se pri cteni z FDC kontroluje status.
Tady je seznam adres na kterych byl regPC ve chvili, kdy se pres IN
nacetl status (je to tedy adresa hned za tou instrukci IN ).
V linuxu jsem si ten seznam jeste pomoci sort a uniq malinko zredukoval:
STS: 0xe4fb - 0xff
STS: 0xe5c3 - 0xfc
STS: 0xe5e3 - 0xff
STS: 0xe563 - 0xfb
STS: 0xe577 - 0xfa
STS: 0xe577 - 0xfb
STS: 0xe577 - 0xff
STS: 0xe596 - 0xfc
Podle mne jsi prehlednul zaverecnou kontrolu statusu, ktera probehne na
adrese 0xE5E1 - tam se provede CPL a AND 0xFF a pokud je NZ, tak se
upaluje na error.
Nase stavove stroje uvnitr emulovanych FDC Ti zahlasi chybu o jedno
cteni drive - tam ovsem sharp ROM testuje pouze 0. a 1. bit statusu pres
RRCA. V dobe, kdy doslo na tohle opakovane precteni statusu uz se v
emulaci o zadne chybe nevi, ale realny FDC tady prave place nad
rozlitymi daty.
Plati tedy to co jsem rikal uplne na zacatku - cteni probehne v pohode,
ale status registr hlasti DATA_LOST a tedy se boot nepovede. Howgh!
Otazkou je, zda to nejak fixovat v ramci emulace ... IMHO ani ne ...
jednak se mi nechce :) a jednak by to asi neprineslo nic moc uzitecneho
- jen by se tim zpomalilo cteni z emulovane disketovky.
Nicmene pro hackery dobra zprava: je tu dalsi zpusob jak spolehlive
zjistit, zda se program prave nachazi v emulovanem, nebo v realnem
prostredi ;)
Michal
Další informace o konferenci SharpMZ