[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]