ASMB NAM SZONE,7 24306-60001 REV.2026 791206 * * ******************************************************************* * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS RESERVED. * NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, REPRODUCED, OR * TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR WRITTEN * CONSENT OF HEWLETT-PACKARD COMPANY. ******************************************************************* * * * SOURCE: 24306-18021 * RELOC: 24306-60001 * * * ****************************************************************** * * * * *SZONE FINDS THE ZONE-PUNCH OF A CHARACTER AND SETS *A CODE TO INDICATE WHAT THE NEW ZONE IS. *CALLING SEQUENCE: CALL SZONE(JSTR,JBEG,NEZ,NOZ) *JSTR=STRING INTEGER ARRAY CONTAINING THE CHARACTER *JBEG=POSITION OF THE CHARACTER IN JSTR *NEZ=CODE FOR NEW ZONE *NOZ=CODE INDICATING THE ORIGINAL ZONE OF THE CHARACTER *ZONE CODES FOR NEZ AND NOZ ARE: *ZONE 1 (12-ZONE): A-I *ZONE 2 (11-ZONE): J-R AND - *ZONE 3 (0-ZONE): /S-Z *ZONE 4 (NO-ZONE): 0-9 AND + *MORE THAN 4: SPECIAL CHARACTERS *IF NEZ=2 AND JSTR(JBEG)='0' OR '+' THEN JSTR(JBEG) IS SET TO '-' *IF NEZ=4 AND JSTR(JBEG)='-' OR '+' THEN JSTR(JBEG) IS SET TO '0' * ENT SZONE EXT .ENTR,SGET,SPUT PARAM BSS 4 SZONE NOP JSB .ENTR TRANSFER PARAMETERS DEF PARAM JSB SGET CALL SGET(JSTR,JBEG,NCHAR) DEF *+4 DEF PARAM,I DEF PARAM+1,I DEF NCHAR LDA NCHAR NCHAR A-Z? ADA N101 STA TEST SSA JMP NOALF ASCII CODE<101 ADA N32 SSA,RSS JMP SPEC ASCII CODE>132 LDA TEST NCHAR IS A-Z;TEST=NCHAR-101 CLB DIV NINE INA STA PARAM+3,I NOZ=ZONE CODE OF NCHAR (TEST19) STB TEST TEST=(NCHAR-101)MOD9. CPA THREE NCHAR 0-ZONE? JMP *+2 JMP ONE ISZ TEST IF SO, INCREMENT MOD JMP ONE NOALF LDA NCHAR NCHAR 0-9? ADA NSXTY SSA JMP SPEC ASCII CODE<61 ADA N1 STA TEST ADA N11 SSA,RSS JMP SPEC ASCII CODE>71 LDA FOUR NCHAR IS 0-9,TEST=NCHAR-60 (0-9) STA PARAM+3,I NOZ=ORIGINAL ZONE CODE (4) LDA NCHAR NCHAR='0'? CPA SIXTY JMP ZERO IF SO JMP ONE SPEC LDA FIVE NCHAR IS SPECIAL CHAR STA PARAM+3,I NOZ=ORIGINAL ZOME CODE (5) LDA NCHAR NCHAR='-'? CPA FFIV JMP MIN IF SO CPA FTHRE JMP PLUS CPA FSVN NCHAR='/'? JMP SLASH IF SO JMP SZONE,I IF NOT, RETURN ONE LDA PARAM+2,I NEW ZONE CODE 5? ADA NFIVE SSA,RSS JMP SZONE,I IF SO,NO CHANGE,RETURN LDA PARAM+2,I NEZ=3? CPA THREE JMP *+2 JMP OK LDA TEST IF SO, NCHAR(MOD 9)=0? SZA JMP OK LDA FSVN IF SO, NCHAR='/' STA NCHAR JMP PUT OK LDB ADDR GIVE NCHAR NEW ZONE ADB PARAM+2,I PICK UP BASE FROM ATAB NDXED BY NEZ LDA 1,I ADA TEST ADD NCHAR(MOD 9) STA NCHAR REPLACE NCHAR WITH NEW ZONE PUT JSB SPUT CALL SPUT(JSTR,JBEG,NCHAR) DEF *+4 DEF PARAM,I JSTR DEF PARAM+1,I JBEG DEF NCHAR JMP SZONE,I RETURN ZERO LDA PARAM+2,I CPA TWO NEZ=2? JMP *+2 JMP SZONE,I IF NOT, RETURN LDA FFIV IF SO NCHAR='-' STA NCHAR JMP PUT MIN LDA TWO STA PARAM+3,I NOZ=2 (11-ZONE FOR '-') LDA PARAM+2,I NEZ=4? CPA FOUR JMP *+2 JMP SZONE,I IF NOT, RETURN CZER LDA SIXTY STA NCHAR IF SO NCHAR='0' JMP PUT PLUS LDA FOUR STA PARAM+3,I NOZ=4 (12-ZONE CODE FOR '+') LDA PARAM+2,I NEZ=4? CPA FOUR JMP CZER IF SO JMP ZERO SLASH LDA THREE STA PARAM+3,I NOZ=3 CLA STA TEST /=1ST CHAR,0-ZONE JMP ONE ADDR DEF ATAB ATAB OCT 0 OCT 101 OCT 112 OCT 122 OCT 61 N101 OCT -101 N32 OCT -32 NINE DEC 9 NSXTY OCT -60 N11 OCT -11 FOUR OCT 4 FIVE OCT 5 NFIVE OCT -5 NCHAR OCT 0 TEST OCT 0 TWO OCT 2 FFIV OCT 55 FTHRE OCT 53 N1 OCT -1 FSVN OCT 57 THREE OCT 3 SIXTY OCT 60 END END$