ASMB
      HED NUMD/ISNUM (21MX ONLY)  F. GAULLIER  07/SEP/77
      NAM NUMD,7 . 92080-1X045 REV.2026  800515 
* 
*     SOURCE 92080-18045
* 
      SPC 2 
**************************************************************
* (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1978.  ALL RIGHTS    *
* RESERVED.  NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, RE- *
* PRODUCED, OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITH-  *
* OUT THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY.  *
**************************************************************
      SPC 2 
      EXT .ENTR 
      ENT NUMD,ISNUM
      SUP 
* 
*     "NUMD" CONVERTS A NUMERIC STRING IN BINARY (INTEGER ONLY) 
*     IF THE STRING IS NOT NUMERIC , -1 IS RETURNED 
*     IF AN OVERFLOW (32767) IS DETECTED, 
*                      THEN   "-1" IS RETURNED
* 
*     "ISNUM" IS A LOGICAL FUNCTION WHICH IS ABLE TO TEST 
*      IF A STRING IS NUMERIC.
*                  .FALSE. / 0 (E=0)   :  NUMERIC 
*                  .TRUE.      (E=1)   :  NOT NUMERIC 
* 
BLAN  OCT 40
MASK  OCT 377 
DM10  DEC -10 
OM12  EQU DM10
TEMP  NOP 
MEM   NOP 
SPFL  NOP 
OM60  OCT -60 
D10   DEC 10
DM1   DEC -1
   SPC 2
NUMD  NOP 
      LDA NUMD
      CCB 
SP.   STA SP
      STB SPFL
      JMP SP+1
* 
ISNUM NOP 
      LDA ISNUM 
      CLB,INB 
      JMP SP. 
   SPC 1
.BUFF NOP           ADRESSE BUFFER
.N1   NOP           NUMERO 1ER CARACTERE
.NC   NOP           NOMBRE DE CARACTERES
SP    NOP 
      JSB .ENTR 
      DEF .BUFF 
* 
      LDA .NC,I 
      CMA,INA 
      CCE,SSA,RSS 
      JMP SP,I      OK !  ---> .FALSE.  E=1 
      STA .NC 
      CLA 
      STA TEMP
      LDB .BUFF 
      CLE,ELB 
      ADB DM1 
      ADB .N1,I 
* 
LOOP1 LBT 
      CPA BLAN
      RSS 
      JMP TEST2 
      ISZ .NC 
      JMP LOOP1 
      CLA,CCE       OK !  ---> .FALSE. / 0  E=1 
      JMP SP,I
* 
LOOP2 LDB .N1 
      LBT 
TEST2 STA MEM 
      STB .N1 
      ADA OM60
      SSA 
      JMP TE3 
      LDB OM12
      ADB 0 
      SSB           NUMERIQUE ? 
      JMP TE4      OUI
TE3   LDA MEM 
      JMP TEST3    NON , TEST SI BLANC
TE4   STA MEM 
      LDA TEMP
      MPY D10 
      SSA           OVERFLOW ?
      JSB ER.       YES 
      CCE,SZB       OVERFLOW ?
      JSB ER. 
      ADA MEM 
      SOC           MPY HAS CLEARED THE O 
      JSB ER. 
      STA TEMP     NON , OK 
      ISZ .NC 
      JMP LOOP2 
      JMP SP,I      OK !  ---> .FALSE.  E=1 
* 
TEST3 LDB .N1 
      RSS 
LOOP3 LBT 
      CPA BLAN
      CCE,RSS 
      JMP ERR      NI NUMERIQUE NI BLANC, ERREUR !
      ISZ .NC 
      JMP LOOP3 
      LDA TEMP
      JMP SP,I      OK! --->  .FALSE.   E=1 
   SPC 1
ER.   NOP 
      LDA SPFL
      SSA,RSS       IS NUMD ROUTINE ? 
      JMP ER.,I     NO, CONTINUE. 
      LDB .N1 
ERR   ADB DM1       B=BYTE POINTER TO FIRST BAD CHAR. 
      CCA,CLE       ERROR !  ---> .TRUE.  E=0 
      JMP SP,I
      END 
                                                                                                  