*COMDECK HASPOTXP 
          NAM    HPRUOT 
          NLS 
*CALL MUXMACROS 
          LST 
          EJT 
*CALL REL6CONST 
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*         HASP CARRIAGE CONTROL SRCB-S                                * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
* * * *  PRE-PRINT CARRIAGE CONTROL SRCB-S
* 
          EQU    H9FCSS($A0) -    SUPPRESS SPACE
          EQU    H9FCS1($A1) -    SPACE 1 
          EQU    H9FCS2($A2) -    SPACE 2 
          EQU    H9FCS3($A3) -    SPACE 3 
          EQU    H9FCPE($B1) -    PAGE EJECT
          EQU    H9FCBP($BC) -    SKIP TO BOTTOM OF PAGE
          EQU    H9FCC6($B6) -    CHANNEL 6 
          EQU    H9FCC5($B5) -    CHANNEL 5 
          EQU    H9FCC4($B4) -    CHANNEL 4 
          EQU    H9FCC3($B3) -    CHANNEL 3 
          EQU    H9FCC2($B2) -    CHANNEL 2 
          EQU    H9FC11($BB) -    CHANNEL11 
          EQU    H9FCC7($B7) -    CHANNEL 7 
          EQU    H9FCC8($B8) -    CHANNEL 8 
          EQU    H9FCC9($B9) -    CHANNEL 9 
          EQU    H9FC10($BA) -    CHANNEL 10
* 
* * * *     POST-PRINT CARRIAGE CONTROL SRCBS 
* 
          EQU    H9PPSS($80) -    SUPPRESS SPACE
          EQU    H9PPS1($81) -    SPACE 1 
          EQU    H9PPS2($82) -    SPACE 2 
          EQU    H9PPS3($83) -    SPACE 3 
          EQU    H9PPPE($91) -    PAGE EJECT
          EQU    H9PPBP($9C) -    SKIP TO BOTTOM OF PAGE
          EQU    H9PPC6($96) -    CHANNEL 6 
          EQU    H9PPC5($95) -    CHANNEL 5 
          EQU    H9PPC4($94) -    CHANNEL 4 
          EQU    H9PPC3($93) -    CHANNEL 3 
          EQU    H9PPC2($92) -    CHANNEL 2 
          EQU    H9PP11($9B) -    CHANNEL 11
          EQU    H9PPC7($97) -    CHANNEL 7 
          EQU    H9PPC8($98) -    CHANNEL 8 
          EQU    H9PPC9($99) -    CHANNEL 9 
          EQU    H9PP10($9A) -    CHANNEL 10
* 
* 
* * * *   EBCDIC FORMAT EFFECTOR CHARACTER DEFINITIONS
* 
* 
          EQU    E9FCS1($40) -    PRE-PRINT SINGLE SPACE
          EQU    E9FCS2($F0) -    PRE-PRINT DOUBLE SPACE
          EQU    E9FCS3($60) -    PRE-PRINT TRIPLE SPACE
          EQU    E9FCSS($4E) -    PRE-PRINT SUPPRESS
          EQU    E9FCPE($F1) -    PRE-PRINT PAGE EJECT
          EQU    E9FCBP($F2) -    PRE-PRINT BOTOM PAGE
          EQU    E9FCC6($F3) -    PRE-PRINT CHANNEL 6 
          EQU    E9FCC5($F4) -    PRE-PRINT CHANNEL 5 
          EQU    E9FCC4($F5) -    PRE-PRINT CHANNEL 4 
          EQU    E9FCC3($F6) -    PRE-PRINT CHANNEL 3 
          EQU    E9FCC2($F7) -    PRE-PRINT CHANNEL 2 
          EQU    E9FC11($F8) -    PRE-PRINT CHANNEL 11
          EQU    E9FCC7($F9) -    PRE-PRINT CHANNEL 7 
          EQU    E9FCC8($E7) -    PRE-PRINT CHANNEL 8 
          EQU    E9FCC9($E8) -    PRE-PRINT CHANNEL 9 
          EQU    E9FC10($E9) -    PRE-PRINT CHANNEL 10
          EQU    E9PPPE($C1) -    POST-PRINT PAGE EJECT 
          EQU    E9PPBP($C2) -    POST-PRINT BOTTOM PAGE
          EQU    E9PPC6($C3) -    POST-PRINT CHANNEL 6
          EQU    E9PPC5($C4) -    POST-PRINT CHANNEL 5
          EQU    E9PPC4($C5) -    POST-PRINT CHANNEL 4
          EQU    E9PPC3($C6) -    POST-PRINT CHANNEL 3
          EQU    E9PPC2($C7) -    POST-PRINT CHANNEL 2
          EQU    E9PP11($C8) -    POST-PRINT CHANNEL 11 
          EQU    E9PPC7($C9) -    POST-PRINT CHANNEL 7
          EQU    E9PPC8($D1) -    POST-PRINT CHANNEL 8
          EQU    E9PPC9($D2) -    POST-PRINT CHANNEL 9
          EQU    E9PP10($D3) -    POST-PRINT CHANNEL 10 
          EQU    E9MMMM($D4) -    CHARACTER M 
          EQU    E9PPPP($D7) -    CHARACTER P 
          EQU    E9QQQQ($D8) -    CHARACTER Q 
          EQU    E9TTTT($E3) -    CHARACTER T 
          EQU    E9VVVV($E5) -    CHARACTER V 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
*         ASCII CHARACTERS
* 
         SPC  1 
          EQU    A9EOL($FF)  -    END OF LINE INDICATOR 
          EQU    A9PPPP($50) -    -P- FOR PM MESSAGE
          EQU    A9MMMM($4D) -    -M- FOR PM MESSAGE
          EQU    A9BLANK($20)     ASCII BLANK 
* 
* * * *  EBCDIC CODE CHARACTERS 
* 
          EQU    HCSOH($01)  -    BSC OUTER PROTOCOL CHARACTERS 
          EQU    HCSTX($02) 
          EQU    HCDLE($10) 
          EQU    HCETB($26) 
          EQU    HCENQ($2D) 
          EQU    HCSYN($32) 
          EQU    HCNAK($3D) 
          EQU    HCACK($70) 
          SPC    1
          EQU    HCEE($C5)   -    EBCDIC CHARACTER EQUATES
          EQU    HCSS($E2)
          EQU    HCTT($E3)
          EQU    HCII($C9)
          EQU    HCRR($D9)
          EQU    HCOO($D6)
          EQU    HCGG($C7)
          EQU    HCNN($D5)
          EQU    HCFF($C6)
          EQU    HCTWO($F2) 
          EQU    HCSIX($F6) 
          EQU    HCNINE($F9)
          EQU    HCASTERISK($5C)
          EQU    HCCOLON($7A) 
          EQU    HCSLASH($61) 
          EQU    HCSLANT($61) 
          EQU    HCBLNK($40)
         EQU   HCBLANK(HCBLNK)
          EQU   H9BLANK(HCBLANK)
          EQU    HC789($3F) 
          EQU    HCEOR(HC789) 
          SPC    1
         EQU   HCFCAC(8)     -    1ST CHAR DISPLACEMENT FOR ACCTG MESSAGE 
          EQU    HCFCTB(8)   -    1ST CHAR DISPLACEMENT FOR DATA BUFFER 
          EQU    HCPAD($FF)  -    PAD CHARACTER 
          EQU    HCZERO($0)  -    CHARACTER 0 
          EQU    HCBSCB($82) -    SCB FOR TWO BLANK CHARACTERS
          EQU    HCSCB1($C1) -    SCB FOR 1 UNCOMPRESSED CHARACTER
          EQU    HCSCB5($C5) -    SCB FOR 5 UNCOMPRESSED CHARACTERS 
          EQU    HCSCBF($FF) -    UNCOMPRESSED MAX SCB
          EQU    HCMXCNB($BF)     COMPRESSED NON-BLANK MAX SCB
          EQU    HCCB03($83) -    SCB FOR 3 COMPRESSED BLANKS 
          EQU    HCCBMX($9F) -    SCB FOR MAX COMPRESSED BLANKS 
          EQU    HCCBMIN($03)     MINIMUM COUNT OF COMPRESSED BLANKS
          EQU    HMAXBLNK($1F)    MAXIMUM COUNT OF NR COMPRESSED BLANKS 
          EQU    HCIASRCB($81)    INTERACTIVE SRCB
          EQU   HCXSRCB($80)    TRANSPARENT SRCB
          EQU    HCPUSRCB($80)     SRCB FOR PUNCH 
          EQU    HCDBLSPC(I9FDS)  DOUBLE SPACE FE 
          EQU    HCTRPLSPC(I9FTS) TRIPLE SPACE FE 
          EQU    HCUS(I9US)  -    END OF LOGICAL LINE CHARACTER 
          EQU    HPMLIM(79)  -    LIMIT OF PM MESSAGE SIZE
          SPC    1
          EQU    HNONCMP($C0)     NON COMPRESSED DATA SCB 
          SPC    1
         EQU   MXWXPT(NCUOP1)   TRANSPARENT MODE
         EQU   MXPUNCH(NCUOP2)  PUNCH DEVICE
         EQU   MXSUP(NCUOP3)    SUPPRESS CARRIAGE CONTROL 
         EQU   MXPOST(NCUOP4)   POST PRINT TERMINAL 
          EQU   MXEOR(NCUOP5)    EOR FLAG 
          EQU    MXEOI(NCUOP6)    EOI FLAG
          EQU    MXACCT(NCUOP7)   ACCT BUFFER FLAG
         EQU   MXPRE(NCUOP8)    LAST FORMAT EFFECTOR WAS PREPRINT 
         EQU   MXSPCC(NCUOP9)   INSERT SINGLE SPACE CC (FOLD LINE)
         EQU   MXENDIT(NCUOPA)  END OF SOURCE AND END OF JOB
         EQU   MXBLNKL(NCUOPB)  POSSIBLE BLANK LINE 
         EQU   MXEIA(MXEOI)     PASS TO PASCAL LEVEL ON END IA
          SPC    1
          EQU    MBPRE(NBUOP8)    BIT LAST FE WAS PRE-PRINT 
          EQU    MBSPCC(NBUOP9)   BIT INSERT SINGLE SPACE 
          EQU    MBENDIT(NBUOPA)  BIT END OF SOURCE / JOB 
          EQU    MBBLNK(NBUOPB)   BIT POSSIBLE BLANK LINE 
         SPC   1
         EQU   BFXPT($04)    -    TRANSPARENT DATA
         EQU   BFEOR($08)    -    END OF RECORD 
         EQU   BFEOI($10)    -    END OF INFORMATION
         EQU   BFPMSG($20)   -    PM MESSAGE ENCOUNTERED
         EQU   BFACCTG(BFEOI)   ACCOUNTING BUFFER 
          SPC    1
          EQU    CC1(1)      -    COUNTER 1 
          EQU    CC2(2)      -    COUNTER 2 
          EQU    CCXSIZE(CC2)     SIZE OF TRANSMISSION BLOCK COUNTER
          EQU    CCWIDTH(CC1)     WIDTH COUNTER 
          EQU    NCCNT1($04) -    CHARACTER COUNT 1 
          EQU    NCWIDTH(NCCNT1)   WIDTH COUNTER
         EQU   NCCNTL($04)   -    CHARACTER COUNT 1 LIMIT 
          EQU    NCWIDL(NCCNTL)    WIDTH LIMIT (LINE SIZE)
          EQU    NCUOPS(7)   -    USER OPTION FLAG WORD 
          EQU    NCCNT2(10)  -    CHARACTER COUNT 2 
         EQU   NCBLKL(11)    -    CHARACTER COUNT 2 LIMIT 
          EQU    NCCRCS($09) -    CRC ACCUMULATION
          EQU    NCSCHR($08) -    SPECIAL CHARACTER 
          EQU    NCCXLT($0C) -    CODE TRANSLATION TABLE ADDRESS
          EQU    NCSPTA($05) -    INPUT STATE POINTER TABLE ADDRESS 
        EQU    NCSVWL($0E) -    SAVED WORKCODE FIELD
          EQU    NCPCNT2($0F)     PREVIOUS NCCNT2 (XMBSZ) 
          SPC   1 
          EQU   T4SYNC(4)   -    NUMBER OF LEADING SYNCS
          EQU    T6PMS(7)    -    NUMBER OF P'S TO POSITION DATA
          SPC    1
