19. Textová obrazovka: POSITION, GRAPHICS 0, SETCOLOR
Na čo to je
PRINT píše tam, kde práve stojí kurzor – riadok za riadkom, zhora nadol. Na hru, ponuku alebo tabuľku to nestačí: chceš písať na presné miesto, obrazovku zmazať a zmeniť jej farby.
Ako sa to píše
| Príkaz | Čo robí |
|---|---|
GRAPHICS 0 | zapne obyčajnú textovú obrazovku a zmaže ju |
PRINT CHR$(125) | zmaže obrazovku (kurzor ide vľavo hore) |
POSITION stĺpec,riadok | postaví kurzor; ďalší PRINT píše odtiaľ |
SETCOLOR 2,odtieň,jas | farba pozadia |
SETCOLOR 1,0,jas | jas písmen (odtieň majú vždy ako pozadie) |
SETCOLOR 4,odtieň,jas | farba okraja okolo obrazovky |
POKE 752,1 | skryje kurzor |
Obrazovka má 40 stĺpcov (0 až 39) a 24 riadkov (0 až 23). Miesto 0,0 je vľavo hore.
Odtieň je číslo 0 až 15, jas párne číslo 0 (tmavá) až 14 (svetlá):
| Odtieň | Farba | Odtieň | Farba |
|---|---|---|---|
| 0 | sivá | 8 | modrá |
| 1 | zlatá | 9 | svetlomodrá |
| 2 | oranžová | 10 | tyrkysová |
| 3 | červená | 11 | modrozelená |
| 4 | ružová | 12 | zelená |
| 5 | fialová | 13 | žltozelená |
| 6 | modrofialová | 14 | olivová |
| 7 | modrá | 15 | svetlooranžová |
Celý program
Súbor examples/screen.abas:
10 REM The text screen
20 GRAPHICS 0
30 SETCOLOR 2,12,2:REM background: dark green
40 SETCOLOR 1,0,14:REM letters: bright
50 SETCOLOR 4,3,6:REM border: red
60 POKE 752,1:REM hide the cursor
70 POSITION 14,2:PRINT "A T A R I"
80 FOR X=10 TO 26
90 POSITION X,4:PRINT "-";
100 NEXT X
110 FOR Y=6 TO 10
120 POSITION Y,Y:PRINT "Row ";Y
130 NEXT Y
140 POSITION 2,20:PRINT "Bottom line";Preklad a spustenie
Farby ukáže len emulátor:
Basic26 screen.abas --runRozloženie textu ukáže aj simulátor s voľbou --sim-screen:
Basic26 screen.abas --sim --sim-screenČo uvidíš
A T A R I
-----------------
Row 6
Row 7
Row 8
Row 9
Row 10
Bottom lineV emulátore je to isté svetlými písmenami na tmavozelenom pozadí s červeným okrajom, bez kurzora.
Ako to funguje
- Riadok 20:
GRAPHICS 0začne s čistou obrazovkou a pôvodnými farbami. Na začiatku programu je to dobrý zvyk. - Riadky 30 až 50: tri z piatich farebných registrov. V textovom režime má register 2 pozadie, register 1 jas písmen a register 4 okraj. Po zapnutí je obrazovka modrá:
SETCOLOR 2,9,4. - Riadok 70:
POSITION 14,2– najprv stĺpec, potom riadok.PRINThneď za ním píše od toho miesta. - Riadok 90: bodkočiarka na konci
PRINTje tu dôležitá. Bez nej by kurzor po každej pomlčke prešiel na nový riadok – a keby to bolo v poslednom riadku obrazovky, celá obrazovka by sa posunula nahor. - Riadky 110 až 130: pozícia môže byť vypočítaná.
Zmazanie obrazovky
GRAPHICS 0 zmaže obrazovku a vráti farby. PRINT CHR$(125) ju len zmaže – farby aj skrytý kurzor ostanú. V dobových programoch nájdeš za PRINT v úvodzovkách zvláštny znak (zahnutú šípku); je to ten istý kód 125 napísaný rovno z klávesnice Atari.
Inverzné písmo
Znaky s kódom o 128 väčším sa vypíšu inverzne – tmavé na svetlom. PRINT CHR$(65+128) je inverzné A. Tak sa robia zvýraznené nadpisy a „tlačidlá“.
Časté chyby
| Čo sa stalo | Čo sa stane |
|---|---|
poradie POSITION riadok,stĺpec | text je inde; správne je stĺpec prvý |
pozícia mimo obrazovky (POSITION 50,5) | ERROR- 141 AT LINE 70 pri najbližšom PRINT |
PRINT bez bodkočiarky v riadku 23 | obrazovka sa posunie o riadok nahor |
| text presiahne pravý okraj | pokračuje na ďalšom riadku od ľavého okraja (stĺpec 2) |
SETCOLOR 1 s odtieňom | odtieň sa ignoruje, písmená majú farbu pozadia v inom jase |
| malý rozdiel jasu písmen a pozadia | text nevidno |
Vyskúšaj si
- Nakresli z pomlčiek a znakov
!rámček okolo nadpisu. - Vypíš svoje meno do stredu obrazovky. (Stĺpec je
(40-LEN(N$))/2.) - Vyskúšaj v slučke všetkých 16 odtieňov pozadia; medzi nimi čakaj pol sekundy podprogramom z kapitoly 18. Spusti v emulátore.
Zhrnutie
- Obrazovka má 40 × 24 znakov,
0,0je vľavo hore. POSITION stĺpec,riadokurčí, kam bude písať ďalšíPRINT.GRAPHICS 0aleboPRINT CHR$(125)zmaže obrazovku.SETCOLOR 2je pozadie,1jas písmen,4okraj.--sim-screenukáže obrazovku tak, ako ju program nechal.
Späť: 18. Pamäť počítača · Ďalej: 20. Grafika