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

⟦d481fcf56⟧ s3xseg

    Length: 11938 (0x2ea2)
    Types: s3xseg
    Names: »S$E044«

Derivation

└─⟦827b5bd03⟧ Bits:30009184 5702-sc1.V16.ccp
    └─⟦f17e99db6⟧ 
        └─⟦this⟧ »S$E044« 

TextSegment

       MACRO                                                            00010000                
       $E044                                                            00020000                
       GBLB  &MIN                      MIN SYS GLOBAL                   00030000                
       GBLB  &BSCA                                                      00040000                
       GBLB  &MLTA                                                      00050000                
       GBLB  &DFF                      DFF GLOBAL                       00060000                
       GBLB  &DPF                      DPF GLOBAL                   @01 00070000                
       LCLC  &#                                                         00080000                
       LCLC  &LVLIH                                                     00090000                
       TEXT                                                             00100000                
&LVLIH SETC  'B'                                                        00110000                
       AIF   (&BSCA).NOC                                                00120000                
&LVLIH SETC  'C'                                                        00130000                
.NOC   ANOP                                                             00140000                
&#     SETC  ' '                                                        00150000                
       TITLE 'COMMON&#.INTERRUPT&#.HANDLER&#.$CC4IH'                    00160000                
*                                      BEGIN MACRO '$E044' 3/13/73      00170000                
       SPACE 2                                                          00180000                
*********************************************************************** 00190000                
* NAME -- $CC4IH                                                      * 00200000                
*                                                                     * 00210000                
* TITLE -- INTERRUPT HANDLER COMMON SUBROUTINE                        * 00220000                
*                                                                     * 00230000                
* FUNCTION --                                                         * 00240000                
*                                                                     * 00250000                
*    . DETERMINE IF THE CURRENT CCP TASK IS IN THE                    * 00260000                
*      MUST-COMPLETE STAGE AND, IF NOT, CHANGE THE CCP PROGRAM        * 00270000                
*      LEVEL IAR TO CAUSE THE CCP LEVEL TO RESUME FOLLOWING           * 00280000                
*      INTERRUPT LEVEL PROCESSING IN THE CCP DISPATCHER.              * 00290000                
*    . SAVE THE CURRENT TASK'S DISPATCHER CONTROL BYTE $DPFLG         * 00300000                
*      AND SET BOTH DISPATCHER CONTROL BYTES ($DPFLG + $DPFLH)        * 00310000                
*      TO CAUSE THE DISPATCHER TO SAVE THE INTERRUPTED TASK'S         * 00320000                
*      STATUS, PROCESS THE INTERRUPT, AND RESUME THE                  * 00330000                
*      INTERRUPTED TASK.                                              * 00340000                
*    . PREVENT RECURSIVE ENTRY DURING A NESTED INTERRUPT TO           * 00350000                
*      INSURE DATA AND INSTRUCTION ADDRESS REGISTER INTEGRITY.        * 00360000                
*                                                                     * 00370000                
* OPERATION --                                                        * 00380000                
*                                                                     * 00390000                
*    . POST THE CCP TO HANDLE INTERRUPTS BY POSTING FLAG BITS IN      * 00400000                
*      THE CCP WORK AREA.                                             * 00410000                
*                                                                     * 00420000                
* ENTRY POINT -- $CC4IH                                               * 00430000                
*                                                                     * 00440000                
* OUTPUT --                                                           * 00450000                
*                                                                     * 00460000                
*    . CCP PROGRAM LEVEL IAR RESET TO THE ENTRY ADDRESS OF THE        * 00470000                
*      CCP DISPATCHER $CC4DP.                                         * 00480000                
*    . CCP DISPATCHER FLAG BYTES $DPFLG + $DPFLH SET TO CAUSE         * 00490000                
*      INTERRUPT PROCESSING BY THE APPROPRIATE CCP ROUTINE.           * 00500000                
*                                                                     * 00510000                
* EXTERNAL REF --                                                     * 00520000                
*                                                                     * 00530000                
*    . CCP COMMON WORK AREA $CCCOM, CURRENT TCB, THE INVOKING         * 00540000                
*      INTERRUPT LEVEL ROUTINES NEXT SEQUENTIAL INSTRUCTION           * 00550000                
*      VIA AN EXTRN AND ADDRESS CONSTANT.                             * 00560000                
*                                                                     * 00570000                
* EXIT, NORMAL --                                                     * 00580000                
*                                                                     * 00590000                
*    . TO INVOKER VIA ARR.                                            * 00600000                
*    . TO INVOKER OF NESTED LOWER LEVEL INTERRUPTS BY                 * 00610000                
*      RESETTING THE LOWER INTERRUPT LEVEL'S IAR TO THE               * 00620000                
*      ADDRESS OF THE INSTRUCTION FOLLOWING THE BRANCH TO             * 00630000                
*      $CC4IH.                                                        * 00640000                
*                                                                     * 00650000                
* EXIT, ERROR -- NONE                                                 * 00660000                
*                                                                     * 00670000                
* TABLES -- NONE                                                      * 00680000                
*                                                                     * 00690000                
* ATTRIBUTES --                                                       * 00700000                
*                                                                     * 00710000                
*    . RESIDENT, INTERRUPTABLE, EFFECTIVELY REENTRANT THRU            * 00720000                
*      DEPENDENCIES IN THE INVOKING INTERRUPT ROUTINES.               * 00730000                
*                                                                     * 00740000                
*********************************************************************** 00750000                
       SPACE 4                                                          00760000                
