ASMB,R,L,C HED BLK$, INITIALIZE STRING SUBROUTINE NAM BLK$,7 92101-16026 REV.1813 780105 ENT BLK$ EXT .ENTR,EXEC * *********************************************** * * * SOURCE: 92101-18026 * * RELOC.: 92101-16026 * * * *********************************************** * * * THIS SUBROUTINE INITIALIZES A STRING * * TO A SPECIFIED NUMBER OF ASCII BLANKS. * * THE FORMAT OF THE CALL IS AS FOLLOWS: * * * * XXXX CALL BLK$(N,A$) * * * * WHERE: N=POSITIVE NUMBER OF BLANKS IN * * RANGE OF 1 TO 255.N MUST BE * * <= THE DIMENSION OF STRING. * * A$=ANY VALID STRING NAME * * * *********************************************** CPAR BSS 2 PARAMETER STORAGE:WORD 1 IS # OF BLANKS * WORD 2 IS STRING ADDRESS BLK$ NOP JSB .ENTR RETRIEVE PARAMETERS DEF CPAR * * * CHECK THE FIRST PARAMETER TO MAKE SURE THAT IT IS VALID * * LDA CPAR,I LOAD FIRST PARM(# OF BLANKS) SZA,RSS # OF BLANKS=0? JMP ERROR YES,INVALID VALUE,EXIT WITH ERROR SSA NO,BUT IS # OF BLANKS NEGATIVE? JMP ERROR YES,INVALID VALUE,EXIT WITH ERROR ADA M256 ADD -256 TO # OF BLANKS SSA,RSS IS RESULT POSITIVE? JMP ERROR YES,INVALID VALUE,EXIT WITH ERROR * * LDA CPAR,I LOAD # OF BLANKS STA CPAR+1,I STORE IN FIRST WORD OF STRING * * CLB STB CFLG SET ODD # OF CHARACTERS FLAG=0 * * SLA,RSS IS # OF BLANKS ODD? JMP *+4 NO ADA M1 YES,SUBTRACT ONE FROM COUNT INB SET ODD # OF CHARACTERS FLAG=1 STB CFLG AND SAVE STA COUNT SAVE CHARACTER COUNT * * LDB CPAR+1 LOAD ADDRESS OF FIRST WORD OF STRING INB INCREMENT TO SECOND WORD * * SZA,RSS COUNT=0? JMP BLK$2 YES,SEE IF SINGLE BLANK REQUIRED * * * (B) REGISTER=WORKING ADDRESS * * BLK$1 LDA DBLNK LOAD DOUBLE ASCII BLANK STA 1,I STORE IN CURRENT STRING WORD * * INB INCREMENT WORKING ADDRESS BY 1 * * LDA COUNT LOAD WORD COUNT ADA M2 DECREMENT BY TWO STA COUNT AND SAVE * * SZA COUNT=0? JMP BLK$1 NO,GO STORE ANOTHER DOUBLE BLANK * * * (B) REGISTER=WORKING ADDRESS * * BLK$2 LDA CFLG YES,LOAD ODD # OF CHARACTERS FLAG SZA,RSS FLAG=0? JMP EXIT YES,EXIT * * LDA SBLNK ODD # OF CHARACTERS,LOAD SINGLE BLANK STA 1,I AND STORE IN CURRENT STRING WORD JMP EXIT EXIT * * ERROR JSB EXEC DEF *+5 DEF .2 OUTPUT ERROR MESSAGE DEF .1 FOR INVALID FIRST PARM DEF IBUFR DEF IBUFL * * EXIT JMP BLK$,I EXIT * * * * CONSTANTS * CPAR1 BSS 1 CPAR2 BSS 1 M256 DEC -256 CFLG BSS 1 M1 DEC -1 COUNT BSS 1 DBLNK OCT 20040 M2 DEC -2 SBLNK OCT 20000 .1 DEC 1 .2 DEC 2 IBUFR ASC 14,ILLEGAL FIRST PARAMETER-BLK$ IBUFL DEC 14 END