Diit.cz - Novinky a informace o hardware, software a internetu

Retro Floppy Test I. - jak jsme se honili za každým kilobajtem

3,5″ HD disketa
Dnes se podíváme zpátky do minulosti na to, jak jsme se honili za každým kilobajtem na disketě. V prvním dílu seriálu plánovaném jako třídílný začneme rozšiřováním klasické kapacity 1,44 Mega…

Kapitoly článků

HD-COPY - čtení diskety

U mě byl velice oblíbeným programem HD-COPY ve verzi 2.0a, jehož autorem je Oliver Fromme. Program jsem si oblíbil především pro jeho rychlost, sám autor tvrdí, že to byl nejrychlejší program pro práci s disketovými mechanikami. Zároveň při formátování nahrával do boot sektoru disket jednoduchý program, který, pokud se nejednalo o systémovou disketu, automaticky nabootoval z pevného disku, takže jste se nemuseli při startu počítače a disketě zapomenuté v mechanice (víte, že se jim dříve říkalo „šachty“? ;) setkávat s hláškami typu Non system disk or disk error a podobně.

Program uměl formátovat i na vyšší kapacitu a uměl nastavit i počet použitelných stop, a to až do 84, což v mnohých 3½″ mechanikách nebyl problém. Na stopu dokázal nacpat klasicky až 21 sektorů, což bylo něco jako „tradiční maximum“. Samozřejmě pak bylo potřeba, aby byl pro podporu těchto speciálních formátů zaveden příslušný rezidentní program (v podstatě ovladač), jinak si s tím operační systém obvykle nevěděl rady, tedy minimálně klasický DOS (do 6.22) určitě ne (a ani první Windows 95). Oliver dostal povolení od autora FDFORMATu přibalit za tímto účelem jeho FDREAD.

HD-COPY - formátování 82 stop a 21 sektorů na stopu

Tyto speciální programy, ač běžely třeba i ve Windows, bylo každopádně lepší spouštět tzv. „v čistém DOSu“, aby měly k řadiči a k disketové mechanice přímý a ničím nerušený přístup (a že Windows v té době uměly být slušným „disturbátorem“ ;). HD-COPY nevyjímaje. Běží sice i pod Windows XP, ale už nemá přístup přímo k řadiči, zprostředkovává mu ho právě operační systém, což znamená, že program běží pomaleji a nemusí pracovat dle očekávání. Já si každopádně pro jednoduchost vytvořil tzv. „záchrannou disketu“, kde je čistý DOS 8.0 z Windows Me, takže jsem programu vytvořil takřka ideální podmínky (ano, existují hacky, jak Windows Me přinutit bootovat do DOSu, ale s ohledem na známou „stabilitu“ tohoto systému jsem do něj nechtěl zasahovat víc, než by bylo zdrávo – na všechno jsem šel standardními nenásilnými metodami). Akorát rychlost klávesnice jsem si nastavil „trošku násilně“ (v Setupu desky tato položka zrovna chybí), aby se s tím dalo dělat (oprášil jsem znalosti strojového kódu a udělal zpaměti urychlovač klávesnice kb.com na 9 bajtů: B8 05 03 BB 00 00 CD 16 C3).

Rychlost diskety naformátované na 21 sektorů na stopu je každopádně nižší než rychlost diskety naformátované na menší počet sektorů na stopu (zhruba poloviční). Důvodem je, že sektory jsou u sebe tak blízko, že musejí být prokládané ob sektor, takže jedna stopa se čte na dvě otáčky. Názorně to demonstruje výpis z programu 765DEBUG (součást 2M-INFO), který k disketové mechanice přistupuje na nejnižší možné úrovni:

765Debug - čtení 21 sektorů na stopu uspořádaných na přeskáčku

Sice jde udělat sektory tak, aby byly jeden za druhým, ale tyhle běžné programy a jejich běžné obslužné rezidenty nepřistupují k disketové mechanice na tak nízké úrovni, aby si s tím dokázaly poradit. Disketa naformátovaná na 21 sektorů na stopu bez prokládání je typicky nečitelná (přestože 765DEBUG ji přečíst dokáže).

765Debug - čtení po sobě jdoucích 21 sektorů na stopu

Pozn.: 765DEBUG funguje tak, že nečte sektory od prvního, ale prostě přečte, co mu kolem hlavy nastavené na určitém místě proletí. Ani není účelem přečíst celou stopu, ale 23 po sobě jdoucích sektorů, bez ohledu na to, který bude první. To, že na uvedených screenshotech jsou sektory č. 1 zrovna jako první, je tím, že jsem tak dlouho obnovoval čtení, až se sektor č. 1 dostal na první pozici. Teprve pak jsem ho típnul ScreenThiefem.

Mimochodem sektor, který se čte nejdéle, je poslední fyzický na zadané stopě (přičemž nemusí mít nutně číslo posledního sektoru, sektory je možné ve skutečnosti číslovat naprosto dle libosti). Ten má delší mezeru až do konce stopy, neb další sektor už by se tam nevešel, takže je to vyplněno právě tou mezerou. A protože je ta mezera součástí sektoru, trvá to o chlup déle, než se celý přečte, přestože užitečných dat je tam stejně jako v ostatních sektorech).

U diskety s 20 sektory na stopu a méně mohou být sektory bez prokládání, takže se s takovou disketou dá pracovat běžnou rychlostí (stopa se čte na jednu otáčku). Bavíme se stále o 3½″ HD disketě, 5¼″ měla ten limit níže.

