         PROC  &P,1,&CTLCHR=,&CONTROL=,&MUXPER=,&PRINTOV=,             XPRI00010
               &SECT=YES,&LIST=YES                                      PRI00020
PRIO     NAME  1         J. BILL  90/30 PRINTER SYSTEM PROC  10/29/73   PRI00030
         GBL   &DP$PR1                                                  PRI00040
         GBL   &DU$SA                   GBL TO PREVENT 2 SA$DSECT CALLS PRI00050
         LCL   &SFAC                    DIGIT FIELD OF FACILITY CODE    PRI00060
         LCL   &SA                                                      PRI00070
         LCL   &SM                                                      PRI00080
         LCL   &SMUX               1 IF MUXPER SPEC ELSE 0              PRI00090
         LCL   &SLST                                                    PRI00100
&SFAC    SET   0                                                        PRI00110
&SM      SET   1                                                        PRI00120
&SLST    SET   0                                                        PRI00130
         EJECT                                                          PRI00140
         DO    &P(0)=1                                                  PRI00150
         DS    0H                                                       PRI00160
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  *  PRI00170
*                                                                    *  PRI00180
*   THE FOLLOWING PROGRAMS ARE THE SOLE PROPERTY OF SPERRY           *  PRI00190
*                                                                    *  PRI00200
* UNIVAC CONTAINING ITS PROPRIETARY, CONFIDENTIAL INFORMATION        *  PRI00210
*                                                                    *  PRI00220
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  *  PRI00230
*                                                                       PRI00240
*       DATA MANAGEMENT PRINTER SYSTEM                                  PRI00250
*                                                                       PRI00260
*                                                                       PRI00270
*              PRINTER COMMON MODULE                                    PRI00280
*                                                                       PRI00290
         DO    '&DP$PR1'=''                                             PRI00300
&DP$PR1  SET   0                                                        PRI00310
         DO    '&LIST'='YES'                                            PRI00320
&SLST    SET   1                                                        PRI00330
         ENDO                                                           PRI00340
         DO    '&CONTROL'=''=0                                          PRI00350
&SFAC    SET   &SFAC+1                  SET CONTROL FACILITY CODE BIT   PRI00360
         DO    '&CONTROL'='YES'=0                                       PRI00370
         PNOTE *,'CONTROL SPECIFICATION CHECK. SHOULD BE: CONTROL=YES.' PRI00380
         ENDO                                                           PRI00390
         ENDO                                                           PRI00400
         DO    '&CTLCHR'=''=0                                           PRI00410
&SFAC    SET   &SFAC+2                  SET CTLCHR FACILITY CODE BIT    PRI00420
         DO    '&CTLCHR'='YES'=0                                        PRI00430
         PNOTE *,'CTLCHR SPECIFICATION CHECK.  SHOULD BE: CTLCHR=YES.'  PRI00440
         ENDO                                                           PRI00450
         ENDO                                                           PRI00460
         DO    '&PRINTOV'=''=0                                          PRI00470
&SFAC    SET   &SFAC+4                  SET PRINTOV FACILITY CODE BIT   PRI00480
         DO    '&PRINTOV'='YES'=0                                       PRI00490
         PNOTE *,'PRINTOV SPECIFICATION CHECK. SHOULD BE: PRINTOV=YES.' PRI00500
         ENDO                                                           PRI00510
         ENDO                                                           PRI00520
         DO    '&SECT'='YES'                                            PRI00530
DP$COM&SFAC  CSECT                                                      PRI00540
         ENDO                                                           PRI00550
         DO    '&SECT'='YES'=0                                          PRI00560
DP$COM&SFAC   EQU   *                                                   PRI00570
         ENTRY DP$COM&SFAC                                              PRI00580
         ENDO                                                           PRI00590
         DO    &SFAC=0                                                  PRI00600
         GOTO  .L2                                                      PRI00610
         ENDO                                                           PRI00620
DP$COM0  EQU   *                                                        PRI00630
         ENTRY DP$COM0                                                  PRI00640
         DO    (&SFAC<3)++(&SFAC=4)                                     PRI00650
         GOTO  .L2                                                      PRI00660
         ENDO                                                           PRI00670
.L1      LABEL                          LABELS.                         PRI00680
&SA      SET   &SFAC**&SM                                               PRI00690
         DO    &SA=0=0                                                  PRI00700
DP$COM&SA    EQU   *                                                    PRI00710
         ENTRY DP$COM&SA                                                PRI00720
         ENDO                                                           PRI00730
         DO    &SFAC=7                                                  PRI00740
&SA      SET   &SFAC--&SM                                               PRI00750
DP$COM&SA    EQU   *                                                    PRI00760
         ENTRY DP$COM&SA                                                PRI00770
         ENDO                                                           PRI00780
&SM      SET   &SM*2                                                    PRI00790
         DO    &SM=8                                                    PRI00800
         GOTO  .L2                                                      PRI00810
         ENDO                                                           PRI00820
         GOTO  .L1                                                      PRI00830
.L2      LABEL                                                          PRI00840
&SMUX    SET   0                                                        PRI00850
         DO    '&MUXPER'=''=0                                           PRI00860
&SMUX    SET   1                                                        PRI00870
         ENDO                                                           PRI00880
*#  E                                                                   PRI00890
*#       N     'OS/3 PRINTER SYSTEM' 'COMMON ROUTINE'                   PRI00900
         USING *,15                                                     PRI00910
         USING DM$DSCT,1                                                PRI00920
         USING SA$DSECT,13                                              PRI00930
         B     DP$C005                                                  PRI00940
         DC    XL3'4004F0'                                              PRI00950
         DC    CL1'&SFAC'                                               PRI00960
         DC    XL2'6921'                76/9/21                         PRI00961
         DC    5F'0'                    PATCH AREA                      PRI00962
DP$C005  TSTBIT DP$B310,DC$CCB     . # D DP$C010 NO YES 'SAVAREA KEYWD# PRI00980
         BZ    DP$C010             . # RD SPECIFIED?'                   PRI00990
         ST    13,DP$SAVR          . # P 'STORE REG 13 IN DTF'          PRI01000
         L     13,DP$SAV           . # P 'SAVE AREA ADDR FR DTF TO R13' PRI01010
