DataMuseum.dk

Presents historical artifacts from the history of:

IBM System/3

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about IBM System/3

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦1b627e298⟧ s3xseg

    Length: 61976 (0xf218)
    Types: s3xseg
    Names: »S$E065«

Derivation

└─⟦4498c64f7⟧ Bits:30009191 5704-sc2.V05.ccp
    └─⟦95ee7795b⟧ 
        └─⟦this⟧ »S$E065« 

TextSegment

       MACRO                                                            00010000                
       $E065                                                            00020000                
       GBLB  &DFF                                                       00030000                
       GBLB  &NDF                                                       00040000                
       TEXT                                                             00050000                
       AIF   (&NDF).END                                                 00060000                
       TITLE 'DISPLAY FORMAT CONTROL ROUTINE. 3270 SUPPORT FOR CCP' @10 00070000                
       SPACE                                                            00080000                
*********************************************************************** 00090000                
*                                                                     * 00100000                
*NAME-   $E065                                                      @10 00110000                
*                                                                     * 00120000                
*VERSION-V4M0     MODEL 15D CCP                                     @10 00130000                
*                                                                     * 00140000                
*TITLE- $E065   DISPLAY FORMAT CONTROL ROUTINE, $CC4II PORTION.     @10 00150000                
*        THIS IS THE MAIN ROUTINE TO SERVICE USER PROGRAMS WHICH USE  * 00160000                
*        THE DISPLAY FORMAT FACILITY  (DFF).  RUNS UNDER CONTROL OF @10 00170000                
*        THE USER TCB.                                              @10 00175000                
*                                                                     * 00180000                
*FUNCTION- PROVIDE LOGICAL DATA MANAGEMENT SUPPORT FOR COMPONENTS OF  * 00190000                
*        OF THE 3270 SYSTEM. THE PRIMARY FUNCTION IS TO INITIALIZE  @10 00200000                
*        THE PROGRAM APPENDED STORAGE AREA (PAS) IN RESPONSE TO A   @10 00210000                
*        USER TASK OPERATION INVOLVING A DFF TERMINAL.  THE DATA IN @10 00220000                
*        THE PAS IS USED LATER BY THE DFF TASK ($CC4DF).            @10 00230000                
*                                                                     * 00290000                
*        THE FUNCTIONS PROVIDED FOR THE VARIOUS OP CODES ARE          * 00300000                
*        AS FOLLOWS...                                                * 00310000                
*                                                                     * 00320000                
*        'GET MESSAGE' AND 'STOP INVITE INPUT' --  THE USER PARAMETER * 00330000                
*            LIST WILL BE MODIFIED TO TELL CM/CS  HOW MUCH OF A HOLD@10 00340000                
*            AREA TO GETMAIN  FOR THE 3270 TEXT.  THE USER'S RECORD @10 00350000                
*            AREA WILL BE BLANKED.  AFTER THE OP-END                @10 00355000                
*            OCCURS THE DATA WILL BE MOVED FROM THE DYNAMIC TP BUFFER * 00360000                
*            TO THE USER'S RECORD AREA.  THE ADDRESS OF THE TP AREA   * 00370000                
*            WHICH CONTAINS THE 3270 TEXT WILL BE PLACED IN THE USER'S* 00380000                
*            PARAMETER LIST BY CM/CS.   THE PARAMETER LIST WILL BE R@10 00390000                
*            STORED TO THE ORIGINIAL CONDITION BEFORE RETURNING TO    * 00400000                
*            $CC4II.  THE TP AREA REQUIRED FOR PASSING 3270 TEXT IS   * 00410000                
*            GET-MAINED BY CM/CS  AND FREED BY CM/CS.  EXCEPTIONS AR@10 00420000                
*            INPUT OPERATIONS. IN THOSE CASES $CC4DF FREE-MAINS THE @10 00430000                
*            AREAS GET-MAINED BY CM/CS.                             @10 00440000                
*                                                                     * 00450000                
*        'INVITE INPUT' -- THE PLRECA AND PLINL AS SET BY THE USER IS * 00460000                
*            IGNORED BY THIS ROUTINE.  THE USER PARAMETER LIST IS   @10 00470000                
*            MODIFIED TO TELL CM/CS HOW MUCH OF A HOLD AREA TO      @10 00480000                
*            GETMAIN FOR THE 3270 TEXT.                             @10 00490000                
*                                                                     * 00500000                
*        'ACCEPT INPUT' -- THIS OPERATION IS HANDLED FOR THE MOST PART* 00510000                
*            LIKE 'GET MESSAGE', EXCEPT THE DATA AREA ADDRESS OF THE  * 00520000                
*            3270 TEXT AND PLEFFL IS OBTAINED FROM THE TUB.         @10 00530000                
*            THIS ROUTINE WILL HANDLE DATA WITH A PROGRAM REQUEST IF@10 00540000                
*            PRUF IS ACTIVE ON THE TERMINAL AT PROGRAM REQUEST TIME.  * 00550000                
*            IF PRUF IS ACTIVE, DATA WILL BE HANDLED AS NORMAL ACCEPT * 00560000                
*            INPUT OPERATION. IF NOT, DATA WILL BE HANDLED ENTIRELY   * 00570000                
*            BY CM/CS.                                              @10 00580000                
*                                                                     * 00590000                
*        'PUT MESSAGE' -- PLOUTL IN THE USER'S PARAMETER LIST IS      * 00600000                
*            MODIFIED BY THIS ROUTINE TO REFLECT THE ACTUAL AMOUNT    * 00610000                
*            OF 3270 TEXT   BEING SENT BY THIS ROUTINE.             @10 00620000                
*                                                                     * 00690000                
*        'PUT OVERRIDE' -- THE TRANSIENT $CC4DB WILL BE INVOKED TO  @10 00700000                
*            DIAGNOSE THE USE OF THE OPERATION AND TO CALCULATE THE   * 00710000                
*            LENGTH OF TEXT TO GENERATE, ALSO DETERMINING IF BLOCKING * 00720000                
*            IS REQUIRED.                                           @10 00730000                
*                                                                     * 00760000                
*        'COPY' -- SET UP PARAMETER LIST SO CM/CS  WILL GETMAIN AN  @10 00770000                
*            AREA IN TPBUFFER TO BUILD COPY TEXT.                     * 00780000                
*            THIS OPERATION WILL GO THROUGH CM/CS  AS A 'PUT MESSAGE@10 00790000                
*                                                                     * 00800000                
*        'ERASE ALL UNPROTECTED' --THE USER'S PARAMETER LIST WILL BE@10 00820000                
*            MODIFIED TO INDICATE TEXT LENGTH.                      @10 00830000                
*                                                                     * 00870000                
*        'RELEASE TERMINAL' -- THIS OPERATION INVOLVES BLANKING       * 00880000                
*            OUT THE TT ENTRY FOR THE RESPECTIVE TERMINAL.  NO        * 00890000                
*            REPERCUSIONS ARE TAKEN OUT ON THE USER FOR RELEASING     * 00900000                
*            TERMINAL WHICH HAD NOT PREVIOUSLY BEEN USED WITH DFF.  @10 00910000                
*                                                                     * 00930000                
*ENTRY POINT- THERE ARE TWO ENTRY POINT FROM $CC4II.                  * 00940000                
*            DFA000 - ALL REQUESTS FOR DFF FUNCTIONS.               @10 00942000                
*            DFQ030 - RETURN CODE CHECKED FOR CONDITIONS THAT         * 00944000                
*                     MIGHT DESTROY DFF SCREEN FORMAT SUCH AS CLEAR   * 00946000                
*                                                                     * 00950000                
*INPUT- XR2 MUST CONTAIN THE HIGH ORDER ADDRESS OF THE USER CCP       * 00960000                
*        PARAMETER LIST.                                              * 00970000                
*        A 'USER PROGRAM APPENDED STORAGE AREA' (PAS) MUST BE         * 00980000                
*        AVAILABLE FOR STORING DATA SPECIFIC TO THIS TASK.            * 00990000                
*                                                                     * 01000000                
*        DISPLAY FORMATS MUST HAVE BEEN ALREADY GENERATED AND MUST    * 01010000                
*        EXIST IN THE OBJECT LIBRARY. THE FORMAT MUST BE IN TWO PARTS.* 01020000                
*        THE FIRST PART IS THE 'FIELD DESCRIPTOR TABLE' (FDT), AND    * 01030000                
*        THE SECOND IS THE TEXT STREAM FOR AN INITIAL PUT TO A 3270   * 01040000                
*        TERMINAL.                                                    * 01050000                
*                                                                     * 01060000                
*        FOR ALL OPERATIONS, PLRECA MUST POINT TO THE HIGH-ORDER      * 01070000                
*        BYTE OF THE TERMINAL NAME FOR WHICH THE OPERATION IS INTENDED* 01080000                
*      (EXCEPT FOR ACCEPT INPUT, IN WHICH CASE THE POINTER IS TO THE  * 01090000                
*      HIGH ORDER BYTE OF THE DATA AREA). IMMEDIATELY FOLLOWING THE 6 * 01100000                
*        CHARACTER TERMINAL NAME MUST BE THE BEGINING OF THE DATA AREA* 01110000                
*                                                                     * 01120000                
*        FOR OUTPUT OPERATIONS, THE FOLLOWING INFORMATION IS ALSO     * 01130000                
*        REQUIRED...                                                  * 01140000                
*            'PUT MSG'- DISPLAY FORMAT NAME IN FIRST 6 POSITIONS OF   * 01150000                
*            THE DATA AREA, FOLLOWED BY ANY DATA FOR FIELDS WHICH WERE* 01160000                
*            DEFINED AS BEING SUPPLIED AT EXECUTION  TIME.          @10 01170000                
*                                                                     * 01180000                
*            'PUT OVERRIDE'- THE WCC MUST BE THE FIRST POSITION IN THE* 01190000                
*            DATA AREA.  THIS IS THE MINIMUM ENTRY FOR THIS OPERATION.* 01200000                
*            OPTIONALLY, 9 POSITIONS SHOULD BE GIVEN FOR EACH FIELD   * 01210000                
*            WHICH IS TO BE OVERRIDEN.  6 FOR FIELD NAME 1 EACH FOR   * 01220000                
*            TYPE, CURSOR, AND MODIFY.                                * 01230000                
*                                                                     * 01240000                
*                                                                     * 01270000                
*OUTPUT-                                                            @10 01280000                
*        UPDATED AREAS IN PAS TO REFLECT CURRENT STATUS OF OPERATION@10 01310000                
*        FOR THIS TASK.                                               * 01320000                
*                                                                     * 01330000                
*                                                                     * 01340000                
*        IF A TASK WILL BE TERMINATED, THE TRANSIENT $CC4DD WILL BE   * 01350000                
*        INVOKED TO DETERMINE IF THE CONSOLE MESSAGE 528 SHOULD BE  @10 01360000                
*        ISSUED.                                                      * 01370000                
*                                                                     * 01380000                
*DIAGNOSTICS-  THE FOLLOWING DIAGNOSTICS ARE PERFORMED AND ISSUED     * 01390000                
*        BY THIS ROUTINE.  (OTHERS ARE GIVEN BY $CC4DB, $CC4DC AND  @10 01400000                
*        $CC4DF).                                                   @10 01405000                
*        TERMINATION CODES...                                         * 01410000                
*                                                                     * 01420000                
*            FF - 255                                                 * 01430000                
*            FE - 254                                                 * 01440000                
*            FC - 252                                                 * 01460000                
*            F9 - 249                                                 * 01480000                
*            F8 - 248                                                 * 01490000                
*            F7 - 247                                               @10 01495000                
*            F6 - 246                                                 * 01500000                
*            F3 - 243                                                 * 01520000                
*                                                                     * 01540000                
*EXTERNAL REFERENCE-                                                  * 01550000                
*        CCCOM                                                        * 01560000                
*        TCB                                                          * 01570000                
*        USER PARAMETER LIST                                          * 01580000                
*        TUB                                                          * 01590000                
*        FDT (FIELD DESCRIPTOR TABLE)                                 * 01600000                
*        PAS (PROGRAM APPENDED STORAGE)                               * 01610000                
*        TT (TERMINAL TABLE)                                          * 01620000                
*        FT (FORMAT TABLE)                                            * 01630000                
*                                                                     * 01640000                
*CALLED BY- $CC4II OPERATING FOR USER TASK.                         @10 01650000                
*                                                                     * 01770000                
*                                                                     * 01780000                
*EXITS TO- $CC4CM OR $CC4#M  COMMUNICATIONS MANAGER OR SCHEDULER    @10 01790000                
*          POST                                                       * 01800000                
*          WAIT                                                       * 01810000                
*          $CC4MX  MOVE                                               * 01820000                
*          $CC4DB  DFCR TRANSIENT TO DIAGNOSE 'PUT OVERRIDES'.        * 01830000                
*          $CC4DD  DFCR TRANSIENT TO ISSUE MESSAGE 528.               * 01840000                
*          $CC4PI  TRANSIENT INITIATOR                                * 01850000                
*          CC4TI2  TERMINATE A TASK                                   * 01860000                
*          DISK IOS                                                   * 01870000                
*          DISK WAIT                                                  * 01880000                
*                                                                     * 01890000                
*                                                                     * 01920000                
*ATTRIBUTES-REUSABLE                                                @10 01930000                
*                                                                     * 01940000                
*NOTES:  ALL TASK DEPENDENT INFORMATION IS KEPT IN THE 'PAS' ATTACHED * 01950000                
*        TO THE USER PROGRAM.                                         * 01960000                
*                                                                     * 01970000                
*        ORGANIZATION OF THIS ROUTINE...                              * 01980000                
*        1.  DFA000 ENTRY POINT  AND FUNCTION DETERMINATION.            01990000                
*        2.  DFB000 'PUT MESSAGE', NORMAL AND BLOCKING.               * 02000000                
*        3.  DFC000 'COPY' OPERATION.                                 * 02010000                
*        4.  DFD000 'PUT' OVERRIDES', NORMAL AND BLOCKING.            * 02020000                
*        5.  DFE000 'ERASE ALL UNPROTECTED' OPERATION.                * 02030000                
*        6.  DFF000 CREATE A 'TT' ENTRY                               * 02040000                
*        7.  DFG000 'GET', 'INVITE INPUT', 'ACCEPT INPUT', 'STOP      * 02050000                
*                   INVITE INPUT' OPERATIONS.                         * 02060000                
*        8.  DFH000 CALCULATE GETMAIN TP-BUFFER LENGTH                * 02070000                
*        9.  DFI000 INCREMENT THE DISK ADDRESS IN THE IOB.            * 02080000                
*        10. DFJ000 READ THE 'FDT' INTO 'PAS'.                        * 02090000                
*        11. DFQ000 CONTROL RETURN TO $CC4II AND RESTORE USER'S       * 02100000                
*                   PARAMETER LIST.                                   * 02110000                
*        12. DFR000 'RELEASE' A TERMINAL FROM DFCR.                   * 02120000                
*        13. DFT000 'TERMINATE' A TASK.                               * 02130000                
*        14. DFV000 READ FROM DISK.                                   * 02140000                
*                                                                     * 02150000                
* CHANGE ACTIVITY                                                     * 02160000                
*     RELEASE 3                                                       * 02170000                
*       @01/INCR/ - PROGRAM REQUEST UNDER FORMAT.                     * 02180000                
*                                                                     * 02190000                
*     RELEASE 4                                                       * 02200000                
*       @02/INCR/ES.0419 - MODIFY DATA OPERATION IS THE ONLY VALID    * 02210000                
*                          OPERATION FOR A PUT OVERRIDE TO A PFGR     * 02220000                
*                          FORMAT.                                    * 02230000                
*       @03/APAR/S306869 - FALSE BIT LEFT ON AFTER RETURNING FROM     * 02240000                
*                          A TRANSIENT CALL.                          * 02250000                
*                                                                     * 02251000                
*     RELEASE 1 SYSTEM/3 MOD-15D.                                     * 02252000                
*     RELEASE 2 SYSTEM/3 MOD-15D.                                     * 02253000                
*       @04/INCR/OS.0214 - INCORE FORMAT INDEX OPTION.                * 02254000                
*       @05/INCR/OS.XXXX - VAR. PRUF INVITE INPUT LENGTH.             * 02255000                
*     RELEASE 3 SYSTEM/3 MOD-15D.                                     * 02255800                
*       @06/APAR/S311518 - ACCEPT NO-WAIT OPERATION.                  * 02256600                
*       @07/APAR/S311955 - FORMATS NOT FOUND IN SECTOR.               * 02257400                
*       @08/APAR/S311284 - MULTI PRUF SCREEN AND TUBPIL.              * 02258200                
*       @09/INCR/OS.0347 - SUPPORT FOR COMMAND RELEASE.               * 02259000                
*     RELEASE 4 SYSTEM/3 MOD-15D.                                   @10 02259200                
*       @10/INCR/OS4301 - TPBUFFER IMPROVMENTS.                     @10 02259400                
*       @11/INCR/OS4201 - FORMATS ON ANY SIMULATION AREA            @11 02259600                
*     RELEASE 5 SYSTEM/3 MOD-15D.                                   @12 02259700                
*       @12/APAR/S315898- BAD IOB FLAGS SET FOR DFF ON ANY PACK     @12 02259800                
*                                                                     * 02260000                
*********************************************************************** 02270000                
       EJECT                                                            02280000                
       TITLE 'DISPLAY FORMAT CONTROL ROUTINE.  --  EQUATES--'       @10 02290000                
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 02300000                
*                                                                     * 02310000                
*     EQUATES USED IN THIS ROUTINE                                    * 02320000                
*                                                                     * 02330000                
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 02340000                
       SPACE                                                            02350000                
