Sinclair QL – systém a architektura

Máme tu několik novinek a je potřeba je nějak využít.

Všimli jste si, že vyšlo už druhé číslo časopisu SMSQZINE pro zájemce o Sinclair QL?
(O prvním čísle jsem psal TADY.)
V novém čísle si můžete počíst o QPC1 (nejde úplně o emulátor, spíš o běhové prostředí pro QLkový operační systém SMSQ/E na PC, kde lze využít jeho periferie včetně vyššího rozlišení obrazu na VGA – jde ovšem o starší DOSovou verzi podporující SMSQ/E jen ve verzi 2.93 – pro ty novější tu je QPC2 pro Windows) a jeho instalaci pod DOSBoxem.
Najdete tu i algoritmy několika základních astronomických úloh, napsané v SuperBasicu a SBB (“Structured SuperBasic”, jde o jakýsi editor, pomocí kterého si napíšete program hezky strukturovaně s návěštími bez čísel řádků a pak ho “přeložíte” do normálního SuperBasicu s čísly řádků).
Dále najdete grafické rutiny pro Pascal a benchmarky emulátorů. Ukázkové programy, jako to bylo u prvního čísla, najdete přiložené zazipované.

Novinky v hardware pro QL se objevily dvě – z Novosibirsku přichází replika Trump karty – jednoho z nejlepších hardware pro QL (pokud nepočítáme kombajny typu turbokaret s novým procesorem navíc).
Jak známo, oficiálně lze původních 128 kB RAM QL rozšířit o 512 kB na celkem 640 kB.
Trump karta, která obsahuje diskový řadič (samozřejmě se zabudovaným Toolkitem II) a paralelním portem pro připojení tiskárny (s několika utilitami v ROM, jako je spoolování tisku, tisk obrázků a další), využívá toho, že pravděpodobně už nebude kombinována s žádnou další periferií a paměťový prostor, vyhrazený pro ovladače a porty dalších hardwarových rozšíření, sprostě obsazuje další pamětí, rozšiřuje tedy paměť QL o neuvěřitelných 768 kB na ještě neuvěřitelnějších 896 kB RAM! (Později ukážu, jak je to realizováno.)
V tom už se dá úspěšně provozovat i okenní prostředí.
Trump karta navíc navzdory své základní vlastnosti (urvat si celý paměťový prostor pro sebe) neobsazuje prostor ROM portu, takže ji lze provozovat současně s moderním velkokapacitním úložištěm QL-SD!

Druhou novinkou je, že José Leandro začal rozesílat první hotové udělátory QubIDE, řadiče IDE disků (přes redukci) a CF karet (případně kombinaci QubIDE s 512 kB RAM).

Mimochodem, víte, že diskové obrazy používané QL-SD a QubIDE jsou shodné?

Ti, co si QubIDE objednali, teď budou nejspíš přemýšlet, co to vlastně dostanou a co s tím dělat.

QubIDE není dostačující pro provoz SMSQ/E, ale je dostačující pro provoz Pointer Environment (ba dokonce Extended Environment – někteří hnidopiši rozlišují Pointer Environment, skládající se z obluhy kurzoru myši a ovladačů obrazovky v souboru PTR_GEN, a Extended Environment, který přidává okenní manažer v souboru WMAN, případně další vylepšení včetně spouštění souborů a obsluhy klávesových zkratek v souboru HOT_REXT).

SMSQ/E je operační systém se zcela novým jádrem, psaným bez optimalizace na velikost (taky proti QDOSu, který zabírá i s Basicem 48 kB a s Toolkitem II 64 kB, má SMSQ/E se všemi dodatečnými komponentami skoro 300 kB) s novým rychlejším Basicem (SBasic, názvem se odlišuje od původního SuperBasicu, někteří autoři pak pro označení obou používají “hvězdičkovou konvenci” S*Basic).

K běhu SMSQ/E je potřeba procesor 68000 a lepší (skutečný háček je spíš v určitém způsobu stránkování RAM turbokaret místo ROM, kterou SMSQ/E při své instalaci používá a která na “holém” QL nebo na QL třeba s Trump kartou chybí; v procesoru jako takovém to není, protože i 68020 v Super Gold kartě se snaží emulovat “obyčejnou” 68000 či 68008).