DP$C010  STM   14,12,12(13)        . # P 'SAVE USER''S REGISTERS'       PRI01020
         ST    14,SA$R15           . # P 'STORE USER''S R14 IN SA R15'# PRI01030
*#                                       'FOR LATER RETURN TO USER'     PRI01040
         LA    10,DP$W000       . #.X P 'ADDR WAIT/CHK RTN TO R10'      PRI01050
         LA    11,DP$R000          . # P 'ADDR ERROR/RETURN SUBRTN-R11' PRI01060
         MVI   DP$EFG,X'00'        . # P 'RESET ERROR FLAG BITS'        PRI01070
         TSTBIT DP$B150,DC$CCB     . # D DP$C050 YES NO 'FILE OPEN?'    PRI01080
         BO    DP$C050                                                  PRI01090
         MVI   DP$ERR,DP$E11       . # P 'FILE NOT OPEN ERR CDE T DTF'  PRI01100
         SETBIT DP$EB02,DC$CCB     . # P 'SET INVALID IMP MAC ER FL BI' PRI01110
         BR    11                  . # B DP$R000 'ERROR/RETURN SUBRTN'  PRI01120
DP$C050  EQU   *                   . # N                                PRI01130
         TSTBIT DP$B115,DC$CCB     . # D REF.PC6A YES NO 'DISABLE IMPE# PRI01140
         BOR   11                  . # RATIVE MACROS?'                  PRI01150
*                                                                       PRI01160
*        IMPERATIVE MACRO INTERPRETATION                                PRI01170
*# E                                                                    PRI01180
DP$C100  EQU   *                   . # N                                PRI01190
         CLI   DP$REQS,X'20'       . # D REF.PC7 YES NO 'IS THIS A PUT' PRI01200
         BE    DP$P000                                                  PRI01210
         DO    '&CONTROL'=''=0    . # N 'BEGIN CONTROL DEPENDENT CODE'  PRI01220
         TSTBIT  DP$B050,DC$CCB    . # D DP$C103 NO YES 'CONTROL SPEC?' PRI01230
         BZ    DP$C103                                                  PRI01240
         CLI   DP$REQS,X'4B'       . # D REF.PC8 YES NO 'CNTRL SP?'     PRI01250
         BE    DP$F010                                                  PRI01260
         CLI   DP$REQS,X'4C'       . # D REF.PC9 YES NO 'CNTRL SK?'     PRI01270
         BE    DP$F000                                                  PRI01280
DP$C103  EQU   *                   . # N                                PRI01290
         ENDO                                                           PRI01300
         DO    '&PRINTOV'=''=0     . # N 'PRINTOV DEPEND CODING:'       PRI01310
         TSTBIT DP$B270,DC$CCB     . # D DP$C130 YES NO 'PRINTOV=YES?'  PRI01320
         BO    DP$C130                                                  PRI01330
         ENDO                      . # N 'END PRINTOV DEPEND CODE'      PRI01340
DP$C105  MVI   DP$ERR,DP$E02       . # P 'INVALID IMPER MACRO CHAR TO # PRI01350
*#               DTF'                                                   PRI01360
         SETBIT DP$EB02,DC$CCB     . # P 'SET INVALID IMPERATIVE M BIT' PRI01370
         BR    11                  . # B DP$R000 'ERROR/RETURN SUBRTN'  PRI01380
*#REF.PC6A     B DP$R000  'ERROR/RETURN SUBRTN'                         PRI01390
*#REF.PC7 B DP$P000 'PUT ROUTINE'                                       PRI01400
*#REF.PC8 B DP$F010 'CONTROL RTN - SP ENTRY'                            PRI01410
*#REF.PC9 B DP$F000 'CONTROL RTN - SK ENTRY'                            PRI01420
         DO    '&PRINTOV'=''=0                                          PRI01430
DP$C130  CLI   DP$REQS,X'8B'       . # D DP$C140 YES NO 'PRTOV 9 OR 12# PRI01440
         BE    DP$C140             . #  MACRO?'                         PRI01450
         CLI   DP$REQS,X'8C'                                            PRI01460
         BE    DP$C140                                                  PRI01470
         B     DP$C105             . # B DP$C105                        PRI01480
DP$C140  TSTBIT DP$B170,DC$CCB     . # D REF.PC3 NO YES 'OVERFLOW SENS# PRI01490
         BZR   11                  . # ED ?'                            PRI01500
         B     DP$V000             . # B DP$V000 'PRINTOV RTN ENTRY P1' PRI01510
*#REF.PC3      B  DP$R000 'ERROR/RETURN SUBRTN'                         PRI01520
         ENDO                                                           PRI01530
*# E                                                                    PRI01540
         DO    '&PRINTOV'=''=0     . # N 'PRINTOV DEPENDENT CODE'       PRI01550
         EJECT                                                          PRI01560
*# N 'PRINTOV ROUTINE'                                                  PRI01570
*# N 'PRTOV MACRO ENTRY POINT-' 'FROM COMMON ROUTINE'                   PRI01580
DP$V000  EQU   *                   . # N                                PRI01590
         CLRBIT DP$B610,DC$CCB     . # P 'CLEAR PRINTV=SK,SYMB &PRTOV9' PRI01600
         DO    &SMUX               . # N 'DO FOR MUX DEV'               PRI01610
         CLI   DP$REQS,X'8B'       . # D DP$V010 NO YES 'PRTOV 9?'      PRI01620
         BNE   DP$V010                                                  PRI01630
         SETBIT DP$B285,DC$CCB     . # P 'SET PRTOV 9 BIT'              PRI01640
DP$V010  EQU   *                   . # N                                PRI01650
         ENDO                      . # N 'END MUX DEV CODE'             PRI01660
         LTR   0,0                 . # D DP$V020 NO YES 'USER PRINTOV # PRI01670
         BZ    DP$V020             . # ROUTINE ?'                       PRI01680
         ST    0,DP$POV            . # P 'USER PRINTOV RTN ADDR TO DTF' PRI01690
         B     DP$V030             . # B DP$V030                        PRI01700