ZEROD  EQU   0                         CONSTANT EQUATE                  02360000                
ONED   EQU   1                         CONSTANT EQUATE                  02370000                
TWOD   EQU   2                         CONSTANT EQUATE                  02380000                
THREED EQU   3                         CONSTANT EQUATE                  02390000                
FOURD  EQU   4                         CONSTANT EQUATE                  02400000                
       SPACE                                                            02410000                
*      MISCELLANEOUS EQUATES                                            02420000                
*      REGISTER EQUATES                                                 02430000                
CCOM   EQU   1                         REG FOR CCP COM AREA             02440000                
COM2   EQU   2                         REGISTER EQUATE                  02450000                
CCOM2  EQU   2                         REGISTER EQUATE                  02460000                
PAS1   EQU   1                         REGISTER EQUATE                  02470000                
PAS2   EQU   2                         REGISTER EQUATE                  02480000                
FT1    EQU   1                         REGISTER EQUATE                  02490000                
FT2    EQU   2                         FORMAT TABLE REG                 02500000                
LRA1   EQU   1                                                          02510000                
LRA2   EQU   2                                                          02520000                
FDT2   EQU   2                                                          02530000                
FDT1   EQU   1                                                          02540000                
OPTR1  EQU   1                                                          02550000                
DTF1   EQU   1                         DTF PTR                          02560000                
DTF2   EQU   2                         DTF REGISTER                     02570000                
UPL1   EQU   1                         PARM LIST REGISTER               02580000                
UPL2   EQU   2                         REGISTER EQUATE                  02590000                
TCB1   EQU   1                         REGISTER EQUATE                  02600000                
TCBR1  EQU   1                         TCB REG 1                        02610000                
TT1    EQU   1                         REGISTER EQUATE                  02620000                
TT2    EQU   2                         REG TO POINT TO TT               02630000                
TUB1   EQU   1                         TUB PTR                          02640000                
TUB2   EQU   2                         TUB POINTER                      02650000                
GM2    EQU   2                         REGISTER FOR GET-MAIN PARM LIST  02660000                
OHA1   EQU   1                         REGISTER EQUATE                  02670000                
OHA2   EQU   2                         REGISTER EQUATE                  02680000                
OH2    EQU   2                         REGISTER EQUATE                  02690000                
TCB2   EQU   2                         REGISTER EQUATE                  02700000                
IOB    EQU   1                         REGISTER EQUATE                  02710000                
TYP1   EQU   1                         REGISTER EQUATE                  02720000                
BFR2   EQU   2                         REGISTER EQUATE                  02730000                
       SPACE                                                            02740000                
*      MISC EQUATES                                                     02750000                
COM    EQU   X'C000'                   FLAG FOR RELOCATION TO CCOM VALU 02760000                
PGM    EQU   X'8000'                   FLAG FOR RELOCATION TO CCP PGM   02770000                
X01    EQU   X'01'                     HEX EQUATE VALUE                 02780000                
CMD    EQU   1                         HEX EQUATE VALUE                 02790000                
X20    EQU   X'20'                     HEX EQUATE VALUE                 02800000                
XC0    EQU   X'C0'                     HEX EQUATE VALUE                 02810000                
X08    EQU   X'08'                     HEX EQUATE VALUE                 02820000                
X06    EQU   X'06'                     HEX EQUATE VALUE                 02830000                
X27    EQU   X'27'                     HEX EQUATE VALUE                 02840000                
X16    EQU   X'16'                     HEX EQUATE VALUE                 02850000                
X80    EQU   X'80'                     HEX EQUATE VALUE                 02860000                
X07D   EQU   7                         HEX EQUATE VALUE                 02870000                
X60    EQU   X'60'                     HEX VALUE 60                     02880000                
XF0    EQU   X'F0'                     NEX F0                           02890000                
X0F    EQU   X'0F'                     HAX 0F                           02900000                
EQUFF  EQU   X'FF'                     HEX EQUATE VALUE                 02910000                
BLANKD EQU   X'40'                     EQUATE FOR A BLANK               02920000                
END    EQU   X'FF'                     STOPPER                          02930000                
MODDAT EQU   C'M'                      MODIFIED DATA SUPPLIED     @02   02940000                
       SPACE                                                            02950000                
*  EQUATES FOR THE FUNCTION DETERMINATION  TABLE                        02960000                
OPTBOP EQU   0                         DISP TO OP CODE                  02970000                
OPTB@  EQU   2                         DISP TO ADDRESS FOR OP CODE      02980000                
OPTBLL EQU   3                         LENGTH OF AN ENTRY               02990000                
       SPACE                                                            03000000                
HIGH   EQU   X'84'                     HIGH CONDITION CODE              03010000                
NOTLOW EQU   X'02'                     NOT LOW CONDITION CODE           03020000                
NOTHI  EQU   X'04'                     NOT HIGH CONDITION CODE          03030000                
TANDEQ EQU   X'16'                     TRUE AND EQUAL                   03040000                
FORNE  EQU   X'96'                     FALSE OR NOT EQUAL               03050000                
FOREQ  EQU   X'91'                     FALSE OR EQUAL CONDITION CODE    03060000                
       SPACE                                                            03070000                
FTLD   EQU   5                         L-1 OF FT NAME                   03080000                
TNAMLD EQU   5                         L-1 OF TERMINAL NAME             03090000                
LINE1  EQU   X'80'                     DEVICE CODE FOR BSCA LINE 1      03100000                
DTFDEV EQU   0                         DISP IN DTF TO DEVICE CODE       03110000                
NUMBIT EQU   X'0F'                     NUMERIC BITS                     03120000                
NEGZON EQU   X'D0'                     NEGATIVE ZONE                    03130000                
POSZON EQU   X'F0'                     POSITIVE ZONE                    03140000                
MINUS  EQU   C'-'                      MINUS SIGN                       03150000                
IOBOK  EQU   X'40'                     IOB COMPLETION CODE FOR 'NORMAL' 03160000                
FNAMLD EQU   6                         LENGTH OF A FIELD NAME           03170000                
       SPACE                                                            03180000                
* EQUATES FOR THE DISPLAY FORMAT INDEX IN CCPFILE                       03190000                
INX2   EQU   XR2                       REGISTER FOR FORMAT INDEX        03200000                
INXNAM EQU   #+4-1                     DISP TO NAME IN INDEX ENTRY      03210000                
INXCS  EQU   INXNAM+2                  DISP TO DISK C/S IN INDEX        03220000                
INXLNG EQU   INXCS+1                   FULL LENGTH OF AN INDEX ENTRY    03230000                
INXNXT EQU   X'FE'                     INCORE INDEX CONTINUE INDICATOR  03235000                
INXEND EQU   X'FF'                     INDICATION OF END OF INDEX       03240000                
INXNS  EQU   42                        NUMBER INDEX ENTRIES IN A SECTOR 03250000                
INXES  EQU   256-INXNS*6               UNUSED PORTION OF FORMAT SECTOR. 03251000                
       SPACE                                                            03252000                
* EXTERNAL POINTERS IN 2K OR 4K MAPPED INDEX AREA.                  @04 03253000                
EP@SDF EQU   #+2-1                     POINTER TO SHORT DTF INDEXES @04 03254000                
EP@DFF EQU   EP@SDF+2                  POINTER TO DFF INCORE INDEX  @04 03255000                
EP@DFE EQU   EP@DFF+2                  POINTER TO END OF AREA       @04 03256000                
EP@LOG EQU   X'7000'                   ADDRESS OF INDEX ATR'S       @04 03257000                
INXATR EQU   14                        ATR DISPLACMENT FOR INDEX    @04 03258000                
AT0E0F EQU   X'57'                     Q-CODE FOR LCP ATR'S         @04 03259000                
       SPACE                                                            03260000                
*      EQUATES FOR CHECKING LNG OF TEXT FOR 'PUT OVERRIDES'             03270000                
*  THESE EQUATES WILL OVERLAY THE FIELD NAME INN  THE FDT               03280000                
FLDOHL EQU   2                         SAVE AREA IN FDTNAM FOR OHA LNG  03290000                
FLDTLN EQU   4                         SAVE AREA IN FDTNAM FOR TEXT LNG 03300000                
       SPACE                                                            03310000                
CCCDSP EQU   6                         DISP TO CCC IN LRA               03320000                
WCC    EQU   2                         DISP IN TEXT TO WCC              03330000                
ININIT EQU   4                         DISP IN INPUT TEXT TO CURSOR @   03340000                
IHAD@D EQU   3                         DISP TO TEXT @ IN IHA WHEN       03350000                
*                                      POINTING TO BYTE BEFORE SBA      03360000                
IHA2   EQU   2                                                          03370000                
LRAAID EQU   0                         DISP IN LRA TO AID               03380000                
IHAID  EQU   2                         DISP IN IHA TO AID               03390000                
SPDCHR EQU   C'>'                      GT SIGN                          03400000                
HIGHBT EQU   X'C0'                     BIT 0 AND  BIT 1                 03410000                
AIDSPA EQU   X'7E'                     AID FOR SPD ATTENTION            03420000                
       SPACE                                                            03430000                
