Wednesday, April 27, 2016

Floppy Types

Kedysi sa používali 8 palcové diskety a mali kapacitu cca 80kB. Kódovanie dát bolo FM, prípadne GCR, prípadne niečo iné. Preskočme úplný pravek a poďme do dôb našeho mládí. PMD85 diskety nemalo. ATARI 800XL malo 5.25 palcovú disketu o kapacite 80kB. V ATARI ST a AMIGE sa používali DD 720kB diskety. Mali rozmer 3.5". Vtedy sa už prechádzalo na MFM kódovanie. Občas sa požívali aj v PC. Ale väčšina PC diskiet bola HD s kapacitou 1.44MB. Vysvetlím čo je DD a HD, počet stôp a čo ovplyvňujú otáčky. Vysvetlím aj prečo je rozdiel medzi 5.25" 720kB disketami v DD a HD mechanike.

RozmerHustotaStopySektoryKapacitaOtáčkykbps
5.25"DD409360kB300250
5.25"HD80151.2MB360500
3.5"DD809720kB300250
3.5"HD80181.44MB300500

Počet sektorov platí pre PC. Sektory mali veľkosť 512 byte.

Zaujímavé sú stĺpce sektory, otáčky a kbps (bits per second). Porovnaním 1 alebo 3 so 4 riadkom tabuľky vidno, že počet sektorov je dvojnásobný, preto je aj dvojnásobná bit rate. Porovnaním 1 a 2 riadku tabuľky vidno, že počet sektorov nie je dvojnásobný. 15/9 nie je 2. Ale je vyššia rýchlosť otáčania. Výpočtom (15/9) x (360/300) dostaneme 2. Preto je aj hodnota bit rate 500kps v druhom riadku správna.

Niektoré 8" diskety sú označené SD. Znamená to single density. V podstate to označenie nemá význam. Pretože hovorí len to, že disketa je vhodná pre zápis kódovaním FM (360rpm, 26 sektorov, veľkosť sektora 128 byte), bit rate 250kbps. DD znamená double density. Odvodené je to od prechodu z FM na MFM kódovanie. Prechodom na MFM (elimináciou clock pulzov) je pri tej istej frekvencii záznamu/hustote magnetických prechodov zdvojnásobená hustota informácie/kapacita a tým aj bit rate. Pri 8" to znamenalo 500kps a dvakrát vyššiu kapacitu (26 sektorov po 256 byte). Kedže bolá tá istá frekvencia, tak aj materiál diskiet ostal rovnaký. Len sa začali označovať ako DD a predávali sa drahšie :-)

Späť ku menším rozmerom 5.25" a 3.5". Počet sektorov je tu nižší, bit rate polovičné. Už sa používalo iba MFM. DD diskety boli základné. Umožňovali pri určitej rýchlosti povrchu média (300rpm a menší priemer 5.25" vs 360rpm a priemer 8")bit rate 250kbps. HD(high density) pri tej istej rýchlosti média 500kbps. (riadky tabuľky 2,4) Keď zvýšime otáčky, musíme ubrať počet sektorov. To je prípad riadku 2. Pri vyššej kontaktnej rýchlosti hláv, sú nižšie nároky na kvalitu média. Vyššiu hustotu záznamu HD umožňuje vyššia koercivita média a kvalitnejšie hlavy schopné vyššieho prúdu zápisu a tým silnejšieho magnetického poľa. (pamätá si ešte niekto na Metal kazety Type IV? max 22000Hz)(R2R dosiahol 30000Hz aj na normálkach páskach, ale rýchlost 38cm/s)

Koercivita floppy diskiet:
8" all formats: 300 oersteds
5.25" double density (360 KB): 300 oersteds
5.25" quad density (720 KB): 300 oersteds
5.25" high density (1.2 MB): 600 oersteds

3.5" double density (720 KB): 665 oersteds
3.5" high density (1.44 MB): 720 oersteds
3.5" extra-high density (2.88 MB): 900 or 1200 oersteds (unconfirmed)

Mechaniky 3.5" majú vždy 300rpm. Sektorov je buď 9 pri DD, alebo 18 pri HD. Bit rate 250kbps pri DD a 500kbps pri HD.

Mechaniky 5.25" sa otáčajú ako ktorá, ako kedy. DD majú 300rpm. HD majú 360rpm. Ale je tu ale. Niektoré HD sa dajú naswitchovať aj na 300rpm. Prípadne ešte lepšie, niektoré sa dajú naswitchovať inteligentne, aby pre HD diskety (DENSEL signál) mali 360rpm a pre DD diskety mali 300rpm. Ale to nie je štandard. Vždy treba čítať manuál ku konkrétnemu typu mechaniky.

