ASMB
      HED S/P JUSTF   (21MX ONLY)  F. GAULLIER 22/JUL/77
      NAM JUSTF,7 . 92080-1X034 REV.2026  800515
* 
*     SOURCE 92080-18034
* 
      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 
      ENT JUSTF 
      EXT .ENTR 
      SUP 
* 
* THIS SUBROUTINE MAKES A STRING RIGHT OR LEFT-JUSTIFIED
* 
*     CALLING SEQUENCE: 
* 
*        CALL JUSTF(IBUF,IBYT,NBYTE,ICNW) 
* 
*            IBUF  - BUFFER CONTAINING THE STRING TO BE JUSTIFIED 
*            IBYT  - STARTING BYTE NUMBER (1ST IS 1)
*            NBYTE - NUMBER OF BYTES TO BE SCANNED
*            ICNW  - LEFT OR RIGHT JUSTIFY
*                     =  0  ---> RIGHT JUSTIFY
*                    NOT 0  ---> LEFT JUSTIFY 
* 
.IBUF NOP 
.IBEG NOP 
.ILEN NOP 
.FLAG NOP 
* 
JUSTF NOP 
      JSB .ENTR 
      DEF .IBUF 
      LDA .ILEN,I 
      CMA,INA 
      STA COUNT      /SAVE LENGTH OF STRING 
      LDB .IBUF 
      CLE,ELB 
      ADB .IBEG,I 
      ADB DM1 
      STB .IBUF      /SAVE STARTING POSITION
      LDA 1 
      ADA DM1 
      ADA .ILEN,I 
      STA LAST       /SAVE END POSITION 
* 
LOOP1 EQU * 
      LBT 
      CPA BLANC 
      RSS 
      JMP SUIT
      ISZ COUNT 
      JMP LOOP1 
      JMP JUSTF,I    /ONLY BLANKS.. EXIT
* 
SUIT  EQU * 
      ADB DM1 
      STB P1         /SAVE STARTING BYTE OF STRING
      LDB LAST
* 
LOOP2 EQU * 
      LBT 
      CPA BLANC 
      RSS 
      JMP FIN        /LAST SIGNIFICANT CHAR IS FOUND
      ADB DM2 
      ISZ COUNT 
      JMP LOOP2 
      JMP JUSTF,I 
* 
FIN   EQU * 
      STB P2       /SAVE LAST SIGNIFICANT CHAR. + 1 
* 
      LDA .FLAG,I 
      SZA,RSS 
      JMP RIGHT    /MUST BE RIGHT JUSTIFIED 
* 
      LDB .IBUF 
      CPB P1        SOMETHING TO DO ? 
      JMP JUSTF,I   NO, RETURN
      LDA COUNT 
      CMA,INA 
      STA COUNT 
      LDA P1
      MBT COUNT    /LEFT-JUSTIFIED
      LDA BLANC 
LOOP3 CPB P2
      JMP JUSTF,I   /DONE 
      SBT           /FILL WITH BLANKS 
      JMP LOOP3 
* 
* 
* 
RIGHT ADB DM1 
      CPB LAST      SOMETHING TO DO ? 
      JMP JUSTF,I   NO, RETURN
      RSS           YES, SWAP CHARACTERS
RIGH1 LDB P2
      LBT 
      STA CHAR     /SAVE CHARACTER
      ADB DM2 
      STB P2
      INB 
      LDA BLANC 
      SBT          /REPLACE WITH BLANK
      LDA CHAR
      LDB LAST
      SBT 
      ADB DM2 
      STB LAST
      ISZ COUNT 
      JMP RIGH1 
      JMP JUSTF,I 
* 
* RESERVATIONS
* 
DM1   DEC -1
DM2   DEC -2
COUNT NOP 
CHAR  NOP 
BLANC OCT 40
LAST  NOP 
P1    NOP 
P2    NOP 
      END 
                                                                                                                            