ASMB,R,B,L,T,C * NAM DVR47 ENT I.47,C.47 * * THIS DRIVER IS DESIGNED TO OPERATE THE DIGITAL MULTI- * FUNCTION METER / SCANNER SUBSYSTEM. * * THE STANDARD EQUIPMENT CONSISTS OF: * * 1. HP 3480-OPT 004 DVM * 2. HP 3484-OPT HO4,041,042,043 * 3. HP 2911A CROSSBAR SCANNER * 4. HP 2911B-OPT. 033 SCANNER CONTROL * 5. HP 02116-6123 CROSSBAR SCANNER I/O CARD * 6. HP 28037-60003 CONTROLLER MICROCIRCUIT CARD * 7. HP 28037-60004 DATA SOURCE INTERFACE CARD * * THE FORTRAN CALL TO DVR47 IS: * * CALL EXEC (1,IDRT,DATA,NUMB,IPROG,ISCAN) * * WHERE: IDRT = SUBSYSTEM LOGICAL UNIT NUMBER * DATA = USERS DATA BUFFER ADDRESS * NUMB = NUMBER OF READINGS (1 IF NOT DIGITIZE) * NOTE: THIS IS NOT THE # OF CPU WORDS! * IPROG= MULTIFUNCTION UNIT PROGRAM WORD * ISCAN= SCANNER PROGRAM WORD * * PROGRAM WORD: BITS MEANING * (IPROG) ---- ------- * * 15 DMA (OPTIONAL W/SAMPLE&HOLD) * * 14-12 NOT USED * * 11-9 EXTERNAL PACER: 0= NO * 1= YES * * 8-6 FILTER: 0= NO FILTER * 1= FILTER A * 2= FILTER B * * 5-3 FUNCTION: 0= DC * 1= AC(AC) * 2= OHMS * 3= AC(DC) * 4= SAMP/HOLD (NO DELAY) * 5= SAMP/HOLD (W/DELAY) * * 2-0 RANGE: 0= --- , 10 MOHM * 1= 1000V, 1 MOHM * 2= 100V, 100 KOHM * 3= 10V, 10 KOHM * 4= 1V, 1 KOHM * 5= 100MV, 100 OHM * * * * SCANNER PROGRAM: BITS MEANING * (ISCAN) ---- ------- * * 15 BLOCK SCAN ENABLE= 1 * * 14-12 DELAY: 0= 27MS * 1= 27MS * 2= 27MS * 3= 27MS * 4= 42MS * 5= 62MS * 6= 145MS * 7= 500MS * * 11-9 NOT USED * * 8-0 CHANNEL NUMBER (INTEGER) * * * THE FORTRAN CALL TO CLEAR ALL DVM PROGRAM LINES IS: * * CALL EXEC (1,IDRT,0) * * WHERE: IDRT = SUBSYSTEM LOGICAL UNIT NUMBER * * SKP * * INITITION SECTION * I.47 NOP LDB EQT6,I CHECK FOR CPB D1 READ REQUEST JMP SETIO OK- CONFIGURE I/O ERROR CLA,INA,RSS REJECT ERROR LDA D5 DMA NEEDED! CLB JMP I.47,I RETURN * SETIO INA IOR OTA FORM "OTA PGM" STA OTA1 STORE OUTPUT INSTRUCTION STA OTA6 XOR B1100 FORM "STC PGM,C" STA STCC1 STORE XOR B1200 FORM "LIA PGM" STA LIA1 STORE XOR B1400 FORM "CLF PGM" STA CLF1 STORE INA XOR B1000 FORM "STF SCAN" STA STF1 STORE XOR B700 FORM "OTA SCAN" STA OTA5 STORE XOR B5000 FORM "OTB SCAN,C" STA OTB1 STORE XOR B5000 FORM "STC SCAN" IOR B100 STA STC2 STORE * LDB EQT7,I CLEAR DVM SZB PROGRAM LINES ? JMP BUFR NO, CHECK BUFFER LENGTH CLA OTA6 OTA 0 CLEAR LINES LDA D4 SET IMMEDIATE COMPLETION CCB SET B REG. TO -1 JMP I.47,I RETURN * BUFR LDA EQT8,I GET NUMBER OF READINGS ADA DM1 SUBTRACT 1 SSA IS COUNT 1 OR GREATER ? JMP ERR02 NO, REJECT * LDA EQT10,I GET SCANNER PROGRAM ALF AND B7 ISOLATE DELAY STA B SAVE ADA DM3 SSA CODE <3 ? LDB B3 YES, SET DELAY= 27 MS ADA DM5 SSA,RSS CODE >7 ? JMP ERR02 YES, REJECT OTB1 OTB 0,C OUTPUT DELAY CODE * LDA EQT10,I GET SCANNER PROGRAM AND B7777 ISOLATE CHANNEL # CLB DIV D10 CONVERT STB WORD CLB TO DIV D10 ALF BCD ADA B ALF ADA WORD STF1 STF 0 ENABLE CHANNEL BITS OTA5 OTA 0 OUTPUT CHANNEL STC2 STC 0 ENCODE SCANNER * LDA EQT9,I GET PROGRAM WORD LDB DM6 JSB DECOD DECODE RANGE STB WORD SAVE LDA EQT9,I GET PROGRAM WORD ASR 3 LDB DM6 JSB DECOD DECODE FUNCTION BLF,BLS LDA WORD COMBINE: IOR B RANGE & FUNCTION CPB B1000 SAMPLE & HOLD DELAY ? IOR B400 YES, ADD DELAY BIT STA WORD SAVE AND B100 ISOLATE OHMS SZA OHMS ? JMP *+5 LDA EQT9,I NO,IS AND B7 RANGE 0 ? SZA,RSS JMP ERR02 YES, REJECT LDA EQT9,I GET PROGRAM WORD ASR 6 LDB DM3 JSB DECOD DECODE FILTER SZB,RSS FILTER PROGRAMMED ? JMP *+5 LDA WORD AND B240 YES, IS AC SZA JMP ERR02 YES, REJECT LDA B ASL 10 IOR WORD COMBINE: RANGE, FUNCTION, FILTER STA WORD SAVE SZB,RSS IF JMP *+6 SAMPLE & HOLD AND B400 PROGRAMMED SZA,RSS WITH JMP *+3 FILTER, ERR02 LDA D2 REJECT JMP ERROR+2 * CLA STA DMAFL CLEAR DMA FLAG LDA EQT9,I GET PROGRAM WORD ASR 9 LDB DM2 JSB DECOD DECODE PACER LDA WORD SZB,RSS PACER ? JMP *+6 AND B400 YES, IS SAMPLE/HOLD SZA,RSS PROGRAMMED ? JMP ERR02 NO, REJECT LDA B100K STA DMAFL SAVE ENCODE CONTROL CLB LDA EQT9,I GET DVM PROGRAM WORD AND B20 SZA,RSS OHMS? JMP COMB NO! LDA EQT9,I AND B300 SZA FILTER ? JMP COMB LDA EQT9,I AND B7 ADA DM2 SSA 1 OR 10 MOHM RANGE ? LDB B2000 YES, FORCE FILTER COMB LDA WORD IOR B FORCE FILTER BIT ? IOR DMAFL EXTERNAL ENCODE ? IOR B20K ADD HOLD BIT STA WORD SAVE PROGRAM WORD IOR B10K CLF1 CLF 0 PROG. ENCODE RESET OTA1 OTA 0 OUTPUT PROGRAM WORD LDA EQT8,I GET # OF READINGS CMA,INA STA EQT11,I NEG. READING COUNT INA,SZA,RSS WAS COUNT 1 ? JMP RTDMA YES, RETURN DMA CHAN. LDA WORD GET PROGRAM WORD AND B6340 DC, NO FILTER ? SZA JMP RTDMA NO, RETURN DMA CHAN. LDA EQT10,I GET SCANNER PROGRAM SSA BLOCK SCAN ? JMP RTDMA YES, RETURN DMA CHAN. LDA EQT9,I GET DVM PROGRAM WORD AND B40 SZA SAMPLE AND HOLD ? JMP *+4 NO! LDA EQT9,I YES, DMA REQUESTED ? SSA,RSS JMP RTDMA NO, RETURN DMA CHAN. JSB DMAA DMA ASSIGNED YET ? JMP ERROR+1 NO! * IOR OTA FORM "OTA DMA" STA OTA2 STORE ADA DM4 FORM "OTA DMA-4" STA OTA3 STORE STA OTA4 XOR B100 FORM "STC DMA-4" STA STC1 STORE XOR B4000 FORM "CLC DMA-4" STA CLC1 STORE * LDA EQT4,I INITIALIZE DMA AND B77 ISOLATE DSI CHAN. # IOR CW1 OTA2 OTA DMA OUTPUT CONTROL WORD 1 CLC1 CLC DMA-4 LDA EQT7,I GET FWA OF USER BUFFER IOR B100K OTA3 OTA DMA-4 OUTPUT CONTROL WORD 2 STC1 STC DMA-4 LDA EQT8,I GET NUMBER OF READINGS ADA A DOUBLE IT AND CMA,INA MAKE NEGITIVE OTA4 OTA DMA-4 OUTPUT CONTROL WORD 3 CLA,INA SET STA DMAFL DMA FLAG * BYDMA LDB DM1 SET B REG = -1 LDA EQT9,I GET PROGRAM WORD AND B30 ISOLATE AC(DC) CODE CPA B30 AC(DC) ? LDB DM5 YES, SET B REG = -5 LDA EQT9,I GET PROGRAM WORD AND B327 ISOLATE OHMS CODE CPA B120 10 MOHM, FIL A ? LDB DM10 YES, SET B REG = -10 CPA B220 10 MOHM, FIL B ? LDB DM20 YES, SET B REG = -20 STB EQT13,I ESTABLISH DELAY COUNTER * LDA DMAFL SAVE DMA RAR FLAG IN BIT 15 IOR EQT7,I GET BUFFER ADDRESS STA EQT12,I ESTABLISH WORKING POINTER LDA WORD STA EQT7,I SAVE PROGRAM WORD LDB CNTR1 SET TIME OUT COUNTER IN B REG. LIA1 LIA 0 TEST FOR SLA,RSS PROGRAM JMP LEAVE ACKNOWLEDGE FLAG ISZ B INCREMENT TIME JMP LIA1 OUT COUNTER LDA B3 SET A REG. = 3 JMP I.47,I ERROR RETURN * RTDMA JSB DMAA WAS A DMA CHAN ASSIGNED? JMP BYDMA NO! LDB INTBA YES! B=FWA INT TABLE SLA CH7 ? INB YES! B=FWA INT TABLE+1 CLA CLEAR STA B,I TABLE ENTRY STA DMAFL AND DMA FLAG JMP BYDMA * LEAVE CCA STA EQT9,I SET FIRST READING FLAG STCC1 STC 0,C ENABLE SCANNER FLAG CLA JMP I.47,I RETURN * DECOD NOP CONVERT CODE TO SINGLE LINE AND B7 ISOLATE CODE ADB A IS IT VALID ? SSB,RSS JMP ERR02 NO ,REJECT CLB SZA,RSS CODE = 0 ? JMP DECOD,I YES,RETURN CLB,INB SET B REG = 1 ADA DM1 SUBTRACT 1 FROM CODE SZA,RSS DONE ? JMP DECOD,I YES, B REG = SINGLE LINE CODE BLS JMP *-4 * DMAA NOP TO DETERMINE DMA STATUS DLD INTBA,I GET FWA'S OF EQT HOLDING DMA CPA EQT1 CH6 ASSIGNED ? LDA D6 YES! CPB EQT1 CH7 ASSIGNED ? LDA B7 YES! CPA D6 ADJUST RSS THE CPA B7 RETURN ISZ DMAA ADDRESS JMP DMAA,I & RETURN * * SKP * * COMPLETION SECTION * C.47 NOP CPA D6 EXIT JMP P.1+1 IF CPA B7 DMA JMP P.1+1 INTERRUPT IOR CLC STA *+1 CLEAR CONTROL CLC 0 ON INT SOURCE * LDB EQT1,I IS THIS A SZB SPURIOUS INTERRUPT ? JMP *+3 NO STB EQT15,I YES, PREVENT TIMEOUT JMP P.2 AND CONTINUE * LDA EQT4,I AND B77 ISOLATE DSI CHANNEL IOR CLC XOR B200 FORM "LIB DSI" STA LIB1 STORE XOR B4000 FORM "LIA DSI" STA LIA2 STORE XOR B1200 FORM "STC DSI,C" STA STCC4 STORE INA FORM "STC PGM,C" STA STCC5 STORE XOR B1100 FORM "OTA PROG" STA OTA7 STORE XOR B300 FORM "LIA PROG" STA LIA3 STORE INA XOR B200 FORM "STC SCAN" STA STC3 STORE * LDA EQT6,I GET INTERRUPT SOURCE FLAG SZA,RSS SCANNER INTERRUPT JMP *+4 NO! CLA STA EQT6,I CLEAR SCANNER INTERRUPT JMP STCC4 LDA EQT9,I SZA,RSS FIRST READING ? JMP *+3 NO! ISZ EQT13,I INCREMENT DELAY COUNTER JMP STCC4 MORE DELAY NEEDED! LDA EQT8,I GET # OF READINGS CPA D1 ONE ? JMP DATA YES! LDA EQT7,I GET PROGRAM WORD ASR 10 AND B3 SZA FILTER PROGRAMMED ? JMP DMACK YES! LDA EQT7,I GET PROGRAM WORD OTA7 OTA 0 REMOVE EXT. TRIG. DELAY LDB CNTR1 SET TIME OUT COUNTER LIA3 LIA 0 TEST FOR SLA,RSS PROGRAM JMP DMACK ACKNOWLEDGE ISZ B FLAG JMP LIA3 CLA,INA JMP C.47,I NO FLAG, REJECT * DMACK LDA EQT12,I SSA DMA FLAG SET ? JMP DMAON YES! CLA STA EQT9,I CLEAR FIRST READING FLAG DATA LDA EQT12,I GET CURRENT ELA,CLE,ERA STA POINT USER BUFFER ADDRESS LIA2 LIA 0 LOAD FIRST DATA WORD LIB1 LIB 0 LOAD SECOND DATA WORD DST POINT,I STORE READING ISZ EQT11,I ADVANCE READING COUNTER RSS JMP P.1 ALL DONE!!! * ISZ EQT12,I INCREMENT ISZ EQT12,I BUFFER ADDRESS LDA EQT10,I GET SCANNER PROGRAM WORD SSA,RSS BLOCK SCAN JMP STCC4 NO, START NEXT READING STC3 STC 0 YES ,ADVANCE CHANNEL STCC5 STC 0,C ENABLE SCANNER FLAG CLA,INA SET SCANNER STA EQT6,I INTERRUPT FLAG JMP P.2 WAIT * DMAON JSB DMAA CHECK DMA STATUS JMP ERROR+1 IOR CLC FORM "CLC DMA" STA CLC2 STORE XOR B5000 FORM "STC DMA,C" STA STCC2 STORE STCC2 STC DMA,C INITIATE DMA CLA SPECIAL CPA DUMMY PROCESSING REQUIRED ? JMP STCC4 NO, START MEASUREMENT CLC2 CLC DMA CLEAR DMA CONTROL LDB INTBA GET LDA CHAN INTERRUPT TABLE CPA B7 CONTENTS INB FOR THE LDA B,I DMA CHANNEL IOR B100K SET STA B,I BIT 15= 1 CLA STCC4 STC 0,C ENCODE DVM * P.2 CLA ISZ C.47 SET UP AND PERFORM JMP C.47,I CONTINUATION RETURN * P.1 CLA,RSS LDA B100K SET BIT 15= 1 LDB EQT8,I GET # OF READINGS ADB B DOUBLE IT JMP C.47,I COMPLETION RETURN SKP * * SYSTEM BASE PAGE COMMUNICATION AREA * . EQU 1650B EQT1 EQU .+8 EQT4 EQU .+11 EQT6 EQU .+13 EQT7 EQU .+14 EQT8 EQU .+15 EQT9 EQU .+16 EQT10 EQU .+17 EQT11 EQU .+18 .. EQU 1771B EQT12 EQU .. EQT13 EQU ..+1 EQT15 EQU ..+3 * CHAN EQU 1673B INTBA EQU 1654B DUMMY EQU 1737B * * SKP * * CONSTANTS, COUNTERS, AND STORAGE * A EQU 0 B EQU 1 B3 OCT 3 B7 OCT 7 B20 OCT 20 B30 OCT 30 B40 OCT 40 B77 OCT 77 B100 OCT 100 B120 OCT 120 B200 OCT 200 B220 OCT 220 B240 OCT 240 B300 OCT 300 B327 OCT 327 B400 OCT 400 B700 OCT 700 B1000 OCT 1000 B1100 OCT 1100 B1200 OCT 1200 B2000 OCT 2000 B1400 OCT 1400 B4000 OCT 4000 B5000 OCT 5000 B6340 OCT 6340 B7777 OCT 7777 B10K OCT 10000 B20K OCT 20000 B100K OCT 100000 CNTR1 DEC -250 CW1 OCT 120000 D1 DEC 1 D2 DEC 2 D4 DEC 4 D5 DEC 5 D6 DEC 6 D10 DEC 10 DM1 DEC -1 DM2 DEC -2 DM3 DEC -3 DM4 DEC -4 DM5 DEC -5 DM6 DEC -6 DM10 DEC -10 DM20 DEC -20 DMAFL NOP POINT NOP WORD NOP CLC CLC 0 OTA OTA 0 DMA EQU 6B * END