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

    {
    Here's a little TEXTMODE Scroller I wrote some time ago. Feel free to release
    it in the SWAG Files ;)

    ---------------------------------= CUT HERE =---------------------------------

    { This is a VERY simple Textmode Scroller. Feel free to use it in your
      programs .                                                                 }

    Uses Crt;

    Const Bits    : Array [0..7] of Byte = (128,64,32,16,8,4,2,1);
          Text    : String = ' THiS LiTTLE SCROLLER WAS DONE BY ROGUE/'+
                    'DiGiTAL PROJECTS             ';
          YPos    = 7;

    Var
       FSeg,FOfs,i  : Word;
       BitMap       : Array [0..80,0..7] of Byte;

    Procedure Scroll;
    Var
       i,j                                  : Word;
       CharPos,CharNo,Color,Character,nc    : Byte;
       c                                    : Byte;
    Begin
         CharNo:=1;
         Repeat
               Character:=Ord(Text[CharNo]);

               For CharPos:=0 to 7 do
               Begin
                    For i:=0 to 7 do
                        If Mem[FSeg:FOfs+(Character shl 3)+i] and
                           Bits[CharPos]<>0 then
                           BitMap[80,i]:=15  { Char-Color }
                        Else
                            BitMap[80,i]:=0; { Background Color }

                    Asm
                       mov   dx, $3da
                       @L1:
                       in    al, dx
                       test  al, $08
                       jnz   @L1
                       @L2:
                       in    al, dx
                       test  al, $08
                       jz    @L2
                    End;

                    For j:=0 to 7 do
                        For i:=0 to 79 do
                        Begin
                             { Draw }
                             Mem[$B800:(i shl 1)+((j+YPos)*160)]:=219;
                             Mem[$B800:(i shl 1)+((j+YPos)*160)+1]:=BitMap[i,j];
                             { Scroll left }
                             BitMap[i,j]:=BitMap[i+1,j];
                        End;
               End;
               Inc(CharNo);
               If CharNo>Length(Text) then
                  CharNo:=1;
         Until Keypressed;
         readkey;
    End;

    Procedure GetFont; Assembler;
    Asm
       mov  ax, $1130
       mov  bh, $01
       int  $10
       mov  fseg, es
       mov  fofs, bp
    End;

    Begin
         ClrScr;
         GetFont;
         Scroll;
    End.

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