*COMDECK 3270TPSP 
******************************************************* 
*                                                     * 
*         3270 TIP OUTPUT STATE PROGRAMS              * 
*                                                     * 
******************************************************* 
          SPC    3
          NAM    TP3270 
          SPC    3
          NLS 
*CALL MUXMACROS 
*CALL STPMACROS 
          LST 
*CALL REL6CONST 
          EJT 
******************************************************* 
*                                                     * 
*         3270 TIP  DEFINITION OF CONSTANTS           * 
*                                                     * 
******************************************************* 
          SPC    2
* 
* * * *   EBCDIC CHARACTER EQUATIONS
* 
          EQU    CSTX($02)   -     START-OF-TEXT
          EQU    CETX($03)   -     END-OF-TEXT
          EQU    CESC($27)   -     ESCAPE 
          EQU    CLPAD($55)  -     LEADING-PAD
          EQU    CTPAD($FF)  -     TRAILING-PAD 
          EQU    CSYN($32)   -     EBCDIC-SYNC
          EQU    CWRT($F1)   -     NORMAL-WRITE COMMAND 
          EQU    CEWRT($F5)  -     ERASE-WRITE COMMAND
          EQU    CEWRTA($7E)      ERASE/WRITE ALTERNATE COMMAND 
          EQU    CIWCC($C3)  -     INTERACTIVE WRITE-CONTROL CHARACTER
          EQU    CRA($3C)    -     REPEAT-TO-ADDRESS ORDER
          EQU    CSBA($11)   -     SET-BUFFER-ADDRESS ORDER 
          EQU    CSF($1D)    -     START-FIELD ORDER
          EQU    CIC($13)    -     INSERT-CURSOR ORDER
          EQU    CATT($40)   -     NORMAL-DISPLAY ATTRIBUTE-CHAR
          EQU    CIATT($44)  -     INTENSIFIED-DISPALY ATTRIBUTE-CHAR 
          EQU    CNUL(0)     -     NULL FOR REPEAT-TO-ADDRESS 
          EQU    CO($D6)     -     CHARACTER O
          EQU    CV($E5)     -     CHARACTER V
          EQU    CE($C5)     -     CHARACTER E
          EQU    CR($D9)     -     CHARACTER R
          EQU    CDOT($4B)   -     CHARACTER .
* 
* * * *   ASCII CHARACTER EQUATIONS 
* 
          EQU    CANUL($00)  -     NULL 
          EQU    CASOH($01)  -     START-OF-HEADER
          EQU    CAACK($06)  -     POSITIVE ACKNOWLEDGE 
          EQU    CALF($0A)   -     LINE-FEED
          EQU    CACR($0D)   -     CARRIAGE-RETURN
          EQU    CANAK($15)  -     NEGATIVE ACKNOWLEDGE 
          EQU    CASYN($16)  -     ASCII-SYNC 
          EQU    CAETB($17)  -     END-TRANSMISSION-BLOCK 
          EQU    CAUS($1F)   -     UNIT-SEPARATOR 
          EQU    CAWRT($31)  -     WRITE COMMAND
          EQU    CAEWRT($35) -     ERASE-WRITE COMMAND
          EQU    CAEUNPR($3F)      ERASE-UNPROTECTED COMMAND
          EJT 
******************************************************* 
*                                                     * 
*         3270 TIP  DEFINITION OF MUX LCB EQUATES     * 
*                                                     * 
******************************************************* 
          SPC    2
* 
* * * *   TEXT-PROCESS-CONTROL-BLOCK FLAGS (NCUOPS) 
* 
          EQU    MFXPT(NCUOP1)
          EQU    MFEWRT(NCUOP2) 
          EQU    MFRA(NCUOP3) 
          EQU    MFSBA(NCUOP4)
          EQU    MFIC(NCUOP5) 
          EQU    MFOVER(NCUOP6) 
          EQU    MFALT(NCUOP7)    ERASE/WRITE ALTERNATE FLAG
* 
* * * *   FILE REGISTERS (WORDS 16-31 OF TPCB)
* 
          EQU    FRCURC(0)
          EQU    FRWORK(4)
          EQU    FRRESULT(5)
          EQU    FRRA(6)
          EQU    FRSBA(7) 
          EQU    FRIC(8)     -     INSERT-CURSOR ADDRESS
          EQU    FRFLCNTR(9) -     FOLDED-LINES COUNTER 
          EQU    FRLNCNTR(10)      LINE COUNTER FOR PAGE-WAIT 
* 
* * * *   TEXT-PROCESS-CONTROL-BLOCK (WORDS 0-15 OF TPCB) 
* 
          EQU    NCCNT1($4)  -     COUNT 1 (RIGHT)
          EQU    NCSCHR($8)  -     SPECIAL CHARACTER (LEFT) 
          EQU    NCCRCS($9)  -     CRC ACCUMULATOR
          EQU    NCCNT2($A)  -     COUNT 2
          EQU    NCZERO($F)  -     ZERO WORD
* 
* * * *   COUNTERS
* 
          EQU    CCLL(1)     -     LINE LENGTH COUNTER
          EQU    CCSF(2)     -     SYNC FILL COUNTER
* 
* * * *   BUFFER FLAGS
* 
          EQU    BF3TEXTPR(2) 
* 
* * * *   TEXT-PROCESSING EXIT-REASONS
* 
          EQU    US(1)       -     UNIT-SEPARATOR DETECTED
          EQU    CRLF(2)     -     CR/LF SEQUENCE DETECTED
          EQU    DONE(4)     -     TEXT-PROCESSING COMPLETED
          EJT 
          EJT 
******************************************************* 
*                                                     * 
*         3270 TIP OUTPUT STATE POINTER TABLE EBCDIC  * 
*                                                     * 
******************************************************* 
          SPC    2
          STATPN TP327E       DECLARE NAME OF STATE-PROGRAM-TABLE 
* 
          STATPT TP327E,FINISH
          STATPT TP327E,IGNR
          STATPT TP327E,IGNR1,IGNR
          STATPT TP327E,IGNR2,IGNR
          STATPT TP327E,HEADER
          STATPT TP327E,REENTER 
          STATPT TP327E,TEXT
          STATPT TP327E,TRAILER 
          EJT 
******************************************************* 
*                                                     * 
*         3270 TIP OUTPUT STATE PROGRAMS              * 
*                                                     * 
******************************************************* 
          SPC    2
******************************************************* 
*         IGNORE STATE                                * 
******************************************************* 
* 
          STATPR IGNR 
