Cygnus Boot - pohodlný spouštěč souborů

Historie

Inspirací mi byl především Matasoftův Booter, který jsem od Matasofta získal s dalším softwarem. Po nějakém čase jsem začal toužit po vlastním super dokonalém programu podobného druhu (asi mi tehdy přišlo snadné něco takového napsat) a zkoušel jsem ho napodobit. A samozřejmě taky Unirun používaný na MDOSu, ačkoli se nespouštěl po resetu automaticky, sloužil ke stejnému účelu.

screenshot screenshot

Netuším jestli někde existují nějaké další verze Matasoftova booteru, číslování napovídá, že ano, ale najít se mi ho nepodařilo.

Prvním pokusem byl booter využívající Heptauův ovladač AMouse a celý byl napsaný v BASICu kompilovaném IUC88+ kompilerem. Naštěstí nikdy nebyl šířen a tak tomu zůstane. Verze 2.0 a 2.01 byly už napsané v assembleru (v Prometheovi), jsou současné verzi podobné, ale velmi pomalé a se spoustou nedostatků. 2.01 se od 2.0 liší jen rychlostí filtrace souborů, jinak ničím.

screenshot screenshot

Cygnus Boot 2.1 (1995)

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í.

screenshot screenshot screenshot

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.

Ovládání programu

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.

Čím lze ovládat

  • Sinclair Joystick = 6-vlevo, 7-vpravo, 8-dolu, 9-nahoru, 0-fire
  • Amiga mouse = TTL myš zapojená na port 31 (viz. popis čipu 8255 a myší)
  • klávesa 1 přepne na disk A
  • klávesa 2 přepne na disk B
  • klávesa 3 přepne na disk C
  • klávesa 4 přepne na disk D
  • klávesa enter způsobí znovunačtení a zobrazení obsahu diskety, užitečné např. při její výměně

Funkce ikonek

  • kliknutím na soubor se nejprve označí (např. pro zobrazení obrázku), druhým kliknutím se označený soubor spustí
  • A,B,C,D - změna mechaniky
  • VIEW - zobrazení obrázku a to i komprimovaného Pressorem (4,5,6 ?), funguje autodetekce
  • SRAM - načte 16kB nebo 32kB ROM do statické RAM, k tomu aby funkce něco provedla je nutné mít vestavěnu kompletní úpravu ISO-ROM 128
  • NEXT PAGE - zobrazí další stránku souborů pokud se tyto nevešly na první
  • D/A OUT - před spuštěním programu inicializuje UR-4, nebo kompatibilní interface s 8255 jako výstup pro přehrávání hudby přes tříkanálový D/A převodník

Známé chyby staré verze 2.1

Drobných nedostatků je víc, ale bohužel dlouho nebyl čas je odstranit a navíc jsem ztratil zdrojové kódy této verze. Zůstala mi pouze verze starší - 2.0, která se výrazně liší.

  • Nefunguje kopie programu při použití tlačítka COPY.
  • Program zamrzne po kliknutí na soubor (i klávesou), pokud není přítomen kempston interface na portu 31, resp. pokud je trvale bit fire v logické 1.
  • Pomalé řazení souborů
  • Nepohodlné zobrazování obrázků a informací o souborech.
  • Neexistuje podpora KMouse, pouze zastaralé AMouse.

Aktuálně (9.5.2010) mám už téměř disassemblovaný kód verze Bootu 2.1 a možná najdu i chvilku na jeho vylepšení.

Cygnus Boot 2.2 - 2010

Nejsem si tak úplně jistý, jestli jsem měl verzi skutečně zvýšit jen o desetinu. Změn je uvnitř opravdu hodně ačkoli to navenek vidět příliš není, což je do značné míry úmyslné. Původní GUI mi zcela vyhovovalo a měl jsem jen málo důvodů ho měnit.

