ASMB HED S/P JUSTF (21MX ONLY) F. GAULLIER 22/JUL/77 NAM JUSTF,7 . 92903-16001 REV.1805 770722 * * SOURCE 92903-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