*         *********** 
* 
          JUMP   CURRENT     -     RETURN TO CURRENT STATE
          EJT 
******************************************************* 
*         BUILD HEADER                                * 
******************************************************* 
* 
          STATPR HEADER 
*         ************* 
* 
          RSTRAN
          ADDC   CLPAD       -     BUILD HEADER 
          ADDC   CSYN 
          ADDC   CSYN 
          ADDC   CSYN        -     INSERT THREE LEADING SYNCS 
          ADDC   CSTX        -     INSERT START-OF-TEXT 
          INTCC  CCSF        -     INITIALIZE SYNC-FILL COUNTER 
          INTCRC ZCRC        -     INITIALIZE CRC TO ZERO 
          RPLACE CESC,CRCA   -     INSERT ESCAPE-CHARACTER
          SETFLG BF3TEXTPR,FRST 
          TSTMXF MFXPT,HEAD1 -     SKIP IF TRANSPARENT TEXT 
          SKIP   HEAD6       -     NON-TRANSPARENT OUTPUT 
* 
* * * *   TRANSPARENT OUTPUT, VERIFY COMMAND-CODE 
* 
HEAD1     TPRSTR FRCURC      -     RESTORE ORIGINAL SOURCE-CHARACTER
          SETRAN
          STATE  TEXT,CRCSTOREX 
* 
* * * *   CONTINUE FOR NON-TRANSPARENT TEXT 
* 
HEAD6     TSTMXF MFEWRT,HEAD7      SKIP IF ERASE-WRITE NEEDED 
          RPLACE CWRT,CRCA   -     INSERT NORMAL WRITE
          SKIP   HEAD8
HEAD7     TSTMXF MFALT,HEAD7A     JIF - ALTERNATE WRITE 
          RPLACE CEWRT,CRCA       INSERT ERASE/WRITE NORMAL 
          SKIP   HEAD8
HEAD7A    RPLACE CEWRTA,CRCA      INSERT ERASE/WRITE ALTERNATE
HEAD8     RPLACE CIWCC,CRCA  -     INSERT INTERACTIVE WCC 
*         JUMP   REENTER     -     SEE IF RA/SBA INSERTION NEEDED 
          EJT 
******************************************************* 
*         REENTER TP, INSERT SBA/RA/IC/OVER.. IF REQ  * 
******************************************************* 
* 
          STATPR REENTER
*         **************
* 
          RSTRAN
          TSTMXF MFSBA,RENTR2      SKIP IF NEED TO INSERT SBA-SEQUENCE
          SKIP   RENTR4 
* 
* * * *   INSERT SET-BUFFER-ADDRESS ORDER TO ADVANCE TO NEW LINE
* 
RENTR2    RPLACE CSBA,CRCA   -     INSERT SBA ORDER-CODE
          TPSTLC FRSBA,CRCA  -     INSERT LEFT BUFFER-ADDRESS 
          TPSTRC FRSBA,CRCA  -     INSERT RIGHT BUFFER-ADDRESS
          TSTMXF MFIC,RENTR4 -     NO ATTR-CHAR, IC WILL STORE IT 
          RPLACE CSF,CRCA    -     INSERT START-FIELD ORDER 
          RPLACE CATT,CRCA   -     INSERT ATTRIBUTE-CHARACTER 
RENTR4    TSTMXF MFRA,RENTR5 -     SKIP IF NEED TO INSERT RA-SEQUENCE 
          SKIP   RENTR6      -     COMPLETE THIS STATE
* 
* * * *   INSERT REPEAT-TO-ADDRESS ORDER TO CLEAR PART OF SCREEN
* 
RENTR5    RPLACE CRA,CRCA    -     INSERT SBA ORDER-CODE
          TPSTLC FRRA,CRCA   -     INSERT LEFT BUFFER-ADDRESS 
          TPSTRC FRRA,CRCA   -     INSERT RIGHT BUFFER-ADDRESS
          RPLACE CNUL,CRCA   -     INSERT NULL-CHARACTER
          RPLACE CSF,CRCA    -     INSERT START-FIELD ORDER 
          RPLACE CATT,CRCA   -     INSERT ATTRIBUTE-CHARACTER 
RENTR6    TSTMXF MFIC,RENTR7 -     SKIP IF INSERT-CURSOR ORDER NEEDED 
          SKIP   RENTRA      -     DONT INSERT CURSOR 
* 
* * * *   INSERT INSERT-CURSOR ORDER AT END OF TRANSMISSION 
* 
RENTR7    RPLACE CSBA,CRCA   -     INSERT SET-BUFFER-ADDRESS ORDER
          TPSTLC FRIC,CRCA   -     INSERT LEFT BUFFER-ADDRESS 
          TPSTRC FRIC,CRCA   -     INSERT RIGHT BUFFER-ADDRESS
          RPLACE CSF,CRCA    -     INSERT START-FIELD ORDER 
          TSTMXF MFOVER,RENTR8     NEED TO INSERT OVER.. AT END PAGE
          SKIP   RENTR9      -     DONT INSERT OVER.. 
* 
* * * *   INSERT OVER.. AT END OF PAGE
* 
RENTR8    RPLACE CIATT,CRCA  -     INTENSIFIED DISPLAY FOR OVER.. 
          RPLACE CO,CRCA     -     O
          RPLACE CV,CRCA     -       V
          RPLACE CE,CRCA     -         E
          RPLACE CR,CRCA     -           R
          RPLACE CDOT,CRCA   -             .
          STORE  CRCA        -               .
          RPLACE CSF,CRCA    -     END FIELD WITH THE OVER.. MESSAGE
* 
RENTR9    RPLACE CATT,CRCA   -     INSERT ATTRIBUTE-CHARACTER 
          RPLACE CIC,CRCA    -     INSERT-CURSOR ORDER
          JUMP   TRAILER     -     INSERT-CURSOR IMPIES DONE
* 
RENTRA    RSTMXF MFRA+MFSBA  -     RESET MUX-FLAGS
          INTCC  CCLL        -     RESET LINE-LENGTH COUNTER
          SETRAN
          STATE  TEXT,EXIT   -     SKIP 1ST CHARACTER, PROCESS TEXT 
          EJT 
******************************************************* 
*         PROCESS XPT AND NON-XPT TEXT                * 
******************************************************* 
* 
          STATPR TEXT 
*         *********** 
* 
          CHARLS CAUS+1,TEXT4      SKIP IF SPECIAL CHARACTER
