ASMB HED S/P ISCAN 3/6/77 P. SENANT NAM ISCAN,7 . 92903-16001 REV.1805 770603 * * SOURCE 92903-18026 * 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 ISCAN * * THIS ROUTINE IS ABLE TO SCAN A STRING UNTIL/WHILE A TEST BYTE * OCCURS. * * CALLING SEQUENCE: * * I = ISCAN (IBUF,IBEG,IBYTES,IFLAG) * * IBUF : BUFFER TO BE SCANNED * IBEG : STARTING BYTE OF SCANNING/ LAST POSITION SCANNED * IBYTES : LEFT = TERMINATOR * RIGHT = TEST BYTE * FLAG : 0 = UNTIL * 1 = WHILE * * THE A-REGISTER RETURNS A FLAG : 0 = TEST BYTE IS DETECTED * 1 = TERMINATOR IS DETECTED * BUF NOP IBEG NOP BYTES NOP FLAG NOP * ISCAN NOP JSB .ENTR DEF BUF * LDB BUF COMPUTE CLE,ELB STARTING ADB DM1 BYTE ADDRESS ADB IBEG,I OF STRING STB BUF AND SAVE IT * LDA FLAG,I KIND OF SCAN? SZA JMP WHILE SCAN WHILE * LDA BYTES,I SCAN UNTIL SFB JMP .TES1 TEST BYTE DETECTED .TERM EQU * TERMINATOR DETECTED LDA BUF CMA,INA ADB 0 STB IBEG,I RETURN LAST POSITION CCA I=-1/.TRUE. JMP ISCAN,I * .TES1 EQU * INB .TEST EQU * TEST BYTE FOUND LDA BUF CMA,INA ADB 0 STB IBEG,I RETURN LAST POSITION CLA JMP ISCAN,I I=0/.FALSE. * * WHILE EQU * SCAN WHILE LDA BYTES,I CLB RRL 8 SPLIT TEST & TERM. ALF,ALF STA TEST STB TERM LDB BUF LOOP LBT CPA TERM TERMINATOR ? JMP .TERM YES CPA TEST TEST BYTE ? JMP LOOP YES . CONTINUE JMP .TEST * * DM1 DEC -1 TERM NOP TEST NOP END