ASMB,Q,C NAM DVINT,2,10 92425-1X061 REV.2001 791130 * NAME: DVINT MAIN PROGRAM * SOURCE: 92425-18061 * RELOC: 92425-1X061 * PRGM: DICK LAMPMAN ************************************************************************* * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT * * THE PRIOR WRITTED CONSENT OF 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 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 LU64 DEC 0 LU65 DEC 0 LU66 DEC 0 LU67 DEC 0 LU68 DEC 0 LU69 DEC 0 LU70 DEC 0 LU71 DEC 0 LU72 DEC 0 LU73 DEC 0 LU74 DEC 0 LU75 DEC 0 LU76 DEC 0 LU77 DEC 0 LU78 DEC 0 LU79 DEC 0 LU80 DEC 0 LU81 DEC 0 LU82 DEC 0 LU83 DEC 0 LU84 DEC 0 LU85 DEC 0 LU86 DEC 0 LU87 DEC 0 LU88 DEC 0 LU89 DEC 0 LU90 DEC 0 LU91 DEC 0 LU92 DEC 0 LU93 DEC 0 LU94 DEC 0 LU95 DEC 0 LU96 DEC 0 LU97 DEC 0 LU98 DEC 0 LU99 DEC 0 LU100 DEC 0 LU101 DEC 0 LU102 DEC 0 LU103 DEC 0 LU104 DEC 0 LU105 DEC 0 LU106 DEC 0 LU107 DEC 0 LU108 DEC 0 LU109 DEC 0 LU110 DEC 0 LU111 DEC 0 LU112 DEC 0 LU113 DEC 0 LU114 DEC 0 LU115 DEC 0 LU116 DEC 0 LU117 DEC 0 LU118 DEC 0 LU119 DEC 0 LU120 DEC 0 LU121 DEC 0 LU122 DEC 0 LU123 DEC 0 LU124 DEC 0 LU125 DEC 0 LU126 DEC 0 LU127 DEC 0 LU128 DEC 0 LU129 DEC 0 LU130 DEC 0 LU131 DEC 0 LU132 DEC 0 LU133 DEC 0 LU134 DEC 0 LU135 DEC 0 LU136 DEC 0 LU137 DEC 0 LU138 DEC 0 LU139 DEC 0 LU140 DEC 0 LU141 DEC 0 LU142 DEC 0 LU143 DEC 0 LU144 DEC 0 LU145 DEC 0 LU146 DEC 0 LU147 DEC 0 LU148 DEC 0 LU149 DEC 0 LU150 DEC 0 LU151 DEC 0 LU152 DEC 0 LU153 DEC 0 LU154 DEC 0 LU155 DEC 0 LU156 DEC 0 LU157 DEC 0 LU158 DEC 0 LU159 DEC 0 LU160 DEC 0 LU161 DEC 0 LU162 DEC 0 LU163 DEC 0 LU164 DEC 0 LU165 DEC 0 LU166 DEC 0 LU167 DEC 0 LU168 DEC 0 LU169 DEC 0 LU170 DEC 0 LU171 DEC 0 LU172 DEC 0 LU173 DEC 0 LU174 DEC 0 LU175 DEC 0 LU176 DEC 0 LU177 DEC 0 LU178 DEC 0 LU179 DEC 0 LU180 DEC 0 LU181 DEC 0 LU182 DEC 0 LU183 DEC 0 LU184 DEC 0 LU185 DEC 0 LU186 DEC 0 LU187 DEC 0 LU188 DEC 0 LU189 DEC 0 LU190 DEC 0 LU191 DEC 0 LU192 DEC 0 LU193 DEC 0 LU194 DEC 0 LU195 DEC 0 LU196 DEC 0 LU197 DEC 0 LU198 DEC 0 LU199 DEC 0 LU200 DEC 0 LU201 DEC 0 LU202 DEC 0 LU203 DEC 0 LU204 DEC 0 LU205 DEC 0 LU206 DEC 0 LU207 DEC 0 LU208 DEC 0 LU209 DEC 0 LU210 DEC 0 LU211 DEC 0 LU212 DEC 0 LU213 DEC 0 LU214 DEC 0 LU215 DEC 0 LU216 DEC 0 LU217 DEC 0 LU218 DEC 0 LU219 DEC 0 LU220 DEC 0 LU221 DEC 0 LU222 DEC 0 LU223 DEC 0 LU224 DEC 0 LU225 DEC 0 LU226 DEC 0 LU227 DEC 0 LU228 DEC 0 LU229 DEC 0 LU230 DEC 0 LU231 DEC 0 LU232 DEC 0 LU233 DEC 0 LU234 DEC 0 LU235 DEC 0 LU236 DEC 0 LU237 DEC 0 LU238 DEC 0 LU239 DEC 0 LU240 DEC 0 LU241 DEC 0 LU242 DEC 0 LU243 DEC 0 LU244 DEC 0 LU245 DEC 0 LU246 DEC 0 LU247 DEC 0 LU248 DEC 0 LU249 DEC 0 LU250 DEC 0 LU251 DEC 0 LU252 DEC 0 LU253 DEC 0 LU254 DEC 0 LU255 DEC 0 END DVINT END$