[Back to EGAVGA SWAG index] [Back to Main SWAG index] [Original]
{
CHRIS BEISEL
Hey Terje, here's some stuff to get you started on some ideas For the
group. I threw it together it 3 minutes, so it's not much, but the
assembley code isn't bad... here it is:
}
Program palette;
Uses
Crt;
Const
vga_segment = $0A000;
fade_Delay = 20;
Var
lcv : Integer;
temp : Char;
Procedure video_mode (mode : Byte); Assembler;
Asm
mov AH,00
mov AL,mode
int 10h
end;
Procedure set_color (color, red, green, blue : Byte);
begin
port[$3C8] := color;
port[$3C9] := red;
port[$3C9] := green;
port[$3C9] := blue;
end;
Procedure wait_4_refresh; Assembler;
Label
wait, retr;
Asm
mov DX,3DAh
wait: in AL,DX
test AL,08h
jz wait
retr: in AL,DX
test AL,08h
jnz retr
end;
begin
ClrScr;
Writeln('Hey Terje, this is pretty cheezy, but it does show how to wait');
Writeln('for the vertical screen refresh in assembley, as well as how to');
Writeln('change colors, too... this isn''t the palette scrolling, but some');
Writeln('fade Type routines that may come in handy. The video mode routine');
Writeln('was also written in assembley (obviously)... well, next I''m going');
Writeln('to work on zooming (It could be a cool effect). C''ya L8r. ');
Writeln(' Press a key...');
temp := ReadKey;
video_mode($13);
lcv := 0;
Repeat
While lcv < 63 do
begin
wait_4_refresh;
set_color(0, lcv, lcv, lcv);
lcv := lcv + 1;
Delay(fade_Delay);
end;
While lcv > 0 do
begin
wait_4_refresh;
set_color(0, lcv, lcv, lcv);
lcv := lcv - 1;
Delay(fade_Delay);
end;
Until KeyPressed;
video_mode(3);
end.
[Back to EGAVGA SWAG index] [Back to Main SWAG index] [Original]