*********************************************************************** 00770000                
*      ENTRY NAMES, EXTERNAL NAMES, EQUATES, + WORK AREAS             * 00780000                
*********************************************************************** 00790000                
       SPACE 1                                                          00800000                
       EXTRN SETC                      LABEL IN CONSOLE INTERRUPT       00810000                
       AIF   (&BSCA NE '1').NBSC1                                       00820000                
       EXTRN SETB                      BSCA INTRRUPT HANDLER            00830000                
.NBSC1 ANOP                                                             00840000                
       SPACE 1                                                          00850000                
BASE   EQU   XR2                       BASE REGISTER EQUATE             00860000                
       SPACE 1                                                          00870000                
*********************************************************************** 00880000                
*            MAIN PROCESSING SECTION OF ROUTINE                       * 00890000                
*********************************************************************** 00900000                
       SPACE 2                                                          00910000                
$CC4IH EQU   *                         START OF COMMON INTERRUPT RTN    00920000                
       LA    $CC4IH,BASE                                                00930000                
       USING $CC4IH,BASE                                                00940000                
       SPACE 2                                                          00950000                
       LA    $CCCOM,XR1                GET @ OF CCP COMMON              00960000                
       SPACE 1                                                          00970000                
*********************************************************************** 00980000                
*      DETERMINE IF THE CCP CAN BE REROUTED TO HANDLE THIS INTERRUPT  * 00990000                
*********************************************************************** 01000000                
       SPACE 1                                                          01010000                
       SPACE 1                                                          01020000                
       AIF   (&MIN).MIN1               MIN SYS??                        01030000                
       TBN   $DPFLH(,XR1),DPHALT       IS $CC4DP IN HALT LOGIC?         01040000                
       JF    IHNOT                     NO, CONTINUE                     01050000                
*                                         YES, RESET HIS IAR TO         01060000                
*                                      GET OUT OF THE HALT LOGIC        01070000                
IHLOAD EQU   *+1+##                    IAR Q-BYTE MODIFIED              01080000                
       L     IH@HPL,##                 RELOAD CCP'S IAR TO RESET IT     01090000                
       J     IHEXIT                    EXIT COMMON INTERRUPT HANDLER    01100000                
       SPACE 1                                                          01110000                
.MIN1  ANOP                                                             01120000                
IHNOT  TBF   $DPFLH(,XR1),DPCI+DPRIT   HAS AN INTERRUPT ALREADY BEEN    01130000                
*                                      PROCESSED                        01140000                
       TBF   #OPEND(,XR1),ALLBIT       OR THE COMM TASK OP END COUNT    01150000                
*                                      NON-ZERO                         01160000                
       JF    EXIT                      NO NEED TO PROCESS IF ANY ON     01170000                
       SPACE 2                                                          01180000                
*---------------------------------------------------------------------* 01190000                
*      SEE IF THE CCP IS IN THE USER PROGRAM AREA OR NOT AND          * 01200000                
*      INTERRUPT ONLY IF YES                                          * 01210000                
*---------------------------------------------------------------------* 01220000                
       SPACE 1                                                          01230000                
IHIAR  EQU   *+1                       SYMBOL FOR MODIFED Q-BYTE        01240000                
       ST    CCPIAR(,BASE),###     *S* Q BYTE IS SET BY START UP OF CCP 01250000                
*                                       TO THE VALUE FOR THE CCP IAR    01260000                
*                                      STOW THE CCP IAR FOR COMPARISON  01270000                
       CLC   @UALFA(2,XR1),CCPIAR(,BASE) IS CCP IAR IN UPA OR HIGHER    01280000                
       JH    EXIT                      NO, EXIT WITHOUT WRENCHING       01290000                
       SPACE 1                                                          01300000                
       AIF   (&DFF NE '1').NDFF                                         01310000                
       SPACE 1                                                          01320000                