SMSQ/E má zabudovaný Toolkit II, PTR_EXT, WMAN a HOT_REXT.
Ty se samozřejmě dají provozovat samostatně i pod starým systémem, pod QDOSem.
Aktuální verze (11.11.2015) SMSQ/E je 3.22, PTR_GEN 2.05, WMAN 2.07, HOT_REXT 2.31 (trochu matoucí, ale přitom logické je to, že jednotlivé komponenty jsou verzovány jinak, než celý balík SMSQ/E, ve kterém jsou obsaženy).

I bez SMSQ/E, jen s nejnovějším Pointer Environmentem lze i na minimálně rozšířeném QL (s Trump kartou nebo jiným řadičem s rozšířenou RAM, nebo na QubIDE s rozšířenou RAM, případně s jiným rozšířením RAM a třeba QL-SD) provozovat nejnovější vymoženosti, jako je překreslování oken na pozadí (první verze okenního prostředí nedovolovaly překreslení okna, které bylo zakryto jiným oknem).

Další vymoženosti pro QL, na kterém nejde spustit kompletní SMSQ/E, přináší Minerva ROM.

Minerva je prostě jen novější verze ROM.
Původní ROM od Sinclaira se vyvíjela až do verze MG (MG samotná je anglická, případné třetí písmeno označuje jazykovou mutaci – MGG german, MGF french, MGE espaňol, …), ač do QL distribuovaných v samotné Británii se nedostala (Britové se museli spokojit s JS, Američani s JSU).
Předchozí verze ROM obsahovaly chyby, někdy dosti brutální (v jedné verzi mohl mít program v Basicu maximálně 32 kB; v ROM verzí FB, PM a EL byly prohozeny argumenty pro řádek a sloupec příkazu PRINT AT, JM ROM zase měla chybku v inicializaci externě připojených periferií a po nalezení či nenalezení té první prostě přestala hledat další, takže je “neviděla”).

Až do MG ROM sice umělo QL multitasking, tím bylo obdařeno od prvopočátku, ale bylo možné mít spuštěn jen jeden program v Basicu.
Toto omezení SBasic v SMSQ/E odstraňuje, a odstraňuje je i Minerva ROM (příkaz PRINT VER$ u Minerva ROM vrací “JSL1”, SMSQ/E vrací “HBA”, starší verze ROM od Sinclaira šly za sebou v pořadí FB, PM, EL, AH, JM, TB, JS/JSU, MG/MGx). Basicových programů si tu můžete spustit, kolik chcete a kolik se vám vejde do paměti.
Basic Minerva ROM je navíc rychlejší, než Basic původních ROM od Sinclaira, zrychleny jsou i grafické příkazy. SBasic v SMSQ/E je sice znatelně rychlejší než běžný SuperBasic, ale urychlený SuperBasic v Minerva ROM se mu aspoň trochu přibližuje.

Kromě multitaskingujícího Basicu přináší Minerva i další vymoženosti, které původní ROM neměly.
Je vylepšen test paměti po zapnutí – nejen že probíhá rychleji, ale je i důkladnější a umí i oznámit, na jaké adrese a případně v kterém čipu zabudované paměti je chyba (takže víte, který máte vyměnit).
Dále původní ROM nevyužívaly druhou VideoRAM, kterou má QL hardwarově implementovánu – byly v ní totiž uloženy systémové proměnné, které by se obrazovými daty přepsaly. SMSQ/E a Minerva nemají systémové proměnné na fixní adrese, takže je možné používat obě VideoRAM (nebo naopak tu druhou při startu počítače vypnout a použít ji pro zvětšení paměťového prostoru pro data). V Basicu lze VideoRAM přepínat pomocí CTRL+TAB (pro pochopení této problematiky zkuste v Minerva ROM při startu zakázat druhou VideoRAM v “televizním” režimu stiskem F2 a pak v Basicu stisknout CTRL+TAB – uvidíte obsah druhé VRAM a v ní uložené systémové proměnné jako barevné pixely na začátku obrazovky).

