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