ASMB
      HED S/P NXPAR   12/5/79  M. NAKAMURA
      NAM NXPAR,7 . 92080-1X592 REV.2026  791101
* 
*     SOURCE 92080-18592
* 
      SPC 2 
**************************************************************
* (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.  *
**************************************************************
      SPC 2 
      EXT .ENTR,ISCAN,MOVCA,PUTCA 
      ENT NXPAR,NXINI 
* 
*  THIS ROUTINE "PICKS OFF" A PARAMETER FROM A STRING EACH TIME THAT
*  IT IS CALLED.  THE USER SPECIFIES WHICH DELIMITERS ARE TO BE USED. 
* 
*  USAGE: 
* 
*      ENTRY POINT NXINI MUST BE CALLED TO SPECIFY THE STRING TO BE 
*  OPERATED ON.  AFTER A CALL TO NXINI, CALLS TO NXPAR RETURN THE 
*  STRING PARAMETERS IN SEQUETIAL ORDER.  I.E. THE FIRST CALL TO NXPAR
*  RETURNS THE FIRST PARAMETER, THE SECOND CALL RETURNS THE SECOND
*  PARAMETER, ETC.
* 
*  CALLING SEQUENCE:
* 
*  CALL NXINI(ISTRN,IBYTE,MXCHR)
* 
*      ISTRN - STRING TO BE OPERATED ON 
*      IBYTE - STARTING BYTE (BYTE 1 IS LEFTMOST BYTE)
*      MXCHR - STRING LENGTH IN CHARACTERS
* 
*  I = NXPAR (IPARM,ICHAR,ITERM)
* 
*      IPARM - PARAMETER FOLLOWED BY BLANK (RETURNED BY NXPAR)
*      ICHAR - NO. OF CHARACTERS IN IPARM (INCLUDES TRAILING BLANK) 
*      ITERM - TERMINATION/TEST CHARACTER:
*              LEFT BYTE - TERMINATION CHARACTER
*              RIGHT BYTE - TEST CHARACTER
* 
*      I (OR THE A REG FOR ASSEMBLY LANG) IS SET TO:
* 
*            0 - IF TEST CHARACTER WAS ENCOUNTERED
*            1 - IF TERMINATOR CHARACTER OR MAX STRING LENGTH WAS 
*                ENCOUNTERED
*           -1 - IF AN ERROR OCURRED (NXINI WAS NOT CALLED FIRST) 
* 
ISTRN NOP          STRING BUFFER ADDR 
IBYTE NOP          STARTING BYTE ADDR 
MXCHR NOP          STRING LENGTH ADDR 
* 
* ENTRY POINT NXINI:
* 
NXINI NOP 
      JSB .ENTR 
      DEF ISTRN 
* 
      LDA IBYTE,I     GET FIRST BYTE
      STA FBYTE       SAVE IT 
* 
      CLA,INA         SET FLAG TO INDICATE THAT NXINI WAS CALLED
      STA FIRST 
* 
      JMP NXINI,I     RETURN
* 
**********************************************************************
* 
* ENTRY POINT NXPAR:
* 
IPARM NOP             PARAMETER RETURNED TO THIS ADDR 
ICHAR NOP             NO. OF CHAR (INCLUDING TRAILING BLANK) RETURNED 
ITERM NOP             TERMINATOR/TEST CHARACTER 
* 
NXPAR NOP 
      JSB .ENTR 
      DEF IPARM 
* 
      LDA FIRST      GET NXINI FLAG 
      SZA            NXINI CALLED PREVIOUSLY? 
      JMP NXPA1      YES, PROCESS 
      CCA            NO, RETURN WITH ERROR FLAG 
      JMP NXPAR,I    RETURN 
* 
NXPA1 LDA FBYTE      GET STARTING BYTE
      STA ICHAR,I    INITIALIZE CHARACTER COUNT 
* 
      JSB ISCAN      SCAN FOR DELIMITER INDICATING "END OF PARAMETER" 
      DEF *+5 
      DEF ISTRN,I 
      DEF ICHAR,I 
      DEF ITERM,I 
      DEF D0
* 
      STA ASAV       SAVE TEST TERMINATOR FLAG
* 
      JSB MOVCA      MOVE PARAMETER TO USER BUFFER
      DEF *+6 
      DEF ISTRN,I 
      DEF FBYTE 
      DEF IPARM,I 
      DEF D1
      DEF ICHAR,I 
* 
      LDA ICHAR,I    GET PARAMETER LENGTH 
      ADA FBYTE      CALCULATE FIRST BYTE OF NEXT PARAMETER 
      STA FBYTE 
* 
      CMA,INA        NEGATE NEW FIRST BYTE
      ADA MXCHR,I    LAST BYTE ENCOUNTERED? 
      SSA 
      STA ASAV          YES, SET LAST BYTE, TERMINATOR FLAG 
* 
      JSB PUTCA      PUT BLANK IN LAST BYTE OF PARAMETER
      DEF *+4 
      DEF IPARM,I 
      DEF BLANK 
      DEF ICHAR,I 
* 
      LDA ASAV       GET TERMINATOR/TEST FLAG 
      SZA,RSS        TERMINATOR ENCOUNTERED?
      JMP NXPAR,I       NO, RETURN
      CLA               YES, CLEAR NXINI FLAG 
      STA FIRST 
      INA 
      JMP NXPAR,I 
* 
**********************************************************************
* 
ASAV  BSS 1 
FIRST OCT 0 
FBYTE BSS 1 
BLANK ASC 1,
D1    DEC 1 
D0    DEC 0 
      END 
                                                                                                                                                                                                                              