Minerva umožňuje i instalaci národních klávesnic, českou ale zatím nikdo nevyrobil.

Co s multitaskingujícím Basicem?
Minerva ROM samotná se chová podobně, jako staré verze ROM od Sinclaira – prostě vypisuje do prostoru definovaného okna a je jí jedno, zda se okna překrývají nebo ne.
Při nahrání Pointer Environemnt (PTR_GEN, WMAN, …) se chování změní – původní ovladače obrazovky se nahradí těmi novějšími z Pointer Environment.
Pokud je dostatečně nové verze, budou se okna chovat asi tak, jako na moderním PC nebo Macintoshi – jejich obsah se bude překreslovat podle potřeby, a přitom se můžou hezky překrývat.
Při použití starší verze PE se vykreslování do překrytého okna zastaví, bude se vykreslovat jen okno ležící v popředí, a vykreslování zakrytého okna se obnoví teprve tehdy, pokud se samo ocitne v popředí. Při oknech ležících vedle sebe bez překrývání se bude vykreslovat obsah obou.

Jednotlivé Basicy spolu mohou komunikovat.
QL v mnohém spojuje svět Basicu, jednoduchý a přístupný každému, se světem Unixu, s jeho multitaskingem, předáváním parametrů, s rourami a dalšími vymoženostmi (například jako “null device” lze v Minervě použít zařízení PIPET, což syntakticky je dočasná – T jako temporary – roura bez přiřazení vstupního a výstupního kanálu).
Zkuste si spustit tyto dva prográmky (vložte EXEC PIPEP a do nově otevřeného okna vložte první program. Opět zadejte EXEC PIPEP a do nově otevřeného okna vložte druhý program. Spusťe druhý program pomocí RUN, stiskem CTRL+C se přepněte do prvního programu – bude třeba stisknout dvakrát, protože první stisk vás přenese do základního Basicu – a spusťte RUN.):
10 REPeat outer
20 OPEN #3,pipe_bastest
30 lineNo = 10000
110 INPUT "Line to execute (without line #) ";line$
130 PRINT#3;lineNo & " " & line$ & CHR$(10)
145 PRINT #3;CHR$(26) :REMark EOF
150 CLOSE #3
160 END REPeat outer

Po spuštění tohoto programu do něj můžete vkládat normální příkazy Basicu, respektive celé řádky programu (bez čísla řádku, to si program dosazuje sám, v tomto příkladu 10000).
Má otevřenu rouru jménem “bastest”, přes kterou takto vytvořené řádky posílá dál.
10 it =0
20 REPeat lp
30 PRINT "Iteration ";it
40 it = it + 1
50 DLINE 10000 TO 20000
60 MERGE pipe_bastest
70 GO SUB 10000
80 END REPeat
30000 RETurn

Tento prográmek naopak z roury “bastest” přihraje sám k sobě nový řádek a vykoná ho, opět smaže a čeká na zadání nového řádku.

Trochu delší ukázku komunikace mezi programy najdete ZDE.

Jako každé zdokonalení, má i Minerva ROM svou nevýhodu: můžou existovat programy, které fungují na starších verzích ROM a na Minervě nikoli.
Pokud musím jmenovat, tak hra Vroom na Minervě nejede, a to je asi tak všechno, na jiný podobný problémový program si z hlavy nevzpomenu.

Pokud tedy můžu v současné době něco doporučovat pro majitele “holého” QL, pak to (odmyslím-li si “zlaté” turbokarty nebo Q40/Q60) může být:
I) Trump Card (896 kB RAM, floppy, paralelní port) + QL-SD (mass storage na SD kartě)
II) QubIDE od José Leandra (640 kB RAM, IDE rozhraní s možností připojit přes redukci CF kartu nebo flash disk-on module), lze je kombinovat s QL-SD (ale ne s řadičem disket, tedy aspoň ne bez rozdvojky, protože Leandrovo QubIDE, narozdíl od originálu, není průchozí).