TEXT1     TSTMXF MFXPT,TEXT3 -     SKIP IF TRANSPARENT TEXT 
TEXT2     DCC1   TEXTE       -     COUNT CHARACTERS ON CURRENT LINE 
TEXT3     DCC2   TEXTF,CRCSTOREX   SKIP IF SYNC-FILL NEEDED 
* 
* * * *   REPLACE SPECIAL PROTOCOL-CHAR BY NULL FOR PROTECTION
* 
TEXT4     CHARLS CAETB+1,TEXT5     SKIP WITH POSSIBLE INVALID CHAR
          SKIP   TEXT8       -     ALLOWED CHAR, CHECK FOR IVT-CHAR 
TEXT5     CHARLS CANAK,TEXT6 -     SKIP IF NOT NAK,SYNC OR ETB
          CHARNE CASYN,TEXT7 -     REPLACE ETB OR NAK BY NULL 
          ADDC   CSYN,EXIT   -     STORE SYNC WITHOUT ADDING TO CRC 
TEXT6     CHARLS CAACK+1,TEXT7     REPLACE SOH,STX,ETX,EOT,ENQ OR ACK 
          SKIP   TEXT8       -     ALLOWED CHAR, CHECK FOR IVT-CHAR 
TEXT7     RCHAR  CNUL        -     REPLACE BAD CHARACTER BY NULL
          SKIPB  TEXT1       -     UPDATE COUNTERS AND EXIT 
TEXT8     TSTMXF MFXPT,TEXTA -     SKIP IF TRANSPARENT TEXT 
* 
* * * *   LOOK FOR SPECIAL IVT-CHARACTERS 
* 
          CHARNE CAUS,TEXTB  -     SKIP IF NOT A UNIT-SEPARATOR 
          TPINCR FRRESULT,US -     UNIT-SEPARATOR DETECTED
TEXT9     STATE  REENTER     -     PRESET STATE TO REENTER
          TPEXIT
TEXTA     CHARNE CALF,TEXTA1 -     SKIP IF NOT A LINE-FEED
          NOPR   EXIT        -     IGNORE LF
TEXTA1    SKIPB  TEXT3       -     STORE THE CHARACTER
TEXTB     CHARNE CALF,TEXTC  -     SKIP IF NOT A LINE-FEED
          TPINCR FRRESULT,CRLF     LINE-FEED DETECTED 
          SKIPB  TEXT9       -     SKIP TO EXIT TP
TEXTC     CHARNE CACR,TEXTD  -     SKIP IF NOT A CARRIAGE-RETURN
          SKIPB  TEXT3       -     STORE CARRIAGE-RETURN
TEXTD     SKIPB  TEXT2       -     SKIP FOR NON-TRANSPARENT TEXT
* 
* * * *   PROCESS OVERFLOWED COUNTER(S) 
* 
TEXTE     INTCC  CCLL        -     RESET COUNT OF CURRENT LINE-LENGTH 
          TPINCR FRFLCNTR,1  -     COUNT FOLDED LINES 
          RPLACE CNUL,CRCA   -     INSERT NULL TO ALLIGN WITH ATT-CHAR
          DCC    CCLL,TEXTE5 -     ACCOUNT FOR NULL CHARACTER 
TEXTE5    TPRSTR FRCURC      -     RESTORE ORIGINAL CHARACTER 
          SKIPB  TEXT3       -     MAINTAIN SYNC-FILL COUNTER 
* 
TEXTF     ADDC   CSYN 
          ADDC   CSYN        -     ADD TWO SYNC-CHARACTERS FOR SYNC-FILL
          INTCC  CCSF,CRCSTOREX    RESET COUNTER AND STORE CHAR 
          EJT 
******************************************************* 
*         BUILD TRAILER                               * 
******************************************************* 
* 
          STATPR TRAILER
*         **************
* 
          RSTRAN
          RPLACE CETX,CRCA   -     STORE ETX
          TPLD   NCCRCS,FRWORK     GET CRC
          TPSTLC FRWORK      -     STORE LEFT BYTE OF CRC 
          TPSTRC FRWORK      -     STORE RIGHT BYTE OF CRC
          ADDC   CTPAD
          ADDC   CTPAD       -     ADD PAD CHARS
          TIBSWC 0           -     TERMINATE DESTINATION-BUFFERS
          STATE  HEADER      -     PRESET STATE FOR NEXT TP 
          TPINCR FRRESULT,DONE     DONE WITH TP-STATES
          TPEXIT
          EJT 
******************************************************* 
*         END-OF-SOURCE DETECTED                      * 
******************************************************* 
* 
          STATPR FINISH,TRAILER 
*         ********************* 
* 
          EJT 
          EJT 
******************************************************* 
*                                                     * 
*         3270 TIP POST INPUT TEXT PROCESSING STATES  * 
*                                                     * 
******************************************************* 
          SPC    2
          STATPN TP327I 
* 
          STATPT TP327I,IEOS -     END OF SOURCE DETECTED 
          STATPT TP327I,ISTRT      START WITH NEW SOURCE
          STATPT TP327I,ILSBA      LOOK FOR SBA CHARACTER 
          STATPT TP327I,IBA1 -     REMOVE BUFFER ADDRESS ONE
          STATPT TP327I,IBA2 -     REMOVE BUFFER ADDRESS TWO
          EJT 
******************************************************* 
*         POST-INPUT END OF SOURCE                    * 
******************************************************* 
* 
          STATPR IEOS 
*         *********** 
* 
          STATE  ISTRT       -     PRESET STATE FOR NEXT ENTRY
          TIBSWC 0           -     INSERT LCD IN DESTINATION
          TPEXIT
          EJT 
******************************************************* 
*         START WITH NEW SOURCE                       * 
******************************************************* 
* 
          STATPR ISTRT
*         ************
* 
          ADDC   0           -     STORE 0 CHARACTER FOR THE DBC
*         JUMP   ILSBA       -     GO LOOK FOR SBA
          EJT 
******************************************************* 
*         START WITH NEW SOURCE, LOOK FOR SBA         * 
******************************************************* 
* 
          STATPR ILSBA
*         ************
* 
          CHARNE CSBA,ILSB02 -     SKIP IF NOT A SBA
          STATE  IBA1,EXIT   -     DROP SBA, GO DROP BA1
ILSB02    NOPR   STOREXIT 
          EJT 
******************************************************* 
*         REMOVE FIRST BUFFER ADDRESS AFTER SBA       * 
******************************************************* 
* 
          STATPR IBA1 
*         *********** 
* 
          STATE  IBA2,EXIT   -     DROP FIRST BA, GO DROP SECOND
          EJT 
