Table of Contents

DMSITI Abstract

Statistics

Type ASSEMBLE
Source Lines : 292
Fixes Applied : 3
Most Recent Version : Tuesday, December 12, 1978
Last Fix ID : [HRC004DS]

Synopsis

Module

       DMSITI                                                   P3031

Function

       TO  HANDLE   ALL  INPUT/OUTPUT   INTERRUPTIONS,  PASS
       CONTROL  TO  THE INTERRUPT  PROCESSING  ROUTINE,  AND
       RETURN CONTROL TO THE INTERRUPTED PROGRAM.

Attributes

       NUCLEUS RESIDENT, RE-ENTRANT

Operation

       DMSITI SAVES THE  I/O OLD PSW AND  THE CHANNEL STATUS
       WORD (CSW).   IT THEN  DETERMINES THE  NATURE OF  THE
       DEVICE CAUSING THE INTERRUPTION AND PASSES CONTROL TO
       THE PROGRAM  THAT PROCESSES  INTERRUPTIONS FROM  THAT
       DEVICE.  IT DOES THIS BY  SCANNING THE ENTRIES IN THE
       DEVICE  TABLE   (DEVTAB)  UNTIL  IT  FINDS   THE  ONE
       CONTAINING THE  DEVICE ADDRESS  THAT IS  THE SAME  AS
       THAT OF THE INTERRUPTING DEVICE.

       WHEN THE INTERRUPT HANDLING  PROGRAM CORRESPONDING TO
       THE INTERRUPTING DEVICE COMPLETES  ITS PROCESSING, IT
       RETURNS  CONTROL TO  DMSITI.  AT  THIS POINT,  DMSITI
       TESTS THE WAIT BIT IN THE  SAVED I/O OLD PSW. IF THIS
       BIT   IS  OFF,   IT   USUALLY   INDICATES  THAT   THE
       INTERRUPTION WAS CAUSED BY  A TERMINAL (ASYNCHRONOUS)
       I/O OPERATION.  IN THIS  CASE, DMSITI RETURNS CONTROL
       TO THE  INTERRUPTED PROGRAM  BY LOADING  THE I/O  OLD
       PSW.

       IF THE WAIT  BIT IS ONE, THIS  USUALLY INDICATES THAT
       THE  INTERRUPTION   WAS  CAUSED  BY   A  NON-TERMINAL
       (SYNCHRONOUS) I/O OPERATION AND THAT THE PROGRAM THAT
       INITIATED  THE  OPERATION CALLED  THE  WAIT  FUNCTION
       PROGRAM TO WAIT FOR A PARTICULAR TYPE OF INTERRUPTION
       (USUALLY A DEVICE END, SIGNALING THE COMPLETION OF AN
       I/O  OPERATION).   IN THIS  CASE,  DMSITI  DETERMINES
       WHETHER OR NOT AN  INTERRUPTION FROM THE INTERRUPTING
       DEVICE IS BEING WAITED FOR.  IT DOES THIS BY CHECKING
       THE PSEUDO-WAIT BIT IN THE DEVICE TABLE ENTRY FOR THE
       INTERRUPTING DEVICE.  IF THIS BIT  IS OFF, THE SYSTEM
       IS WAITING FOR SOME EVENT OTHER THAN THE INTERRUPTION
       FROM THE INTERRUPTING DEVICE;   DMSITI RETURNS TO THE
       WAIT STATE BY  LOADING THE SAVED I/O  OLD PSW.  (THIS
       PSW HAS THE WAIT BIT ON.)

       IF THE PSEUDO-WAIT BIT IS  ON, AN INTERRUPTION FROM A
       PARTICULAR  DEVICE IS  BEING WAITED  FOR.  (THE  WAIT
       FUNCTION  PROGRAM SETS  THIS  BIT  WHEN CALLED  BY  A
       PROGRAM THAT IS WAITING FOR  AN I/O INTERRUPTION FROM
       A   PARTICULAR  DEVICE.)    IN   THIS  CASE,   DMSITI
       DETERMINES WHETHER  OR NOT  THE INTERRUPTION  WAS THE
       ONE BEING WAITED FOR.  THE PROGRAM THAT PROCESSES THE
       INTERRUPTION FROM THE INTERRUPTING DEVICE WILL INFORM
       DMSITI OF THIS.   IF THE INTERRUPTION IS  NOT THE ONE
       BEING WAITED FOR, IOINT LOADS  THE SAVED I/O OLD PSW.
       THIS WILL AGAIN PLACE THE MACHINE IN THE WAIT STATE.

       IF  THE INTERRUPTION  IS THE  ONE  BEING WAITED  FOR,
       DMSITI RESETS BOTH THE PSEUDO-WAIT  BIT IN THE DEVICE
       TABLE ENTRY AND  THE WAIT BIT IN THE I/O  OLD PSW. IT
       THEN  LOADS THAT  PSW.   THIS  CAUSES CONTROL  TO  BE
       RETURNED  TO THE  WAIT  FUNCTION  PROGRAM, WHICH,  IN
       TURN, RETURNS CONTROL  TO THE PROGRAM THAT  CALLED IT
       TO WAIT FOR THE INTERRUPTION.

Calls to Other Routines

     CALLS VARIOUS INTERRUPT PROCESSING ROUTINES.