*COMDECK MODE4BTP 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*     M O D E   4   B A T C H                                         * 
*                                                                     * 
*     T E X T   P R O C E S S I N G   A S S E M B L I E S             * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
          SPC    3
          NAM    BTPMD4 
          SPC    3
          NLS 
*CALL MUXMACROS 
          LST 
*CALL STPMACROS 
          SPC    3
*CALL REL6CONST 
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*     M O D E   4   B A T C H                                         * 
*                                                                     * 
*     T E X T   P R O C E S S I N G   C O N S T A N T S               * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
          SPC    3
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*     MODE 4 CHARACTER EQUATES                                        * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
          SPC    3
          EQU    VCSOH($01)  -         START OF HEADER
          EQU    VCETX($03)  -         END OF TRANSMISSION
          EQU    VCSYNC($16) -         SYNCHRONOUS IDLE 
* 
          EQU    VCW($11)    -         WRITE MTI
          EQU    VCCW($12)   -         CLEAR WRITE MTI
* 
          EQU    VCE2($20)   -         E2 TERMINATOR
* 
          EQU    VCFCS2($4A) -         MODE 4A DOUBLE SPACE 
          EQU    VCFCPE($41) -         MODE 4A PAGE EJECT 
          EQU    VCFCSS($30) -         MODE 4A SUPPRESS SPACE 
* 
          EQU    VC4CCR($0D) -         MODE 4C CARRIAGE RETURN
          EQU    VC4CLF($0A) -         MODE 4C LINE FEED
          EQU    VC4CPE($0C) -         MODE 4C PAGE EJECT 
* 
          EQU    VCABLANK($20)         ASCII BLANK
* 
          EQU    VCEOF($56)  -         EOF INDICATOR CHARACTER
          SPC    3
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*     MODE 4 BATCH TPCB FLAG EQUATES                                  * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
          SPC    3
          EQU    VFASCII(NCUOP1)       ASCII CODE SET 
          EQU    VFMD4C(NCUOP2)        MODE 4C DEVICE 
          EQU    VFEOI(NCUOP3)         SOURCE CONTAINS EOI
          EQU    VFSUPRS(NCUOP4)       CARRIAGE CONTROL IS SUPPRESSED 
          EQU    VFIP(NCUOP5)          MODE 4C IMPACT PRINTER 
          EQU    VFPAGE(NCUOP6)        MODE 4C NON-IMPACT PRT IS PAGING 
          EQU    VFEOF(NCUOP7)         SEND EOF SIGNAL AT EOI 
          EQU    VFWRAP(NCUOP8)        CURRENT LINE HAS WRAPPED 
          SPC    3
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*     MODE 4 BATCH TPCB FILE REGISTER EQUATES                         * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
          SPC    3
          EQU    VTACCT(3)   -         ACCOUNTING DATA
          EQU    VTLINESR(4) -         LINES REMAINING ON PAGE
          EQU    VTPGLEN(5)  -         PAGE LENGTH
          EQU    VTESC(6)    -         CURRENT ESC CHARACTER
          EQU    VTEOL(6)    -         CURRENT EOL CHARACTER
          EQU    VTWORK(7)   -         WORK REGISTER
          EQU    VTCOMPRS(8) -         COMPRESSION COUNT
          EQU    VTCCSAV(9)  -         CURRENT CHARACTER SAVE 
          EQU    VTSLACK(10) -         TRANSMISSION SIZE SLACK
          EQU    VTLNCNT(11) -         ACCOUNTING VALUE FOR THIS FC 
          EQU    VTLASTLR(12)          LINES REMAINING BEFORE THIS FC 
          EQU    VTBLANK(13) -         BLANK CHARACTER (DC OR ASCII)
          EQU    VTTTADDR(14)          TRANSLATE TABLE ADDRESS
          EQU    VTZERO(15)  -         CONSTANT ZERO
          SPC    3
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*     MODE 4 BATCH BUFFER EQUATES                                     * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
          SPC    3
          EQU    VBTFCD(8)   -         FCD FOR TRANSMISSION BLOCK 
          EQU    VBAFCD(8)   -         FCD FOR ACCOUNTING DATA
* 
          EQU    VBPM($020)  -         PM MESSAGE FLAG
          EQU    VBACCT($04) -         ACCOUNTING DATA FLAG 
          EQU    VBETB($02)  -         END OF TRANSMISSION BLOCK FLAG 
          EQU    VBMPT($01)  -         EMPTY TRANSMISSION BLOCK FLAG
          SPC    3
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*     MODE 4 BATCH TPCB COUNTER EQUATES                               * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
          SPC    3
          EQU    V4CLMNCNT(1)          COLUMN COUNTER 
          EQU    V4TBCNT(2)  -         TRANSMISSION BLOCK SIZE COUNTER
          EQU    V4CC1(1)    -         COUNTER 1
* 
          EQU    V4PCC1(4)   -         WORD INDEX TO COUNTER 1
          EQU    V4PSINGLE(8)-         WORD INDEX TO M4A SINGLE SPACE CC
          EQU    V4PMAXC(9)  -         WORD INDEX TO MAX. COMP. EQUS
          EQU    V4PCC2(10)  -         WORD INDEX TO COUNTER 2
          EQU    V4PBUFCNT(14)         WORD INDEX TO BUFFER COUNT 
          EQU    V4PBASC(15) -         WORD INDEX TO BASE COMP. EQUS
          SPC    15 
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
* T E X T  P R O C E S S I N G   S T A T E   P O I N T E R   T A B L E* 
*                                                                     * 
*     M O D E   4 A   P R I N T E R   -   P R U   F I L E S           * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
          STATPN M4APRU      -         DEFINE STATE PROGRAM TABLE NAME
* 
*                                      FUNCTION IS TO - 
*                                      ---------------- 
* 
          STATPT M4APRU,VSEOS          PROCESS END OF SOURCE
          STATPT M4APRU,VSETB          END A TRANSMISSION BLOCK 
          STATPT M4APRU,VSTRL          BUILD TRANSMISSION BLOCK TRAILER 
          STATPT M4APRU,VSEXT          EXIT TEXT PROCESSING 
          STATPT M4APRU,VSHDR          BUILD TRANSMISSION BLOCK HEADER
          STATPT M4APRU,VSBTB          START A TRANSMISSION BLOCK 
          STATPT M4APRU,VSSOL          START THE NEXT LINE
          STATPT M4APRU,VSFC,VSCC      INTERPRET FORMS CONTROL
          STATPT M4APRU,VSCC -         PROCESS FORMS CONTROL
          STATPT M4APRU,VSDTA          PROCESS NORMAL DATA CHARACTERS 
          STATPT M4APRU,VSESP          END SPACE COMPRESSION
          STATPT M4APRU,VSDIS          DISCARD A LINE 
          STATPT M4APRU,VSPM -         LOOK FOR PM MESSAGE
          STATPT M4APRU,VSSPM          START PM PROCESSING
          STATPT M4APRU,VSPMS          STORE PM MESSAGE 
          STATPT M4APRU,VSWRP          PROCESS LINE WRAP
          STATPT M4APRU,VSCHB          PROCESS BLANKS AFTER LINE WRAP 
          STATPT M4APRU,VSELN          PROCESS END OF LINE CHARACTER
          STATPT M4APRU,VSEOL          PROCESS END OF LINE CONDITION
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
* T E X T  P R O C E S S I N G   S T A T E   P O I N T E R   T A B L E* 
*                                                                     * 
*     M O D E   4 A   P R I N T E R   -   A S C I I   F I L E S       * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
          STATPN M4AASC      -         DEFINE STATE PROGRAM TABLE NAME
