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

{
> Last month this routine for scrolling text across the screen was
> posted in this echo.  It's a great routine but would the author of the
> routine please describe how to place the scrolling text on any of the
> 25 vertical lines, how to change the background color...the foreground
> color I found. Also, can this routine place the text between two
> points on the screen without writing over the extreme left and right
> sides?

This should be what you're looking for.  I sort exapnded on the
old code, but instead of using Mem for direct writes I set a
screen structure over the text screen instead...makes it easier
to understand.      }

PROGRAM NewScroll;
Uses Crt;

TYPE
  TCell = RECORD C: Char; A: Byte; END;
  TScreen = array[1..25, 1..80] of TCell;

CONST
  Row: byte = 15;
  Col1: byte = 10;
  Col2: byte = 70;
  Attr: byte = $4F; { bwhite / red }
  Txt: string = 'Hello world....         ';

VAR
  Scr: TScreen ABSOLUTE $B800:0;
  I, J: Byte;
BEGIN
  I := 1;
  REPEAT
    while (port[$3da] and 8) <> 0 do;  { wait retrace }
    while (port[$3da] and 8) = 0 do;
    FOR J := Col1 TO (Col2-1) DO
      Scr[Row, J] := Scr[Row, J+1];  { shift cell left }
    Scr[Row, Col2].C := Txt[I];      { add new cell }
    Scr[Row, Col2].A := Attr;
    I := 1 + (I MOD Length(Txt));
  UNTIL Keypressed;

END.


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