[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