* 
*                                      FUNCTION IS TO - 
*                                      ---------------- 
* 
          STATPT M4AASC,VAEOS,VSEOS    PROCESS END OF SOURCE
          STATPT M4AASC,VAETB,VSETB    END A TRANSMISSION BLOCK 
          STATPT M4AASC,VATRL,VSTRL    BUILD TRANSMISSION BLOCK TRAILER 
          STATPT M4AASC,VAEXT,VSEXT    EXIT TEXT PROCESSING 
          STATPT M4AASC,VAHDR,VSHDR    BUILD TRANSMISSION BLOCK HEADER
          STATPT M4AASC,VABTB,VSBTB    START A TRANSMISSION BLOCK 
          STATPT M4AASC,VASOL,VSSOL    START THE NEXT LINE
          STATPT M4AASC,VAFC -         INTERPRET FORMS CONTROL
          STATPT M4AASC,VACC,VSCC      PROCESS FORMS CONTROL
          STATPT M4AASC,VADTA,VSDTA    PROCESS NORMAL DATA CHARACTERS 
          STATPT M4AASC,VAESP,VSESP    END SPACE COMPRESSION
          STATPT M4AASC,VADIS,VSDIS    DISCARD A LINE 
          STATPT M4AASC,VAPM -         LOOK FOR PM MESSAGE
          STATPT M4AASC,VASPM          START PM PROCESSING
          STATPT M4AASC,VAPMS,VSPMS    STORE PM MESSAGE 
          STATPT M4AASC,VAWRP,VSWRP    PROCESS LINE WRAP
          STATPT M4AASC,VACHB          PROCESS BLANKS AFTER LINE WRAP 
          STATPT M4AASC,VAELN,VSELN    PROCESS END OF LINE CHARACTER
          STATPT M4AASC,VAEOL,VSEOL    PROCESS END OF LINE CONDITION
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
* T E X T  P R O C E S S I N G   S T A T E   P O I N T E R   T A B L E* 
*                                                                     * 
*     M O D E   4 C   P R I N T E R   -   P R U   F I L E S           * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
          STATPN M4CPRU      -         DEFINE STATE PROGRAM TABLE NAME
* 
*                                      FUNCTION IS TO - 
*                                      ---------------- 
* 
          STATPT M4CPRU,VCEOS,VSEOS    PROCESS END OF SOURCE
          STATPT M4CPRU,VCETB,VSETB    END A TRANSMISSION BLOCK 
          STATPT M4CPRU,VCTRL,VSTRL    BUILD TRANSMISSION BLOCK TRAILER 
          STATPT M4CPRU,VCEXT,VSEXT    EXIT TEXT PROCESSING 
          STATPT M4CPRU,VCHDR,VSHDR    BUILD TRANSMISSION BLOCK HEADER
          STATPT M4CPRU,VCBTB          START A TRANSMISSION BLOCK 
          STATPT M4CPRU,VCSOL,VSSOL    START THE NEXT LINE
          STATPT M4CPRU,VCFC -         INTERPRET FORMS CONTROL
          STATPT M4CPRU,VCCC -         PROCESS FORMS CONTROL
          STATPT M4CPRU,VCDTA,VSDTA    PROCESS NORMAL DATA CHARACTERS 
          STATPT M4CPRU,VCESP          END BLANK TRUNCATION 
          STATPT M4CPRU,VCDIS,VSDIS    DISCARD A LINE 
          STATPT M4CPRU,VCPM,VSPM      LOOK FOR PM MESSAGE
          STATPT M4CPRU,VCSPM,VSSPM    START PM PROCESSING
          STATPT M4CPRU,VCPMS,VSPMS    STORE PM MESSAGE 
          STATPT M4CPRU,VCWRP,VSWRP    PROCESS LINE WRAP
          STATPT M4CPRU,VCCHB,VSCHB    PROCESS BLANKS AFTER LINE WRAP 
          STATPT M4CPRU,VCELN,VSELN    PROCESS END OF LINE CHARACTER
          STATPT M4CPRU,VCELL,VSEOL    PROCESS END OF LINE CONDITION
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
* T E X T  P R O C E S S I N G   S T A T E   P O I N T E R   T A B L E* 
*                                                                     * 
*     M O D E   4 C   P R I N T E R   -   A S C I I   F I L E S       * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
          STATPN M4CASC      -         DEFINE STATE PROGRAM TABLE NAME
* 
*                                      FUNCTION IS TO - 
*                                      ---------------- 
* 
          STATPT M4CASC,VDEOS,VSEOS    PROCESS END OF SOURCE
          STATPT M4CASC,VDETB,VSETB    END A TRANSMISSION BLOCK 
          STATPT M4CASC,VDTRL,VSTRL    BUILD TRANSMISSION BLOCK TRAILER 
          STATPT M4CASC,VDEXT,VSEXT    EXIT TEXT PROCESSING 
          STATPT M4CASC,VDHDR,VSHDR    BUILD TRANSMISSION BLOCK HEADER
          STATPT M4CASC,VDBTB,VCBTB    START A TRANSMISSION BLOCK 
          STATPT M4CASC,VDSOL,VSSOL    START THE NEXT LINE
          STATPT M4CASC,VDFC,VAFC      INTERPRET FORMS CONTROL
          STATPT M4CASC,VDCC,VCCC      PROCESS FORMS CONTROL
          STATPT M4CASC,VDDTA,VSDTA    PROCESS NORMAL DATA CHARACTERS 
          STATPT M4CASC,VDESP,VCESP    END BLANK TRUNCATION 
          STATPT M4CASC,VDDIS,VSDIS    DISCARD A LINE 
          STATPT M4CASC,VDPM,VAPM      LOOK FOR PM MESSAGE
          STATPT M4CASC,VDSPM,VASPM    START PM PROCESSING
          STATPT M4CASC,VDPMS,VSPMS    STORE PM MESSAGE 
          STATPT M4CASC,VDWRP,VSWRP    PROCESS LINE WRAP
          STATPT M4CASC,VDCHB,VACHB    PROCESS BLANKS AFTER LINE WRAP 
          STATPT M4CASC,VDELN,VSELN    PROCESS END OF LINE CHARACTER
          STATPT M4CASC,VDELL,VSEOL    PROCESS END OF LINE CONDITION
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*     M O D E   4   B A T C H                                         * 
*                                                                     * 
*     T E X T   P R O C E S S I N G   S T A T E   P R O G R A M S     * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
          SPC    3
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
          STATPR VSEOS
