[Back to EGAVGA SWAG index] [Back to Main SWAG index] [Original]
{
AK> howdie, nice fader! i was wandering if you would be able
AK> to comment the program and repost it. i.e what the ports
AK> are etc for us less experienced programmers...
Okay, if you don't quote so much next time.
}
program copper;
{ bar-fade in, copper v7.0, by Bas van Gaalen, Holland, PD }
uses crt;
const size=20; { number of text-lines }
var pal:array[0..3*size-1] of byte;
{ increase first value in the pal-array (the one representing red), and scroll
that in the array }
procedure incbars;
var i:word;
begin
if pal[0]<63 then inc(pal[0]);
for i:=3*size-2 downto 0 do pal[i+1]:=pal[i];
end;
procedure copperbars;
var cc,l,j:word;
begin
asm cli end;
while (port[$3da] and 8)<>0 do; { vertical retrace }
while (port[$3da] and 8)=0 do;
cc:=0;
for l:=0 to size-1 do begin
port[$3c8]:=1; { set pal-idx number (1=blue) }
port[$3c9]:=pal[cc]; { set first two pal-value's (red and green }
port[$3c9]:=pal[cc+1]; { intensities }
for j:=0 to 15 do begin { 16 vertical retraces = one text line }
while (port[$3da] and 1)<>0 do;
while (port[$3da] and 1)=0 do;
end;
port[$3c9]:=pal[cc+2]; { set last pal-value (blue), and thus activate
new palette }
inc(cc,3);
end;
asm sti end;
end;
var i:byte;
begin
textmode(co80); { 25 lines mode }
fillchar(pal,sizeof(pal),0); { clear palette array }
copperbars; { default = black -> otherwise flash of blue will appear }
textcolor(1); { set text to blue (now black, 'cos pal changed) }
writeln;
writeln('Is this what you mean?'); writeln;
for i:=1 to 15 do writeln('Test line ',i);
repeat
incbars;
copperbars;
until keypressed; { do stuff until keypressed... }
textmode(lastmode); { back to last mode }
end.
[Back to EGAVGA SWAG index] [Back to Main SWAG index] [Original]