         << LINES .001/.009 ARE RESERVED FOR SYSTEMS INTEGRATION >>     00000001
   SERIES'37'FAMILY = 15,    << LAST CPU # OF S/37 FAMILY >>   <<*2072>>00085000
   SERIES'64 = 5,            << CPU # OF SERIES 64 >>          <<*2072>>00086000
integer procedure THISCPU;                                     <<*2072>>00790010
option external;                                               <<*2072>>00790020
                                                               <<*2072>>00790030
   IOQ'MAX'SIZE = 1400,       << MAX. IOQ SIZE + >>            <<*9540>>00884000
TOS := IOQ'MAX'SIZE;                                           <<*9540>>01010000
MOVE IOQ'HOLDER(1) := IOQ'HOLDER(0), (IOQ'MAX'SIZE-1);         <<*9540>>01030000
                                                               <<*2072>>01190000
<<                                                           >><<*2072>>01195000
<< THE SERIES 64 AND SERIES 37 FAMILY HAVE 4 INTERRUPT MASK  >><<*2072>>01200000
<< WORDS. ALL OTHER CPU'S HAVE ONLY 1 INTERRUPT MASK WORD.   >><<*2072>>01205000
<<                                                           >><<*2072>>01210000
<< USE THE MEMORY COPY OF THE INTERRUPT MASK WORD(S) BECAUSE >><<*2072>>01215000
<< THE HARDWARE COPY MAY BE INCORRECT.                       >><<*2072>>01220000
<<                                                           >><<*2072>>01225000
                                                               <<*2072>>01230000
   IF (SERIES'64 <= THISCPU <= SERIES'37'FAMILY) THEN          <<*2072>>01235000
      BEGIN                                                    <<*2072>>01240000
      MAXIMB := 3;           << COUNT FOR INT. MASK WORDS >>   <<*2072>>01245000
      MASKADDR := IMASK55;   << POINTER TO INTERRUPT MASKS>>   <<*2072>>01245010
      END                                                      <<*2072>>01245020
   ELSE                                                        <<*2072>>01245030
      BEGIN                                                    <<*2072>>01245040
      MAXIMB := 0;           << COUNT FOR INT. MASK WORD  >>   <<*2072>>01245050
      MASKADDR := IMASK;     << POINTER TO INTERRUPT MASKS>>   <<*2072>>01245060
      END;                                                     <<*2072>>01245070
      IF <> AND NOT LPDT'VIRTUAL'DEVICE AND                    <<*1412>>01340000
         ( GET'DSDEVICE(LDEV) <= 1 ) THEN                      <<*1412>>01341000
$EDIT VOID=01370000                                            <<*1412>>01345000
      IF = THEN                                                <<*1412>>01380100
        BEGIN   << INVALID ILT POINTER >>                      <<*1412>>01380200
        DDEL;   << POP DIT & ILT POINTERS >>                   <<*1412>>01380300
        GOTO CHECK'PF;                                         <<*1412>>01380400
        END;                                                   <<*1412>>01380500
      IF ( DEV'TYPE <> INP'DEV'TYPE  OR                        <<*1412>>01489100
           LPDT'DEV'OWN'STATE <> LPDT'NOT'OWNED) AND           <<*1412>>01489110
         ( DEV'TYPE <> IBM'SUBSYSTEM ) THEN                    <<*1412>>01489120
        BEGIN                                                  <<*1412>>01489140
                                                               <<*1412>>01489150
        << THE DEVICE IS AN INP (OWNED) OR NOT AN INP       >> <<*1412>>01489160
        << OR NOT AN IBM TYPE(22) DEVICE THEN INFORM DRIVER >> <<*1412>>01489170
        << OF THE POWERFAIL.                                >> <<*1412>>01489180
                                                               <<*1412>>01489190
        TOS := DITP(DDLTP); << DLT PTR >>                      <<*1412>>01490000
        QPFAIL := PS0.QPFAILS; << IF TRUE TELL VIA ATTACHIO >> <<*1412>>01495000
        TOS := PS0(DINIL); << INITIALIZATION PLABEL >>         <<*1412>>01500000
        DELB;                                                  <<*1412>>01505000
        IF < AND LDEV <> SYSCONSOLE                            <<*1412>>01510000
           THEN ASMB(PCAL 0) ELSE DDEL;                        <<*1412>>01510100
        CHECKLDEV(LDEV);                                       <<*1412>>01515000
        IF = AND NOCARRY THEN                                  <<*1412>>01520000
        IF QPFAIL THEN ATTACHIO(LDEV,0,0,0,PFAILURE,0,0,0,%13) <<*1412>>01525000
        ELSE                                                   <<*1412>>01530000
          BEGIN     << Non disc SIO device >>                  <<*1412>>01535000
ABORTSIO:                                                      <<*1412>>01540000
          DISABLE;                                             <<*1412>>01545000
          IOQ'ENTRY'INDEX := DITP(DIOQP);                      <<*1412>>01550000
          IF IOQ'ENTRY'INDEX <> 0 THEN                         <<*1412>>01555000
            BEGIN << IOQ attached, abort the I/O >>            <<*1412>>01560000
            IOQ'ABORT := 1;                                    <<*1412>>01565000
            IOQ'PFAIL := 1;                                    <<*1412>>01570000
            TOS := DITP; << GET FLAGS WORD OF DIT >>           <<*1412>>01575000
            TOS.IAK := 1;                                      <<*1412>>01580000
            TOS.REQUEST := 1;                                  <<*1412>>01585000
            DITP := TOS;                                       <<*1412>>01590000
            PDISABLE;                                          <<*1412>>01595000
            ENABLE;                                            <<*1412>>01600000
            AWAKEIO(DITP,0); << HAVE DRIVER DO THE ABORT >>    <<*1412>>01605000
            PENABLE;                                           <<*1412>>01610000
            END;                                               <<*1412>>01615000
          ENABLE;                                              <<*1412>>01620000
          END;                                                 <<*1412>>01625000
        END ELSE DEL;    << POP DIT POINTER >>                 <<*1412>>01625100
                                                               <<*1412>>01635100
CHECK'PF:                                                      <<*1412>>01635200
                                                               <<*1412>>01635300