*         ************                 COMMON STATE                   * 
*                                                                     * 
*     PURPOSE - TO PROCESS END OF SOURCE CONDITION                    * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
          TSTMXF VFEOI,VSEOS2          JUMP IF END OF INFORMATION 
          STATLS VSBTB,VSEOS1          JUMP IF HEADER STATE 
          TPEXIT             -         EXIT CURRENT STATE 
VSEOS1    JUMP   VSEXT,XCUTE -         GO TERMINATE BUFFER AND EXIT 
* 
VSEOS2    STATLS VSBTB,VSEOS4          JUMP IF HEADER STATE 
          STATLS VSEOL,VSEOS3          JUMP IF NOT EOL STATE
          SKIP   VSEOS7      -         GO END TRANSMISSION BLOCK
* 
VSEOS3    RCHAR  B9EOL       -         SET EOL CURRENT CHAR 
          JUMP   CURRENT     -         RETURN TO CURRENT STATE
* 
VSEOS4    TSTMXF VFEOF,VSEOS5          JUMP IF EOF SIGNAL NEEDED
          ALNBUF VBAFCD      -         ALLOCATE EMPTY BUFFER
          SETFLG VBMPT+VBETB,CURN      SET EMPTY BUFFER FLAG
          TPEXIT             -         EXIT TEXT PROCESSING 
* 
VSEOS5    ALNBUF VBTFCD      -         ALLOCATE NEW BUFFER
          RSTRAN 0           -         RESET TRANSLATION
          SETCC  1,5         -         SET COUNTER TO 5 
          RADDC  VCSYNC      -         STORE 5 LEADING SYNCS
          ADDC   VCSOH       -         STORE START OF HEADER
          ADDC   0           -         RESERVE SPACE FOR CLUSTER ADDR 
          ADDC   0           -         RESERVE SPACE FOR TERMINAL ADDR
          TSTMXF VFMD4C,VSEOS6         JUMP IF MODE 4C
          ADDC   VCCW        -         STORE CLEAR WRITE MTI
          SETCC  1,14        -         SET COUNTER TO 14
          RADDC  VCSYNC      -         STORE 14 SYNCS 
          SKIP   VSEOS8      -         GO STORE EOF SIGNAL + TRAILER
VSEOS6    ADDC   VCW         -         STORE WRITE MTI
          SKIP   VSEOS8      -         GO STORE EOF SIGNAL + TRAILER
* 
VSEOS7    TSTMXF VFEOF,VSEOS8          JUMP IF EOF SIGNAL NEEDED
          STATE  VSEXT       -         SET STATE TO EXIT TP 
          JUMP   VSTRL,XCUTE -         GO TERMINATE TRANSMISSION BLOCK
* 
VSEOS8    RSTRAN 0           -         RESET TRANSLATION
          TPSTLC VTESC       -         STORE ESC CHARACTER
          ADDC   VCEOF       -         STORE EOF CHARACTER
          STATE  VSEXT       -         SET STATE TO EXIT TP 
          JUMP   VSTRL,XCUTE -         GO TERMINATE TRANSMISSION BLOCK
          SPC    3
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
          STATPR VSETB
*         ************                 COMMON STATE                   * 
*                                                                     * 
*     PURPOSE - TO END A TRANSMISSION BLOCK                           * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
          TPBKUP LEVEL1,SRC,DST        BACK UP TO START OF LINE 
          TPMOVE VTCCSAV,0   -         RESTORE THE CURRENT CHARACTER
          TPSUBR VTLNCNT,VTACCT        BACK UP ACCOUNTING 
          TPMOVE VTLASTLR,VTLINESR     BACK UP LINES REMAINING
          STATE  VSHDR       -         SET NEXT STATE TO BUILD HEADER 
          JUMP   VSTRL,XCUTE -         GO BUILD TB TRAILER
          SPC    3
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
          STATPR VSTRL
*         ************                 COMMON STATE                   * 
*                                                                     * 
*     PURPOSE - TO ADD TRAILING CHARACTERS                            * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
          RSTRAN 0           -         TURN OFF TRANSLATION 
          TPSTLC VTESC       -         STORE ESC CHARACTER
          ADDC   VCE2        -         STORE E2 TERMINATOR
          ADDC   VCETX       -         STORE ETX CHARACTER
          ALNBUF VBAFCD      -         GET NEW BUFFER FOR ACCOUNTING
          TPSTLC VTACCT      -         STORE LEFT BYTE OF ACCT. 
          TPSTRC VTACCT      -         STORE RIGHT BYTE OF ACCT.
          SETFLG VBETB+VBACCT,CURN     SET ETB AND ACCT. FLAGS
          TPMOVE VTZERO,VTACCT         CLEAR ACCOUNTING COUNT 
          TPSTL  VTZERO,V4PBUFCNT      CLEAR BUFFER COUNT 
          JUMP   CURRENT     -         EXIT TO CURRENT STATE
          SPC    3
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
          STATPR VSEXT
*         ************                 COMMON STATE                   * 
*                                                                     * 
*     PURPOSE - TO EXIT TEXT PROCESSING                               * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
          TIBSWC 0,0         -         TERMINATE TRANSMISSION BUFFER
          TPEXIT             -         EXIT TEXT PROCESSING 
          SPC    3
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
          STATPR VSHDR
*         ************                 COMMON STATE                   * 
*                                                                     * 
*     PURPOSE - TO BUILD TRANSMISSION BLOCK HEADER                    * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
          ALNBUF VBTFCD      -         ALLOCATE NEW BUFFER
          RSTRAN 0           -         RESET TRANSLATION FLAG 
          SETCC  1,5         -         SET COUNTER TO 5 
          RADDC  VCSYNC      -         STORE FIVE LEADING SYNCS 
          ADDC   VCSOH       -         STORE START OF HEADER
          ADDC   0           -         RESERVE SPACE FOR CLUSTER ADDR 
          ADDC   0           -         RESERVE SPACE FOR TERMINAL ADDR
          INTCC  V4TBCNT     -         INITIALIZE TB COUNT
          JUMP   VSBTB,XCUTE -         GO TO START TB 
          SPC    3
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
          STATPR VSBTB
*         ************                 MODE 4A PRU / ASCII FILE STATE * 
*                                                                     * 
*     PURPOSE - TO START A TRANSMISSION BLOCK                         * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
          ADDC   VCCW        -         STORE CLEAR WRITE
          SETCC  1,14        -         SET COUNT TO 14
          RADDC  VCSYNC      -         STORE 14 SYNCS 
          JUMP   VSSOL,XCUTE -         GO START THE LINE
          SPC    3
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
          STATPR VSSOL
