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

PROGRAM Mode13Demo;             { Oct 10/93, Greg Estabrooks.       }
VAR
   CurCol,
   OldMode:BYTE;
   CurPos,
   X,Y :WORD;
   ScrBuff :ARRAY[1..64000] OF BYTE;

PROCEDURE SetVidMode( Mode :BYTE ); ASSEMBLER;
                {  Routine to set video mode                        }
ASM
  Mov AH,00                     {  Function to set mode             }
  Mov AL,Mode                   {  Mode to change to                }
  Int $10                       {  Call dos                         }
END;{SetVidMode}

PROCEDURE PutPixel( X,Y :WORD; Color :BYTE );
BEGIN
  Mem[$A000:(320*Y)+X]:= Color;
END;

BEGIN
  SetVidMode($13);              { Set Mode to 320x200x256.          }
  FOR Y := 0 To 199 DO          { Loop through all lines.           }
    FOR X := 0 To 319 DO        { Loop through all columns.         }
        PutPixel(X,Y,Random(255));
  CurCol := 0;
  CurPos := 0;
  FOR Y := 0 To 199 DO          { Loop through all lines.           }
   BEGIN
    Inc(CurCol);
    FOR X := 0 To 319 DO        { Loop through all columns.         }
     BEGIN
       Inc(CurPos);
       ScrBuff[CurPos] := CurCol;
     END;
   END;
  Writeln('Press Enter to see the Faster way!');
  Readln;
  Move(ScrBuff,Mem[$A000:0],SizeOf(ScrBuff));
  Readln;
  SetVidMode(3);                { Set Mode 3,80x25.                 }
END.

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