* 
*         FILE REGISTERS COMMON TO INPUT AND OUTPUT 
* 
          EQU    TPCURC($00) -    CURRENT CHARACTER 
          EQU    TPSAVE($03) -    CHARACTER SAVE REGISTER    (INPUT,O-B)
* 
*         FILE REGISTERS FOR OUTPUT TEXT PROCESSING 
* 
          EQU    TPMAXBL($04) 
          EQU    TPFRST($05) -    FIRST CHARACTER IN RECORD 
          EQU    TPCURWT($06)     CURRENT ACCOUNTING WEIGHT 
          EQU    TPLENGTH($07)    CURRENT PAGE LENGTH 
          EQU    TPDEFLH($08)     DEFINITE PAGE LENGTH
          EQU    TPGLNGTH($09)    MAXIMUM PAGE LENGTH 
          EQU    TPACCTG($0A)     TOTAL ACCOUNTING WEIGHT 
          EQU    TPLBC($0B)  -    LEADING BLANK COUNT IN RECORD 
          EQU    TPRCB($0C)  -    RCB SUPPLIED BY PASCAL LEVEL
          EQU    TPSTRG($0D) -    STRING COUNTER
          EQU    TPUSCB($0E) -    C0  UNCOMP SCB / CNT AT 0 
*                             THE NEXT TWO EQUATES ARE FOR THE SAME 
*                              FILE REGISTER - TPCMPS IS LEFT HALF
*                                            - TPBLNK IS RIGHT HALF 
          EQU    TPCMPS($0F) -    A3 CMP NON-BLANK SCB / CNT AT 3 
          EQU    TPBLNK($0F) -    80  BLANK SCB / CNT AT 0
          EQU    TPPLLNG(TPSTRG)  WORK PREVIOUS LINE LENGTH 
          SPC    1
          SPC    1
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*        CSUB MACRO - USED TO CALL STATE SUBROUTINES                  * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
CSUB      MAC    SJ,SS
          STATE  "SS" 
          JUMP   "SJ",RTN 
          EMC 
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*        HTXDC - HASP PRINTER TEXT PROCESSING STATE TABLE FOR PRU     * 
*                 DATA OF THE DISPLAY CODE PERSUASION                 * 
*                                                                     * 
*        STATES UNIQUE TO DISPLAY CODE HAVE LABELS OF THE FORM        * 
*         HDB000 WHILE STATES COMMON TO ASCII AND DISPLAY CODE        * 
*         HAVE LABELS OF THE FORM HB000.                              * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
HPRTC     MAC    LB          -    MACRO TO CREATE STATE TABLE 
          EQU    HS"LB"(*-HTXDC)
          ADC    H"LB"
          EMC 
          SPC    1
          ENT    HTXDC,HTXASC 
          EQU    HTXASC(*)
          EQU    HTXDC(*) 
          HPRTC  B000        -    00  END OF SOURCE 
          HPRTC  B010        -    01  DCD DROPPED (NOT USED)
          HPRTC  B020        -    02  EXCESS BUFFERS (NOT USED) 
          HPRTC  B030        -    03  BUFFER THRESHOLD (NOT USED) 
          HPRTC  B100        -    START OF TRANSMISSION BLOCK 
          HPRTC  B200        -    START OF RECORD 
          HPRTC  B950        -    BUILD TRAILER 
          HPRTC  B120        -    BUILD TRANSMISSION BLOCK HEADER 
          HPRTC  B060        -    BUILD EOI PUNCH CARD
          HPRTC  B150        -    TEST FOR PM MESSAGE 
          HPRTC  B210        -    CASE FORMAT EFFECTOR
          HPRTC  B290        -    DISCARD LINE
          HPRTC  B2A0        -    TEST FOR PM MESSAGE 
          HPRTC  B300        -    BOTTOM OF PAGE ACCOUNTING LOGIC 
          HPRTC  B350        -    PRE-PRINT FE COMMON PROCESSING
          HPRTC  B360        -    POST-PRINT FE COMMON PROCESSING 
          HPRTC  B370        -    PUT RCB AND SRCB AT START OF RECORD 
          HPRTC  B400        -    PM MESSAGE
          HPRTC  B500        -    START NEW STRING
          HPRTC  B520        -    UNCOMPRESSED STRING 
          HPRTC  B540        -    UNCOMPRESSED STRING MAX WIDTH 
          HPRTC  B550        -    TEST THIRD EQUAL
          HPRTC  B600        -    COMPRESSED STRING 
          HPRTC  B710        -    SECOND BLANK
          HPRTC  B730        -    THIRD BLANK 
          HPRTC  B760        -    COUNT BLANKS
          HPRTC  B770        -    BUILD BLANK SCB-S FROM BLANK COUNTER
          HPRTC  B800        -    PROCESS LINE FOLDING
          HPRTC  B810        -    FOLD A LINE 
          HPRTC  B850        -    END RECORD .. EOL DETECTED
          HPRTC  B860        -    END OF LINE AND END OF XMIT BLOCK 
          HPRTC  B900        -    RECORD BACKUP 
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*         HSB000 - END OF SOURCE                                      * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
HB000     TSTMXF MXEOI,HB002 SKIP IF END OF DATA
          TSTMXF MXACCT,HB001 SKIP IF ACCT BUFFER 
          TPEXIT              -    EXIT UNTIL MORE DATA ARRIVES 
HB001     TRMBUF,1            -    STORE LCD INTO ACCT BUFFER 
          TPEXIT             -    EXIT UNTIL MORE DATA ARRIVES
          SPC    1
HB002     STATLS HSB950+1,HB004    SKIP IF AT AN END OF RECORD STATE
          RCHAR  B9EOL       -    FORCE EOL CHARACTER,SO REC WILL END 
          CHRCC  CC1,$FF     -    MOVE THE EOL CHARACTER
          TPLDR  NCCNT1,TPCURC     TO TPCURC
          JUMP   CURRENT     -    RUN $FF THOUGH CURRENT STATE
HB004     SETBIT NCUOPS,MBENDIT   FLAG END OF DATA
          TSTMXF MXPUNCH,HB008    SKIP IF PUNCH DEVICE
          SKIP   HB040       -    GO END THE BLOCK
          SPC    1
          SPC    1
HB008     TSTMXF MXEOR,HB040 -    SKIP IF EOJ (EOR AND EOI) 
          SKIP   HB060       -    PUNCH EOI CARD
* 
* * * *  PRINTER DATA IS AT EOI AND/OR EOR..PUNCH IS AT EOJ 
* 
HB040     STATLS HSB200,HB042     SKIP IF AT BEGINNING OF BLOCK 
          JUMP   HSB950,RTN  -    GO TERMINATE BLOCK
          SPC    1
HB042     CSUB   HSB120,HSB950     BUILD HEADER AND TRAILER 
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*        HSB060 - BUILD EOI CARD                                      * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
HB060     STATLS HSB200,HB062 SKIP IF HEADER NOT BUILT
          SKIP   HB064
          SPC    1
HB062     CSUB   HSB120,HSB060     BUILD HDR,THEN RTRN TO DO EOI CARD 
          SPC    1
HB064     TPSTRC TPRCB       -    STORE RCB 
          ADDC   HCPUSRCB    -    STORE PUNCH SRCB
          ADDC   HCSCB5      -    STORE SCB (5 UNCOMPRESSED CHARACTERS) 
          ADDC   HCSLASH     -    STORE / 
          ADDC   HCASTER     -    STORE * 
          ADDC   HCEE        -    STORE E 
          ADDC   HCOO        -    STORE O 
          ADDC   HCII        -    STORE I 
          ADDC   HCZERO      -    STORE ENDING SCB
          JUMP   HSB950,RTN  -    BUILD TRAILER 
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*        HSB010 - RESERVED FOR DCD DROPPED (NOT APPLICABLE)           * 
*        HSB020 - RESERVED FOR EXCESS BUFFERS (NOT APPLICABLE)        * 
*        HSB030 - RESERVED FOR BUFFER THRESHOLD (NOT APPLICABLE)      * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
HB010    EQU    HB010(*)
HB020     EQU    HB020(*) 
HB030     EQU    HB030(*) 
HBRESERV  EQU    HBRESERV(*)
          TPSTR  TPBLNK,NCSVWL    FORCE TERMINATION OF TP BY PASCAL 
          TPEXIT
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*         HSB100 - ENTRY TO BUILD TRANSMISSION BLOCK HEADER           * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
HB100     RSTMXF MXACCT       -    CLEAR POSSIBLE ACCT BUFFER FLAG
          TSTMXF MXPUNCH+MXSPCC+MXSUP,HB104 
          XLATE  $7F         -    GET EBCDIC CHAR 
          CHARNE E9PPPP,HB102     SKIP IF NOT A P 
          TPRSTR TPCURC      -    GET UN-XLATED P 
          GETBUF 14          -    FORCE FIRST/NEXT BUFFER 
          TPMARK LEVEL1      -    MARK POSITION OF P
          STATE  HSB150,STOREXIT  STORE P 
* 
HB102     TPRSTR TPCURC      -    RESTORE UN-XLATED CHAR
* 
HB104     GETBUF HCFCTB      -    GET FIRST/NEXT BUFFER 
          CSUB   HSB120,HSB200    BUILD HEADER
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*        HSB120 - BUILD TRANSMISSION BLOCK HEADER                     * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
HB120     INTCC  CCXSIZE     -    INITIALIZE MAX XMISSION SIZE
          MVWORD NCCNT2,NCPCNT2   INITIALIZE PREVIOUS XMBSZ VALUE 
          TPSUBR TPACCTG,TPACCTG   CLEAR ACCOUNTING TOTAL 
          RSTRAN             -    TURN OFF TRANSLATION
          SETCC  CC1,T4SYNCS -    SET COUNT FOR NUMBER OF SYNCS 
          RADDC  HCSYN       -    STORE THE SYNCS 
          TSTMXF MXWXPT,HB122     SKIP IF XPT WORKSTATION 
          ADDC   HCSOH       -    STORE SOH FOR NON-XPT W/S 
          SKIP   HB124
HB122     ADDC   HCDLE       -    STORE DLE FOR XPT W/S 
HB124     ADDC   HCSTX       -    STORE STX 
          SETCC  CC1,3       -    SET COUNT FOR 3 BYTES OF ZERO 
          RADDC  HCZERO      -    STORE ZEROS FOR BCB + FCS 
          TPMARK LEVEL2      -    SET RCB/SRCB MARK IN NEW XMIT BUFFER
          JUMP   CURRENT
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*         HSB150 - POSSIBLE PM BLOCK                                  * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
HB150     XLATE  $7F         -    TRANSLATE TO EBCDIC 
          CHARNE E9MMMM,HB152     SKIP IF NOT PM MESSAGE
          SETCC  CC1,HPMLIM  -    MAX LENGTH OF PM MSG
          TPRSTR TPCURC      -    GET UN-XLATED M 
          STATE  HSB400,STOREXIT  STORE M 
* 
HB152     TPBKUP LEVEL1,SRC,DST   BACKUP SOURCE AND DEST. 
          RCHAR  0           -    GET INVALID FE (SINGLE SPACE) 
          CSUB   HSB120,HSB200    BUILD HEADER
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*         HSB200 - CARRIAGE CONTROL OPTIONS                           * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
* * * *   DONT START NEW LINE IF LESS ROOM IN XMIT BUFFER THAN LENGTH 
*         OF PREVIOUS LINE (ASSUMING LINE WILL BE ABOUT SAME LENGTH)
* 
HB200     TPLD   NCPCNT2,TPPLLNG  XMIT BFR CHARS LEFT AT PREVIOUS LINE
          TPLD   NCCNT2,TPSAVE    XMIT BFR CHARS LEFT NOW 
          TPSUBR TPSAVE,TPPLLNG   GET LENGTH PREVIOUS LINE (TPPLLNG)
          TPCMPR TPSAVE,TPPLLNG 
          JUMP   HSB860,RTN  -    LESS THAN PREVIOUS LINE NR CHARS LEFT 
          NOPR               -    EQUAL TO OR 
*                            -    MORE THAN PREVIOUS LINE NR CHARS LEFT 
          TPST   TPSAVE,NCPCNT2   UPDATE PREVIOUS XMIT BFR CHARS LEFT 
* 
* * * *  INITIALIZE RECORD RELATED FILE REGISTERS 
* 
          TPMOVE TPCURC,TPFRST     SAVE FIRST CHAR IN RECORD
          TPSUBR TPCURWT,TPCURWT   CLEAR CURRENT ACCTG WEIGHT 
          TPMOVE TPDEFLH,TPLENGTH  START W/DEFINITE PAGE LENGTH 