*         ************                 COMMON STATE                   * 
*                                                                     * 
*     PURPOSE - TO START THE NEXT LINE
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
          TPMARK LEVEL1      -         MARK BEGINNING OF LINE 
          TPMOVE 0,VTCCSAV   -         SAVE THE CURRENT CHARACTER 
          TPMOVE VTLINESR,VTLASTLR     SAVE THE LINES REMAINING COUNT 
          TSTMXF VFWRAP,VSSOL1         DID PREVIOUS LINE WRAP 
          TPRSTR 0           -         RESTORE CURRENT CHARACTER
          JUMP   VSFC,XCUTE  -         GO PROCESS FC CHAR.
* 
VSSOL1    RCHAR  B9FCS1      -         SUBSTITUTE SINGLE SPACE
          JUMP   VSCC,XCUTE  -         GO PROCESS FORMS CONTROL 
          SPC    3
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
          STATPR VSFC        -         MODE 4A PRU FILE STATE 
          STATPR VSCC        -         MODE 4A PRU / ASCII FILE STATE 
*         ***********                                                 * 
*                                                                     * 
*     PURPOSE - TO (INTERPRET) PROCESS A CARRIAGE CONTROL CHARACTER   * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
          TSTMXF VFSUPRS,VSFC1         TEST FOR SUPRESS FC
          CHARNE B9FCS1,VSFC2          JUMP IF NOT SINGLE SPACE 
VSFC1     SETCC  V4CC1,1     -         SET LINE COUNT = 1 
          SKIP   VSFCC       -         GO STORE SINGLE SPACE
* 
VSFC2     CHARNE B9FCS2,VSFC3          JUMP IF NOT DOUBLE SPACE 
          ADDC   VCFCS2      -         STORE DOUBLE SPACE 
          SETCC  V4CC1,2     -         SET LINE COUNT = 2 
          SKIP   VSFCD       -         GO FINISH FC 
* 
VSFC3     CHARNE B9FCS3,VSFC4          JUMP IF NOT TRIPLE SPACE 
          SKIP   VSFC5       -         GO TO TRIPLE SPACE 
VSFC4     SKIP   VSFC6       -         NOT TRIPLE 
VSFC5     ADDC   VCFCS2      -         STORE DOUBLE SPACE 
          TPSTLC VTESC       -         STORE ESCAPE 
          TPSTRC VTEOL       -         STORE EOL
          DCC    V4TBCNT,VSFCH         DECR. TB COUNT 
          DCC    V4TBCNT,VSFCH         DECR. TB COUNT 
          DCC    V4TBCNT,VSFCH         DECR. TB COUNT 
          SETCC  V4CC1,3     -         SET LINE COUNT = 3 
          SKIP   VSFCC       -         GO STORE SINGLE SPACE
* 
VSFC6     CHARNE B9FCPE,VSFC6A         JUMP IF NOT PAGE EJECT 
          SKIP   VSFC6B      -         GO TO PAGE EJECT 
VSFC6A    SKIP   VSFC7       -         NOT PAGE EJECT 
VSFC6B    ADDC   VCFCPE      -         STORE PAGE EJECT 
          TPCMPR VTPGLEN,VTLINESR      COMPARE PL AND LINES LEFT
          NOPR   0           -         <
          TPMOVE VTZERO,VTLINESR       = PAGE EJECT AT PAGE END 
          TPINCR VTLINESR,1  -         INCR. LINES REMAINING
          TPMOVE VTLINESR,VTLNCNT      SAVE THE LINE COUNT
          TPADDR VTLINESR,VTACCT       ADD LINES REMAINING TO ACCT. 
          TPMOVE VTPGLEN,VTLINESR      SET LINES REMAINING TO PAGE LEN. 
          TPDECR VTLINESR,1  -         DECR. LINES REMAINING BY ONE 
          SKIP   VSFCF       -         GO EXIT FORMS CONTROL
* 
VSFC7     CHARNE B9FCSS,VSFC8          JUMP IF NOT SUPPRESS FC
          ADDC   VCFCSS      -         STORE SUPRESS CHAR.
          TPMOVE VTZERO,VTLNCNT        SAVE THE LINE COUNT OF 0 
          SKIP   VSFCF       -         GO EXIT FORMS CONTROL
* 
VSFC8     CHARNE B9PPPP,VSFC9          JUMP IF NOT P
          STATE  VSPM,EXIT   -         GO CHECK FOR M 
* 
VSFC9     CHARLS B9QQQQ,VSFCA          JUMP IF CHAR. LESS THAN Q
          CHARLS B9UUUU,VSFCB          JUMP IF CHAR. LESS THAN U
VSFCA     SETRAN 0           -         SET TRANSLATION ON 
          STORE  0           -         STORE USER DEFINED FC
          RSTRAN 0           -         RESET TRANSLATION
          SETCC  V4CC1,1     -         SET LINE COUNT = 1 
          SKIP   VSFCD       -         GO FINISH FC 
VSFCB     STATE  VSDIS,EXIT  -         GO DISCARD THE LINE
* 
VSFCC     TPLDL  V4PSINGLE,VTWORK      LOAD SINGLE SPACE
          TPSTRC VTWORK      -         STORE SINGLE SPACE 
VSFCD     TPLDR  V4PCC1,VTLNCNT        SAVE THE LINE COUNT
* 
VSFCE     TPINCR VTACCT,1    -         ADD ONE TO ACCOUNTING
          TPDECR VTLINESR,1  -         DECR. LINES REMAINING
          TPCMPR VTLINESR,VTZERO       TEST LINES REMAINING FOR ZERO
          NOPR   0           -         NOT ZERO 
          TPMOVE VTPGLEN,VTLINESR      RESET LINES REMAINING TO PG. LEN.
          DCC    V4CC1,VSFCF -         DECR. THIS LINE COUNT
          SKIPB  VSFCE       -         COUNT AGAIN
* 
VSFCF     DCC    V4TBCNT,VSFCH         DECR. TB FOR FC CHAR 
          SETRAN 0           -         TURN TRANSLATION ON
          INTCC  V4CLMNCNT   -         INITIALIZE COLUMN COUNT
          TPMOVE VTZERO,VTCOMPRS       CLEAR COMPRESSION COUNT
          TSTMXF VFWRAP,VSFCG          TEST FOR WRAP ON LAST LINE 
          STATE  VSDTA,EXIT  -         GET NEXT CHAR., GO PROCESS DATA
* 
VSFCG     TPRSTR 0           -         RESTORE CURRENT CHAR.
          JUMP   VSDTA       -         GO PROCESS DATA
* 
VSFCH     JUMP   VSETB,XCUTE -         END TRANSMISSION BLOCK 
          SPC    3
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
          STATPR VSDTA
