File: SC.TK of Tape: Sources/Multi8/multi8-1
(Source file text)
/SC.TK 8-OCT-80 /THIS TASK CAN BE CALLED BY A GIANT IOT (24). /IT HANDLES THE SETTING AND READING OF THE /HP 34701A VOLTMETER / /CALLING SEQUENCE: / / TAD (24 / 6770 / JMP .+6 / COMMAND/ERROR / SAMPLE COUNT / RANGE IN/OUT / TARGET/RESULT HIGH / TARGET/RESULT LOW / ........ / /COMMAND: 0000 SEARCH MODE POS. DIRECTION / 0001 SEARCH MODE NEG. DIRECTION / /VALUE RETURNED TO COMMAND: / / 0000 MEASUREMENT OK / 0001 INTERFACE ERROR / 0002 TIMOUT ERROR / 0004 BAD RANGE / 0008 OVERFLOW / /SAMPLE COUNT: -MAX SAMPLE COUNT-1 FOR SEARCH MODE / /RANGE: 0000-0003 PRESUPPOSED RANGE IN / 0000-0003 ACTUAL RANGE OUT (IF DIFFERENT ERR 2) / +4000 IF NEGATIVE BCD VALUE / /TARGET/RESULT: 6-DIGIT BCD REPRESENTATION OF / TARGET VALUE IN SEARCH MODE (IN) / 6-DIGIT BCD RESULT AFTER READ / OR SEARCH COMMAND (OUT) / SCEI=SCV+6000 /ENABLE INTERRUPTS SCDI=SCV+6001 /DISABLE INTERRUPTS SCSF=SCV+6002 /SKIP ON DONE FLAG SCCF=SCV+6003 /CLEAR FLAGS SCRL=SCV+6004 /READ LOW ORDER BCD SCRH=SCV+6005 /READ HI ORDER BCD AND STATUS SCST=SCV+6006 /START MEASUREMENT SCSE=SCV+6007 /SKIP ON ERROR *0 CDF 10 /GIGATB IS IN FIELD 1 GIGATB+24 "S^100+"C&3777 *200 SCARG, "S^100+"C&3777 /TASK NAME IS "SC" 401 /TWO PAGES, CONNECTED SCHP SCINT /EVENT SCHP GOES TO SCINT SCMCNT, SCINIT XEND, SCEND SCSTAT, 0 SC, JMP I SCMCNT /GETS SZL CLA /CLOSE ? JMP SCCLOS /YES DCA I SCUAC /CLEAR USER AC TAD I SCFLDS AND C70 /PICK OUT INSTRUCTION FIELD TAD I SCSTAT TAD (-EMULATE+INCORE/SET INCORE REQUEST TO INSTR.FLD DCA I SCSTAT JMS MONITOR /FORCE BS IN INCORE HANDLING SIGNAL BSSLOT TAD I SCSLOT DCA SCDIR JMS MONITOR /WAIT ON BS READY WAIT SCDIR, 0 TAD C6201 DCA SCUSER AC0001 TAD I SCUPC DCA SCARG /ADDRESS OF GIOT+2 CDF 0 DCA I (SCHP^2+HRDLST /CLEAR STATUS DCA I (SCHP^2+HRDLST+1/AND EVENT SCUSER, HLT //GETS CDF BG TAD I SCARG //GET COMMAND CLL RTR DCA SCDIR //SET SEARCH DIRECTION TAD SCARG DCA AUTO10 //SET ADDRESS OF SAMPLE COUNT TAD I AUTO10 DCA SCMCNT //SET IT (-)-1 TAD I AUTO10 //SET TARGET SIGN DCA SCTARS TAD I AUTO10 DCA SCTARH //SET HI-ORDER TARGET TAD I AUTO10 DCA SCTARL //SET LO-ORDER TARGET SCLOOP, SCEI //ENABLE INTERRUPTS TAD (-DGNTICK^10 //WAIT FOR MAX 8 SECS JMS MONITOR WAIT SCHP //WAIT FOR SC EVENT TAD SCERR //TIMOUT = ERROR 2, INTERFACE = ERROR 1 SCSTOR, DCA SCERR //MAYBE OTHERS AC0002 //LOAD TIMOUT ERROR CODE ISZ SCMCNT //MORE SAMPLES ALLOWED ? SKP CLA //IF MORE ALLOWED CLEAR AC JMP SCSTOR //NO, SET TIMOUT ERROR TAD SCTARS //GET PRESUPP. RANGE CIA TAD SCRESS //COMPARE TO MEASURED RANGE CLL RAL //THROW OUT SIGN SZA CLA //IDENTICAL ? AC0004 //ADD IN RANGE ERROR = ERROR 4 TAD SCERR DCA SCERR TAD SCRESL //TEST LOW ORDER RESULT IAC //FOR OVERFLOW = 7777 SNA CLA TAD (10 //OVERFLOW ERROR CODE = 8 TAD SCERR // + OTHER ERRORS DCA SCERR CLL //CLEAR LINK TAD SCTARL CIA //- LOW TARGET TAD SCRESL CLA CML RAL //1 IF TARL GT RESL TAD SCTARH CIA TAD SCRESH CLA //LINK = 0 IF TARGET GT RESULT TAD SCRESS TAD SCTARS //SIGNS EQUAL ? SPA CLA //IF BOTH NEGATIVE, CML LINK JMP SCSPEC //NO, TAKE SIGN OF TARGET RAR //SIGNS EQUAL, 4000 IF TAR .LE. RES SCSES, TAD SCDIR //+DIRECTION TAD SCERR //LOAD ERROR STATUS (OTHER BITS) SNA CLA //IF WRONG DIRECTION OR ERROR JMP SCLOOP //NOT DIFFERENT, SEARCH ON TAD SCERR //GET ERROR STATUS DCA I SCARG //BACK TO COMMAND AC0001 //BUMP OVER SAMPLE COUNT TAD SCARG DCA AUTO10 //POINTER TO SIGN AND RANGE TAD SCRESS //NOW GET INSTRUMENT RANGE AND SIGN DCA I AUTO10 //STORE IT TAD SCRESH //READ FIRST VALUE DCA I AUTO10 //STORE IT TAD SCRESL //READ SECOND VALUE DCA I AUTO10 //STORE IT JMP I XEND //RETURN AND SET HIGH PRIORITY SCSPEC, AC4000 //KILL RANGE BITS AND SCTARS // JMP SCSES // SCCLOS, JMS MONITOR EXIT SWPOUT SCUPC, 0 SCUAC, 0 SCFLDS, 0 SCSLOT, 0 SCERR, 0 SCRESS, 0 SCRESH, 0 SCRESL, 0 SCTARS, 0 SCTARH, 0 SCTARL, 0 PAGE YTEMP, YSTAT, SCSTAT YUPC, SCUPC YUAC, SCUAC YUFLDS, SCFLDS YSLOT, SCSLOT YGO, SC YRESS, SCRESS YRESH, SCRESH YRESL, SCRESL YERR, SCERR INSTAT, 0 SCINIT, DCA INSTAT TAD INSTAT TAD (UASEM-1 /FIND FREE UASEM ENTRY DCA ZTEM1 SCUALP, ISZ ZTEM1 TAD I ZTEM1 /SEARCH SNA /IS IT FREE ? JMP SCUAFR /YES CIA TAD SCNAME /IS IT MY NAME ? SZA CLA JMP SCUALP /NO, SEARCH SCUAFR, TAD SCNAME DCA I ZTEM1 /STORE NAME CDTOIF TAD INSTAT DCA I YSTAT AC0003 TAD INSTAT /ADDRESS OF UPC DCA I YUPC AC0002 TAD I YUPC DCA I YUAC /ADDRESS OF UAC AC0004 TAD INSTAT DCA I YUFLDS /ADDRESS OF UFLDS TAD (USLOT TAD INSTAT DCA I YSLOT /ADDRESS OF USLOT TAD (SZL CLA DCA I YGO /ZAP INIT CALL CLL CDF 10 JMP I YGO SCNAME, "S^100+"C&3777 SCEND, CDF 10 /BACK TO EMULATOR FIELD TAD I INSTAT AND (-LONG-1 /CLEAR LONG BIT DCA I INSTAT /TO REGAIN PRIORITY JMS MONITOR SIGNAL BSSLOT /AND TELL BS JMS MONITOR RETURN RELEASE SCINT, CLA IAC ///INTERRUPT ROUTINE SCSE ///ERROR ? CLA ///NO DCA I YERR ///YES, SET FLAG SCCF ///CLEAR FLAGS SCRH ///READ HIGH-ORDER DCA YTEMP ///TEMP TAD YTEMP AND (777 ///OVERRANGE AND 2 DIGITS DCA I YRESH TAD YTEMP AND (7000 CLL RTL RAL ///RANGE IN BITS 10-11, SIGN IN LINK SNL ///NEGATIVE ? TAD (4000 ///YES DCA I YRESS SCRL ///READ LOW-ORDER DCA I YRESL TAD (SCHP CIF 0 JMS I ZSOFINT ///SIGNAL EVENT TO TASK LEVEL 0 PAGE $-$-$