{ 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.