******************************************************* 
*         REMOVE SECOND BUFFER ADDRESS AFTER SBA      * 
******************************************************* 
* 
          STATPR IBA2 
*         *********** 
* 
          STATE  ILSBA,EXIT  -     DROP SECOND BA, LOOK FOR NEXT SBA
          EJT 
          EJT 
******************************************************* 
*                                                     * 
*         3270 TIP PRINTER SUPPORT CONSTANTS          * 
*                                                     * 
******************************************************* 
          SPC    2
          EQU    CPFF($0C)   -     FORMS FEED 
          EQU    CPCR($0D)   -     CARRIAGE RETURN
          EQU    CPNL($15)   -     NEW LINE 
          EQU    CPBS($16)   -     BACK SPACE 
          EQU    CPEM($19)   -     EM CHAR
          EQU    CPLF($25)   -     LINE FEED
          EQU    CPWCC($C8)  -     WRITE CONTROL CHAR 
* 
* * * *   TEXT PROCESSING REGISTERS 
* 
*         EQU    FRWORK(4)   -     WORK REGISTER
          EQU    FRXMINIT(5) -     TRANSMISSION BLOCK SIZE     (PASCAL) 
          EQU    FRPGLEN(6)  -     PAGE LENGTH                 (PASCAL) 
          EQU    FRBLANK(7)  -     ASCII/DISPLAY CODE BLANKS   (PASCAL) 
          EQU    FRBLC(9)    -     BLANK COUNTER
          EQU    FRACC(10)   -     ACCOUNTING COUNTER 
          EQU    FRACCW(11)  -     CURRENT ACCOUNTING WEIGHT
          EQU    FRLINPG(12) -     CURRENT LINE ON PAGE 
          EQU    FRXMSZ(13)  -     XMIT BLOCK SIZE WORK COUNTER 
          EQU    FRSFC(14)   -     SYNC FILL COUNTER (MOD 256)
          EQU    FRZERO(15)  -     ZERO 
* 
* * * *   BUFFER FLAGS
* 
          EQU    BFEOR($08)  -     EOR FLAG 
          EQU    BFEOI($10)  -     ACCOUNTING BUFFER FLAG 
          EQU    BFPMSG($20) -     PM MESSAGE 
* 
* * * *   USER OPTION FLAGS 
* 
          EQU    MFEOF(NCUOP1)     END OF FILE FLAG             (LOCAL) 
          EQU    MFFLD(NCUOP2)     LINE FOLDED                  (LOCAL) 
          EQU    MFBLK(NCUOP3)     FOLDED LINE ALL BLANK        (LOCAL) 
          EQU    MFSUP(NCUOP4)     SUPPRESS CARRIAGE CONTROL    (PASCAL)
          EQU    MFEOI(NCUOP6)     END OF INFORMATION FLAG      (PASCAL)
* 
* * * *   CHARACTER COUNTERS
* 
          EQU    CCPW(1)     -     PAGE WIDTH 
          EQU    CCPM(1)     -     PM MESSAGE LENGTH COUNTER
          EQU    CCBL(2)     -     BLANK COUNTER
          EJT 
******************************************************* 
*                                                     * 
*         3270 TIP PRINTER SUPPORT STATE PROGRAMS     * 
*                                                     * 
******************************************************* 
          SPC    3
************************************************************************
          STATPN T3PRDC      STATE TABLE FOR DISPLAY CODED FILES
************************************************************************
* 
* 
          STATPT T3PRDC,PDEOS          END OF SOURCE
          STATPT T3PRDC,PDNFL          INITIAL ENTRY (NEW FILE) 
          STATPT T3PRDC,PDBFS          TOO MANY BUFFERS USED
          STATPT T3PRDC,PDHDR          BUILD HEADER 
          STATPT T3PRDC,PDTRL          BUILD TRAILER
          STATPT T3PRDC,PDSNL          START NEW LINE 
          STATPT T3PRDC,PDPFE          PROCESS FORMAT EFFECTOR
          STATPT T3PRDC,PDPMM          LOOK FOR M OF PM MESSAGE 
          STATPT T3PRDC,PDPMS          START PM MESSAGE 
          STATPT T3PRDC,PDPMP          PROCESS PM MESSAGE 
          STATPT T3PRDC,PDSKP          SKIP LINE
          STATPT T3PRDC,PDPEJ          PAGE EJECT 
          STATPT T3PRDC,PD3SP          TRIPLE SPACE 
          STATPT T3PRDC,PD2SP          DOUBLE SPACE 
          STATPT T3PRDC,PD1SP          SINGLE SPACE 
          STATPT T3PRDC,PDTXT          PROCESS TEXT 
          STATPT T3PRDC,PDPWT          PAGE WIDTH REACHED (NON BLANKS)
          STATPT T3PRDC,PDBL2          LOOK FOR SECOND BLANK
          STATPT T3PRDC,PDBL3          LOOK FOR THIRD BLANK 
          STATPT T3PRDC,PDBLK          PROCESS BLANKS 
          STATPT T3PRDC,PDPWB          PAGE WIDTH REACHED 
          STATPT T3PRDC,PDEOL          PROCESS END OF LINE
          EJT 
**********************************************************************
          STATPN T3PRAS      STATE TABLE FOR ASCII CODED FILES
**********************************************************************
* 
* 
          STATPT T3PRAS,PAEOS,PDEOS    END OF SOURCE
          STATPT T3PRAS,PANFL          INITIAL ENTRY (NEW FILE) 
          STATPT T3PRAS,PABFS,PDBFS    TOO MANY BUFFERS USED
          STATPT T3PRAS,PAHDR,PDHDR    BUILD HEADER 
          STATPT T3PRAS,PATRL,PDTRL    BUILD TRAILER
          STATPT T3PRAS,PASNL,PDSNL    START NEW LINE 
          STATPT T3PRAS,PAPFE          PROCESS FORMAT EFFECTOR
          STATPT T3PRAS,PAPMM          LOOK FOR M OF PM MESSAGE 
          STATPT T3PRAS,PAPMS          START PM MESSAGE 
          STATPT T3PRAS,PAPMP,PDPMP    PROCESS PM MESSAGE 
          STATPT T3PRAS,PASKP,PDSKP    STORE / SKIP PM MSG
          STATPT T3PRAS,PAPEJ,PDPEJ    PAGE EJECT 
          STATPT T3PRAS,PA3SP,PD3SP    TRIPLE SPACE 
          STATPT T3PRAS,PA2SP,PD2SP    DOUBLE SPACE 
          STATPT T3PRAS,PA1SP,PD1SP    SINGLE SPACE 
          STATPT T3PRAS,PATXT,PDTXT    PROCESS TEXT 
          STATPT T3PRAS,PAPWT,PDPWT    PAGE WIDTH REACHED (NON BLANKS)
          STATPT T3PRAS,PABL2,PDBL2    LOOK FOR SECOND BLANK
          STATPT T3PRAS,PABL3,PDBL3    LOOK FOR THIRD BLANK 
          STATPT T3PRAS,PABLK,PDBLK    PROCESS BLANKS 
          STATPT T3PRAS,PAPWB,PDPWB    PAGE WIDTH REACHED (BLANKS)
          STATPT T3PRAS,PAEOL,PDEOL    PROCESS END OF LINE
          EJT 
          EJT 
