ASMB,R,Q,C  
      HED * OCTIO RTE-B OCTAL I-O HANDLING    92101-16011 REV. 2040 
      NAM ISETC,7 92101-16011 REV.2040 800429 
******************************************************
* 
**************************************************************
* (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1975.  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:          92101-18011
* 
*     RELOC:           92101-16011
* 
*     USED IN BASIC/L 92076-12001 AND IN BASIC/D
*     92101-12003 
* 
****************************************************
* 
* ENTRY POINTS: 
      ENT ISETC 
* 
****************************************************
* 
* EXTERNAL REFERENCES:
      EXT EXEC,ERROR,.ENTR
* 
****************************************************
      SKP 
***** 
* 
** ISETC ** CONVERT STRING OF OCTAL DIGITS TO INTEGER 
* 
* CALLING SEQUENCE: 
* 
*     JSB ISETC 
*      DEF ASCII STRING OF OCTAL DIGITS 
*     RETURN (INTEGER IN .A.) 
* 
* NOTE: IF ERROR IN STRING WILL NOT RETURN
*       BUT WILL CALL EXEC TO TERMINATE 
* 
***** 
* 
OCTST NOP           POINTER TO ASCII STRING 
ISETC NOP 
      JSB .ENTR     FETCH 
       DEF OCTST     PARAMETERS 
      CLA 
      STA VALUE     CLEAR VARIABLE FOR VALUE
      LDB OCTST     PUT ADDRESS OF STRING IN .B.
      LDA 1,I 
      AND B377     (UPPER HALF HAS OP CODE FER "'") 
      CMA,INA       PUT MINUS NUMBER OF CHARS 
      STA CNTR       INTO COUNTER VARIABLE
      ADA .6
      SSA 
      JMP ISETE     ERROR IF STRING LONGER THAN 6 CH
ISET1 INB           ADVANCE TO NEXT WORD
      LDA 1,I        EXTRACT AND POSITION 
      ALF,ALF         FIRST CHAR OF THAT WORD 
      JSB INSRT     BUILD THAT PART OF OCTAL NBR
      LDA 1,I 
      JSB INSRT     DO ALSO FOR SECOND CHAR 
      JMP ISET1     THEN DO NEXT WORD 
* 
** INSERT NEXT DIGIT IN OCTAL NUMBER
* 
INSRT NOP 
      AND B377      EXTRACT LOWER HALF OF WORD
      ADA MB70
      SSA,RSS       IS CHAR CODE 70 OR GREATER? 
      JMP ISETE     YES, ERROR
      ADA .8        NO CONVERT TO VALUE OF DIGIT
      SSA 
      JMP ISETE     IF VALUE LESS THAN ZERO, ERROR
      ADA VALUE     ADD TO VALUE THUS FAR 
      ISZ CNTR      BUMP COUNTER, ALL DONE? 
      RSS 
      JMP ISETC,I   YES, RETURN 
*************************CHANGED 800429*********************************
      CLE,ELA       NO,MULTIPLY BY 8 CHECKING 
      SEZ           FOR OVERFLOW ERROR
      JMP ISETE 
      CLE,ELA 
      SEZ 
      JMP ISETE 
      CLE,ELA 
      SEZ 
      JMP ISETE 
**********************************800429********************************
      STA VALUE         UPDATE VALUE, 
      JMP INSRT,I           THEN RETURN FOR NEXT CHAR 
* 
** ERROR IN INPUT STRING
* 
ISETE JSB ERROR 
      DEF *+3 
      DEF .26 
      DEF .0
      JSB EXEC      ABNORMAL TERMINATION
      DEF *+4 
      DEF .6
      DEF .0
      DEF .3
      SKP 
***** 
* 
* 
** STORAGE ** 
* 
VALUE BSS 2 
CNTR  BSS 1 
MB70  DEC -56 
.0    DEC 0 
.3    DEC 3 
.6    DEC 6 
.8    DEC 8 
.26   DEC 26
B377  OCT 377 
      END 
                                                                                                                                                                                                                                        