* 
* * * *  DISCARD SUCCESSIVE EOL-S 
* 
          CHARNE B9EOL,HB201 -    SKIP IF NOT EOL 
          RSTBIT NCUOPS,MBSPCC,EXIT NO FOLD, DISCARD SECOND EOL 
HB201     EQU    HB201(*) 
* 
* * * *  DECIDE WHETHER TO PROCESS FE OR USE DEFAULT FE 
* 
          TSTMXF MXPUNCH,HB203     .   SKIP IF PUNCH DEVICE 
          TSTMXF MXSUP+MXSPCC,HB202 SKIP IF SPECIAL CARRIAGE CONTROL
          TPSUBR TPLBC,TPLBC -    CLEAR LEADING BLANK COUNTER 
          SKIP   HB210       -    GO SCAN FORMAT EFFECTOR 
* 
HB202     SKIP   HB21SS      -    USE DEFAULT FORMAT EFFECTOR 
* 
          SPC    1
HB203     RCHAR  HCPUSRCB    -    USE PUNCH SRCB
          STATE  HSB370      -    PRESET TO STORE RCB/SRCB
          SKIP   HB21W1      -    ACCOUNT AS WEIGHT 1 
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*         HSB210 - PROCESS DISPLAY / ASCII FORMAT EFFECTORS           * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
HB210     XLATE  $7F         -    TRANSLATE FORMS CONTROL TO EBCDIC 
* 
* * * *   PRE-PRINT SINGLE SPACE
* 
          CHARNE E9FCS1,HB216 
* 
HB21SS    RCHAR  H9FCS1      -    HASP PRE-PRINT SINGLE SPACE 
          STATE  HSB350      -    PRESET STATE FOR PRE-PRINT
* 
HB21W1    TPINCR TPCURWT,1   -    SET ACCOUNTING WEIGHT TO 1
          SKIP   HB21PL 
* 
* * * *   PRE-PRINT PAGE EJECT
* 
HB216     STATE  HSB350      -    PRESET STATE FOR PRE-PRINT
          CHARNE E9FCPE,HB218 
          RCHAR  H9FCPE      -    HASP PRE-PRINT PAGE EJECT 
* 
HB21WP    TPMOVE TPGLNGTH,TPCURWT GET MAX PAGE LENGTH 
          TPSUBR TPDEFLH,TPCURWT  SUBTRACT CURRENT LINE COUNT 
          TPSUBR TPLENGTH,TPLENGTH CLEAR LINE COUNTER 
          JUMP   CURRENT     -    STORE FE
* 
* * * *   PRE-PRINT DOUBLE SPACE
* 
HB218     CHARNE E9FCS2,HB220 
          RCHAR  H9FCS2      -    HASP PRE-PRINT DOUBLE SPACE 
* 
HB21W2    TPINCR TPCURWT,2   -    SET ACCOUNTING WEIGHT TO 2
          SKIP   HB21PL      -    ADJUST PAGE LENGTH
* 
* * * *   PRE-PRINT TRIPLE SPACE
* 
HB220     CHARNE E9FCS3,HB222 
          RCHAR  H9FCS3      -    HASP PRE-PRINT TRIPLE SPACE 
* 
HB21W3    TPINCR TPCURWT,3   -    SET ACCOUNTING WEIGHT TO 3
          SKIP   HB21PL      -    ADJUST PAGE LENGTH
* 
*         PRE-PRINT SUPPRESS SPACE
* 
HB222     CHARNE E9FCSS,HB224 
          RCHAR  H9FCSS      -    HASP SUPPRESS SPACE 
          SKIP   HB21W1      -    ACCOUNT AS WEIGHT 1 
* 
*         PRE-PRINT CHANNEL 12
* 
HB224     CHARNE E9FCBP,HB226 
          RCHAR  H9FCBP      -    HASP PRE-PRINT BOTTOM PAGE
          JUMP   HSB300,RTN  -    PERFORM BOTTOM PAGE ACCOUNTING
* 
*         PRE-PRINT CHANNEL 2 
* 
HB226     CHARNE E9FCC2,HB228 
          RCHAR  H9FCC2      -    HASP PRE-PRINT CHANNEL 2
          SKIP   HB21W2      -    ACCOUNT AS WEIGHT 2 
* 
*         PRE-PRINT CHANNEL 3 
* 
HB228     CHARNE E9FCC3,HB230 
          RCHAR  H9FCC3      -    HASP PRE-PRINT CHANNEL 3
          SKIP   HB21W2      -    ACCOUNT AS WEIGHT 2 
* 
*         PRE-PRINT CHANNEL 4 
* 
HB230     CHARNE E9FCC4,HB232 
          RCHAR  H9FCC4      -    HASP PRE-PRINT CHANNEL 4
          SKIP   HB21W3      -    ACCOUNT AS WEIGHT 3 
* 
*         PRE-PRINT CHANNEL 5 
* 
HB232     CHARNE E9FCC5,HB234 
          RCHAR  H9FCC5      -    HASP PRE-PRINT CHANNEL 5
          SKIP   HB21W3      -    ACCOUNT AS WEIGHT 3 
* 
*         PRE-PRINT CHANNEL 6 
* 
HB234     CHARNE E9FCC6,HB236 
          RCHAR  H9FCC6      -    HASP PRE-PRINT CHANNEL 6
* 
HB21W4    TPINCR TPCURWT,4   -    SET ACCOUNTING WEIGHT TO 4
          SKIP   HB21PL      -    ADJUST PAGE LENGTH
* 
*         PRE-PRINT CHANNEL 7 
* 
HB236     CHARNE E9FCC7,HB238 
          RCHAR  H9FCC7      -    HASP PRE-PRINT CHANNEL 7
          SKIP   HB21W4      -    ACCOUNT AS WEIGHT 4 
* 
*         PRE-PRINT CHANNEL 8 
* 
HB238     CHARNE E9FCC8,HB240 
          RCHAR  H9FCC8      -    HASP PRE-PRINT CHANNEL 8
* 
HB21W5    TPINCR TPCURWT,5   -    SET ACCOUNTING WEIGHT TO 5
          SKIP   HB21PL      -    ADJUST PAGE LENGTH
* 
*         PRE-PRINT CHANNEL 9 
* 
HB240     CHARNE E9FCC9,HB242 
          RCHAR  H9FCC9      -    HASP PRE-PRINT CHANNEL 9
          SKIP   HB21W5      -    ACCOUNT AS WEIGHT 5 
* 
*         PRE-PRINT CHANNEL 10
* 
HB242     CHARNE E9FC10,HB244 
          RCHAR  H9FC10      -    HASP PRE-PRINT CHANNEL 10 
* 
HB21W6    TPINCR TPCURWT,6   -    SET ACCOUNTING WEIGHT TO 6
          SKIP   HB21PL      -    ADJUST PAGE LENGTH
* 
*         PRE-PRINT CHANNEL 11
* 
HB244     CHARNE E9FC11,HB246 
          RCHAR  H9FC11      -    HASP PRE-PRINT CHANNEL 11 
          SKIP   HB21W6      -    ACCOUNT AS WEIGHT 6 
* 
* * * *   POST-PRINT PAGE EJECT 
* 
HB246     STATE  HSB360      -    PRESET STATE FOR POST-PRINT 
* 
          CHARNE E9PPPE,HB248 
          RCHAR  H9PPPE      -    HASP POST-PRINT PAGE EJECT
          SKIP   HB21WP      -    GO DO PAGE EJECT ACCOUNTING 
* 
* * * *   POST-PRINT CHANNEL 12 
* 
HB248     CHARNE E9PPBP,HB250 
          RCHAR  H9PPBP      -    HASP POST-PRINT CHANNEL 12
          JUMP   HSB300,RTN  -    PERFORM BOTTOM PAGE ACCOUNTING
* 
* * * *   POST-PRINT CHANNEL 2
* 
HB250     CHARNE E9PPC2,HB252 
          RCHAR  H9PPC2      -    HASP POST-PRINT CHANNEL 2 
          SKIP   HB21W2      -    ACCOUNT AS WEIGHT 2 
* 
* * * *   POST-PRINT CHANNEL 3
* 
HB252     CHARNE E9PPC3,HB254 
          RCHAR  H9PPC3      -    HASP POST-PRINT CHANNEL 3 
          SKIP   HB21W2      -    ACCOUNT AS WEIGHT 2 
* 
* * * *   POST-PRINT CHANNEL 4
* 
HB254     CHARNE E9PPC4,HB256 
          RCHAR  H9PPC4      -    HASP POST-PRINT CHANNEL 4 
          SKIP   HB21W3      -    ACCOUNT AS WEIGHT 3 
* 
* * * *   POST-PRINT CHANNEL 5
* 
HB256     CHARNE E9PPC5,HB258 
          RCHAR  H9PPC5      -    HASP POST-PRINT CHANNEL 5 
          SKIP   HB21W3      -    ACCOUNT AS WEIGHT 3 
* 
* * * *   POST-PRINT CHANNEL 6
* 
HB258     CHARNE E9PPC6,HB260 
          RCHAR  H9PPC6      -    HASP POST-PRINT CHANNEL 6 
          SKIP   HB21W4      -    ACCOUNT AS WEIGHT 4 
* 
* * * *   POST-PRINT CHANNEL 7
* 
HB260     CHARNE E9PPC7,HB262 
          RCHAR  H9PPC7      -    HASP POST-PRINT CHANNEL 7 
          SKIP   HB21W4      -    ACCOUNT AS WEIGHT 4 
* 
* * * *   POST-PRINT CHANNEL 8
* 
HB262     CHARNE E9PPC8,HB264 
          RCHAR  H9PPC8      -    HASP POST-PRINT CHANNEL 8 
          SKIP   HB21W5      -    ACCOUNT AS WEIGHT 5 
* 
* * * *   POST-PRINT CHANNEL 9
* 
HB264     CHARNE E9PPC9,HB266 
          RCHAR  H9PPC9      -    HASP POST-PRINT CHANNEL 9 
          SKIP   HB21W5      -    ACCOUNT AS WEIGHT 5 
* 
* * * *   POST-PRINT CHANNEL 10 
* 
HB266     CHARNE E9PP10,HB268 
          RCHAR  H9PP10      -    HASP POST-PRINT CHANNEL 10
          SKIP   HB21W6      -    ACCOUNT AS WEIGHT 6 
* 
* * * *   POST-PRINT CHANNEL 11 
* 
HB268     CHARNE E9PP11,HB270 
          RCHAR  H9PP11      -    HASP POST-PRINT CHANNEL 11
          SKIP   HB21W6      -    ACCOUNT AS WEIGHT 6 
* 
* * * *   POSSIBLE PM-MESSAGE 
* 
HB270     CHARNE E9PPPP,HB272 
          TPMARK LEVEL1      -    MARK POSITION OF P
          STATE  HSB2A0,EXIT -    LOOK FOR M OF PM MESSAGE
* 
* * * *   LOOK FOR Q, R, S, T.  DISCARD THE WHOLE LINE
* 
HB272     CHARLS E9QQQQ,HB274     SKIP IF NOT Q,R,S,T 
          CHARLS E9TTTT+1,HB276   SKIP IF IT IS Q,R,S,T 
HB274     SKIP   HB21SS      -    PROCESS ALL OTHERS AS SINGLE SPACE
* 
HB276     STATE  HSB290,EXIT -    DISCARD THE WHOLE LINE
* 
* * * *   ADD ACCOUNTING WEIGHT TO CURRENT PAGE LENGTH
* 
HB21PL    TPADDR TPCURWT,TPLENGTH  BUMP PAGE LENGTH 
          TPCMPR TPGLNGTH,TPLENGTH COMPARE MAX LENGTH TO CURRENT
          TPSUBR TPGLNGTH,TPLENGTH < OVERFLOW, ADJUST CURRENT LENGTH
          JUMP   CURRENT     -     = STORE FE 
          JUMP   CURRENT     -     >
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*        HSB290 - DISCARD DATA UP TO EOL                              * 
*                                                                     * 
*                 INITIATED WHEN FE'S Q,R,S,T DETECTED.               * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
HB290     TPMARK LEVEL2      -    ALLOW SOURCE TO BE RELEASED 
          CHARNE B9EOL,HB292 -    SKIP IF NOT EOL 
          RSTBIT NCUOPS,MBPRE     DONT CHANGE PREVIOUS PRE-PRINT
          STATE  HSB200,EXIT -    PROCESS FE AT START OF NEXT LINE
