File: SCINP.RA of Tape: Test/Tests/Blank-Tape-Unit1
(Source file text)
/FUNCTION SCINP /PURPOSE /------- / HP-34701A VOLTMETER SUBROUTINE /USAGE /----- / OUT=SCINP(MODE,IRANGE,IERR,TARGET) /DESCRIPTION OF PARAMETERS /------------------------- / MODE: 0=READ VALUE / 1=READ VALUE / 2=SEARCH IN POS. DIRECTION / 3=SEARCH IN NEG. DIRECTION / IRANGE: PRESUPPOSED RANGE: 0 = 1 VOLT / 1 = 10 VOLT / 2 = 100 VOLT / 3 = 1000 VOLT / ACTUAL RANGE: SAME VALUES AS RESULT / IERR: INPUT VALUE: = MAX. NUMBER OF SAMPLES / ERROR VALUE 0 = ALL OK / 1 = INTERFACE ERROR / 2 = TIMOUT ERROR / 4 = BAD RANGE (PREC.NE.ACTUAL) / 8 = OVERFLOW / 16 = RUNNING UNDER OS/8 / TARGET: SEARCH TARGET = SIGNED REAL VOLTAGE VALUE / OUT: READ RESULT = SIGNED REAL VOLTAGE RESULT / TARGET RESULT = SIGNED REAL DELTA RESULT /REMARKS /------- / ROUTINE WORKS ONLY IN MULTI-8 BACKGROUND /SUBROUTINES REQUIRED /-------------------- / KBCD2B BCD TO BINARY FUNCTION / KB2BCD BINARY TO BCD FUNCTION /METHODS /------- / RALF ROUTINE MAKES GIANT IOT CALL (CODE 24(8)) TO SC.TK / FORMAT: TAD (24 / 6770 / JMP .+6 / COMMAND/ERROR / SAMPLE COUNT / RANGE-SIGN IN/OUT / TARGET/RESULT HIGH / TARGET/RESULT LOW /DEFINITIONS /----------- MQL=7421 MQA=7501 SECT SCINP JA #ST /JUMP TO START OF SUBROUTINE TEXT +SCINP+ /ERROR TRACE BACK #RET, SETX SCX8 /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 TARGET, ORG .+3 BCDTEM, F 0. F4, F 4. ORG #BASE+30 FNOP JA #RET FNOP #GOBAK, 0;0 POWERS, F 100000. F 10000. F 1000. F 100. BASE 0 #ST, STARTD FLDA 10*3 FSTA #GOBAK,0 FLDA 0 SETX SCX8 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 TARGUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU p EAL WORK XTA 3 FSTA% IRANGE /STORE BACK ACTUAL RANGE XTA 4 /ERROR IN XR4 FSTA% IERR EXTERN KBCD2B JSR KBCD2B JA CC JA SCSIGN /1 BEFORE TARH, TARL CC, FDIV POWERS,3 /CONVERT TO REAL VOLTAGE JXN VALPOS,5 FNEG VALPOS, JXN #GOBAK,2 FSUB% TARGET /MAKE DELTA IF XR 2 ZERO (MODE 2,3) JA #GOBAK CHECK, JA . JLT ERROR /ARG LT 0 FSUB F4 JGE ERROR /ARG GT 3 FADD F4 JA CHECK EXTERN #ARGER ERROR, TRAP4 #ARGER SECT8 SCM8 0 /ENTRY POINT CLA IAC AND MODE8 DCA SCCOMM /REDUCED COMMAND FOR FOREGROUND TAD IERR8 /GET SAMPLE COUNT (DEFAULT 1) SNA CLA IAC CMA DCA SCTRYC /SET -NUMBER OF TRIES (MAX -2) TAD MODE8 CLL RAR /WAS IT MEASURE ONCE ONLY ? SZA CLA /L/PRESERVE LINK JMP SERC8 /L/NO, SEARCH CLA CMA /L/SET MAX. VALUES DCA SCVALH /L/FOR MEASURE ONLY CLA CMA /L/IMMEDIATE SUCCES DCA SCVALL /L/ CML RAR /SIGN NEGATIVE, SEARCH POSITIVE OR SKP /SIGN POSITIVE, SEARCH NEGATIVE SERC8, TAD SIGN8 /SET SIGN IN SIGN TAD RANG8 /MERGE IN RANGE DCA SCSIGN /TO FOREGROUND TAD P24 6770 /GIANT IOT TO MULTI8 (CODE 24) JMP .+6 SCCOMM, 0 SCTRYC, 0 SCSIGN, 0 SCVALH, 0 SCVALL, 0 SZA CLA /WAS IT MULTI8 ? TAD P20 /NO, SET ERROR 16 IN CASE OF OS8 TAD SCCOMM /GET FOREGROUND ERROR CODE DCA IERR8 /SET ERROR CODE 1-16 TAD SCSIGN /PICK OUT SIGN BIT CLL RAL CLA CML RAL DCA SIGN8 /SET POSITIVE = 1 TAD SCSIGN AND P3 DCA RANG8 /SET ACTUAL RANGE TAD MODE8 CLL RAR SNA CLA CLA IAC DCA MODE8 /SET SIGNAL FOR NO DELTA CIF CDF 0 JMP% SCM8 P3, 3 P20, 20 P24, 24 SCX8, 0 0 MODE8, 0 RANG8, 0 IERR8, 0 SIGN8, 0 0 0 END