DP$V020  SETBIT DP$B250,DC$CCB     . # P 'SET PRINTOV=SKIP BIT'         PRI01710
*# N 'ENTRY POINT FROM PUT AND CONTROL ROUTINES'                        PRI01720
DP$V030  EQU   *                   . # N                                PRI01730
         DO    &SMUX               . # N 'DO FOR MUX DEV'               PRI01740
         TSTBIT DP$B410,DC$CCB     . # D DP$V050 NO YES '0770 PRINTER?' PRI01750
         BZ    DP$V050                                                  PRI01760
         TSTBIT DP$B720,DC$CCB     . # D DP$V050 YES NO 'PRTOV 9 AND  # PRI01765
         BNM   DP$V050                                                  PRI01770
         BR    11                                                       PRI01780
DP$V050  EQU   *                   . # N                                PRI01820
         ENDO                      . # N 'END MUX DEV CODE'             PRI01830
*# E                                                                    PRI01840
         CLRBIT  DP$B680,DC$CCB    . # P 'CLEAR OVERFLOW BITS'          PRI01845
         TSTBIT DP$B660,DC$CCB     . # D DP$V055 YES NO 'ONE I/O AREA # PRI01850
         BZ    DP$V055             . # WITH NO WORK AREA?'              PRI01860
         BALR  14,10               . # S DP$W000 'WAIT/CHECK ROUTINE'   PRI01870
DP$V055  EQU   *                   . # N                                PRI01880
         TSTBIT DP$B250,DC$CCB     . # D DP$V060 YES NO 'PRINTOV=SKIP # PRI01890
         BO    DP$V060             . # BIT SET ?'                       PRI01900
         L     2,DP$POV            . # P 'USER PRINTOV ROUTINE ADDR'  # PRI01910
         ST    2,SA$R15            . #   'TO SAVE AREA R15'             PRI01920
         BR    11                  . # B DP$R000 'ERROR/RETURN SUBRTN'  PRI01930
DP$V060  EQU   *
         MVI   DP$CW1C,X'BF'      . # P 'SKIP HOME PAPER CDE TO CCW'    PRI01960
         DO    '&CONTROL'=''=0                                          PRI01970
         TSTBIT  DP$B200,DC$CCB         IMMEDIATE CNTRL SW              PRI01980
         BO    DP$V070                  IF NOT SET                      PRI01990
         ENDO                                                           PRI02000
         SETBIT DP$B280,DC$CCB     . # P 'SET PRINTOV ON SW'            PRI02010
         DO    '&CONTROL'=''=0                                          PRI02020
DP$V070  EQU   *                                                        PRI02030
         ENDO                                                           PRI02040
         EXCP  (1)                 . # O 'EXCP'                         PRI02050
         TSTBIT DP$B660,DC$CCB     . # D REF.PV1 YES NO '2 I/O AREAS  # PRI02060
         BNZR  11                  . # OR WORK AREA?'                   PRI02070
         BALR  14,10               . # S DP$W000 'WAIT/CHECK ROUTINE'   PRI02080
         BR    11                  . # B DP$R000 'ERROR/RETURN SUBRTN'  PRI02090
*#REF.PV1 B DP$R000 'ERROR/RETURN SUBRTN'                               PRI02100
         ENDO                      . # N 'END PRINTOV DEPENDENT CODE'   PRI02110
         DO    '&CONTROL'=''=0     . # N 'CONTROL DEPENDENT CODE'       PRI02120
*# E                                                                    PRI02130
*# N 'CONTROL ROUTINE'                                                  PRI02140
         EJECT                                                          PRI02150
*# N 'ENTRY FOR CNTRL SK                                                PRI02160
DP$F000  SETBIT DP$B315,DC$CCB     . # P 'SET SKIP BIT OPCODE GEN SUBR' PRI02170
DP$F010  EQU   *                   . # N 'ENTRY FOR CNTRL SP'           PRI02180
         CLRBIT DP$B605,DC$CCB     . # P 'CLEAR 3 CNTRL SWITCHES'       PRI02200
         SR    2,2                 . # P 'CLEAR REG 2'                  PRI02210
         TSTBIT DP$B660,DC$CCB     . # D DP$F015 YES NO 'ONE I/O AREA # PRI02220
         BZ    DP$F015             . # WITH NO WORK AREA?'              PRI02230
         BALR  14,10               . # S DP$W000 'WAIT/CHECK ROUTINE'   PRI02240
DP$F015  EQU   *                   . # N                                PRI02250
         CLI   22(13),X'00'        . # D DP$F020 NO YES 'IMMEDIATE CON# PRI02260
         BE    DP$F020             . # TROL ? (CODE NOT X''00'')'       PRI02270
         IC    2,22(,13)           . # P 'IMMEDIATE CODE TO REG 2'      PRI02280
         BAL   7,DP$H000           . # S DP$H000 'OPCODE GEN SUBRTN'    PRI02290
         EXCP  (1)                 . # O 'EXCP'                         PRI02300
         SETBIT DP$B200,DC$CCB     . # P 'SET IMMEDIATE CNTRL SW'       PRI02310
DP$F020  EQU   *                                                        PRI02320
         CLI   23(13),X'40'                                             PRI02330
         BE    DP$P145                  IF NO DELAYED CNTRL THEN        PRI02340
*                                                                       PRI02350
*                                       WAIT/CHK AND OVFLOW RTN         PRI02360
*                                                                       PRI02370
*                                       ELSE DELAYED CNTRL              PRI02380
*                                                                       PRI02390
DP$F040  EQU   *                   . # N
         TSTBIT  DP$B200,DC$CCB    . # D DP$F050 NO YES 'IMMED CNTRL?'
         BZ    DP$F050
         BALR  14,10               . # S DP$W000 'WAIT/CHECK ROUTINE'   PRI02430
         CLRBIT  DP$B200,DC$CCB         CLEAR IMMED CNTRL SW            PRI02435
DP$F050  EQU   *                   . # N                                PRI02440
         TSTBIT DP$B030,DC$CCB     . # D DP$F055 NO YES 'IMMEDIATE CNT# PRI02450
         BZ    DP$F055             . # RL SKIP?'                        PRI02460
         CLRBIT DP$B680,DC$CCB     . # P 'CLEAR FORMS OVFLOW & OVF 9'   PRI02470
