ASMB HED NUMD/ISNUM (21MX ONLY) F. GAULLIER 07/SEP/77 NAM NUMD,7 . 92903-16001 REV.1805 770907 * * SOURCE 92903-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