******************************************************* 
*         END-OF-SOURCE DETECTED            (BOTH)    * 
******************************************************* 
* 
          STATPR PDEOS
*         ************
* 
          TSTMXF MFEOI,PDEOS2      SKIP IF END OF INFORMATION 
          TPEXIT
* 
PDEOS2    SETMXF MFEOF       -     FORCE EXIT AFTER TRAILER BUILT 
          STATLS PDHDR,PDEOS4      SKIP IF NO HEADER BUILD
          STATE  PDNFL
          JUMP   PDTRL,RTN   -     BUILD TRAILER, EXIT
* 
PDEOS4    JUMP   PDHDR,RTN   -     BUILD EMPTY XMIT BLOCK, EXIT 
          EJT 
******************************************************* 
*         TOO MANY BUFFERS USED             (BOTH)    * 
******************************************************* 
* 
          STATPR PDBFS
*         ************
* 
          JUMP   PDBFS,RTN   -     FOR DEBUG: HANG
          EJT 
******************************************************* 
*         START NEW PRINT FILE              (ASCII)   * 
******************************************************* 
* 
          STATPR PANFL
*         ************
* 
          TPST   FRBLANK,NCCRCS 
          TPLDL  NCCRCS,FRWORK
          TPSTL  FRWORK,NCSCHR     SPECIAL CHARACTER ASCII BLANK
          JUMP   PDHDR,RTN   -     BUILD FIRST HEADER 
          EJT 
******************************************************* 
*         START NEW PRINT FILE              (DISPLAY) * 
******************************************************* 
* 
          STATPR PDNFL
*         ************
* 
          TPSTL  FRBLANK,NCSCHR    SPECIAL CHARACTER DISPLAY BLANK
*         JUMP   PDHDR,RTN   -     BUILD FIRST HEADER 
          EJT 
******************************************************* 
*         BUILD HEADER FOR PRINTER          (BOTH)    * 
******************************************************* 
* 
          STATPR PDHDR
*         ************
* 
          ALNBUF 8           -     GET A NEW BUFFER 
          TPMOVE FRXMINIT,FRXMSZ   INITIALIZE XMIT BLOCK SIZE 
          TPMOVE FRXMINIT,FRSFC    SET UP SYNC FILL COUNTER 
          TPLDR  NCZERO,FRSFC      CLEAR LOWER BYTE OF COUNTER
          ADDC   CLPAD       -     BUILD HEADER 
          ADDC   CSYN 
          ADDC   CSYN 
          ADDC   CSYN        -     INSERT THREE LEADING SYNCS 
          ADDC   CSTX        -     INSERT START-OF-TEXT 
          INTCRC ZCRC        -     INITIALIZE CRC TO ZERO 
          RPLACE CESC,CRCA   -     INSERT ESCAPE-CHARACTER
          RPLACE CEWRT,CRCA  -     INSERT ERASE-WRITE 
          RPLACE CPWCC,CRCA  -     INSERT WRITE CONTROL CHAR
          SETFLG BF3TEXTPR,CURN    DECLARE TEXT-PROCESSED 
          TPRSTR FRCURC      -     RESTORE CURRENT CHARACTER
          TSTMXF MFEOF,PDHDR2 
          JUMP   PDSNL,RTN   -     START NEW LINE 
PDHDR2    EQU    PDHDR2(*)   -     EMPTY D/L EOI, HDR/TRL ONLY
          EJT 
******************************************************* 
*         BUILD TRAILER FOR PRINTER         (BOTH)    * 
******************************************************* 
* 
          STATPR PDTRL
*         ************
* 
          RSTRAN 0
          RPLACE CPEM,CRCA   -     STORE EM CHAR AT EOF 
          RPLACE CETX,CRCA   -     STORE ETX
          TPLD   NCCRCS,FRWORK     GET CRC
          TPSTLC FRWORK,NOCRC      STORE LEFT BYTE OF CRC 
          TPSTRC FRWORK      -     STORE RIGHT BYTE OF CRC
          ADDC   CTPAD
          ADDC   CTPAD       -     ADD PAD CHARACTERS 
          ALNBUF 8
          SETFLG BFEOI,CURNT -     MARK END OF XMIT BLOCK 
          TPSTLC FRACC
          TPSTRC FRACC       -     STORE ACCOUNTING INFO IN BUFFER
          TPMOVE FRZERO,FRACC      CLEAR ACCOUNTING COUNTER 
          TSTMXF MFEOF,PDTRL2 
          TPRSTR FRCURC      -     RESTORE CURRENT CHARACTER
          JUMP   CURRENT     -     PROCEED WITH CURRENT STATE 
* 
PDTRL2    EQU    PDTRL2(*)
*         RSTMXF MFEOF
          TPEXIT             -     EXIT ON END OF SOURCE
          EJT 
******************************************************* 
*         START NEW PRINT LINE              (BOTH)    * 
******************************************************* 
* 
          STATPR PDSNL
*         ************
* 
          STATE  PDHDR
          TPCMPR FRXMSZ,FRZERO     TEST TRANSMISSION BUFFER SIZE
          JUMP   PDTRL,RTN   -     < 0, FULL
          JUMP   PDTRL,RTN   -     = 0, FULL BUILD TRAILER
*                            -     > 0, NOT FULL
          TPMOVE FRXMSZ,FRWORK
          TPLDR  NCZERO,FRWORK     CLEAR LOWER BYTE OF XMIT SIZE
          TPCMPR FRSFC,FRWORK 
          SKIP   PDSNL2      -     " RESET SYNC FILL COUNTER
          SKIP   PDSNL4      -     = START NEW RECORD 