Na obou konfiguracích lze provozovat jak holý QDOS, tak QDOS rozšířený o Pointer Environment (ne ale SMSQ/E).
Výhoda obou hardwarových konfigurací proti turbokartám je ta, že hry na nich pojedou tou správnou rychlostí a nebudete se muset zabývat tím, že je hra neovladatelně rychlá nebo že u ní nepomáhá zpomalovací příkaz SLUG (protože ten zpomaluje systémovou službu přistupující ke čtení klávesnice, a pokud ji hra nevyužívá, nezpomalí se – tento příkaz se samozřejmě vyskytuje pouze na turbokartách a v SMS).

Co se ROM týče, pak dle volby každého soudruha doporučuji – pokud původní ROM od Sinclaira, která je zatížena menší nekompatibilitou s některými starými špatně napsanými hrami, pak MG (je to poslední verze obsahující nejméně chyb).
Komukoli jinému, komu nebude vadit nekompatibilita u těch pár her (nebo té jedné, co si ji pamatuju) a uvítá raději mnohá vylepšení, která ho ještě více přiblíží k možnostem SMSQ/E, doporučuji Minerva ROM (verze 1.98 je poslední a má jen jednu jedinou známou chybu, která se navíc projevuje jen na “zlatých” turbokartách a existuje na ni opravný patch – jde o chybu čtení data a času ze zabudovaných hodin turbokarty – oproti tomu nejméně chybová Sinclairova MG ROM obsahuje asi 30 chyb).

Samozřejmě povinnost je Toolkit II (aneb “co se do ROM nevešlo”), který může být
I) součástí ROM diskového řadiče (např. Trump card má Toolkit zabudovaný)
II) v 16 kB ROM strčené do ROM portu
III) ve stejném místě paměti, jako kdyby byl v ROM portu, ale fyzicky umístěn uvnitř počítače, v horních 16 kB obsahu společné 64 kB ROM spolu se zbylými 48 kB QDOSu nebo Minervy (v případě QL-SD interface je tento prostor ale již obsazen ovladači SD karty)
IV) nahrán do RAM po zapnutí z nějakého zařízení, třeba z disku

Toolkit přidává neskutečně mnoho věcí, jako vylepšení příkazu DIR, celoobrazovkový editor, hodiny, sdílení souborů po síti, “hvězdičková konvence” u diskových příkazů, pohodlnější nahrávání strojového kódu a rezidentních procedur …

U posledního bodu bych se trochu zastavil kvůli objasnění (především proto, že je to velmi často používaná věc i u her).
QL sice má příkaz EXEC pro spuštění strojového kódu ze souboru, ale většina her využívá systém nahrávání jako rezidetního kódu, kdy je potřeba nejprve alokovat v paměti místo potřebné velikosti, nahrát do tohoto prostoru kód ze souboru a skočit na spouštěcí bod.
Bez Toolkitu to vypadá takto:
a=RESPR (délka souboru) – vrátí v proměnné “a” adresu volného místa zadané velikosti
LBYTES filename,a – nahraje na tuto adresu obsah souboru
CALL a – skočí na počáteční adresu
Zatímco jednoduché LRESPR filename si zjistí velikost, naalokuje místo, nahraje a spustí.
Mimochodem, zjištění délky souboru (příkaz FLEN) je k dispozici rovněž teprve při použití Toolkitu II.

“Hvězdičková konvence” na QL je jiná, než si představují uživatelé UNiXu nebo MS-DOSu.
Vezměme si klasický příkaz COPY flp1_Games_Zork_save_dat TO n10_flp2_Archive_2015_Zork_save_dat. Řekněme, že stejným způsobem chceme zkopírovat VŠE z “adresáře” flp1_Games_Zork_ do adresáře n10_flp2_Archive_2015_Zork_ (zde ve skutečnosti nejde o adresář, ale o dlouhé jméno cesty a souboru; samozřejmě “Level 2” ovladače na QL umí “hard directories”, tedy “skutečné adresáře” jako na PC nebo Atari ST, které je potřeba otvírat a vůbec se k nim chovat jako k adresářům, ale těmi se teď nebudeme zatěžovat).
Nyní nám pomůže příkaz WCOPY (W jako wildcards, většina diskových příkazů má svou W variantu):
WCOPY flp1_Games_Zork_ TO n10_flp2_Archive_2015_Zork_.
QL zpracuje všechny soubory, jejichž název (cesta) začíná zadaným řetězcem, a ten při ukládání nahradí druhým zadaným řetězcem.
Dále si všimněte, že jsme kopírovali z vlastní diskové mechaniky flp1_ na mechaniku flp2_, která ale není připojena k našemu stroji, ale k stroji v síti QLAN s adresou 10. O síti na QL jsem už ale dříve psal ve starších článcích.

