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

    {
    > If you're not using the CRT unit, that should write through the ansi
    > driver just fine.  I don't know about the codes you used, but they
    > won't be written directly to video memory.  If you're using the CRT
    > unit then he's right, it won't work without a slight modification.
     >My whole point behind this was that you DON'T need CRT to
    > clear the screen like this.  You only need ANSI.SYS loaded.

    you don't even need ANSI.SYS if you 'cheat' like borland did -=B-)
    }

    procedure clrscr; assembler;
    Asm
      MOV    AX, 0600h    {BIOS Scroll Up}   { <<---- !!!!!! }
      MOV    BH, 07h      {Mono Attribute}
      XOR    CX, CX       {top left = 0,0}
      MOV    DX, 184fh    {bottom right = 24,79}
      INT    10h          {BIOS interrupt}   { do the clear }
      MOV    AH, 02h      {BIOS Set Cursor Position}  { now let's }
      XOR    DX, DX       {DH = Row = 00, DL = Col = 00}
      XOR    BH, BH       {Do it on Page 0}    { move the cursor to }
      INT    10h          {BIOS Interrupt}     { the top left corner }
    End;

    { yeah, it's hardcoded for 25 lines and 80 columns }

    uses
      DOS;
    procedure clrscr;
    var
      regs : registers;
    Begin
      regs.AX := $0600;   {BIOS Scroll Up}   { <<---- !!!!!! }
      regs.BH := $07;     {Mono Attribute}
      regs.CX := $0000;   {top left = 0,0}
      regs.DX := $184F;   {bottom right = 24,79}
      INTR($10, regs);    {BIOS interrupt}   { do the clear }
      regs.AH := $02;     {BIOS Set Cursor Position}  { now let's }
      regs.DX := $0000;   {DH = Row = 00, DL = Col = 00}
      regs.BH := $0000;   {Do it on Page 0}    { move the cursor to }
      INTR($10, regs);    {BIOS Interrupt}     { the top left corner } End;
    end;

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