* 
HB292     NOPR   EXIT        -    IGNORE Q,R,S,T FORMS CONTROL LINES
          SPC    4
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*        HSB2A0 - CHECK FOR M FOLLOWING P FORMAT EFFECTOR             * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
HB2A0     XLATE  $7F         -    TRANSLATE TO EBCDIC 
          CHARNE E9MMMM,HB2A2     SKIP IF NOT A M 
          TPBKUP LEVEL1,SRC  -    RESTORE POINTERS TO P CHARACTER 
          TPMOVE TPFRST,TPCURC     MAKE TPCURC EQ P 
          JUMP   HSB950,RTN  -    TERMINATE CURRENT XMIT BLOCK
* 
HB2A2     TPBKUP LEVEL1,SRC  -    BACKUP TO POSITION OF P 
          RCHAR  0           -    GET INVALID ASCII/DISPL FE (SNGL SPC) 
          JUMP   HSB210,RTN  -    PROCESS FORMAT EFFECTOR 
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*         HSB300 - CHANNEL 12 (BOTTOM PAGE) ACCOUNTING LOGIC          * 
*                                                                     * 
*                 ACCOUNTING WEIGHT FOR SKIP TO CHANNEL 12 IS         * 
*                  HALF THE PAGE SIZE                                 * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
HB300     EQU    HB300(*) 
* 
* * * *   CALCULATE HALF THE PAGE SIZE
* 
          TPMOVE TPGLNGTH,TPLENGTH GET THE PAGE SIZE
          TPADDR TPLENGTH,TPLENGTH DOUBLING 7 TIMES PUTS HALF THE 
          TPADDR TPLENGTH,TPLENGTH ORIGINAL VALUE INTO THE LEFT 
          TPADDR TPLENGTH,TPLENGTH HALF OF THE FILE REGISTER
          TPADDR TPLENGTH,TPLENGTH
          TPADDR TPLENGTH,TPLENGTH
          TPADDR TPLENGTH,TPLENGTH
          TPADDR TPLENGTH,TPLENGTH
* 
* * * *  MOVE ACCOUNTING WEIGHT FROM LEFT HALF OF TPLENGTH TO RIGHT 
*         HALF OF TPCURWT.
* 
          TPST   TPLENGTH,NCCRCS  ACCOUNTING WEIGHT IN CRCS (WORK)
          TPLDL  NCCRCS,TPCURWT   GET IT IN PROPER FILE REGISTER
* 
* * * *  SET LINE COUNT (TPLENGTH) TO MAXIMUM 
* 
          TPMOVE TPGLNGTH,TPLENGTH
          JUMP   CURRENT
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*        HSB350 - PRE-PRINT FORMAT EFFECTOR COMMON PROCESSING         * 
*                                                                     * 
*                 IF THE PRINTER IS NOT POST-PRINT-ONLY (MXPOST)      * 
*                  THEN JUST STORE THE PRE-PRINT SRCB.                * 
*                  ELSE (PRINTER IS POST-PRINT ONLY)                  * 
*                       IF THE PREVIOUS FORMAT EFFECTOR WAS A         * 
*                       PREPRINT TYPE (MXPRE),                        * 
*                        THEN CHANGE THE PREVIOUS SRCB TO BE A POST-  * 
*                             PRINT CC MATCHING CURRENT FE.           * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
HB350     TSTMXF MXPOST,HB352     SKIP IF POST-PRINT CONVERSION REQUIRED
          JUMP   HSB370,RTN  -    GO PUT RCB AND SRCB 
* 
* * * *   PROCESS PRE-PRINT FORMAT EFFECTOR FOR POST-PRINT PRINTER
* 
HB352     EQU    HB352(*) 
          TSTMXF MXPRE,HB354 -    SKIP IF PREVIOUS FE WAS PRE-PRINT 
          SKIP  HB356 
* 
* * * *  THE PREVIOUS FE WAS PRE-PRINT.  THE PREVIOUS SRCB
* * * *   IS THEREFORE SUPPRESS SPACE.  CHANGE IT TO APPROPRIATE POST-
* * * *   PRINT SRCB. 
* 
HB354     EQU    HB354(*) 
          CHRCC  CC1,$DF     -    REMOVE PRE-PRINT-INDICATOR
          TPLDR  NCCNT1,TPSTRG     LOAD POST-PRINT SRCB 
          TPRSTR TPSTRG      -    MAKE CURR CHAR EQ POST-PRINT SRCB 
          TPINSR LEVEL2,CURNT,,1   CHANGE PREV CC TO MATCH CURR FE
          SPC    1
          RCHAR  H9PPSS      -    MAKE CHAR = SUPPRESS SPACE
          JUMP   HSB370,RTN  -    GO STORE RCB AND SRCB 
* 
* * * *  THE PREVIOUS FORMAT EFFECTOR WAS NOT PRE-PRINT.
* * * *   BUILD A DUMMY (BLANK) LINE SO THAT ITS SRCB CAN BE
* * * *   USED TO PLACE A POST-PRINT CARRIAGE CONTROL.
* 
HB356     DCC    CCXSIZE,HB358     SKIP IF DUMMY LINE RCB/SRCB/SCB
          DCC    CCXSIZE,HB358     WANT FIT 
          DCC    CCXSIZE,HB358
          SETBIT NCUOPS,MBPRE     SET PREVIOUS IS PRE-PRINT FLAG
         TPMOVE  TPDEFLH,TPLENGTH  RESET CURRENT PAGE POSITION
          TPSUBR TPCURWT,TPCURWT    CLEARING THE ACCOUNTING REGISTERS 
          TPMARK LEVEL2      -    MARK LOCATION OF RCB/SRCB 
          TPSTRC TPRCB      -    STORE RCB
          ADDC   H9FCSS      -    STORE SRCB (AS A PLACE KEEPER)
          ADDC   HCCB03      -    STORE COMPRESSED 3 BLANKS SCB 
          TPRSTR TPCURC      -    RESTORE FORMAT EFFECTOR 
          JUMP   HSB810,RTN  -    GO TERMINATE THE LINE 
          SPC    1
HB358     JUMP   HSB950,RTN  -    TERMINATE CURRENT BLOCK 
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*        HSB360 - POST-PRINT FORMAT EFFECTOR COMMON PROCESSING        * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
HB360     RSTBIT NCUOPS,MBPRE     PREVIOUS IS POST-PRINT FLAG 
*         JUMP   HSB370,RTN  -    GO STORE RCB/SRCB (FALL THROUGH)
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*        HSB370 - PUT RCB AND SRCB AT BEGINNING OF RECORD             * 
*                                                                     * 
*                 IF LINE FOLD FLAG (MXSPCC) OR CARRIAGE CONTROL      * 
*                  SUPPRESS FLAG (MXSUP) IS SET,GO ON TO PROCESS      * 
*                  CURRENT CHARACTER AS DATA; ELSE SET STATE TO       * 
*                  PROCESS NEXT CHARACTER AS DATA AND EXIT.           * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
HB370     DCC    CCXSIZE,HB378    SKIP IF NO ROOM FOR RCB/SRCB
          DCC    CCXSIZE,HB378
          CHRCC  CC1,$FF     -    SAVE THE SRCB 
          TPMARK LEVEL2      -    MARK LOCATION OF RCB/SRCB 
          TPSTRC TPRCB      -    STORE RCB
          TPLD   NCCNT1,TPSAVE     RESTORE THE SRCB 
          TPSTRC TPSAVE      -    STORE SRCB
* 
* * * *  GET READY TO PROCESS THE RECORD
* 
          SETBIT NCUOPS,MBBLNK    FLAG POSSIBLE BLANK LINE
          INTCC  CCWIDTH     -    INITIALIZE WIDTH COUNTER
* 
* * * *  SET UP TO PROCESS DATA CHARACTER 
* 
          TSTMXF MXSPCC+MXSUP+MXPUNCH,HB372 SKIP IF CURR CHAR IS DATA 
          STATE  HSB500,EXIT -    SET STATE TO START OF STRING
HB372     EQU    HB372(*) 
* 
* * * *  CURRENT CHARACTER IS TO BE PROCESSED AS A DATA CHARACTER 
* * * *   RATHER THAN AS FORMAT EFFECTOR. 
* 
          TSTMXF MXSPCC,HB374     SKIP IF LINE FOLD 
          SKIP   HB375
* 
* * * *  ON FOLDED LINES (MXSPCC SET), IF LEADING BLANK COUNTER (TPBLC) 
* * * *   IS NON-ZERO, THIS IS AN INDICATION TO RETURN TO BLANK 
* * * *   EXPANSION.
* 
HB374     EQU    HB374(*) 
          TPRSTR TPLBC       -    GET LEADING BLANK COUNT.
          CHARNE 0,HB376     -    SKIP IF LBC NOT ZERO. 
          SPC    1
HB375     EQU    HB375(*) 
          TPRSTR TPCURC      -    RESTORE CURRENT CHARACTER 
          SKIP   HB500       -    GO START A NEW STRING 
* 
* * * *  RETURN TO BLANK EXPANSION
* 
HB376     TPMOVE TPLBC,TPSTRG     INITIALIZE STRING COUNT 
          TPSUBR TPLBC,TPLBC -    CLEAR LEADING BLANK COUNT 
          JUMP   HSB770,RTN  -    GO COMPLETE BLANK EXPANSION 
* 
HB378     JUMP   HSB950,RTN  -    TERMINATE CURRENT XMIT BLOCK
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*         HSB400 - MOVE THE PM MESSAGE (UP TO DEFINED LIMIT) TO A     * 
*                   SEPARATE BLOCK.  DISCARD ANY CHARACTER BEYOND     * 
*                   THE DEFINED LIMIT.                                * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
HB400     TPMARK LEVEL2      -    ALLOW SOURCE TO BE RELEASED 
          CHARNE B9EOL,HB404 -    SKIP IF NOT EOL 
          SKIP   HB410
          SPC    1
HB404     DCC    CC1,HB408,STOREXIT  SKIP IF AT MAX CHARACTERS
* 
* * * *  DISCARD ANY CHARACTERS BEYOND THE LIMIT IN A PM MESSAGE
* 
HB408     ICC    CC1,EXIT    -    BUMP COUNT TO COME BACK HERE
* 
HB410     RSTBIT NCUOPS,MBPRE     CLEAR PRE-PRINT FLAG
          SETFLG BFPMSG,CURN -    INDICATES PM MESSAGE COMPLETED
          ALNBUF HCFCAC      -    NEW BUFFER FOR ACCTG ONLY 
          SETMXF MXACCT       -    SET ACCT BUFFER FLAG 
          SETFLG BFACCTG,CURN     SET BUFFER FLAG TO INDICATE ACCTG DATA
         TPSTLC TPACCTG      -    STORE ACCOUNTING
          TPSTRC TPACCTG     -    STORE ACCOUNTING
          STATE  HSB100,EXIT -    START ANOTHER XMISSION BLOCK
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*         HSB500 - START NEW STRING                                   * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
HB500     CHARNE B9EOL,HB502 -    SKIP IF NOT END-OF-LINE 
          JUMP   HSB850,RTN  -    END THE RECORD
          SPC    1
HB502     TPMARK LEVEL1      -    MARK SCB
          ADDC   HCSCBF      -    SCB FOR MAX UNCOMPRESSED CHARS
          DCC    CCXSIZE,HB506    SKIP IF SCB DOES NOT FIT
          TPMOVE TPUSCB,TPSTRG    INITIALIZE THE STRING COUNT 
          TPSTL  TPCURC,NCSCHR    SAVE CURRENT CHAR AS SPECIAL CHAR 
          XLATE  $7F         -    TRANSLATE TO EBCDIC 
          CHARNE HCBLANK,HB504    SKIP IF NOT BLANK CHARACTER 
          STATE  HSB710,EXIT -    LOOK FOR SECOND BLANK 
* 
HB504     RSTBIT NCUOPS,MBBLNK    ON ONLY AT START OF RECORD
          DCC    CCXSIZE,HB506    SKIP IF CHAR FILLS XMIT BLOCK 
          DCC    CCWIDTH,HB540    SKIP IF CHAR MAKES LINE FULL
          TPHSP2 *+1         -    BUMP STRING COUNT 
          STATE  HSB520,STOREXIT  STORE FIRST CHAR, START UNCOMPR. STRG 
