home *** CD-ROM | disk | FTP | other *** search
/ Frostbyte's 1980s DOS Shareware Collection / floppyshareware.zip / floppyshareware / USCX / TURBO-06.ZIP / SCREEN.INC < prev    next >
Text File  |  1985-02-23  |  21KB  |  633 lines

  1. {.L+}
  2.  
  3. {   SCREEN PROCEDURES  }
  4.  
  5. {procedure Frame(UpperLeftX, UpperLeftY, LowerRightX, LowerRightY: Integer);}
  6. {FUNCTION READREAL(X,Y,LENGTH,FRACTION:INTEGER):REAL;}
  7. {FUNCTION READINT(X,Y,LENGTH:INTEGER):INTEGER;}
  8. {FUNCTION READSTRING(X,Y,MAXLENGTH:INTEGER):XXXSTR80;}
  9. {FUNCTION READDATE(X,Y:INTEGER):XXXSTR8;}
  10.  
  11.  
  12.  
  13. {.L-}
  14. {.R-}
  15.  
  16.  
  17. procedure Frame(UpperLeftX, UpperLeftY, LowerRightX, LowerRightY: Integer);
  18.  
  19. var
  20.    i: Integer;
  21.  
  22. begin
  23.    GotoXY(UpperLeftX, UpperLeftY);  Write(chr(218));
  24.    for i:=UpperLeftX+1 to LowerRightX-1 do Write(chr(196));
  25.    Write(chr(191));
  26.    for i:=UpperLeftY+1 to LowerRightY-1 do
  27.       begin
  28.          GotoXY(UpperLeftX , i);  Write(chr(179));
  29.          GotoXY(LowerRightX, i);  Write(chr(179));
  30.       end;
  31.    GotoXY(UpperLeftX, LowerRightY);
  32.    Write(chr(192));
  33.    for i:=UpperLeftX+1 to LowerRightX-1 do Write(chr(196));
  34.       Write(chr(217));
  35. end  { Frame };
  36.  
  37.  
  38. {**********************************************************************}
  39.  
  40.  
  41. FUNCTION READREAL(X,Y,LENGTH,FRACTION:INTEGER):REAL;
  42.  
  43. {   READS A REAL NUMBER AT LOCATION X,Y }
  44.  
  45. VAR
  46.    POSITION : INTEGER;
  47.    SECTION : INTEGER;
  48.    SPACEEND : INTEGER;
  49.    EXIT : BOOLEAN;
  50.    HOLDMAIN : REAL;
  51.    HOLDFRACTION : REAL;
  52.    DIGIT : INTEGER;
  53.    INCHAR : CHAR;
  54.    HOLD: REAL;
  55.    COUNT : INTEGER;
  56.  
  57.  
  58. FUNCTION POWER(N:INTEGER):REAL;
  59.  
  60. { RASES 10 TO THE  SPECIFIED POWER }
  61.  
  62. VAR
  63.    HOLD : REAL;
  64.    I : INTEGER;
  65.  
  66. BEGIN
  67.    HOLD := 1;
  68.    FOR I := 1 TO N DO
  69.       HOLD := HOLD * 10.0;
  70.    POWER := HOLD;
  71. END;
  72.  
  73.  
  74. BEGIN
  75.    POSITION := 0;
  76.    IF LENGTH > FRACTION + 1 THEN
  77.       SECTION := 1
  78.    ELSE
  79.       BEGIN
  80.          POSITION := 1;
  81.          SECTION := 3;
  82.       END;
  83.    EXIT := FALSE;
  84.    GOTOXY(X,Y);
  85.    TEXTCOLOR(BLACK);
  86.    TEXTBACKGROUND(LIGHTGRAY);
  87.    WRITE(XXXSPACE(LENGTH-(FRACTION+1)),'.',XXXSPACE(FRACTION));
  88.    WHILE NOT EXIT DO
  89.       BEGIN
  90.          GOTOXY((X+POSITION),Y);
  91.          READ(KBD,INCHAR);
  92.          CASE SECTION OF
  93.             1: {SPACES BEFORE}
  94.                BEGIN
  95.                   IF ((INCHAR = ' ') AND (POSITION < (LENGTH-FRACTION)))THEN
  96.                      POSITION := POSITION + 1
  97.                   ELSE
  98.                      IF INCHAR IN ['1'..'9','0'] THEN
  99.                         BEGIN
  100.                            POSITION := POSITION + 1;
  101.                            DIGIT := ORD(INCHAR)-48;
  102.                            HOLDMAIN := DIGIT;
  103.                            SECTION  := 2;
  104.                            WRITE(INCHAR);
  105.                            SPACEEND := POSITION;
  106.                         END
  107.                      ELSE
  108.                         IF ((INCHAR = CHR(7)) OR (INCHAR = CHR(8))) THEN
  109.                            IF POSITION > 0 THEN
  110.                               BEGIN
  111.                                  POSITION := POSITION - 1;
  112.                                  GOTOXY((X+POSITION),Y);
  113.                                  WRITE(' ');
  114.                               END
  115.                            ELSE
  116.                               WRITE(CHR(7))
  117.                         ELSE
  118.                            WRITE(CHR(7));
  119.                END;
  120.             2: {MAIN PART}
  121.                BEGIN
  122.                   IF INCHAR IN ['1'..'9','0'] THEN
  123.                      BEGIN {CHARATER IS DIGIT ADD TO MAIN}
  124.                         WRITE(INCHAR);
  125.                         DIGIT := ORD(INCHAR)-48;
  126.                         HOLDMAIN := (HOLDMAIN * 10.0) + DIGIT;
  127.                         POSITION := POSITION + 1;
  128.                         IF POSITION = (LENGTH - (FRACTION+1)) THEN
  129.                            BEGIN {SWITCH TO FRACTION SECTION}
  130.                               POSITION := POSITION + 1;
  131.                               IF FRACTION > 0 THEN
  132.                                  BEGIN
  133.                                     COUNT := 0;
  134.                                     HOLDFRACTION := 0.0;
  135.                                     SECTION := 3;
  136.                                  END
  137.                               ELSE
  138.                                  BEGIN
  139.                                     COUNT := 1;
  140.                                     HOLDFRACTION := 0.0;
  141.                                     SECTION := 4;
  142.                                  END;
  143.                            END;
  144.                      END
  145.                   ELSE
  146.                      IF ((INCHAR = CHR(8)) OR (INCHAR = CHR(7))) THEN
  147.                         BEGIN    {DELETE}
  148.                            IF POSITION = SPACEEND THEN
  149.                               BEGIN  {SWITCH BACK UP TO SPACE SECTION}
  150.                                  SECTION := 1;
  151.                                  POSITION := POSITION - 1;
  152.                                  GOTOXY((X+POSITION),Y);
  153.                                  WRITE(' ');
  154.                               END
  155.                            ELSE
  156.                               BEGIN {DELETE A DIGIT}
  157.                                  POSITION := POSITION - 1;
  158.                                  GOTOXY((X+POSITION),Y);
  159.                                  WRITE(' ');
  160.                                  HOLDMAIN := INT(HOLDMAIN/10.0);
  161.                               END;
  162.                         END
  163.                      ELSE
  164.                         IF ((INCHAR = CHR(11)) OR (INCHAR = CHR(13))) THEN
  165.                            BEGIN {TOTALLY FINISH NUMBER}
  166.                               EXIT := TRUE;
  167.                               HOLDFRACTION := 0;
  168.                               COUNT := 1;
  169.                            END
  170.                         ELSE
  171.                            IF INCHAR = '.' THEN
  172.                               BEGIN
  173.                                  GOTOXY(X,Y);
  174.                                  WRITE(HOLDMAIN:(LENGTH-FRACTION-1):0);
  175.                                  SECTION := 3;
  176.                                  POSITION := LENGTH-FRACTION;
  177.                                  HOLDFRACTION := 0.0;
  178.                                  COUNT := 0;
  179.                               END
  180.                            ELSE
  181.                               BEGIN    {ERROR}
  182.                                  WRITE(CHR(7));
  183.                               END
  184.                END;
  185.             3: {FRACTION}
  186.                BEGIN
  187.                   IF INCHAR IN ['1'..'9','0'] THEN
  188.                      BEGIN  {ADD TO FRACTION CHECK FOR END OF FRACTION}
  189.                         POSITION := POSITION + 1;
  190.                         WRITE(INCHAR);
  191.                         DIGIT := ORD(INCHAR)-48;
  192.                         HOLDFRACTION := (HOLDFRACTION*10.0) + DIGIT;
  193.                         COUNT := COUNT + 1;
  194.                         IF COUNT = FRACTION THEN
  195.                            BEGIN { SWITCH TO EXIT HOLD SECTION}
  196.                               SECTION := 4;
  197.                            END
  198.                      END
  199.                   ELSE
  200.                      IF ((INCHAR = CHR(7)) OR (INCHAR = CHR(8))) THEN
  201.                         BEGIN {DELETE}
  202.                            IF COUNT = 0 THEN
  203.                               BEGIN {SWITCH TO MAIN SECTION }
  204.                                  POSITION := POSITION - 2;
  205.                                  GOTOXY((X+POSITION),Y);
  206.                                  WRITE(' ');
  207.                                  HOLDMAIN := INT(HOLDMAIN/10.0);
  208.                                  SECTION := 2;
  209.                               END
  210.                            ELSE
  211.                               BEGIN
  212.                                  HOLDFRACTION := INT(HOLDFRACTION/10.0);
  213.                                  COUNT := COUNT -1;
  214.                                  POSITION := POSITION -1;
  215.                                  GOTOXY((X+POSITION),Y);
  216.                                  WRITE(' ');
  217.                               END;
  218.                         END
  219.                      ELSE
  220.                         IF ((INCHAR = CHR(11)) OR (INCHAR = CHR(13))) THEN
  221.                            BEGIN   {FINISH}
  222.                               EXIT := TRUE;
  223.                               IF COUNT = 0 THEN
  224.                                  BEGIN
  225.                                     COUNT := 1;
  226.                                     HOLDFRACTION := 0.0;
  227.                                  END;
  228.                            END
  229.                         ELSE
  230.                            BEGIN     {ERROR}
  231.                               WRITE(CHR(7));
  232.                            END
  233.                END;
  234.             4: {FINISHED}
  235.                 BEGIN
  236.                    IF ((INCHAR = CHR(7)) OR (INCHAR = CHR(8))) THEN
  237.                       BEGIN   {DELETE}
  238.                          IF FRACTION = 0 THEN
  239.                             BEGIN
  240.                                SECTION := 2;
  241.                                HOLDMAIN := INT(HOLDMAIN/10.0);
  242.                                POSITION := POSITION - 1;
  243.                                GOTOXY((X+POSITION),Y);
  244.                                WRITE(' ');
  245.                             END
  246.                          ELSE
  247.                             BEGIN
  248.                                SECTION := 3;
  249.                                HOLDFRACTION := INT(HOLDFRACTION/10.0);
  250.                                COUNT := COUNT -1;
  251.                                POSITION := POSITION -1;
  252.                                GOTOXY((X+POSITION),Y);
  253.                                WRITE(' ');
  254.                             END;
  255.                       END
  256.                    ELSE
  257.                       IF ((INCHAR = CHR(11)) OR (INCHAR = CHR(13))) THEN
  258.                          BEGIN   { EXIT}
  259.                             EXIT := TRUE;
  260.                             IF COUNT = 0 THEN
  261.                                BEGIN
  262.                                   COUNT := 1;
  263.                                   HOLDFRACTION := 0.0;
  264.                                END;
  265.                          END
  266.                        ELSE
  267.                           BEGIN {ERROR}
  268.                              WRITE(CHR(7));
  269.                           END;
  270.                 END;
  271.          END;
  272.       END;
  273.    HOLD := HOLDMAIN + (HOLDFRACTION/POWER(COUNT));
  274.    READREAL := HOLD;
  275.    GOTOXY(X,Y);
  276.    WRITE(HOLD:LENGTH:FRACTION);
  277.    TEXTCOLOR(LIGHTGRAY);
  278.    TEXTBACKGROUND(BLACK);
  279. END;
  280.  
  281.  
  282.  
  283. {***************************************************************************}
  284.  
  285.  
  286. FUNCTION READINT(X,Y,LENGTH:INTEGER):INTEGER;
  287.  
  288. {   READS A INTEGER NUMBER FROM THE SCREEN  }
  289.  
  290. VAR
  291.    HOLD : REAL;
  292.    POWER : INTEGER;
  293.    DIGIT : INTEGER;
  294.    INCHAR : CHAR;
  295.    EXIT : BOOLEAN;
  296.    POSITION : INTEGER;
  297.    HOLD2 : INTEGER;
  298.  
  299. BEGIN
  300.    IF LENGTH > 5 THEN
  301.       LENGTH := 5;
  302.    EXIT := FALSE;
  303.    GOTOXY(X,Y);
  304.    TEXTCOLOR(BLACK);
  305.    TEXTBACKGROUND(LIGHTGRAY);
  306.    WRITE(XXXSPACE(LENGTH));
  307.    HOLD := 0;
  308.    POWER := 1;
  309.    POSITION := 0;
  310.    WHILE NOT EXIT DO
  311.       BEGIN
  312.          GOTOXY((X+POSITION),Y);
  313.          READ(KBD,INCHAR);
  314.          CASE ORD(INCHAR) OF
  315.             11,13:{RETURN OR LINEFEED}
  316.                IF HOLD > 32767.0 THEN
  317.                   BEGIN
  318.                      WRITE(CHR(7));
  319.                      GOTOXY(X,Y);
  320.                      HOLD :=0;
  321.                      POWER := 1;
  322.                      POSITION := 0;
  323.                      WRITE(XXXSPACE(LENGTH),CHR(7));
  324.                   END
  325.                ELSE
  326.                   EXIT := TRUE;
  327.             7,8:{BACKSPACE OR CNTRL G}
  328.                BEGIN
  329.                   IF POSITION > 0 THEN
  330.                      BEGIN
  331.                         POSITION := POSITION - 1;
  332.                         GOTOXY((X+POSITION),Y);
  333.                         WRITE(' ');
  334.                         HOLD := INT(HOLD/10.0);
  335.                         POWER := POWER DIV 10;
  336.                      END
  337.                   ELSE
  338.                      WRITE(CHR(7));
  339.                END;
  340.             48..57:{NUMBERS}
  341.                IF POSITION < LENGTH THEN
  342.                   IF (HOLD*10+(ORD(INCHAR)-48)) <=32767.0 THEN
  343.                      BEGIN
  344.                         HOLD := HOLD*10+(ORD(INCHAR)-48);
  345.                         WRITE(INCHAR);
  346.                         POSITION := POSITION + 1;
  347.                         POWER := POWER * 10;
  348.                      END
  349.                   ELSE
  350.                      WRITE(CHR(7));
  351.             ELSE
  352.                WRITE(CHR(7));
  353.          END;
  354.       END;
  355.    READINT := TRUNC(HOLD);
  356.    HOLD2 := TRUNC(HOLD);
  357.    GOTOXY(X,Y);
  358.    WRITE(HOLD2:LENGTH);
  359.    TEXTCOLOR(LIGHTGRAY);
  360.    TEXTBACKGROUND(BLACK);
  361. END;
  362.  
  363.  
  364. {***************************************************************************}
  365.  
  366.  
  367. FUNCTION READSTRING(X,Y,MAXLENGTH:INTEGER):XXXSTR80;
  368.  
  369. {   READS A STRING OF MAXLENGTH 80 FROM THE TERMINAL  }
  370.  
  371. VAR
  372.    HOLD : XXXSTR80;
  373.    EXIT : BOOLEAN;
  374.    INCHAR : CHAR;
  375.    COUNT : INTEGER;
  376.  
  377. BEGIN
  378.    COUNT := 0;
  379.    EXIT := FALSE;
  380.    GOTOXY(X,Y);
  381.    TEXTCOLOR(BLACK);
  382.    TEXTBACKGROUND(LIGHTGRAY);
  383.    WRITE(XXXSPACE(MAXLENGTH));
  384.    GOTOXY(X,Y);
  385.    HOLD := '';
  386.    WHILE NOT EXIT DO
  387.       BEGIN
  388.          READ(KBD,INCHAR);
  389.          CASE ORD(INCHAR) OF
  390.             13,10,11,12:
  391.                BEGIN
  392.                   EXIT := TRUE;
  393.                END;
  394.             32..125:
  395.                BEGIN
  396.                   IF COUNT < MAXLENGTH THEN
  397.                      BEGIN
  398.                         HOLD := HOLD + INCHAR;
  399.                         WRITE(INCHAR);
  400.                         COUNT := COUNT + 1;
  401.                      END
  402.                   ELSE
  403.                      WRITE(CHR(7));
  404.                END;
  405.             8,7:
  406.                IF COUNT > 0 THEN
  407.                   BEGIN
  408.                      DELETE(HOLD,COUNT,1);
  409.                      COUNT := COUNT - 1;
  410.                      GOTOXY((X+COUNT),Y);
  411.                      WRITE(' ');
  412.                      GOTOXY((X+COUNT),Y);
  413.                   END
  414.                ELSE
  415.                   WRITE(CHR(7));
  416.             27:
  417.                BEGIN
  418.                   HOLD := '';
  419.                   COUNT := 0;
  420.                   GOTOXY(X,Y);
  421.                   WRITE(XXXSPACE(MAXLENGTH));
  422.                   GOTOXY(X,Y);
  423.                END;
  424.             ELSE
  425.                BEGIN
  426.                   WRITE(CHR(7));
  427.                   GOTOXY(X,Y);
  428.                   WRITE(XXXSPACE(MAXLENGTH));
  429.                   GOTOXY(X,Y);
  430.                   WRITE(HOLD);
  431.                   GOTOXY((X+COUNT),Y);
  432.                END;
  433.          END;
  434.       END;
  435.    READSTRING :=HOLD;
  436.    TEXTCOLOR(LIGHTGRAY);
  437.    TEXTBACKGROUND(BLACK);
  438. END;
  439.  
  440.  
  441. {***************************************************************************}
  442.  
  443.  
  444. FUNCTION READDATE(X,Y:INTEGER):XXXSTR8;
  445.  
  446. {  READS A STRING FROM THE TERMINAL FROM SCREEN AT POSITION XY  }
  447. {    THE STRING WILL CONTAIN A VALID DATE IN FORMAT 00/00/00  }
  448.  
  449. VAR
  450.    HOLD : ARRAY [1..6] OF CHAR;
  451.    LOCATION : INTEGER;
  452.    INCHAR : CHAR;
  453.  
  454. BEGIN
  455.    LOCATION := 1;
  456.    TEXTCOLOR(BLACK);
  457.    TEXTBACKGROUND(LIGHTGRAY);
  458.    GOTOXY(X,Y);
  459.    WRITE('  /  /  ');
  460.    GOTOXY(X,Y);
  461.    WHILE LOCATION<8 DO
  462.       BEGIN
  463.          READ(KBD,INCHAR);
  464.          CASE LOCATION OF
  465.             1:
  466.                BEGIN
  467.                   GOTOXY(X,Y);
  468.                   IF INCHAR IN ['1','0',' '] THEN
  469.                      BEGIN
  470.                         HOLD[1] := INCHAR;
  471.                         WRITE(INCHAR);
  472.                         LOCATION := 2;
  473.                         GOTOXY((X+1),Y);
  474.                      END
  475.                   ELSE
  476.                      BEGIN
  477.                         WRITE(CHR(7));
  478.                      END;
  479.                END;
  480.             2:
  481.                BEGIN
  482.                   GOTOXY((X+1),Y);
  483.                   IF INCHAR IN ['1'..'9','0'] THEN
  484.                      IF HOLD[1]='1' THEN
  485.                         IF INCHAR IN ['1','2','0'] THEN
  486.                            BEGIN
  487.                               HOLD[2] := INCHAR;
  488.                               WRITE(INCHAR);
  489.                               LOCATION := 3;
  490.                            END
  491.                         ELSE
  492.                            BEGIN
  493.                               WRITE(CHR(7));
  494.                            END
  495.                      ELSE
  496.                         BEGIN
  497.                            WRITE(INCHAR);
  498.                            HOLD[2] := INCHAR;
  499.                            LOCATION := 3;
  500.                         END
  501.                   ELSE
  502.                      IF ((INCHAR = CHR(8)) OR (INCHAR = CHR(7))) THEN
  503.                         BEGIN
  504.                            GOTOXY(X,Y);
  505.                            WRITE(' ');
  506.                            LOCATION := 1;
  507.                            HOLD[1] := ' ';
  508.                            GOTOXY(X,Y);
  509.                         END
  510.                      ELSE
  511.                         BEGIN
  512.                            WRITE(CHR(7));
  513.                         END;
  514.                END;
  515.             3:
  516.                BEGIN
  517.                   GOTOXY((X+3),Y);
  518.                   IF INCHAR IN ['1'..'3','0',' '] THEN
  519.                      BEGIN
  520.                         HOLD[3] := INCHAR;
  521.                         WRITE(INCHAR);
  522.                         LOCATION := 4;
  523.                         GOTOXY((X+4),Y);
  524.                      END
  525.                   ELSE
  526.                      IF ((INCHAR = CHR(8)) OR (INCHAR = CHR(7))) THEN
  527.                         BEGIN
  528.                            GOTOXY((X+1),Y);
  529.                            WRITE(' ');
  530.                            LOCATION := 2;
  531.                            HOLD[2] := ' ';
  532.                            GOTOXY((X+1),Y);
  533.                         END
  534.                      ELSE
  535.                         BEGIN
  536.                            WRITE(CHR(7));
  537.                         END;
  538.                END;
  539.             4:
  540.                BEGIN
  541.                   GOTOXY((X+4),Y);
  542.                   IF INCHAR IN ['1'..'9','0'] THEN
  543.                      BEGIN
  544.                         HOLD[4] := INCHAR;
  545.                         WRITE(INCHAR);
  546.                         LOCATION := 5;
  547.                         GOTOXY((X+6),Y);
  548.                      END
  549.                   ELSE
  550.                      IF ((INCHAR = CHR(8)) OR (INCHAR = CHR(7))) THEN
  551.                         BEGIN
  552.                            GOTOXY((X+3),Y);
  553.                            WRITE(' ');
  554.                            LOCATION := 3;
  555.                            HOLD[3] := ' ';
  556.                            GOTOXY((X+3),Y);
  557.                         END
  558.                      ELSE
  559.                         BEGIN
  560.                            WRITE(CHR(7));
  561.                         END;
  562.                END;
  563.             5:
  564.                BEGIN
  565.                   GOTOXY((X+6),Y);
  566.                   IF INCHAR IN ['1'..'9','0'] THEN
  567.                      BEGIN
  568.                         HOLD[5] := INCHAR;
  569.                         WRITE(INCHAR);
  570.                         LOCATION := 6;
  571.                         GOTOXY((X+7),Y);
  572.                      END
  573.                   ELSE
  574.                      IF ((INCHAR = CHR(8)) OR (INCHAR = CHR(7))) THEN
  575.                         BEGIN
  576.                            GOTOXY((X+4),Y);
  577.                            WRITE(' ');
  578.                            LOCATION := 4;
  579.                            HOLD[4] := ' ';
  580.                            GOTOXY((X+4),Y);
  581.                         END
  582.                      ELSE
  583.                         BEGIN
  584.                            WRITE(CHR(7));
  585.                         END;
  586.                END;
  587.             6:
  588.                BEGIN
  589.                   GOTOXY((X+7),Y);
  590.                   IF INCHAR IN ['1'..'9','0'] THEN
  591.                      BEGIN
  592.                         HOLD[6] := INCHAR;
  593.                         WRITE(INCHAR);
  594.                         LOCATION := 7;
  595.                      END
  596.                   ELSE
  597.                      IF ((INCHAR = CHR(8)) OR (INCHAR = CHR(7))) THEN
  598.                         BEGIN
  599.                            GOTOXY((X+6),Y);
  600.                            WRITE(' ');
  601.                            LOCATION := 5;
  602.                            HOLD[5] := ' ';
  603.                            GOTOXY((X+6),Y);
  604.                         END
  605.                      ELSE
  606.                         BEGIN
  607.                            WRITE(CHR(7));
  608.                         END;
  609.                END;
  610.             7:
  611.                BEGIN
  612.                   IF ((INCHAR=CHR(11)) OR (INCHAR=CHR(13))) THEN
  613.                      LOCATION := 8
  614.                   ELSE
  615.                      IF ((INCHAR=CHR(8)) OR (INCHAR=CHR(7))) THEN
  616.                         BEGIN
  617.                            GOTOXY((X+7),Y);
  618.                            WRITE(' ');
  619.                            LOCATION := 6;
  620.                            HOLD[6] := ' ';
  621.                            GOTOXY((X+7),Y);
  622.                         END;
  623.                END;
  624.          END;
  625.       END;
  626.    READDATE := HOLD[1]+HOLD[2]+'/'+HOLD[3]+HOLD[4]+'/'+HOLD[5]+HOLD[6];
  627.    TEXTCOLOR(LIGHTGRAY);
  628.    TEXTBACKGROUND(BLACK);
  629. END;
  630.  
  631. {.R+}
  632. {.L+}
  633.