*---------------------------------------------------------------------* 01330000                
*      SEE IF CCP IS IN THE D.F.F. CODE AND DON'T WRENCH IF SO        * 01340000                
*---------------------------------------------------------------------* 01350000                
       SPACE 1                                                          01360000                
       CLC   #DFBEG(2,XR1),CCPIAR(,BASE) CCP IN DFF?                    01370000                
       JH    IHWRNH                     NO, WRENCH IAR FROM USER PGM    01380000                
       SPACE 1                                                          01390000                
*------MAYBE NOT, SEE IF IN DFF EXPLICITLY----------------------------* 01400000                
       SPACE 1                                                          01410000                
       CLC   #DFEND(2,XR1),CCPIAR(,BASE) ACTUALLY IN DFF?               01420000                
       JNL   IHEXIT                    YES, EXIT WITHOUT WRENCHING      01430000                
.NDFF  ANOP                                                             01440000                
       SPACE 1                                                          01450000                
*------IS IN A USER PROGRAM, CHANGE CCP IAR---------------------------* 01460000                
       SPACE 1                                                          01470000                
*********************************************************************** 01480000                
*      AT THIS POINT IT HAS BEEN DETERMINED THAT THE CURRENT TCB      * 01490000                
*      CAN BE INTERRUPTED TO ALLOW THE CCP TO PROCESS THE INTERRUPT   * 01500000                
*********************************************************************** 01510000                
       SPACE 1                                                          01520000                
       SPACE 2                                                          01530000                
*********************************************************************** 01540000                
*            THIS CODE WILL PRESERVE THE SETTING OF THE $DPFLG BITS   * 01550000                
*            DPREG + DPDSP FOR THE TASK TO BE INTERRUPTED.            * 01560000                
*********************************************************************** 01570000                
       SPACE 2                                                          01580000                
IHWRNH MVC   IHMVA+3(2,BASE),@CURTB(,XR1)  GET THE ADDRESS OF THE       01590000                
*                                      * CURRENT TASK CONTROL BLOCK     01600000                
*                                      * FROM THE COMM. AREA            01610000                
*                                                                       01620000                
       ALC   IHMVA+3(2,BASE),IHTFLG(,BASE)  STEP THE INSTRUCTION ADDR   01630000                
*                                      * TO THE ADDRESS OF THE CURRENT  01640000                
*                                      * TASKS TCBFLG BYTE              01650000                
*                                                                       01660000                
IHMVA  MVC   ###(1),$DPFLG(,XR1)       MOVE $DPFLG INTO THE TO-BE-INTR. 01670000                
*                                      * TASKS TCB                      01680000                
*                                                                       01690000                
       SBF   $DPFLG(,XR1),DPREG+DPDSP         RESET $DPFLG PRIOR TO     01700000                
*                                      GIVING CONTROL TO $DD4DP         01710000                
       SPACE 2                                                          01720000                
       SPACE 1                                                          01730000                
       SLC   SETIAR+3(,BASE),IHCUTB(2,BASE) REINITIALIZE THE TCBIAR STOW01740000                
*                                       INSTRUCTION PRIOR TO MODIFICA-  01750000                
*                                       TION                            01760000                
       MVC   IHCUTB(2,BASE),@CURTB(,XR1) SAVE THE CURRENT TCB @ FOR THE 01770000                
*                                        NEXT ENTRY RE-INITIALIZATION   01780000                
       ALC   SETIAR+3(,BASE),IHCUTB(2,XR2) COMPUTE THE ADDRESS OF THE   01790000                
*                                      TCBIAR WHERE THE CCP IAR IS TO   01800000                
*                                      BE SAVED FOR TASK RESUME         01810000                
SETIAR ST    TCBIAR-TCBCCP,###         *S* SAVE THE CCP IAR IN THE TCB  01820000                
*                                      Q BYTE SET BY CCP START-UP       01830000                
IHIAR2 EQU   SETIAR+1                  Q BYTE MODIFIED ADDRESS          01840000                
       SPACE 1                                                          01850000                
       SBN   $DPFLG(,XR1),DPREG        SET SAVE REG FLAG FOR $CC4DP     01860000                
       SBN   $DPFLH(,XR1),DPINT+DPRIT  TELL $CC4DP THAT...              01870000                