Čo sa stane ak vložíme do 5.25" HD mechaniky DD disketu? V CP/M sa využije 80 tracks/stôp a teda budeme mať pekných 720kB kapacitu (to je tá quad density). Kedže ale HD mechaniky majú otáčky 360rpm, rýchlosť prenosu nebude 250kbps, ale 300kbps. Preto je potrebné mať v BIOS rozdielne parametre pre 720kB v DD alebo HD mechanike. Existujú aj špeciálne 5.25" DD mechaniky s 80 stopami a 300rpm. Napríklad TEAC FD-55F. Pri nej by bola bit rate štandardných 250kpbs a kapacita 720kB. Takže tá istá disketa môže mať rôzne bit rates, podľa toho ako rýchlo sa v mechanike otáča.

Tuesday, April 26, 2016

CP/M BIOS FDD + PMD32SD

CP/M na NCB85 funguje buď s PMD32SD, alebo s disketovými mechanikami, alebo s obidvomi. Osobne mám rád buď jedno alebo druhé. Driver pre každé zariadenie zaberá zbytočné miesto v RAM. Pre PMD32SD stačí nahrať na SD kartu správny obraz a CP/M nabootuje z SD karty. Pre samotné diskety je BIOS tak malý, že sa zmestí aj s CP/M do jednej EPROM a odtiaľ aj nabootuje. Problém je, že je potrebné mať pracovnú disketu CP/M.

Disketu si je možné naformátovať programom FDC.COM. To sa dá aj vtedy ak CP/M nabootuje z PMD32SD s BIOSom pre PMD32SD. Keď potom prejdeme na BIOS iba pre disketovky, tak CP/M nabehne z EPROM a prečíta obsah adresára na diskete. Funguje. CP/M je perfektne spokojné s čistučkou naformátovanou disketou. Ale je tu problém. Pretože disketa je prázdna. Okrem zabudovaných príkazov dir, type, ren, save by nič iné nebolo k dispozícii. Je potrebné dostať na disketu aspoň XMODEM. Pomocou XMODEM už je možné potom preniesť z PC na disketu čokoľvek. Aj CP/M programy ako ASM.COM, DDT.COM, PIP.COM, STAT.COM atď. A samozrejme aj vlastné programy, hry, compilátory, editory, WordStar, BASIC atď.

Lenže ako dostať na disketu ten XMODEM? Pripravil som "quick and dirty" BIOS pre rýchle odskúšanie floppy a prípravu naformátovaných disket. Bootuje z SD karty. Podporuje štyri typy diskiet. Pri boote vypíše menu.


Voľbou čísla sa nastaví typ disketovky. Tento BIOS je veľký. Moc sa mi nechcelo sa s tým hrať a preto obsahuje tabuľky pre všetky štyri typy. Napísal som ho ozaj len na nevyhnutné vytvorenie štartovacej diskety. Dalo by sa to ofajčiť placeholder tabuľkou pre jeden typ a dohratím správnych dát zvoleného typu z EPROM po voľbe.

Takže to zhrniem. Je treba nakopíropvať na SD kartu dodaný image. Potom pripojiť PMD32SD a aspoň jednu disketovú mechaniku. Nabootovať z PMD32SD, zvoliť správny typ diskety. Spustiť FDC. Naformátovať disketu, spustiť kontrolné čítanie. Ukončiť FDC. Prekopírovať na disketu XMODEM (XM5.COM a XM5V2.COM). XM5 používa sériový port 8251, XM5V2 sériový port 16552.

Vypnúť NCB85. Odpojiť PMD32SD. Dať pripravenú disketu do prvej mechaniky. Dať do NCB85 EPROM s BIOSom pre vybraný typ diskety. BIOS pre FDD je na github vo verzii 2.2

Potom sa už dá nabootovať bez PMD32SD z diskety a cez XMODEM dohrať zvyšné programy. Cez FDC si naformátovať ďalšie diskety. Prekopírovať na ne obsah už zaplnenej. Atď.

"quick and dirty" BIOS je na stiahnutie tu/tady aj s obrazom pre PMD32SD.

Typ 1 je pre 5.25" DD diskety 720kB v HD mechanike. Teda niečo čo v PC možné nebolo. V CP/M sa využije 80 tracks/stôp a tak budeme mať pekných 720kB kapacitu. Takto je možné využívať DD diskety (a dokonca výhodnejšie s dvojnásobnou kapacitou) aj vtedy ak sú k dispozícii iba HD mechaniky.

Na github je aj starší BIOS, ktorý podporuje naraz PMD32SD a jeden typ diskiet. Typ diskety sa musí voliť v kóde a skompilovať do HEX. Tento BIOS je úspornejší a nezaberá toľko miesta, pretože má iba tabuľku pre jeden typ diskiet.