DP$F055  EQU   *                   . # N                                PRI02480
         CLI   DP$REQS,X'4C'       . # D DP$F060 NO YES 'CNTRL-SK?'     PRI02490
         BNE   DP$F060                                                  PRI02500
         SETBIT DP$B315,DC$CCB     . # P 'SET SKIP BIT OP-CODE GEN SRT' PRI02510
DP$F060  EQU   *                   . # N                                PRI02520
         SETBIT DP$B110,DC$CCB     . # P 'SET DELAYED CNTRL SW'         PRI02530
         SETBIT DP$B245,DC$CCB     . # P 'SET PRINT OPCODE-GEN BIT'     PRI02540
         IC    2,23(13)            . # P 'DELAYED CODE TO REG 2'        PRI02550
         BAL   7,DP$H000           . # S DP$H000 'OPCODE GEN SUBRTN'    PRI02560
         MVC   DP$CCS(1),DP$CW1C        MOVE OP-CDE TO STORAGE BYTE     PRI02570
         DO    '&PRINTOV'=''=0     . # N 'PRINTOV DEPENDENT CODE'       PRI02580
         B     DP$P150             . # B DP$P150 'OVERFLOW CHECK & RET' PRI02590
         ENDO                      . # N 'END PRINTOV DEPENDENT CODE'   PRI02600
         DO    '&PRINTOV'=''       . # N 'IF PRINTOV NOT PRESENT'       PRI02610
         BR    11                  . # B DP$R000 'ERROR/RETURN SUBRTN'  PRI02620
         ENDO                      . # N 'END PRINTOV-NOT-PRESENT CODE' PRI02630
         ENDO                      . # N 'END CONTROL DEPENDENT CODE'   PRI02640
*#  E                                                                   PRI02650
         DO    ('&CONTROL'=''=0)++('&CTLCHR'=''=0)                      PRI02660
         EJECT                                                          PRI02670
*# N 'CONTROL OR CTLCHR DEPENDENT CODE'                                 PRI02680
*#  N    'OP CODE GEN ROUTINE'                                          PRI02690
*        GENERATES CORRECT CCW OP CODE FOR A CONTROL MACRO OR CTLCHR    PRI02700
*        INPUT DATA:                                                    PRI02710
*                   NO OF LINES TO SPACE OR SKIP CODE IN R2             PRI02720
*                   SKIP OR PRINT OP-CODE GEN BITS DETERMINE SKIP OR PR PRI02730
*                   0768 & 0770 BITS ARE CHECKED                        PRI02740
*        OUTPUT DATA:                                                   PRI02750
*                   OP-CODE IS GENERATED IN CCW                         PRI02760
*                                                                       PRI02770
*        EXIT  CONDITIONS                                               PRI02780
*              OP-CODE GEN SKIP & PRINT BITS ARE RESET                  PRI02790
*              REGISTER 2 IS NOT PRESERVED                              PRI02800
*              BRANCHES TO LOCATION IN REG 7 TO RETURN                  PRI02810
DP$H000  EQU   *                   . # N                                PRI02820
         LA    3,8                                                      PRI02830
         TSTBIT DP$B315,DC$CCB     . # D DP$H020 NO YES 'SKIP ?'        PRI02840
         BZ    DP$H020                                                  PRI02850
         CR    2,3                 . # D DP$H020 YES NO 'CODE IN R2  .# PRI02860
         BL    DP$H020             . # LT. 8 ?'                         PRI02870
         LA    4,DP$H070-8                                              PRI02880
         DO    &SMUX               . # N 'DO FOR MUX DEV'               PRI02890
         TSTBIT  DP$B715,DC$CCB    . # D DP$H010 YES NO '0773 OR 9200/# PRI02900
         BZ    DP$H010             . # 9300 PRNTR?'                     PRI02910
         AR    2,3                                                      PRI02915
         TSTBIT  DP$B420,DC$CCB    . # D DP$H010 NO YES '0776 PRINTER'  PRI02916
         BZ    DP$H010                                                  PRI02917
         AR    2,3                 . # P 'ADD 8 TO R2'                  PRI02920
DP$H010  EQU   *                   . # N                                PRI02930
         ENDO                      . # N 'END CODE FOR MUX DEV'         PRI02940
         IC    2,0(2,4)            . # P 'CODE FROM TABLE TO R2'        PRI02950
         B     DP$H030             . # B DP$H030                        PRI02960
DP$H020  EQU   *                   . # N                                PRI02970
         SLL   2,3                 . # P 'SHIFT R2 LEFT 3 BITS'         PRI02980
         LA    2,1(0,2)            . # P 'SET PRINT-ADV IN R2'          PRI02990
DP$H030  EQU   *                   . # N                                PRI03000
         STC   2,DP$CW1C           . # P 'OP-CODE IN R2 TO CCW'         PRI03010
         TSTBIT DP$B315,DC$CCB     . # D DP$H040 NO YES 'SKIP ?'        PRI03020
         BZ    DP$H040                                                  PRI03030
         SETBIT DP$B030,DC$CCB     . # P 'SET CCW OP-CODE SKIP BIT'     PRI03040
DP$H040  EQU   *                   . # N                                PRI03050
         TSTBIT DP$B245,DC$CCB     . # D DP$H050 YES NO 'PRINT ?'       PRI03060
         BO    DP$H050                                                  PRI03070
         SETBIT DP$B730,DC$CCB     . # P 'SET CCW OP-CODE ADVANCE ONLY' PRI03080
         MVI   DP$CW1B+1,2              TWO TO BYTE COUNT               PRI03090
DP$H050  EQU   *                   . # N                                PRI03100
         CLRBIT DP$B700,DC$CCB     . # P 'RESET SKIP AND PRINT BITS'    PRI03110
         BR    7                   . # B EXIT 'BR TO POINT WHERE CALLD' PRI03120
DP$H070  DS    0XL16                    OP-CODE TRANSLATE TABLE FOR SKI PRI03130
         DC    XL8'1109192109293939'    0773 CODES                      PRI03140
         DO    &SMUX                                                    PRI03150
         DC    XL8'4149515909693939'    0770 & 0768 CODES               PRI03160
         DC    XL8'4109515909693939'    0776 CODES                      PRI03165
         ENDO                                                           PRI03170
         ENDO  . # N 'END CONTROL OR CTLCHR DEPENDENT CODE'             PRI03180
         EJECT                     * . # E                              PRI03190
