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

    {
    >Does anyone know how display characters in 320x200x256 ($A000)??
    >I want to write letters on the screen, but how do I? Is there a
    >way without a special program???

      You need to use interrupt calls to the BIOS video routines to write a
      character to the screen.  Include the DOS unit in your program as
      you'll need it for the definition of "Intr" and "Registers" below:
    }

    procedure SetCursorPosition(Column, Row : byte);
    var
      reg : registers;
    begin
       reg.AH := $02;
       reg.BH := $00;    {* Display Page Number. 0 for Graphics Modes! *}
       reg.DL := Column; {* Row/Column are Zero-Based! *}
       reg.DH := Row;
       intr($10, reg);
    end;

    procedure WriteCharAtCursor(x : char; Color : byte);
    var
      reg : registers;
    begin
       reg.AH := $0A;
       reg.AL := ord(x);
       reg.BH := $00;    {* Display Page Number. * for Graphics Modes! *}
       reg.BL := Color   {* For Graphics Modes only? *}
       reg.CX := 1;      {* Word for number of characters to write *}
       intr($10, reg);
    end;

    {
    Use the first routine to set the cursor position and the second routine
    to write the character.  (I don't remember if writing a character will
    modify the cursor position or not--you'll have to play with that one).
    Play with these routines a bit and write another to output a string &
    you should be all set.  WARNING: the characters you write in 300x200
    mode will be very large and VIC-20-like....

    I recommend you get a copy of Ron Brown's Interrupt List files
    (INTERnnA.ZIP through INTERnnC.ZIP, where nn is the current number--my
    guess if 34 or 35 by now).  I also have a copy of the "DOS Programmer's
    Reference 2nd Edition" (Que Books) which describes many of the
    Interrupts and how to interface with them in ASM, BASIC, C or Pascal,
    as well as how DOS, BIOS, VIDEO, etc. are arranged.  It is a VERY
    worthwhile reference....
    }

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