RIDE 1.6 SCJoe RW-SpecialAneb verze s "read & write" podporou KryoFluxuJeště to není naprosto kompletní, některé věci ohledně zápisu se budou muset dopilovat (např. aby aplikace upozornila před formátováním stop bez prekompenzace). Avšak vezměme to od podlahy, společně s letmou instruktáží jak nové věci používat - FAQs k tomu zatím neexistují, nicméně defaultní hodnoty dialogů stačí jen potvrdit a vše je připraveno na běžnou spolupráci s KryoFluxem. Následující tedy později použiju k sestavení FAQ ohledně detailní přípravy KryoFluxu.
Úprava čtení. Zastabilizoval jsem "FDC-like" dekodéry Keira Frasera a Marka Ogdena zúžením tolerancí od nominálních hodnot. Zřejmě špatně jsem totiž pochopil, že časová odchylka WD řadiče může být na obě strany až osm procent. Jak to tak vypadá, oněch osm procent bude pravděpodobně celková odchylka kolem nominálu (tj. čtyři procenta na obě strany). Čtení se jako mávnutím kouzelného proutku zlepšilo. Že méně může být občas více mě přesvědčily magneticky skvěle zachovalé diskety časopisu Bajt (
jiné vlákno).
Přidání pre-kompenzace. Pointa pre-kompenzace je taková, že každá jednička je na kotoučku (floppy nebo HDD) zaznamenaná jako magnetický puls. Problém je, že ten puls není skokovej s nekonečnou derivací ~|_|~, brž průběžně v čase nabíhá ~\_/~. Při zpětném čtení je tak potřebná magnetická hodnota signalizující jedničku nalezena malinko pozdějš než byla původně zamýšlená během zápisu. Proto je nutno náběžnou hranu začít zapisovat s drobným předstihem. Naopak sestupnou hranu je nutno zpozdit, protože bez pre-kompenzace začne "padat" dřív než je požadováno (nemám průpravu v magnetizmu, neptejte se mě na víc). Aby to nebylo tak snadný, tak pro HD záznam je
doporučen obrácený postup, tj. náběžnou hranu začít zapisovat se zpožděním a sestupnou s předstihem. Skvělé na tom každopádně je, že si aplikace sama pre-kompenzaci pro danou mechaniku/médium odvodí, čili netřeba nic ručně nastavovat - stačí pouze klepnout na "
Determine now…"
Pro ilustraci následuje srovnání čerstvě formátované stopy bez pre-kompenzace (horní část) a s pre-kompenzací - stejná disketa, stejná stopa, stejné sektory, stejná oblast. Není to úplně super-průkazný, ta odchylka je tam cca 150 nanosekund, proto do FAQ zkusím vytvořit
lepší příklad pomocí
horší mechaniky.
Přidána normalizace stop. Pre-kompenzace není všespásná a v manuálu ke KryoFluxu se mimo jiné dočteme, že zapisované stopy by měly projít nějakým komplexnějším analyzátorem (jehož jedním ze závěrečných kroků by měla být pre-kompenzace). V opačném případě, tj. např. při zpětném zápisu Stream souborů obsahujících surovou magnetickou informaci, není zpětná čitelnost záznamu zaručena (doslova "
garbage in, garbage out"). Jaké přesně kroky
DTC.EXE provádí není známo, nicméně v manuálu (a dokumentech Jean Louis-Guérina, který s týmem KryoFluxu spolupracuje/spolupracoval blíže a na jejich foru je velice aktivní) existují vodítka. Ty jsem zpracoval do škrtátka
Use jitter and other corrections a jeho
Settings: (1) normalizace vzdáleností index-pulzů, (2) normalizace počtu buněk mezi index pulzy (data+hodiny), (3) normalizace délek fluxů jejich centrováním do středu inspekčních okýnek, a (4) vlastní invence v podobě "odsazení" všech fluxů od prvního indexu (motivace: některé IPF image systematicky cpou první sektor ihned dvě mikrosekundy za index pulz, což je i na WD řadič příliš brzy). Defaultně jsou zaškrtnuty první tři normalizace, což by v tuto chvíli pro běžné čtení a zápis disket
bez protipirátské ochrany mělo bohatě stačit.
Přidána modifikovatelnost stop. Stopy disket je možné nejen číst a zapisovat, ale také mezitím modifikovat (což je dobré zdůraznit, protože takových aplikací myslím zatím moc není). "Vizuálně nejhezčího" výsledku dosáhnete se zapnutou normalizací stop - i když se modifikovaná data zapisují pouze do časového intervalu původních dat (frekvence se odvodí), může bez normalizace být v
Track Vieweru "vidět," že stopa byla modifikovaná (časový interval a frekvence nejsou beze zbytku dělitelná čísla, takže konec modifikované oblasti většinou nevyjde na nanosekundu přesně do původní oblasti; díky normalizaci jsou interval a frekvence beze zbytku dělitelná čísla).
Přidána verifikace stop. Neverifikují se pouze sektory jako takové, ale
celá stopa včetně mezisektorových mezer, sektorových preambulí atd. - zkrátka stopa zapsaná a zpětně načtená musí být do poslední buňky (data+hodiny) stejná. Resp. "stejná" - ona "stejnost" se zohledňuje od prvního sektoru do 95% stopy. Cokoliv před prvním sektorem je ignorováno (zápis stopy "od indexu po index" se většinou přešvihne a stopa sama sebe částečně přepíše), stejně tak posledních pět procent stopy je ignorováno (kvůli variabilitě otáček mechaniky, a tím variabilnímu celkovému počtu buněk na stopě - pro 2DD flopky jednou 99 tisíc, podruhé třeba jen 98 tisíc buněk). Pro diskety bez protipirátské ochrany je tenhle přístup myslím víc než dostačující, pro diskety s protipirátskou ochranou jej bude nutné ještě dál upravit. Každopádně pokud během verifikace dochází opakovaně k odchylce, budete na problematické regiony stopy upozorněni červeným zvýrazněním (dialog vyskočí sám, netřeba jej ručně vyvolávat; mezi odchylkami se nejsnáz pohybujete
Shift+PgUp/PgDown; a ano, jedná se o Myersův "diff" algoritmus z Unixu
). Níže příklad z magneticky vadné oblasti stopy, kde se data nikdy nezapíšou dobře.
Závěrem: Tato verze je čtením i zápisem odzkoušena pouze na 2DD disketách (3.5" i 5.25", 300 RPM i 360 RPM), HD diskety jsem zatím neřešil (bude nutné zřejmě zvýšit samplovací frekvenci KryoFluxu a opravit tolerance od nominálu pro FDC-like dekodéry) - čili "
use at your own risk"! Bude pořešeno ve finální 1.6 verzi, protože stále tu mám nějaké nedořešené HD resty na stole... Také bych se rád částečně odstřihnul od knihovny CAPS - na čtení je ok, ovšem na tvorbu (např. stop během formátování) není příliš šťastná. Jednak počet sektorů ovlivňuje jak moc blízko sebe jsou (čili např. 12 sektorů á 256 Bajtů bude nevhodně natlačeno blízko k indexu, což ovlivní čitelnost mimo KryoFlux - na mechanice uteče spousta sektorů a bude nutno flopku víckrát protočit) a druhak není úplně dobře připravena na reprodukci protipirátských ochran (např. u
Diskology +3 existuje sektor s oficiální délkou 128 Bajtů, ale reálnou délkou 512 Bajtů, což CAPS knihovna neumí zreprodukovat).
A abych nezapomněl na ty, kteří dočetli až sem - link ke stažení (
Uložto).