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 / TURBOPAS / TP-UTIL.ARK / FLIPFLD.SRC < prev    next >
Text File  |  1986-01-06  |  2KB  |  59 lines

  1.  
  2. PROCEDURE FLIPFIELD(X,Y        : INTEGER;
  3.                     VAR STATE  : BOOLEAN;
  4.                     TRUSTRING  : STRING30;
  5.                     FALSTRING  : STRING30;
  6.                     VAR ESCAPE : BOOLEAN);
  7.  
  8. VAR BLANKER   : STRING80;
  9.     KEYSTROKE : 0..255;
  10.     WORKSTATE : BOOLEAN;
  11.     CH        : CHAR;
  12.  
  13.  
  14.  
  15. PROCEDURE SHOWSTATE(NOWSTATE : BOOLEAN);
  16.  
  17. BEGIN
  18.   GOTOXY(X,Y); WRITE(BLANKER);   { Erase the old label }
  19.   IF NOWSTATE THEN
  20.     BEGIN
  21.       GOTOXY(X,Y);
  22.       WRITE(TRUSTRING)   { Write TRUSTRING for NOWSTATE = TRUE }
  23.     END
  24.   ELSE
  25.     BEGIN
  26.       GOTOXY(X,Y);
  27.       WRITE(FALSTRING);  { Write FALSTRING for NOWSTATE = FALSE }
  28.     END
  29. END;
  30.  
  31.  
  32. BEGIN
  33.   ESCAPE := FALSE; CH := CHR(0);
  34.   LOWVIDEO;                                { Use highlighting }
  35.   FILLCHAR(BLANKER,SIZEOF(BLANKER),' ');   { Set up blanker string }
  36.   WORKSTATE:=STATE;                        { Temporary Boolean }
  37.   IF LENGTH(TRUSTRING)>LENGTH(FALSTRING) THEN  { Adjust blanker }
  38.     BLANKER[0]:=CHR(LENGTH(TRUSTRING)) ELSE    {  string for lengths }
  39.     BLANKER[0]:=CHR(LENGTH(FALSTRING));        {  of meaning labels  }
  40.   SHOWSTATE(WORKSTATE);                    { Display initial label }
  41.   REPEAT
  42.     WHILE NOT KEYSTAT(CH) DO BEGIN {NULL} END;  { Calls KEYSTAT... }
  43.     KEYSTROKE := ORD(CH);
  44.     IF KEYSTROKE=27 THEN ESCAPE:=TRUE ELSE
  45.       IF KEYSTROKE<>13 THEN WORKSTATE:=NOT WORKSTATE;
  46.     SHOWSTATE(WORKSTATE);
  47.   UNTIL (KEYSTROKE=13) OR ESCAPE;          { ...until CR or ESC is pressed }
  48.   IF NOT ESCAPE THEN STATE:=WORKSTATE;     { Update STATE if CR }
  49.   NORMVIDEO;
  50.   SHOWSTATE(STATE);     { Redisplay STATE in non-highlighted text }
  51. END;
  52. LE(KEY_QUANTITY : INTEGER);
  53.  
  54. VAR WORKKEY : KEYREC;
  55.     SPACE   : REAL;
  56.     I,J     : INTEGER;
  57.  
  58. BEGIN
  59.   AS