* 
HB506     JUMP   HSB900,RTN  -    END XMIT BLOCK
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*        HSB520 - UNCOMPRESSED STRING                                 * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
HB520     TPHSP1             -    PERFORM FOLLOWING LOGIC 
* 
*         CHAREQ B9EOL,   #P+4#   SKIP IF EOL 
*         XLATE  $7F              TRANSLATE TO EBCDIC 
*         CHAREQ HCBLANK, #P+6#   SKIP IF BLANK CHAR
*         DCC    CCXSIZE, #P+1#   SKIP IF XMIT BLOCK FULL 
*         DCC    CCWIDTH, #P+2#   SKIP IF LINE FULL 
*         SPCHEQ          #P+3#   SKIP IF UN-XLATED CHAR EQ PREVIOUS
*         TPSTL  TPCURC,NCSCHR    PUT UN-XLATED CHAR IN SPEC. CHAR
*         TPHSP2          #P+5#   INCREMENT UNCOMPR SCB, SKIP IF FULL 
*         NOPR   STOREXIT         STORE XLATED CHAR 
* 
*  #P+1#
          JUMP   HSB900,RTN  -    XMIT BLOCK FULL 
* 
*  #P+2#
          SKIP   HB540       -    PREPARE FOR LINE FOLD 
* 
*  #P+3#
          STATE  HSB550,EXIT -    GO LOOK FOR THIRD COMPRESSED CHAR 
* 
*  #P+4#
          SKIP   HB524       -    GO END THE LINE 
* 
*  #P+5#
          STATE  HSB500,STOREXIT  SCB FULL, START NEW ONE 
* 
*  #P+6#
          TPSTL  TPCURC,NCSCHR    PUT UN-XLATED BLANK IN SPEC. CHAR 
          STATE  HSB710,EXIT -    GO LOOK FOR SECOND BLANK
* 
* * * *   PROCESS END OF LINE 
* 
HB524     TPRSTR TPSTRG      -    SCB WITH CURRENT STRING COUNT 
          TPINSR LEVEL1,CURNT     INSERT LAST SCB 
          JUMP   HSB850,RTN  -    END THIS RECORD 
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*        HSB540 - MAXIMUM WIDTH REACHED WHILE PROCESSING UNCOMPRESSED * 
*                  STRING.                                            * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
HB540     STORE              -    STORE TRANSLATED CHAR 
          TPHSP2 *+1         -    ADD LAST CHAR TO SCB
          TPRSTR TPSTRG      -    SCB WITH CORRECT STRING COUNT 
          TPINSR LEVEL1,CURNT     INSERT INTO LAST SCB POSITION 
          STATE  HSB800,EXIT -    END THIS RECORD 
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*         HSB550 - POSSIBLE COMPRESSED STRING...TEST FOR THIRD        * 
*                   MATCHING CHARACTER.                               * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
HB550     SPCHEQ HB556       -    SKIP IF EQUAL TO PREVIOUS CHAR
* 
          DCC    CCXSIZE,HB564    SKIP IF XMIT BUFFER FULL
          TPLD   NCSCHR,TPSAVE    TPSAVE IS 2ND MATCHING CHAR 
          SETRAN
          TPSTLC TPSAVE      -    XLATE/STORE 2ND MATCHING CHAR 
          RSTRAN
          TPRSTR TPCURC      -    RESTORE CURRENT CHAR
          CHARNE B9EOL,HB552 -    SKIP IF NOT EOL 
* 
          TPHSP2 *+1
          TPRSTR TPSTRG      -    CURRENT CHAR IS UNCOMPR SCB 
          TPINSR LEVEL1,CURNT     INSERT LAST SCB 
          JUMP   HSB850,RTN  -    END THIS RECORD 
* 
HB552     TPHSP2 HB554       -    SKIP IF STRING FULL 
          JUMP   HSB520      -    CONTINUE UNCOMPRESSED STRING
* 
HB554     SKIP   HB502       -    START A NEW STRING (NO EOL) 
* 
* * * *  CURRENT CHARACTER IS THIRD MATCHING CHARACTER. 
* * * *  TERMINATE THE UNCOMPRESSED STRING. 
* 
HB556     EQU    HB556(*) 
          TPDECR TPSTRG,1    -    SUBTRACT FOR THE FIRST CHARACTER OF 
*                            -    OF THE NEW (COMPRESSED) STRING
          TPRSTR TPSTRG      -    GET THE UNCOMPRESSED SCB W/COUNT
          CHARNE HNONCMP,HB558     SKIP IF STRING NOT EMPTY 
* 
* * * *  PREVIOUSLY STARTED STRING IS EMPTY.
* * * *  CHANGE THE SCB IN IT TO A COMPRESSION SCB. 
* 
          TPINSR LEVEL1,,HCMXCNB   INSERT SCB FOR MAX COMPRESSED
          SKIP   HB560
* 
* * * *  PREVIOUSLY STARTED STRING IS NOT EMPTY.
* 
HB558     EQU    HB558(*) 
          TPINSR LEVEL1,CURNT     STORE UNCOMPRESSD SCB W/CORRCT COUNT
          BKSPAC             -    DELETE THE MATCH CHARACTER
          TPMARK LEVEL1      -    CHECKPOINT NEW SCB LOCATION 
          ADDC   HCMXCNB     -    PUT MAXIMUM COMPRESSED SCB
          SETRAN
          TPSTRC TPCURC      -    XLATE/STORE CURRENT CHAR
          RSTRAN
* 
* * * *  FINISH UP PREPARATIONS FOR PROCESSING COMPRESSED STRING. 
* 
HB560     EQU    HB560(*) 
          TPST   TPCMPS,NCCRCS     MOVE COMPRESSED STRING SCB 
          TPLDL  NCCRCS,TPSTRG      TO STRING COUNTER W/COUNT OF 3
          DCC    CCWIDTH,HB562     SKIP IF LINE FULL
          STATE  HSB600,EXIT -    SET STATE TO PROCESS COMPRESSED 
*                            -    STRING
* * * *  LINE IS FULL 
* 
HB562     EQU    HB562(*) 
          TPRSTR TPSTRG      -    MOVE SCB W/STRNG COUNT TO CURR CHAR 
          TPINSR LEVEL1,CURNT     INSERT SCB W/CORRECT STRING COUNT 
          STATE  HSB800,EXIT -    PROCESS POSSIBLE LINE FOLD
* 
* * * *  THERE IS NO MORE ROOM IN THE TRANSMISSION BLOCK
* 
HB564     JUMP   HSB900,RTN  -    BUILD BLOCK TRAILER AT END OF PRE-
*                                   VIOUS RECORD. 
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*         HSB600 - COMPRESSED STRING                                  * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
HB600     SPCHEQ HB602       -    SKIP IF ANOTHER LIKE CHAR 
* 
* * * *   UNLIKE CHARACTER FOUND, END PREVIOUS LIKE STRING
* 
          TPRSTR TPSTRG      -    GET SCB W/STRING COUNT
          TPINSR LEVEL1,CURNT     INSERT SCB W/STRING COUNT 
          TPRSTR TPCURC      -    RESTORE CURRENT CHARACTER 
          SKIP   HB500       -    START A NEW STRING (TEST EOL) 
* 
* * * *   ANOTHER LIKE CHARACTER FOUND
* 
HB602     TPHSP2 HB604       -    SKIP IF STRING FULL 
          DCC    CCWIDTH,HB606,EXIT 
* 
* * * *   LIKE STRING FULL, START NEW STRING
* 
HB604     DCC    CCWIDTH,HB608    SKIP IF PAGE WIDTH REACHED
          STATE  HSB500,EXIT -    STRING FULL, START NEW ONE
* 
HB606     TPRSTR TPSTRG      -    GET SCB AS CURRENT CHAR 
          TPINSR LEVEL1,CURNT     INSERT SCB WITH CORRECT COUNT 
HB608     STATE  HSB800,EXIT -    PROCESS POSSIBLE LINE FOLD
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*         HSB710 - LOOK FOR SECOND BLANK                              * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
HB710     SPCHEQ HB716       -    SKIP IF SECOND BLANK FOUND
* 
          CHARNE B9EOL,HB712 -    SKIP IF BLANK NOR EOL 
          SKIP   HB7B0       -    PROCESS EOL AFTER BLANK 
* 
HB712     RSTBIT NCUOPS,MBBLNK    THIS IS NOT AN EMPTY LINE 
          DCC    CCXSIZE,HB744    SKIP IF XMIT BLOCK FULL 
          DCC    CCWIDTH,HB740    SKIP IF BLANK FILLS THE LINE
          ADDC   HCBLANK     -    STORE 2ND BLANK 
          TPHSP2 HB714       -    SKIP IF SCB FULL
          JUMP   HSB520      -    CONTINUE CURRENT STRING 
* 
HB714     SKIP   HB502       -    START A NEW STRING (NO EOL) 
* 
HB716     STATE  HSB730,EXIT -    GO LOOK FOR 3RD BLANK 
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*         HSB730 - LOOK FOR THIRD BLANK                               * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
HB730     SPCHEQ HB746       -    SKIP IF THIRD BLANK FOUND 
* 
          CHARNE B9EOL,HB732 -    SKIP IF BLANK NOR EOL 
          SKIP   HB7B0       -    PROCESS EOL AFTER BLANK 
* 
* * * *   THIRD CHAR IS NOT BLANK / EOL, GO INSERT TWO BLANKS 
* 
HB732     RSTBIT NCUOPS,MBBLNK    THIS IS NOT AN EMPTY LINE 
          DCC    CCXSIZE,HB744    SKIP IF XMIT BLOCK FULL 
          DCC    CCXSIZE,HB744    SKIP IF XMIT BLOCK FULL 
          DCC    CCWIDTH,HB740    SKIP IF ONE OR BOTH BLANKS
          DCC    CCWIDTH,HB740    FILL THE LINE 
          ADDC   HCBLANK     -    STORE 1ST BLANK 
          TPHSP2 HB738       -    SKIP IF SCB FULL
HB734     ADDC   HCBLANK     -    STORE 2ND BLANK 
          TPHSP2 HB736       -    SKIP IF SCB FULL
          JUMP   HSB520      -    CONTINUE CURRENT STRING 
* 
HB736     SKIP   HB502       -    START A NEW STRING (NO EOL) 
* 
HB738     DCC    CCXSIZE,HB744    SKIP IF XMIT BLOCK FULL 
          TPMARK LEVEL1      -    MARK SCB POSITION 
          ADDC   HCSCBF      -    STORE MAX UNCOMPR SCB 
          TPMOVE TPUSCB,TPSTRG    INITIALIZE STRING COUNT 
          SKIP   HB734       -    GO STORE 2ND BLANK
* 
HB740     SETBIT NCUOPS,MBSPCC    SET LINE FOLD FLAG
          TPRSTR TPSTRG      -    SCB WITH CURRENT STRING COUNT 
          CHARNE HNONCMP,HB742    SKIP IF STRING NOT EMPTY
          BKSPAC             -    REMOVE EMPTY SCB
          JUMP   HSB810,RTN  -    FOLD THE LINE 
* 
HB742     TPINSR LEVEL1,CURNT     INSERT UNCOMPR. SCB 
          JUMP   HSB810,RTN  -    FOLD THE LINE 
* 
HB744     JUMP   HSB900,RTN  -    XMIT BLOCK FULL 
* 
* * * *  CURRENT CHARACTER IS THIRD SEQUENTIAL BLANK. 
* * * *  TERMINATE CURRENT STRING OF UNCOMPRESSED CHARACTERS
* 
HB746     TPRSTR TPSTRG      -    STRING COUNT AS CURRENT CHAR
          CHARNE HNONCMP,HB748    SKIP IF STRING COUNT NOT ZERO 
* 
* * * *  STRING COUNT IS AT INITIAL VALUE. THESE 3 BLANKS ARE THE 
* * * *  START OF A STRING. 
* 
          BKSPAC             -    REMOVE THE UNCOMPRESSED SCB 
          ICC    CCXSIZE     -    MAINTAIN XMIT BLOCK SIZE
          SKIP   HB749
          SPC    1
* 
* * * *  CHANGE THE UNCOMPRESSED SCB FROM MAXIMUM VALUE TO CURRENT
* * * *  SIZE OF THE STRING.
* 
* 
HB748     TPINSR LEVEL1,CURNT     INSERT SCB W/CORRECT STRING COUNT 
* 
* * * *  INITIALIZE STRING COUNTER (TO THREE) 
* 
HB749     TPSUBR TPSTRG,TPSTRG     CLEAR BLANKS COUNTER 
          TPINCR TPSTRG,3    -    START W/THREE 
          STATE  HSB760,EXIT -    COUNT BLANKS
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*         HSB760 - COUNT BLANKS                                       * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
HB760     SPCHEQ HB762       -    SKIP IF ANOTHER BLANK FOUND 
* 
          CHARNE B9EOL,HB770 -    SKIP IF BLANK NOR EOL 
          JUMP   HSB850,RTN  -    GO END THE RECORD 
