Boot je určen k usnadnění spouštění dalších programů z disket. Protože je na disketě uložen pod jménem boot.b, tak ho TRDOS po resetu načte (je-li správně nastaven) a spustí. Program Cygnus Boot pak načte adresář, setřídí podle jmen souborů a přehledně ho zobrazí.
Program jsem se snažil napsat co možná nejmenší, ale bohužel přesto se nevejde na jednu stopu (tj. do 4096 bytů), takže jeho načítání by mohlo být ještě o něco málo rychlejší. K setřídění je použitý algoritmus bubble sort, protože jsem tenkrát nic lepšího neuměl, což může výrazně zpomalit zobrazení většího počtu souborů, ale to naštěstí nenastává často.
Program je napsán tak, aby ho bylo možno ovládat co možná nejvíce způsoby aniž by bylo cokoliv třeba nastavovat, nebo aniž by ovládání navzájem kolidovalo. Největší problém byl v kombinaci Kempston Joystick a Amiga myši, protože obě zařízení komunikují na stejném portu. To je řešeno autodetekcí stavu, který nemůže na joysticku nikdy nastat (směr nahoru a dolů, nebo vlevo a vpravo zároveň), zatímco na připojené myši nastává běžně po několika málo cm pohybu. Krom toho lze kurzor samozřejmě ovládat klávesnicí, resp. joystickem, který je na klávesnici mapován.
V současné době znám jen jednu fatální chybu programu, ale bohužel nemám čas ji odstranit. Důsledkem chyby je nefunkční kopie programu při použití tlačítka COPY. Druhý drobný nedostatek je důsledkem testování myši, joysticku a klávesnice zároveň, to způsobí zamrznutí programu po stisknutí tlačítka v emulátorech i na reálných Spectrech, která nemají port 31 (jedno jestli interface s 8255, nebo alespoň Kempston joystick). Například v emulátoru Fuse stačí povolit emulaci Kempstonu a program bude fungovat.
Cygnus Boot 2.1
[4 kB]
[Stáhnuto
37 × - naposledy dne:
20. 5. 2024, 05:39 ]
Nejvýraznější změnou GUI je zvětšení sloupců se jmény souborů o dva řádky, vynechání jména diskety z azurového rámečku nad nimi (je přesunuto do titulku okna). Zrušil jsem i funkci autocopy, protože v praxi byla skoro k ničemu.
Pro zajímavost - jeden řádek výpisu přibyl díky použití vlastního tiskového programu. Původně používaný kód v ROM (RST16) má stejná omezení jako PRINT v BASICu. Za cenu pár desítek bytů navíc je v booteru nyní výrazně odolnější kód, který určitě nebude nežádoucím způsobem interpretovat řídící znaky jako token a pod.
Delší kód některých částí programu jsem si mohl dovolit díky přepsání GUI. Ve verzi 2.1 bylo okno booteru vložené jako komprimovaný obrázek a do něj se zobrazovaly informace. Ve verzi 2.2 se celé GUI kreslí v booteru pomocí výpisu textu a obdélníků. Ve výsledku zabírá asi polovinu RAM a dokonce je vykresleno o trochu rychleji.
Další důležité změny
Podpora KMouse byla nutnost, AMouse nelze mít trvale připojenou, protože se ve většině poloh clonek spoustě programů jeví jako sepnuté směry Kepston joysticku. Naproti tomu KMouse existuje i v interním provedení zabudovatelném do ZX Spectra a je mnohem více podporována ruskými klony ZX Spectra. Nekoliduje. Lze připojit i relativně moderní optické PS/2 myši, nejenom TTL kuličkové. Volba tedy byla jasná. Ovladač AMouse jsem zcela odstranil a místo něj je ovladač KMouse s kolečkem a dvěma tlačítky.
Ne vždy je myš k dispozici, proto jsem se pokusil usnadnit práci s Booterem pomocí klávesnice použitím mnoha klávesových zkratek, díky kterým není nutné přejíždět šipkou přes celou obrazovku kvůli zobrazení informací o souboru, zobrazení obrázku atd...
Cygnus Boot 2.2.1
[5 kB]
[Stáhnuto
6 × - naposledy dne:
20. 5. 2024, 09:48 ]
Ačkoli jsem už s verzí 2.2.1 byl docela spokojen, v průběhu pár let se mi nahromadilo pár drobných detailů, které jsem ještě chtěl opravit, nebo doplnit. Postupně přibyla i možnost vypnout řazení souborů (T), přepínat filtr zobrazených souborů (F), pár oprav chyb a taky možnost znovu překreslit celé GUI klávesou R.
Občas se totiž stane, že TRDOS zobrazí hlášku s dotazem "Retry, Abort, Ignore?". Může se tak stát v emulátoru, pokud není vložena disketa, nebo není-li naformátovaná, může se tak stát na reálném hardwaru, je-li disketa poškozená a nějaký sektor je opravdu nečitelný. Protože však booter nepřekresluje své GUI po každém znovunačtení diskety, buď by kód byl složitější, nebo by to nepěkně, byť velmi krátce, probliklo při každém načtení diskety. Proto jsem problém vyřešil přidáním klávesové zkratky.
Zajímavé je, že na reálném hardwaru, pokusím-li se zobrazit disketu v prázdné disketové mechanice, tak TRDOS správně detekuje nepřítomnost diskety a booter správně ohlásí "NO DISC!" a k žádnému poškození GUI nedochází, nikoli však ve Fuse emulátoru (určitě 1.4.0 a starších).
Ve verzi 2.2.3, kterou lze poznat asi jen podle délky 4322 bytů oproti 4321 bytům verze 2.2.1, protože na informaci o verzi v booteru nezbylo místo, kromě oprav pár drobných chyb, přibyly ještě tyto klávesové zkratky.
Instalace obsahu ISOROM a přepnutí čipu 8255 jako výstup nemá klávesovou zkratku, protože to nejsou často používané funkce. Naopak chybí ikonka pro CAT, protože se mi do GUI nehodila.
Cygnus Boot 2.2.3
[5 kB]
[Stáhnuto
7 × - naposledy dne:
20. 5. 2024, 04:54 ]
Stránka byla už zobrazena: 258 ×
Aktualizováno: 2. 12. 2020, 05:54
Stránka načtena za 0.00311 sekund.