[Back to SCROLL SWAG index]  [Back to Main SWAG index]  [Original]

{
I'm not sure if there're people who are still searching for a _big_ scroll
(meaning bigger than just one line). If so, here's some source:

{ --- cut here --- }

program Simple_Old_TextScroll;

uses crt;
const Sseg : word = $b800; Hi = 17; Txt : string = 'Hello world...      ';
var Fseg,Fofs : word; I,Cur,Idx,Line,BitPos : byte;

procedure Getfont; assembler; asm
  mov ax,1130h; mov bh,3; int 10h; mov Fseg,es; mov Fofs,bp; end;

procedure Retrace; assembler; asm
  mov dx,3dah;
  @l1: in al,dx; test al,8; jnz @l1;
  @l2: in al,dx; test al,8; jz @l2; end;

begin
  GetFont;
  Idx := 1;
  repeat
    Cur := ord(Txt[Idx]);
    for BitPos := 0 to 7 do begin
      for Line := 0 to 7 do begin
        if ((mem[Fseg:Fofs+Cur*8+Line] shl BitPos) and 128) <> 0 then
          mem[Sseg:158+(Line+Hi)*160] := 219
        else
          mem[Sseg:158+(Line+Hi)*160] := 32;
      end;
      Retrace;
      for Line := 0 to 7 do
        for I := 0 to 78 do
          mem[Sseg:(Line+Hi)*160+I+I] := mem[Sseg:(Line+Hi)*160+I+I+2];

    end;
    Idx := 1+Idx mod length(Txt);
  until keypressed;
end.

{ --- cut here --- }

Keep in mind this thing expects a VGA card with the textmemory at $b800.


[Back to SCROLL SWAG index]  [Back to Main SWAG index]  [Original]