ASMB
      NAM CATI,7 92069-16172 REV.1912 770601
* 
* 
**************************************************************
* (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979.  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.  *
**************************************************************
* 
* 
*     SOURCE:    92069-18172
*     RELOC:     92063-16172
* 
* 
************************************************************* 
* 
      SPC 1 
*     CALL CATI(IFLD,IBYT,ILTH,INT,ISTAT) 
* 
*         CONVERT A NUMERIC ASCII FIELD OF LENGTH 
*         "ILTH" BEGINNING AT "IBYT" OF "IFLD"
*         TO AN INTEGER "INT" 
* 
*         CONVERSION IS TERMINATED BY A NON-NUMERIC 
*         CHARACTER OR EXHAUSTION OF "ILTH" 
* 
*         NUM-CHAR = BLANK,+,-,NUMBER                  .
* 
*         "ISTAT"  0 => NORMAL
*                 -1 => OVERFLOW OR NON-ASCII 
      SPC 1 
      EXT .ENTR 
      ENT CATI
      SPC 1 
A     EQU 0 
B     EQU 1 
      SPC 1 
IFLD  BSS 1             BUFFER ADDRESS (WORD) 
IBYTE BSS 1             REL. NUM. FIELD ADDRESS (BYTE)
ILTH  BSS 1             CHARACTER IN IFLD 
INT   BSS 1             BINARY INTEGER RETURNED 
ISTAT BSS 1             STATUS
CATI  NOP               ENTER AND GET 
      JSB .ENTR           ARGUMENT
      DEF IFLD            ADDRESSES 
      SPC 1 
      LDA IBYTE,I 
      STA IEND
      ADA ILTH,I
      STA ILTH
      SPC 1 
      CLO 
      CLA 
      STA INT,I         ALL BLANK FIELD => 0
      STA SIGN
      STA SAVE
      JSB GETC          GET A CHARACTER 
      CPA =B53          + SIGN? 
      JMP C1              YES 
      CPA =B55          - SIGN? 
      CCB,RSS             YES 
      JMP C5              NO
      STB SIGN
      SPC 1 
C1    JSB GETC          GET A NUMBER
C5    JSB CHECK         CHECK IT
      STA INT,I 
      LDA SAVE
      ADA A 
      STA B 
      ADA A 
      ADA A 
      ADA B 
      ADA INT,I 
      STA SAVE
      JMP C1
      SPC 1 
SAVE  BSS 1 
SIGN  BSS 1 
IEND  BSS 1 
      SPC 1 
DONE  CLA               SET 
      SOC                 STATUS
ERR   CCA 
      STA ISTAT,I 
      LDA SAVE
      LDB SIGN          INSERT THE
      SZB                 SIGN
      CMA,INA 
      STA INT,I 
      JMP CATI,I        EXIT
      SPC 1 
GETC  NOP 
GETC1 LDB IEND
      CPB ILTH          IF DONE 
      JMP DONE            THEN EXIT 
      ADB M1            GET AND 
      CLE,ERB             ISOLATE THE 
      ADB IFLD            BYTE POINTED
      LDA B,I             AT BY IBYT
      SEZ,RSS 
      ALF,ALF 
      AND B377
      ISZ IEND
      CPA =B40
      JMP GETC1 
      JMP GETC,I
      SPC 1 
CHECK NOP 
      ADA =B177720      CHECK FOR 
      SSA                 ASCII NUMBER
      JMP ERR             ( >57B, 
      ADA M10               <72B) 
      SSA,RSS 
      JMP ERR 
      ADA .10 
      JMP CHECK,I 
* 
M1    DEC -1
.10   DEC 10
M10   DEC -10 
B377  OCT 377 
      END 
                                                                                                                                                                                