fddEMU – lacná alternatíva Goteku či HxC?

Dnes sa spolu bližšie pozrieme na jeden komunitou zatiaľ vcelku prehliadaný projekt, ktorého zámerom je emulácia floppy mechaniky.

Ako mi pribúdali počítače s floppy rozhraním – prípadne len interfejsy samotné – začal som pátrať čím by som nahradil klasickú mechaniku, keďže sa časom znižuje ich schopnosť čítať a zapisovať diskety, ale aj samotné médiá pomaly vyraďujem pre opotrebovanosť či nefunkčnosť.

Cena základného floppy emulátora Gotek sa dnes pohybuje od 25€ vyššie – čo je ešte väčšinou zostava bez (OLED) displeja, ktorý si cucne pár eur navyše. Pri niekoľkých mašinách sa babrať s káblami, prenášať a prepájať jeden Gotek či HxC emulátor nie je veľmi praktické. Preto som uvažoval ako dovybaviť retrokompy niečím malým, šikovným čo by v nich mohlo byť zabudované a veľmi by ma to netrápilo, že takých zariadení potrebujem viac, pretože budú vždy poruke a schopné okamžite poslúžiť zapojené priamo na mieste.

Pri hľadaní úplne niečoho iného (konkrétne náhrady dátového separátora do disketovky Amstrad DD-1), som zakopol o dva zaujímavé počiny – konkrétne ArduinoFDC a fddEMU. Kým ten prvý emuluje FDC kontrolér a vie ovládať originálnu plnokrvnú mechaniku, ten druhý s dôvtipom využil implementáciu MFM kódovania z knižníc toho prvého a dokáže sa ako taká mechanika tváriť. Ako médium odkiaľ obsah diskety číta používa micro SD / TF kartu.

Chvíľu som skúmal ako je elektricky a mechanicky riešené usporiadanie výsledného produktu, ale vyzerá, že autor ho nechal v štádiu prototypu. Projekt je to pomerne mladý, na Githube sa vyskytol len pred 4 mesiacmi a zrejme plní autorovi účel aj pri realizácii systémom “vrabčie hniezdo”. Ja som sa rozhodol posunúť ho bližšie do fázy opakovateľnej realizovateľnosti. Konieckoncov výsledok môžete posúdiť na fotodokumentácii.

Mechanicky som z toho spravil vcelku monštrum, ale stále pomerne kompaktných rozmerov – 53 x 51 x 25 mm. Nad sebou sú umiestnené 4 dosky plošných spojov v poradí od spodu: Arduino Nano, nosná univerzálka – odrezok z rozmeru 5x7cm, SD čítačka a navrchu OLED displej s tlačítkami. Šírka univerzálkej DPS je mierne presahujúca rozmer 2×17 pinovej dutinkovej lišty, ktorú je možné zasunúť priamo do pinového konektora radiča. Preto bolo treba dosku po stranách mierne zúžiť. Ak by sa podarilo navrhnúť dosku, určite by sa dala vyfrézovať priamo do požadovaného tvaru.

Ďalej to už veľká veda nebola, všetko som navzájom pospájal podľa dokumentácie, ktorá je na stránke projektu, jedné čo som zmenil bolo použitie vývodov 10 /DS0 a 12 /DS1 namiesto pôvodných 12 a 14 na 34 pinovom konektore. V priamom pripojení sa totiž neuvažuje prekríženie ako v prípade pripájania mechaniky káblom k radiču v PC.

Zapojenie fungovalo na prvý resp. druhý pokus pričom ma to stálo jedno Nano, na ktorom odišiel stablizátor, lebo som okolo tlačítok vyrobil skrat medzi 5V a GND. Keď už z neho odišiel magický dym, radšej som to celé premeral, skrat našiel a odstránil. A tým pádom som pre istotu už vymenil aj Nano samotné.

Zaujímavosťou je, že samotný projekt nie je do Arduino IDE, ale má štandardný Makefile a kompiluje sa pomocou avr-gcc a avr-g++. Pre moju dosku Nano som do Makefile musel pridať pre operáciu flash rýchlosť komunikácie -b57600:

avrdude -p m328p -c arduino -P $(PORT) -b57600 -U flash:w:$(TARGET).hex

Následne si pripravíte čistú SD kartu, na ktorú nahráte obrazy diskiet so štandardnou PC veľkosťou (viď nižšie) s príponou IMG. Ak si jeden z nich označíte ako boot.img, ten sa sám “založí” pri štarte fddEMU. Stačí teda pripravenú kartu prehodiť z PC do SD čítačky emulátora a naštarovať cieľový systém. V mojom testovacom prípade to bola Delta s D80.

A tu som objavil háčik a to vcelku podstatný. V D80 mini mi fddEMU zobrazil iba 17 prvých súborov vo FAT a potom začal vypisovať nezmysly, skúsil som ho teda zapojiť do MSX. Tam adresár síce vypísal, ale rovnako nahrával nezmysly. Víkend sa pomaly chýlil ku koncu a viac času mi už na pátranie nezostalo. V noci som ale zle spal a hneď ráno som utekal k stroju, kde mám zdrojáky fddEMU. Skompiloval som verziu firmvéru s podporou debug-u a zapol terminál. Aké bolo moje prekvapenie, keď debug vypísal na 9-tom sektore stopy 0, že sa neprepla strana, ale rovno sa prešlo na ďalšiu stopu. A naozaj, opravil som jeden riadok v kóde a DD diskety sa začali veselo načítavať. Nebojte sa, autor už dostal pull request a stihol urobiť aj merge, takže keď si projekt stiahnete po prečítaní tohto článku, bude vám to už pekne fungovať 🙂

Ešte pridám moje osobné zhrnutie vlastností tohto mini-floppy-emulátora.

Výhody:

  • Cena – Nano a SD čítačka vyjdú aj v slovenskom webshope na cca. 6.5€, OLED si scucne od 3 (pri dovoze z Číny) do 6€ pri kúpe lokálne
  • Kompaktné rozmery – fddEMU zaberá v štvorposchodovom usporiadaní plošákov zhruba šestinu objemu Goteku
  • Nevyžaduje floppy kábel – samozrejme závisí ako si ho zmajstrujete. V prípade návrhu dosky by som uvažoval o oboch variantoch – priame zapojenie aj možnosť pridať “ježka” s pripojením na kábel 
  • Emuluje 2 mechaniky naraz
  • Možnosť rýchleho zohnania komponentov, všetky sú stále bežne dostupné aj napriek kremíkovej kríze
  • Relatívne minimum bižutérie, ktoré bežný bastlič iste nájde v šuflíku – aj sám autor priznal, že prvé tlačítko SELECT je nadbytočné, takže ho zapájať nemusíte, ale odpor čo k nemu vedie áno, aby zostal pomer v deliči bez zmeny

Nevýhody:

  • Nepodporuje inú dĺžku sektorov ako 512 bajtov
  • Rozoznáva iba bežné PC kapacity – 1.44MB, 720 a 360kB – čo nie je prekážkou pre bežné radiče k ZX typu D40/D80, prípadne k FDC kontrolérom pre MSX. Pre neštandardne naformátované diskety to bude problém
  • Nie je to hotové zariadenie, ktoré len zoberiete z police a pripojíte. Treba si to postaviť
  • Chýba krabička (zatiaľ 🙂 )

Príjemné emulovanie flopákov želá,
/ikon

3 názory na “fddEMU – lacná alternatíva Goteku či HxC?

  1. It really is waw!!! , if it goes to 8 bit to emulate the normal units of 1.44, 7.20 kb
    I’m from Romania and we have a zx spectrum clone that uses normal disk drives for CP/M.
    Does this emulator work on these computers?

    Thank you

  2. Hi Nicolae,
    this emulator works well with any standard PC compatible format images like 360k, 720k or 1.44M with 512 byte sectors.
    I was not able to adjust the code for 256 byte sectors as required by standard TR-DOS ROM for Betadisk.
    Other FDC controllers and respective OSes works fine with it on ZX Spectrum too – examples: Didaktik D40/80, Spectrum +3 etc.

Pridaj komentár