SP - BIOS ========= Pomocné rutiny nulté úrovně --------------------------- SOPEN screen open aktivuje stream #2 na COUT až do dalšího volání #1601. Odeslání prázdné řádky v BASICu zapíná ROM výstup na displej. PCR print CR. SCRLUP explicitní žádost scrolu okna nahoru. Jakýkoli scroll nastavuje indikátor SCRLFG na nenulovou hodnotu (22). Console in ----------- KEY bez promptu čeká na stisk klíče, při čekání testuje BREAK. Po stisku vydá BEEP délky PIP a vrátí znak (jen) v ACC. CAPS LOCK obsluhuje lokálně. Speciální ASCII ("extended") překódovává automaticky z příslušného "SS" klíčového slova. Console out ----------- COUT lze volat buď pomocí RST #10 po předchozím volání SOPEN nebo přímo. Restart nelze použít při předávání parametrů přes BC. Výstup je v 64 sloupcích podle aktivního okna. V každém okamžiku se řídí podle status vektoru : CP current screen position, sloupec 0..63, řádek 0..23 WTL Window Top Left position (include). WBR Window Bottom Right (include). CO current colours (standard attr. format). Dorazový sloupec je o 1 větší než WBRlo, dorazový řádek obdobně o 1 větší než WBRhi. Před zápisem znaku se aktualizuje pozice z dorazových hodnot na příští platné, po zápisu se posune sloupec "naslepo". Aktualizace posice může způsobit scroll aktuálního okna při pokusu psát za koncový řádek okna příp. přesun na nový řádek při pokusu psát za dorazový sloupec. význam znaků : 0..7 barva papíru pro další tisk, inkoust je vždy kontrastně (černo-bílý). 8 nedestruktivní posuv vlevo, nejvýše na začátek řádky, i z dorazového sloupce. 9 přeskok vpravo, nejvýše na dorazový sloupec 10 přeskok dolů, nejvýše na dorazový řádek. 11 přeskok nahoru, nejvýše na první řádek okna. 12 smazání okna okamžitou barvou a home. 13 přeskok na začátek další řádky bez výmazu. 14 inverze pro jeden znak. 15 jen posuv jako při printable. 16 set "print image" - jen posuvy. 17 zrušení "print image" módu. 18 flash bit 0 of C 19 bright bit 0 of C 20 inverze bit 0 of C 21 zapíše se jen barva bez přepisu inkoustu, běžný posuv. 22 CP from BC ("AT") absolutní souř. 23 výmaz to EOL, nastaví se dorazový sloupec. 24 výmaz to EOW, nastaví se dorazový sloupec poslední řádky. 25 home - přesun na začátek okna bez výmazu. 26 CPos to BC, absolutní souř. 27 žádná změna. 28 WTL from BC. 29 WBR from BC. 30 AT - from BC, relativní souř. 31 CPos to BC, relativní souř. 32..127 normální ASCII set. 128..191 zápis n-127 spaces. 192..255 KOI set. Rutiny první úrovně ------------------- Spolupracují s KBUF - bufferem DEFS 64,DEFB 13,0 COLNU collect (dec příp. FP) number. Interaktivní editací v KBUF přebere decimální číslo a dá do BASIC stacku. Při chybném vstupu vydá warning buzz a reedituje; vše v okamžité pozici displeje, v platném okně. V KCHAD zanechá adresu již nezpracovaného separátoru podle kriterií SEPAR s výjimkou SPACE. SEPAR test separátoru v ACC. Z.. v ACC je platný separátor : CR, ",",";"," ". APECUR přidá před konec řádky (13!) v KBUF znak kurzoru. Nutné před editací. Pozor, nehlídá přetečení. BUZZ varovný BEEP. SMPLFP sample FP v KBUF. Na KCHAD zanechá adresu separátoru nebo chybného znaku (testuj SEPAR pro chybu). Výsledek nechává v BASIC stacku. SMPLHX sample HEX number. Jako sample FP, výsledek v DE. SKISPA přeskok spaces na (HL); HL přesun. IGNSPA přeskok spaces na začátku KBUF; HL přesun. HEXDIG konverze ASCII to hex digit, ACC - ACC. NC..not hex. DISPHB display BC znaků od (HL) adresy, bez řídicích printable. DISLIN display řádek od (HL) až po CR (vč.),NULL,"@". Znak "~" kódu 126 je interpretován jako CR v textu. DISBUF je DISLIN bufferu KBUF. PTEXT print text je "inline DISLIN"; text se zadává hned za CALL : CALL PTEXT, DEFM "Tento text@". EDLINE existující řádek v KBUF (bez kurzoru) interaktivně edituje a výslede k nechá v KBUF (opět bez kurzoru). INLINE vstup řádku do KBUF; editace v okamžité pozici. CONLIN je INLINE s promptem ">" na začátku zobrazení. DECU odstranění prvního výskytu znaku kurzoru z KBUF. Lze volat opakovaně i bez přítomnosti kurzoru. FCURS find cursor v KBUF, adresa v HL, není-li je NZ. FEOL find EOL v KBUF. Z.. HL směřuje na CR uvnitř, jinak na "pevný" CR na konci. SHOW smazání (prompt-CR) KBUF a zobrazení téhož (úvod inline). REDIL redisply KBUF v okamžité pozici bez její změny. Pozice "za" zobrazením zůstane v LASTP (jako BC arg). CHANK výstupní rutina znaku "stream do KBUF". Normálně volaná RST #10. Přidá ACC do KBUF adresy CHKP, za znak dá CR a posune pozici. Hlídá přetečení - ignoruje přebytečné znaky nad 64. PBCUSG print BC jako UNSIGNED decimal. PBCH print BC jako HEX. PACH print ACC HEX. KOPEN open #2 výstup do KBUF, reset pozici CHKP.