uses crt; {Pouzivam delay, clrscr a readkey} type Color = record {typ pro ulozeni RGB} R, G, B : byte; end; var Citac, Barva, R, G, B : byte; Zaloha : array [0..255] of Color; {Ulozeni palety} Procedure NactiPal (var Pole : array of Color); {Ulozi paletu} var Citac : byte; begin Port[3C7] := 0; {Zacinam barvou cislo 0} for Citac := 0 to 255 do {Tolik je barev v palete} begin Pole[Citac].R := Port[3C9]; Pole[Citac].G := Port[3C9]; Pole[Citac].B := Port[3C9]; end; end; Procedure ObnovPal (var Pole : array of Color); {obnovi paletu} var Citac : byte; begin Port[3C8] := 0; {Zacinam barvou cislo 0} for Citac := 0 to 255 do {Tolik je barev v palete} begin Port[3C9] := Pole[Citac].R; Port[3C9] := Pole[Citac].G; Port[3C9] := Pole[Citac].B; end; end; procedure VezmiBarvu (Barva : byte); {Nacte zadanou barvu z palety} begin Port[3c7] := Barva; R := Port[3c9]; G := Port[3c9]; B := Port[3c9]; end; procedure UlozBarvu (Barva : byte); {Ulozi RGB do zadane barvy palety} begin Port[3c8] := Barva; Port[3c9] := R; Port[3c9] := G; Port[3c9] := B; end; procedure Smeti; {Zaplni obrazovku barevnymi pismeny} var X, Y : byte; begin for X := 1 to 80 do {80 sloupcu} for Y := 1 to 24 do {24 radku, pri zapisu na 25. radek by} {obrazovka poskocila nahoru.} begin GotoXY (X,Y); TextColor (Random (255)); {Nahodna barva popredi} TextBackground (Random (255)); {Nahodna barva pozadi} write ('@'); end; end; begin clrscr; Smeti; {Nasypu na obrazovku barevne zavinace} NactiPal (Zaloha); {Nejdrive uchovam puvodni paletu} For Citac := 1 to 63 do {RGB jsou 0-63} begin For Barva := 0 to 255 do {Barev je 0-255} begin Vezmibarvu (Barva); {Nactu barvu} if R > 1 then dec (R); {Ztlumim vsechny jeji slozky} if G > 1 then dec (G); if B > 1 then dec (B); UlozBarvu (Barva); {Ulozim ji zpatky} end; delay (20); {Cely proces trosku zpomalim (386SX - 33MHz)} end; readkey; {Obrazovka zhasnuta, cekam na klavesu} ObnovPal (Zaloha); {Obnovim puvodni paletu, aby bylo neco videt} end. výheň