PDSNL2    TPMOVE FRWORK,FRSFC      " RESET SYNC FILL COUNTER, ADD SYNCS 
* 
* * * *   ADD TWO SYNCS AROUND EVERY 256 CHARACTERS 
* 
          ADDC   CSYN        -     ADD TWO SYNCS FOR SYNC FILL
          ADDC   CSYN        -
* 
PDSNL4    TPSUBR FRACCW,FRACCW     CLEAR CURRENT ACCOUNTING WEIGHT
          INTCC  CCPW        -     RESET PAGE WIDTH COUNTER 
          TSTMXF MFSUP+MFFLD,PDSNL6 
          JUMP   PDPFE,RTN   -     PROCESS FORMAT EFFECTOR
* 
* * * *   NO FORMAT EFFECTOR PRESENT OR FOLDING A LINE
* 
PDSNL6    JUMP   PD1SP,RTN   -     GO STORE SINGLE SPACE
          EJT 
******************************************************* 
*         PROCESS FORMAT EFFECTOR           (ASCII)   * 
******************************************************* 
* 
          STATPR PAPFE
*         ************
* 
          CHARNE B8FCS1,PAPFE2     SKIP IF NOT SINGLE SPACE 
          JUMP   PA1SP,RTN
* 
PAPFE2    CHARNE B8FCS2,PAPFE4     SKIP IF NOT DOUBLE SPACE 
          JUMP   PA2SP,RTN
* 
PAPFE4    CHARNE B8FCS3,PAPFE6     SKIP IF NOT TRIPLE SPACE 
          JUMP   PA3SP,RTN
* 
PAPFE6    CHARNE B8FCPE,PAPFE8     SKIP IF NOT PAGE EJECT 
          JUMP   PAPEJ,RTN
* 
PAPFE8    CHARNE B9EOL,PAPFE9      SKIP IF NOT END OF LINE
          SETMXF MFFLD
          JUMP   PD1SP,RTN         TREAT AS SINGLE SPACE
* 
PAPFE9    CHARNE B8PPPP,PAPFEA     SKIP IF NOT POSSIBLE PM MESSAGE
          STATE  PAPMM,EXIT  -     LOOK FOR M 
* 
PAPFEA    CHARLS B8QQQQ,PAPFEC     SKIP LINES WITH FE-S Q,R,S,T 
          CHARLS B8TTTT+1,PAPFEE
* 
PAPFEC    JUMP   PA1SP,RTN   -     ALL OTHERS AS SINGLE SPACE 
* 
PAPFEE    STATE  PASKP,EXIT  -     SKIP THIS LINE 
          EJT 
******************************************************* 
*         PROCESS FORMAT EFFECTOR           (DISPLAY) * 
******************************************************* 
* 
          STATPR PDPFE
*         ************
* 
          CHARNE B9FCS1,PDPFE2     SKIP IF NOT SINGLE SPACE 
          JUMP   PD1SP,RTN
* 
PDPFE2    CHARNE B9FCS2,PDPFE4     SKIP IF NOT DOUBLE SPACE 
          JUMP   PD2SP,RTN
* 
PDPFE4    CHARNE B9FCS3,PDPFE6     SKIP IF NOT TRIPLE SPACE 
          JUMP   PD3SP,RTN
* 
PDPFE6    CHARNE B9FCPE,PDPFE8     SKIP IF NOT PAGE EJECT 
          JUMP   PDPEJ,RTN
* 
PDPFE8    CHARNE B9PPPP,PDPFEA     SKIP IF NOT POSSIBLE PM MESSAGE
          STATE  PDPMM,EXIT  -     LOOK FOR M 
* 
PDPFEA    CHARLS B9QQQQ,PDPFEC     SKIP LINES WITH FE-S Q,R,S,T 
          CHARLS B9TTTT+1,PDPFEE
* 
PDPFEC    JUMP   PD1SP,RTN   -     ALL OTHERS AS SINGLE SPACE 
* 
PDPFEE    STATE  PDSKP,EXIT  -     SKIP THIS LINE 
          EJT 
******************************************************* 
*         LOOK FOR M OF PM MESSAGE          (ASCII)   * 
******************************************************* 
* 
          STATPR PAPMM
*         ************
* 
          CHARNE B8MMMM,PDPMM4     SKIP IF NOT A PM 
          SKIP   PDPMM2      -     PM MESSAGE FOUND 
          EJT 
******************************************************* 
*         LOOK FOR M OF PM MESSAGE          (DISPLAY) * 
******************************************************* 
* 
          STATPR PDPMM
*         ************
* 
          CHARNE B9MMMM,PDPMM4     SKIP IF NOT A PM 
PDPMM2    STATE  PDPMS       -     PM MESSAGE FOUND 
          JUMP   PDTRL,RTN   -     CLOSE XMIT BLOCK 
* 
PDPMM4    SETMXF MFFLD
          JUMP   PD1SP,RTN   -     TREAT AS SINGLE SPACE
          EJT 
******************************************************* 
*         START PM MESSAGE                  (ASCII)   * 
******************************************************* 
* 
          STATPR PAPMS
*         ************
* 
          ALNBUF 14 
          ADDC   B8PPPP      -     STORE P
          SKIP   PDPMS2      -     GO STORE M 
          EJT 
******************************************************* 
*         START PM MESSAGE                  (DISPLAY) * 
******************************************************* 
* 
          STATPR PDPMS
*         ************
* 
          ALNBUF 14 
          ADDC   B9PPPP      -     STORE P
* 
PDPMS2    SETFLG BFPMSG,CURN -     SET PM FLAG IN BUFFER
          SETCC  CCPM,79     -     MAX LENGTH OF PM MSG 
          STATE  PDPMP,STOREX      STORE M, PROCESS REST
          EJT 
******************************************************* 
*         PROCESS PM MESSAGE                (BOTH)    * 
******************************************************* 
* 
          STATPR PDPMP
*         ************
* 
          CHARNE B9EOL,PDPMP2      SKIP IF NOT EOL
* 
          ALNBUF 8
          SETFLG BFEOI,CURNT -     MARK END OF XMIT BLOCK 
          STATE  PDHDR,EXIT  -     PROCEED WITH HEADER
* 
PDPMP2    DCC    CCPM,PDPMP4,STOREX 
* 
* * * *   PM MESSAGE TOO LONG, IGNORE REST OF IT
* 
PDPMP4    ICC    CCPM,EXIT   -     PM TOO LONG, KEEP COMING HERE
          EJT 
******************************************************* 
*         SKIP UNTIL END OF LINE            (BOTH)    * 
******************************************************* 
* 
          STATPR PDSKP