*         ************                 COMMON STATE                   * 
*                                                                     * 
*     PURPOSE - TO PROCESS NORMAL DATA CHARACTERS                     * 
*                                                                     * 
*     METHOD  - AS THIS STATE IS THE MAIN PATH OF BATCH TEXT          * 
*               PROCESSING , IT USES A SPECIAL STATE INSTRUCTION      * 
*               TO OPTIMIZE OVERALL TEXT PROCESSING TIME.             * 
*               THE *CHRMD4* INSTRUCTION OPERATES AS FOLLOWS -        * 
*                                                                     * 
*               THE FIRMWARE WILL REPEATIVELY PICK UP THE NEXT        * 
*               SOURCE CHARACTER , STORE IT WITH TRANSLATION INTO     * 
*               THE DESTINATION BUFFER , AND MAINTAIN THE COLUMN      * 
*               AND TRANSMISSION BLOCK SIZE COUNTERS.                 * 
*               THIS CONTINUES UNTIL ONE OF THE FOLLOWING CONDITIONS  * 
*               IS REACHED. (P = ADDRESS WHERE CONTROL RETURNS)       * 
*                                                                     * 
*               P = P + 1      THREE OR MORE CONSECUTIVE BLANKS FOUND * 
*                              FOLLOWED BY A NON BLANK CHARACTER.     * 
*                              THE BLANKS AND THE CURRENT CHARACTER   * 
*                              ARE NOT STORED , AND FILE REGISTER     * 
*                              *VTCOMPRS* WILL CONTAIN THE NUMBER OF  * 
*                              CONSECUTIVE BLANKS FOUND.              * 
*                                                                     * 
*               P = P + 2      END OF LINE CHARACTER ($FF) FOUND.     * 
*                                                                     * 
*               P = P + 3      COLUMN COUNTER REACHES ZERO AND THE    * 
*                              CURRENT CHARACTER IS NOT A BLANK.      * 
*                              THE CURRENT CHARACTER IS STORED.       * 
*                                                                     * 
*               P = P + 4      COLUMN COUNTER REACHES ZERO AND THE    * 
*                              CURRENT CHARACTER IS A BLANK.          * 
*                              THE BLANK AND ANY PRECEEDING ONES ARE  * 
*                              NOT STORED.                            * 
*                                                                     * 
*               P = P + 5      TRANSMISSION BLOCK SIZE REACHES ZERO.  * 
*                              THE CURRENT CHARACTER IS STORED IF NOT * 
*                              A BLANK.                               * 
*                                                                     * 
*               P = EOS STATE  END OF SOURCE CONDITION IS REACHED.    * 
*                                                                     * 
*               THE FOLLOWING FILE REGISTERS MUST BE SET UP PRIOR TO  * 
*               EXECUTION OF THE *CHRMD4* INSTRUCTION -               * 
*                                                                     * 
*               *VTCOMPRS*     MUST INITIALLY BE SET TO 0.            * 
*                                                                     * 
*               *VTBLANK*      CONTAINS THE DISPLAY CODE OR ASCII     * 
*                              BLANK CHARACTER.                       * 
*                                                                     * 
*               *VTTTADDR*     CONTAINS THE ADDRESS OF THE            * 
*                              APPROPRIATE TRANSLATE TABLE.           * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
          CHRMD4             -         FIRMWARE , DO YOUR STUFF 
* 
          JUMP   VSESP,XCUTE -         GO END COMPRESSION / TRUNCATION
          JUMP   VSELN,XCUTE -         GO PROCESS END OF LINE 
          JUMP   VSWRP,XCUTE -         GO PROCESS WRAP ON A NON-BLANK 
          JUMP   VSWRP,XCUTE -         GO PROCESS LINE WRAP ON A BLANK
          JUMP   VSETB,XCUTE -         GO PROCESS END OF BLOCK
          SPC    3
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
          STATPR VSESP
*         ************                 MODE 4A PRU / ASCII FILE STATE * 
*                                                                     * 
*     PURPOSE - TO END SPACE COMPRESSION AND STORE COUNTS             * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
          RSTRAN 0           -         RESET TRANSLATION
* 
*           STORE MAXIMUM COMPRESSION COUNTS
* 
VSESP2    TPLDL  V4PMAXC,VTWORK        LOAD MAX. COMPRESSION COUNT
          TPCMPR VTCOMPRS,VTWORK       IS COMP. COUNT GE. MAX 
          SKIP   VSESP3      -         <  GO STORE COMP. COUNT
          SKIP   VSESP3      -         =  GO STORE COMP. COUNT
          TPSUBR VTWORK,VTCOMPRS       >  SUBTRACT MAX. FROM COUNT
          TPSTLC VTESC       -         STORE ESC. CHAR
          DCC    V4TBCNT,VSESP7        DECR. TB COUNT 
          TPLDR  V4PMAXC,VTWORK        GET MAX. COMPRESSION CHAR
          TPSTRC VTWORK      -         STORE MAX. COMPRESSION CHAR
          DCC    V4TBCNT,VSESP7        DECR. TB COUNT 
          SKIPB  VSESP2      -         CHECK AGAIN FOR MAX. COUNT 
* 
*           STORE REMAINING COMPRESSION COUNT IF GREATER THAN 2 
* 
VSESP3    TPLDL  V4PBASC,VTWORK        LOAD A VALUE OF 2
          TPCMPR VTCOMPRS,VTWORK       TEST COMP. COUNT > 2 
          SKIP   VSESP6      -         <  COMP. COUNT IS 1
          SKIP   VSESP5      -         =  COMP. COUNT IS 2
          TPSTLC VTESC       -         >  STORE ESC. CHAR 
          DCC    V4TBCNT,VSESP7        DECR. TB COUNT 
          TPLDR  V4PBASC,VTWORK        LOAD BASE COMPRESSION CHAR 
          TPADDR VTCOMPRS,VTWORK       GET COMPRESSION CHAR 
          TPSTRC VTWORK      -         STORE COMPRESSION CHAR 
          DCC    V4TBCNT,VSESP7        DECR. TB COUNT 
          SETRAN 0           -         TURN TRANSLATION BACK ON 
VSESP4    TPRSTR 0           -         RESTORE CURRENT CHARACTER
          TPMOVE VTZERO,VTCOMPRS       CLEAR COMPRESSION COUNT
          JUMP   CURRENT     -         CONTINUE DATA PATH 
* 
*           STORE THE 1 OR 2 REMAINING BLANKS 
* 
VSESP5    SETRAN 0           -         TURN TRANSLATION ON
          TPSTRC VTBLANK     -         STORE BLANK CHARACTER
          DCC    V4TBCNT,VSESP7        DECR. TB COUNT 
* 
VSESP6    SETRAN 0           -         TURN TRANSLATION ON
          TPSTRC VTBLANK     -         STORE BLANK CHARACTER
          DCC    V4TBCNT,VSESP7        DECR. TB COUNT 
          SKIPB  VSESP4      -         CONTINUE DATA PATH 
