Inšpirácia? Pripojiť (takmer) akúkoľvek predpotopnú mechaniku cez USBčko do dnešnej techniky a mať možnosť čítania, ako aj zápisu, dát - či už obrazu celých diskov, alebo jednotlivých súborov. Samozrejme, nejedná sa o profi archivačný nástroj, jedná sa o bastl, vôbec prvý pokus z mojej strany o fotocestu, osadenie SMT švábom vyfúkaného teplovzdušnou pištolou, a nadrátovanie adresných a dátových liniek do niečoho, kde nemusím študírovať datasheety.. Aspoň som si to myslel. Opak bol pravdou.
![Very Happy :D](./images/smilies/icon_biggrin.gif)
Napísal som o tom traktát v EN, ktorý nikto čítať nebude, takže tu to zhrniem v kocke - použil som FDC radič z PC karty, šikmákom opajcovaný DP8473 za tri doláre kus, pôvodne od National Semiconductor. S kódom, ktorým Arduhnilo komunikuje, je možné použiť bárjaký PC kompatibilný radič, iba sa musí správne zapojiť - mikrokód je kompatibilný s NEC uPD765, taký kvázištandard. To DPčko som tu použil preto, lebo som ho mal ako zopár náhrad do SCSI kariet Adaptec a Seagate, kde v jednej bol vadný a musel som ho nahradiť. K rozbehaniu stačí kryštál a bižutéria pre diskriminátor PLL.
Arduino dosku som použil Mega2560, znova šikmácky pajc, čo mi ostal ešte z experimentov 3D tlačiarne RAMPS/RepRap, aj s displejom - originál tu ozaj netreba. Komunikuje to cez 128x64 displej, možno použiť bárjaký ktorý podporuje Oli Krausova u8g2 knižnica, plus PS/2 klávesnica. Oboje sa dajú vypnúť, potom sa komunikuje priamo cez USB alebo sériový port, príkazovým riadkom "a la" DOS. So zapnutým displejom a klávesnicou sa sériák používa iba prenos súborov a obrazov diskov, počítač to nutne nevyžaduje - základné "dosovské" operácie to zvládne na displej - formátovanie, verifikácia, čítanie súborov, mazanie, jednoduchý traverz cez adresáre, výsyp obsahu. (Nie na CP/M diskoch, tam adresáre neexistujú.)
Pôvodná inšpirácia vychádzala z projektu ArduinoFDC, ktorý nadrátoval floppy mechaniku na arduhnilo napriamo bez radiča, konkrétne pre Uno, lenže to nebolo úplne spolahlivé, diskové prenosy častokrát skapali na CRC chybách či "vadných sektoroch" (ktoré neboli vadné, iba ich časovanie rozbilo), a navyše to bolo šeredne pomalé - dokázalo to pracovať iba s jedným sektorom naraz a odzrkadliť jednu stupidnú disketu trvalo vyše desať minút. Plus, podporovalo to iba 4 formáty diskov.
S týmto bastlom, kde používam AVR Mega2560, je k dispozícii trocha viac RAM, takže je možné použiť väčší diskový buffer a riešiť viac sektorov naraz - 1.44MB 3.5" idú za tri minúty a štyridsať sekúnd miesto desiatich, päťpalce do dvoch minút, osmipalce do minuty. Ako experiment som tomu dorobil podporu na čítanie 250K CP/M (MIKROS) osmipalcov + jednoduchý zápis (mazanie). Je možné ešte nahodiť úplne divné geometrie či veľkosti sektorov + to uložiť do EEPROM, aby si ich arduhnilo pamatalo i po reštarte.
To pre začiatok stačí. Koho to zaujíma - takto to pracuje s 8", 5.25" a 3.5" mechanikami, schéma je tu (podstatný je iba ten šváb, zvyšok je podporná bižuteria); ako vznikal plošák som riešil vo "vkladaní zaujimavých obrázkov".
Maximálny počet mechaník, ktoré sa dajú na jeden radič nastaviť naraz, je 4 - ja používam 2, nechcelo sa mi letovať dve kolíkové lišty.
No a keďže Arduhnilo na rozdiel od PC nemá DMA radič, takto nejak vyzerá komunikácia s FDC. Pol kódu je čakanie na Godota, druhá ošetrovanie chýb. Obsluhu prerušenia som radšej napísal v asembleri, pretože by sa mala vrátiť do 6 mikrosekúnd - toľko trvá arduiňáckemu overhead pred tým, než vôbec odovzdá riadenie samotnej obsluhe
![Very Happy :D](./images/smilies/icon_biggrin.gif)
Summa summarum:
,,Teda, to muselo dát příšernou práci. Přitom taková blbost, co?''