*                                                                       PRI03200
*#       N     '*** OS/3  PRINTER PUT ROUTINE ***'                      PRI03210
*                                                                       PRI03220
DP$P000  LR    5,0                 . # P 'WORKAREA ADDR IN R0 TO R5'    PRI03230
         L     4,DP$BAS            . # P 'DP$BAS TO R4'                 PRI03270
         LH    9,DP$RLA            . # P 'RECORD LENGTH ADJ TO R9'      PRI03280
         TSTBIT DP$B660,DC$CCB     . # D DP$P005 YES NO 'ONE I/O AREA # PRI03290
         BZ    DP$P005             . # WITH NO WORK AREA?'              PRI03300
         BALR  14,10               . # S DP$W000 'WAIT/CHECK ROUTINE'   PRI03310
DP$P005  EQU   *                   . # N                                PRI03320
         LH    3,DP$BKS            . # P 'MAX BYTE COUNT TO R3'         PRI03330
         TSTBIT  DP$B160,DC$CCB                                         PRI03340
         BO    DP$P035                  IF NOT FIXUNB THEN              PRI03350
         TSTBIT DP$B370,DC$CCB     . # D DP$P010 UNDEF VARUN  'RECFORM# PRI03360
         BO    DP$P010             . # =UNDEF?'                         PRI03370
         TSTBIT DP$B390,DC$CCB     . # D DP$P020 YES NO 'WORKA=YES?'    PRI03380
         BO    DP$P020                                                  PRI03390
         LR    6,4                 . # P 'DP$BAS TO R6'                 PRI03400
         SR    6,9                 . # P 'SUBTRACT RECORD LENGTH ADJ'   PRI03410
         IC    3,1(,6)             . # P 'RECORD SIZE TO R3'            PRI03420
         B     DP$P030             . # B DP$P030                        PRI03430
DP$P010  CLI   DP$REC,72           . # D DP$P015 NO YES 'RECSIZE REG=1# PRI03440
         BNE   DP$P015             . # 3 ?'                             PRI03450
         L     3,DP$SAVR           . # P 'RECSIZE FROM DP$SAVR TO R3'   PRI03460
         B     DP$P030             . # B DP$P030                        PRI03470
DP$P015  IC    3,DP$REC            . # P 'RECSIZE FROM SAVE AREA TO R3' PRI03480
         L     3,0(3,13)                                                PRI03490
         B     DP$P030             . # B DP$P030                        PRI03500
DP$P020  IC    3,1(,5)             . # P 'RECORD SIZE TO R3'            PRI03510
DP$P030  SR    3,9                 . # P 'SUBTRACT RLA FROM REC SIZE'   PRI03520
         BNM   DP$P033             . # D DP$P033 NO YES 'BYTE COUNT -'  PRI03530
         SR    3,3                 . # P 'CLEAR R3'                     PRI03540
DP$P033  EQU   *                   . # N                                PRI03550
*# E                                                                    PRI03560
         CH    3,DP$BKS            . # D DP$P035 .LTE. .GT. 'ADJ REC S# PRI03570
         BNH   DP$P035             . # IZE:MAX PRINT LINE WIDTH'        PRI03580
         LH    3,DP$BKS            . # P 'MAX BYTE COUNT TO R3'         PRI03590
         SETBIT DP$B230,DC$CCB     . # P 'SET LINE TRUNCATED BIT'       PRI03600
         SETBIT DP$EB07,DC$CCB     . # P 'SET LINE TRUNC ERROR FLAG BIT PRI03610
DP$P035  EQU   *                   . # N                                PRI03620
         STH   3,DP$CW1B           . # P 'STORE BYTE COUNT IN CCW'      PRI03630
DP$P040  EQU   *                   . # N                                PRI03640
         DO    &SMUX               . # N 'MUX DEV ONLY'                 PRI03650
         TSTBIT DP$B710,DC$CCB     . # D DP$P070 NO YES '0773 PRNTR?'   PRI03660
         BNZ   DP$P070                                                  PRI03670
         ENDO                      . # N 'END MUX DEV ONLY'             PRI03680
         TM    DP$CW1B+1,X'01'     . # D DP$P070 NO YES 'ODD BYTE CNT'  PRI03690
         BZ    DP$P070                                                  PRI03700
         IC    0,DP$MFLG+1         . # P 'MOVE NP (NON PRINT) CHAR FRO# PRI03710
         STC   0,0(3,4)            . # M' 'DTF (DP$MFLG) TO I/O AREA'   PRI03720
         AI    DP$CW1B,1           . # P 'ADD 1 TO BYTE COUNT'          PRI03730
DP$P070  EQU   *                   . # N 'CONNECTION POINT'             PRI03740
*# E                                                                    PRI03750
         DO    '&PRINTOV'=''=0                                          PRI03770
         TSTBIT  DP$B280,DC$CCB                                         PRI03771
         BZ    DP$P075                  IF PRINTOV BIT SET              PRI03772
         CLRBIT  DP$B280,DC$CCB          CLEAR PRINTOV BIT              PRI03773
         B     DP$P080                                                  PRI03774
DP$P075  EQU   *                                                        PRI03775
         ENDO                                                           PRI03776
         DO    '&CONTROL'=''=0                                          PRI03777
         TSTBIT  DP$B600,DC$CCB                                         PRI03778
         BZ    DP$P090                  IF IMMED CNTRL OR DEL CNTRL ISS PRI03779
         CLRBIT  DP$B605,DC$CCB         THEN CLEAR 3 CNTRL SW           PRI03780
         ENDO                                                           PRI03781
         DO    ('&CONTROL'=''=0)++('&PRINTOV'=''=0)                     PRI03782
DP$P080  EQU   *                                                        PRI03783
         MVC   DP$CW1C(1),DP$PRA        RESTORE STD OP-CODE             PRI03784
DP$P090  EQU   *                                                        PRI03785
         ENDO                                                           PRI03786
         DO    '&CONTROL'=''=0                                          PRI03787
         TSTBIT  DP$B110,DC$CCB         IF DEL CNTRL SW SET             PRI03788
         BZ    DP$P095                                                  PRI03789
         SETBIT  DP$B100,DC$CCB         SET DEL CNTRL ISSUED BIT        PRI03790
         MVC   DP$CW1C(1),DP$CCS        PLACE DELAYED OPCDE IN BCW      PRI03791