FDTR - rychlost diskety s 21 sektory na stopuFDTR - rychlost diskety s 20 sektory na stopu
FDTR - Rychlost práce s 3½″ HD disketou: vlevo 21 sektorů na stopu, vpravo 20 sektorů na stopu

Rychlost lze samozřejmě zvýšit ještě dalším způsobem, především pokud jde o tradiční přístup z DOSu, a to tzv. posunutím sektorů (sector-sliding) na stopě vůči fyzickému začátku stopy. Při formátování lze sektory přečíslovat, a to např. tak, aby při sekvenčním čtení (jiného se toto zrychlení ani netýká) mohla hlava při přesunutí na další stopu přistupovat k sektorům akorát od prvního logického a nemuselo se čekat, až se disketa otočí tak, aby se k hlavě dostal zrovna první sektor.

FDFormat - formátování se sector-slidingem
FDFORMAT - formátování se sector-slidingem
(mimochodem zajímavost: FDFORMAT formátoval diskety pozpátku, od poslední k první stopě)

Toto uměl program FDFORMAT, byť se mu zrovna údaje o posunutí sektorů musely nastavit ručně (optimální nastavení se zjišťovalo metodou pokus-omyl, protože u každé mechaniky to mohlo být trochu jinak, neboť otáčky všech mechanik nejsou úplně přesné, nicméně existovalo nějaké obecné doporučení, které bylo vhodné pro většinu mechanik, a to je posunutí o 2 sektory při změně strany a o 3 sektory při změně stopy).

FDFormat - výsledek formátování
FDFORMAT - výsledek formátování

Jestli se nepletu, systémy Windows běžící nad DOSem (tedy Windows 95 až Windows Me, ale možná to bylo až u Windows 98, přesně nevím) ve 32bitovém režimu přístupu k disketě toto řešily automaticky tím, že přečetly celou stopu bez ohledu na to, jaký sektor byl právě požadován, a až po přečtení byl z paměti vybrán požadovaný sektor nebo sektory, bylo-li jich víc, případně celá stopa, ovšem v korektním pořadí sektorů (systém nečekal, až bude pod hlavou probíhat první sektor, přečetl stopu tak, jak zrovna kolem hlavy letěla a až pak si ji v paměti srovnal). Ve Windows NT a vyšších se tento zajímavý způsob přístupu k disketě nepoužíval.

Tento způsob čtení je samozřejmě rychlejší, pokud jde o čtení sekvenční, ale pomalejší, pokud jde o čtení náhodné, protože se vždy načetla celá stopa. Zápis byl realizován po sektorech (pokud nebyl požadavek zapsat celou stopu), protože jinak by se musela kvůli jednomu sektoru celá stopa přečíst, upravit a zase zapsat, což by bylo kontraproduktivní. Asi vás zajímá, proč to zmiňuji … inu proto, že program 2M formátoval diskety způsobem, který při změně jednoho sektoru skutečně musel měnit část stopy, ne-li celou stopu. Ale o tom až na další straně.

HD-COPY při čtení přistupoval k disketám způsobem, který ignoroval posunutí sektorů. Přečetl celou stopu a až v paměti si to přerovnal. Proto byl tak rychlý. Poměrně rychlý měl i zápis, ale jak to dělal, k tomu se Oliver v dokumentaci moc nevyjadřoval.

Program měl ještě i další funkce, jedna z těch méně klasických byla použití čistící diskety. Program pak po krocích posunoval hlavy přes celou mechaniku (max. do 80 stop) tam a zpět, čímž je o[t/d]íral o disketu, což mělo jakože hlavy vyčistit. Čistící disketa samozřejmě nebyla čitelná (byl to speciální šmidlační kotouček v disketovém pouzdru, na který se nakapal dodávaný čistící přípravek), což programu nijak nevadilo.

HD-COPY - použití čistící diskety
Kapitoly článků

WIFT "WIFT" WIFT

Bývalý dlouholetý redaktor internetového magazínu CDR-Server / Deep in IT, který se věnoval psaní článků o IT a souvisejících věcech téměř od založení CD-R serveru. Od roku 2014 už psaní článků fakticky pověsil na hřebík.

více článků, blogů a informací o autorovi

Diskuse ke článku Retro Floppy Test I: jak jsme se honili za každým kilobajtem

Středa, 7 Srpen 2013 - 12:02 | randomofamber | Jasně, QEMM ... A myslím, že měl i podporu 2.88...
Středa, 7 Srpen 2013 - 11:21 | WIFT | Na to byl fantastickej QEMM. Sice byl občas tak...
Středa, 7 Srpen 2013 - 10:10 | randomofamber | Nádherný článek a pěkné technologické retro. Já...
Úterý, 6 Srpen 2013 - 14:08 | WIFT | To je pěkné, šikovnej, vyzkouším :). Díky.
Úterý, 6 Srpen 2013 - 00:52 | Martin Kolar | Komercni instalacky byly aktualni kolem roku 92-...
Úterý, 6 Srpen 2013 - 00:14 | Izak | Ja pak delal opak, sbiral jsem skutecne vadne...
Úterý, 6 Srpen 2013 - 00:10 | Izak | No zkusil bych freedos ;-)) ze bych zkusil,...
Úterý, 6 Srpen 2013 - 00:08 | Izak | No za to muze sytem, ze tys mel windows ;-)
Úterý, 6 Srpen 2013 - 00:07 | Izak | Ha deti si hraji, no mi na linuxu nic neresili,...
Pondělí, 5 Srpen 2013 - 23:52 | Izak | Mainframy nejsou zadny SW zazrak, jsou dobre jen...

Zobrazit diskusi