*         ************
* 
          CHARNE B9EOL,PDSKP2      SKIP IF NOT END OF LINE
          STATE  PDSNL,EXIT  -     START NEW LINE 
* 
PDSKP2    NOPR   EXIT        -     IGNORE CHARACTER 
          EJT 
******************************************************* 
*         PROCESS PAGE EJECT                (BOTH)    * 
******************************************************* 
* 
          STATPR PDPEJ
*         ************
* 
          TPADDR FRPGLEN,FRACC     ADD NR LINES LEFT ON PAGE
          TPSUBR FRLINPG,FRACC     TO ACCOUNTING
          TPMOVE FRZERO,FRLINPG    RESET LINE COUNTER 
          RPLACE CPFF,CRCA   -     STORE FORMS FEED 
          RPLACE CPCR,CRCA   -     STORE CARRIAGE RETURN
          TPDECR FRXMSZ,2    -     MAINTAIN XMIT BLOCK SIZE 
          SETRAN 0
          STATE  PDTXT,EXIT  -     PROCESS TEXT 
          EJT 
******************************************************* 
*         PROCESS TRIPLE SPACE              (BOTH)    * 
******************************************************* 
* 
          STATPR PD3SP
*         ************
* 
          RPLACE CPNL,CRCA   -     STORE NEW LINE CHARACTER 
          TPINCR FRACCW,1    -     BUMP ACCOUNTING WEIGHT 
          TPDECR FRXMSZ,1    -     MAINTAINT XMIT BLOCK SIZE
*         JUMP   PD2SP,RTN
          EJT 
******************************************************* 
*         PROCESS DOUBLE SPACE              (BOTH)    * 
******************************************************* 
* 
          STATPR PD2SP
*         ************
* 
          RPLACE CPNL,CRCA   -     STORE NEW LINE CHARACTER 
          TPINCR FRACCW,1    -     BUMP ACCOUNTING WEIGHT 
          TPDECR FRXMSZ,1    -     MAINTAINT XMIT BLOCK SIZE
*         JUMP   PD1SP,RTN
          EJT 
******************************************************* 
*         PROCESS SINGLE SPACE              (BOTH)    * 
******************************************************* 
* 
          STATPR PD1SP
*         ************
* 
          TPINCR FRACCW,1    -     BUMP ACCOUNTING WEIGHT 
          TPADDR FRACCW,FRACC      ADD NR LINES TO ACCOUNTING 
          TPADDR FRACCW,FRLINPG    MAINTAIN LINES ON PAGE 
          TPCMPR FRPGLEN,FRLINPG   COMPARE PAGE LENGTH AND CUR LINE 
          TPMOVE FRZERO,FRLINPG    < RESET LINE COUNTER 
          NOPR   0           -     =
*                            -     >
          SETRAN 0           -     SET TRANSLATION
          TSTMXF MFSUP+MFFLD,PD1SP2 
          STATE  PDTXT,EXIT  -     SKIP FE, GO PROCESS TEXT 
* 
* * * *   JUST FOLDED LINE OR NO FORMAT EFFECTORS PRESENT 
* 
PD1SP2    TPRSTR FRCURC      -     RESTORE CURRENT CHARACTER
          TSTMXF MFFLD,PD1SP4 
          JUMP   PDTXT       -     PROCESS TEXT 
* 
PD1SP4    RSTMXF MFFLD       -     RESET FOLD FLAG
          SPCHEQ PD1SP6      -     SKIP IF FIRST CHAR IS BLANK
* 
          JUMP   PDTXT       -     PROCESS TEXT 
* 
PD1SP6    SETMXF MFBLK       -     POSSIBLE FOLDED BLANKS 
          JUMP   PDBLK       -     GO COUNT BLANKS
          EJT 
******************************************************* 
*         PROCESS TEXT UNTIL BLANK/EOL/PW   (BOTH)    * 
******************************************************* 
* 
          STATPR PDTXT
*         ************
* 
          SPCHEQ PDTXT4      -     SKIP IF BLANK
* 
          CHARNE B9EOL,PDTXT2      SKIP IF NOT END OF LINE
          JUMP   PDEOL,RTN   -     PROCESS END OF LINE
* 
PDTXT2    TPDECR FRXMSZ,1    -     MAINTAIN XMIT BLOCK SIZE 
          DCC    CCPW,PDTXT6,CRCSTOREX
* 
* * * *   FOUND A BLANK CHARACTER IN THE TEXT 
* 
PDTXT4    DCC    CCPW,PDTXT6
          STATE  PDBL2,EXIT  -     LOOK FOR SECOND BLANK
* 
* * * *   PAGE WIDTH REACHED WITH A BLANK OR NON BLANK CHARACTER
* 
PDTXT6    STATE  PDPWT,CRCSTOREX   SEE IF FOLDING NEEDED
          EJT 
******************************************************* 
*         PAGE WIDTH REACHED DURING TEXT    (BOTH)    * 
******************************************************* 
* 
          STATPR PDPWT
*         ************
* 
          CHARNE B9EOL,PDPWT2      SKIP IF NOT EOL
          RSTRAN 0           -     TURN OFF TRANSLATION 
          STATE  PDSNL,EXIT  -     START NEW LINE 
* 
PDPWT2    INTCC  CCPW        -     RESET PW COUNTER 
          SPCHEQ PDPWT4      -     SKIP IF FIRST CHAR IS BLANK
* 
          JUMP   PDTXT       -     CONTINUE PROCESSING TEXT 
* 
PDPWT4    SETMXF MFBLK       -     POSSIBLE FOLDED BLANKS 
          JUMP   PDBLK       -     GO COUNT BLANKS
          EJT 
******************************************************* 
*         LOOK FOR SECOND BLANK             (BOTH)    * 
******************************************************* 
* 
          STATPR PDBL2
*         ************
* 
          SPCHEQ PDBL26      -     SKIP IF SECOND BLANK 
* 
          CHARNE B9EOL,PDBL22 
          JUMP   PDEOL,RTN   -     PROCESS END OF LINE
* 
* * * *   NEW CHARACTER IS NOT A BLANK OR EOL 
* 
PDBL22    TPLD   NCSCHR,FRWORK
          TPSTLC FRWORK,CRCA -     STORE SINGLE BLANK 
          TPRSTR FRCURC      -     RESTORE CURRENT CHARACTER
          TPDECR FRXMSZ,2    -     MAINTAIN XMIT BLOCK SIZE 
          DCC    CCPW,PDBL24
          STATE  PDTXT,CRCSTOREX   PROCESS NON BLANK TEXT 
