ASMB,R,Q
      NAM DVSTS,2,10  09580-16442 REV.2013 800128 
* 
*---------------------------------------------------------------
* 
*     SOURCE     09580-18442
* 
* 
*     HP 92425B TEST SYSTEM SOFTWARE IS THE PROPRIETARY 
*     MATERIAL OF THE HEWLETT-PACKARD COMPANY.  USE AND 
*     DISCLOSURE THEREOF ARE RESTRICTED BY WRITTEN AGREEMENT. 
* 
* 
*---------------------------------------------------------------
* 
*     THIS PROGRAM IS TO BE SCHEDULED BY DVR37. 
*     THE STATUS IS STORED, AND THEN DVINT IS SCHEDULED TO
*     SET THE TRAP. 
*     A BASIC PROGRAM MAY RETRIEVE THE STATUS BY USING SUBROUTINE 
*     &STGET, 09580-18443.
* 
*   *** WARNING - SPECIAL "ISN" SUPPLIED FOR "TIM". *** 
* 
* 
*---------------------------------------------------------------
* 
*     CONFIGURATION TABLE ENTRY EXAMPLE 
* 
*      R 67,1,64
*      *
*      U1                   UNIT 1 (ONLY 1 UNIT EVER!!!!) 
*      *
*        0                  LU0 STATUS STORAGE
*        0                  LU1 STATUS STORAGE
*        0                  LU2 STATUS STORAGE
*        "                   "    "       " 
*        "                   "    "       " 
* 
*        "                   "    "       " 
*        0                  LU63 STATUS STORAGE 
* 
*---------------------------------------------------------------
* 
*    LOAD AND USE THIS PROGRAM AS PER "DVINT".  INCLUDE THE BASIC 
*    CALL "STGET" IN THE TRAP HANDLING ROUTINE. 
* 
*---------------------------------------------------------------
* 
*   TO LOAD:
* 
*          :RU,LOADR,,%DVSTS,LIST LU,BGNCPE,SS
* 
*---------------------------------------------------------------
      ENT DVSTS,ISN 
      EXT EQLU,EXEC,LU2ST,TIM,RMPAR,REIO
      SPC 1 
A     EQU 0 
B     EQU 1 
      SKP 
*     GET LU# OF INTERRUPTING DEVICE. 
DVSTS NOP 
* 
*     CALL RMPAR TO SCHEDULING PARAMETERS FROM DVR37. 
* 
      JSB RMPAR     CALL RMPAR TO GET EQT AND 
      DEF *+2         SUBCHANNEL IF SCHEDULED 
      DEF STAT        FROM DVR37
* 
      CLA           PRESET LU VALUE TO ZERO.
      STA LU
* 
* 
*     CONVERT EQT AND SUBCHANNEL TO AN LU 
* 
      CLB           CLEAR A REG FOR A DIVIDE
      LDA 1650B     GET FIRST WORD ADDRESS OF EQT TABLE 
      CMA,INA       NEGATE ADDRESS
      ADA EQT       GET DIFFERENCE IN ADDRESSES 
      DIV =D15      DIVIDE BY EQT SIZE
      INA           ADD ONE TO EQT NUMBER 
      STA ENS       STORE IN EQT
      LDA SUBCH     GET SUBCHANNEL AND
      ALF,ALF         POSITON IT TO COMPARE WITH
      ALF,RAR         EQT AND SUBCHANNEL WORD IN DRT. 
      ADA ENS       ADD IN EQT BITS 
      STA ENS       SAVE FOR COMPARISON 
      SZA,RSS       IF BOTH EQT AND SUBCHANNEL = 0, 
      JMP TEST        THEN NOT SCHEDULED BY DVR37 
* 
*  GET LU FROM DEVICE REFERENCE TABLE (DRT) 
* 
      LDA 1653B     GET THE DRT TABLE LENGTH
      CMA,INA       NEGATE
      STA LUMAX      AND SAVE IT
      LDA 1652B     GET FIRST WORD ADDRESS OF DRT 
      STA DRT       STORE ADDRESS OF DRT
      CLB,INB       B REGISTER HAS CURRENT LU IN IT 