* 
VSESP7    JUMP   VSETB,XCUTE -         GO PROCESS END OF BLOCK
          SPC    3
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
          STATPR VSDIS
*         ************                 COMMON STATE                   * 
*                                                                     * 
*     PURPOSE - TO DISCARD A LINE                                     * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
          CHARNE B9EOL,VSDIS1          TEST FOR EOL 
          STATE  VSSOL,EXIT  -         DISCARD FF AND GO TO SOL 
* 
VSDIS1    TPMARK LEVEL1      -         MARK SOURCE FOR TIP TO RELEASE 
          NOPR   EXIT        -         DISCARD CHARACTER
          SPC    3
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
          STATPR VSPM 
*         ***********                  MODE 4A / 4C PRU FILE STATE    * 
*                                                                     * 
*     PURPOSE - TO LOOK FOR M AFTER P FOR PM MESSAGE                  * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
          CHARNE B9MMMM,VSPM1          TEST FOR CHAR. M 
          STATE  VSSPM       -         PM MESSAGE FOUND 
          JUMP   VSTRL,XCUTE -         GO TERMINATE TB
* 
VSPM1     SETMXF VFWRAP      -         SET WRAP FLAG TO SAVE CHAR.
          TSTMXF VFMD4C,VSPM2          SKIP IF MODE 4C
          RCHAR  B9PPPP      -         RESTORE P CARRIAGE CONTROL 
          SKIPB  VSFCA       -         STORE USER DEFINED CC
* 
VSPM2     SKIP   VCFC1       -         REPLACE WITH A SINGLE SPACE
          SPC    3
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
          STATPR VSSPM
*         ************                 MODE 4A / 4C PRU FILE STATE    * 
*                                                                     * 
*     PURPOSE - TO START PM MESSAGE PROCESSING                        * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
          ALNBUF 14          -         GET BUFFER FOR PM
          RSTRAN 0           -         TURN TRANSLATION OFF 
          ADDC   B9PPPP      -         STORE P
          ADDC   B9MMMM      -         STORE M
          SETFLG VBPM,CURN   -         SET PM FLAG IN THE BUFFER
          SETCC  V4CC1,78    -         SET MAX PM SIZE
          STATE  VSPMS,EXIT  -         GO STORE PM MESSAGE
          SPC    3
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
          STATPR VSPMS
*         ************                 COMMON STATE                   * 
*                                                                     * 
*     PURPOSE - TO STORE PM MESSAGE CHARACTERS                        * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
          CHARNE B9EOL,VSPMS1          TEST FOR EOL 
          SETFLG VBETB,CURN  -         SET END OF TB FLAG 
          STATE  VSHDR,EXIT  -         GO BUILD TB HEADER 
* 
VSPMS1    CNTNE  V4CC1,0,VSPMS2        TEST IF DISCARDING AFTER 78
          TPMARK LEVEL1      -         MARK SOURCE FOR TIP TO RELEASE 
          NOPR   EXIT        -         DISCARD CHARACTER
* 
VSPMS2    DCC    V4CC1,VSPMS3,STOREXIT DECR. 78 COUNT AND STORE CHAR. 
* 
VSPMS3    NOPR   STOREXIT    -         STORE 78TH CHARACTER 
          SPC    3
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
          STATPR VSWRP
*         ************                 COMMON STATE                   * 
*                                                                     * 
*     PURPOSE - TO PROCESS LINE WRAP                                  * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
          TPMARK LEVEL2,SRC  -         MARK LAST CHARACTER OF LINE
          SETCC  V4CC1,255   -         SET MAXIMUM NUMBER OF
          TPLDL  V4PCC1,VTWORK         TRAILING BLANKS HANDLED
          STATE  VSCHB,EXIT  -         CHECK FOR BLANKS OR EOL
          SPC    3
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
          STATPR VSCHB
*         ************                 MODE 4A / 4C PRU FILE STATE    * 
*                                                                     * 
*     PURPOSE - TO PROCESS BLANK CHARACTERS AFTER LINE WRAP           * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
          CHARNE B9EOL,VSCHB1          TEST FOR EOL CHARACTER 
          JUMP   VSELN,XCUTE -         DISCARD EOL CHARACTER
* 
VSCHB1    CHARNE B9BLANK,VSCHB2        TEST FOR BLANK CHARACTER 
          TPINCR VTCOMPRS,1  -         INCR NUMBER OF TRAILING BLANKS 
          TPCMPR VTCOMPRS,VTWORK       COMPARE WITH MAXIMUM 
          NOPR   EXIT        -         < MAX  CONTINUE COUNTING BLANKS
          NOPR   0           -         = MAX  END CURRENT LINE
VSCHB2    TPBKUP LEVEL2,SRC  -         BACK UP TO LAST CHARACTER
          SETMXF VFWRAP      -         SET LINE WRAP FLAG 
          STATE  VSEOL,EXIT  -         GO PROCESS EOL, GET NEXT 
          SPC    3
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
          STATPR VSELN
*         ************                 COMMON STATE                   * 
*                                                                     * 
*     PURPOSE - TO PROCESS FF DETECTED (END OF LINE)                  * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
          RSTMXF VFWRAP      -         RESET LINE WRAP FLAG 
          STATE  VSEOL,EXIT  -         GO PROCESS EOL, GET NEXT 
          SPC    3
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
          STATPR VSEOL
*         ************                 COMMON STATE                   * 
*                                                                     * 
*     PURPOSE - TO PROCESS END OF LINE                                * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
VSEOL1    TPMARK LEVEL1      -         MARK BEGINNING OF NEXT LINE
          TPMOVE 0,VTCCSAV   -         SAVE THE CURRENT CHARACTER 
          TPMOVE VTLINESR,VTLASTLR     SAVE LINES REMAINING 
          TPLD   V4PCC2,VTCOMPRS       GET TB COUNT REMAINING 
          TPCMPR VTCOMPRS,VTSLACK      IS TB COUNT GT SLACK 
          SKIP   VSEOL4      -         < NO, TERMINATE TB 
          SKIP   VSEOL4      -         = NO, TERMINATE TB 
          RSTRAN 0           -         > RESET TRANSLATION
          TSTMXF VFMD4C,VSEOL2         TEST IF M4 C PRINTER 
          TPSTLC VTESC       -         STORE END OF LINE
          DCC    V4TBCNT,VSEOL5        DECR. TB COUNT 
          TPSTRC VTEOL       -           *
          DCC    V4TBCNT,VSEOL5        DECR. TB COUNT 
* 
VSEOL2    TSTMXF VFWRAP,VSEOL3         TEST FOR LINE WRAP 
          TPRSTR 0           -         RESTORE CURRENT CHAR.
          JUMP   VSFC,XCUTE  -         GO PROCESS FORMS CONTROL 
