*    DSGEN  MACRO       D S G E N   M A C R O           DSGEN  MACRO    00130002
         SPACE                                                          00180002
         MACRO                                                          00230002
&NAME    DSGEN ,                                                        00280002
.*                            THIS MACRO GENERATES ONE DSECT WORD       00330002
.*                                 FORMATTED FOR THE SUBJECT LOG RECORD 00380002
.*                                 EACH OPERAND HAS TWO SUB LISTS. THE  00430002
.*                                 FIRST IS THE NAME OF THE LOG ITEM    00480002
.*                                 WHILE THE SECOND IS THE # OF BITS TO 00530002
.*                                 ALLOCATE FOR THIS ITEM. ITEMS MUST   00580002
.*                                 BE DEFINED CONTIGUOUSLY WITHOUT GAPS 00630002
.*                                 UNUSED BIT GROUPS MUST BE GIVEN      00680002
.*                                 DUMMY NAMES. THE NAMES PROVIDED FOR  00730002
.*                                 THE LOG ITEMS MAY THEN BE USED IN    00780002
.*                                 THE CONVERSION MACRO INSTRUCTIONS.   00830002
         GBLA  &BITS(1000),&ITEMNBR,&SHIFT(1000)               @Y30LPDS 00880002
         GBLC  &ITEM(1000)                                     @Y30LPDS 00930002
         LCLB  &ONLY1,&CTIND                                   @Y30LPDS 00980002
         LCLA  &START1,&START2,&END1,&END2                     @Y30LPDS 01030002
         LCLC  &SYMBOL,&EQUSYM                                 @Y30LPDS 01080002
         LCLA  &OP,&COUNT,&BYTE,&EQUCNT                        @Y30LPDS 01130002
         ACTR  500000                                          @Y30LPDS 01180002