* 
LOOP  LDA DRT,I     GET THE NEXT DRT ENTRY
      AND =B174077  MASK FOR EQT AND SUBCHANNEL 
      CPA ENS         EQT AND SUBCHANNEL MATCH? 
      JMP GOTIT         YES, GO SAVE LU!
      ISZ DRT         NO, INCREMENT LU POINTER
      INB           INCREMENT LU COUNTER
      ISZ LUMAX     INCREMENT LOOP COUNTER
      JMP LOOP      LOOP AGAIN
      JMP TEST      NO MATCH, ILLEGAL EQT AND SUBCHANNEL
      SPC 1 
GOTIT STB LU        FOUND LU, STORE IT
TEST  LDA LU        TEST IF ANY LU FOUND
      SZA,RSS       IF LU IS 0
      JMP ERXIT       THEN OUTPUT ERROR MESSAGE, THEN EXIT. 
* 
*     GET STATION NUMBER
* 
      JSB LU2ST     GET STATION NUMBER FROM LU
      DEF *+2 
      DEF LU
      LDB .1
      STB STN        PRESET STATION NUMBER
      SZA,RSS       FOUND ONE?
      JMP ERXIT      NO, EXIT 
      STA STN        YES, SAVE STATION
* 
*     READ STATUS TABLE.
* 
      JSB TIM 
      DEF *+7 
      DEF IDTN      DEVICE TYPE NUMBER FOR STATUS NUMBER. 
      DEF .1        ALWAYS UNIT 1.
      DEF .1        INDICATE THAT THIS IS A READ. 
      DEF LU1       POINT TO START OF BUFFER. 
      DEF TBMAX     LENGTH OF BUFFER. 
      DEF IERR
* 
      LDA IERR
      SZA           CHECK FOR ERROR AND EXIT IF ERROR.
      JMP ERXIT 
* 
      LDA TABLE     PUT STATUS INTO TABLE.
      ADA LU
      LDB STAT
      STB 0,I 
* 
      JSB TIM       STORE STATUS TABLE WITH NEW ENTRY.
      DEF *+7 
      DEF IDTN
      DEF .1
      DEF .2        INDICATE THAT THIS IS A WRITE.
      DEF LU1 
      DEF TBMAX 
      DEF IERR
* 
      LDA IERR
      SZA           CHECK FOR ERROR AND EXIT IF ERROR.
      JMP ERXIT 
* 
      JSB EXEC      SCHEDULE DVINT IN QUEUE AND NO WAIT.
      DEF *+6 
      DEF .23 
      DEF IDVNT 
      DEF STAT      PASS THE THREE PARAMETERS FROM DVR37
      DEF SUBCH      AS THE SCHEDULING PARAMETERS FOR DVINT.
      DEF EQT 
      JMP EXIT
* 
*     ERROR EXIT
* 
ERXIT JSB REIO
      DEF *+5 
      DEF .2
      DEF STN 
      DEF ERMES 
      DEF ERMLN 
* 
*    NORMAL EXIT
* 
EXIT  JSB EXEC        CALL SYSTEM TO TERMINATE
      DEF *+2 
      DEF .6
* 
* 
*     SPECIAL "ISN" FOR TIM 
*     *** CAUTION *** 
* 
ISN   NOP 
      LDA STN 
      LDB ISN,I 
      JMP B,I 
* 
*     CONSTANTS AND VARIABLES 
* 
LU    NOP 
LUMAX NOP           MAXIMUM NUMBER OF LU'S
DRT   NOP           ADRESS OF THE DRT TABLE 
* 
STAT  NOP           STATUS WRD FROM RMPAR  -
SUBCH NOP           SUBCHANNEL FROM RMPAR   \ THESE MUST BE 
EQT   NOP           EQT NUMBER FROM RMPAR   / IN ORDER
SPARE BSS 2         NOT USED.  FROM RMPAR  -
* 
STN   BSS 1 
ENS   BSS 1 
IERR  BSS 1 
* 
.1    DEC 1 
.2    DEC 2 
.6    DEC 6 
.23   DEC 23
* 
IDVNT ASC 3,DVINT 
ERMLN DEC 6 
ERMES ASC 6,DVSTS ERROR 
IDTN  DEC 67       DEVICE TYPE FOR STATUS TABLE.
* 
TABLE DEF * 
LU1   BSS 64         FIRST WORD OF STATUS TABLE BUFFER
TBMAX DEC 64         LENGTH OF STATUS TABLE BUFFER. 
      END DVSTS 
      END$
                                                                                                                                                                                                                                                    