ASMB,R,Q,C
      HED BLK$, INITIALIZE STRING SUBROUTINE
      NAM BLK$,7  92076-1X038  REV.2001  800425 
      ENT BLK$
      EXT .ENTR,EXEC,ERRCD
* 
*********************************************** 
*                                             * 
*     SOURCE: 92076-18038                     * 
*     RELOC.: PART OF 92076-12001             * 
*                                             * 
*********************************************** 
*                                             * 
*     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 LDA .300      PUT IN ERROR NUMBER TO PASS TO CALSB
      STA ERRCD 
EXIT  JMP BLK$,I    EXIT
* 
* 
* 
* CONSTANTS 
* 
CPAR1 BSS 1 
CPAR2 BSS 1 
M256  DEC -256
.300  DEC 300 
CFLG  BSS 1 
M1    DEC -1
COUNT BSS 1 
DBLNK OCT 20040 
M2    DEC -2
SBLNK OCT 20000 
.1    DEC 1 
.2    DEC 2 
      END 
                                                                                                                                      