Poslední Toolkit II by měla být verze 2.20, a měla by se aktivovat sama automaticky, bez nutnosti použití povelu TK2_EXT (proto ji doporučuji).

Jak si poradit se “zlými” aplikacemi, které se nechovají systémově?
Nelze mít přeci souběžně spuštěné programy, které si vykreslují do svého okna, s nějakou hrou, která sype data do VideoRAM a přepisuje na obrazovce, na co přijde…
Nelze přeci spustit program, který se roztáhne po celé paměti, jako je třeba Quill, a pak se snažit do volného místa, které není, nahrát ještě něco…

Na to je tu komponenta Pointer Environmentu, do které by to nikdo neřekl – Hotkeys.
Jako všechno, co přišlo do styku s Tony Tebbym, ani Hotkeys nejsou jen jednoduchá utilita, kde stiskem klávesové zkratky vyvoláte nějaké klávesové makro a konec.

Hotkeys, kromě toho, že opravdu může dělat to, co by si člověk představil (například jde nadefinovat, aby se v textovém editoru Quill při pouhém stisku zkratky pro tisk vyvolalo menu, odklepl tisk, odklepl aktuální dokument, vybral se celý dokument a zvolila volba pro tiskárnu), slouží zároveň ke spouštění nebo přepínání aplikací (můžete mít třeba nadefinováno, že chcete mít v paměti jen jednu kopii programu, a při každé další jeho spuštěné instanci chcete jen přidat procesové vlákno, nebo naopak, například u samomodifikujících se kódů, se má pro každou instanci programu opravdu nahrát do paměti další separátní kopie).
Navíc Hotkeys přidávají clipboard (i když se jmenuje jinak – stuffer buffer) a jakýsi dok, na který se dají minimalizovat aplikace.
A spouštěč se umí postarat i o “zlé” programy – stačí “spouštěcí” nebo “přepínací” funkce HOT_LOAD, HOT_RES nebo HOT_CHP, nebo příkaz EXEP, doprovodit příslušným parametrem:
P – spustí program s naalokovaným zadaným množstvím paměti (P bez parametru způsobí to, že se při spuštění programu počítač na velikost přidělované paměti zeptá – takže např. u Quillu, pokud chcete psát jen krátký text, přidělíte mu 32 kB, v případě delsšího textu pak třeba 128 nebo 256 kB RAM).
Například ERT HOT_LOAD('p','flp1_program_exe')
I – pro samomodifikující se “nečisté” (impure) programy nahraje do paměti novou kopii při každém spuštění další instance programu (jde hlavně o kompilované programy pomocí BCPL nebo Turbo kompileru, naopak se to netýká většiny programů přeložených pomocí QLiberatoru).
F – freeze – u programů, které zapisují do obrazovky i do míst, která jim nepatří a v době, kdy jsou na pozadí, způsobí to, co dělala stará verze okenních ovladačů SMSQ/E – program se př odsunutí na pozadí zamrazí do doby, než ho uživatel znovu aktivuje. Nechtěnému překreslování nežádoucích částí obrazovky se tím zabrání.
Může se to hodit především u her – při přepnutí se do jiného programu hra navzdory multitaskingu neběží.
U – unlock – naopak “odemkne” pro program ostatní okna, aby přes ně mohl přepisovat, i když běží na pozadí (například na pozadí běžící hodiny nebo indikátor capslocku).
G – existují programy, které za běhu mění velikost oken nebo vypisují do oblasti mimo své vlastní okno – těm je možné nadefinovat ochranné (guardian) okno zadané velikosti, nebo pro ně (bez parametru) chránit celou obrazovku.