* 
HB762     TPHSP2 HB764       -    COUNT BLANKS, SKIP IF SCB FULL
          NOPR   EXIT        -    GET NEXT CHARACTER
* 
* * * *   STOP COMPRESSING IF MORE THAN 512 BLANKS FOUND
*         THIS TO ALLOW THE SOURCE TO BE RELEASED 
* 
HB764     TPST   TPSTRG,NCCRCS    LOAD BLANK COUNTER IN WORK WORD (CRC) 
          TSTMSK NCCRCS,$200,HB770 STOP AFTER MORE THAN 511 BLANKS
          NOPR   EXIT        -    CONTINUE BLANK COUNTING/COMPRESSION 
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*        HSB770 - BUILD BLANK SCB-S FROM BLANK COUNTER                * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
HB770     MVWORD NCWIDTH,NCCRCS   SAVE COUNTER FOR FOLDING PURPOSES 
          TPDCC  CCWIDTH,TPSTRG   DECR NR BLANKS FM ROOM LEFT ON LINE 
          SKIP   HB790       -    CCWIDTH < 0 , FOLD, BLANKS LEFT 
          SKIP   HB792       -    CCWIDTH = 0 , FOLD, NO BLANKS LEFT
*                            -    CCWIDTH > 0 , DONT FOLD 
* 
* * * *   NR BLANKS TO STORE FIT ON CURRENT LINE (NO FOLDING) 
* 
          RSTBIT NCUOPS,MBBLNK    LINE IS NOT ALL BLANK 
HB772     TPRSTR TPSTRG      -    CURRENT CHAR IS NR BLANKS REQUIRED
          CHARLS HMAXBLNK+1,HB774 LESS THAN MAX NR COMPR. BLANKS
          DCC    CCXSIZE,HB799    SKIP IF XMIT BLOCK FULL 
          ADDC   HCCBMX      -    STORE MAX COMPR. BLANK SCB
          TPSUBR TPMAXBL,TPSTRG   GET NR BLANKS LEFT
          SKIP   HB772       -    PROCESS THEM
* 
HB774     CHARLS 3,HB776     -    SKIP IF LESS THAN MINIMUM 
          SKIP   HB782       -    GO STORE BLANK SCB
* 
* * * *   BLANK COUNT IS LESS THAN MINIMUM (3) GO STORE BLANKS
* 
HB776     DCC    CCXSIZE,HB799
          TPMARK LEVEL1      -    MARK POSITION OF SCB
          ADDC   HCSCBF      -    STORE SCB FOR MAX UNCOMPRESSED
          CHARLS 2,HB778     -    SKIP IF 1 BLANK TO STORE
          DCC    CCXSIZE,HB799
          ADDC   HCBLANK     -    STORE A BLANK 
HB778     CHARLS 1,HB780     -    SKIP IF NO BLANK TO STORE 
          DCC    CCXSIZE,HB799
          ADDC   HCBLANK     -    STORE A BLANK 
* 
HB780     TPRSTR TPCURC      -    GET CURRENT NON-BLANK CHAR
          TPADDR TPUSCB,TPSTRG    INITIALIZE UNCOMPR. STRING CTR
*                            -    NOTE: SPECIAL CHAR IS BLANK 
          JUMP   HSB520      -    CONTINUE UNCOMPR. STRING
* 
* * * *   BLANK COUNT BETWEEN MINIMUM (3) AND MAXIMUM (31) STORE SCB
* 
HB782     DCC    CCXSIZE,HB799    MAINTAIN XMIT BLOCK SIZE
          DCC    CCXSIZE,HB799
          TPADDR TPBLNK,TPSTRG    FORM BLANK COMPRESSION SCB
          TPSTRC TPSTRG      -    STORE SCB 
          TPMARK LEVEL1      -    MARK POSITION OF SCB
          ADDC   HCSCBF      -    MAX UNCOMPR. SCB
          TPMOVE TPUSCB,TPSTRG    INITIALIZE STRING COUNT 
          TPRSTR TPCURC      -    GET NON-BLANK CHAR BACK 
*                            -    NOTE: SPECIAL CHAR IS BLANK 
          JUMP   HSB520      -    CONTINUE UNCOMPR. STRING
* 
HB784     JUMP   HSB540,RTN  -    GO FOLD THE LINE
* 
* * * *   NR OF BLANKS TO STORE CAUSE THE LINE TO FOLD
*         CALCULATE NR OF BLANKS TO GO ONTO THE NEXT LINE 
* 
HB790     TPLDR  NCCRCS,TPLBC     GET CCWIDTH PRIOR TO TPDCC (HB770)
          TPSUBR TPLBC,TPSTRG     GET NR OF BLANKS OVER WIDTH 
          TPMOVE TPSTRG,TPLBC     INTO TPLBC
* 
HB792     SETBIT NCUOPS,MBSPCC    SET LINE FOLD FLAG
          TSTMXF MXBLNKL,HB794    SKIP IF ALL BLANK LINE
          JUMP   HSB810,RTN  -    GO FOLD THE LINE
* 
HB794     DCC    CCXSIZE,HB799
          ADDC   HCCB03      -    STORE 3 BLANKS SCB
          JUMP   HSB810,RTN  -    GO FOLD THE LINE
* 
HB799     JUMP   HSB900,RTN  -    TERMINATE XMIT BLOCK
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
*        HSB7B0 - PROCESS EOL FOLLOWING A BLANK 
* 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
HB7B0   TPRSTR  TPSTRG  -    GET THE UNCOMPRESSED STRING COUNT
        CHARNE HNONCMP,HB7B2  SKIP IF STRING EXISTS 
          BKSPAC             -    DELETE THE SCB
        JUMP   HSB850,RTN  -    GO END THE RECORD 
* 
HB7B2     TPINSR LEVEL1,CURNT     INSERT SCB WITH CORRECT COUNT 
        JUMP   HSB850,RTN  -    GO END THE RECORD 
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*         HSB800 - POSSIBLE LINE FOLD (LINE WIDTH EXCEEDED)           * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
HB800     CHARNE B9EOL,HB802 -    SKIP IF NOT EOL 
          JUMP   HSB850,RTN  -    GO TO NORMAL RECORD TERMINATION.
* 
HB802     XLATE  $7F         -    TRANSLATE TO EBCDIC 
          CHARNE HCBLANK,HB804    SKIP IF NOT A BLANK 
          TPSTL  TPCURC,NCSCHR     SAVE BLANK AS SPECIAL CHARACTER
          TPSUBR TPSTRG,TPSTRG     SET BLANK COUNTER
          TPHSP2 *+1         -    TO ONE
          STATE  HSB760,EXIT -    CONTINUE COUNTING BLANKS
* 
* * * *  FIRST CHARACTER OF NEXT LINE IS NEITHER EOL NOR BLANK... 
* * * *   GO AHEAD AND FOLD THE LINE. 
* 
HB804     SETBIT NCUOPS,MBSPCC    SET LINE FOLD FLAG
          TPRSTR TPCURC      -    GET UN-XLATED CHAR
*         JUMP   HSB810,RTN  -    GO FOLD THE LINE (FALL THROUGH) 
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*        HSB810 - FOLD THE LINE                                       * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
HB810     ADDC   HCZERO      -    STORE ENDING SCB
          TPADDR TPCURWT,TPACCTG  ADD CURRENT ACCTG TO TOTAL FOR BLOCK
          TPMOVE TPLENGTH,TPDEFLH  UPDATE THE DEFINITE PAGE LENGTH
          DCC    CCXSIZE,HB860    SKIP IF XMIT BLOCK FULL 
          JUMP   HSB200      -    BUILD ANOTHER RECORD
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*        HSB850 - END RECORD ... EOL DETECTED                         * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
HB850     TSTMXF MXBLNKL,HB852      -    SKIP IF LINE IS ALL BLANKS 
        SKIP   HB854
         SPC   1
HB852     DCC    CCXSIZE,HB900    SKIP IF XMIT BLOCK FULL 
          ADDC   HCCB03      -    STORE BLANK SCB 
HB854     ADDC   HCZERO      -    ENDING SCB
          TPADDR TPCURWT,TPACCTG  ADD CURRENT ACCTG TO TOTAL FOR BLOCK
          TPMOVE TPLENGTH,TPDEFLH  UPDATE THE DEFINITE PAGE LENGTH
          DCC    CCXSIZE,HB860    SKIP IF XMIT BLOCK FULL 
          RSTBIT NCUOPS,MBSPCC    IF SET, TURN OFF
          STATE  HSB200,EXIT -    BUILD ANOTHER RECORD
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*         HSB860 - END OF LINE COINCIDES WITH END OF XMIT BLOCK       * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
HB860     RSTBIT NCUOPS,MBPRE     DONT CONVERT PREVIOUS SRCB
          JUMP   HSB950,RTN  -    GO BUILD TRNASMISSION TRAILER 
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
* RECORD BACKUP                                                       * 
*                                                                     * 
*         HSB900 - THIS ROUTINE BACKS UP THE POINTERS TO JUST BEFORE  * 
*                THE RCB WAS STORED. IT WAS FOUND THAT THIS RECORD    * 
*                WON'T FIT IN THIS TRANSMISSION BLOCK SO THE RECORD IS* 
*                ELIMINATED. THE CHARACTERS WILL BE RETRIEVED AGAIN   * 
*                FOR THE NEXT BLOCK BUT THE FIRST CHARACTER IN THIS   * 
*                RECORD HAD TO BE SAVED IN ORDER TO ACCESS AGAIN.     * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
          SPC    1
HB900     TPBKUP LEVEL2,SRC,DST   BACKUP THE POINTERS TO LAST RCB 
          TPMOVE TPFRST,TPCURC    FIRST CHAR IN CURRENT REGISTER
*         JUMP   HSB950,RTN  -    BUILD TRAILER (FALL THROUGH)
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
* BUILD TRAILER 
* 
*        HSB950 - THIS TRANSMISSION BLOCK IS TO BE TERMINATED,        * 
*               BUT THE FIRST CHARACTER FOR THE NEXT BLOCK IS GOTTEN  * 
*               FIRST, TO INSURE THAT THERE IS MORE SOURCE. IN CASE   * 
*               THE PREVIOUS CARRIAGE HAS TO BE CHANGED, THIS BLOCK   * 
*               WON'T BE TRANSMITTED IF END OF SOURCE AT THIS TIME.   * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
          SPC    1
HB950     ADDC   HCZERO      -    ENDING RCB
          TSTMXF MXWXPT,HB952     SKIP IF XPT WORKSTATION 
          ADDC   HCSYN       -    STORE SYN FOR NON-XPT W/S 
          SKIP   HB954
HB952     ADDC   HCDLE       -    STORE DLE FOR XPT W/S 
HB954     ADDC   HCETB       -    STORE ETB 
          ALNBUF HCFCAC      -    NEW BUFFER FOR ACCTG ONLY 
          SETFLG BFACCTG,CURN     SET BUFFER FLAG TO INDICATE ACCTG DATA
          RSTRAN             -    TURN OFF TRANSLATION
         TPSTLC TPACCTG      -    STORE ACCOUNTING
          TPSTRC TPACCTG     -    STORE ACCOUNTING
          TSTMXF MXENDIT,HB904    SKIP IF END-OF-JOB
          TPRSTR TPCURC      -    RESTORE CURRENT CHARACTER 
         JUMP  HSB100,RTN    -    BUILD HEADER
          SPC    1