* 
VSEOL3    RCHAR  B9FCS1      -         SUBSTITUTE SPACE 1 FC
          JUMP   VSCC,XCUTE  -         GO PROCESS FORMS CONTROL 
* 
VSEOL4    STATE  VSHDR       -         SET NEXT STATE TO BUILD HEADER 
          JUMP   VSTRL,XCUTE -         GO BUILD TB TRAILER
* 
VSEOL5    JUMP   VSETB,XCUTE -         GO TERMINATE TB
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*     S P E C I A L   S T A T E S   F O R   A S C I I   F I L E S     * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
          SPC    3
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
          STATPR VAFC 
*         ***********                  MODE 4A / 4C ASCII FILE STATE  * 
*                                                                     * 
*     PURPOSE - TO INTERPRET A CARRIAGE CONTROL CHARACTER             * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
          CHARNE B8FCS1,VACC1          JUMP IF NOT SINGLE SPACE 
          RCHAR  B9FCS1      -         CHANGE TO DISPLAY CODE 
          JUMP   VSCC,XCUTE  -         GO PROCESS FORMS CONTROL 
* 
VACC1     CHARNE B8FCS2,VACC2          JUMP IF NOT DOUBLE SPACE 
          RCHAR  B9FCS2      -         CHANGE TO DISPLAY CODE 
          JUMP   VSCC,XCUTE  -         GO PROCESS FORMS CONTROL 
* 
VACC2     CHARNE B8FCS3,VACC3          JUMP IF NOT TRIPLE SPACE 
          RCHAR  B9FCS3      -         CHANGE TO DISPLAY CODE 
          JUMP   VSCC,XCUTE  -         GO PROCESS FORMS CONTROL 
* 
VACC3     CHARNE B8FCPE,VACC4          JUMP IF NOT PAGE EJECT 
          RCHAR B9FCPE       -         CHANGE TO DISPLAY CODE 
          JUMP   VSCC,XCUTE  -         GO PROCESS FORMS CONTROL 
* 
VACC4     CHARNE B8FCSS,VACC5          JUMP IF NOT SUPPRESS FC
          RCHAR  B9FCSS      -         CHANGE TO DISPLAY CODE 
          JUMP   VSCC,XCUTE  -         GO PROCESS FORMS CONTROL 
* 
VACC5     CHARNE B8PPPP,VACC6          JUMP IF NOT P
          STATE  VAPM,EXIT   -         GO CHECK FOR M 
* 
VACC6     CHARLS B8QQQQ,VACC7          JUMP IF CHAR. LESS THAN Q
          CHARLS B8UUUU,VACC9          JUMP IF CHAR. LESS THAN U
VACC7     TSTMXF VFMD4C,VACC8          JUMP IF MODE 4C
          SKIPB  VSFCA       -         GO STORE USER DEFINED FC 
VACC8     SKIP   VCFC1       -         REPLACE WITH SINGLE SPACE
* 
VACC9     STATE  VSDIS,EXIT  -         GO DISCARD THE LINE
          SPC    3
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
          STATPR VAPM 
*         ***********                  MODE 4A / 4C ASCII FILE STATE  * 
*                                                                     * 
*     PURPOSE - TO LOOK FOR M AFTER P FOR PM MESSAGE                  * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
          CHARNE B8MMMM,VAPM1          TEST FOR CHAR. M 
          STATE  VASPM       -         PM MESSAGE FOUND 
          JUMP   VSTRL,XCUTE -         GO TERMINATE TB
* 
VAPM1     SETMXF VFWRAP      -         SET WRAP FLAG TO SAVE CHAR.
          TSTMXF VFMD4C,VAPM2          SKIP IF MODE 4C
          RCHAR  B8PPPP      -         RESTORE P CARRIAGE CONTROL 
          SKIPB  VSFCA       -         STORE USER DEFINED CC
* 
VAPM2     SKIP   VCFC1       -         GO REPLACE WITH A SINGLE SPACE 
          SPC    3
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
          STATPR VASPM
*         ************                 MODE 4A / 4C ASCII FILE STATE  * 
*                                                                     * 
*     PURPOSE - TO START PM MESSAGE PROCESSING                        * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
          ALNBUF 14          -         GET BUFFER FOR PM
          RSTRAN 0           -         TURN TRANSLATION OFF 
          ADDC   B8PPPP      -         STORE P
          ADDC   B8MMMM      -         STORE M
          SETFLG VBPM,CURN   -         SET PM FLAG IN THE BUFFER
          SETCC  V4CC1,78    -         SET MAX PM SIZE
          STATE  VSPMS,EXIT  -         GO STORE PM MESSAGE
          EJT 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
          STATPR VACHB
*         ************                 MODE 4A / 4C ASCII FILE STATE  * 
*                                                                     * 
*     PURPOSE - TO PROCESS BLANK CHARACTERS AFTER LINE WRAP           * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
          CHARNE B9EOL,VACHB1          TEST FOR EOL CHARACTER 
          JUMP   VSELN,XCUTE -         DISCARD EOL CHARACTER
* 
VACHB1    CHARNE B8BLANK,VACHB2        TEST FOR BLANK CHARACTER 
          TPINCR VTCOMPRS,1  -         INCR NUMBER OF TRAILING BLANKS 
          TPCMPR VTCOMPRS,VTWORK       COMPARE WITH MAXIMUM 
          NOPR   EXIT        -         < MAX  CONTINUE COUNTING BLANKS
          NOPR   0           -         = MAX  END CURRENT LINE
VACHB2    TPBKUP LEVEL2,SRC  -         BACK UP TO LAST CHARACTER
          SETMXF VFWRAP      -         SET LINE WRAP FLAG 
          STATE  VSEOL,EXIT  -         GO PROCESS EOL, GET NEXT 
          SPC    3
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*     S P E C I A L   S T A T E S   F O R   M O D E   4 C             * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
          SPC    3
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
          STATPR VCBTB
*         ************                 MODE 4C PRU / ASCII FILE STATE * 
*                                                                     * 
*     PURPOSE - TO BEGIN A TRANSMISSION BLOCK                         * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
          ADDC   VCW         -         STORE WRITE MTI
          JUMP   VSSOL,XCUTE -         GO TO START OF LINE
          SPC    3
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
          STATPR VCFC        -         MODE 4C PRU FILE STATE 
          STATPR VCCC        -         MODE 4C PRU / ASCII FILE STATE 
*         ***********                                                 * 
*                                                                     * 
*     PURPOSE - TO (INTERPRET) PROCESS A CARRIAGE CONTROL CHARACTER   * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
          TSTMXF VFSUPRS,VCFC1         TEST FOR SUPRESS FC
          CHARNE B9FCS1,VCFC2          JUMP IF NOT SINGLE SPACE 
VCFC1     SETCC  V4CC1,1     -         SET LINE COUNT = 1 
          SKIP   VCFCF       -         GO STORE SINGLE SPACE
