ASMB,R,L NAM DVINT,2,10 09580-18125 REV.B 790111 * *--------------------------------------------------------------- * * SOURCE 09580-18125 * * REV.A 770511 * REV.B 790111 * * HP 92425A TEST SYSTEM SOFTWARE IS THE PROPRIETARY * MATERIAL OF THE HEWLETT-PACKARD COMPANY. USE AND * DISCLOSURE THEREOF ARE RESTRICTED BY WRITTEN AGREEMENT. * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1977. * ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM * MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED * TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR * WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. * *--------------------------------------------------------------- * ENT DVINT EXT EQLU,EXEC,LU2ST,TRPNT,RMPAR SPC 1 A EQU 0 B EQU 1 SKP * THIS IS A GENERAL PURPOSE INTERRUPT TRAP SETTING PROGRAM. IT * IS INTENDED TO BE USED BY ALL STATIONS SO ONLY ONE COPY IS NECESSARY. * IT SHOULD BE LOADED PERMANENTLY TO AVOID THE PROBLEM OF NOT HAVING AN * ID SEGMENT WHEN IT IS NEEDED. * * TO USE: * 1. BE SURE ALL INSTRUMENTS AND CRT'S HAVE BEEN DEFINED IN THE 'WELCOM' * FILE. THIS PROGRAM WILL NOT WORK OTHERWISE. IT WILL NOT SET TRAPS * FOR INSTRUMENTS DEFINED AS STATION '0'. * * 2. IN THE 'TABLE' SECTION OF THIS PROGRAM, REPLACE 'DEC 0' WITH THE * TRAP NUMBER YOU DESIRE TO SET IF THAT LU INTERRUPTS. LEAVE '0' * WHERE YOU DON'T EXPECT INTERRUPTS. THIS PROGRAM WILL DETERMINE * THE STATION THAT THE INTERRUPTING LU IS ON. * : * : * LU35 DEC 7 WILL SET TRAP 7 ON LU35'S STATION * * 3. COMPILE AND LOAD THE PROGRAM. * * FOR RTE II/III * * : * :RU,COMPL,,&DVINT,6,%DVINT * :LG,5 * :MR,%DVINT * :RU,LOADR,99,6,6 * * * FOR RTE IV * * : * :RU,ASMB,&DVINT,6,%DVINT * :RU,LOADR,,%DVINT,6,BGNCPE,SS * : * * 4. IN THOSE PROGRAMS WHICH NEED TO DETECT INSTRUMENT INTERRUPTS, CALL * SRQ (DVR37) OR DSCHD (DVM72) FOR EACH DEVICE THAT WILL POTENTIALLY * INTERRUPT. * 10 CALL SRQ(L1,16,"DVINT") * 20 CALL DSCHD(L2,3,"DVINT") * * 5. SET TRAP CALLS IN ACCORDANCE TO THE NUMBERS SET WITHIN THIS * PROGRAM. * * 6. AT THE END OF THE PROGRAM CLEAR THE INTERRUPT PROGRAM. * 9000 CALL SRQ(L1,17,0) * 9010 CALL DSCHD(L2,4,0) * * 7. AN ALTERNATE TO SETTING THE INTERRUPT PROGRAMS EACH TIME IS TO * WRITE A SMALL FORTRAN PROGRAM WHICH SETS UP THE INTERRUPT PROGRAM. * PUT THE PROGRAM IN THE 'WELCOM' FILE SO THAT IT RUNS AT BOOT-UP. * THIS MEANS THAT IF A INSTRUMENT INTERRUPTS UNEXPECTEDLY A TRAP * MIGHT BE SET, BUT, IF BASIC IS NOT RUNNING, THIS IS NOT A * PROBLEM. * * 8. IF YOU NEED FASTER RESPONSE TO AN INTERRUPT, THEN WRITE A SPECIAL * PROGRAM TO HANDLE IT FOR THE LU INVOLVED AND REMOVE THE TRAP * NUMBER FROM THE INTERNAL TABLE. SKP * * GET LU# OF INTERRUPTING DEVICE * DVINT NOP * * CALL RMPAR FOR DVR37 AND EQLU FOR DVM72 * STA AREG STORE A REGISTER STB BREG STORE B REGISTER JSB RMPAR CALL RMPAR TO GET EQT AND DEF *+2 SUBCHANNEL IF SCHEDULED DEF STAT FROM DVR37 LDA AREG RESTORE A REGISTER LDB BREG RESTORE B REGISTER JSB EQLU OBTAIN LU IN DEF *+1 STA LU YES, SAVE 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 EQT STORE IN EQT LDA SUBCH GET SUBCHANNEL AND ALF,ALF POSITON IT TO COMPARE WITH ALF,RAR EQT AND SUBCHANNEL WORD IN DRT. ADA EQT ADD IN EQT BITS STA EQT 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 EQT 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 EXIT THEN EXIT! * * GET STATION NUMBER * JSB LU2ST GET STATION NUMBER FROM LU DEF *+2 DEF LU SZA,RSS FOUND ONE? JMP EXIT NO, EXIT STA STN YES, SAVE STATION * * GET TRAP NUMBER FROM TABLE * LDA TABLE GET TABLE ADDRESS ADA LU ADD LU OFFSET LDA A,I GET TRAP NUMBER * * SET TRAP ON CORRECT STATION * LDB STN JSB TRPNT CALL TRAP SET ROUTINE NOP IGNORE ERRORS * * EXIT * EXIT JSB EXEC CALL SYSTEM TO TERMINATE DEF *+2 DEF .6 * * CONSTANTS AND VARIBLES * AREG NOP BREG NOP 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 .6 DEC 6 TABLE DEF * SKP * * TRAP TABLE LU1 DEC 0 LU2 DEC 0 LU3 DEC 0 LU4 DEC 0 LU5 DEC 0 LU6 DEC 0 LU7 DEC 0 LU8 DEC 0 LU9 DEC 0 LU10 DEC 0 LU11 DEC 0 LU12 DEC 0 LU13 DEC 0 LU14 DEC 0 LU15 DEC 0 LU16 DEC 0 LU17 DEC 0 LU18 DEC 0 LU19 DEC 0 LU20 DEC 0 LU21 DEC 0 LU22 DEC 0 LU23 DEC 0 LU24 DEC 0 LU25 DEC 0 LU26 DEC 0 LU27 DEC 0 LU28 DEC 0 LU29 DEC 0 LU30 DEC 0 LU31 DEC 0 LU32 DEC 0 LU33 DEC 0 LU34 DEC 0 LU35 DEC 0 LU36 DEC 0 LU37 DEC 0 LU38 DEC 0 LU39 DEC 0 LU40 DEC 0 LU41 DEC 0 LU42 DEC 0 LU43 DEC 0 LU44 DEC 0 LU45 DEC 0 LU46 DEC 0 LU47 DEC 0 LU48 DEC 0 LU49 DEC 0 LU50 DEC 0 LU51 DEC 0 LU52 DEC 0 LU53 DEC 0 LU54 DEC 0 LU55 DEC 0 LU56 DEC 0 LU57 DEC 0 LU58 DEC 0 LU59 DEC 0 LU60 DEC 0 LU61 DEC 0 LU62 DEC 0 LU63 DEC 0 END DVINT END$