*      EQUATES FOR THE WRITE CONTROL CHARACTER (WCC) FOR 3270           03440000                
S3WCC  EQU   X'D0'                     S/3 WCC OF 'D0'                  03450000                
SPCWCC EQU   X'6A'                     3270 SPECIAL WCC OF '6A'         03460000                
MDTWCC EQU   X'C1'                     WCC TO RESET MDT                 03470000                
DUMWCC EQU   X'40'                     DUMMMY WCC USED FOR SECOND AND   03480000                
*                                      SUCCESSUVE BLOCKS OF OUTPUT.     03490000                
WCCMDT EQU   BIT7                      MDT BIT IN WCC                   03500000                
WCCRKB EQU   BIT6                      WCC BIT TO RESET KEYBOARD        03510000                
SBADSP EQU   0                         DISP IN OHA TO SBA               03520000                
SBA@DP EQU   2                         DISP TO @@ AFTER SBA             03530000                
ATTDSP EQU   4                         DISP TO ATTRIBUTE                03540000                
SFDP   EQU   3                         DISP TO SF CHAR WITH ATTR        03550000                
CURDPT EQU   5                         DISP TO IC WITH 'TYPE' GIVEN     03560000                
CURDP  EQU   3                         DISP TO IC WITHOUT 'TYPE' GIVEN  03570000                
SPDCDP EQU   5                         DISP IN TEXT TO DESIGNATOR CHAR  03580000                
       SPACE                                                            03590000                
* EQUATES FOR PUT OVERRIDE ITEMS IN LRA                                 03600000                
       SPACE                                                            03610000                
PORNAM EQU   5                         FIELD NAME                       03620000                
PORTYP EQU   PORNAM+1                  DISP TO 'TYPE'                   03630000                
PORCUR EQU   PORTYP+1                  DISP TO 'CURSOR'                 03640000                
PORMOD EQU   PORCUR+1                  DISP TO 'MODIFY '                03650000                
PORDAT EQU   PORMOD+1                  DISP TO DATA                     03660000                
PORLNG EQU   PORDAT                    LENGTH OF NORMAL LIST            03670000                
       TITLE 'DISPLAY FORMAT CONTROL ROUTINE.  --CONSTANTS--'       @10 03680000                
*                                     LNG  CONTENTS                     03690000                
ONE    EQU   X$0001                    2    X'0001'                     03700000                
TWO    EQU   X$0002                    2    X'0002'                     03710000                
X800   DC    XL2'0800'                 2    X'0800'                 @10 03715000                
X200   DC    XL2'0200'                 2    X'0200'                     03720000                
X0020  DC    XL2'0020'                 2    X'0020'                     03730000                
FOUR   EQU   X$0004                    2    X'0004'                     03740000                
SIX    DC    XL2'0006'                 2    X'0006'                     03750000                
MIN6   DC    XL2'FFFA'                 2    I'-6'                       03760000                
TTLNG  DC    AL2(TTL)                  2    A(TTL)                      03770000                
FTLNG  DC    AL2(FTL)                  2    A(FTL)                      03780000                
WORK   DC    XL2'0000'                 2  GNERAL WORK AREA              03790000                
IIXR1  EQU   WORK                      2  SAVE AREA FO XR1 SAVE         03800000                
X00FF  DC    XL2'00FF'                 2  CONSTANT OF 255               03810000                
       SPACE                                                            03820000                