*                                       1. ENTRY IS FROM AN INTERRUPT   01880000                
*                                       2. AN INTERRUPTED TASK EXISTS   01890000                
       SPACE 1                                                          01900000                
IHIAR3 EQU   *+1                                                        01910000                
       L     @CC4DP,###            *S* RESET THE CCP IAR TO ENTER THE   01920000                
*                                       CCP DISPATCHER TO PROCESS       01930000                
*                                       THE INTERRUPT THAT OCCURRED     01940000                
       SPACE 2                                                          01950000                
*********************************************************************** 01960000                
*      EXIT FROM THE INTERRUPT SUBROUTINE TO THE INVOKING INTERRUPT   * 01970000                
*      LEVEL HANDLER.  TEST AND RESET THE IAR'S OF THE LOWER LEVEL    * 01980000                
*      INTERRUPT HANDLERS IF THEY ARE CURRENTLY ACTIVE WITHIN THIS    * 01990000                
*      ROUTINE ALSO /I.E. NESTED, HIGHER PRIORITY INTERRUPTS HAVE     * 02000000                
*      CAUSED THE INTERRUPTION OF PROCESSING AT THE LOWER INTERRUPT   * 02010000                
*      LEVELS.  THE RESETTING OF THE LOWER LEVEL IAR'S IS DONE TO     * 02020000                
*      AVOID A REPETITION OF PROCESSING + A LOSS OF ARR INTEGRITY.    * 02030000                
*                                                                     * 02040000                
*      THESE TESTS MUST BE IN THE SAME ORDER AS THE INTERUPT LEVEL    * 02050000                
*      PRIORITIES IN THE SYSTEM THREE HARDWARE                        * 02060000                
*********************************************************************** 02070000                
       SPACE 1                                                          02080000                
IHEXIT EQU   *                         EXIT FROM COMMON INTERRUPT RTN   02090000                
EXIT   EQU   *                         EXIT FROM ROUTINE                02100000                
       AIF   (&MLTA NE '1').NMLTA                                       02110000                
       TBN   IHFLAG(,BASE),IHM         IS THIS THE MLTA /HIGHEST/ LEVEL 02120000                
       JT    SETIA&LVLIH  YES, GO RESET THE LOWER LEVEL                 02130000                
.NMLTA ANOP                                                             02140000                
       AIF   (&BSCA NE '1').NBSCA                                       02150000                
       TBN   IHFLAG(,BASE),IHB         IS THIS THE BSCA INT LEVEL       02160000                
       JT    SETIAC                    YES, GO RESET CONSOLE IAR        02170000                
.NBSCA ANOP                                                             02180000                
       J     NOSET                     NO, MUST BE CONSOLE, THERE-      02190000                
*                                       FORE DON'T RESET ANYTHING       02200000                
       AIF   (&BSCA NE '1').NBSCB                                       02210000                
SETIAB TBN   IHFLAG(,BASE),IHB         IS BSCA INT LEVEL ACTIVE IN THIS 02220000                
*                                       SUBROUTINE                      02230000                
       JF    SETIAC                    NO, CHECK CONSOLE                02240000                
       L     @SETB(,BASE),LVBIAR       YES, RESET BSCA IAR              02250000                
.NBSCB ANOP                                                             02260000                
SETIAC TBN   IHFLAG(,BASE),IHC         IS CONSOLE LEVEL ACTIVE          02270000                
       JF    NOSET                     NO, GO ON                        02280000                
       L     @SETC(,BASE),LVCIAR       YES, RESET CONSOLE IAR           02290000                
NOSET  EQU   *                         RETURN TO INVOKER                02300000                
       ST    IHRET+3(,BASE),ARR        STOW THE RETURN ADDRESS          02310000                
       AIF   (&DPF NE '1').NODPF       .SKIP IF NON-DPF SYSTEM      @01 02320000                
       SPACE 2                                                      @01 02330000                
********************************************************************@01 02340000                
*      RESET THE IAR OF THE NON-CCP LEVEL TO CAUSE AN APL TO THE    @01 02350000                
*      CCP LEVEL.  THIS CAN ONLY BE DONE IF THE OTHER LEVEL IS NOT  @01 02360000                
*      CURRENTLY PROCESSING IN DSM CODE OR CCP INTERCEPT LOGIC.     @01 02370000                
********************************************************************@01 02380000                
       SPACE 1                                                      @01 02390000                
       ST    IHTLVL(,BASE),##          STORE OTHER LEVEL IAR        @01 02400000                