.START   AIF   (N'&SYSLIST(&OP+1) LT 3).LOOP                   @Y30LPDS 01230002
         AIF   ('&SYSLIST(&OP+1,3)' EQ 'EQU').LOOP     TEST FOR EQU     01280002
  AIF   ('&SYSLIST(&OP+1,3)' EQ '' OR '&SYSLIST(&OP+1,4)' EQ '').ERR1   01330002
         AIF   ('&SYSLIST(&OP+1,3)' GT '&SYSLIST(&OP+1,4)').ERR3        01380002
&START1  SETA  &SYSLIST(&OP+1,3)        GET START COUNT OF 1   @Y30LPDS 01430002
&START2  SETA  &SYSLIST(&OP+1,4)        GET FIRST END COUNT    @Y30LPDS 01480002
         AGO   .SET2A                   BRANCH AROUND          @Y30LPDS 01530002
.ERR1    MNOTE '**FIRST SYMBOL CONCATENATION INCOMPLETE**'     @Y30LPDS 01580002
         MEXIT                                                 @Y30LPDS 01630002
.SET2A   AIF   ('&SYSLIST(&OP+1,5)' EQ ''AND '&SYSLIST(&OP+1,6)' EQ '' X01680002
               ).SET2                   TEST FOR NO SECOND     @Y30LPDS 01730002
  AIF   ('&SYSLIST(&OP+1,5)' EQ '' OR '&SYSLIST(&OP+1,6)' EQ '').ERR2   01780002
         AIF   ('&SYSLIST(&OP+1,5)' GT '&SYSLIST(&OP+1,6)').ERR3        01830002
&END1    SETA  &SYSLIST(&OP+1,5)        GET START COUNT OF 2   @Y30LPDS 01880002
&END2    SETA  &SYSLIST(&OP+1,6)        GET END COUNT OF 2     @Y30LPDS 01930002
         AGO   .LOOP                                           @Y30LPDS 01980002
.SET2    ANOP                                                  @Y30LPDS 02030002
&ONLY1   SETB  1                        INDICATE ONLY ONE CONCATENATION 02080002
         AGO   .LOOP                                           @Y30LPDS 02130002
.ERR2    MNOTE '**SECOND SYMBOL CONCATENATION INCOMPLETE**'    @Y30LPDS 02180002
         MEXIT                                                 @Y30LPDS 02230002
.ERR3    MNOTE '**START GREATER THAN END CONCATENATION**'      @Y30LPDS 02280002
         MEXIT                                                 @Y30LPDS 02330002
.LOOP    ANOP                                                  @Y30LPDS 02380002
&OP      SETA  &OP+1                                           @Y30LPDS 02430002
         AIF   (&OP GT N'&SYSLIST).DONE      TEST IF ALL DONE  @Y30LPDS 02480002
&ITEMNBR SETA  &ITEMNBR+1                                      @Y30LPDS 02530002
         AIF   ('&SYSLIST(&OP,2)' NE '').OK1                   @Y30LPDS 02580002
         MNOTE '**NULL BIT COUNT FIELD**'                      @Y30LPDS 02630002
         MEXIT                                                 @Y30LPDS 02680002
.OK1     ANOP                                                  @Y30LPDS 02730002
&SYMBOL  SETC  '&SYSLIST(&OP,1)'                               @Y30LPDS 02780002
         AIF   ('&SYMBOL' NE '').OK                            @Y30LPDS 02830002
*              *****     LOG ITEM SYMBOL NOT PROVIDED     *****         02880002
         AIF   ('&SYSLIST(&OP,3)' NE 'EQU').CNT                @Y30LPDS 02930002
         AGO   .START                   GET NEXT               @Y30LPDS 02980002
.OK      AIF   (N'&SYSLIST(&OP) LT 3).NO3    TEST FOR OLD FORMAT        03030002
         AIF   ('&SYSLIST(&OP,3)' EQ 'EQU').EQU   TEST FOR EQU @Y30LPDS 03080002
         AIF   (&ONLY1).OK2             TEST FOR ONLY ONE CONCAT        03130002
&SYMBOL  SETC  '&SYMBOL.&START1.&END1'       GET 1 AND 2 CONCAT         03180002
         AGO   .NO3                     BRANCH AROUND          @Y30LPDS 03230002
.OK2     ANOP                                                  @Y30LPDS 03280002
&SYMBOL  SETC  '&SYMBOL.&START1'        GET 1 CONCATENATED     @Y30LPDS 03330002
.NO3     ANOP                                                  @Y30LPDS 03380002
&SYMBOL  EQU   *+&BYTE                                         @Y30LPDS 03430002
&ITEM(&ITEMNBR) SETC '&SYMBOL'          GET LABEL IN GLOBAL    @Y30LPDS 03480002
&BITS(&ITEMNBR) SETA &SYSLIST(&OP,2)                           @Y30LPDS 03530002
&SHIFT(&ITEMNBR) SETA &COUNT-&BYTE*8                           @Y30LPDS 03580002
.CNT     ANOP                                                  @Y30LPDS 03630002
&CTIND   SETB  1                        SET COUNT INDICATOR    @Y30LPDS 03680002
&COUNT   SETA  &COUNT+&SYSLIST(&OP,2)                          @Y30LPDS 03730002
&BYTE    SETA  &COUNT/8                                        @Y30LPDS 03780002
         AIF   (N'&SYSLIST(&OP) LT 3).START  TEST FOR OLD FORMAT        03830002
         AIF   (&ONLY1).TSTST           TEST FOR ONLY ONE CONCAT        03880002
         AIF   (&END1 EQ &END2).TSTST   TEST FOR SECOND END    @Y30LPDS 03930002
&END1    SETA  &END1+1                  INCREMENT COUNT        @Y30LPDS 03980002
&OP      SETA  &OP-1                    DECREMENT INCREMENT    @Y30LPDS 04030002
         AGO   .LOOP                    GENERATE NEXT          @Y30LPDS 04080002
.TSTST   ANOP                                                  @Y30LPDS 04130002
         AIF   (&START1 EQ &START2).LPDONE   TEST FOR END      @Y30LPDS 04180002
         AIF   (&ONLY1).NSET1           TEST FOR ONLY ONE CONCAT        04230002
&END1    SETA  &SYSLIST(&OP,5)          RE-INIT SECOND START COUNT      04280002
.NSET1   ANOP                                                  @Y30LPDS 04330002
&OP      SETA  &OP-1                    DECREMENT INDEX        @Y30LPDS 04380002
&START1  SETA  &START1+1                INCREMENT FIRST COUNT  @Y30LPDS 04430002
         AGO   .LOOP                    GO DO NEXT             @Y30LPDS 04480002
.LPDONE  ANOP                                                  @Y30LPDS 04530002
&ONLY1   SETB  0                        CLEAR INDICATOR        @Y30LPDS 04580002
         AGO   .START                   GO TEST FOR MORE SUB-LISTS      04630002
.DONE    AIF   (&COUNT-&COUNT/8*8 NE 0).ERR  TEST FOR MULTIPLE OF EIGHT 04680002
         AIF   (&CTIND EQ 0).END        NO DS IF NO COUNT      @Y30LPDS 04730002
&COUNT   SETA  &COUNT/8                 GET NUMBER OF BYTES    @Y30LPDS 04780002
&NAME    DS    &COUNT.C                                        @Y30LPDS 04830002
.END     MEXIT                                                 @Y30LPDS 04880002
.ERR     MNOTE '**BIT COUNT FLDS DO NOT TOTAL MULTIPLE OF 8**' @Y30LPDS 04930002
         MEXIT                                                 @Y30LPDS 04980002
.EQU     AIF   ('&SYSLIST(&OP,4)' NE '').EQU1     TEST FOR NULL LABEL   05030002
.ERR4    MNOTE '**EQU OPERAND OMITTED OR NOT FOUND**'          @Y30LPDS 05080002
         MEXIT                                                 @Y30LPDS 05130002
.EQU1    AIF   (&SYSLIST(&OP,2) LT 16).EQU2  COUNT OVER FIFTEEN         05180002
*****               THE FOLLOWING STATEMENT                *****        05230002
*****     NUMBER OF BITS EXCEED 15 - DO NOT USE AS BIN     *****        05280002
.EQU2    ANOP                                                  @Y30LPDS 05330002
&EQUCNT  SETA  0                        CLEAR COUNTER          @Y30LPDS 05380002
&EQUSYM  SETC  '&SYSLIST(&OP,4)'        GET EQU OPERAND        @Y30LPDS 05430002
.EQULOP  ANOP                                                  @Y30LPDS 05480002
&EQUCNT  SETA  &EQUCNT+1                INCREMENT INDEX        @Y30LPDS 05530002
         AIF   ('&ITEM(&EQUCNT)' EQ '&EQUSYM').EQUOUT  LABEL FOUND?     05580002
         AIF   (&EQUCNT EQ &ITEMNBR).ERR4    ALL TESTED?       @Y30LPDS 05630002
         AGO   .EQULOP                  NO-GET NEXT            @Y30LPDS 05680002
.EQUOUT  ANOP                                                  @Y30LPDS 05730002
&ITEM(&ITEMNBR) SETC '&SYMBOL'          GET LABEL NAME         @Y30LPDS 05780002
&BITS(&ITEMNBR) SETA &SYSLIST(&OP,2)    GET NUMBER OF BITS     @Y30LPDS 05830002
&SHIFT(&ITEMNBR) SETA &SHIFT(&EQUCNT)   GET SHIFT COUNT        @Y30LPDS 05880002
&SYMBOL  EQU   &EQUSYM                  THIS SYMBOL EQUATED    @Y30LPDS 05930002
         AGO   .START                   RETURN FOR NEXT        @Y30LPDS 05980002
         MEND                                                  @Y30LPDS 06030002
         EJECT                                                          06630002
*  LINE MACRO     LINE MACRO     LINE MACRO     LINE MACRO            * 06760002
         SPACE 2                                                        06890002
         MACRO                                                          07020002
&NAME    LINE  &DATA,&LABEL,&SKIP=                                      07150002
.*                            THIS MACRO ESTABLISHES THE MARGINS OR     07280002
.*                                 COLUMN SETTINGS FOR EACH LINE. IT    07410002
.*                                 GENERATES NECESSARY CARRIAGE CONTROL 07540002
.*                                 ENTRIES. LASTLY IT DETERMINES THE    07670002
.*                                 NUMBER OF ENTRIES ASSOCIATED WITH    07800002
.*                                 THE PREVIOUS LINE AND STORES THAT #  07930002
.*                                 INTO THE APPROPRIATE BYTE.           08060002
.*                            &DATA(1) - CHARACTER POSITION TO BEGIN    08190002
.*                                 DATA.                                08320002
.*                            &DATA(2) - # OF SPACES BETWEEN SUCCESSIVE 08450002
.*                                 DATA COLUMN STARTING CHARACTERS.     08580002
.*                            &LABEL(1) - CHAR. POS. TO BEGIN LABELS.   08710002
.*                            &LABEL(2) - # SPACES BETWEEN LINE'S LABEL 08840002
.*                                 STARTING CHARACTERS.                 08970002
.*                            &SKIP= - # OF LINES TO ADVANCE CARRIAGE   09100002
.*                                 TO BEGIN NEXT PRINTED LINE.          09230002
.*                            NEW ENTRIES ARE GENERATED ONLY WHEN       09360002
.*                                 NECESSARY. OMISSION OF ITEMS MEANS   09490002
.*                                 THEY HAVE NOT CHANGED SINCE PREVIOUS 09620002
.*                                 SETTINGS. A LINE MACRO IS REQUIRED   09750002
.*                                 FOR EACH PRINTED LINE. IF NO SETTING 09880002
.*                                 CHANGES ARE REQUIRED ALL OPERANDS    10010002
.*                                 ARE OMITTED IN WHICH CASE ONLY THE   10140002
.*                                 # OF ENTRIES FOR THE PREVIOUS LINE   10270002
.*                                 IS COMPUTED. THIS MACRO MUST BE THE  10400002
.*                                 FIRST MACRO INSTRUCTION ISSUED FOR   10530002
.*                                 THE SUBJECT LINE                     10660002
         GBLA  &DB,&DT,&LB,&LT,&NRENTS                                  10790002
         GBLA  &LASTCC,&INITIAL                                         10920002
         GBLC  &NRENTSX                                                 11050002
         GBLC  &CARRCON                                                 11180002
         GBLB  &TEST                                                    11310002
         LCLA  &S                                                       11440002
&NAME    DS    0C                                                       11570002
         AIF   (&INITIAL EQ 0).FIRSTLN                                  11700002
         LINEND                                                         11830002
         AGO   .NTFIRST                                                 11960002
.FIRSTLN ANOP                                                           12090002
&NRENTSX SETC  'N&SYSNDX'                                               12220002
&INITIAL SETA  1                                                        12350002
N&SYSNDX EQU   *                                                        12480002
.NTFIRST ANOP                                                           12610002
         DC    AL1(0)                                                   12740002
         AIF   ('&DATA(1)' EQ '').CKDTABS                               12870002
         AIF   (&DATA(1) EQ &DB).CKDTABS                                13000002
&DB      SETA  &DATA(1)                                                 13130002
         AGO   .AA                                                      13260002
.CKDTABS AIF   ('&DATA(2)' EQ '').NCDATA                                13390002
         AIF   (&DATA(2) EQ &DT).NCDATA                                 13520002
         AGO   .CC                                                      13650002
.AA      AIF   ('&DATA(2)' EQ '').BB                                    13780002
         AIF   (&DATA(2) EQ &DT).BB                                     13910002
.CC      ANOP                                                           14040002
&DT      SETA  &DATA(2)                                                 14170002
.BB      DC    XL2'FFFE'                                                14300002
         DC    FL1'&DB'                                                 14430002
         DC    FL1'&DT'                                                 14560002
&NRENTS  SETA  &NRENTS+1                                                14690002
.NCDATA  ANOP                                                           14820002
         AIF   ('&LABEL(1)' EQ '').CKLTABS                              14950002
         AIF   (&LABEL(1) EQ &LB).CKLTABS                               15080002
&LB      SETA  &LABEL(1)                                                15210002
         AGO   .AAA                                                     15340002
.CKLTABS AIF   ('&LABEL(2)' EQ '').NCLABEL                              15470002
         AIF   (&LABEL(2) EQ &LT).NCLABEL                               15600002
         AGO   .CCC                                                     15730002
.AAA     AIF   ('&LABEL(2)' EQ '').BBB                                  15860002
         AIF   (&LABEL(2) EQ &LT).BBB                                   15990002
.CCC     ANOP                                                           16120002
&LT      SETA  &LABEL(2)                                                16250002
.BBB     DC    XL2'FFFF'                                                16380002
         DC    FL1'&LB'                                                 16510002
         DC    FL1'&LT'                                                 16640002
&NRENTS  SETA  &NRENTS+1                                                16770002
.NCLABEL ANOP                                                           16900002
         AIF   ('&SKIP' NE '').CONT                                     17030002
         AIF   (&TEST EQ 0).NOCHANG                                     17160002
&S       SETA  &LASTCC                                                  17290002
         AGO   .DEFAULT                                                 17420002
.CONT    ANOP                                                           17550002
         AIF   (&TEST EQ 0).AB                                          17680002
&S       SETA  &SKIP                                                    17810002
.DEFAULT ANOP                                                           17940002
         ORG   &CARRCON+3                                               18070002
         DC    AL.3(0),AL.2(&S),AL.3(1)                                 18200002
         ORG                                                            18330002
&LASTCC  SETA  &S                                                       18460002
&TEST    SETB  0                                                        18590002
         AGO   .DD                                                      18720002
.AB      AIF   (&SKIP EQ &LASTCC).NOCHANG                               18850002
A&SYSNDX DC    XL2'FFFB'                                                18980002
         DC    AL.3(0),AL.2(&SKIP),AL.3(1)                              19110002
         DC    FL1'9'                                                   19240002
&LASTCC  SETA  &SKIP                                                    19370002
&TEST    SETB  1                                                        19500002
&CARRCON SETC  'A&SYSNDX'                                               19630002
&NRENTS  SETA  &NRENTS+1                                                19760002
.DD      ANOP                                                           19890002
.NOCHANG ANOP                                                           20020002
         MEND                                                           20150002
         EJECT                                                          20280002
*  BIN MACRO     BIN MACRO     BIN MACRO     BIN MACRO     BIN MACRO  * 20410002
         SPACE 2                                                        20540002
         MACRO                                                          20670002
         BIN   &LOGITEM,&SKIP$OR                                        20800002
.*                                 &LOGITEM - NAME OF ITEM IN LOG       20930002
.*                                      RECORD DSECT                    21060002
.*                                 &SKIP$OR - NBR OF SPACES TO SKIP ON  21190002
.*                                 MULTIPLE PRINT OR NBR OF SPACES      21320002
.*                                      TO BACK UP FROM COLUMN FOR      21450002
.*                                      START OF PRINTING. THE LETTER   21580002
.*                                      B PRECEEDS THE NUMBER (B5) IF   21710002
.*                                      THE LATTER IS DESIRED. OMISSION 21840002
.*                                      OF THIS OPERAND FORCES OPTION 2 21970002
.*                                      WITH BACKUP SPACING EQUAL TO    22100002
.*                                 THE NUMBER OF BITS IN THE ITEM       22230002
.*                                 DEFINITION (VIA MACRO 'DSGEN').      22360002
.*                            A LIMIT OF 15 BITS IS IMPOSED FOR THE     22490002
.*                                 TOTAL NUMBER OF BITS TO PRINT.       22620002
         GBLC &ITEM(1000)                                               22750002
         GBLA &ITEMNBR,&BITS(1000),&SHIFT(1000),&NRENTS                 22880002
         GBLC  &DSECT                                                   23010002
         LCLB  &B                                                       23140002
         LCLA  &IBITS,&NDX,&ISHIFT,&K                                   23270002
         LCLA  &TEMP,&T                                                 23400002
         LCLC  &S                                                       23530002
.LOOP    ANOP                                                           23660002
&NDX     SETA  &NDX+1                                                   23790002
         AIF   ('&ITEM(&NDX)' EQ '&LOGITEM').FOUND                      23920002
         AIF   (&NDX LT &ITEMNBR).LOOP                                  24050002
         MNOTE *,'YOU BLEW IT'                                          24180002
         ROUTINE DUM,SKIPPER                                            24310002
         MEXIT                                                          24440002
.FOUND   ANOP                                                           24570002
&ISHIFT  SETA  &SHIFT(&NDX)                                             24700002
&IBITS   SETA  &BITS(&NDX)                                              24830002
&T       SETA  &IBITS-1                                                 24960002
&B       SETB  0                                                        25090002
         AIF   ('&SKIP$OR' EQ '').BACKUP                                25220002
&K       SETA  K'&SKIP$OR                                               25350002
&B       SETB  ('&SKIP$OR'(1,1) EQ 'B')                                 25480002
&S       SETC  '&SKIP$OR'(&B+1,&K-&B)                                   25610002
&T       SETA  &S                                                       25740002
.BACKUP  ANOP                                                           25870002
&NRENTS  SETA  &NRENTS+1                                                26000002
&TEMP    SETA  &ISHIFT                                                  26130002
A&SYSNDX DC    AL.12(&LOGITEM-&DSECT),XL.4'&TEMP'                       26260002
         AIF (&IBITS EQ 1 AND &B EQ 0).OUT                              26390002
         ORG   A&SYSNDX                                                 26520002
&B       SETB  1                                                        26650002
         DC    AL.12(&LOGITEM-&DSECT),XL.4'C'                           26780002
         DC    BL.1'&B',AL.7(&T),AL.4(&IBITS),FL.4'&ISHIFT'             26910002
.OUT     ANOP                                                           27040002
         MEND                                                           27170002
         EJECT                                                          27300002
*  HEX MACRO     HEX MACRO     HEX MACRO    HEXN MACRO     HEX MACRO  * 27430002
         SPACE 2                                                        27560002
         MACRO                                                          27690002
         HEX   &LOGITEM,&SKIP$OR,&BYTES                                 27820002
.*                            THIS MACRO FACILITATES GENERATION OF THE  27950002
.*                                 TABLE ENTRIES SPECIFYING HEX TYPE    28080002
.*                                 CONVERSIONS.                         28210002
.*                            &LOGITEM - NAME OF DATA ITEM TO BE        28340002
.*                                 CONVERTED                            28470002
.*                            &SKIP$OR - NUMBER OF SPACES TO SKIP ON    28600002
.*                                 MULTIPLE PRINT OR NBR OF SPACES TO   28730002
.*                                 BACK UP FROM COLUMN FOR START OF     28860002
.*                                 PRINTING. THE LETTER B PRECEEDS THE  28990002
.*                                 NUMBER (B8) IF THE LATTER OPTION IS  29120002
.*                                 DESIRED. OMISSION OF THIS OPERAND    29250002
.*                                 FORCES OPTION 2 WITH BACKUP SPACING  29380002
.*                                 EQUAL TO THE NUMBER OF BYTES SPECI-  29510002
.*                                 FIED BY THE NEXT OPERAND (TWICE THIS 29640002
.*                                 NUMBER IF SUFFIX IS EXPLICITLY OR    29770002
.*                                 IMPLICITLY B).                       29900002
.*                            &BYTES - NUMBER OF TOTAL INPUT BYTES TO   30030002
.*                                 PROCESS. THIS NUMBER IS SUFFIXED     30160002
.*                                 WITH AN L,R, OR B TO STIPULATE       30290002
.*                                 PRINTING OF THE LEFT HALF, RIGHT     30420002
.*                                 HALF, OR BOTH HALVES OF THE BYTE     30550002
.*                                 RESPECTIVELY. OMISSION OF THIS       30680002
.*                                 OPERAND DEFAULTS TO B WITH THE NUM-  30810002
.*                                 BER OF BYTES EQUAL TO THE ITEM LNGTH 30940002
.*                            A NEW ENTRY IS GENERATED ONLY WHEN NECES- 31070002
.*                                 SARY. THIS MACRO MUST BE THE FIRST   31200002
.*                                 MACRO INSTRUCTION ISSUED FOR THE     31330002
.*                                 SUBJECT LINE(S).                     31460002
         GBLC &ITEM(1000),&DSECT                                        31590002
         GBLA &ITEMNBR,&BITS(1000),&SHIFT(1000),&NRENTS                 31720002
         LCLB  &B                                                       31850002
         LCLA  &IBITS,&NDX,&ISHIFT,&K,&T,&CODE,&BYTESP                  31980002
         LCLC  &S,&LETTER                                               32110002
.LOOP    ANOP                                                           32240002
&NDX     SETA  &NDX+1                                                   32370002
         AIF   ('&ITEM(&NDX)' EQ '&LOGITEM').FOUND                      32500002
         AIF   (&NDX LT &ITEMNBR).LOOP                                  32630002
         MNOTE *,'LOG ITEM NOT DEFINED'                                 32760002
         MEXIT                                                          32890002
.FOUND   ANOP                                                           33020002
&ISHIFT  SETA  &SHIFT(&NDX)                                             33150002
&IBITS   SETA  &BITS(&NDX)                                              33280002
&CODE    SETA  1                                                        33410002
&K       SETA  K'&BYTES                                                 33540002
         AIF   (&IBITS-(&IBITS/4)*4 EQ 0).OK                            33670002
         MNOTE *,'BIT LENGTH SPECIFICATION INCONSISTENT WITH CONTROL'   33800002
         MEXIT                                                          33930002
.OK      AIF   ('&BYTES' EQ '').USEDEFN                                 34060002
&LETTER  SETC  '&BYTES'(&K,1)                                           34190002
&S       SETC  '&BYTES'(1,&K-1)                                         34320002
&BYTESP  SETA  &S                                                       34450002
         AIF   ('&LETTER' EQ 'B').BOTH                                  34580002
         AIF   (&ISHIFT EQ 0 OR &ISHIFT EQ 4).OK2                       34710002
.ERR     MNOTE *,'DATA NOT ALLIGNED ON HEX OR BYTE BOUNDARY'            34840002
         MEXIT                                                          34970002
.USEDEFN ANOP                                                           35100002
&BYTESP  SETA  &IBITS/8                                                 35230002
.BOTH    AIF   (&ISHIFT NE 0).ERR                                       35360002
&CODE    SETA  3                                                        35490002
&T       SETA  &BYTESP*2-1                                              35620002
&S       SETC  '&T'                                                     35750002
.OK2     AIF   (&ISHIFT EQ 0).L                                         35880002
&CODE    SETA  2                                                        36010002
.L       ANOP                                                           36140002
&B       SETB  1                                                        36270002
         AIF   ('&SKIP$OR' EQ '').BACKUP                                36400002
&K       SETA  K'&SKIP$OR                                               36530002
&B       SETB  ('&SKIP$OR'(1,1) EQ 'B')                                 36660002
&S       SETC  '&SKIP$OR'(&B+1,&K-&B)                                   36790002
.BACKUP  ANOP                                                           36920002
&NRENTS  SETA  &NRENTS+1                                                37050002
         DC    AL.12(&LOGITEM-&DSECT),XL.4'A'                           37180002
         DC    BL.1'&B',FL.7'&S',FL.4'&BYTESP',FL.4'&CODE'              37310002
.OUT     ANOP                                                           37440002
         MEND                                                           37570002
         SPACE 2                                                        37700002
*  ROUTINE MACRO     ROUTINE MACRO     ROUTINE MACRO     ROUTINE MACRO* 37830002
         SPACE 2                                                        37960002
         MACRO                                                          38090002
&NAME    ROUTINE &LOGITEM,&RNAME                                        38220002
         GBLC  &DSECT,&CSECT                                            38350002
         GBLC  &ITEM(1000)                                              38480002
         GBLA  &SHIFT(1000),&ITEMNBR                                    38610002
         GBLA  &NRENTS                                                  38740002
         LCLA  &ISHIFT,&NDX                                             38870002
.LOOP    ANOP                                                           39000002
&NDX     SETA  &NDX+1                                                   39130002
         AIF   ('&ITEM(&NDX)' EQ '&LOGITEM').FOUND                      39260002
         AIF   (&NDX LT &ITEMNBR).LOOP                                  39390002
         MNOTE *,'LOG ITEM NOT DEFINED'                                 39520002
         MEXIT                                                          39650002
.FOUND   ANOP                                                           39780002
&ISHIFT  SETA  &SHIFT(&NDX)                                             39910002
&NAME    DC    AL.12(&LOGITEM-&DSECT),XL.4'D'                           40040002
         DC    AL.4(&ISHIFT),AL.12(&RNAME-&CSECT)                       40170002
&NRENTS  SETA  &NRENTS+1                                                40300002
         MEND                                                           40430002
         EJECT                                                          40560002
*    LABEL  MACRO       L A B E L   M A C R O      LABEL  MACRO         40690002
         SPACE 2                                                        40790002
         MACRO                                                 @Y30LPDS 40890002
&NAME    LABEL &LABEL1,&LABEL2,&LABEL3,&LABEL4,&LABEL5,&LABEL6,        C40990002
               &LABEL7,&LABEL8                                 @Y30LPDS 41090002
.*                                 THIS MACRO ALLOWS LABELS TO @Y30LPDS 41190002
.*                                 BE SPECIFIED FOR A GIVEN LINE. THE   41290002
.*                                 LABELS SHOULD BE ENCLOSED IN QUOTA-  41390002
.*                                 TION MARKS. THE COLUMN AND LINE END  41490002
.*                                 CONTROLS WILL BE INSERTED BY THE     41590002
.*                                 MACRO. OMITTED OPERANDS MEAN NO      41690002
.*                                 LABEL REQUIRED FOR RESPECTIVE        41790002
.*                                 COLUMN.                     @Y30LPDS 41890002
         GBLC &LABELS(1000)                                    @Y30LPDS 41990002
         GBLC  &LBL(100)                                       @Y30LPDS 42090002
         GBLA  &LBLCTR(100)                                    @Y30LPDS 42190002
         GBLA  &LABELNR                                        @Y30LPDS 42290002
         GBLA  &NRENTS,&LPTR,&INITIAL                          @Y30LPDS 42390002
         GBLB  &DIAGTST,&DIAGSET,&DIAGLIN                      @Y30LPDS 42490002
         LCLC  &MARGIN,&TACK                                   @Y30LPDS 42590002
         LCLC  &TEXT                                           @Y30LPDS 42690002
         LCLA  &OP,&K,&START,&NRCHAR,&REMAIN                   @Y30LPDS 42790002
         AIF   (&INITIAL EQ 0).DIAGCLR                         @Y30LPDS 42890002
         AIF   (&DIAGTST EQ 0).DIAGCLR                         @Y30LPDS 42990002
         AIF   (&DIAGLIN EQ 1).DIAGCLR                         @Y30LPDS 43090002
         MNOTE '**NO LINE ASSOCIATED WITH PREVIOUS LABEL**'    @Y30LPDS 43190002
***** THE FOLLOWING GENERATED FOR TEST PURPOSES *****          @Y30LPDS 43290002
*        LINE                                                  @Y30LPDS 43390002
         LINE                                                  @Y30LPDS 43490002
.DIAGCLR ANOP                                                  @Y30LPDS 43590002
&DIAGSET SETB  0                                               @Y30LPDS 43690002
&DIAGLIN SETB  0                                               @Y30LPDS 43790002
&MARGIN  SETC  '*'                                             @Y30LPDS 43890002
         AIF   ('&NAME' EQ '').LOOPOUT                         @Y30LPDS 43990002
&LPTR    SETA  &LPTR+1                                         @Y30LPDS 44090002
&LBL(&LPTR) SETC '&NAME'                                       @Y30LPDS 44190002
&LBLCTR(&LPTR) SETA &LABELNR+1                                 @Y30LPDS 44290002
.LOOPOUT ANOP                                                  @Y30LPDS 44390002
&OP      SETA  &OP+1                                           @Y30LPDS 44490002
&K       SETA  K'&SYSLIST(&OP)                                 @Y30LPDS 44590002
         AIF (&K GE 2).NORM                                    @Y30LPDS 44690002
&K       SETA  2                                               @Y30LPDS 44790002
.NORM    ANOP                                                  @Y30LPDS 44890002
&START   SETA  2                                               @Y30LPDS 44990002
         AIF (&OP LT N'&SYSLIST).NOTLAST                       @Y30LPDS 45090002
&MARGIN  SETC  '$'                                             @Y30LPDS 45190002
.NOTLAST ANOP                                                  @Y30LPDS 45290002
&NRCHAR  SETA  8                                               @Y30LPDS 45390002
&TACK    SETC  ''                                              @Y30LPDS 45490002
.LOOPIN  ANOP                                                  @Y30LPDS 45590002
&REMAIN  SETA  &K-&START                                       @Y30LPDS 45690002
         AIF (&REMAIN GE 8).MORE                               @Y30LPDS 45790002
&TACK    SETC  '&MARGIN'                                       @Y30LPDS 45890002
&NRCHAR  SETA  &REMAIN                                         @Y30LPDS 45990002
.MORE    ANOP                                                  @Y30LPDS 46090002
&TEXT    SETC  ''                                              @Y30LPDS 46190002
         AIF (&REMAIN EQ 0).ENDTEXT                            @Y30LPDS 46290002
&TEXT    SETC  '&SYSLIST(&OP)'(&START,&NRCHAR)                 @Y30LPDS 46390002
.ENDTEXT ANOP                                                  @Y30LPDS 46490002
&LABELNR SETA  &LABELNR+1                                      @Y30LPDS 46590002
&LABELS(&LABELNR) SETC '&TEXT'.'&TACK'                         @Y30LPDS 46690002
&START   SETA  &START+8                                        @Y30LPDS 46790002
         AIF ('&TACK' EQ '').LOOPIN                            @Y30LPDS 46890002
         AIF ('&TACK' EQ '*').LOOPOUT                          @Y30LPDS 46990002
         MEND                                                  @Y30LPDS 47090002
         EJECT                                                 @Y30LPDS 47190002
         SPACE 4                                               @Y30LPDS 47320002
*    LSTART  MACRO      L S T A R T  M A C R O        LSTART  MACRO     47360002
         SPACE 1                                               @Y30LPDS 47400002
         MACRO                                                 @Y30LPDS 47440002
         LSTART ,                                              @Y30LPDS 47480002
.*                            THIS MACRO IS ISSUED WHEN THE LABEL AREA  47520002
.*                                 OF THE TABLE IS TO BEGIN.   @Y30LPDS 47560002
         GBLA  &LABELNR                                        @Y30LPDS 47600002
         GBLC  &LBL(100)                                       @Y30LPDS 47640002
         GBLC &LABELS(1000)                                    @Y30LPDS 47680002
         GBLA  &LBLCTR(100)                                    @Y30LPDS 47720002
         GBLB  &DIAGTST,&DIAGSET,&DIAGLIN                      @Y30LPDS 47760002
         LCLA  &NDX,&CTR                                       @Y30LPDS 47800002
         ACTR  100000                                          @Y30LPDS 47840002
         AIF   (&DIAGTST EQ 0).NODIAG                          @Y30LPDS 47880002
         AIF   (&DIAGSET EQ 0).NODIAG                          @Y30LPDS 47920002
         MNOTE '**NO LABEL ASSOCIATED WITH LAST SET**'         @Y30LPDS 47960002
***** THE FOLLOWING GENERATED FOR TEST PURPOSES *****          @Y30LPDS 48000002
*        LABEL '%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%'       48040002
               LABEL '%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%' 48080002
.NODIAG  ANOP                                                  @Y30LPDS 48120002
         LINEND                                                @Y30LPDS 48160002
&CTR     SETA  1                                               @Y30LPDS 48200002
.LOOP    ANOP                                                  @Y30LPDS 48240002
&NDX     SETA  &NDX+1                                          @Y30LPDS 48280002
         AIF   (&LBLCTR(&CTR) NE &NDX).NOLBL                   @Y30LPDS 48320002
&LBL(&CTR) DC  C'&LABELS(&NDX)'                                @Y30LPDS 48360002
&CTR     SETA  &CTR+1                                          @Y30LPDS 48400002
         AGO   .LOOPCTL                                        @Y30LPDS 48440002
.NOLBL   ANOP                                                  @Y30LPDS 48480002
         DC    C'&LABELS(&NDX)'                                @Y30LPDS 48520002
.LOOPCTL AIF   (&NDX LT &LABELNR).LOOP                         @Y30LPDS 48560002
         MEND                                                  @Y30LPDS 48600002
         SPACE 4                                               @Y30LPDS 48640002
         MACRO                                                          49010002
         LINEND                                                         49140002
.*                            THIS MACRO IS USED ONLY BY THE LINE       49270002
.*                                 MACRO TO SET THE NUMBER OF ENTRIES   49400002
.*                                 ASSOCIATED WITH EACH LINE.           49530002
         GBLA  &NRENTS                                                  49660002
         GBLC &NRENTSX                                                  49790002
         ORG   &NRENTSX                                                 49920002
         DC    FL1'&NRENTS'                                             50050002
         ORG                                                            50180002
&NRENTS  SETA  0                                                        50310002
B&SYSNDX EQU   *                                                        50440002
&NRENTSX SETC  'B&SYSNDX'                                               50570002
         MEND                                                           50700002
         TITLE 'I F C E M E R 0  EDIT TABLE FOR 3330 FORMAT 0 SENSE'    50830002
         GBLC  &DSECT,&CSECT                                            50960002
*                                                                       51090002
*        SENSE  FORMAT 0                                                51220002
*                                                                       51350002
IFCEMER0 CSECT                                                          51480002
&CSECT   SETC  'IFCEMER0'                                               51610002
&DSECT   SETC  'MER0'                                                   51740002
*                                                                       51870002
MER0     DSECT                                                          52000002
         DSGEN (CLASRC,8),(SYSREL,8),(SWITCHES,16)                      52130002
         DSGEN (SPARE1,32)                                              52260002
         DSGEN (DAY,32)                                                 52390002
         DSGEN (HOUR,32)                                                52520002
         DSGEN (SPARE2,8),(CPUSERL,24)                                  52650002
         DSGEN (CPUID,16),(SPARE3,16)                                   52780002
         DSGEN (JOBID1,32)                                              52910002
         DSGEN (JOBID2,32)                                              53040002
         DSGEN (FCCWCC,8),(FCCWDA,24)                                   53170002
         DSGEN (FCCWFL,8),(FCCW,8),(FCCWCT,16)                          53300002
         DSGEN (CSWUS1,8),(CSWUS2,24)                                   53430002
         DSGEN (CSWUS3,8),(CSWUS4,8),(CSWUS5,16)                        53560002
         DSGEN (DEVDPD,8),(SECCUA,24)                            S21021 53690002
         DSGEN (DEVTYP1,16),(DEVTYP2,16)                                53820002
         DSGEN (SPARE4,8),(CUA,24)                                      53950002
         DSGEN (IORET,16),(SBCNT,16)                           @Y30LPDS 54080002
         DSGEN (VOLLAB1,8),(VOLLAB2,16),(VOLLAB3,8)                     54210002
         DSGEN (VOLLAB4,8),(VOLLAB5,8),(SPARE5,16)                      54340002
         DSGEN (LSKAD1,8),(LSKAD2,16),(LSKAD3,8)                        54470002
         DSGEN (LSKAD4,8),(LSKAD5,16),(LSKAD6,8)                        54600002
         DSGEN (AHA1,32)                                                54730002
         DSGEN (AHA2,16),(SPARE6,16)                                    54860002
         DSGEN (SNB00,1),(SNB01,1),(SNB02,1),(SNB03,1),(SNB04,1),      C54990002
               (SNB05,1),(SNB06,1),(SNB07,1),(SNB10,1),(SNB11,1),      C55120002
               (SNB12,1),(SNB13,1),(SNB14,1),(SNB15,1),(SNB16,1),      C55250002
               (SNB17,1),(SNB20,1),(SNB21,1),(SNB22,1),(SNB23,1),      C55380002
               (SNB24,1),(SNB25,1),(SNB26,1),(SNB27,1),(SNB30,1),      C55510002
               (SNB31,1),(SNB32,1),(SNB33,1),(SNB34,1),(SNB35,1),      C55640002
               (SNB36,1),(SNB37,1)                                      55770002
         DSGEN (SNB40,1),(SNB41,1),(SNB42,1),(SNB43,1),(SNB44,1),      C55900002
               (SNB45,1),(SNB46,1),(SNB47,1),(SNB50,1),(SNB51,1),      C56030002
               (SNB52,1),(SNB53,1),(SNB54,1),(SNB55,1),(SNB56,1),      C56160002
               (SNB57,1),(SNB60,1),(SNB61,1),(SNB62,1),(SNB63,1),      C56290002
               (SNB64,1),(SNB65,1),(SNB66,1),(SNB67,1),(SNB70,1),      C56420002
               (SNB71,1),(SNB72,1),(SNB73,1),(SNB74,1),(SNB75,1),      C56550002
               (SNB76,1),(SNB77,1)                                      56680002
         DSGEN (SNB80,1),(SNB81,1),(SNB82,1),(SNB83,1),(SNB84,1),      C56810002
               (SNB85,1),(SNB86,1),(SNB87,1),(SNB90,1),(SNB91,1),      C56940002
               (SNB92,1),(SNB93,1),(SNB94,1),(SNB95,1),(SNB96,1),      C57070002
               (SNB97,1),(SNB100,1),(SNB101,1),(SNB102,1),(SNB103,1),  C57200002
               (SNB104,1),(SNB105,1),(SNB106,1),(SNB107,1),(SNB110,1), C57330002
               (SNB111,1),(SNB112,1),(SNB113,1),(SNB114,1),(SNB115,1), C57460002
               (SNB116,1),(SNB117,1)                                    57590002
         DSGEN (SNB120,1),(SNB121,1),(SNB122,1),(SNB123,1),(SNB124,1), C57720002
               (SNB125,1),(SNB126,1),(SNB127,1),(SNB130,1),(SNB131,1), C57850002
               (SNB132,1),(SNB133,1),(SNB134,1),(SNB135,1),(SNB136,1), C57980002
               (SNB137,1),(SNB140,1),(SNB141,1),(SNB142,1),(SNB143,1), C58110002
               (SNB144,1),(SNB145,1),(SNB146,1),(SNB147,1),(SNB150,1), C58240002
               (SNB151,1),(SNB152,1),(SNB153,1),(SNB154,1),(SNB155,1), C58370002
               (SNB156,1),(SNB157,1)                                    58500002
         DSGEN (SNB160,1),(SNB161,1),(SNB162,1),(SNB163,1),(SNB164,1), C58630002
               (SNB165,1),(SNB166,1),(SNB167,1),(SNB170,1),(SNB171,1), C58760002
               (SNB172,1),(SNB173,1),(SNB174,1),(SNB175,1),(SNB176,1), C58890002
               (SNB177,1),(SNB180,1),(SNB181,1),(SNB182,1),(SNB183,1), C59020002
               (SNB184,1),(SNB185,1),(SNB186,1),(SNB187,1),(SNB190,1), C59150002
               (SNB191,1),(SNB192,1),(SNB193,1),(SNB194,1),(SNB195,1), C59280002
               (SNB196,1),(SNB197,1)                                    59410002
         DSGEN (SNB200,1),(SNB201,1),(SNB202,1),(SNB203,1),(SNB204,1), C59540002
               (SNB205,1),(SNB206,1),(SNB207,1),(SNB210,1),(SNB211,1), C59670002
               (SNB212,1),(SNB213,1),(SNB214,1),(SNB215,1),(SNB216,1), C59800002
               (SNB217,1),(SNB220,1),(SNB221,1),(SNB222,1),(SNB223,1), C59930002
               (SNB224,1),(SNB225,1),(SNB226,1),(SNB227,1),(SNB230,1), C60060002
               (SNB231,1),(SNB232,1),(SNB233,1),(SNB234,1),(SNB235,1), C60190002
               (SNB236,1),(SNB237,1)                                    60320002
         EJECT                                                 @Y30LPDS 60330002
*                                                              @Y30LPDS 60340002
*      THE FOLLOWING DEFINES EXTRA SENSE BYTES INCLUDED IN THE RECORD   60350002
*        IF THIS IS A 'VIRTUAL' DEVICE(EG. PART OF AN SS1(3850))        60360002
*                                                              @Y30LPDS 60370002
         SPACE 1                                               @Y30LPDS 60380002
         DSGEN (SNB,1,24,27,0,7)                               @Y30LPDS 60390002
           EJECT                                               @Y30LPDS 60400002
*********************************************************************** 60450002
*                                                                     * 60580002
*              THIS ENTIRE MODULE IS IN SUPPORT OF  S20201            * 60710002
*                                                                     * 60840002
*********************************************************************** 60970002
IFCEMER0 CSECT                                                          61100002
         USING *,R9                                                     61230002
         USING MER0,R2                                         @Y30LPDS 61290002
R0       EQU   0                                                        61360002
R1       EQU   1                                                        61490002
R2       EQU   2                                                        61620002
R3       EQU   3                                                        61750002
R4       EQU   4                                                        61880002
R5       EQU   5                                                        62010002
R6       EQU   6                                                        62140002
R7       EQU   7                                                        62270002
R8       EQU   8                                                        62400002
R9       EQU   9                                                        62530002
R10      EQU   10                                                       62660002
R11      EQU   11                                                       62790002
R12      EQU   12                                                       62920002
R13      EQU   13                                                       63050002
R14      EQU   14                                                       63180002
R15      EQU   15                                                       63310002
*                                                                       63440002
L0       EQU   0                                                        63570002
L1       EQU   1                                                        63700002
L2       EQU   2                                                        63830002
L3       EQU   3                                                        63960002
L4       EQU   4                                                        64090002
L5       EQU   5                                                        64220002
L6       EQU   6                                                        64350002
L7       EQU   7                                                        64480002
L8       EQU   8                                                        64610002
L9       EQU   9                                                        64740002
L10      EQU   10                                                       64870002
L11      EQU   11                                                       65000002
L12      EQU   12                                                       65130002
L13      EQU   13                                                       65260002
L14      EQU   14                                                       65390002
L15      EQU   15                                                       65520002
L16      EQU   16                                                       65650002
L17      EQU   17                                                       65780002
L18      EQU   18                                                       65910002
L19      EQU   19                                                       66040002
L20      EQU   20                                                       66170002
L23      EQU   23                                                       66300002
L24      EQU   24                                                       66430002
L26      EQU   26                                                       66560002
H0F      EQU   X'0F'                                                    66690002
HE0      EQU   X'E0'                                                    66820002
H80      EQU   X'80'                                                    66950002
H40      EQU   X'40'                                                    67080002
H20      EQU   X'20'                                                    67210002
H10      EQU   X'10'                                                    67340002
H21      EQU   X'21'                                                    67470002
H23      EQU   X'23'                                                    67600002
H25      EQU   X'25'                                                    67730002
H29      EQU   X'29'                                                    67860002
CLRSGN   EQU   X'F0'                                                    67990002
SS1CNT    EQU  28                      # OF SNS BYTES RECORDED @Y30LPDS 68010002
*                                      FOR AN SS1-VIRTUAL 3330 @Y30LPDS 68030002
H30      EQU   X'30'                                           @Y30LPDS 68050002
HFF      EQU   X'FF'                                           @Y30LPDS 68070002
         DC    A(ENTRIES)                                               68120002
         DC    CL8'IFCEMER0'                                            68250002
XR9PTR   DC    F'0'                                                     68380002
XLABELP  DC    F'0'                                                     68510002
*        SET HEX -PRINTS 1 CHAR HEX                                     68640002
*                                                                       68770002
SETHEX   STM   R5,R8,XSAVE             SAVE REGS                        68900002
         LA    R8,CHARS                CHARACTER TABLE POINTER          69030002
         IC    R7,L0(R4)               PICK UP CHARACTER                69160002
         SLL   R7,L24                  MOVE TO HI R7                    69290002
         SR    R6,R6                   CLEAR REGS                       69420002
         SLDL  R6,L4                   MOVE FOUR BITS                   69550002
         AR    R6,R8                   ADD OFFSET AND POINTER           69680002
         MVC   L0(L1,R3),L0(R6)        MOVE CHARACTER TO LINE           69810002
         SR    R6,R6                   CLEAR AGAIN                      69940002
         SLDL  R6,L4                   MOVE LAST 4 BITS                 70070002
         AR    R6,R8                   COMPUTE OFFSET                   70200002
         MVC   L1(L1,R3),L0(R6)        MOVE LAST CHARACTER              70330002
         B     RETURN                                                   70460002
*                                                                       70590002
*        TEST TO SEE IF RECORD IS IN AR-149 FORMAT                      70720002
*                                                                       70850002
SETCONV  TM    L0(R4),HEX02            HAS RECORD BEEN CONVERTED KEY32  70980002
         BCR   ON,R14                  YES RETURN                       71110002
         SR    R15,R15                 NO CLEAR R15 FOR NO PRINT OF     71240002
         BR    R14                     LINE                             71370002
ON       EQU   1                                                        71500002
HEX02    EQU   X'02'                                                    71630002
*                                                                       71760002
*        NO OP RETURN                                                   71890002
*                                                                       72020002
SKIPPER  BR    R14                                                      72150002
*                                                                       72280002
*        TO ADD SPACES ON LINE                                          72410002
*                                                                       72540002
SPACER2  LA    R3,L4(R3)                                                72670002
         BR    14                                                       72800002
*                                                                       72930002
*        RESTORE REGISTERS USED BY ROUTINES IN THIS MODULE              73060002
*                                                                       73190002
RETURN   LM    R5,R8,XSAVE             RESTORE REGS                     73320002
         BR    R14                     RETURN                           73450002
*                                                                       73580002
*        SET THE DATE READY FOR PRINT                                   73710002
*                                                                       73840002
SETDATE  UNPK  XSAVE(L8),L1(L3,R4)     UNPACK THE DATE                  73970002
         MVC   L0(L3,R3),XSAVE+L5      MOVE DAY                         74100002
         MVC   L6(L2,R3),XSAVE+L3      MOVE YEAR                        74230002
         BR    R14                                                      74360002
*                                                                       74490002
*        SET THE DEVICE TYPE READY FOR PRINT                            74620002
*                                                                       74750002
SETDEVT  STM   R5,R8,XSAVE             SAVE REGS                        74880002
         LA    R5,L1                    LOAD NO. OF POSSIBLE DEVICE TPS 75010002
         LA    R6,DEVTABLE             POIT TO DEVICE TYPES             75140002
SETDEVLP CLC   L0(L2,R4),L0(R6)        COMPARE TYPES                    75270002
         BE    SDEVFND                 FOUND ONE SO BRANCH              75400002
         LA    R6,L6(R6)               MOVE POINTER TO LOOK AT NEXT T   75530002
         BCT   R5,SETDEVLP             BRANCH IF THERE ARE MORE         75660002
         MVC   L0(L4,R3),NONE          NO DEV TYPE MOVE IN NONE         75790002
         B     RETURN                                                   75920002
SDEVFND  MVC   L0(L4,R3),L2(R6)        MOVE DEV NAME TO PRINT LINE      76050002
         B     RETURN                                                   76180002
          EJECT                                                @Y30LPDS 76183002
*                                                              @Y30LPDS 76186002
*      THE FOLLOWING CHECKS THIS RECORD FOR EXTRA(28) SENSE BYTES,      76189002
*        IF THE RECORD CONTAINS SS1 SENSE, THIS ROUTINE WILL ADJUST     76192002
*        LINE AND LABEL POINTERS TO EDIT THE ADDITIONAL BYTES. @Y30LPDS 76195002
*                                                              @Y30LPDS 76198002
CKIFSS1  DS    0H                                              @Y30LPDS 76201002
         CLI   SBCNT+1,SS1CNT          WERE EXTRA SNS BYTS REC'D        76204002
         BE    SETSS1PT                YES - BR                @Y30LPDS 76207002
         SR    R15,R15                 NO - REGULAR 3330 RECORD         76210002
         BR    R14                     RETURN                  @Y30LPDS 76213002
         SPACE 1                                                        76216002
SETSS1PT DS    0H                                              @Y30LPDS 76219002
         STM   R5,R8,XSAVE             SAVE REGS               @Y30LPDS 76222002
         L     R5,SS1LINE              LOAD ADDR OF SS1 LINE   @Y30LPDS 76225002
         ST    R5,XR9PTR               STORE FOR EREPO         @Y30LPDS 76228002
         L     R5,SS1LABEL             LOAD ADDR OF SS1 LABEL  @Y30LPDS 76231002
         ST    R5,XLABELP              STORE FOR EREP0         @Y30LPDS 76234002
         SR    R15,R15                 DONT PRINT THIS LINE    @Y30LPDS 76237002
         B     RETURN                  BR TO RETURN            @Y30LPDS 76240002
         SPACE 2                                               @Y30LPDS 76243002
*                                                              @Y30LPDS 76246002
*      THE FOLLOWING CHECKS THE CLASS/SOURCE BYTE OF THE RECORD         76249002
*                                                              @Y30LPDS 76252002
*      N O T E : THE  CLASS/SOURCE BYTE IS SET TO X'FF' BY THE @Y30LPDS 76255002
*                  OTHER 3330 EDIT TABELS(IFCEMER1,2,3,4,5) IF @Y30LPDS 76258002
*                  THIS RECORD CONTAINS 28 SENSE BYTES(SS1(3850) SENSE) 76261002
*                                                              @Y30LPDS 76264002
CKENTRY  DS    0H                                              @Y30LPDS 76267002
         CLI   CLASRC,HFF              ENTERED FOR SS1 SENSE?? @Y30LPDS 76270002
         BNE   SKIPPER                 NO - RETURN             @Y30LPDS 76273002
         MVI   CLASRC,H30              RESET CLAS/SOURCE FIELD @Y30LPDS 76276002
         B     SETSS1PT                BR TO SET PTRS FOR SS1 EDIT      76279002
         SPACE 2                                               @Y30LPDS 76282002
*                                                                       76310002
*        CHECK FOR CPU AND SERIAL NUMBER                                76440002
*                                                                       76570002
SETCPUNO STM   R5,R8,XSAVE             SAVE REGS                        76700002
         SR    R5,R5                   CLEAR R5                         76830002
         IC    R5,L0(R4)               PICK UP MODEL NO                 76960002
         SLL   R5,L8                   IN TO                            77090002
         IC    R5,L1(R4)               R5                               77220002
         LTR   R5,R5                   TEST FOR ZERO                    77350002
         BNZ   RETURN                  NONE ZERO BR                     77480002
         LR    R5,R3                   PUT LINE ADDRESS IN R5           77610002
         MVC   L0(L9,R5),UNIVERS       PUT IN UNIVERSAL                 77740002
         MVC   L11(L6,R5),NONE         PUT IN NONE                      77870002
         B     RETURN                                                   78000002
*                                                                       78130002
*        SET PROGRAM NAME TO PRINT LINE                                 78260002
*                                                                       78390002
SETPGMN  MVC   L0(L8,R3),L0(R4)        MOVE 8 CHARS TO LINE             78520002
         BR    R14                     RETURN                           78650002
*                                                                       78780002
*        SET BINARY WITH R4 POINTING TO THE CHAR                        78910002
*                                                                       79040002
SETBIN   STM   R5,R8,XSAVE             SAVE REGS                        79170002
         IC    R7,L0(R4)               PICK UP CHAR TO PRINT            79300002
         SLL   R7,L24                  MOVE IT TO HI OF R7              79430002
         LR    R8,R3                   PRINT POS POINTER TO REG8        79560002
         LA    R5,L8                   LOOP COUNT                       79690002
SETBINA  SR    R6,R6                   CLEAR REG 6                      79820002
         SLDL  R6,L1                   MOVE BIT TO R6                   79950002
         STC   R6,L0(R8)               PUT IT INTO PRINT LINE           80080002
         MVZ   L0(L1,R8),CHAR0                                          80210002
         LA    R8,L1(R8)               MOVE POINTER TO NEXT POS         80340002
         BCT   R5,SETBINA              LOOP TILL 8 PRINTED              80470002
         B     RETURN                                                   80600002
*        CONVERT COUNTERS FROM HEX TO DECIMAL READY FOR PRINT           80730002
*                                                                       80860002
CONV1    STM   R5,R8,XSAVE             SAVE REGISTERS                   80990002
         XC    READYP(L8),READYP       CLEAR UNPACK BUFFER              81120002
         SR    R6,R6                   ZERO REG                         81250002
         LH    R6,L0(R4)               LOAD DATA TO BE CONVERTED        81380002
         CVD   R6,READYP               CONVERT ERROR COUNTER TO DECI    81510002
         UNPK  READYP(L5),READYP+L5(L3)  UNPACK DECI COUNT              81640002
         OI    READYP+L4,CLRSGN        CLEAR SIGN                       81770002
         MVC   L0(L4,R3),READYP+L1     MOVE COUNTER READY TO PRINT      81900002
         B     RETURN                                                   82030002
         DS    0F                                                       82160002
XSAVE    DC    5F'0'                                                    82290002
NONE     DC    CL6'NONE  '                                              82420002
CHARS    DC    C'0123456789ABCDEF'                                      82550002
CHAR0    DC    C'0'                                                     82680002
UNIVERS  DC    C'UNIVERSAL'                                             82810002
DEVTABLE DC    X'2009'                                                  82940002
         DC    C'3330'                                                  83070002
SS1LABEL DC    A(LABELSS1-1)                                   @Y30LPDS 83110002
SS1LINE  DC    A(LINESS1-4)                                    @Y30LPDS 83150002
         DS    0D                                                       83200002
READYP   DC    CL8' '                                                   83330002
ENTRIES  DS    0F                                                       83460002
         DC    XL4'00010001'       FORMAT 1                             83590002
         DC    XL4'00010001'       FORMAT 2                             83720002
         DC    A(LABELS)           LABEL POINTER                        83850002
         DC    H'0'                DISP                                 83980002
*                                                                       84110002
*        SKIP TO CHANNEL 1                                              84240002
*                                                                       84370002
         DC    X'01'                                                    84500002
         DC    X'000B0B00'                                              84630002
*                                                                       84760002
         LINE  (12,15),(3,15)                                           84890002
         ROUTINE   SNB80,SETHEX                                         85020002
         ROUTINE   SNB90,SETHEX                                         85150002
         ROUTINE   SNB100,SETHEX                                        85280002
         ROUTINE   SNB110,SETHEX                                        85410002
         ROUTINE   SNB120,SETHEX                                        85540002
         ROUTINE   SNB130,SETHEX                                        85670002
         ROUTINE   SNB140,SETHEX                                        85800002
         ROUTINE   SNB150,SETHEX                                        85930002
         ROUTINE   CLASRC,CKENTRY                              @Y30LPDS 85970002
         SPACE 2                                               @Y30LPDS 86010002
         LABEL 'BYTE 8','BYTE 9','BYTE 10','BYTE 11','BYTE 12','BYTE 13C86060002
               ','BYTE 14','BYTE 15'                                    86190002
         LINE  (2,15),(1,1),SKIP=3                                      86320002
         ROUTINE   SNB80,SETBIN                                         86450002
         ROUTINE   SNB90,SETBIN                                         86580002
         ROUTINE   SNB100,SETBIN                                        86710002
         ROUTINE   SNB110,SETBIN                                        86840002
         ROUTINE   SNB120,SETBIN                                        86970002
         ROUTINE   SNB130,SETBIN                                        87100002
         ROUTINE   SNB140,SETBIN                                        87230002
         ROUTINE   SNB150,SETBIN                                        87360002
         LABEL ' '                                                      87490002
         LINE  (12,15),(3,15),SKIP=1                                    87620002
         ROUTINE   SNB160,SETHEX                                        87750002
         ROUTINE   SNB170,SETHEX                                        87880002
         ROUTINE   SNB180,SETHEX                                        88010002
         ROUTINE   SNB190,SETHEX                                        88140002
         ROUTINE   SNB200,SETHEX                                        88270002
         ROUTINE   SNB210,SETHEX                                        88400002
         ROUTINE   SNB220,SETHEX                                        88530002
         ROUTINE   SNB230,SETHEX                                        88660002
         LABEL 'BYTE 16','BYTE 17','BYTE 18','BYTE 19','BYTE 20','BYTE C88790002
                21','BYTE 22','BYTE 23'                                 88920002
         LINE  ,(91,1)                                                  89050002
         ROUTINE   SPARE1,SKIPPER                                       89180002
         LABEL '-----ERROR SYMPTOM CODE-----'                           89310002
         LINE  (2,15),(1,1),SKIP=3                                      89440002
         ROUTINE   SNB160,SETBIN                                        89570002
         ROUTINE   SNB170,SETBIN                                        89700002
         ROUTINE   SNB180,SETBIN                                        89830002
         ROUTINE   SNB190,SETBIN                                        89960002
         ROUTINE   SNB200,SETBIN                                        90090002
         ROUTINE   SNB210,SETBIN                                        90220002
         ROUTINE   SNB220,SETBIN                                        90350002
         ROUTINE   SNB230,SETBIN                                        90480002
         LABEL ' '                                                      90610002
          LINE ,,SKIP=1                                        @Y30LPDS 90650002
         ROUTINE   SBCNT,CKIFSS1                               @Y30LPDS 90690002
         DC    X'FF'                                                    90740002
         DC    XL2'0070'                                         S21021 90870002
         DC    XL2'0018'                                                91000002
         DC    XL2'0000'                                                91130002
         EJECT                                                 @Y30LPDS 91134002
*                                                              @Y30LPDS 91138002
*      THE FOLLOWING EDIT IS ONLY DONE IF THIS RECORD CONTAINS @Y30LPDS 91142002
*        THE EXTRA FOUR(4) SENSE BYTES FOR SS1(3850).          @Y30LPDS 91146002
*                                                              @Y30LPDS 91150002
         SPACE 1                                               @Y30LPDS 91154002
LINESS1  LINE  (12,15),(3,15),SKIP=1                           @Y30LPDS 91158002
         ROUTINE   SNB240,SETHEX                               @Y30LPDS 91162002
         ROUTINE   SNB250,SETHEX                               @Y30LPDS 91166002
         ROUTINE   SNB260,SETHEX                               @Y30LPDS 91170002
         ROUTINE   SNB270,SETHEX                               @Y30LPDS 91174002
LABELSS1 LABEL 'BYTE 24','BYTE 25','BYTE 26','BYTE 27'         @Y30LPDS 91178002
         LINE  ,(1,15),SKIP=2                                  @Y30LPDS 91182002
         ROUTINE   SPARE1,SKIPPER                              @Y30LPDS 91186002
         LABEL 'REAL UNIT ADDR','  ----REAL  CYLINDER ----'    @Y30LPDS 91190002
         LINE  (2,15),(1,1),SKIP=2                             @Y30LPDS 91194002
         ROUTINE   SNB240,SETBIN                               @Y30LPDS 91198002
         ROUTINE   SNB250,SETBIN                               @Y30LPDS 91202002
         ROUTINE   SNB260,SETBIN                               @Y30LPDS 91206002
         ROUTINE   SNB270,SETBIN                               @Y30LPDS 91210002
         LABEL ' '                                             @Y30LPDS 91214002
         LINE  ,,SKIP=1                                        @Y30LPDS 91218002
         LABEL ' '                                             @Y30LPDS 91222002
         DC    X'FF'                                           @Y30LPDS 91226002
         DC    XL2'0074'               RECORD LENGTH           @Y30LPDS 91230002
         DC    XL2'0018'               HDR LENGTH              @Y30LPDS 91234002
         DC    XL2'0000'                                       @Y30LPDS 91238002
         EJECT                                                 @Y30LPDS 91242002
LABELS   DS    0F                                                       91260002
         DC    C'$'                                                     91390002
         LSTART                                                         91520002
         END                                                            91650002
