Zadání VCC2:
Zaplň celou obrazovku spirálou ze znaků + - + | + +.
(c) dement, cpoc
Napiš co nejkratší program splňující tyto podmínky:
(1) Program předpokládá, že je spuštěn z textmódu. V něm také
zůstane a celou obrazovku vyplní "spirálou", viz obrázek.
--------------+
+------------+|
|+----------+||
||+--------+|||
|||--------+|||
||+---------+||
|+-----------+|
+-------------+
(2) Musí fungovat ve všech rozlišeních splňujících 2 < výška < šířka <
200. Rozlišení se dá korektně zjistit buď voláním příslušných služeb
BIOSu nebo přečtením přímo z jeho datových struktur. Šířka
obrazovky je ve wordu na adrese 0:44Ah, výška-1 je v bajtu na
adrese 0:484h. Vše je uváděno ve znacích.
(3) Videopaměť (resp. okno do videopaměti) začíná na adrese B800:0 a
je dlouhé 32KB. Předpokládáme, že se do těch 32KB vejde celá
obrazovka. Je povolené použít ke kreslení služeb BIOSu.
(4) Poslední znak na vnitřním konci spirály je volitelný, buď rovná čára
jako na obrázku nebo správně orientovaný rohový znak.
(5) Program nemění atributy znaků (to co je na lichých adresách
videopaměti), kreslí pouze znaky (na sudé adresy).
(6) Program po nakreslení spirály čeká na událost "stisk klávesy".
Stiskem se rozumí buď fyzický stisk nebo alespoň tvrzení BIOSu či
DOSu, že ke stisku došlo. Po stisku ESC musí program skončit, reakce
na ostatní klávesy je volitelná - buď skončit nebo dál čekat. Lze se
spolehnout na BIOS a DOS, že stisk ESC skutečně ohlásí.
(7) Program splňuje standardní podmínky .
výheň