* 
VCFC2     CHARNE B9FCS2,VCFC3          JUMP IF NOT DOUBLE SPACE 
          SETCC  V4CC1,2     -         SET LINE COUNT = 2 
          SKIP   VCFCF       -         GO FINISH FC 
* 
VCFC3     CHARNE B9FCS3,VCFC4          JUMP IF NOT TRIPLE SPACE 
          SETCC  V4CC1,3     -         SET LINE COUNT = 3 
          SKIP   VCFCF       -         GO FINISH FC 
* 
VCFC4     CHARNE B9FCPE,VCFC5          JUMP IF NOT PAGE EJECT 
          SKIP   VCFC6       -         GO TO PAGE EJECT 
VCFC5     SKIP   VCFCA       -         NOT PAGE EJECT 
VCFC6     TSTMXF VFIP,VCFC8  -         TEST FOR IMPACT PRINTER
          TSTMXF VFPAGE,VCFC7          NON-IMPACT, TEST PAGING
          SETCC  V4CC1,6     -         NON-IMPACT NO PAGING 
          SKIP   VCFCF       -         GO FINISH FC 
VCFC7     SKIP   VCFC9       -
VCFC8     ADDC   VC4CPE      -         STORE PAGE EJECT 
          TPCMPR VTPGLEN,VTLINESR      COMPARE PL AND LINES LEFT
          NOPR   0           -         <
          TPMOVE VTZERO,VTLINESR       = PAGE EJECT AT PAGE END 
          TPINCR VTLINESR,1  -         INCR. LINES REMAINING
          TPMOVE VTLINESR,VTLNCNT      SAVE THE LINE COUNT
          TPADDR VTLINESR,VTACCT       ADD LINES REMAINING TO ACCT. 
          TPMOVE VTPGLEN,VTLINESR      SET LINES REMAINING TO PAGE LEN. 
          TPDECR VTLINESR,1  -         DECR. LINES REMAINING BY ONE 
          SKIP   VCFCL       -         GO EXIT FORMS CONTROL
VCFC9     TPSTR  VTLINESR,V4PCC1       LINES REMAINING TO CC1 
          ICC    V4CC1       -         INCREMENT LINES REMAINING
          SKIP   VCFCF       -         GO STORE CR/LINE FEEDS TO EOP
* 
VCFCA     CHARNE B9FCSS,VCFCB          JUMP IF NOT SUPPRESS FC
          ADDC   VC4CCR      -         STORE SUPRESS CHAR.
          TPMOVE VTZERO,VTLNCNT        SET LINE COUNT = 0 
          SKIP   VCFCL       -         GO EXIT FORMS CONTROL
* 
VCFCB     CHARNE B9PPPP,VCFCC          JUMP IF NOT P
          STATE  VCPM,EXIT   -         GO CHECK FOR M 
* 
VCFCC     CHARLS B9QQQQ,VCFCD          JUMP IF CHAR. LESS THAN Q
          CHARLS B9UUUU,VCFCE          JUMP IF CHAR. LESS THAN U
VCFCD     SETCC  V4CC1,1     -         SET LINE COUNT = 1 
          SKIP   VCFCF       -         GO FINISH FC 
VCFCE     STATE  VSDIS,EXIT  -         GO DISCARD THE LINE
* 
VCFCF     TPLDR  V4PCC1,VTLNCNT        SAVE THE LINE COUNT
VCFCG     ADDC   VC4CLF      -         STORE NEW LINE CHARACTER 
          TPINCR VTACCT,1    -         ADD ONE TO ACCOUNTING
          TSTMXF VFPAGE,VCFCH          TEST FOR PAGING
          SKIP   VCFCK       -         NOT PAGING, SKIP 
VCFCH     TPDECR VTLINESR,1  -         DECR. LINES REMAINING
          TPCMPR VTLINESR,VTZERO       TEST LINES REMAINING FOR ZERO
          NOPR   0           -         NOT ZERO 
          SKIP   VCFCI       -         = ZERO 
          SKIP   VCFCK       -         NOT ZERO 
VCFCI     TSTMXF VFIP,VCFCJ  -         TEST FOR IMPACT PRINTER
          TPLDR  V4PCC1,VTWORK         MOVE LINE COUNT TO WORK REG. 
          TPINCR VTWORK,6    -         ADD 6 FOR END OF PAGE
          TPSTR  VTWORK,V4PCC1         MOVE COUNT BACK
          TPMOVE VTPGLEN,VTLINESR      RESET LINES REMAINING
          TPINCR VTLINESR,6  -         ADD 6 TO LINES REMAINING 
          SKIP   VCFCK       -         GO DECR. COUNTS
VCFCJ     TPMOVE VTPGLEN,VTLINESR      RESET LINES REMAINING TO PG. LEN.
VCFCK     DCC    V4CC1,VCFCL -         DECR. THIS LINE COUNT
          DCC    V4TBCNT,VCFCN
          SKIPB  VCFCG       -         COUNT AGAIN
* 
VCFCL     DCC    V4TBCNT,VCFCN         DECR. TB FOR FC CHAR 
          SETRAN 0           -         TURN TRANSLATION ON
          INTCC  V4CLMNCNT   -         INITIALIZE COLUMN COUNT
          TPMOVE VTZERO,VTCOMPRS       CLEAR COMPRESSION COUNT
          TSTMXF VFWRAP,VCFCM          TEST FOR WRAP ON LAST LINE 
          STATE  VSDTA,EXIT  -         GET NEXT CHAR., GO PROCESS DATA
* 
VCFCM     TPRSTR 0           -         RESTORE CURRENT CHAR.
          JUMP   VSDTA       -         GO PROCESS DATA
* 
VCFCN     JUMP   VSETB,XCUTE -         GO END TRANSMISSION BLOCK
          SPC    3
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
          STATPR VCESP
*         ************                 MODE 4C PRU / ASCII FILE STATE * 
*                                                                     * 
*     PURPOSE - TO END BLANK TRUNCATION                               * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* 
* 
*           STORE BACK ALL BLANKS 
* 
VCESP2    TPCMPR VTCOMPRS,VTZERO       TEST FOR ZERO COUNT
          SKIP   VCESP3      -         <  END BLANK REPLACEMENT 
          SKIP   VCESP3      -         =  END BLANK REPLACEMENT 
          ADDC   VCABLANK    -         >  STORE A BLANK 
          DCC    V4TBCNT,VCESP4        DECR. TB COUNT 
          TPDECR VTCOMPRS,1  -         DECR. BLANK COUNT
          SKIPB  VCESP2      -         GO CHECK IF ANY MORE 
* 
VCESP3    TPMOVE VTZERO,VTCOMPRS       CLEAR COMPRESSION COUNT
          JUMP   CURRENT     -         CONTINUE DATA PATH 
* 
VCESP4    JUMP   VSETB,XCUTE -         GO PROCESS END OF BLOCK
          END 