HB904     TIBSWC             -    TERMINATE BUFFER
          RSTBIT NCUOPS,MBENDIT   TURN OFF END DATA FLAG
          STATE  HSB100      -    SET BUILD HEADER FOR NEXT ENTRY 
          TPEXIT             -    EXIT OUTPUT TEXT PROCESSING 
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*        HTXPRNT - HASP TEXT PROCESSING STATE TABLE FOR PRU     * 
*                 DATA OF THE TRANSPARENT PERSUASION                  * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
HPRTX     MAC    LB          -    MACRO TO CREATE STATE TABLE 
          EQU    HS"LB"(*-HTXPRNT)
          ADC    H"LB"
          EMC 
          SPC    1
          ENT    HTXPRNT
          EQU    HTXPRNT(*) 
          HPRTX  X000        -    00  END OF SOURCE 
          HPRTX  X010        -    01  DCD DROPPED (NOT USED)
          HPRTX  X020        -    02  EXCESS BUFFERS (NOT USED) 
          HPRTX  X030        -    03  BUFFER THRESHOLD (NOT USED) 
          HPRTX  X100        -    START OF TRANSMISSION BLOCK 
          HPRTX  X200        -    START OF RECORD 
          HPRTX  X950        -    BUILD TRAILER 
          HPRTX  X120        -    BUILD HEADER
          HPRTX  X500        -    START NEW STRING
          HPRTX  X520        -    UNCOMPRESSED STRING 
          HPRTX  X540        -    TEST THIRD EQUAL
          HPRTX  X600        -    COMPRESSED STRING 
          HPRTX  X800        -    END OF RECORD 
          HPRTX  X900        -    RECORD BACKUP 
          SPC    2
          EQU    HX120(HB120) 
          EQU    HX900(HB900) 
          EQU    HX950(HB950) 
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*         HSX000 - END OF SOURCE                                      * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
HX000     TSTMXF MXEOR+MXEOI,HX002  SKIP IF END OF JOB
          TPEXIT             -    EXIT UNTIL MORE SOURCE DATA 
          SPC    1
HX002     SETBIT NCUOPS,MBENDIT   END OF DATA FLAG
          STATLS HSX950+1,HX004    SKIP IF AT AN END-OF-RECRD STATE 
          JUMP   CURRENT     -    GO TO CURRENT STATE 
          SPC    1
HX004     TSTMXF MXEOI,HX006 -    SKIP IF EOI FLAG IS PRESENT 
          RSTBIT NCUOPS,MBENDIT   RESET END OF DATA FLAG
          TPEXIT             -    EXIT TEXT PROCESSING
* 
HX006     STATLS HSX200,HX100     SKIP IF NO HEADER BUILT 
          JUMP   HSX950,RTN  -    GO BUILD THE TRAILER
* 
          SPC    4
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*        HSX010 - RESERVED FOR DCD DROPPED (NOT APPLICABLE)           * 
*        HSX020 - RESERVED FOR EXCESS BUFFERS (NOT APPLICABLE)        * 
*        HSX030 - RESERVED FOR BUFFER THRESHOLD (NOT APPLICABLE)      * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
HX010     EQU    HX010(*) 
HX020     EQU    HX020(*) 
HX030     EQU    HX030(*) 
          TPEXIT
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*        HSX100 - BUILD TRANSMISSION BLOCK HEADER                     * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
HX100     GETBUF HCFCTB      -    GET FIRST/NEXT BUFFER 
          CSUB   HSX120,HSX200    BUILD HEADER
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*         HSX200 - START OF RECORD                                    * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
HX200     EQU    HX200(*) 
* 
* * * *  MAKE SURE THERE IS ROOM FOR AT LEAST THE RCB AND SRCB
* 
          DCC    CCXSIZE,HX206     SKIP IF NO ROOM  FOR RCB 
          DCC    CCXSIZE,HX206     SKIP IF NO ROOM  FOR SRCB
          TSTMXF MXENDIT,HX206    SKIP IF WE HAVE TO TERMINATE
          SKIP   HX208
* 
HX206     JUMP   HSX950,RTN  -    TERMINATE XMIT BLOCK
* 
* * * *  INITIALIZE RECORD RELATED FILE REGISTERS 
* 
HX208     TPSUBR TPCURWT,TPCURWT  CLEAR CURRENT ACCOUNTING WEIGHT 
          TPINCR TPCURWT,1   -    INITIALIZE IT TO 1
          TPMARK LEVEL2      -    MARK LOCATION OF RCB/SRCB 
          TPMOVE TPCURC,TPFRST     SAVE FIRST CHARACTER OF RECORD 
          TPSTRC TPRCB       -    STORE RCB 
          ADDC   HCXSRCB     -    STORE SRCB
* 
* * * *  GET READY TO PROCESS THE RECORD
* 
          INTCC  CCWIDTH     -    INITIALIZE WIDTH COUNTER
* 
* * * *  SET UP TO PROCESS DATA CHARACTER 
* 
          TPRSTR TPCURC      -    RESTORE CURRENT CHARACTER 
*         JUMP   HSX500,RTN  -    START STRING (FALL THROUGH) 
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*         HSX500 - START NEW STRING                                   * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
HX500     TSTMXF MXENDIT,HX502    SKIP IF AT END OF SOURCE
          SKIP   HX504       -    PROCESS CURRENT CHARACTER 
          SPC    1
HX502     JUMP   HSX800,RTN  -    END THE RECORD
          SPC    1
HX504     TPMARK LEVEL1      -    MARK SCB
          ADDC   HCSCBF      -    SCB FOR MAX UNCOMPRESSED CHARS
          TPMOVE TPUSCB,TPSTRG    INITIALIZE THE STRING COUNT 
          TPHSP2 *+1         -    AND INCREMENT BY 1
          TPSTL  TPCURC,NCSCHR     UPDATE THE SPECIAL CHAR
          DCC    CCXSIZE,HX508     DECREMENT TRANSMISSION SIZE FOR SCB
          DCC    CCXSIZE,HX508     DECREMENT FOR CHAR 
          CHARNE HCDLE,HX506 -    SKIP IF CURRNT CHARACTER IS NOT DLE 
          STORE              -    DOUBLE UP ON DLE-S FOR BSC
HX506     DCC    CCWIDTH,HX510    DECREMENT DEVICE WIDTH
          STATE  HSX520,STOREXIT  STORE FIRST CHAR, START COUNTING
          SPC    1
HX508     JUMP   HSX900,RTN  -    THIS RECORD WONT FIT IN THE XMIT BLK
          SPC    1
HX510     EQU    HX510(*) 
          STORE              -    STORE CURRENT CHARACTER 
          TPRSTR TPSTRG      -    SCB WITH CORRECT STRING COUNT 
          TPINSR LEVEL1,CURNT     INSERT INTO LAST SCB POSITION 
          JUMP   HSX800,RTN  -    PROCESS END OF RECORD 
          SPC    4
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*        HSX520 - UNCOMPRESSED STRING                                 * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
          SPC    1
HX520     TSTMXF MXENDIT,HX522    SKIP IF AT END OF SOURCE
          SKIP   HX524       -    PROCESS CURRENT CHARACTER 
          SPC    1
HX522     SKIP   HX534       -    PROCESS END OF SOURCE 
HX524     EQU    HX524(*) 
          DCC    CCXSIZE,HX530     DECREMENT XMISSION SIZE FOR CHAR 
          DCC    CCWIDTH,HX532     DECREMENT PAGE WIDTH 
          SPCHEQ HX536       -    SKIP IF CURRENT = LAST
          TPSTL  TPCURC,NCSCHR     UPDATE THE SPECIAL CHARACTER 
          CHARNE HCDLE,HX526 -    SKIP IF CURRNT CHARACTER IS NOT DLE 
          STORE              -    DOUBLE UP DLE-S FOR BSC 
HX526     TPHSP2 HX528       -    SKIP IF STRING FULL 
          NOPR   STOREXIT    -    STORE CHAR, GET NEXT
* 
HX528     STATE  HSX500,STOREXIT  STORE CHAR, START NEW STRING
* 
HX530     JUMP   HSX900,RTN  -    THIS RECORD DOESNOT FIT IN BLOCK
          SPC    1
HX532     TPHSP2 *+1         -    INCREMENT STRING COUNT
          STORE              -    STORE CURRENT CHARACTER 
          CHARNE HCDLE,HX534 -    SKIP IF NOT A DLE CHARACTER 
          STORE              -    DOUBLE UP DLE-S 
HX534     TPRSTR TPSTRG      -    SCB WITH CORRECT STRING COUNT 
          TPINSR LEVEL1,CURNT     INSERT INTO LAST SCB POSITION 
          JUMP   HSX800,RTN  -    END THIS RECORD 
          SPC    1
HX536     STATE  HSX540,EXIT -    LOOK TO COMPRESS CHARS
          SPC    4
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*         HSX540 - POSSIBLE COMPRESSED STRING...TEST FOR THIRD        * 
*                   MATCHING CHARACTER.                               * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
HX540     TSTMXF MXENDIT,HX542    SKIP IF AT END OF SOURCE
          SPCHEQ HX548       -    SKIP IF THIRD MATCHING CHARACTER
HX542     TPLD   NCSCHR,TPSAVE     NOT EQUAL - GET PREVIOUS CHAR
          TPRSTL TPSAVE      -    AS CURRENT CHARACTER
          STORE              -    STORE IT
          CHARNE HCDLE,HX544 -    SKIP IF PREV CHARACTER IS NOT DLE 
          STORE              -    DOUBLE UP ON DLE-S FOR BSC
HX544     TPRSTR TPCURC      -    RESTORE CURRENT CHAR
          TPHSP2 HX546       -    SKIP IF STRING FULL 
          JUMP   HSX520      -    CONTINUE UNCOMPR STRING 
* 
HX546     JUMP   HSX500,RTN  -    START A NEW STRING
* 
* * * *  CURRENT CHARACTER IS THIRD MATCHING CHARACTER. 
* * * *  TERMINATE THE UNCOMPRESSED STRING. 
* 
HX548     EQU    HX548(*) 
          TPDECR TPSTRG,1    -    SUBTRACT FOR THE FIRST CHARACTER OF 
*                            -    OF THE NEW (COMPRESSED) STRING
          TPRSTR TPSTRG      -    GET THE UNCOMPRESSED SCB W/COUNT
          CHARNE HNONCMP,HX550     SKIP IF STRING NOT EMPTY 
* 
* * * *  PREVIOUSLY STARTED STRING IS EMPTY.
* * * *  CHANGE THE SCB IN IT TO A COMPRESSION SCB. 
* 
          TPINSR LEVEL1,,HCMXCNB   INSERT SCB FOR MAX COMPRESSED
          SKIP   HX560
* 
* * * *  PREVIOUSLY STARTED STRING IS NOT EMPTY.
* 
HX550     EQU    HX550(*) 
          TPINSR LEVEL1,CURNT     STORE UNCOMPRESSD SCB W/CORRCT COUNT
          BKSPAC             -    DELETE THE MATCH CHARACTER
          TPRSTR TPCURC      -    RESTORE THE CURRENT CHARACTER 
          CHARNE HCDLE,HX552 -    SKIP IF CURRENT CHARACTER IS NOT DLE
          BKSPAC             -    DELETE THE DOUBLE-UP
HX552     TPMARK LEVEL1      -    CHECKPOINT NEW SCB LOCATION 
          DCC    CCXSIZE,HX564     SKIP IF NO ROOM FOR NEW SCB
          ADDC   HCMXCNB     -    PUT MAXIMUM COMPRESSED SCB
          STORE              -    STORE CURRENT CHARACTER 
          CHARNE HCDLE,HX560 -    SKIP IF NOT DLE 
          STORE              -    DOUBLE UP ON DLE-S FOR BSC
* 
* * * *  FINISH UP PREPARATIONS FOR PROCESSING COMPRESSED STRING. 
* 
HX560     EQU    HX560(*) 
          TPST   TPCMPS,NCCRCS     MOVE COMPRESSED STRING SCB 
          TPLDL  NCCRCS,TPSTRG      TO STRING COUNTER W/COUNT OF 3
          DCC    CCWIDTH,HX562     SKIP IF LINE FULL
          STATE  HSX600,EXIT -    SET STATE TO PROCESS COMPRESSED 
*                            -    STRING
* * * *  LINE IS FULL 
* 
HX562     EQU    HX562(*) 
          TPRSTR TPSTRG      -    MOVE SCB W/STRNG COUNT TO CURR CHAR 
          TPINSR LEVEL1,CURNT     INSERT SCB W/CORRECT STRING COUNT 
          JUMP   HSX800,RTN  -    PROCESS END OF RECORD 
* 
* * * *  THERE IS NO MORE ROOM IN THE TRANSMISSION BLOCK
* 
HX564     JUMP   HSX900,RTN  -    BUILD BLOCK TRAILER AT END OF PRE-
*                                   VIOUS RECORD. 
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*         HSX600 - COMPRESSED STRING                                  * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
HX600     TSTMXF MXENDIT,HX602    SKIP IF AT END OF SOURCE
          SKIP   HX604       -    PROCESS CURRENT CHARACTER 
          SPC    1
HX602     SKIP   HX606       -    PROCESS END OF SOURCE 
          SPC    1
