home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / DRACO / DRACO-2.ARK / FORM.G < prev    next >
Text File  |  1986-11-13  |  2KB  |  60 lines

  1. /* Use of form routines:
  2.  
  3.     Call CRT_FormStart to clear out any existing form and initialize.
  4.  
  5.     Add fields to the form with CRT_FormInt and CRT_FormChars:
  6.     line - screen line for start of prompt
  7.     col - screen column for start of prompt
  8.     len - screen length for chars or int value (max 6 for int)
  9.     header - header to left of input area
  10.     pChanged - pointer to variable, which after CRT_FormRead, will
  11.         contain 'true' if that field was changed
  12.     ptr - pointer to buffer holding value
  13.     check - routine to call to check new values
  14.  
  15.     Call CRT_FormRead:
  16.     header - multiline header to center at top of screen
  17.     flags - byte of flags:
  18.         FORMHEADERS - display headers on this call
  19.         FORMSKIP - use autoskip on input fields
  20.         FORMINPUT - allow input (otherwise just display)
  21.         FORMOUTPUT - display values (otherwise assume they are there)
  22.     terminators - string of characters allowed to terminate input of
  23.         a field. The following should be present to enable their
  24.         functions, but will never be returned:
  25.         CONTROL-R - used to force reset of a field
  26.         CONTROL-Z - used to force reset of all fields
  27.         The following are normally present to enable their functions:
  28.         CONTROL-Q - used to do a quick exit
  29.         ESCAPE - used to reset all fields and exit
  30.     The character returned is the character from 'terminators' that the
  31.     use typed which caused an exit. Carriage return (CONTROL-M) is the
  32.     most likely, i.e. the user filled in all fields and fell off the end.
  33. */
  34.  
  35. char
  36.     CONTROL_Q = '\(0x11)',
  37.     CONTROL_R = '\(0x12)',
  38.     CONTROL_Z = '\(0x1a)',
  39.     ESCAPE    = '\(0x1b)';
  40.  
  41. *char TERMINATORS = "\(CONTROL_Q)\(CONTROL_R)\(CONTROL_Z)\(ESCAPE)";
  42.  
  43. extern
  44.     CRT_FormIntOK(int n)bool,
  45.     CRT_FormCharsOK(*char p)bool,
  46.     CRT_FormStart()void,
  47.     CRT_FormInt(ushort line, col, len; *char header;
  48.         *bool pChanged; *int ptr;
  49.         proc(int n)bool check)void,
  50.     CRT_FormChars(ushort line, col, len; *char header;
  51.           *bool pChanged; *char ptr;
  52.            proc(*char p)bool check)void,
  53.     CRT_FormRead(*char header; byte flags; *char terminators)char;
  54.  
  55. byte
  56.     FORMHEADERS = 0x01,
  57.     FORMSKIP = 0x02,
  58.     FORMINPUT = 0x04,
  59.     FORMOUTPUT = 0x08;
  60.