ASMB,L
      HED SERCH -- 09611-16015 A  SUBROUTINES OF T6940
* 
*     * * *  S E R C H  -- SYSTEM LIST SEARCH AND MODIFY  * * * 
* 
*     SOURCE TAPE:        09611-18015  REV A
*     BINARY RELOC TAPE:  09611-16015  REV A
*     MANUAL:             O9611-90010  JUNE, 1975 
*     AUTHOR:  JULIA A. CATES 
* 
*     NAM:  SERCH 
*     ENTRY POINTS:  SERCH, LUCHK, DSRCH
* 
*   "SERCH" SEARCHES THROUGH THE SYSTEM LIST TO SEE IF
*   "SENSE" IS SYSTEM RESIDENT.  IF "SENSE" IS NOT FOUND, 
*   MODE <= 1, AND THE VERIFICATION PROGRAM WILL NOT
*   OPERATE IN THE SENSE MODE.  IF "SENSE" IS FOUND,
*   "SERCH" LOOKS FOR THE ID SEGMENT ADDRESS OF THE 
*   USER'S ALARM--INTERRUPT HANDLING PROGRAM.  "SERCH"
*   WILL SAVE ITS ADDRESS, SO THAT "DSRCH" MAY REPLACE
*   IT IN THE DRIVER'S TABLE AT THE COMPLETION OF "T6940".
*   "SERCH" STORES THE ID SEGMENT ADDRESS OF "SENSE" IN THE 
*   DRIVER'S TABLE, SO THAT THE DRIVER WILL SCHEDULE "SENSE"
*   TO PROCESS EVENT SENSE INTERRUPTS.
* 
      NAM SERCH,7   09611-16015 A  75161  SUBR OF T6940 
      ENT SERCH,LUCHK,DSRCH 
      EXT EXEC,.DIO.,.IOI.,.DTA.,$LIBR,$LIBX,.ENTR
      SUP 
* 
* 
MPLU  NOP     MULTIPROGRAMMER LOGICAL UNIT #
TTYLU NOP     OUTPUT LIST DEVICE - USED FOR MESSAGES. 
SCODE NOP     I/O SLOT NUMBER OF THE 6940.
DVRNO NOP     SPECIFIES DRIVER 61 OR DRIVER 72
MODE  NOP     MODE:  0 - SENSE IS CONFIGURED IN DRIVER. 
*                    1 - NO SENSE PROGRAM FOUND.
*                   -1 - INTERRUPT TABLE ENTRY IS 0.
* 
SERCH NOP       POINT OF ENTRY. 
      JSB .ENTR       RETRIEVE PARAMETERS.
      DEF MPLU
      CLA 
      STA MODE,I
      ADA TTYLU,I 
      STA ICNWD 
* 
*   SERCH CHECKS THAT THE INTERRUPT TABLE HAS A POSITIVE
*   ENTRY - THE ADDRESS OF THE 6940 DRIVER EQT TABLE. 
* 
ITABL LDA INTBA       FIND THE LOCATION OF THE INTERRUPT
      ADA SCODE,I     TABLE ENTRY FOR THE 6940. 
      ADA MIN6
      STA INTBL 
      LDA INTBL,I  IS AN ALARM PROGRAM OR DRIVER ADDRESS PRESENT? 
      STA ICNTN 
      CMA,INA 
      SSA,RSS 
      JMP EMPTY       NO ALARM PROGRAM OR DRIVER ADDRESS. 
      SKP 
* 
*  "SERCH" LOOKS THROUGH THE KEYWORD BLOCK FOR THE ID 
*  SEGMENT ADDRESS OF "SENSE".
KWORD LDA KEYWD      FIRST WORD ADDRESS OF KEYWORD TABLE
      STA KYTBL 
NXTID LDB KYTBL,I    ADDRESS OF NEXT ID SEGMENT 
STABL STB IDADR 
      SZB,RSS        AT END OF KEYWORD BLOCK? 
      JMP NOSNS      YES, NO SENSE PROGRAM FOUND. 
      ADB .12        NO, CHECK NEXT PROGRAM NAME. 
      STB NAME       ADDRESS OF PROGRAM NAME IN ID SEGMENT
      LDA NAME,I
      CPA ASCSE 
      RSS 
      JMP NEXT    IS
      ISZ NAME
      LDA NAME,I    THE 
      CPA ASCNS 
      RSS              PROGRAM
      JMP NEXT
      ISZ NAME           NAME 
      LDA NAME,I
      AND MASK             "SENSE"? 
      CPA ASCE
      JMP FOUND 
NEXT  ISZ KYTBL 
      JMP NXTID 
* 
*   SERCH HAS FOUND THE ID SEGMENT ADDRESS OF "SENSE".
*   SERCH NEXT LOOKS FOR THE ID SEGMENT ADDRESS OF THE
*   USER'S INTERRUPT HANDLING PROGRAM ("ALARM") IN THE
*   6940 DRIVER'S EQT TABLE.
* 
FOUND LDA MPLU,I
      ADA MIN1
      ADA DRT         FROM THE DEVICE REFERENCE TABLE 
      LDA A,I                 FIND THE EQT #. 
      AND MSK77 
      ADA MIN1
      LDB A       \ 
      ALF          \  THESE INSTRUCTIONS MULTIPLY 
      CMB,INB      /       THE EQT # BY 15. 
      ADB A       / 
      ADB EQTA
      STB EQTBL 
      ADB .12        FIND THE 13TH ENTRY OF THE EQT TABLE.
      LDA DVRNO,I 
      AND RCOD2      IS THE DRIVER # 61 OR 72?
      SZA 
