ASMB,R,L,C,B HED EVENT SENSE INTERRUPT HANDLER FOR 6940 A-92413-16007-1 * * ALARM - EVENT SENSE INTERRUPT HANDLER FOR HP6940A * * SOURCE TAPE - 92413-18007 REV.B * RELOC. TAPE - 92413-16007 REV.B * * BY STEVE SCOVILL * ALARM IS SCHEDULED BY THE HP6940A RTE DRIVER DVR61 WHEN AN * EVENT SENSE INTERRUPT OCCURS. THE FIRST TWO PARAMETERS PASSED * TO ALARM BY THE DRIVER CONTAIN THE SLOT NUMBER AND CONTENTS OF * THE INTERRUPTING CARD. ALARM THEN DETERMINES IF ANY OF THE BIT * CHANGES ARE CONNECTED TO PROGRAMS. IF SO, THE CORRESPONDING * PROGRAM IS SCHEDULED AND PASSED THE FOLLOWING PARAMETERS: THE LOG- * ICAL CHANNEL THAT INTERRUPTED, THE DATA FROM THAT CHANNEL, AND * WHICH BIT CAUSED THE INTERRUPT. IF AN ERROR OCCURS * THE ERROR IS PRINTED AS "ALARM ERR XXNN", WHERE XX IS THE RTE ERROR * TYPE AND NN IS THE NUMBER. * NAM ALARM,1,2 92413-16007B 19SEP75 ENT ALARM EXT EXEC,$LIBX,$LIBR,&6940,TRPNT SUP * ALARM NOP STB HOLD1 SAVE PARAMETER ADDRESS DLD HOLD1,I GET SLOT AND DATA DST SLOT SAVE THEM LDB HOLD1 GET ADDR BACK JSB EFF GET EFFECTIVE ADDR ADB .4 MOVE TO OBTAIN ADDR OF 5TH PARAMETER LDA 1,I AND GET IO SLOT AND M77 MASK OUT UPPER BITS STA IOSLT SAVE IT * * * FIND RIGHT 6940 * LDB TOP GET BASE PAGE LINK JSB EFF GET EFFECTIVE ADDR STB .6940 AND SAVE IT LDB .6940,I GET MINUS # OF CHANS IN 2313 * (B) CONTAINS THE ACCUMULATED CHANNEL COUNT (MINUS) AGAIN ISZ .6940 UNIT TABLE LDA .6940,I TO FIND SELECT SSA CODE ADDR * * IF THE FOLLOWING ERROR HAPPENS * ITS PROBABLY DUE TO A CONFIGURATION PROBLEM * JMP ERR2 ERROR INA GET THE LDA 0,I I/O SLOT FROM CPA IOSLT THE TABLE AND CHECK JMP *+4 IF THE SAME, CONTINUE LDA .6940,I IF NOT, ACCUMULATE THE ADB 0,I CHANNEL COUNT JMP AGAIN AND TRY SOME MORE * * (B) CONTAINS THE MINUS OF THE CHANNEL COUNT TO THIS POINT * CMB,INB MAKE CHANNEL COUNT INB POSITIVE AND ADD 1 STB #CHAN SAVE FOR LATER * * FETCH PARAMETERS * DLD SLOT LOAD SLOT & INPUT WRD STB IDATA SAVE INPUT ASL 12 SHIFT SLOT STA SLOTA AND SAVE LDA SLOT ADD SLOT ADA #CHAN TO THE STA #CHAN ACCUMULATED CHANNEL COUNT * * CHECK TO DETERMINE IF EVENT SENSE * OR DIGITAL INPUT CARD * LDB .6940,I GET TOP OF ADB .2 UNIT TABLE, ADD LDA 1,I TWO AND SAVE STA LU LU * CLA STA NAM1 * INB BUMP POINTER AND LDA 1,I GET # OF EVENT CARDS CMA,INA MAKE NEG STA MEVNT SAVE MINUS NUMBER OF EVENT CARDS ADA SLOT ADD SLOT SSA EVENT OR DIG? JMP EVENT CMA,INA ADB .2 BUMP PTR TO # DIG IN ADA 1,I (A)= #EVENT+#DIGIN-SLOT SZA,RSS JMP CANCL SSA,RSS DIG INPUT? JMP DIGIN JMP CANCL CANCL INTERRUPT SKP * * EVENT * EVENT ADA 1,I ADD BACK #EVENT INB BUMP PTR TO EVENT BUFF LDB 1,I GET BUFFER POINTER STB HOLD2 SAVE FOR LATER INB ADB 0 FIND DATA ADDR & STB PATRN SAVE (STATUS WORD ADDR) CLB * A REG CONTAINS SLOT MPY .12 FIND BIT/PROG ADA HOLD2,I ENTRY INA IN TABLE STA TABLE AND SAVE RETRY JSB SCTBL UPDATE BIT/PROG TABLE * JSB EXEC READ DEF *+6 AND DEF .1 RESET DEF LU INTERRUPTING DEF POLBF EVENT DEF .6 SENSE DEF .7 CARD LDA DATA GET DATA SSA IF ANY TRANSFERRED JMP RETRY TRY AGAIN * EXIT LDA LU MAKE XOR =B2100 LU EQUAL STA LU LU + 2000B * JSB EXEC SET DEF *+3 SENSE DEF .3 MODE DEF LU BIT * * EXIT2 JSB EXEC TERMINATE DEF *+2 DEF .6 * SKP * * SCTBL SCANS THE BIT/TRAP TABLE AND CALLS THE TRAP PROCESSER WHEN * AN EVENT HAS OCCURED * SCTBL NOP JSB $LIBR TURN OFF INTERRUPTS NOP LDA DATA GET THE OLD LDB PATRN,I AND NEW DATA STA PATRN,I SAVE THE NEW JSB $LIBX TURN ON INTERRUPTS DEF *+1 DEF *+1 XOR 1 FIND BIT CHANGES AND =B7777 IF NO CHANGES SZA,RSS FROM PREVIOUS PATTERN JMP SCTBL,I RETURN LDB M12 INITIALIZE STB CNTR BIT COUNTER CLB STB BITNO CLEAR BIT NUMBER LDB TABLE FETCH ADDRESS OF BIT/PROG STB PNTR TABLE AND USE AS INDEX LDB 0 PUT BIT CHANGES IN "B" NXTBT CLA MOVE NEXT BIT ASR 1 INTO "A" XOR PNTR,I UPDATE BIT/PROG ENTRY CPA PNTR,I IF NO CHANGE SKIP JMP CONT UPDATE OF TABLE JSB $LIBR *************************** NOP TURN OFF INTERRUPT SYSTEM STA PNTR,I TO UPDATE TABLE JSB $LIBX TURN INTERRUPT SYSTEM DEF *+1 BACK ON DEF *+1 *************************** SSA,RSS IF NEW STATUS IS 1 (EVENT) JMP CONT SET TRAP, ELSE CONTINUE ELA,CLE,ERA SET SIGN BIT TO ZERO STB SAV.B SAVE STATUS WORD SZA,RSS IF NO TRAP NUMBER SKIP JMP CONT SCHEDULE CALL JSB SKED CONT. LDB SAV.B RESTORE DATA WORD CONT ISZ PNTR BUMP TABLE POINTER ISZ BITNO ISZ CNTR LAST BIT? JMP NXTBT NO, GO TO NEXT BIT JMP SCTBL,I SKP * * SCHEDULE PROGRAM * SKED NOP STA NAM1 * * IF FIRST CHAR = 0, THEN BASIC TRAP NUMBER * AND UPMSK CHECK IF SZA,RSS A BASIC JMP BASIC TRAP NUMBER * JSB EXEC SCHEDULE DEF *+6 THE DEF B1011 PROGRAM DEF NAM1 DEF #CHAN AND PASS IT THE CHANNEL NO, DEF DATA DATA, DEF BITNO AND WHICH BIT PARAMETERS JMP WRITE ERROR RETURN JMP SKED,I * * BASIC * BASIC LDA NAM1 GET THE TRAP NUMBER JSB TRPNT AND CALL THE NOP BASIC TRAP ROUNTINE JMP CONT. ANY MORE? * * DIGIN * DIGIN LDA 1,I SZA JMP DIG1 CHECK FOR ZERO DIG INPUT CANCL LDA =B170140 JMP DEACT DIG1 INB BUMP B TO DIGIN LDA MEVNT GET MINUS NUMBER OF EVENT ADA SLOT ADD THE SLOT NUMBER ADA 1,I GET THE PROGRAM ADDRESS LDA 0,I GET THE PROG ENTRY * * CHECK TO SEE IF BIT/PROG SET * ELA,CLE,ERA STRIP OFF BIT 15 SZA,RSS IF ENTRY IS ZERO, JMP CANCL IGNORE INTERRUPT STA NAM1 ELSE, SAVE NAME CLB CLEAR BIT NUMBER STB BITNO LDA =B170240 SKP * * DEACTIVATE INPUT CARD * DEACT STA BUFF LDA SLOTA PUT SLOT INTO STA BUFF+1 THE BUFFER JSB EXEC DEF *+6 DEF .2 WRITE A DEF LU WORD TO DEF BUFF THE INPUT DEF .2 CARD TO DEF .0 DEACTIVATE IT * AND =B204 SZA,RSS CHECK FOR BAD STATUS BITS SZB,RSS OR ZERO XMISSION LOG JMP ERR2 GIVE ERROR 2 * LDA NAM1 PROGRAM TO SZA BE SCHEDULED? JSB SKED YES JMP EXIT RETURN * * ERRORS * EMES2 ASC 2,MP02 * ERR2 DLD EMES2 * WRITE DST ERRBF JSB EXEC WRITE THE DEF *+5 ERROR MESSAGE DEF .2 TO THE DEF .1 CRT DEF ERRB DEF .7 * LDA ERRBF IF ERROR WAS CPA EMES2 ERROR TWO JMP EXIT2 DON'T RESET THE SENSE MODE JMP EXIT NORMAL EXIT * * INPUT BUFFER * POLBF OCT 170640 THESE 6 WORDS FORM .1 DEC 1 THE POLE TO SLOTA NOP FIRST HIT BUFFER. .M1 DEC -1 THIS BUFFER CAUSES THE NOP INTERRUPTING CARD TO BE IDATA NOP READ AND ENABLED SKP * * THIS ROUNTINE GETS THE EFFECTIVE ADDR * EFF NOP SSB,RSS CHECK FOR INDIRECT JMP EFF,I ITS THE TRUE ADDR, RETURN ELB,CLE,ERB STRIP OF INDIRECT BIT LDB 1,I GET ADDR JMP *-4 TRY AGAIN * * CONSTANTS AND OTHER THINGS * .0 NOP .2 DEC 2 .3 DEC 3 .4 DEC 4 .6 DEC 6 .7 DEC 7 .12 DEC 12 M12 DEC -12 M77 OCT 77 B1011 OCT 100011 UPMSK OCT 177400 TOP DEF &6940 * NAM1 ASC 3,XXXXX ERRB ASC 5,ALARM ERR ERRBF BSS 2 * * TEMP STORAGE * .6940 NOP BITNO NOP TABLE NOP SAV.B NOP PATRN NOP PNTR NOP CNTR NOP SLOT NOP DATA NOP LU NOP #CHAN NOP IOSLT NOP MEVNT NOP * * WHAT'S EQU TO WHAT * HOLD1 EQU LU HOLD2 EQU IOSLT BUFF EQU ERRBF END ALARM