Ani clipboard, tedy stuffer buffer, není jen tak schránka, protože si umí pamatovat svou historii.
Stuffer buffer se naplní příkazem HOT_STUFF. Ten se nemusí jen zadávat z Basicu, ale i předdefinovat jako klávesová zkratka, a nemusí obsahovat jen pevně daný text, ale i proměnné, např. DATE$.
Obsah stuffer bufferu se pak vyvolá stiskem ALT+Space, historie pak SHIFT+ALT+Space.
(Pokud si pamatujete, stiskem ALT+Enter se v Toolkitu II vyvolává historie příkazové řádky.)

Vůbec je tak nějak jasné, že QL je sice počítač dejme tomu poddimenzovaného hardware, jak kvůli ceně, tak i díky tomu, že David Karlin byl v té době člověkem čerstvě po škole a provedl návrh počítače bez nějakých extrémních hardwarových podivností, ale zcela v duchu filozofie, která QL vytvořila, je to kompenzováno velmi sofistikovaným a přitom kompaktním software, rozděleným jen do nekolika modulů.
Tony Tebby předvádí úplné erupce šílenství. Multitasking, práce se soubory a styk s vnějším světem, správa paměti a common heapu, roury, to vše spolu s fantastickým Basicem od Jan Jones ve 48 kB ROM.
Správa procesů, sdílení souborů, obsluha oken a celého okenního prostředí, menu, ikony, scroll bary, stuffer buffer, to vše ve čtyřech modulech, z nichž některé jsou volitelné a na sobě (kromě závislosti WMAN a HOT_REXT na základním PTR_GEN) nezávislé.

Nedávno se řešil drobný problém – jeden uživatel měl program v Basicu, kde cosi testoval a chtěl přímo v programu přepisovat nějaké parametry a přišlo mu zatěžko mazat pořád ty staré a pak vypisovat nové, když délka řetězce byla stejná. Ptal se proto – potřeboval bych nějak přepnou mezi režimy vkládání a přepisování. Neexistuje na to nějaké rozšíření systému?
Odpověď byla jednoduchá – SHIFT+F4 přepíná insert/overwrite. Editor ED z Toolkitu II tohle umí od prvopočátku, ještě z dob, kdy se Toolkit II nejmenoval Toolkit II, ale jen Toolkit. QL to prostě má.

Na druhou stranu, obsluha Sinclairu QL, to není klikání jako v MacOSu nebo v GEMu na Atari.
Opravdu připomíná spíš unixový stroj.
A i když je k dispozici okenní prostředí a klávesové zkratky a ovládání myší, je příkazová řádka základním nástrojem a manuál není něco, čím se dá podložit viklající se skříň, ale naopak něco, v čem se prostě listuje.
Při tom listování ale člověk objeví spoustu úžasných věcí, které předtím netušil.

Pojďme se tedy pro lepší porozumnění podívat, jak je QL organizováno a co se děje po zapnutí.

Mapu paměti Sinclairu QL byste měli nalézt ZDE.

Na adrese 0 začíná ROM.
ROM má standardně 48 kB. Původně měla mít ROM 32 kB (operační systém 68K/OS od firmy GST, který měl být původně použit, má – bez dodatečných utilit – právě 32 kB), proto bylo potřeba přidat druhý 32 kB slot, z nějž je využito 16 kB, a druhých 16 kB je vyvedeno na externí ROM slot na adresách 0C000-0FFFF (je ale možné osadit celých dodatečných 32 kB na interní patici – pak ale nelze připojovat nic do ROM slotu, protože by docházelo ke kolizi).

ROM otestuje velikost dostupné RAM (od adresy 40000; standardně do adresy BFFFF, neb na adrese C0000 začíná prostor pro rozšiřující ROM) a pak začne hledat periferie.

