File: DVINP.RA of Tape: Test/Tests/Blank-Tape-Unit1
(Source file text)
/SUBROUTINE DVINP /PURPOSE /------- / HP-5326B TIMER-COUNTER-DVM SUBROUTINE /USAGE /----- / CALL DVINP(MODE,IRANGE,IERR,IVAL) /OR / IVAL=DVINP(MODE,IRANGE,IERR,DUMMY) /DESCRIPTION OF PARAMETERS /------------------------- / MODE: 0=NO OPERATION / 1=DVM / 2=FREQUENCY / 3=PERIOD / 4=TIME INTERVAL / + 8=READ RESULT / + 16=READ FUNCTION / IRANGE: TIME FUNCTIONS: 0-7 = 1SEC - 0.1MMSEC / 15 = 1 SECOND RATE / DVM: 0-3 = 1SEC - 1MSEC / 4 = 10 VOLT / 8 = 100 VOLT / 12 = 1000 VOLT / IERR: ERROR VALUE 0 = ALL OK / 1 = FOREGROUND ERROR / 4 = SIGN-CHANGE IN DVM MODE / 8 = OVERFLOW (NOT IN DVM MODE) / 12 = 8 + 4 / 16 = RUNNING UNDER OS/8 / IVAL: RESULT SIGNED INTEGER VALUE /REMARKS /------- / ROUTINE WORKS ONLY IN MULTI-8 BACKGROUND /SUBROUTINES REQUIRED /-------------------- / KBCD2B BCD TO BINARY FUNCTION /METHODS /------- / RALF ROUTINE MAKES GIANT IOT CALL (CODE 20(8)) TO DV.TK / FORMAT: TAD (20 / 6770 / JMP .+4 / FUNCTION / ARG1 / ARG2 /DEFINITIONS /----------- MQL=7421 MQA=7501 SECT DVINP JA #ST /JUMP TO START OF SUBROUTINE TEXT +DVINP+ /ERROR TRACE BACK #RET, SETX DVX8 /SET MY WORLD AFTER FOREIGN JSR SETB #BASE JA .+3 #BASE, ORG .+3 #ARGS, ORG .+3 MODE, ORG .+3 IRANGE, ORG .+3 IERR, ORG .+3 IVAL, ORG .+3 F16, F 16. ORG #BASE+30 FNOP JA #RET FNOP #GOBAK, 0;0 BASE 0 #ST, STARTD FLDA 10*3 FSTA #GOBAK,0 FLDA 0 SETX DVX8 SETB #BASE BASE #BASE LDX 0,1 FSTA #BASE FLDA% #BASE,1+ FSTA MODE FLDA% #BASE,1+ FSTA IRANGE FLDA% #BASE,1+ FSTA IERR FLDA% #BASE,1+ FSTA IVAL STARTF FLDA% MODE JSA CHECK ATX 2 /MODE IN XR2 FLDA% IRANGE JSA CHECK ATX 3 /RANGE IN XR3 TRAP4 DVM8 XTA 4 /ERROR IN XR4 FSTA% IERR XTA 5 /4000=RESULT POS.;0=RESULT NEG.;1=RESULT FUNCTION JGT FUNC EXTERN KBCD2B JSR KBUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU p DCA .+1 HLT /GET HARDWARE CODE MQL /SAVE A WHILE TAD RANG8 /GET RANGE AND P17 /4 BITS MQA /MERGE DCA DVVAL1 /TO FOREGROUND TAD MODE8 CLL RAR CLL RAR CLL RAR /GET MEASUREMENT MODE DCA DVCOMM /TO FOREGROUND TAD P20 MQL /SET ERROR 16 IN CASE OF OS8 TAD P20 6770 /GIANT IOT TO MULTI8 (CODE 20) JMP .+4 DVCOMM, 0 DVVAL1, 0 DVVAL2, 0 SZA CLA /WAS IT MULTI8 ? JMP DVM8RT /NO, RETURN WITH ERROR 16 MQL /CLEAR ERROR NOW TAD DVVAL1 DCA VAL1 /COPY VAL1 FOR FUNCTION READ TAD MODE8 /WAS IT FUNCTION READ ? CIA TAD P20 /FUNCTION IS MODE 16 SNA CLA JMP DVM8RT /YES, THAT'S ALL TAD DVCOMM /GET FOREGROUND ERROR CODE MQL /SET ERROR CODE 1-3 CLA CLL CML RTR /2000 AND DVVAL1 /PICK OUT SIGN BIT CLL RAL DCA SIGN8 /SET POSITIVE = 4000 CLA CMA /-1 TAD MODE8 /+1 IF DVM AND P7 /ZAP READ BITS SZA CLA /IS IT DVM? CLL CML RAR /NO, MAKE 4000 TAD P1000 /IF DVM IGNORE OVERFLOW AND DVVAL1 /GET DVM ERRORS 4000=OVERFLOW, 1000=SIGN CHANGE CLL RTL RAL /OVFL IN BIT 10, SGNCH IN LINK SZL IAC /SET BIT 11 ON SGNCH CLL RTL /SET ERROR CODES 4,8,12 MQA MQL /OR THEM IN TAD P1777 AND DVVAL1 /ELIMINATE CONTROL BITS DCA DVVAL1 /ALL PREPARED FOR BCDBIN CONVERSION DVM8RT, MQA /GET ERROR CODE INTO IERR8 DCA IERR8 CIF CDF 0 JMP% DVM8 P7, 7 P17, 17 P20, 20 P1777, 1777 P1000, 1000 PTBL, TAD DVTBL DVTBL, 0000 /NO OPERATION 0060 /DVM FUNCTION 5000 /FREQ FUNCTION 4000 /PERIOD FUNCTION 2000 /TIME INTERVAL FUNCTION DVX8, 0 /TRACEBACK 0 0 /ARG INDEX MODE8, 0 RANG8, 0 IERR8, 0 SIGN8, 0 VAL1, 0 VAL2, 0 END