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

    {
    RN> Hi! Does anyone know if it's possible to modify the
    RN> characters in the ASCII chart using Pascal?  The reason I
    RN> want to do this is to define the upper ASCII characters
    RN> (128+) to implement the Cyrillic alphabet, for an
    RN> application I'm developping (or will be developping if I can
    RN> figure this out :-)))
    }

    Unit Font;

    {     AX  =  $1110      (ah = $11, al = $10)
              BH  =  bytes per character
              BL  =  block to load to.  (use 0)
              CX  =  number of character defined by table
              DX  =  starting character value
              ES  =  segment of the table (use Seg())
              BP  =  offset of the table (use Ofs())                    }
    Interface

    Procedure DoFont(Fname: String);

    Implementation

    Uses DOS;
    Type FontArray= Array[1..$1000] of Char;

        FontFile= Record
           Gfont_POINTS: Byte;
                  Gfont: FontArray;
                    End; {of record}
    VAR FonF: File;
        Tfont: FontFile;
        ESr,BPr: Word;
    {---------------------------------------------------------------------------}
    Procedure DoFont(Fname: String);

    VAR R: Registers;

    Begin;
    Assign (FonF,Fname+'.FON');
    Reset (FonF, SizeOf(FontFile));
    BlockRead (FonF, Tfont, 1);
    Close (FonF);
    ESr:= Seg(Tfont.Gfont);
    BPr:= Ofs(Tfont.Gfont);
    r.ax := $1110;
    r.bh := Tfont.Gfont_Points;            (* bytes per character *)
    r.bl := 0;                             (* load to block 0 *)
    r.cx := 256;                           (* 256 characters *)
    r.dx := 0;                             (* start with character 0 *)
    r.es := Seg(Tfont.Gfont);              (* segment of table *)
    r.bp := Ofs(Tfont.Gfont);              (* offset of the table *)
    intr($10, r);
    End; {of procedure}

    End.

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