-- DisplayFaceExtras.mesa
-- Last Edited by: Taft, February 27, 1983 3:13 pm

DisplayFaceExtras: DEFINITIONS =
  BEGIN

  -- There are two basic types of monitors that can be connected to D-machines:
  -- the narrow Alto-style monitor and the wide LF (large-format) monitor.
  MonitorType: TYPE = {alto, lf};

  -- The monitor connected to this machine is:
  monitorType: MonitorType;

  -- Alto monitors run at a fixed field rate (60 hz) which it is not reasonable to change.
  -- LF monitors normally run at a field rate of approximately 77 hz.  However, this may
  -- be reduced to 60 hz for compatibility with videotape and other TV equipment.

  -- To complicate matters, there are two brands of LF monitors presently in use,
  -- one made by Ball Brothers and the other by Phillips.  They respond in different
  -- ways to having their field rate reduced, and require different waveforms for
  -- reasonable results.

  -- The software cannot detect which brand of LF monitor is connected; this must be
  -- determined by the user.  Shine a light through the ventilation slots in the top
  -- of the housing.  If there is a horizontal logic board at the bottom (under the
  -- neck of the picture tube) then it is a Ball Brothers monitor.  If the logic board
  -- is vertically oriented on the left-hand side (with a bunch of adjustments on the top)
  -- then it is a Phillips monitor.

  -- After changing the field rate, it may be necessary to adjust the monitor to
  -- restore the proper position of the picture.  This is more likely to be needed
  -- with a Ball Brothers monitor than with a Phillips monitor.

  FieldRate: TYPE = {normalAlto, normalLF, lfBall60hz, lfPhillips60hz};

  SetFieldRate: PROCEDURE [rate: FieldRate] RETURNS [ok: BOOLEAN];
  -- Establishes the new field rate, in a machine-independent fashion.
  -- Returns TRUE if the operation is reasonable and is implemented on this machine.

  SetVerticalWaveforms: PROCEDURE [sync, visible, topBorder: CARDINAL] RETURNS [ok: BOOLEAN];
  -- Sets the vertical waveform parameters to arbitrary values.  Sync is the duration
  -- of the sync pulse in scan lines; visible is the duration of the visible field
  -- including top and bottom borders (i.e., everything except sync); topBorder is the
  -- duration of the top border.
  -- All numbers describe scan lines in the even field and must be greater than zero.
  -- For an LF monitor, the standard values are sync=18, visible=430, topBorder=14.
  -- To obtain the normal field rate requires that sync+visible = 448.
  -- To obtain the 60 hz field rate requires that sync+visible = 578.
  -- At present, on the Dorado the three values can be adjusted independently;
  -- on the Dolphin and Dandelion nothing may be changed.
  -- Returns TRUE if the operation is implemented on this machine; no other check is
  -- made for reasonableness of the operation.

  END.