CONST  { CGA Definitions }

  CGA_CRTC_Index = $03D4;                 CGA_Control = $03D8;
  CGA_CRTC_Value = $03D5;                 CGA_Palette = $03D9;
                                          CGA_Status  = $03DA;

  CRTC_Horiz_Total     = 0;               CRTC_Max_Scan_Line =  9;
  CRTC_Horiz_Display   = 1;               CRTC_Cursor_Start  = 10;
  CRTC_Horiz_SyncPos   = 2;               CRTC_Cursor_End    = 11;
  CRTC_Horiz_SyncWidth = 3;               CRTC_Start_High    = 12;
  CRTC_Vert_Total      = 4;               CRTC_Start_Low     = 13;
  CRTC_Vert_Adjust     = 5;               CRTC_Cursor_High   = 14;
  CRTC_Vert_Display    = 6;               CRTC_Cursor_Low    = 15;
  CRTC_Vert_SyncPos    = 7;               CRTC_LightPen_High = 16;
  CRTC_Interlace_Mode  = 8;               CRTC_LightPen_Low  = 17;

  CGA_C_80x25     = $01;                  CGA_P_Blue       = $01;
  CGA_C_Graphics  = $02;                  CGA_P_Green      = $02;
  CGA_C_BandW     = $04;                  CGA_P_Red        = $04;
  CGA_C_Video     = $08;                  CGA_P_Intensity  = $08;
  CGA_C_640x200   = $10;                  CGA_P_PIntensity = $10;
  CGA_C_Blink     = $20;                  CGA_P_Palette    = $20;
  CGA_S_HBlanking = $01;                  CGA_S_VBlanking  = $08;


FUNCTION CPeekCRTC (index:  Byte):  Byte;

  Port [CGA_CRTC_Index] := index;
  CPeekCRTC := Port [CGA_CRTC_Value]

END;  { FUNCTION CPeekCRTC }


PROCEDURE CPokeCRTC (index, value:  Byte);

  Port [CGA_CRTC_Index] := index;
  Port [CGA_CRTC_Value] := value

END;  { PROCEDURE CPokeCRTC }