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

    { I am wanting to enable Bright Background Colors in my Pascal programs.

    Here's a little something:

    {---cut here---}

    uses Crt;

    Procedure SetBlinkEGAVGA(BlinkOn : boolean); assembler;
    { Enables/disables bright background colors on EGA/VGA adapters }
    Asm
      mov bl,BlinkOn
      mov ax,1003h { BIOS function to enable/disable blinking }
      int 10h
    End; { SetBlinkEGAVGA }

    Procedure SetBlinkCGAMDA(BlinkOn : boolean); assembler;
    { Enables/disables 16 background colors on EGA/VGA adapters }
    Asm
      mov dx,03D8h { default=CGA }
    {$IFDEF VER70} mov ax,Seg0040 {$ELSE} mov ax,0040h {$ENDIF}
      mov es,ax
      cmp byte ptr [es:0049h],07h   { mono mode? }
      jne @@1
      mov dx,03B8h { so its MDA }
    @@1:
      mov ax,word ptr [es:0065h]
      or  BlinkOn,False
      jz  @@2
      or  ax,20h
      jmp @@3
    @@2:
      and ax,0DFh
    @@3:
      out dx,ax
    End; { SetBlinkCGAMDA }

    Function EGAInstalled : boolean; assembler;
    Asm
      mov ax,1200h
      mov bx,0010h
      xor cx,cx
      int 10h
      xor al,al { mov al,False }
      or  cx,0
      jz  @noega
      inc al { al gets True }
    @noega:
    End; { EGAInstalled }

    Begin
      if EGAInstalled then
        SetBlinkEGAVGA(False) else SetBlinkCGAMDA(False);
      TextAttr := LightGray;
      ClrScr;
      TextAttr := Blue + White shl 4;
      Write('Blue on bright White :)');
      ReadKey;
      GotoXY(1, 1);
      Write('Blue on lightgray blinking :(');
      if EGAInstalled then
        SetBlinkEGAVGA(True) else SetBlinkCGAMDA(True);
      TextAttr := LightGray;
      WriteLn;
    End.

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