DP$P095  EQU   *                                                        PRI03792
         ENDO                                                           PRI03793
         TSTBIT DP$B390,DC$CCB     . # D DP$P100 NO YES 'WORKA=YES?'    PRI03970
         BZ    DP$P100                                                  PRI03980
         AR    5,9                 . # P 'ADJUST WORK AREA ADDRESS'     PRI03990
         LTR   3,3                 . # D DP$P100 YES NO  'R3 = 0 ?'     PRI04000
         BZ    DP$P100                                                  PRI04010
         BCTR  3,0                 . # P 'SUBTRACT 1 FROM REC SIZE'     PRI04020
         EX    3,DP$P190           . # P 'EXECUTE MVC INSTRUCTION TO M# PRI04030
*#OVE RECORD' 'FROM WORK AREA TO I/O AREA'                              PRI04040
DP$P100  TSTBIT DP$B210,DC$CCB     . # D DP$P110 NO YES 'TWO I/O AREAS# PRI04050
         BZ    DP$P110             . #  ?'                              PRI04060
         L     0,DP$CCW1           . # P 'SWAP BUFFERS' 'EXCHANGE  ADD# PRI04070
         MVC   DP$CW1D(3),DP$BAS+1 . # R IN DP$BAS' 'WITH ADDRESS IN  # PRI04080
         ST    0,DP$BAS             . # CCW'                            PRI04090
DP$P110  EQU   *                   . # N 'CONNECTION POINT'             PRI04100
*# E                                                                    PRI04110
         DO    '&CTLCHR'=''=0      . # N 'BEGIN CTLCHR DEPENDENT CODE'  PRI04120
         EJECT                                                          PRI04130
*# N 'CTLCHR ROUTINE'                                                   PRI04140
*# N 'ROUTINE USES REGISTERS  0-7'                                      PRI04150
DP$G000  EQU   *                   . # N                                PRI04160
         TSTBIT DP$B070,DC$CCB     . # D DP$G080 NO YES 'CTLCHR (DI) S# PRI04170
         BZ    DP$G080             . # PECIFIED?'                       PRI04180
         SR    2,2                 . # P 'CLEAR REG 2'                  PRI04190
         TSTBIT DP$B390,DC$CCB     . # D DP$G010 YES NO 'WORK AREA ?'   PRI04200
         BO    DP$G010                                                  PRI04210
         BCTR  4,0                 . # P 'SUBTRACT 1 FROM BAS ADDR R4'  PRI04220
         IC    2,0(,4)             . # P 'CTLCHR TO R2'                 PRI04230
         B     DP$G020             . # B DP$G020                        PRI04240
DP$G010  BCTR  5,0                 . # P 'SUBTRACT 1 FROM WORK ADDR R5' PRI04250
         IC    2,0(,5)             . # P 'CTLCHR TO R2'                 PRI04260
DP$G020  EQU   *                   . # N                                PRI04270
         LA    7,DP$G080                                                PRI04280
         LA    4,DP$G060                                                PRI04290
         LA    5,DP$G070                                                PRI04300
         LTR   2,2                                                      PRI04310
         BZR   5                   . # D DP$G070 YES NO 'NO-OP (R2=0)?' PRI04320
         STC   2,DP$CW1C           . # P 'CTLCHR TO CCW OP-CODE FIELD'  PRI04330
         LA    3,15                                                     PRI04340
         NR    2,3                 . # P 'LINES TO SPACE OR SKIP CD R2' PRI04350
         CLI   DP$CW1C,X'10'       . # D DP$G060 YES NO 'PRINT AND SPA# PRI04360
         BER   4                   . # CE 0 LINES?'                     PRI04370
         TM    DP$CW1C,X'0F'       . # D DP$G050 YES NO 'SECOND NIBB O# PRI04380
         BZ    DP$G050             . # F CTLCHR=0?'                     PRI04390
         NI    DP$CW1C,X'F0'                                            PRI04400
         CLI   DP$CW1C,X'00'       . # D DP$G060 YES NO 'PRINT AND SPA# PRI04410
         BER   4                   . # CE 1-15 LINES?'                  PRI04420
         CLI   DP$CW1C,X'50'       . # D DP$G070 YES NO 'SPACE 1-15 LI# PRI04430
         BER   5                   . # NES?'                            PRI04440
         SETBIT DP$B315,DC$CCB     . # P 'SET SKIP (OPCODE GEN S) BIT'  PRI04450
         CLI   DP$CW1C,X'10'       . # D DP$G060 YES NO 'PRINT AND SKI# PRI04460
         BER   4                   . # P ?'                             PRI04470
         CLI   DP$CW1C,X'20'       . # D DP$G070 YES NO  'SKIP?'        PRI04480
         BER   5                                                        PRI04490
DP$G050  MVI   DP$ERR,DP$E05       . # P 'INVALID CTLCHR ERR CDE T DTF' PRI04500
         SETBIT DP$EB05,DC$CCB     . # P 'SET INVALID CONT CHAR ER BIT' PRI04510
         CLRBIT  DP$B700,DC$CCB         RESET SKIP AMD PRINT BITS       PRI04520
         BR    11                  . # B DP$R000 'ERROR/RETURN SUBRTN'  PRI04530
DP$G060  SETBIT DP$B245,DC$CCB     . # P 'SET PRINT (OPCODE GEN S) BIT' PRI04540
DP$G070  B     DP$H000             . # S DP$H000 'OPCODE GEN SUBRTN'    PRI04550
DP$G080  EQU   *                   . # N                                PRI04560
         ENDO                      . # N 'END CTLCHR DEPENDENT CODE'    PRI04570
         EJECT                     * . # E                              PRI04580
         TSTBIT DP$B220,DC$CCB     . # D DP$P140 NO YES 'IOREG SPECIFI# PRI04590
         BZ    DP$P140             . # ED?'                             PRI04600
         L     5,DP$BAS            . # P 'DP$BAS TO R5'                 PRI04610
         SR    5,9                 . # P 'R5 - RLA TO R5'               PRI04620
         CLI   DP$IRG,72           . # D DP$P130 NO YES 'IOREG=13?'     PRI04630
         BNE   DP$P130                                                  PRI04640
         ST    5,DP$SAVR           . # P 'R5 TO DP$SAVR'                PRI04650
         B     DP$P140             . # B DP$P140                        PRI04660