screenshot screenshot

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á samozřejmě stejná omezení jako PRINT v BASICu. Za cenu delšího kódu, je v booteru nyní výrazně odolnější kód, který určitě nebude nežádoucím způsobem interpretovat řídící znaky 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 Turbo včetně práce s kolečkem
  • propracované ovládání klávesnicí, odhadnutelné klávesové zkratky
  • důkladnější ošetření všech chyb, které mohou nastat při práci s disketou
  • rychlejší zpracování souborů a seřazení podle abecedy (heapsort)
  • vylepšený instalátor obsahu ISOROM

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 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...

screenshot screenshot

Lepší ošetření chyb TRDOSu je jedna z věcí, které nejsou vidět vůbec až do chvíle, kdy se pokoušíte pracovat s vadnou disketou. Nejsem si úplně jistý, jak si booter poradí se všemi chybami adresáře, taková disketa nebude moc použitelná nikde, ale třeba vadný sektor v zobrazovaném obrázku, nebo stisknutá klávesa BREAK v kritický okamžik by určitě problémy způsobit neměly.

screenshot screenshot screenshot

Stejně jako verze předchozí, tak i verze 2.2 umí zobrazovat obrázky z diskety. Rozlišuje obrázky komprimované Pressorem a nekomprimované. Dále stejně jako v předchozích verzích lze instalovat z diskety obsah 16kB, nebo 32kB souboru do SRAM v modulu ISOROM 128. Drobnou změnou je to, že tentokrát by se booter neměl zhroutit, pokud je SRAM prázdná. Doporučovaný RESET je vhodné provést vždy, když je instalována ROM výrazněji odlišná od dosud používané. Počítač se pak může chovat nepředvídatelně po návratu do BASICu.

Novinkou je možnost zobrazení katalogu disketu, tak jako po zadání příkazu CAT. Bylo snadné tuto funkci přidat a v minulosti jsem ji několikrát postrádal.

Ikonka UR-4 má stejnou funkci, jako dříve měla ikonka D/A Out. Při ukončení booteru se nastaví IO 8255 na portech 31, 63, 95, 127 jako výstupní. Je to užitečné při načítání snapshotů hudebních editorů pracujících s D/A převodníkem.

Základní ovládání

  • O,P,Q,A - pohyb šipkou - často používané a oblíbené klávesové ovládání
  • 6,7,8,9 - pohyb šipkou - Sinclair Joystick, nebo klávesnice - dle osobních preferencí
  • M,0 - kliknutí jako levým tlačítkem myši
  • N - kliknutí jako pravým tlačítkem myši
  • W,S - klávesová zkratka pro scroll, jako pootočení kolečka myši

Klávesové zkratky

  • 1,2,3,4 - načtení diskety v mechanice A,B,C,D
  • ENTER - znovunačtení diskety
  • C - CAT, zobrazí katalog diskety
  • V - VIEW, pokud je vybrán bytes, nebo snapshot, booter zkusí zobrazit obrázek
  • I - INFO, zobrazí informace o souboru
  • E - Exit, booter se ukončí a zavolá příkazový řádek TRDOSu
  • K - vypne/zapne KMouse pro případ, že by nefungovala správně autodetekce

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. V případě zájmu není problém přidat.

Akuálně je verze 2.2 ještě velmi nová - testujte a hlašte chyby!

Download

Opravené chyby a změny

  • ?.?.2000 - zveřejněno
  • 9.5.2010 - drobné aktualizace
  • 12.6.2010 - přepsáno, doplněna zmínka o starých verzích a zveřejněna verze 2.2

[ Zpět na hlavní stránku ]

Cygnusova stránka o ZX Spectru a kompatibilních počítačích byla napsána (přepsána) výhradně pomocí svobodného Open Source softwaru. V případě že naleznete chybu, nebo byste rádi cokoliv co se ZX Spectrem souvisí, neváhejte mi napsat na některý z mých emailů, nebo pracovně do zaměstnání. Stručně o mém webu se můžete dočíst zde.