HX604     SPCHEQ HX608       -    SKIP IF EQUAL TO LAST CHAR
HX606     TPRSTR TPSTRG      -    GET SCB W/STRING COUNT
          TPINSR LEVEL1,CURNT     INSERT SCB W/STRING COUNT 
          TPRSTR TPCURC      -    RESTORE CURRENT CHARACTER 
          JUMP   HSX500,RTN  -    START NEW STRING
          SPC    1
HX608     TPHSP2 *+1         -    INCREMENT STRING COUNT
          TPRSTR TPSTRG      -    STRING COUNT AS CURRENT CHAR
          DCC    CCWIDTH,HX612    DECREMENT WIDTH, SKIP IF AT END 
          CHARLS HCMXCNB,HX610    SKIP IF STRING NOT AT MAX 
          STATE  HSX500,EXIT -    START NEW STRING
          SPC    1
HX610     NOPR   EXIT        -    CONTINUE COMPRESSED STRING
          SPC    1
HX612     EQU    HX612(*) 
          TPINSR LEVEL1,CURNT     STORE SCB W/CORRECT COUNT 
          JUMP   HSX800,RTN  -    PROCESS END OF RECORD 
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*        HSX800 - END OF RECORD                                       * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
HX800     EQU    HX800(*) 
          ADDC   HCZERO      -    ENDING SCB
          TPADDR TPCURWT,TPACCTG  ADD CURRENT ACCTG TO TOTAL FOR BLOCK
          DCC    CCXSIZE,HX812    DECREMENT FOR ENDING SCB
          STATE   HSX200,EXIT     BUILD ANOTHER RECORD
          SPC    1
HX812     STATE   HSX950,EXIT     BUILD TRAILER 
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*         HSITPS - HASP INTERACTIVE TEXT PROCESSING STATES FOR IVT    * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
          SPC    1
HSITP     MAC    LB,P2
          IFC    "P2",EQ, 
          EQU    HS"LB"(*-HSITPS) 
          EIF 
          ADC    H"LB"
          EMC 
          SPC    2
          EQU    HSITPS(*)
          ENT    HSITPS 
          SPC    1
          HSITP  I000,*      -    END OF SOURCE 
          HSITP  BRESERV,*   -    SKIP STATE 01 
          HSITP  BRESERV,*   -    SKIP STATE 02 
          HSITP  BRESERV,*   -    SKIP STATE 03 
          HSITP  I100,*      -    INITIAL ENTRY 
          HSITP  I200        -    START LOGICAL LINE, PROCESS FE
          HSITP  B950,*      -    BUILD TRANSMISSION BLOCK TRAILER
          HSITP  B120,*      -    BUILD TRANSMISSION BLOCK HEADER 
          HSITP  I300        -    PROCESS FIRST CHAR OF RECORD
          HSITP  I400        -    PROCESS FIRST CHAR FOLDED LINE
          HSITP  I500        -    PROCESS FIRST CHAR OF STRING
          HSITP  I600        -    PROCESS REST OF STRING
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*         HSI000 - END OF SOURCE REACHED                              * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
          SPC    1
HI000     RSTRAN             -    RESET TRANSLATION 
          SETMXF MXENDIT+MXEIA    SET EXIT AFTER TRAILER BUILD
          STATLS HSI600,HI010     SKIP IF NOT IN MIDDLE OF STRING 
          TPRSTR TPSTRG      -    GET STRING COUNT AS CURRENT CHAR
          TPINSR LEVEL1,CURNT     INSERT CORRECT SCB
          ADDC   HCZERO      -    TERMINATE RECORD
          JUMP   HSB950,RTN  -    BUILD TRAILER 
* 
HI010     STATLS HSI400,HI020     SKIP IF RECORD NEED NOT BE TERMINATED 
          ADDC   HCZERO      -    TERMINATE RECORD
          JUMP   HSB950,RTN  -    BUILD TRAILER 
* 
HI020     STATLS HSI300,HI030     SKIP IF WE DONT HAVE AN EMPTY RECORD
          ADDC   HCBSCB      -    STORE TWO COMPRESSED BLANKS 
          ADDC   HCZERO      -    TERMINATE RECORD
          JUMP   HSB950,RTN  -    BUILD TRAILER 
* 
HI030     STATLS HSI200,HI040     SKIP IF HEADER NOT EVEN BUILD 
          JUMP   HSB950,RTN  -    BUILD TRAILER 
* 
HI040     STATE  HSB950 
          JUMP   HSB120,RTN  -    BUILD HEADER, RETURN TO BUILD TRAILER 
          SPC    4
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*         HSI100 - INITIAL ENTRY FOR INTERACTIVE OUTPUT TP            * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
          SPC    1
HI100     SETPAR             -    PERFORM PARITY STTIPPING
          GETBUF HCFCTB      -    GET FIRST/NEXT BUFFER 
          CSUB   HSB120,HSI200    BUILD HEADER
          EJT 
* 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*         HSI200 - STORE RCB AND SRCB IN DESTINATION, PROCESS FE      * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
          SPC    1
HI200     INTCC  CCWIDTH     -    INITIALIZE PAGE-WIDTH COUNTER 
          RSTRAN             -    RESET TRANSLATION FOR -TPSTRC-
          TPMARK LEVEL2      -    MARK SRC/DST IN CASE FULL XMIT BUFFER 
          DCC    CCXSIZE,HI260     SKIP IF XMISSION BUFFER FULL 
          TPSTRC TPRCB       -    STORE RCB 
          TPRSTR TPCURC      -    RESTORE THE CURRENT CHARACTER 
          DCC    CCXSIZE,HI260     SKIP IF XMISSION BUFFER FULL 
          ADDC   HCIASRCB    -    STORE SRCB
          TSTMXF MXSPCC+MXSUP,HI210 SKIP IF NO FE OR FOLDED LINE
          TPSUBR TPSAVE,TPSAVE
          SKIP   HI220       -    SKIP IF FORMAT EFFECTOR PRESENT 
HI210     RSTBIT NCUOPS,MBSPCC
          JUMP   HSI300      -    START NEW RECORD
* 
HI220     CHARNE HCTRPLSPC,HI230
          TPINCR TPSAVE,4    -    ALLOW FOR 4 CHARS 
          ADDC   HCBSCB      -    STORE SCB FOR 2 BLANKS
          ADDC   HCZERO      -    TERMINATE BLANK RECORD
          TPSTRC TPRCB       -    STORE RCB 
          ADDC   HCIASRCB    -    STORE SRCB
          SKIP   HI234       -    STORE ANOTHER BLANK LINE
* 
HI230     CHARNE HCDBLSPC,HI250 
HI234     TPINCR TPSAVE,4    -    ALLOW FOR 4 CHARS 
          ADDC   HCBSCB      -    STORE SCB FOR 2 BLANKS
          ADDC   HCZERO      -    TERMINATE BLANK RECORD
          TPSTRC TPRCB       -    STORE RCB 
          ADDC   HCIASRCB    -    STORE SRCB
* 
HI250     TPDCC  CCXSIZE,TPSAVE   ADJUST XMIT BLOCK COUNT 
          SKIP   HI700
HI260     SKIP   HI700       -    XMIT BLOCK FULL 
          STATE  HSI300,EXIT -    DISCARD FE, GET 1ST CHAR
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*         HSI300 - PROCESS FIRST CHAR FOR NEW RECORD, INSERT SCB      * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
          SPC    1
HI300     CHARNE HCUS,HI310 
          DCC    CCXSIZE,HI320     SKIP IF XMISSION BUFFER FULL 
          ADDC   HCBSCB      -    STORE RCB FOR 2 BLANKS (EMPTY RECRD)
          DCC    CCXSIZE,HI320     SKIP IF XMISSION BUFFER FULL 
          ADDC   HCZERO      -    TERMINATE CURRENT RECORD
          STATE  HSI200,EXIT -    PROCESS NEXT LOGICAL LINE 
* 
HI310     SKIP   HI510       -    START A NEW STRING
* 
HI320     SKIP   HI700       -    TERMINATE XMIT BUFFER, START NEW ONE
          SPC    4
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*         HSI400 - PROCESS FOLDED LINE                                * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
          SPC    1
HI400     ADDC   HCZERO      -    TERMINATE CURRENT STRING
          DCC    CCXSIZE,HI410     SKIP IF XMISSION BUFFER FULL 
          SKIP   HI420       -    XMISSION BUFFER IS NOT FULL 
HI410     ICC    CCXSIZE     -    MAKE THIS RECORD FIT
HI420     CHARNE HCUS,HI430  -    SKIP IF THIS IS NOT US
          STATE  HSI200,EXIT -    SKIP US, PROCESS NEXT FE
* 
HI430     SETBIT NCUOPS,MBSPCC    NO FE AFTER FOLDED LINE 
          JUMP   HSI200,RTN  -    NO US, REALLY FOLD THE LINE NOW 
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*         HSI500 - PROCESS FIRST CHAR FOR NEW STRING, INSERT SCB      * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
          SPC    1
HI500     CHARNE HCUS,HI510  -    SKIP IF NOT END OF LINE 
          STATE  HSI200      -    PROCESS NEXT LOGICAL LINE 
          RCHAR  HCZERO      -    TERMINATE CURRENT STRING
          SKIP   HI530       -    GO STORE ZERO SCB 
          SPC    4
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * 
*                                                                     * 
*         HI510 - START A NEW STRING BY INSERTING SCB                 * 
*                                                                     * 
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * 
          SPC    1
HI510     DCC    CCWIDTH,HI520     SKIP IF PHYSICAL LINE FULL 
          DCC    CCXSIZE,HI700     SKIP IF XMISSION BUFFER FULL 
          TPMARK LEVEL1      -    MARK SCB
          ADDC   HCSCBF      -    SCB FOR MAXIMUM UNCOMPRESSED CHARS
          TPMOVE TPUSCB,TPSTRG     INITIALIZE STRING COUNT
          TPHSP2 *+1         -    AND INCREMENT BY 1
          SETRAN             -    SET TRANSLATION 
          DCC    CCXSIZE,HI700     SKIP IF XMISSION BUFFER FULL 
          STATE  HSI600,STOREXIT   PROCESS REST OF LINE 
* 
HI520     STATE  HSI400      -    PROCESS FOLDED LINE (IF ANY)
          ADDC   HCSCB1      -    SCB FOR SINGLE UNCOMPRESSED CHAR
HI530     DCC    CCXSIZE,HI650     MAINTAIN XMISSION BUFFER SIZE
          DCC    CCXSIZE,HI650,STOREXIT 
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*         HSI600 - PROCESS REST OF STRING                             * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
          SPC    1
HI600     CHARNE HCUS,HI610  -    SKIP IF NOT A US
          STATE  HSI200      -    PROCESS NEXT LOGICAL LINE 
          TPSUBR TPCURC,TPCURC     ZERO SCB TO TERMINATE CURRENT STRING 
          SKIP   HI640       -    INSERT SCB, STORE ZERO SCB
* 
HI610     DCC    CCWIDTH,HI630    SKIP IF LINE FULL 
          TPHSP2 HI620       -    SKIP IF STRING FULL 
          DCC    CCXSIZE,HI700,STOREXIT 
* 
HI620     STATE  HSI500      -    START NEW STRING
          DCC    CCXSIZE,HI700,STOREXIT 
* 
HI630     TPHSP2 *+1         -    INCREMENT STRING COUNT
          STATE  HSI400 
HI640     TPRSTR TPSTRG      -    STRING COUNT AS CURRENT CHAR
          RSTRAN             -    RESET TRANSLATION FOR -TPINSR-
          TPINSR LEVEL1,CURNT     INSERT CORRECT SCB
          SETRAN             -    SET TRANSLATION 
          TPRSTR TPCURC      -    RESTORE CURRENT CHARACTER 
          DCC    CCXSIZE,HI650,STOREXIT 
* 
HI650     ICC    CCXSIZE,STOREXIT  MAKE THIS RECORD FIT IN XMIT BUFFER
          SPC    4
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * 
*                                                                     * 
*         HI700 - SKIPPED TO IF TRANSMISSION BUFFER FULL AND          * 
*                 END OF RECORD NOT REACHED WITHIN TWO CHARS          * 
*                                                                     * 
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * 
          SPC    1
HI700     TPBKUP LEVEL2,SRC,DST    BACKUP SRC/DST PRIOR TO RCB
          STATE  HSI200      -    RETURN TO PROCESS RCB AFTER 
          JUMP   HSB950,RTN  -    TRAILER AND HEADER BUILD
          SPC    4
          END 