DP$P130  SR    4,4                 . # P 'CLEAR R4'                     PRI04670
         IC    4,DP$IRG            . # P 'IOREG DISPLACE TO R4'         PRI04680
         LA    4,0(4,13)           . # P 'ADDR IOREG SAVE SPACE TO R4'  PRI04690
         ST    5,0(,4)             . # P 'STORE R5 TO IOREG IN SAVE'    PRI04700
DP$P140  EQU   *                   . # N                                PRI04710
         TM    DP$CW1B+1,X'FF'     . # D DP$P143 NO YES 'BYTE COUNT=0?' PRI04720
         BNZ   DP$P143                                                  PRI04730
         TSTBIT DP$B730,DC$CCB     . # D DP$P143 YES NO 'ADVANCE ONLY # PRI04740
         BO    DP$P143             . # COMMAND?'                        PRI04750
         SETBIT DP$EB09,DC$CCB     . # P 'SET REC SIZE INVALID BIT'     PRI04760
         MVI   DP$ERR,DP$E09       . # P 'ERROR MSG CODE TO DTF'        PRI04770
         BR    11                  . # B DP$R000 'ERROR/RETURN SUBRTN'  PRI04780
DP$P143  EQU   *                   . # N                                PRI04790
         EXCP  (1)                 . # O 'EXCP'                         PRI04800
DP$P145  EQU   *                   . # N 'WAIT/CK & OVFLO'              PRI04810
         TSTBIT DP$B660,DC$CCB     . # D DP$P147 YES NO 'IOAREA2 AND/O# PRI04820
         BNZ   DP$P147             . # R WORK AREA?'                    PRI04830
         BALR  14,10               . # S DP$W000 'WAIT/CHECK ROUTINE'   PRI04840
DP$P147  EQU   *                   . # N                                PRI04850
         TSTBIT DP$B030,DC$CCB     . # D DP$P150 NO YES 'WAS LAST EXCP# PRI04860
         BZ    DP$P150             . #  A SKIP'                         PRI04870
         CLRBIT DP$B680,DC$CCB     . # P 'CLEAR FORMS OVFLOW & OVF 9'   PRI04880
DP$P150  EQU   *                   . # N 'CONNECTION POINT'             PRI04890
         DO    '&PRINTOV'=''=0     . # N 'PRINTOV DEPENDENT CODE'       PRI04900
         TSTBIT DP$B270,DC$CCB     . # D DP$P160 NO YES 'PRINTOV=YES ?' PRI04910
         BZ    DP$P160                                                  PRI04920
         BR    11                  . # B DP$R000 'ERROR/RETURN SUBRTN'  PRI04930
DP$P160  TSTBIT DP$B170,DC$CCB     . # D REF.PC4 NO YES 'FORMS OVERFLO# PRI04940
         BZR   11                  . # W SENSED ?'                      PRI04950
         B     DP$V030             . # B DP$V030 'PRINTOV RTN ENTRY P2' PRI04960
*#REF.PC4 B    DP$R000 'ERROR/RETURN SUBRTN'                            PRI04970
         ENDO                      . # N 'END PRINTOV DEPENDENT CODE'   PRI04980
         DO    '&PRINTOV'=''       . # N 'BEGIN CODE PRESENT ONLY IF' # PRI04990
         DO    0                                                        PRI05000
*#                'PRINTOV ROUTINE IS NOT PRESENT'                      PRI05010
         ENDO                                                           PRI05020
         BR    11                  . # B DP$R000 'ERROR/RETURN SUBRTN'  PRI05030
         ENDO                      . # N 'END CODE PRESENT ONLY IF THE# PRI05040
         DO    0                                                        PRI05050
*#                PRINTOV' 'ROUTINE IS NOT PRESENT'                     PRI05060
         ENDO                                                           PRI05070
DP$P190  MVC   0(1,4),0(5)              MOVE INSTRUCTION USED W EX      PRI05080
         EJECT                     * . # E                              PRI05090
*                                                                       PRI05100
*#       N     'WAIT/CHECK ROUTINE'                                     PRI05110
*                                                                       PRI05120
DP$W000  WAIT  (1)                 . # S 'WAIT'                         PRI05130
         TSTBIT DP$B113,DC$CCB     . # D DP$W005 NO YES 'DELAYED OVERF# PRI05140
         BZ    DP$W005             . # LOW BIT SET?'                    PRI05150
         CLRBIT DP$B113,DC$CCB     . # P 'CLEAR DELAYED OVERFLOW BIT'   PRI05160
         SETBIT DP$B170,DC$CCB     . # P 'SET FORMS OVERFLOW BIT'       PRI05170
         DO    &SMUX               . # N 'DO FOR MUX DEV'               PRI05180
         TSTBIT DP$B114,DC$CCB     . # D DP$W005 NO YES 'DELAYED OVERF# PRI05190
         BZ    DP$W005             . # LOW 9 BIT SET ?'                 PRI05200
         CLRBIT DP$B114,DC$CCB     . # P 'CLEAR DELAYED OVERFLOW 9 BIT' PRI05210
         SETBIT DP$B165,DC$CCB     . # P 'SET OVERFLOW 9 SENSED BIT'    PRI05220
         ENDO                      . # N 'END MUX DEV CODE'             PRI05230
DP$W005  EQU   *                   . # N                                PRI05240
         TSTBIT DP$B650,DC$CCB     . # D REF.PW2 NO YES 'UNUSUAL CONDI# PRI05250
         BZR   14                  . # ONS ?'                           PRI05260
         TSTBIT  DP$B375,DC$CCB    . # D DP$W040 NO YES 'UNIT EXCEPTIO# PRI05270
         BZ    DP$W040                                                  PRI05280
         DO    '&PRINTOV'=''=0     . # N 'PRINTOV DEPENDENT CODE'       PRI05290
         TSTBIT DP$B640,DC$CCB     . # D DP$W015 NO YES 'PRINTOV=YES,S# PRI05300
         BZ    DP$W015             . # KIP OR SYMBOL?'                  PRI05310
         CLRBIT DP$B375,DC$CCB     . # P 'CLEAR UNIT EXCEPTION BIT'     PRI05320
         TSTBIT DP$B660,DC$CCB     . # D DP$W007 NO YES 'DOUBLE BUFFER# PRI05330
         BZ    DP$W007             . # ING ?'                           PRI05340
         SETBIT DP$B170,DC$CCB     . # P 'SET FORMS OVERFLOW BIT'       PRI05350
         B     DP$W008             . # B DP$W008                        PRI05360