QL je navenek počítač podobný Jobsově představě Macintoshe (dva sériové porty pro připojení tiskárny, případně modemu či jiné formy komunikace se světem, zabudované záznamové médium a jeden rozšiřující konektor), ale návrhem připomíná spíš Wozniakovo Apple ][ – to mělo 8 rozšiřujících slotů; na QL to není vidět, ale podporuje jich 16.

Ke QL měl totiž existovat modul s rozšiřujícími sloty – v podstatě jen posilovač sběrnice s rozdvojkou (až šestnáctinásobnou!) a jednoduchou logikou pro určení pořadí zasunutých karet.

Od adresy C0000 je 16 prostorů po 16 kB.
Na sběrnici jsou 4 signály SP0-SP3.
Karta je vybrána tehdy, když A14-A17 odpovídá stavům SP0-SP3. Z počítače jde na SP0-SP3 nula, a jednoduchá logika před každým dalším slotem zvýší obsah SP0-SP3 o jedničku.

Správně provedená rozšiřující karta by to měla dodržovat a měla by tak být (například pomocí “roztrojky sběrnice” M-Plane) kombinovatelná s ostatními “správně provedenými” kartami (lze předpokládat, že ty od Sinclaira budou doporučení dodržovat a půjde tak kombinovat třeba řadič HP-IB s disketovkami – což při jednom rozšiřujícím konektoru a neprůchozích periferiích jinak technicky možné není).

(Některá technická dokumentace se zmiňuje jen o osmi slotech do adresy DFFFF a zbývající prostor E0000-FFFFF je vyhrazen pro ROM modul o velikosti do 128 kB, ale to berte spíš jako zajímavost.)

ROM počítače tedy prozkoumá prostor od C0000 (v kroku po 16 kB), kde v případě osazené ROM najde značku 4AFB0001, za kterou následuje (relativní vzhledem k začátku ROM) ukazatel na seznam příkazů a funkcí Basicu, které ROM přidává, ukazatel na inicializační rutinu a textový řetězec s názvem ROM (pascalský řetězec ukončený znakem LF; názvy nalezených a inicializovaných ROM se při startu počítače vypisují na obrazovku, při inicializaci se mohou vypisovat i další texty – např. QL-SD vypisuje informace o stavu SD karty).

Podle designových modelů Ricka Dickinsona se zdá, že původně i microdrivy měly být připojeny pomocí externího modulu, ale byly integrovány dovnitř nesjpíše pro snížení ceny (odpadla potřeba samostatné krabičky, samostatné DPS, konektoru navíc a díky integraci ovladačů do hlavní ROM odpadla i ROM navíc). Bohužel se tím snížila modularita a není možné midrodrivy odpojit a nahradit je třeba disketovým interfacem.

Zde právě v JM ROM byla chyba, kdy po prohédnutí adres 0C000 a C0000 hledání skončilo a po dalším zařízení se nepátralo.

Ano, ještě před prohledáváním prostoru od C0000 ROM prohledá i prostor na 0C000, aby se inicializovala případná ROM zasunutá v ROM slotu (Toolkit II, mICE interface, ROMDisQ, …).

Nakonec se ROM pokusí otevřít driver s názvem BOOT a nahrát s jeho pomocí program v Basicu (obvykle je na médiu uložen také pod názvem BOOT). Pokud takový driver nebyl inicializován (například disketovou jednotkou nebo harddiskem), zkusí nahrávat Basicový program MDV1_BOOT.

Adresy 10000-1FFFF jsou vyhrazeny pro registry hardware QL (jako přepínání videočipu, hodiny reálného času, RS-232, klávesnice a joysticky, síť, Microdrivy, …) – ty jsou v prostoru 18000-1BFFF (přesněji je to jen 24 bajtů, které se ale zrcadlí). Zbytek prostoru je nejspíš možné využít pro adresaci hardware na externích kartách (i když podle dokumentace se na některých issue QL může interní hardware zrcadlit v celé této oblasti).

Od adresy 20000 do 3FFFF je 128 kB interní RAM. Od adresy 20000 do 27FFF je první videoRAM (zobrazitelná v režimu 256×256, 8 barev+flash, nebo 512×256, 4 barvy+flash – bohužel, kdyby se autoři nerozhodli implementovat hardwarový flash, mohlo mít QL 16 barev v lo-resu a 8 barev v hi-resu; o to smutnější, že pozdější variace na QL, jako deska Aurora nebo počítač Q40/60, flash neimplementovaly). Druhá VRAM je mezi adresami 28000-2FFFF.
Od 28000 nebo 30000 (podle toho, zda je použita druhá VRAM) pak začínají systémové proměnné, systémové tabulky, common heap, Basic, oblast dočasných a rezidentních programů a další obyvatelé paměti.

Od 40000 je prostor pro rozšíření RAM (512 kB, celkem se zabudovanou pamětí 128 kB to dává 640 kB).
Pak pokračuje nám už známý prostor od C0000, určený pro ROM externích periferií.

Všechna rozšíření RAM nad 640 kB (Trump Card s 896 kB RAM, Gold Card s 2 MB, Super Gold Card s 4 MB RAM, stejně tak i Q40/60) sází na to, že jsou jediná rozšiřující periferie, která na sobě nese veškerý potřebný hardware (jako řadič disketovek, paralelní port, Toolkit, hodiny, …) a mohou obsadit veškerý paměťový prostor dle svých potřeb a dělat psí kusy, jako stránkovat RAM a ROM a podobně.
RAM tak pokračuje za adresu C0000 dál místo externích karet (po odstránkování vlastní inicializační ROM periferie) a hardware periferie je přemapován jinam.

Originální QubIDE, jako průchozí periferie, která předpokládá, že nebude v systému sama, to řeší taky po svém – ne pomocí originálního řešení výběru karty signály SP0-SP3, ale jumpery, kde se nastavuje základní adresa.

QubIDE lze nasvičovat do prostoru 0C000 (externí ROM slot) – pro použití právě s periferiemi, které nestandardními metodami obsazují veškerý volný prostor (Trump Card, Gold Card, Super Gold Card). Samozřejmě pak není možné tento prostor použít například pro Toolkit II, ROMDisQ nebo QL-SD interface.

Pro použití s periferií zasunutou v externím ROM slotu (Toolkit II ROM, mICE interface, ROMDisQ, QL-SD) lze nastavit adresu 10000 nebo 14000 – je potřeba mít ale Minerva ROM, která hledá ROMky periferií i v tomto nestandardním prostoru, jinak se QubIDE nebude inicializovat.
Protože ale tento prostor pro své účely využívá i Trump karta a Gold karty, QubIDE by s nimi kolidovalo, je proto možné tyto adresy použít jen při použití systémově vstřícnějšího diskového rozšíření (Sandy QBoard, …).

A samozřejmě je možné nastavit i jakýkoli ze 16 slotů od adresy C0000 za předpokladu, že QL má maximálně 640 kB RAM.

QubIDE od José Leandra je sice periferie, která počítá, že bude na sběrnici sama (není průchozí, obsahuje paměťové rozšíření 512 kB RAM), ale jumpery na sobě má stejně jako originál (můj kousek je nastaven do prostoru 0C000, tedy ROM slotu – pro použití s QL-SD by bylo potřeba přesvičovat).
Takže teoreticky umožňuje (při nastavení bázové adresy 0C000, 10000 nebo 14000) doosadit RAMkou prostor C0000-FFFFF a tím přidat dalších 256 kB (celkem 896 kB RAM, jako Trump card! To už je dostatečné i pro ty nejnáročnější programy pod Pointer Environment).
Což je zajímavé.

Snad jsem aspoň trochu nastínil, jak to s QL je, a pokud patříte mezi těch několik šťastlivců, kterým se podařilo objednat si Leandrovo QubIDE, budete se snad přesněji orientovat v tom, co před sebou na stole vlastně máte a co můžete očekávat.

Jaké k tomu používat nástroje, jak zpracovávat image disků pro QubIDE nebo QL-SD interface, jak najrávat software a další drobnosti, to si nechám zase na někdy jindy.