*COMDECK PBFMAD 
_$J+  PAGE EJECT? 
_ 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*                         P B F M A D                                 * 
*                                                                     * 
*             CONVERT UP TO 5 ASCII DECIMAL DIGITS TO INTEGER         * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
? 
_$I-,R-,G-  NON RECURSIVE, INTERRUPTABLE ?
_ 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
** OVERVIEW - CONVERTS UP TO 5 ASCII DECIMAL DIGITS TO AN INTEGER,    * 
*             THE DIGITS ARE PICKED UP FROM A BUFFER STRUCTURE.       * 
*                                                                     * 
** INPUT    - BUFFER POINTER, CHARACTER START POSITION IN BUFFER,     * 
*             LCD IS USED AS TERMINATOR.                              * 
*                                                                     * 
** OUTPUTS  - INTEGER RESULT OF CONVERSION, BOOLEAN TRUE IF CORRECT   * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
? 
FUNCTION PBFMAD (VAR R1PARAM : INTEGER; R1BUF : B0BUFPTR; 
                 R1START : INTEGER) : BOOLEAN;
  
VAR 
  R1X    : INTEGER; 
  R1CHAR : INTEGER; 
  R1PARM : INTEGER; 
  
BEGIN 
PBFMAD := FALSE;                            _PRESET FOR BAD RESULT     ?
R1PARM := 0;
R1X    := R1BUF'.BFLCD;                     _GET LCD                   ?
IF R1X - R1START < 5
THEN
  BEGIN 
  WHILE R1START @ R1X DO                    _MORE CHARACTERS TO GO     ?
    BEGIN 
    R1CHAR  := ORD (R1BUF'.BFDATAC          _GET (NEXT) CHARACTER      ?
                    [R1START]) - $30;       _CONVERTED TO INTEGER      ?
    IF R1CHAR < 0 THEN GOTO 99; 
    IF R1CHAR > 10 THEN GOTO 99;            _BAD CHARACTER             ?
    R1PARM  := R1PARM * 10 + R1CHAR;        _ADD TO INTEGER            ?
    R1START := R1START + 1; 
    END;
  R1PARAM := R1PARM;                        _RETURN CONVERTED NUMBER   ?
  PBFMAD  := TRUE;                          _CONVERSION CORRECT        ?
  END;
99: 
END; _FUNCTION PBFMAD?