MOVEPL EQU   *                         GENERAL MOVE PARM LIST           03830000                
DFGLEN DC    XL2'00'                   LENGTH TO MOVE                   03840000                
DFGRF@ DC    AL2(#)                    MOVE TO ADDRESS                  03850000                
       DC    AL2(BLANK)                MOVE FROM ADDRESS                03860000                
       DC    XL2'0001'                 LENGTH OF FROM FIELD             03870000                
       DC    XL1'00'                   NO ATR SWAPPING                  03880000                
BLANK  DC    CL1' '                    BLANK CHARACTER                  03890000                
       TITLE 'DISPLAY FORMAT CONTROL RTN -- FUNCTION DETERMINATION' @10 03900000                
* * * * * * * * * * *                                                   03910000                
       ENTRY DFA000   *                                                 03920000                
DFA000 EQU            *                THIS IS THE ENTRY POINT          03930000                
* * * * * * * * * * *                  FROM $CC4II.                     03940000                
       SPACE                                                            03950000                
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 03960000                
*                                                                     * 03970000                
*      SECTION A - 'OP CODE DETERMINATION' SECTION.  THIS PART WILL   * 03980000                
*      STORE THE USER PARAMETER LIST IN PAS (PROGRAM APPENDED STORAGE)* 03990000                
*      AND DETERMINE WHAT THE OPERATION CODE IS, AND GIVE CONTROL TO  * 04000000                
*      THE PROPER SECTION OF CODE.                                    * 04010000                
*                                                                     * 04020000                
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 04030000                
       SPACE                                                            04040000                
* * * * ALL TASK DEPENDENT INFO IS SAVED IN PAS.              * * * *   04070000                
* * * * FIND THE ADDRESS OF PAS AND STORE THE ADDRESS OF THE  * * * *   04090000                
* * * * UPL (USER PARAMETER LIST)                             * * * *   04100000                
       SPACE                                                            04110000                
       ST    IIXR1,XR1                 SAVE REGISTER 1                  04115000                
       L     NCTCB@,TCBR1              LOAD CURRENT TCB ADDR            04120000                
       L     TCB@AS(,TCBR1),PAS1       LOAD PAS @                       04130000                
       ST    PASIAR(,PAS1),ARR         SAVE RETURN ADDRESS              04140000                
       SPACE                                                            04150000                
       ST    PAS@A1,PAS1               SAVE PAS @                       04170000                
       MVC   PASIX1(,PAS1),IIXR1(2)    MOVE ADDR TO PAS                 04180000                
       SPACE 2                                                          04190000                
*      GET TERMINAL NAME AND SAVE IT IN CURRENT AREA IN PAS.            04200000                
       SPACE 1                                                          04210000                
       ST    PASPL@(,PAS1),UPL2        SAVE UPL ADDRESS                 04220000                
       MVC   PASCPL+PLTUBA(,PAS1),PLTUBA(PLTUBA+1,UPL2) SAVE 1ST 12 @10 04230000                
*                                BYTES OF ORIGINAL PARM LIST IN PAS.@10 04240000                
       SPACE                                                            04250000                
       TBN   PLOPC(,UPL2),OPACI        ACCEPT INPUT OPERATION AND   @06 04255000                
       TBF   PLOPC(,UPL2),ALLBIT-OPANW ONLY ACCEPT INPUT OPERATION? @06 04260000                
       JF    DFA045                    NO, DONT UPDATE DATA PTR.    @06 04270000                
       ALC   PASCPL+PLRECA(2,PAS1),SIX YES, UPDATE PTR TO DATA          04280000                
       J     DFA047                    CONTINUE, RTN CODE SET UP ALREAD 04290000                
DFA045 SLC   PLRTC(,UPL2),PLRTC(2,UPL2)  CLEAR RETURN CODE TO ZERO      04300000                
DFA047 L     PASCPL+PLRECA(,PAS1),LRA2 GET LRA ADDRESS                  04310000                
       A     MIN6,LRA2                 POINT BACK TO TNAME              04320000                
       MVC   PASCTN(,PAS1),TNAMLD(6,LRA2)  SAVE TERMINAL NAME           04330000                
       L     PASPL@(,PAS1),UPL2        RELOAD UPL                       04340000                
       SPACE 2                                                          04350000                
*     NOW DETERMINE THE OP CODE AND GIVE CONTROL TO APPROPRIATE SPOT.   04360000                
       SPACE 1                                                          04370000                
       LA    OPTBL,OPTR1               LOAD TABLE OF OP CODES + @       04380000                
DFA050 CLC   OPTBOP(,OPTR1),PLOPC(1,UPL2) OP CODES MATCH                04390000                
       JE    DFA060                    YES, FINISH UP                   04400000                
       LA    OPTBLL(,OPTR1),OPTR1      INCREMENT TO NEXT ELEMENT        04410000                
       CLI   ZEROD(,OPTR1),END         END OF LEGAL OP CODES?           04420000                
       BNE   DFA050                    NO, LOOP BACK                    04430000                
****** ERROR            INVALID OP CODE SENT TO THIS ROUTINE            04440000                
       B     DFT030                    CALL TERMINATION ROUTINE         04450000                
       DC    AL1(TCCIOP)               TERMINATION CODE                 04460000                
       SPACE 2                                                          04470000                
DFA060 EQU   *                                                          04480000                
       SPACE 1                                                          04490000                
*      ONLY ONE OF THE VALID OP CODES IN THE TABLE ARE EXPECTED.        04500000                
*      NOW TRANSFER CONTROL TO THE APPROPRIATE ROUTINE.                 04510000                
       SPACE 1                                                          04520000                
       MVC   XCTLA1,OPTB@(2,OPTR1)     MOVE ENTRY @ TO INSTR            04530000                
DFA070 LA    #,PAS1                    RELOAD PAS @                     04540000                
PAS@A1 EQU   DFA070+3                                                   04550000                
       SPACE 1                                                          04560000                
DFA080 B     #                         TRANSFER CONTROL                 04570000                
XCTLA1 EQU   DFA080+3                                                   04580000                
       EJECT                                                            04590000                
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 04600000                
*                                                                     * 04610000                
*     OP CODE TABLE AND RESPECTIVE PROCESSING ROUTINES.               * 04620000                
*                                                                     * 04630000                
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 04640000                
       SPACE 1                                                          04650000                
OPTBL  EQU   *                                                          04660000                
       DC    AL1(OPGET)                'GET' OP CODE AND 'STOP II'      04670000                
       DC    AL2(DFG000)               ENTRY POINT OF APPROPRIATE RTN   04680000                
       SPACE 1                                                          04690000                
       DC    AL1(OPINV)                'INVITE INPUT'                   04700000                
       DC    AL2(DFG000)               ENTRY POINT OF APPROPRIATE RTN   04710000                
       SPACE 1                                                          04720000                
       DC    AL1(OPACI)                'ACCEPT INPUT'                   04730000                
       DC    AL2(DFG000)               ENTRY POINT OF APPROPRIATE RTN   04740000                
       SPACE 1                                                          04750000                
       DC    AL1(OPPUT+OPMSG)          'PUT MSG' + 'PUT OVERRIDES'      04760000                
       DC    AL2(DFB000)               ENTRY POINT OF APPROPRIATE RTN   04770000                
       SPACE 1                                                          04780000                
       DC    AL1(OPPNW+OPMSG)          'PUT NO WAIT' + 'PUT OVERRIDES'  04790000                
       DC    AL2(DFB000)               ENTRY POINT OF APPROPRIATE RTN   04800000                
       SPACE 1                                                          04810000                
       DC    AL1(OPCOPY+OPPUT)         'COPY' OP CODE                   04820000                
       DC    AL2(DFC000)               ENTRY POINT OF APPROPRIATE RTN   04830000                
       SPACE 1                                                      @06 04832000                
       DC    AL1(OPANW)                'ACCEPT NO-WAIT INPUT'       @06 04834000                
       DC    AL2(DFG000)               ENTRY POINT OF ROUTINE       @06 04836000                
       SPACE 1                                                          04840000                
       DC    AL1(OPEAU+OPPUT)          'ERASE ALL UNPROTECTED' (EAU)    04850000                
       DC    AL2(DFE000)               ENTRY POINT OF APPROPRIATE RTN   04860000                
       SPACE 1                                                          04870000                
       DC    AL1(OPPUT+OPRUF)          'PUT MESSAGE' RUF OP-CODE    @01 04890000                
       DC    AL2(DFB000)               ENTRY POINT OF APPROPRIATE RTN   04900000                
       SPACE 1                                                          04910000                
       DC    AL1(OPPNW+OPRUF)          'PUT NO-WAIT' RUF OP-CODE    @10 04920000                
       DC    AL2(DFB000)               ENTRY POINT OF APPROPRIATE RTN   04930000                
       SPACE 1                                                          04940000                
       DC    AL1(OPREL)                'RELEASE' OP CODE                04960000                
       DC    AL2(DFR000)               ENTRY POINT OF APPROPRIATE RTN   04970000                
       SPACE 1                                                          04980000                
       DC    AL1(OPREL+OPKPL)          'RELEASE' AND KEEP LINE          04990000                
       DC    AL2(DFR000)               ENTRY POINT OF APPROPRIATE RTN   05000000                
       SPACE 1                                                          05002000                
       DC    AL1(OPRTC)                'RELEASE/TASK CHAIN' OPCODE  @09 05004000                
       DC    AL2(DFR000)               ENTRY POINT OF APPROPRIATE RTN   05006000                
       SPACE 1                                                          05010000                
       DC    AL1(END)                  END OF TABLE                     05020000                
       TITLE 'DISPLAY FORMAT CONTROL RTN -- PUT INITIAL NO BLOCK'   @10 05030000                
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 05040000                
*                                                                     * 05050000                
*      PROCESS 'PUT MESSAGE'.  THIS ROUTINE WILL PROCESS THE OP CODES * 05060000                
*      'PUT MESSAGE' AND 'PUT NO WAIT MESSAGE'.  IT WILL ALSO RECEIVE * 05070000                
*      CONTROL FOR 'PUT OVERRIDES AND WILL CALL THE APPROPRIATE ROUTINE 05080000                
*      TO DO THAT WORK.                                               * 05090000                
*                                                                     * 05100000                
*      INPUT TO THIS ROUTINE IS EXPECTED TO BE:                       * 05110000                
*            XR1--> PAS (PROGRAM APPENDED STORAGE AREA).              * 05120000                
*            XR2--> UPL  (USER PARAMETER LIST).                       * 05130000                
*                                                                     * 05140000                
*                                                                     * 05160000                
*                                                                     * 05170000                
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 05180000                
       SPACE 2                                                          05190000                
DFB000 EQU   *                                                          05200000                
       SPACE 1                                                          05210000                
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 05220000                
*      DETERMINE IF OP CODE IS 'PUT OVERRIDES' AND GIVE CONTROL TO THE  05230000                
*      PROPER ROUTINE.                                                * 05240000                
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 05250000                
       SPACE 1                                                          05260000                
       MVI   PASFLG(,PAS1),PASFTS      SET ON FIRST TIME SWITCH         05270000                
*      CHANGE 'PUT NO WAIT' TO 'PUT WAIT'                               05280000                
       SBF   PLOPC(,UPL2),OPPNW-OPPUT  MODIFY TO PUT MSG                05290000                
       SBF   PASCPL+PLOPC(,PAS1),OPPNW-OPPUT MODIFY TO PUT MSG          05300000                
       CLI   PLOPM(,UPL2),OPLIST       'PUT OVERRIDE'?                  05310000                
       BE    DFD000                    YES, CALL APPROPRIATE ROUTINE    05320000                
       SPACE 2                                                          05330000                
*      VERIFY TERMINAL NAME AND GET TT ENTRY                            05340000                
       B     DFF000                    CALL TT ENTRY FIND RTN           05350000                
       SPACE                                                            05360000                
       L     PASPL@(,PAS1),UPL2        RELOAD UPL @                     05370000                
       L     PASCT@(,PAS1),TT1         LOAD THIS TT ENTRY               05380000                
       L     TTFT@(,TT1),FT1           LOAD RESPECTIVE FT ENTRY         05390000                
       MVC   PLOUTL(,UPL2),FTOUTL(2,FT1) MOVE TEXT LENGTH TO UPL        05400000                
       L     PAS@A1,PAS1               SAVE ALSO IN WORK AREA.          05410000                
       MVC   PASTTS(,PAS1),PLOUTL(2,UPL2)                               05420000                
       B     DFH000                    SETUP LENGTH FOR GETMAIN OF  @10 05430000                
*                                      *OUTPUT HOLD AREA.           @10 05435000                
       SPACE 2                                                          05440000                
       B     DFJ000                    READ FDT INTO PAS                05450000                
       B     DFFRTN                    RETURN TO II MAINLINE            05460000                
       SPACE                                                            05470000                
       TITLE 'DISPLAY FORMAT CONTROL ROUTINE.-- COPY OPERATION'         05480000                
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 05490000                
*                                                                     * 05500000                
*            'COPY' OP CODE SECTION.                                  * 05510000                
*                                                                     * 05520000                
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 05530000                
       SPACE 2                                                          05540000                
DFC000 EQU   *                         ENTRY  POINT TO THIS SECTION @10 05550000                
*      VERIFY THE 'TO' TERMINAL NAME                                    05560000                
       SPACE                                                            05570000                
       SBN   PASFLG(,PAS1),PASFRT      INDICATE 'TO' TERMINAL NAME      05580000                
       B     DFF000                    CALL RTN TO FIND TERMINAL ENTRY  05590000                
       ST    PASTOD(,PAS1),TT2         SAVE TT ENTRY ADDRESS            05600000                
       SPACE                                                            05610000                
*      VERIFY 'FROM' TERMINAL NAME                                      05620000                
       SPACE                                                            05630000                
       SBF   PASFLG(,PAS1),PASFRT      INDICATE 'FROM' TERMINAL NAME    05640000                
       SPACE                                                            05650000                
       MVC   PASUDL(,PAS1),PASCPL+PLOUTL(2,PAS1)  SAVE OUTPUT LENGTH    05660000                
       L     PASCPL+PLRECA(,PAS1),LRA2 POINT TO RCD AREA                05670000                
       MVC   PASCTN(,PAS1),TNAMLD(6,LRA2)  MOVE NAME TO 'CURENT' AREA   05680000                
       MVC   PASCCC(,PAS1),CCCDSP(1,LRA2)  MOVE CCC IF ANY              05690000                
       B     DFF000                    CALL TERMINAL NAME VERIFY RTN    05700000                
       ST    PASFRD(,PAS1),TT2         SAVE TT ENTRY @                  05710000                
       SPACE                                                            05720000                
*SETUP GETMAIN LENGTH FOR 3270 TEXT                                 @10 05730000                
       SPACE                                                            05740000                
       MVC   PASTTS(2,PAS1),FOUR       SET TO GETMAIN FOUR BYTES        05750000                
       B     DFH000                    CALL GETMAIN SETUP ROUTINE   @10 05760000                
       SPACE                                                            05770000                
       B     DFFRTN                    RETURN TO II MAINLINE            05780000                
       TITLE 'DISPLAY FORMAT CONTROL ROUTINE. --PUT OVERRIDES--'    @10 05790000                
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 05800000                
*      PROCESS 'PUT OVERRRIDES' OPERATION                           @10 05810000                
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 05820000                
       SPACE 2                                                          05830000                
DFD000 EQU   *                                                          05840000                
       SPACE 2                                                          05850000                
*      XR1-->PAS,XR2-->UPL                                              05860000                
       SPACE                                                            05870000                
*  GO TO THE ROUTINE TO FIND THE TERMINAL AND FORMAT TABLE ENTRY        05880000                
       SPACE                                                            05890000                
       B     DFF000                    FIND TT ENTRY                    05900000                
       B     DFJ000                    GET FDT FOR THIS FORMAT          05910000                
       SPACE                                                            05920000                
*    CALL TRANSIENT TO CALCULATE LENGTH OF TEXT NEEDED TO PUT OUT       05930000                
*    FOR THIS TEXT STREAM.                                              05940000                
       SPACE                                                            05950000                
       LA    ZEROD(,PAS1),PAS2         SAVE PAS ADDRESS IN REGISTER 2   05960000                
       B     CC4PI                     CALL TRANSIENT CONTROL ROUTINE   05970000                
       DC    AL1(CC4DB)                NAME OF TRANSIENT DESIRED        05980000                
       CCP   DISABL,PMR                DISABLE INTERRUPTS               05990000                
       ST    PAS@A1,PAS2               STORE PAS ADDRESS LOCALLY        06000000                
       SPACE                                                            06010000                
       B     DFT000                    CALL TERMINATE CHECK ROUTINE     06020000                
       LA    ZEROD(,PAS2),PAS1         RELOAD PAS REGISTER              06030000                
       SPACE                                                            06040000                
*SETUP GETMAIN LENGTH FOR OUTPUT TEXT                               @10 06050000                
       SPACE                                                            06060000                
       L     PASPL@(,PAS1),UPL2        RELOAD PARM POINTER              06070000                
       B     DFH000                    CALL GETMAIN SETUP ROUTINE   @10 06080000                
       B     DFFRTN                    RETURN TO II MAINLINE            06090000                
       SPACE                                                            06100000                
       TITLE 'DISPLAY FORMAT CONTROL RTN -- ERASE ALL UNPROTECTED'  @10 06110000                
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 06120000                
*                                                                     * 06130000                
*            'ERASE ALL UNPROTECTED' (EAU) OPERATION CODE.            * 06140000                
*      XR1-->PAS,  XR2-->USER PARAMETER LIST.                         * 06150000                
*                                                                     * 06160000                
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 06170000                
       SPACE 2                                                          06180000                
DFE000 EQU   *                         ENTRY POINT TO THIS SECTION      06190000                
       SPACE                                                            06200000                
* VERIFY THE TERMINAL NAME AND GET TT ENTRY                             06210000                
       B     DFF000                    CALL 'FIND TT ENTRY' ROUTINE     06220000                
       SPACE                                                            06230000                
*SETUP GETMAIN LENGTH FOR 3270 TEXT                                 @10 06240000                
       SPACE                                                            06250000                
       MVC   PASTTS(2,PAS1),TWO        INDICATE NUMBER OF BYTES TO SEND 06260000                
       B     DFH000                    CALL GETMAIN SETUP ROUTINE   @10 06270000                
       B     DFFRTN                    RETURN TO II MAINLINE            06280000                
       TITLE 'DISPLAY FORMAT CONTROL ROUTINE. --FIND TT ENTRY--'    @10 06290000                
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 06300000                
*                                                                     * 06310000                
*      FIND AND/OR CREATE 'TERMINAL TABLE' ENTRY.                   @10 06320000                
*      INPUT IS EXPECTED TO BE AS FOLLOWS:                            * 06330000                
*        XR1--> PAS                                                   * 06340000                
*        XR2--> UPL                                                   * 06350000                
*        NAME OF TERMINAL IN PAS                                      * 06360000                
*      OUTPUT WILL BE A CREATED TT ENTRY IF NONE EXISTS ALREADY AND   * 06370000                
*       THE ADDRESS OF THE ENTRY IN PAS.                              * 06380000                
*                                                                     * 06390000                
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 06400000                
       SPACE 2                                                          06410000                
DFF000 EQU   *                                                          06420000                
       SPACE 1                                                          06430000                
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 06440000                
*      FIND A TT ENTRY FOR THIS TERMINAL IN PAS.                      * 06450000                
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 06460000                
       ST    PASFR@(,PAS1),ARR         SAVE RETURN POINT IN PAS         06470000                
       SBF   PASFLG(,PAS1),PASRUF      SET OFF READ UNDER FORMAT    @01 06490000                
       MVI   PASTTE-1(,PAS1),ZEROD     INIT 'END' OF TT ENTRIES         06510000                
       L     PASITT(,PAS1),TT2         LOAD ADDR OF FIRST TT            06520000                
DFF010 CLC   PASCTN(,PAS1),TTNAME(6,TT2) NAME IN PAS AND TT MATCH?      06530000                
       JE    DFF100                    YES, CONTINUE PROCESSING IT      06540000                
       SPACE                                                            06550000                
*     CHECK IF THIS ENTRY USED. IF NOT AND ONE IS NEEDED FOR A NEW      06560000                
*     ENTRY REUSE IT. WHEN A TERMINAL IS RELEASED THE TT NAME WILL BE   06570000                
*     BLANKED OUT INDICATING AN UNUSED ENTRY.                           06580000                
       SPACE 1                                                          06590000                
       CLI   TTNAME-TNAMLD(,TT2),BLANKD IS FIRST CHAR BLANK?            06600000                
       JNE   DFF030                    NO, IT IS USED.                  06610000                
       ST    PASTTE(,PAS1),TT2         YES, SAVE ADDRESS OF THIS ENTRY  06620000                
       SPACE                                                            06630000                
DFF030 CLI   TTCHN@-1(,TT2),ZEROD      IS CHAIN POINTER BLANK? (LAST?)  06640000                
       JE    DFF040                    YES, BUILD A NEW ONE             06650000                
       L     TTCHN@(,TT2),TT2          NO, LOAD NEXT ENTRY              06660000                
       B     DFF010                    LOOP BACK                        06670000                
       SPACE 2                                                          06680000                
*     ENTRY DOES NOT EXIST. CREATE ONE IF PROPER OP CODE                06690000                
       SPACE 1                                                          06700000                
DFF040 TBN   PASCPL+PLOPC(,PAS1),OPPUT+OPMSG  IS OP CODE                06710000                
       TBF   PASCPL+PLOPM(,PAS1),OPLIST         PUT W/O OVERRIDES       06720000                
       JT    DFF060                    YES, CREATE TT ENTRY         @10 06730000                
       SPACE 1                                                          06740000                
*     CHECK IF 'COPY TO' TERMINAL'                                      06750000                
       SPACE 1                                                          06760000                
       CLI   PASCPL+PLOPC(,PAS1),OPCOPY+OPPUT  'COPY' OP CODE?          06770000                
       TBN   PASFLG(,PAS1),PASFRT      AND CHECKING 'TO' TERMINAL?      06780000                
       JC    DFF060,TANDEQ             YES, CREATE TT ENTRY         @10 06790000                
       SPACE                                                            06800000                
*    CHECK IF A READ UNDER FORMAT CONTROL ACCEPT INPUT                  06810000                
       SPACE                                                            06820000                
       TBN   PASCPL+PLOPC(,PAS1),OPACI ACCEPT INPUT OPERATION AND   @06 06825000                
       TBF   PASCPL+PLOPC(,PAS1),ALLBIT-OPANW ONLY ACCEPT INPUT?    @06 06830000                
       L     PASCPL+PLTUBA(,PAS1),TUB1 POINT TO TUB                     06840000                
       TBN   TUBSCS(,TUB1),TUBRUF      READ UNDER FORMAT ON ?           06850000                
       L     PAS@A1,PAS1               RELOAD PAS POINTER               06860000                
       JT    DFF050                    YES, BRANCH                  @06 06870000                
       SPACE 2                                                          06880000                
*     IF 'RELEASE' OP CODE, IT MEANS THE TERMINAL NEVER RECEIVED A      06890000                
*     DISPLAY FORMAT. IF THIS IS THE CASE, BLANK OUT TT ENTRY @ TO      06900000                
*     INDICATE TERMINAL ENTRY NOT FOUND                                 06910000                
       SPACE 1                                                          06920000                
       MVI   PASCT@-1(,PAS1),ZEROD     BLANK OUT ADDRESS                06930000                
       TBN   PASCPL+PLOPC(,PAS1),OPREL IS IT 'RELEASE'?                 06940000                
       JT    DFF150                    YES, EXIT ROUTINE                06950000                
       SPACE 2                                                          06960000                
****** ERROR                           ATTEMPT TO USE TERMINAL W/O  @10 06970000                
*                                      FIRST ISSUING A FORMAT TO IT.    06980000                
       B     DFT030                    CALL TERMINATION ROUTINE         06990000                
       DC    AL1(TC01)                 TERMINATION CODE                 07000000                
*     NO RETURN CONTROL EXPECTED                                        07010000                
       SPACE 2                                                          07020000                
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 07030000                
*      CREATE A NEW TT ENTRY IF SPACE EXISTS.                         * 07040000                
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 07050000                
       SPACE                                                            07060000                
DFF050 SBN PASFLG(,PAS1),PASRUF        SET ON READ UNDER FORMAT     @01 07080000                
       SPACE 1                                                          07100000                
DFF060 CLI   PASTTE-1(,PAS1),ZEROD     IS OLD ONE AVAILABLE?            07110000                
       JE    DFF070                    NO, CREATE NEW ONE.              07120000                
       L     PASTTE(,PAS1),TT2         YES, USE THE OLD ONE.            07130000                
       J     DFF090                    JUMP OVER SPACE ALLOCATION       07140000                
       SPACE 2                                                          07150000                
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 07160000                
*     ALLOCATE NEW SPACE FOR A TT ENTRY.                              * 07170000                
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 07180000                
       SPACE 1                                                          07190000                
DFF070 EQU   *                         TT2 POINTS TO LAST TT ENTRY      07200000                
       LA    ONED(,TT2),TT2            INCT TO RIGHT OF ADDRESS         07210000                
       ST    STF1,TT2                  SAVE THIS POINTER.               07220000                
       L     PASNFT(,PAS1),TT2         LOAD NEXT AVAIL ADDRESS          07230000                
       ALC   PASNFT(,PAS1),TTLNG(2)    ADD LNG OF TT ENTRY              07240000                
       CLC   PASNFT(,PAS1),PASEFT(2,PAS1) NEW ADDRESS PAST END?         07250000                
       JNH   DFF080                    NO, OKAY                         07260000                
       SPACE 2                                                          07270000                
****** ERROR                           NO ROOM FOR ANOTHER TT       @10 07280000                
DFF075 B     DFT030                    ENTRY. CALL TERMINATION          07290000                
       DC    AL1(TC02)                 TERMINATION CODE                 07300000                
       SPACE 2                                                          07310000                
*     SPACE EXISTS. ALLOCATE AREA + CREATE CHAIN POINTER.               07320000                
       SPACE 1                                                          07330000                
DFF080 ST    TTCHN@+#,TT2              PUT ADDR THIS ENTRY IN LAST ONE  07340000                
STF1   EQU   DFF080+3                                                   07350000                
       MVI   TTCHN@-1(,TT2),ZEROD      BLANK OUT CHAIN PTR. NEW LAST.   07360000                
       SPACE 2                                                          07370000                
* NOW CREATE OR FILL IN PART OF THE TT ENTRY                        @10 07380000                
       SPACE 1                                                          07390000                
DFF090 MVC   TTNAME(,TT2),PASCTN(TNAMLD+1,PAS1) MOVE TERMINAL NAME      07400000                
       MVI   TTFT@-1(,TT2),ZEROD       BLANK OUT FORMAT TABLE PTR.      07410000                
       J     DFF110                    CONTINUE BUILDING ENTRY.         07420000                
       EJECT                                                            07430000                
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 07440000                
*      ENTRY FOUND.  PUT ELEMENT ADDRESS IN PAS IF NOT 'COPY FROM'    * 07450000                
*      TERMINAL.  IF A NEW FORMAT IS TO BE USED, CREATE A FORMAT TABLE* 07460000                
*      ENTRY.                                                         * 07470000                
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 07480000                
       SPACE 1                                                          07490000                
DFF100 CLI   PASCPL+PLOPC(,PAS1),OPCOPY+OPPUT  IS THIS 'COPY FROM'?     07500000                
       TBF   PASFLG(,PAS1),PASFRT      TERMINAL?                        07510000                
       JC    DFF150,TANDEQ             YES, NO OTHER ACTION NEEDED.     07520000                
       SPACE                                                            07530000                
DFF110 ST    PASCT@(,PAS1),TT2         STORE @ IN CURRENT TT PROCESSED  07540000                
       TBN   PASFLG(,PAS1),PASRUF      READ UNDER FORMAT ?          @01 07560000                
       JF    DFF120                    NO, BRANCH                   @01 07570000                
       MVC   PASCFT(4,PAS1),PASRFN(,PAS1) MOVE IN FORMAT NAME       @01 07580000                
       J     DFF125                    CONTINUE PROCESSING          @01 07590000                
DFF120 TBN   PASCPL+PLOPC(,PAS1),OPPUT+OPMSG  IS THIS A PUT MESSAGE ?   07610000                
       TBF   PASCPL+PLOPM(,PAS1),OPLIST (NOT OVERRIDE)                  07620000                
       JF    DFF150                    NO, SKIP FOLLOWING PART          07630000                
       SPACE 2                                                          07640000                
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 07650000                
*   SEE IF FORMAT NAME IN LRA MATCHES ONE IN FT. IF NOT CREATE OR   @10 07660000                
*   FIND CORRECT FT ENTRY.                                          @10 07670000                
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 07680000                
       SPACE 1                                                          07690000                
*     MOVE THE FORMAT NAME TO PAS                                       07700000                
       L     PASCPL+PLRECA(,PAS1),LRA2 LOAD LRA ADDRESS                 07710000                
       MVC   PASCFT(,PAS1),FTLD(4,LRA2)       MOVE NAME TO PAS          07720000                
       SPACE 1                                                          07730000                
*     LOAD FT ENTRY ASSOCIATED WITH THIS TERMINAL                       07740000                
DFF125 L     PASCT@(,PAS1),TT2         LOAD CURRENT TT ENTRY @          07750000                
       L     TTFT@(,TT2),FT2           LOAD RESPECTIVE FT ENTRY         07760000                
       SPACE 2                                                          07770000                
*  THE HIGH ORDER BYTE OF THE FORMAT TABLE ENTRY IS 0'D OUT IF A FOR@10 07780000                
*      MAT DOES NOT EXIST FOR THIS ENTRY.  THEREFORE  A COMPARE WILL BE 07790000                
*      MADE TO LOW CORE AND THE FOLLOWING COMPARE WILL NOT BE EQUAL     07800000                
       SPACE                                                            07810000                
DFF130 CLC   PASCFT(,PAS1),FTNAME(4,FT2)  DOES THE NAME MATCH?          07820000                
       JNE   DFF300                    NO, CREATE FT ENTRY OR FIND      07830000                
*                                      CURRENT ONE                  @10 07840000                
*      MOVE INPUT TEXT LENGTH TO TT ENTRY AND RESET IFT BITS ON         07850000                
       SPACE 1                                                          07860000                
DFF140 L     PASCT@(,PAS1),TT1         LOAD TT @                        07870000                
       MVC   TTINLH(,TT1),FTINL(2,FT2) MOVE LENGTH INPUT HOLD AREA      07880000                
       MVI   TTIFT(,TT1),ALLBIT     INIT IFT TO ALL FLDS TO BE MOVED@10 07890000                
       MVC   TTIFT-1(,TT1),TTIFT(TTIFTL-1,TT1) PROPAGATE THROUGH        07900000                
       SPACE 1                                                          07910000                
       LA    ZEROD(,TT1),TT2           SWITCH REGISTERS.                07920000                
       L     PAS@A1,PAS1               RELOAD PAS @                     07930000                
       SPACE                                                            07940000                
*      RETURN TO CALLER                                                 07950000                
       SPACE 1                                                          07960000                
DFF150 L     PASFR@(,PAS1),IAR         RETURN TO CALLER                 07970000                
       TITLE 'DISPLAY FORMAT CONTROL RTN -- CREATE FORMAT TABLE'    @10 07980000                
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 07990000                
*                                                                     * 08000000                
*      THIS ROUTINE WILL CREATE A FORMAT TABLE ENTRY FOR A DESIRED    * 08010000                
*      DISPLAY IF ONE DOES NOT ALREADY   EXIST IN THE APPROPRIATE   @10 08020000                
*      PAS.  IF ONE DOES EXIST, THEN THE APPROPRIATE INFORMATION WILL * 08030000                
*      BE TRANSFERRED TO THE CURRENT TERMINAL TABLE ENTRY.            * 08040000                
*      IF A 'FORMAT TABLE' ENTRY NEEDS TO BE BUILT,  THE INDEX OF   @10 08050000                
*      FORMAT NAMES AND CURRENT DISK C/S WILL BE SEARCHED.          @10 08060000                
*                                                                     * 08070000                
*                                                                     * 08080000                
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 08090000                
       SPACE 3                                                          08100000                
* * * * * * *                                                           08110000                
DFF300 EQU   *                         ENTRY POINT                      08120000                
* * * * * * *                                                           08130000                
       SPACE 2                                                          08140000                
*     FORMAT NAME ALREADY MOVED TO PAS. SEE IF AN ENTRY EXISTS ALREA@10 08150000                
       L     PASITT(,PAS1),TT2         LOAD FIRST TT ENTRY              08160000                
       LA    TTL(,TT2),FT2             POINT TO FIRST FT ENTRY          08170000                
DFF310 CLC   FTNAME(,FT2),PASCFT(4,PAS1) DO NAMES MATCH?                08180000                
       SPACE 1                                                          08190000                
       BE    DFF390                    YES, NO NEED TO CREATE ENTRY     08200000                
       CLI   FTCHN@-1(,FT2),ZEROD      NO, IS THIS LAST ENTRY?          08210000                
       JE    DFF320                    YES, CREATE AN ENTRY             08220000                
       L     FTCHN@(,FT2),FT2          GET NEXT ENTRY                   08230000                
       B     DFF310                    LOOP BACK                        08240000                
       EJECT                                                            08250000                
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 08260000                
*      CREATE A FORMAT TABLE ENTRY.  THIS REQUIRES A SEARCH OF THE  @10 08270000                
*      FORMAT INDEX CREATED BY START-UP WHICH IS LOCATED IN         @10 08280000                
*      THE $CCPFILE OR THE EXTERNAL POINTER LIST.                   @10 08285000                
*      THE INDEX WILL GIVE THE START DISK C/S OF THE FORMAT ON THE    * 08290000                
*      SYSTEM OR PROGRAM PACK.  THEN THE WHOLE FDT  WILL BE READ IN   * 08300000                
*      FOR THE LENGTH OF THE AREA AVAILABLE IN THIS PAS.              * 08310000                
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 08320000                
       SPACE 2                                                          08330000                
DFF320 EQU   *                                                          08340000                
       SPACE 1                                                          08350000                
* ALLOCATE SPACE FOR AN ENTRY                                           08360000                
       SPACE 1                                                          08370000                
       MVC   FTCHN@(,FT2),PASNFT(2,PAS1) MOVE CHAIN ADDRESS TO NEXT FT  08380000                
       L     PASNFT(,PAS1),FT2           LOAD PTR TO NEXT AVAIL AREA    08390000                
       ST    PASCF@(,PAS1),FT2           SAVE AT 'CURRENT' POINTER      08400000                
       ALC   PASNFT(,PAS1),FTLNG(2)      INCR BY LNG OF ENTRY           08410000                
       CLC   PASNFT(,PAS1),PASEFT(2,PAS1) ENOUGH ROOM FOR THIS ENTRY?   08420000                
       BH    DFF075   *** ERROR ***    NO, NOT ENOUGH ROOM FOR FT ENTRY 08440000                
       SPACE 1                                                          08450000                
*INITIALIZE IOB FOR POSSIBLE READ OF FORMAT INDEX IN $CCPFILE       @10 08450100                
       MVC   PASIOB+IOBQB(,PAS1),#CPFLQ(1) MOVE Q BYTE OF CCPFILE       08450200                
       MVC   PASIOB+IOBSB(,PAS1),@DFFIX(2) MOVE C/S OF INDEX            08450400                
       MVC   DFF356+1,#DFQ(1)              SAVE Q BYTE OF FORMAT PACK   08450600                
       MVC   PASIOB+IOBDAT(,PAS1),PASFDT(2,PAS1) MOVE FDT @ FOR DATA    08450800                
       MVC   PASIOB+IOBNB(,PAS1),PASFDL(1,PAS1)  MOVE LNG TO IOB        08451000                
       SLC   PASIOB+IOBNB(,PAS1),ONE(1)          DECR TO L - 1          08451200                
       SPACE 2                                                          08451400                
*  SCAN INCORE DFF INDEX, IF IT EXISTS.  IF INDEX FOUND             @10 08451600                
*  THEN GO BUILD PAS FDT ENTRY.  ELSE SEARCH $CCPFILE DFF           @10 08451800                
*  INDEX FOR THE FORMAT.                                            @04 08452000                
       SPACE                                                            08452200                
       TBN   $FLGA,#EPL                TEST IF EXTERNAL PARM EXISTS @04 08452400                
       JF    DFF340                    NO. THEN SEARCH $CCPFILE     @10 08452600                
       L     NCTCB@,TCB2               ADDRESS CURRENT TCB.         @04 08452800                
       MVC   INXATT,TCBATT-INXATR(2,TCB2)   SAVE CURRENT ATR'S      @04 08453000                
       MVC   TCBATT-INXATR(,TCB2),@EPATR(2) FETCH ATR'S FOR INDEX   @04 08453200                
       LCP   TCBATT-INXATR(,TCB2),AT0E0F    LOAD THE DFF INDEX ATRS @04 08453400                
       LA    EP@LOG,INX2                 ADDRESS THE INDEX BLOCKS   @04 08453600                
       L     EP@DFF(,INX2),INX2          ADDRESS THE DFF INDEX      @04 08453800                
       SPACE                                                            08454000                
DFF322 CLC   INXNAM(,INX2),PASCFT(4,PAS1) TEST IF THIS IS THE FORMAT@04 08454200                
       JE    DFF326                       YES. GO MOVE S/C ADDRESS  @04 08454400                
       CLI   ZEROD(,INX2),INXNXT       TEST IF END-OF-INDEX         @04 08454600                
       JE    DFF324                    YES. BUT MORE IN $CCPFILE.   @04 08454800                
       JH    DFF325                    YES. BUT NONE IN $CCPFILE.   @04 08455000                
       LA    INXLNG(,INX2),INX2        NEXT INDEX IN BLOCK.         @04 08455200                
       B     DFF322                    LOOP ON INDEX.               @04 08455400                
       SPACE                                                            08455600                
DFF324 B     DFF328                    RESTORE ATR'S                @04 08455800                
       J     DFF340                    GO SEARCH $CCPFILE           @10 08456000                
       SPACE                                                            08456200                
DFF325 B     DFF328                    RESTORE ATR'S                @04 08456400                
       J     DFF355                    ERROR, FORMAT DOES NOT EXIST @04 08456600                
       SPACE                                                            08456800                
DFF326 MVC   PASWRK(,PAS1),INXCS(2,INX2) FETCH CS OF FORMAT FOUND   @04 08457000                
       B     DFF328                      RESTORE ATR'S              @04 08457200                
       LA    PASWRK-INXCS(,PAS1),INX2    POINT TO CS ADDRESS        @04 08457400                
       J     DFF356                      GO PROCESS IT.             @04 08457600                
       SPACE                                                            08457800                
*  RESTORE FORMAT ATR'S SUBROUTINE   *                              @04 08458000                
DFF328 ST    DFF329+3,ARR                   SAVE RETURN ADDRESS     @04 08458200                
       L     NCTCB@,TCB2                    ADDRESS CURRENT TCB.    @04 08458400                
       MVC   TCBATT-INXATR(,TCB2),INXATT(2) RESTORE ATR'S SAVED     @04 08458600                
       LCP   TCBATT-INXATR(,TCB2),AT0E0F    RESTORE ATR'S SAVED     @04 08458800                
DFF329 B     #                              RETURN TO CALLER        @04 08459000                
INXATT DC    AL2(##)                        SAVE AREA FOR ATR'S     @04 08459200                
       SPACE 2                                                          08459400                
*  ALLOCATE  SPACE FOR AN ENTRY AND SET UP POINTER TO NEXT AVALABLE @10 08460000                
*  ENTRY.  NOW PREPARE TO READ THE INDEX INTO  THE THE PAS FDT AREA @10 08470000                
*      FIND THE C/S OF THE FORMAT                                       08480000                
       SPACE 1                                                          08490000                
DFF340 MVC   WORK,PASFDL(1,PAS1)       MOVE FDT AREA LENGTH             08560000                
       SLC   PASWRK(,PAS1),PASWRK(2,PAS1)  CLEAR WORK AREA              08570000                
       MVI   PASWKZ(,PAS1),INXNS       INIT NUMBER ENTRIES IN SECTOR    08580000                
       SPACE                                                            08590000                
DFF345 ALC   PASWRK(,PAS1),PASWKZ(2,PAS1)    ADD SECTOR AMT TO TOTAL    08600000                
       SLC   WORK,ONE(1)               DECR NUMBER OF SECTORS           08610000                
       BNE   DFF345                    LOOP IF NOT FINISHED             08620000                
       SPACE                                                            08630000                
* READ INDEX INTO FDT AREA                                              08640000                
       B     DFV000                    CALL DISK IOS                    08650000                
       SPACE                                                            08660000                
* NOW SEARCH INDEX FOR THE DESIRED DISPLAY FORMAT NAME                  08670000                
       L     PASFDT(,PAS1),INX2                                         08680000                
DFF350 CLC   INXNAM(,INX2),PASCFT(4,PAS1)         DO NAMES COMPARE?     08690000                
       JE    DFF356                    YES, EXIT                        08700000                
       CLI   ZEROD(,INX2),INXNXT       END OF SECTOR OR INDEX       @04 08710000                
       JH    DFF355                    END-OF-INDEX, INDICATE ERROR @04 08715000                
       JL    DFF352                    END-OF-SECTOR, NO THEN SKIP. @04 08720000                
       LA    INXES(,INX2),INX2         END-OF-SECTOR,YES NEXT SECT. @04 08725000                
       B     DFF350                    BRANCH TO PROCESS NEXT ENTRY @07 08726000                
       SPACE 1                                                      @07 08727000                
DFF352 LA    INXLNG(,INX2),INX2        INCR TO NEXT ENTRY           @04 08730000                
       SLC   PASWRK(,PAS1),ONE(2)      DECR NUMBER SECTORS PROCESSED    08740000                
       BNE   DFF350                    IF MORE SECTORS TO PROCESS, LOOP 08750000                
       SPACE                                                            08760000                
* PROCESSED ALL THE INDEXES IN CORE AND STILL NOT FOUND.                08770000                
*      READ MORE INDEXES INTO FDT AREA                                  08780000                
       SPACE                                                            08790000                
       B     DFI000                    INCR DISK ADDRESS                08800000                
       B     DFF340                    LOOP BACK TO READ MORE           08810000                
       SPACE 2                                                          08820000                
****** ERROR FORMAT NAME NOT FOUND IN INDEX                             08830000                
DFF355 B     DFT030                    CALL TERMINATE ROUTINE           08840000                
       DC    AL1(TC04)                                                  08850000                
       SPACE 2                                                          08860000                
*      INDEX FOUND, NOW READ FDT OF THIS FORMAT INTO FDT AREA IN PAS    08870000                
       SPACE                                                            08880000                
DFF356 MVI   PASIOB+IOBQB(,PAS1),#     MOVE IN Q BYTE OF PACK FORMATS   08890000                
       MVC   PASIOB+IOBSB(,PAS1),INXCS(2,INX2)  MOVE FORMAT C/S INTO IO 08900000                
       SPACE                                                            08910000                
*  NOW READ THE FDT OF THE DESIRED FORMAT INTO PAS                      08920000                
       B     DFV000                    CALL DISK IOS                    08930000                
       SPACE 2                                                          08940000                
*   BUILD UP FORMAT TABLE ENTRY                                         08950000                
       SPACE 1                                                          08960000                
DFF360 L     PASCF@(,PAS1),FT2         RELOAD @ OF THIS ENTRY           08970000                
       MVI   FTCHN@-1(,FT2),ZEROD      CLEAR CHAIN POINTER              08980000                
       MVC   FTFCS(,FT2),PASIOB+IOBSB(2,PAS1)  MOVE C/S OF FDT          08990000                
       MVC   FTTSCS(,FT2),FTFCS(2,FT2) INIT C/S OF TEXT                 09000000                
       MVC   FTNAME(,FT2),PASCFT(4,PAS1)  MOVE FMT NAME                 09010000                
       L     PASFDT(,PAS1),FDT1        LOAD DATA AREA @                 09020000                
       MVC   FTFDTL(,FT2),FDTNS(1,FDT1) MOVE NUMBER SECTORS OF FDT      09030000                
       MVC   FTTSL(,FT2),FDTTSN(1,FDT1)  MOVE # SECTORS TEXT STREAM     09040000                
       MVC   FTOUTL(,FT2),FDTTSL(2,FDT1)  MOVE BYTE LNG OF TEXT STREAM  09050000                
       MVC   FTINL(,FT2),FDTTSI(2,FDT1)  MOVE FULL INPUT LENGTH         09060000                
       SPACE 2                                                          09070000                
* CALCULATE ACTUAL  C/S OF TEXT STREAM                                  09080000                
       SPACE 1                                                          09090000                
* ADD # OF SECTORS OF FDT TO FIND BEGIN C/S OF DATA TEXT.               09100000                
       MVC   FDTWRK(,FDT1),FDTNS(1,FDT1)  MOVE FDT LENGTH TO 'WORK'     09110000                
*  THE FDT IS AT LEAST ONE SECTOR IN LENGTH                             09120000                
       SPACE                                                            09130000                
DFF363 ALC   FTTSCS(,FT2),FOUR(1)      ADD ONE SECTOR TO BASE C/S       09140000                
       TBN   FTTSCS(,FT2),X60          OVERFLOW TO ANOTHER TRACK?       09150000                
       JF    DFF370                    NO, OKAY                         09160000                
       ALC   FTTSCS(,FT2),X0020(2)     YES, FORCE TO NEXT TRACK @       09170000                
DFF370 SLC   FDTWRK(,FDT1),ONE(1)      DECR FDT LENGTH                  09180000                
       BNE   DFF363                    IF NOT FINISHED, LOOP BACK       09190000                
       SPACE 2                                                          09200000                
* CHECK FOR SCREEN SIZE                                                 09210000                
       TBN   FDTM#(,FDT1),FDTM#2       IS THIS FMT FOR MODEL 2?         09220000                
       JF    DFF390                    NO, CONTINUE                     09230000                
       SBN   FTTSL(,FT2),FTM#2         YES, INDICATE IN FT              09240000                
       SPACE                                                            09250000                
*  CHECK IF THIS TERMINAL IS PROPER MODEL NUMBER FOR THE FORMAT         09260000                
DFF390 L     PAS@A1,PAS1               RELOAD PAS @                     09270000                
       SPACE                                                            09280000                
       L     PASCPL+PLTUBA(,PAS1),TUB1 POINT TO RESPECTIVE TUB          09290000                
       TBN   FTTSL(,FT2),FTM#2         MODEL 2 FORMAT?                  09300000                
       JF    DFF392                    NO, CHECK MODEL 1 TERMINAL       09310000                
       CLI   TUBPHY(,TUB1),TUB7M2      MODEL 2 3277?                    09320000                
       JE    DFF397                    YES, OKAY                        09330000                
       CLI   TUBPHY(,TUB1),TUB5M2      MODEL 2 3275?                    09340000                
       JE    DFF397                    YES, OKAY                        09350000                
       J     DFF394                    NO, ERROR                        09360000                
       SPACE                                                            09370000                
DFF392 EQU   *                         CHECK FOR MODEL 1 TERMINAL       09380000                
       CLI   TUBPHY(,TUB1),TUB7M1      MODEL 1 3277?                    09390000                
       JE    DFF397                    YES, OKAY                        09400000                
       CLI   TUBPHY(,TUB1),TUB5M1      MODEL 1 3275?                    09410000                
       JE    DFF397                    YES, OKAY                        09420000                
       SPACE                                                            09430000                
****** ERROR   TERMINAL MODEL NUMBER DOES NOT MATCH DISPLAY MODEL #     09440000                
DFF394 B     DFT030                    CALL TERMINATION ROUTINE         09450000                
       DC    AL1(TC13)                                                  09460000                
       SPACE 2                                                          09470000                
*CHECK IF THIS FDT WILL FIT IN THE AREA RESERVED FOR IT             @10 09490000                
        SPACE                                                           09500000                
DFF397 EQU   *                                                          09510000                
       L     PAS@A1,PAS1               RELOAD PAS @                     09520000                
       CLC   PASFDL(,PAS1),FTFDTL(1,FT2) WILL WHOLE FDT FIT IN AREA?    09530000                
       JNL   DFF400                    YES, OKAY                        09540000                
       SPACE                                                            09550000                
****** ERROR FDT WILL NOT FIT INTO THE AREA                             09560000                
DFF395  EQU  *                                                          09570000                
       B     DFT030                    CALL TERMINATION ROUTINE         09580000                
       DC    AL1(TC10)                                                  09590000                
       SPACE                                                            09600000                
DFF400 L     PASCT@(,PAS1),TT1         RELOAD CURRENT TT ENTRY          09610000                
       ST    TTFT@(,TT1),FT2           STORE @ OF RESPECTIVE FT ENTRY   09620000                
DFF410 L     PAS@A1,PAS1               RELOAD PAS @                     09630000                
       B     DFF140                    RETURN                       @10 09640000                
       TITLE 'DISPLAY FORMAT CONTROL ROUTINE.---INPUT OPERATIONS'   @10 09650000                
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 09660000                
*                                                                     * 09670000                
*      INPUT SECTION FOR 'GET', 'INVITE INPUT', 'STOP INVITE INPUT',  * 09680000                
*            'ACCEPT INPUT'.                                          * 09690000                
*                                                                     * 09700000                
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 09710000                
       SPACE 2                                                          09720000                
DFG000 EQU   *                         ENTRY POINT TO THIS SECTION      09730000                
       SPACE                                                            09740000                
*  FIND THE TERMINAL NAME TABLE ENTRY                                   09750000                
       SPACE                                                            09760000                
       B     DFF000                    TT SHOULD BE CREATED ALREADY @10 09770000                
       SPACE                                                            09780000                
*IF THIS IS AN INVITE INPUT, THEN BYPASS GETTING FDT                    09790000                
       SPACE                                                            09800000                
       CLI   PASCPL+PLOPC(,PAS1),OPINV INVITE INPUT OPERATION ?         09810000                
       JE    DFG020                    YES, BRANCH                      09820000                
       B     DFJ000                    GO READ IN FDT                   09830000                
       SPACE                                                            09840000                
*    BLANK OUT CALLER'S RECORD AREA                                     09850000                
       SPACE                                                            09860000                
       LA    MOVEPL,XR2                POINT TO MOVE PARM LIST          09870000                
       MVC   DFGLEN-MOVEPL(2,XR2),PASCPL+PLINL(,PAS1) MOVE IN LENGTH    09880000                
       MVC   DFGRF@-MOVEPL(2,XR2),PASCPL+PLRECA(,PAS1) MOVE IN ADDR     09890000                
       B     CC4MX                     CALL MOVE ROUTINE                09900000                
DFG020 L     PASPL@(,PAS1),UPL2        RELOAD UPL @                     09910000                
       TBN   PASCPL+PLOPC(,PAS1),OPACI  ACCEPT INPUT OPERATION AND  @06 09915000                
       TBF   PASCPL+PLOPC(,PAS1),ALLBIT-OPANW  ONLY ACCEPT INPUT?   @06 09920000                
       JT    DFG060                    YES                          @06 09930000                
       SPACE                                                            09940000                
DFG030 EQU   *                                                          09950000                
*  OP CODE IS 'STOP II', 'GET', OR 'INVITE INPUT'.                      09960000                
*  MOVE LENGTH OF TEXT STREAM EXPECTED INTO PARM LIST INSTEAD OF        09970000                
*  USER'S LENGTH.                                                       09980000                
       L     PASCT@(,PAS1),TT1         LOAD CURRENT TT ENTRY            09990000                
       MVC   PLINL(,UPL2),TTINLH(2,TT1)  MOVE EXPECTED TEXT LENGTH.     10000000                
       CLC   PLINL(2,UPL2),#TPANY       INPUT LENGTH EXCEED TPBUFF ?    10010000                
       JNH   DFG040                     NO, BRANCH                      10020000                
       B     DFT030                     YES, TERMINATE USER TASK        10030000                
       DC    AL1(TCCTPB)                INPUT LENGTH > TPBUFF           10040000                
DFG040 EQU   *                                                          10050000                
       L     PAS@A1,PAS1               RELOAD PAS                       10060000                
DFG060 B     DFFRTN                    RETURN TO II MAINLINE            10070000                
       TITLE 'DISPLAY FORMAT CONTROL ROUTINE--SETUP GETMAIN LENGTH' @10 10080000                
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 10090000                
*                                                                     * 10100000                
*SETUP GETMAIN LENGTH  -- SETUP LENGTH OF AREA TO BE GETMAINED BY   @10 10110000                
*  CM/CS FROM CCP'S DYNAMIC TPBUFFER AREA.                          @10 10120000                
*                                                                     * 10130000                
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 10140000                
       SPACE 2                                                          10150000                
* * * * * * *                                                           10160000                
DFH000 EQU   *                         ENTRY POINT                      10170000                
* * * * * * *                                                           10180000                
       SPACE 1                                                          10190000                
*      THE RETURN ADDR IS SAVED IN PAS SINCE A TASK SWITCH MAY OCCUR    10200000                
*      XR1 SHOULD BE POINTING TO PAS.  XR2 TO UPA.                  @08 10205000                
       ST    PASTAR(,PAS1),ARR         SAVE RETURN POINT                10210000                
       L     PASCPL+PLTUBA(,PAS1),TUB2 LOAD @ OF RESPECTIVE TUB.        10234000                
       SPACE 2                                                          10240000                
*    FIND OUT WHICH LINE THE TERMINAL IS ON.                            10250000                
DFH020 MVC   PASOHL(,PAS1),TUBRCL(2,TUB2) MOVE IN SIZE OF RECORD LENGTH 10280000                
       L     TUBDTF(,TUB2),DTF2           --> LINE DTF              @10 10282000                
       TBN   LCBATA(,DTF2),LCBDFF         DFF BUFFER SUPPORTED?     @10 10284000                
       JF    DFH025                       NO-CONTINUE               @10 10286000                
       CLC   PASOHL(,PAS1),X800(2)        REC LEN < 2K?             @10 10288000                
       JL    DFH025                       YES--USE IT               @10 10290000                
       MVC   PASOHL(,PAS1),X800(2)        SET LENGTH TO 2K          @10 10292000                
DFH025 SBF   PASFLG(,PAS1),ALLBIT-PASFTS  CLEAR OUT FLAG BYTES      @10 10300000                
       CLC   PASTTS(,PAS1),PASOHL(2,PAS1) TOTAL TEXT > RECORD LENGTH    10310000                
       JNH   DFH050                       NO, THEN NO BLOCKING.         10320000                
       SPACE 2                                                          10330000                
* INDICATE BLOCKING. FIND OUT WHAT THE BLOCK SIZE IS                    10340000                
DFH040 SBN   PASFLG(,PAS1),PASBLK      INDICATE BLOCKING AND FIRST TIME 10350000                
DFH042 CLC   PASOHL(,PAS1),X200(2)     IS RECORD LENGTH AT LEAST 512 ?  10360000                
       JNL   DFH060                    YES, OKAY                        10370000                
       SPACE 1                                                          10380000                
****** ERROR                           FOR BLOCKING, RECORD LENGTH MUST 10390000                
DFH045 B     DFT030                    BE AT LEAST 512.                 10400000                
       DC    AL1(TC08)                 TERMINATION CODE                 10410000                
       SPACE                                                            10420000                
* NO BLOCKING -- USE PASTTS FOR LENGTH                              @10 10425000                
DFH050 MVC   PASOHL(2,PAS1),PASTTS(,PAS1) MOVE IN OUTPUT HOLD LENGTH@10 10430000                
       ALC   PASOHL(2,PAS1),X00FF      INCREMENT TO SECTOR BOUNDARY     10440000                
       SBF   PASOHL(,PAS1),ALLBIT      SET OFF RIGHT MOST BITS          10450000                
       TBN   LCBATA(,DTF2),LCBDFF      DFF BUFFER SUPPORTED?        @10 10453000                
       JT    DFH060                    YES-BRANCH                   @10 10456000                
       CLC   PASOHL-1(1,PAS1),#TPPUT-1 SIZE GREATER THAN PUT AREA ?     10460000                
       JNH   DFH060                    NO, EVERYTHING OK                10470000                
       MVC   PASOHL-1(1,PAS1),#TPPUT-1 MOVE IN NEW SIZE                 10480000                
       B     DFH040                    GO INDICATE BLOCKING REQUIRED    10490000                
       SPACE 2                                                          10500000                
*      INDICATE AMOUNT OF TEXT AREA REQUIRED IN BUFFER.                 10510000                
       SPACE 1                                                          10515000                
DFH060 EQU   *                                                          10520000                
       TBN   PASCPL+PLOPC(,PAS1),OPPUT+OPMSG PUT MESSAGE ?              10530000                
       JF    DFH062                     NO, BRANCH                      10540000                
       TBN   PASCPL+PLOPM(,PAS1),OPLIST PUT OVERRIDE ?                  10550000                
       TBF   PASFLG(,PAS1),PASBLK      AND NOT A BLOCKING OPERATION     10560000                
       JF    DFH063                    NO, BRANCH                       10570000                
DFH062 MVC   PASOHL(2,PAS1),PASTTS(,PAS1) MOVE IN REQUIRED TPBUFFER SPC 10580000                
DFH063 EQU   *                                                          10590000                
       SPACE                                                            10600000                
       L     PASPL@(,PAS1),UPL2        POINT TO USER PARM LIST          10610000                
       MVC   PLOUTL(2,UPL2),PASOHL(,PAS1) MOVE IN REQ. LENGTH           10620000                
DFH070 EQU   *                                                          10630000                
       L     PASTAR(,PAS1),IAR         RETURN TO CALLER                 10640000                
       TITLE 'DISPLAY FORMAT CONTROL ROUTINE.--INCREMENT DISK ADDR'     10650000                
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 10660000                
*                                                                     * 10670000                
*      INCREMENT THE DISK C/S ADDRESS IN IOB TO READ IN NEXT PART OF  * 10680000                
*      THE FDT.                                                       * 10690000                
*                                                                     * 10700000                
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 10710000                
       SPACE 2                                                          10720000                
DFI000 EQU   *                                                          10730000                
       SPACE                                                            10740000                
*      XR1 SHOULD POINT TO PAS                                          10750000                
       ST    PASXR@(,PAS1),ARR         SAVE RETURN ADDRESS              10760000                
       SPACE                                                            10770000                
*      IOBCHN IS UPDATED ONE SECTOR SINCE THIS FIELD WAS UPDATED BY     10780000                
*      DISK IOS TO POINT TO THE LAST SECTOR READ IN BY IT.              10790000                
       SPACE                                                            10800000                
DFI010 ALC   PASIOB+IOBCHN(,PAS1),FOUR(1)   INCR TO NEXT SECTOR         10810000                
       TBN   PASIOB+IOBCHN(,PAS1),X60  IS THIS NEW @ INVALID?           10820000                
       JF    DFI020                    NO, OKAY                         10830000                
       ALC   PASIOB+IOBCHN(,PAS1),X0020(2)  YES, INCR TO NEXT TRACK @   10840000                
       SPACE                                                            10850000                
DFI020 MVC   PASIOB+IOBSB(,PAS1),PASIOB+IOBCHN(2,PAS1)  MOVE NEW @ TO   10860000                
*                                      PROPER PLACE                     10870000                
       SPACE 2                                                          10880000                
       L     PASXR@(,PAS1),IAR         RETURN TO CALLER                 10890000                
       TITLE 'DISPLAY FORMAT CONTROL ROUTINE.---READ FDT INTO PAS'      10900000                
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 10910000                
*                                                                     * 10920000                
*     READ 'FIELD DESCRIPTOR TABLE' (FDT). IF THE DESIRED ONE IS NOT    10930000                
*     IN THE CURRENT PAS, THEN READ IT FROM DISK.                     * 10940000                
*      XR1-->PAS, XR2 IS NOT, NOT SAVED.                              * 10950000                
*                                                                     * 10960000                
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 10970000                
       SPACE 2                                                          10980000                
DFJ000 ST    PASJR@(,PAS1),ARR         SAVE RETURN ADDRESS IN PAS       10990000                
       L     PASCT@(,PAS1),TT2         LOAD CURRENT TT ENTRY            11000000                
       CLC   TTFT@(,TT2),PASCF@(2,PAS1) @ OF FT MATCH CURRENT ONE?      11010000                
       JE    DFJ060                    YES, TEST FOR PUT OVERRIDE       11020000                
       SPACE 2                                                          11030000                
*     CURRENT FDT IN PAS NOT CORRECT ONE, READ PROPER ONE IN FROM DISK. 11040000                
       SPACE 1                                                          11050000                
       L     TTFT@(,TT2),FT2           POINT TO FT ENTRY                11060000                
       SPACE                                                            11070000                
* Q BYTE FOR IOB SET UP ALREADY IN IOB BY ALLOCATE INITIALIZATION       11080000                
       SPACE                                                            11090000                
       MVC   PASIOB+IOBNB(,PAS1),FTFDTL(3,FT2) MOVE C/S OF FDT+ # SCTRS 11100000                
       SPACE 1                                                          11110000                
DFJ030 SLC   PASIOB+IOBNB(,PAS1),ONE(1) DECR TO #-1.                    11120000                
       MVC   PASIOB+IOBDAT(,PAS1),PASFDT(2,PAS1) MOVE FDT @             11130000                
       ST    PASCF@(,PAS1),FT2         SAVE @ OF CURRENT FT ENTRY       11140000                
       SPACE                                                            11150000                
       B     DFV000                    CALL DISK IOS AND WAIT           11160000                
       SPACE                                                            11170000                
DFJ060 L     PASFDT(,PAS1),FDT2        POINT TO FDT                 @02 11190000                
       CLI   PASCPL+PLOPM(,PAS1),OPLIST  IS OP CODE PUT OVERRIDE    @02 11200000                
       TBN   FDTCFG(,FDT2),FDTPRT      IS THIS A PRINTER GEN. FORMAT@02 11210000                
       JC    DFJ062,TANDEQ             JUMP TRUE AND EQUAL          @02 11220000                
       J     DFJ065                    NO-CONTINUE                  @02 11230000                
       SPACE 1                                                      @10 11240000                
DFJ062 L     PASCPL+PLRECA(,PAS1),LRA1 POINT TO OVERRIDE LIST       @02 11250000                
       LA    WCC-1(,LRA1),LRA1         INCR PAST WCC                @02 11260000                
       CLI   PORMOD(,LRA1),BLANKD      OPERATION FIELD BLANK?       @02 11270000                
       JE    DFJ065                    JUMP EQUAL                   @02 11280000                
       CLI   PORMOD(,LRA1),MODDAT      MODIFY DATA OPERATION?       @02 11290000                
       JE    DFJ065                    JUMP EQUAL                   @02 11300000                
       SPACE 1                                                      @10 11310000                
****** ERROR TYPE, CURSOR POSITION OR ERASE OPERATIONS ARE NOT VALID@02 11320000                
*            WHEN ISSUING A PUT OVERRIDE TO A PFGR FORMAT           @02 11330000                
       B     DFT030                    CALL TERMINATION CODE        @02 11340000                
       DC    AL1(TC09)                                              @02 11350000                
       SPACE 1                                                      @10 11360000                
DFJ065 L     PAS@A1,PAS1               RELOAD PAS @                 @02 11370000                
       L     PASJR@(,PAS1),IAR         RETURN VIA PAS                   11390000                
       TITLE 'DISPLAY FORMAT CONTROL ROUTINE.---EXIT TO $CC4II'     @10 11400000                
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 11410000                
*      COMMON SECTION TO RETURN TO II'S MAINLINE CODE                 * 11420000                
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 11430000                
       SPACE 2                                                          11440000                
DFFRTN EQU   *                                                          11450000                
       MVC   DFFIRT+3(2),PASIAR(,PAS1) MOVE IN RETURN ADDRESS           11460000                
       L     PASPL@(,PAS1),UPL2        RELOAD USER'S PARM POINTER       11470000                
       L     PASIX1(,PAS1),XR1         RESTORE REGISTER 1               11480000                
DFFIRT B     #                         RETURN TO II'S MAINLINE          11490000                
       TITLE 'DISPLAY FORMAT CONTROL ROUTINE --- RELEASE TERMINAL'  @10 11500000                
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 11510000                
*                                                                     * 11520000                
*      RELEASE OP CODE LOGIC.                                         * 11530000                
*                                                                     * 11540000                
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 11550000                
       SPACE 2                                                          11560000                
DFR000 EQU   *                                                          11570000                
* CHECK TERMINAL NAME FOR VALIDITY AND FIND IT TT IT WAS PROCESSED  @10 11580000                
*      PREVIOUSLY BY THIS PROGRAM.                                      11590000                
       SPACE                                                            11600000                
       B     DFF000                    CALL TERMINAL TABLE ROUTINE      11610000                
       SPACE                                                            11620000                
*  IF TERMINAL NAME IS NOT FOUND, THE HIGH-ORDER BYTE OF 'CURRENT'    * 11630000                
*  ENTRY WILL BE ZERO                                                   11640000                
       CLI   PASCT@-1(,PAS1),ZEROD     WAS MATCH ENTRY FOUND?           11650000                
       JE    DFR020                    NO, CONTINUE                     11660000                
       SPACE                                                            11670000                
*  THE FOLLOWING IS AN ENTRY POINT FROM DFF IF A TERMINAL WAS       @10 11680000                
*  RELEASED BY AN TERMINAL OPERATOR COMMAND                             11690000                
DFR010 MVI   TTNAME-TNAMLD(,TT2),BLANKD  CLEAR NAME IN TT ENTRY         11700000                
       MVI   TTFT@-1(,TT2),ZEROD       BLANK OUT FT CHAIN POINTER       11710000                
       SPACE                                                            11720000                
*  PREPARE TO RETURN TO $CC4II                                          11730000                
DFR020 B     DFFRTN                    RETURN TO II'S MAINLINE          11740000                
       TITLE 'DISPLAY FORMAT CONTROL RTN -- CHECK FOR TERMINATION'  @10 11750000                
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 11760000                
*                                                                     * 11770000                
*    TERMINATE A TASK.  THIS ROUTINE WILL CHECK IF A TASK SHOULD      * 11780000                
*    BE TERMINATED. IF IT SHOULD, A TERMINATION CODE SHOULD BE        * 11790000                
*     PLACED IN THE TASK'S PASTC. IF NOT, THAT AREA SHOULD BE X'00'.  * 11800000                
*                                                                     * 11810000                
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 11820000                
       SPACE 2                                                          11830000                
*#####################################                                  11840000                
*  THE FOLLOWING INSTRUCTION IS THE ENTRY POINT FOR ERRORS WHICH WERE   11850000                
*      GENERATED WITH IN THIS PROGRAM, NOT FROM A TRANSIENT. THE ARR    11860000                
*      SHOULD BE POINTING TO A TERMINATION CODE.                        11870000                
DFT030 ST    DFT050+4,ARR              SAVE ADDR OF TERMINATION CODE    11880000                
       L     PAS@A1,PAS2               LOAD PAS @                       11890000                
DFT050 MVC   PASTC(,PAS2),#(1)         MOVE TERM CODE TO  PAS           11900000                
*#####################################                                  11910000                
       SPACE                                                            11920000                
*######################################                                 11930000                
*      THE FOLLOWING INSTRUCTION IS THE ENTRY FOR CHECKING THE          11940000                
*      THE TERMINATION CODE AFTER A CALL TO THE TRANSIENTS              11950000                
*######################################                                 11960000                
DFT000 CLI   PASTC(,PAS2),ZEROD        NO TERMINATION CODE ?            11970000                
       JE    DFT035                    RIGHT, RETURN                    11980000                
       SPACE                                                            11990000                
*  AN ERROR WAS DETECTED FROM A TRANSIENT.. CALL $CC4DD TO CHECK        12000000                
*   IF MSG 528 SHOULD BE ISSUED.                                        12010000                
       SPACE                                                            12020000                
DFT010 B     CC4PI                     CALL TRANSIENT HANDLER           12030000                
       DC    AL1(CC4DD)                TRANSIENT NAME                   12040000                
       SPACE                                                            12050000                
DFT020 LA    PASTC(,PAS2),PAS2         LOAD @ OF TERMINATION CODE       12060000                
       ST    PASWRK-PASTC(,PAS2),PAS2  SAVE THE ADDRESS                 12070000                
       L     PASWRK-PASTC(,PAS2),ARR   POINT THE ARR TO IT              12080000                
       SPACE                                                            12090000                
DFT025 L     DFTI2,IAR                 EXIT TO TERMINATION ROUTINE      12100000                
DFTI2  DC    AL2(C4TI2)                ADDRESS OF TERMINATION ROUTINE   12110000                
       SPACE                                                            12120000                
DFT035 ST    PASXR@(,PAS2),ARR         RETURN TO CALLER                 12130000                
       ST    PAS@A1,PAS2               SAVE PAS @ IN CASE $CC4DB OR     12140000                
*                                      $CC4DB WERE CALLED               12150000                
DFT040 L     PASXR@(,PAS2),IAR         RETURN TO CALLER                 12160000                
       TITLE 'DISPLAY FORMAT CONTROL RTN -- CALL DISK IOS + WAIT'   @10 12170000                
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 12180000                
*                                                                     * 12190000                
*      CALL DISK IOS AND WAIT, AND CHECK FOR COMPLETION CODE          * 12200000                
*      XR1 WILL BE SAVED AND RESTORED. XR2 WILL BE DESTROYED.       @10 12210000                
*                                                                     * 12220000                
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 12230000                
       SPACE 2                                                          12240000                
DFV000 EQU   *                                                          12250000                
       ST    PASTAR(,PAS1),ARR         SAVE CALLER'S RETURN ADDRESS     12260000                
       LA    ZEROD(,PAS1),PAS2         SWITCH REGISTERS                 12270000                
       LA    PASIOB(,PAS2),IOB         LOAD IOB ADDRESS                 12280000                
       CLI   IOBQB(,IOB),X'C0'         IS THIS A PHYSICAL SIMU AREA?@12 12281000                
       JL    DFV002                    NO--GO SET ON READ BIT       @11 12282000                
       SBF   IOBQB(,IOB),X'20'         YES-ALTER Q AND FLAG2 TO     @11 12283000                
       SBN   IOBFL2(,IOB),X'14'           -INDICATE "SPECIAL" Q     @11 12284000                
       J     DFV003                                                 @11 12285000                
DFV002 SBN   IOBQB(,IOB),X01           SET ON READ  BIT             @11 12290000                
       SBF   IOBFL2(,IOB),X'14'        NOT A SPECIAL Q CODE         @12 12295000                
DFV003 CCP   ENABLE,PMR                ENABLE INTERRUPTS            @11 12300000                
       SPACE                                                            12310000                
       SVC   0                         START DISK I/O                   12320000                
       DC    XL1'02'                   RIB FOR EXIO                     12330000                
DFV005 SVC   0                         WAIT ON I/O                      12340000                
       DC    XL1'03'                   RIB FOR WAIT                     12350000                
       TBN   IOBECB(,IOB),POST         IS MY ECB POSTED ?               12360000                
       BF    DFV005                    NO, BRANCH                       12370000                
       SPACE                                                            12380000                
       CCP   DISABL,PMR                DISABLE INTERRUPTS               12390000                
       CLI   IOBCMP(,IOB),IOBOK        NORMAL COMPLETION?               12400000                
       ST    PAS@A1,PAS2               STORE PAS ADDRESS LOCALLY        12410000                
       JE    DFV020                    YES, CONTINUE                    12420000                
       SPACE                                                            12430000                
****** ERROR NON-NORMAL DISK COMPLETION                                 12440000                
DFV010 EQU   *                                                          12450000                
       B     DFT030                    CALL TERMINATION CODE            12460000                
       DC    AL1(TC07)                                                  12470000                
       SPACE 2                                                          12480000                
DFV020 LA    ZEROD(,PAS2),PAS1         SWITCH REGISTERS AGAIN           12490000                
DFV040 L     PASTAR(,PAS1),IAR         RETURN TO CALLER                 12500000                
       TITLE 'CHECK RETURN CODE OF OPERATION AFTER OP-END COMPLETE' @10 12510000                
DFQ030 ST    DFQXR1+3,XR1              STORE CALLER'S XR1               12520000                
       ST    DFQRTN+3,ARR              STORE CALLER'S ARR               12530000                
       L     NCTCB@,TCB1               POINT TO TASK'S TCB              12540000                
       L     TCB@AS(,TCB1),PAS1        POINT TO PAS                     12550000                
       ST    PASWRK(,PAS1),UPL2        STORE PARM POINTER               12560000                
       MVC   PLINL(6,UPL2),PASCPL+PLINL(,PAS1) RESTORE PARM LIST        12570000                
       MVC   PLRECA(2,UPL2),PASCPL+PLRECA(,PAS1) AND ADDRESS            12580000                
       CLI   PLRTC(,UPL2),RCOK         GOOD RETURN CODE ?               12590000                
       JE    DFQ080                    YES, RETURN                      12600000                
       SPACE                                                            12610000                
*    NON-ZERO RETURN CODE, SO CHECK IF TERMINAL SHOULD BE TREATED       12620000                
*    AS IF THE FORMAT IS NOT AT THE TERMINAL. IF SO BLANK OUT           12630000                
*    THE TERMINAL NAME IN THE TT ENTRY TO INDICATE PROGRAM WAS          12640000                
*    NOT COMMUNICATING TO TERMINAL.                                     12650000                
       SPACE                                                            12660000                
       CLI   PLRTC(,UPL2),RCXCLR       'CLEAR' KEY GIVEN ?              12670000                
       JE    DFQ050                    YES, CLEAR TT ENTRY              12680000                
       CLI   PLOPC(,UPL2),OPEAU+OPPUT  'EAU'  REQUEST ?                 12690000                
       TBF   PLOPC(,UPL2),OPGET        OR A GET REQUEST ?               12700000                
       JC    DFQ080,FOREQ              'EAU' OR INPUT, IGNORE           12710000                
       TBN   PLOPM(,UPL2),OPLIST       PUT OVERRIDE OP ?                12720000                
       JF    DFQ050                    NO, CLEAR TT ENTRY               12730000                
       TBN   PASWCC(,PAS1),WCCMDT      REQUEST TO RESET MDT ?           12740000                
       JF    DFQ080                    NO, LEAVE AS IS                  12750000                
DFQ050 L     PASCT@(,PAS1),TT2         POINT TO TT ENTRY                12760000                
       MVI   TTNAME-TNAMLD(,TT2),BLANKD CLEAR OUT TT ENTRY              12770000                
DFQ080 L     PASWRK(,PAS1),UPL2        RELOAD USER PARM                 12780000                
DFQXR1 LA    #,XR1                     RELOAD CALLER'S XR1              12790000                
DFQRTN B     #                         RETURN TO CALLER                 12800000                
.END   ANOP                                                             12810000                
       MEND                                                             12820000