DVR72 LDB B,I        DRIVER 72: ALARM ADDR IS IN DRIVER'S TABLE 
STORE STB LOCAT      DRIVER 61: ALARM ADDR IS IN EQT ENTRY 13 
      LDA LOCAT,I 
      STA CNTNT 
      SKP 
* 
*   SERCH PLACES THE ID SEGMENT ADDRESS OF "SENSE" IN THE 
*   6940 DRIVER'S TABLE.
* 
RPLAC JSB $LIBR 
      NOP 
      LDA IDADR 
      STA LOCAT,I 
      JSB $LIBX 
      DEF *+1 
      DEF *+1 
DSPLY CLA 
      ADA ICNWD 
      CLB 
      JSB .DIO. 
      DEF TEXTA 
      DEF RTRN1 
      LDA CNTNT     THE ID SEGMENT ADDRESS OF ALARM IS ...
      JSB .IOI. 
      LDA LOCAT     THE ADDRESS IS STORED AT ...
      JSB .IOI. 
      JSB .DTA. 
RTRN1 JMP SERCH,I 
* 
NOSNS CLA,INA      NO SENSE PROGRAM FOUND.
      STA MODE,I   MODE <= 1
RTRN2 JMP SERCH,I 
* 
      SKP 
* 
* 
*    CONSTANTS AND VARIABLES. 
* 
INTBA EQU 1654B  FWA OF INTERRUPT TABLE.
DRT   EQU 1652B  ADDRESS OF DEVICE REFERENCE TABLE
EQTA  EQU 1650B  ADDRESS OF EQUIPMENT TABLE 
KEYWD EQU 1657B  FWA OF KEYWORD BLOCK.
A     EQU 0 
B     EQU 1 
ICNTN NOP        STORAGE FOR INTERRUPT TABLE CONTENTS.
CNTNT NOP        CONTENTS OF THE 13TH ENTRY OF THE 6940 
*                  EQT TABLE. 
LOCAT NOP        STORAGE LOCATION OF THE ID SEGMENT 
*                  ADDRESS OF THE USER'S ALARM PROGRAM. 
EQTBL NOP        LOCATION OF EQT TABLE FOR THE 6940 
ICNWD NOP        CONTROL INFORMATION WORD FOR EXEC CALLS. 
INTBL NOP        LOCATION OF INTERRUPT TABLE ENTRY. 
EQT13 NOP        THE 13TH ENTRY OF THE 6940 EQT TABLE.
KYTBL NOP        LOCATION OF KEYWORD BLOCK. 
IDADR NOP        SENSE'S ID SEGMENT ADDRESS 
ASCSE ASC 1,SE
ASCNS ASC 1,NS
ASCE  OCT 42400 
NAME  NOP 
RCOD2 OCT 2 
.12   DEC 12
MIN1  OCT -1
MIN6  OCT -6
MSK77 OCT 77
MASK  OCT 77400 
      SKP 
* 
*    PRINT STATEMENTS.
* 
* 
TEXTA ASC 21,(" THE ID SEGMENT ADDRESS OF ALARM IS "@6
      ASC 16,/" THE ADDRESS IS STORED AT "@6) 
* 
* 
EMPTY JSB EXEC
      DEF *+5      THE INTERRUPT TABLE ENTRY FOR THE
      DEF RCOD2       6940 IS ZERO OR NEGATIVE!  BAD NEWS!
      DEF ICNWD 
      DEF TEXTB 
      DEF TXTBL 
      JSB EXEC
      DEF *+5 
      DEF RCOD2 
      DEF ICNWD 
      DEF TEXTC 
      DEF TXTCL 
      CCA          MODE = -1, -> INDICATES AN ERROR 
      STA MODE,I    IN THE INTERRUPT TABLE. 
RTRN3 JMP SERCH,I 
* 
TEXTB ASC 15, ERROR!  6940 INTERRRUPT TABLE 
TEXTC ASC 18, ENTRY IS NOT DRIVER'S EQT ADDRESS.
TXTBL DEC 15
TXTCL DEC 18
* 
      SKP 
* 
* 
* 
* 
*   * * *  L U C H K - MAXIMUM LU RETRIEVER * * * 
* 
* 
MAXLU NOP 
* 
LUCHK NOP 
      JSB .ENTR 
      DEF MAXLU    LOOK ON BASE PAGE TO FIND OUT THE
      LDA LUMAX    MAXIMUM LU # IN THE SYSTEM.
      STA MAXLU,I 
      JMP LUCHK,I 
* 
LUMAX EQU 1653B 
      SKP 
* 
*     * * *  D S R C H  * * * 
* 
* 
*  "DSRCH" RESTORES THE ID SEGMENT ADDRESS OF THE USER'S
*  ALARM - INTERRRUPT PROCESSING PROGRAM TO THE DRIVER'S
*  TABLE. 
* 
* 
DSRCH NOP        STARTING POINT . . . 
RSTOR JSB $LIBR 
      NOP 
      LDA CNTNT 
      STA LOCAT,I 
*  THE FOLLOWING CODE CLEARS THE T6940 ID SEGMENT'S 
*  TIME VALUES. 
      LDB XEQT     GET THE ID SEGMENT ADDRESS OF T6940
      ADB D17      GOTO WORD 18 (RES/T/MULT)
      LDA B,I      GET CONTENTS 
      AND TBIT     ISOLATE TIME BIT 
      SZA,RSS      IS PROGRAM IN THE TIME LIST? 
      STA B,I      CLEAR RESOLUTION CODE AND MULTIPLE 
EXIT  JSB $LIBX 
      DEF DSRCH,I 
* 
XEQT  EQU 1717B 
D17   DEC 17
TBIT  OCT 10000 
* 
      END 
      END$
                    