DP$W007  EQU   *                   . # N                                PRI05370
         SETBIT DP$B113,DC$CCB     . # P 'SET DELAYED FORMS OVERFLOW B' PRI05380
DP$W008  EQU   *                   . # N                                PRI05390
         DO    &SMUX               . # N 'DO FOR MUX DEV'               PRI05400
         TSTBIT DP$B410,DC$CCB     . # D DP$W015 NO YES '0770 PRINTER?' PRI05410
         BZ    DP$W015                                                  PRI05420
         TSTBIT DP$B043,DC$CCB     . # D DP$W015 NO YES 'CODE 9 SENSED# PRI05430
         BZ    DP$W015             . #   (0770 PRINTER)?'               PRI05440
         TSTBIT DP$B660,DC$CCB     . # D DP$W010 NO YES 'DOUBLE BUFFER# PRI05450
         BZ    DP$W010             . # ING?'                            PRI05460
         SETBIT DP$B165,DC$CCB     . # P 'SET FORMS OVERFLOW 9 BIT'     PRI05470
         B     DP$W015             . # B DP$W015                        PRI05480
DP$W010  EQU   *                   . # N                                PRI05490
         SETBIT DP$B114,DC$CCB     . # P 'SET DELAYED FORMS OVERFLOW 9' PRI05500
         ENDO                      . # N 'END MUX DEV CODE'             PRI05510
DP$W015  EQU   *                   . # N                                PRI05520
         ENDO                      . # N 'END PRINTOV DEPENDENT CODE'   PRI05530
DP$W040  TSTBIT DP$B377,DC$CCB     . # D REF.PW2 NO YES 'UNRECOVERABLE# PRI05540
         BZR   14                  . #  ERROR ?'                        PRI05550
         MVI   DP$ERR,DP$E04       . # P 'HARDWARE I/O ERROR CODE TO  # PRI05560
*#               DTF'                                                   PRI05570
         CLRBIT DP$B377,DC$CCB          CLEAR UNRECOVERABLE ERROR BIT   PRI05580
         SETBIT DP$EB04,DC$CCB     . # P 'SET HARDWARE ERROR ERR BIT'   PRI05590
         BR    14                  . # B EXIT  'BR TO POINT WHERE CALD' PRI05600
*#REF.PW2 B EXIT 'RETURN TO POINT WHERE CALLED'                         PRI05610
         EJECT                     * . # E                              PRI05620
*# N '****************'                                                 PRI05630
*# N                                                                    PRI05640
*# N 'ERROR/RETURN SUBROUTINE'                                          PRI05650
*# N                                                                    PRI05660
*# N '****************'                                                 PRI05670
DP$R000  EQU   *                   . # N                                PRI05680
         TSTBIT DP$B740,DC$CCB     . # D DP$R030 NO YES 'ERRORS ?'      PRI05690
         BZ    DP$R030                                                  PRI05700
         TSTBIT DP$B120,DC$CCB     . # D DP$R020 NO YES 'USER ERROR RT# PRI05710
         BZ    DP$R020             . # N?'                              PRI05720
         TSTBIT DP$B310,DC$CCB     . # D DP$R010 NO YES 'SAVAREA KEYWO# PRI05730
         BZ    DP$R010             . # RD SPECIFIED ?'                  PRI05740
         LM    14,12,12(13)        . # P 'RESTORE USER REGISTERS'       PRI05750
         L     13,DP$SAVR          . # P 'USER''S R13 FR DTF TO R13'    PRI05760
         SVC   61                  . # B EXIT 'MESSAGE TRANSIENT'       PRI05770
DP$R010  EQU   *                   . # N                                PRI05780
         LM    14,12,12(13)        . # P 'RESTORE USER REGISTERS'       PRI05790
         SVC   61                  . # B EXIT 'MESSAGE TRANSIENT'       PRI05800
DP$R020  EQU   *                   . # N                                PRI05810
         LA    14,DP$R030                                               PRI05820
         SVC   61                  . # S  'MSG TRANSIENT'               PRI05830
DP$R030  EQU   *                   . # N                                PRI05840
         TSTBIT DP$B310,DC$CCB     . # D DP$R040 NO YES 'SAVAREA KEYWO# PRI05850
         BZ    DP$R040             . # RD SPECIFIED ?'                  PRI05860
         LM    14,12,12(13)        . # P 'RESTORE USER REGISTERS'       PRI05870
         L     13,DP$SAVR          . # P 'USER''S R13 FR DTF TO R13'    PRI05880
         BR    15                  . # B EXIT 'RETURN TO USER VIA R15'  PRI05890
DP$R040  EQU   *                   . # N                                PRI05900
         LM    14,12,12(13)        . # P 'RESTORE USER REGISTERS'       PRI05910
         BR    15                  . # B EXIT 'RETURN TO USER VIA R15'  PRI05920
         DO    &SLST=0                                                  PRI05930
         PRINT NOGEN                                                    PRI05940
         ENDO                                                           PRI05950
         DO    '&DU$SA'=''                                              PRI05960
&DU$SA   SET   0                                                        PRI05970
         SA$DSECT                                                       PRI05980
         ENDO                                                           PRI05990
         DTFDM3 PR=YES                                                  PRI06000
         DO    &SLST=0                                                  PRI06010
         PRINT GEN                                                      PRI06020
         ENDO                                                           PRI06030
         DROP  1,13,15                                                  PRI06040
         DO    '&SECT'='YES'                                            PRI06050
&SYSECT  CSECT                                                          PRI06060
         ENDO                                                           PRI06070
         EJECT                                                          PRI06080
         ENDO                                                           PRI06090
         ENDO                                                           PRI06100
         END                                                            PRI06110
