Thursday, December 27, 2018

NCB85 16. BIOS V3

BIOS pre dosky NCB85V2 a V3 som zase trošku sprehľadnil, rozdelil do viacerých file. Pridal som druhú funkčnú implementáciu blocking algoritmu. A tiež pridal podporu pre tri disketové mechaniky. Do zoznamu zmien patrí aj oprava jednoho bugu, zmena v buildovaní a presunutie kódu pre obojstranné média do drivera pre floppy controller. V predchádzajucich verziách bol tento kód súčasťou blocking algoritmu. Ale teraz je na výber z dvoch algoritmov takže aj preto išiel do drivera.

Pridám ešte krátky pokec o BIOSe pre CP/M a disketových mechanikách. CP/M nepodporuje obojstranné média, takže druhá strana diskety je vec implementátora. Pre CP/M druhá strana diskety neexistuje. Najjednoduchšie preto je zadefinovať stopy dvojnásobne dlhé a v polovici stopy sa prepnúť na druhú stranu - samozrejme bez toho aby CP/M o niečom tušilo. Takto je to aj v BIOSe pre NCB85 implementované. Dala by sa použiť aj schéma, že stopy sú dlhé ako počet sektorov na jednej strane, a CP/M by sa pri definovanej kapacite média a zaplnenosti disku nad 50%, snažilo ísť na stopy 80-159, ktoré na diskete nie sú - vtedy by sa zase preplo na druhú stranu diskety. Táto schéma by riešila aj problém súčasného pripojenia 5.25" a 3.5" obojstranných médií. Ale je tu problém, že v polovici kapacity sa vraciame na začiatok diskety na druhú stranu.

Pre podporu rôznych typov mechaník sú určité prekážky. Ak diskety používajú rovnakú bitrate, tak rôzne geometrie(kapacity) sa dajú zadefinovať priamo v DPB blokoch pre každú mechaniku. V takomto prípade treba prepísať tabuľky DPH, DPB0 s parametrami v drive_params.asm a pridať ďalšiu tabuľku DPB1. Pre väčšie rozdiely medzi mechanikami vznikajú dalšie prekážky, ktoré by bolo treba vyriešiť a ktoré nie sú v BIOSe pre NCB85 vyriešené. Obojstranné média s rozdielnym počtom sektorov na stopu by museli správne prepínať na druhú stranu pre každú mechaniku zvlášť, alebo použiť schému s prepnutím na druhú stranu od stopy 80. Ak by mali mať mechaniky aj rôznu bitrate, tak je treba pri každej zmene mechaniky poslať do floppy kontroléra nové informácie o bitrate a steppingu.

BIOS pre NCB85 podporuje 2 disketové mechaniky rovnakého typu. Tretia mechanika je teraz povolená, ale asi málokto to využije. Pre tretiu mechaniku platia určité obmedzenia. Musí byť rovnakého typu ako prvé dve, alebo musí byť jednostranná, mať rovnakú bitrate a mať menší, alebo rovnaký počet sektorov ako prvé dve mechaniky. To preto, aby správne fungoval kód pre druhú stranu diskety.

Z toho vyplýva, že kombinácie 2x1.44MB 3.5" DS/HD + 1x500kB 8" SS/DD, alebo 2x1.2MB 5.25" DS/HD + 1x 500kB 8" SS/DD sú prípustné. Pretože na SS/DD 8" médiách sú bitrate dvojnásobné a sektorov majú 26 jednostranne. Kombinácia 1.44MB 3.5" a 1.2MB 5.25" mechaník prípustná nie je, pretože na disketách 3.5" je 32 sektorov na stopu obojstranne, ale na disketách 5.25" je iba 26" sektorov obojstranne.

Odstránil som aj jeden bug. Na stope 0 sa občas nezistila chyba pri čítaní sektora. Nová verzia V3 je na GitHube tu:
https://github.com/ncb85/NCB85V2-BIOS/tree/master/bios_fdc_30

Ten istý bug som odstránil aj vo verzii V2.2 (viď GitHub). Vo verzii V3 som odstránil aj podporu PMD32SD, takže kto ju potrebuje, siahne po V2.2.

No a už som to vykecal, mám aj NCB85 V3. Je to zase jednodoskáč s podporou floppy mechaník na jedinej doske. Plne kompatibilný s V1 a V2. Popis asi nikdy nebude, pretože platí všetko to čo pre predchádzajúce verzie. Ostala mi jediná doska.

No comments:

Post a Comment