IHLVL1 EQU   *-2                       Q-CODE SET BY STARTUP        @01 02410000                
       CLC   IHTLVL(2,BASE),IHOBEG(,BASE) IAR BELOW PARTITION ?     @01 02420000                
       JL    IHRET                     YES, JUMP - DON'T WRENCH     @01 02430000                
       CLC   IHTLVL(2,BASE),IHOEND(,BASE) IAR ABOVE PARTITION ?     @01 02440000                
       JH    IHRET                     YES, JUMP - DON'T WRENCH     @01 02450000                
       ST    IHOLVL(,BASE),##          STORE OTHER LEVEL IAR        @01 02460000                
IHLVL2 EQU   *-2                       Q-CODE SET BY STARTUP        @01 02470000                
       L     IHOAPL(,BASE),##          POINT IAR AT APL INST        @01 02480000                
IHLVL3 EQU   *-2                       Q-CODE SET BY STARTUP        @01 02490000                
.NODPF ANOP                                                         @01 02500000                
IHRET  B     ###                       RETURN                           02510000                
       AIF   (&DPF NE '1').NNDPF       .SKIP IF NON-DPF SYSTEM      @01 02520000                
       SPACE 2                                                      @01 02530000                
****** OTHER LEVEL WILL APL HERE IF WRENCHING WAS POSSIBLE *********@01 02540000                
       SPACE 1                                                      @01 02550000                
IHAPL  APL   0                         APL TO ALLOW CCP TO PROCESS  @01 02560000                
       L     IHOLVL,##                 RESTORE OTHER LEVEL IAR      @01 02570000                
IHLVL4 EQU   *-3                       Q-CODE SET BY STARTUP        @01 02580000                
.NNDPF ANOP                                                         @01 02590000                
       EJECT                                                            02600000                
************************************************************************02610000                
*            CONSTANTS AND WORK AREAS USED BY THE COMMON INTERRUPT    * 02620000                
*                                      ROUTINE                        * 02630000                
*********************************************************************** 02640000                
       SPACE 1                                                          02650000                
       AIF   (&DPF NE '1').NMDPF       SKIP IF NON-DPF              @01 02660000                
IHOAPL DC    AL2(IHAPL)                ADDRESS OF APL INST          @01 02670000                
IHOBEG DC    AL2(####)                 START @ OF OTHER LEVEL PART  @01 02680000                
IHOEND DC    AL2($CCCOM)               END @ OF OTHER LEVEL PARTITI @01 02690000                
IHTLVL DC    AL2(####)                 SAVE AREA FOR OTHER LEVEL IAR@01 02700000                
IHOLVL DC    AL2(####)                 SAVE AREA FOR OTHER LEVEL IAR@01 02710000                
       SPACE 1                                                      @01 02720000                
.NMDPF ANOP                                                         @01 02730000                
@CC4DP DC    AL2($CC4DP)               @ OF THE EPA OF THE CCP DISP.    02740000                
       AIF   (&BSCA NE '1').NBSCC                                       02750000                
@SETB  DC    AL2(SETB)                 @ OF SET INSTRUCTION IN BSCA IH  02760000                
.NBSCC ANOP                                                             02770000                
@SETC  DC    AL2(SETC)                 @ OF SET INSTRUCTION IN CONS IH  02780000                
CCPIAR DC    AL2(0)                    SAVED CCPIAR--MUST BE ZERO INIT. 02790000                
IHCUTB DC    AL2(0)                    @ OF CURRENT TCB--MUST BE ZERO   02800000                
*                                       INITIALLY                       02810000                
IHTFLG DC    AL2(TCBFLG)               DISPLACEMENT INTO THE TCB OF     02820000                
*                                      THE SAVE BYTE FOR $DPFLG         02830000                
IHFLAG DC    BL1'00000000'             $CC4IH FLAG BYTE                 02840000                
IHC    EQU   BIT0                      CONSOLE ENTRY INDICATOR          02850000                
       AIF   (&BSCA NE '1').NBSCD                                       02860000                
IHB    EQU   BIT1                      BSCA ENTRY INDICATOR             02870000                
.NBSCD ANOP                                                             02880000                
       AIF   (&MLTA NE '1').NMLTB                                       02890000                
IHM    EQU   BIT2                      MLTA ENTRY INDICATOR             02900000                
.NMLTB ANOP                                                             02910000                
       AIF   (&MIN).NHPL                                                02920000                
IH@HPL DC    AL2(DPRSET)               @ OF INSTRUCTION AFTER HALT      02930000                
*                                      IN DISPATCHER                    02940000                
.NHPL  ANOP                                                             02950000                
*                                      END MACRO '$E044'                02960000                
       MEND                                                             02970000