Takže začínáme nový seriál a vynecháme popisy instrukcí, ty už jste si nadrtili z jiných publikací a začneme něčím jednoduchým. Zkusíme vytisknou znak a pak zkusíme celý text.
Nejjednodušší metoda, jak dostat na obrazovku znak je použití ROMky. Na to slouží rutina na adrese 16 (#10). Tuto rutinku voláme rst 16
.
Příklad
ld a,"A" rst 16
Nevýhoda této metody je, že ke svému běhu potřebuje systémové proměnné Basicu. Pro nenáročné programy je to v pohodě, ale pro programy, které využívají celou RAMku, je to nevýhoda.
rst 16
lze posílat i řídící kódy, které ovlivňují polohu a barvu textu. Nejříve předejte pomocí rst 16 řídící kód a pak jeho parametr. Ukázky budou v příkladech.
6 – posune kurzor na další pozici
8 – kurzor doleva
9 – kurzor doprava
10 – kurzor dolu
11 – kurzor nahoru
13 – ENTER
16 – INK
17 – PAPER
18 – FLASH
19 – BRIGHT
20 – INVERSE
21 – OVER
22 – pozice textu
23 – TAB
Ještě než začnete obrazovku plnit znaky, musíme si říci, jak je obrazovka pro rst 16 rozdělena: obrazovka má 24 řádek a 32 sloupců, avšak řádky jsou rozděleny na 2 kusy. První část je 22 řádek a je to kanál 2 a další 2 řádky (editační) je kanál nula. Před prvním použitím kanálu je třeba jej otevřít:
Příklad
START ld a,2 ;číslo kanálu call $1601 ;otevřít ld a,22 ;řídící kód rst 16 ;pošli ld a,10 ;číslo řádku rst 16 ;pošli ld a,20 ;číslo sloupce rst 16 ;odešli ld a,'A' ;znak rst 16 ;už ho konečně vytiskni ret
Pokud budeme chtít psát znaky do editační oblasti, musíme otevřít kanál nula. Podobně se to dělá v Basicu příkazem PRINT #0;AT 0,0;“pokus“.
START xor a ;číslo kanálu call $1601 ;otevřít ld a,22 ;řídící kód rst 16 ;pošli ld a,1 ;číslo řádku rst 16 ;pošli xor a ;číslo sloupce rst 16 ;odešli ld a,18 ;kód pro nastavení FLASH rst 16 ;pošli ld a,1 ;nastav 1 rst 16 ;pošli ld a,'A' ;znak rst 16 ;už ho konečně vytiskni ret
Pokud již máme otevřen kanál 2 a otevřeme kanál 0, kanál 2 bude uzavřen. Zkrátka rst 16 je vhodné tam, kde nám stačí jen prvních 22 řádek.
Protože rst 16
je v ROM, je třeba, aby registr iy
ukazoval na 23610, tedy do oblasti systémových proměnných. Pomoci nich je možné taky ovlivnit barvu výsledného znaku, pokud potřebujete totálně překopat barvy tak, že by to zabralo 10 řídících kódů, lze toto nastavit jediným POKE. Tato proměnná se nazývá ATTR-T a je: 23695. Vzoreček pro výpočet hodnoty je takto: 128*FLASH+64*BRIGHT+8*PAPER+INK (pro černý inkoust a bílý papír je to 7*8+0=56).
Příklad
START ld a,2 call $1601 ld a,242 ld (23695),a ld a,'A' rst 16 ret
Vidíte, že je to o mnoho jednodušší, než se babrat postupně s několika řídícími kódy.
Za domácí úlohu si zkuste na obrazovce pomocí znaků namalovat něco jako hořící svíčku (když byly ty vánoce).
4 komentáre na “1.díl: znaky – aktualizováno”
Je nám líto, ale formulář pro přidávání komentářů je momentálně uzavřen.
se tesim na dalsi dil! o cempa bude? 🙂
Sam nevim. Delas domaci ukoly?
Pozor na kody 10 (kurzor dole) a 11 (kurzor hore). Tie nejdu pouzit, namiesto nich sa vypisuje znak ‚?‘. Kto by si chcel blizsie pozriet, ako v ROM osetruje riadiace kody, tak na adrese 09F4h je rutina PRINT-OUT, ktora to ma na starosti.
Tak jsem to v clanku opravil. Dekuji za upozorneni.