* 
* * * *   PAGE WIDTH REACHED WITH NON-BLANK CHARACTER 
* 
PDBL24    STATE  PDPWB,CRCSTOREX   STORE CHAR, SEE IF FOLDING NEEDED
* 
* * * *   SECOND BLANK CHARACTER FOUND
* 
PDBL26    DCC    CCPW,PDBL28
          STATE  PDBL3,EXIT  -     LOOK FOR THIRD BLANK 
* 
* * * *   PAGE WIDTH REACHED WITH SECOND BLANK CHARACTER
* 
PDBL28    STATE  PDPWB,EXIT 
          EJT 
******************************************************* 
*         LOOK FOR THIRD BLANK              (BOTH)    * 
******************************************************* 
* 
          STATPR PDBL3
*         ************
* 
          SPCHEQ PDBL36      -     SKIP IF THIRD BLANK
* 
          CHARNE B9EOL,PDBL32 
          JUMP   PDEOL,RTN   -     PROCESS END OF LINE
* 
* * * *   NEW CHARACTER IS NOT A BLANK OR EOL 
* 
PDBL32    TPLD   NCSCHR,FRWORK
          TPSTLC FRWORK,CRCA -     STORE TWO BLANKS 
          TPSTLC FRWORK,CRCA
          TPRSTR FRCURC      -     RESTORE CURRENT CHARACTER
          TPDECR FRXMSZ,3    -     MAINTAIN XMIT BLOCK SIZE 
          DCC    CCPW,PDBL34
          STATE  PDTXT,CRCSTOREX   PROCESS NON BLANK TEXT 
* 
* * * *   PAGE WIDTH REACHED WITH NON-BLANK CHARACTER 
* 
PDBL34    STATE  PDPWB,CRCSTOREX   STORE CHAR, SEE IF FOLDING NEEDED
* 
* * * *   THIRD BLANK CHARACTER FOUND 
* 
PDBL36    DCC    CCPW,PDBL38
*         TPMOVE FRZERO,FRBLC 
          TPINCR FRBLC,3     -     SET BLANK COUNTER TO THREE 
          STATE  PDBLK,EXIT  -     PROCESS BLANKS 
* 
* * * *   PAGE WIDTH REACHED WITH THIRD BLANK CHARACTER 
* 
PDBL38    STATE  PDPWB,EXIT 
          EJT 
******************************************************* 
*         PROCESS BLANKS                    (BOTH)    * 
******************************************************* 
* 
          STATPR PDBLK
*         ************
* 
          SPCHEQ PDBLKC      -     SKIP IF ANOTHER BLANK CHAR 
* 
          CHARNE B9EOL,PDBLK0 
          SKIP   PDBLK1 
PDBLK0    SKIP   PDBLK4 
PDBLK1    TPMOVE FRZERO,FRBLC      CLEAR BLANK COUNTER
          TSTMXF MFBLK,PDBLK2      SKIP IF ALL BLANK FOLDED LINE
          JUMP   PDEOL,RTN   -     NOT ALL BLANK, STORE NL
* 
PDBLK2    RSTMXF MFBLK       -     ALREADY STORED NL, 
          RSTRAN 0           -     RESET TRANSLATION
          STATE  PDSNL,EXIT  -     GO PROCESS NEXT LINE 
* 
* * * *   NON BLANK CHARACTER FOUND AFTER AT LEAST THREE BLANKS 
*         OR AFTER BLANK(S) AT START OF FOLDED LINE 
* 
PDBLK4    RSTMXF MFBLK
          TPSUBR FRBLC,FRXMSZ      SUBTRACT NR BLANKS TO STORE
          TPLDL  NCSCHR,FRWORK
* 
* * * *   STORE BLANKS ENCOUNTERED SO FAR ON THIS LINE
* 
PDBLK6    TPCMPR FRBLC,FRZERO      TEST BLANK COUNTER 
          TPMOVE FRZERO,FRBLC      < 0
          SKIP   PDBLK8      -     = 0, DONE
          TPSTRC FRWORK,CRCA -     > 0, STORE BLANK 
          TPDECR FRBLC,1
          SKIP   PDBLK6 
* 
PDBLK8    TPRSTR FRCURC      -     RESTORE NON BLANK CHARACTER
          TPDECR FRXMSZ,1    -     MAINTAIN XMIT BLOCK SIZE 
          DCC    CCPW,PDBLKA
          STATE  PDTXT,CRCSTOREX   STORE NON-BLANK
* 
* * * *   PAGE WIDTH REACHED WITH NON-BLANK CHARACTER 
* 
PDBLKA    STATE  PDPWB,CRCSTOREX   STORE CHAR, SEE IF FOLDING NEEDED
* 
* * * *   ANOTHER BLANK CHARACTER FOUND 
* 
PDBLKC    TPINCR FRBLC,1     -     BUMP BLANK COUNTER 
          DCC    CCPW,PDBLKE,EXIT 
* 
* * * *   LINE FOLDING DURING BLANK SEQUENCE
* 
PDBLKE    TPMOVE FRZERO,FRBLC      RESET BLANK COUNTER
          STATE  PDPWB,EXIT  -     SEE IF FOLDING NEEDED
          EJT 
******************************************************* 
*         PROCESS PAGE WIDTH AFTER BLANKS   (BOTH)    * 
******************************************************* 
* 
          STATPR PDPWB
*         ************
* 
          CHARNE B9EOL,PDPWB2      SKIP IF NOT END OF LINE
          JUMP   PDEOL,RTN   -     END OF LINE, FORGET ABOUT FOLDING
* 
PDPWB2    SETMXF MFFLD       -     SET FOLD LINE FLAG 
          RSTRAN 0           -     TURN OFF TRANSLATION 
          RPLACE CPNL,CRCA   -     STORE NEW LINE 
          TPDECR FRXMSZ,1    -     MAINTAINT XMIT BLOCK SIZE
          JUMP   PDSNL,RTN   -     GO PROCESS FOLDED LINE 
          EJT 
******************************************************* 
*         PROCESS END OF LINE               (BOTH)    * 
******************************************************* 
* 
          STATPR PDEOL
*         ************
* 
          RSTRAN 0           -     TURN OFF TRANSLATION 
          RPLACE CPNL,CRCA   -     STORE NEW LINE 
          TPDECR FRXMSZ,1    -     MAINTAINT XMIT BLOCK SIZE
          STATE  PDSNL,EXIT  -     GO START NEW LINE
          EJT 
          END 
