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