File: DV.TK of Tape: Sources/Multi8/multi8-1
(Source file text)
/DV.TK 22-SEP-80 /THIS TASK CAN BE CALLED BY A GIANT IOT (20). /IT HANDLES THE SETTING AND READING OF THE /HP 5326B TIMER-COUNTER-DVM / /CALLING SEQUENCE: / / TAD (20 / 6770 / JMP .+4 / COMMAND / ARG1 / ARG2 / ........ / /COMMAND: 0000 START MEASUREMENT WITH FUNCTION IN ARG1 IF ARG1.NE.0 / 0001 WAIT TILL READY AND READ RESULT INTO ARG1,ARG2 / 0002 READ FUNCTION INTO ARG1 / 0003 MAINTENANCE READ -123456 / /VALUE RETURNED TO COMMAND: / / 0000 MEASUREMENT OK / 0001 ERROR / TCEI=DVM+6010 /INTENA ON AC11 TCSD=DVM+6011 /SKIP ON DONE FLAG TCSE=DVM+6012 /SKIP ON ERROR FLAG TCCL=DVM+6013 /CLEAR FLAGS AND MODE TCME=DVM+6014 /SET TC MODE AND START TCRB=DVM+6015 /READ OUTPUT (TWICE) TCSF=DVM+6016 /SET FUNCTION TCRF=DVM+6017 /READ FUNCTION *0 CDF 10 /GIGATB IS IN FIELD 1 GIGATB+20 "D^100+"V&3777 *200 DVNAME, "D^100+"V&3777 /TASK NAME IS "DVM" 201 /ONE PAGE IS SUFFICIENT, CONNECTED CDVM, DVMHP DVMINT /EVENT DVMHP GOES TO DVMINT DVSTAT, 0 DV, DCA DVSTAT SZL /CLOSE ? JMP DVCLOS /YES TAD DVSTAT TAD (UASEM-1 /FIND FREE UASEM ENTRY DCA ZTEM1 DVUALP, ISZ ZTEM1 TAD I ZTEM1 /SEARCH SNA /IS IT FREE ? JMP DVUAFR /YES CIA TAD DVNAME /IS IT MY NAME ? SZA CLA JMP DVUALP /NO, SEARCH DVUAFR, TAD DVNAME DCA I ZTEM1 /STORE NAME AC0003 TAD DVSTAT /ADDRESS OF UPC DCA DVUPC AC0002 TAD DVUPC DCA DVTEM /ADDRESS OF UAC DCA I DVTEM /CLEAR AC OF 20 CODE TAD I DVUPC /GET UPC IAC /SET ADDRESS OF 'COMMAND' DCA DVUPC AC0001 TAD DVUPC DCA DVARG /SET POINTER TOO ARG1 AC0004 TAD DVSTAT JMS DEFER /GET UFLDS AND C70 /PICK OUT INSTRUCTION FIELD TAD I DVSTAT TAD (-EMULATE+INCORE/SET INCORE REQUEST TO INSTR.FLD DCA I DVSTAT JMS MONITOR /FORCE BS IN INCORE HANDLING SIGNAL BSSLOT TAD DVSTAT TAD (USLOT JMS DEFER DCA DVTEM JMS MONITOR /WAIT ON BS READY WAIT DVTEM, 0 TAD C6201 DCA CDFSUB+1 JMS CDFSUB TAD I DVUPC //GET COMMAND CLL RAR //WAIT TOO LINK SZA //SPECIALS ? JMP DVSPEC //YES RAR DCA DVTEM //SET WAIT FLAG DCA I DVUPC //CLEAR FUNCTION NOW (NO ERRORS) TAD I DVARG //GET ARG1 SNA //WAS IT NOP ? JMP DVWAIT //YES WAIT ONLY TCSF //OK, SET FUNCTION AC0001 TCEI //ENABLE INTERRUPTS TCME //START MEASUREMENT DVWAIT, TAD DVTEM //DO I WANT TO WAIT ? SMA CLA JMP DVRET //NO, JUST RETURN TAD (-DGNTICK^10 //WAIT FOR MAX 8 SECS JMS MONITOR WAIT DVMHP //WAIT FOR DVM EVENT SZA CLA JMP DVTMO //TIMOUT TAD DVMERR SZA CLA JMP DVTMO //OTHER ERROR JMS CDFSUB //GO TO USER FIELD TAD DVRES1 //READ FIRST VALUE DCA I DVARG ISZ DVARG TAD DVRES2 //READ SECOND VALUE DCA I DVARG DVREL, CDF 10 JMS MONITOR RETURN RELEASE DVRET, CDF 10 JMS MONITOR RETURN DVSPEC, CLA TCRF //READ FUNCTION DCA I DVARG JMP DVREL //AN EASY ONE DVTMO, AC0001 DCA I DVUPC //SET ERROR DCA DVMERR //CLEAR ERROR AGAIN JMP DVREL //AND RETURN CDFSUB, 0 HLT //CDF TO BACKGROUND FIELD JMP I CDFSUB DVCLOS, JMS MONITOR EXIT SWPOUT DVUPC, 0 DVARG, 0 DVRES1, 0 DVRES2, 0 DVMERR, 0 DVMINT, TCSE ///INTERRUPT ROUTINE SKP CLA ///ERROR ? ISZ DVMERR ///YES, SET FLAG TCRB ///READ FIRST PART DCA DVRES1 TCRB ///READ SECOND PART DCA DVRES2 TCCL ///CLEAR ALL TCEI ///CLEAR INTENA TAD CDVM CIF 0 JMS I ZSOFINT ///SIGNAL EVENT TO TASK LEVEL 0 PAGE $-$-$