ASMB,R,B,L
      NAM .3480 
* 
* 
      ENT DVMSU,DVMMV 
*********************************** 
* 
*         ERS:      A-09601-16014-1 
*         LISTING:  A-09601-16014-2 
*         SOURCE:     09601-18014 
*         RELOC:      09601-16014 
* 
*********************************** 
* 
*         *** UTILITY ROUTINES
* 
      EXT CONV,#DVMU,.ENTR,ERRCD,ERROR,#ERRU
      EXT .DLD,.DST,EXEC,.FMP 
* 
* 
*         *** SYSTEM PARAMETERS 
* 
*         M. SCHOENDORF AUGUST 13, 1974  REV. A 
* 
FUNCT BSS 1 
RANGE BSS 1 
FILTR BSS 1 
TRIG  BSS 1 
DMA   BSS 1 
DVMSU NOP 
      JSB .ENTR     GET PARAMETER 
      DEF FUNCT     ADDRESSES 
      CLA           CLEAR GLOBAL
      STA ERRCD     ERROR CODE
      LDA .6
      LDB FUNCT,I   GET FUNCTION PARAMETER
      SZB,RSS       =0? 
      JMP ERR1      YES, ERROR EXIT 
      JSB CKPAM     PARAMETER IN LIMITS?
      LDA M6        INITIALIZE
      STA R            RANGE COUNTER
      JSB .DLD
      DEF RANGE,I 
      SZA,RSS       RANGE=0?
      JMP ERR1      YES, ERROR
      JSB .DST
      DEF TEMP      SAVE RANGE
      LDB FUNCT,I   CHECK 
      CPB .3          IF OHMS 
      JMP SU3       OHMS
      JSB .DLD      VOLTS 
      DEF F.1 
      JMP SU4 
SU3   JSB .DLD      OHMS
      DEF F100
SU4   CPA TEMP      FIND RANGE? 
      RSS 
      JMP SU5       NOT FOUND 
      CPB TEMP+1    RANGE FOUND?
      JMP SU7         PROBABLE! 
SU5   JSB .FMP      CHECK NEXT RANGE, 
      DEF F10       MPY BY 10.
      ISZ R         INCREMENT RANGE COUNTER 
      JMP SU4       TRY NEXT RANGE
      JMP ERR1      RANGE NOT FOUND 
SU7   LDA R         GET FINAL RANGE COUNT(NEG)
      LDB FUNCT,I   GET FUNCTION PARAMETER
      CMA,SZA,RSS   MAKE COUNT POS,-1 IF NOT 0, SKIP 1
      CPB .3        IF 0 AND OHMS 
      RSS               RANGE FOUND 
      JMP ERR1      =0, NOT OHMS IS ERROR 
      STA R         SAVE RANGE CODE 
      LDA .2
      LDB FILTR,I   GET FILTER PARAMETER
      JSB CKPAM     PARAMETER IN LIMITS?
      CLA,INA 
      LDB TRIG,I    GET TRIGGER PARAMETER 
      JSB CKPAM 
      CCA 
      ADA FUNCT,I   ADD FUNCTION PARAMETER
      ALF,RAR       POSITION TO BITS 3-5
      LDB R         GET RAN GE CODE (BITS 0-2)
      IOR 1         ADD TO FUNCTION CODE
      LDB FILTR,I   GET FILTER PARAMETER
      BLF           POSITION
      RBL,RBL         TO BITS (6-8) 
      IOR 1         ADD TO FUNCTION,RANGE CODE
      LDB TRIG,I    GET TRIGGER PARAMETER 
      BLF,BLF       POSITION. 
      RBL           TO BITS 9-11
      IOR 1         ADD TO FUNC,RANGE,FILTER CODES
      STA IPROG     SAVE PROGRAM WORD 
      CLA,INA 
      LDB DMA,I     GET DMA PARAMETER 
      JSB CKPAM     PARAMETER IN LIMITS?
      SZB 
      JMP DVMSU,I   EXIT
      LDB FILTR,I   GET FILTER PARAMETER
      SZB           =0? 
      JMP ERR1      YES, ERROR EXIT 
      LDB FUNCT,I   GET FUNCTION PARAMETER
      CPB .1        =1? 
      RSS 
      JMP ERR1      NO, ERROR EXIT
      LDA IPROG     GET PROGRAM WORD
      IOR MNEG      SET DMA BIT 
      STA IPROG     SAVE
      JMP DVMSU,I   EXIT
* 
.1    DEC 1 
.2    DEC 2 
.3    DEC 3 
.6    DEC 6 
.15   DEC 15
.7777 OCT 77777 
B360  OCT 360 
M6    DEC -6
MNEG  OCT 100000
F.1   DEC .1
F10   DEC 10.0
F100  DEC 100.0 
IBUFL BSS 1 
IPROG BSS 1 
NDATA BSS 1 
R     BSS 1 
TEMP  BSS 2 
      SKP 
NUMB  BSS 1 
DATA  BSS 1 
DVMMV NOP 
      JSB .ENTR 
      DEF NUMB
      CLA           CLEAR GLOBAL
      STA ERRCD     ERROR CODE
      LDA DVMMV     GET ENTRY POINT 
      STA DVMSU     AND STORE 
      LDA .7777 
      LDB NUMB,I    GET NUMBER OF READINGS PARAMETER
      SZB,RSS       =0? 
      JMP ERR1      YES, ERROR
      JSB CKPAM     PARAMETER IN LIMITS?
      LDB NUMB,I
      CPB .1        ONE READING?
      RSS 
      NOP 
      LDA DATA      GET ADDRESSES OF DATA 
TEST  SSA,RSS         INDIRECT? 
      JMP CONT      NO, CONTINUE
      LDA 0,I       YES,
      JMP TEST        TEST AGAIN
CONT  STA IBUFR     SAVE ADDRESS
      STB NDATA        SAVE NUMBER OF READINGS
      STB IBUFL     SAVE BUFFER LENGTH
      JSB EXEC      EXEC CALL TO DVR46
      DEF *+6 
      DEF .1
      DEF #DVMU 
      DEF IBUFR,I 
      DEF IBUFL 
      DEF IPROG 
      LDA NDATA     GET NUMBER OF READINGS
      CMA,INA       NEGATIVE
      STA TEMP      SAVE AS COUNTER 
.CONV LDB IBUFR     GET BUFFER ADDRESS
      INB 
      LDA 1,I       GET RANGE, FUNC, AND POL WORD 
      STA SAVE
      AND .15       MASK OFF OVERRANGE BITS 
      STA SAVE2 
      LDA SAVE
      AND B360      MASK OFF RANGE BITS 
      ALF,ALF 
      IOR SAVE2     MERGE WITH OVERRANGE
      STA SAVE2 
      LDA SAVE
      AND B7K4      MASK OFF FUNCTION BITS
      CPA B2K4      KOHMS?
      JMP F4        YES 
      LDA B400
MERGE IOR SAVE2 
      STA 1,I       SAVE WORD 2 FOR CONVERSION
      LDA SAVE
      ALF,ALF 
      RAR 
      SLA           OVERLOAD? 
      JMP OVRLD     YES 
      LDB DEC1
      SSA           POSITIVE MANTISSA 
      ADB .2        NO
      STB THERE 
      JSB CONV      CONVERT NEXT DATA 
      DEF *+2 
      DEF IBUFR,I 
      JSB .FMP
THERE DEF D1
      JMP NEXT
OVRLD JSB .DLD      OVERLOAD
      DEF LN
NEXT  JSB .DST
      DEF IBUFR,I 
      ISZ IBUFR      INCREMENT BUFFER ADDRESS 
      ISZ IBUFR        TWICE
      ISZ TEMP      INCREMENT COUNTER AND SKIP
      JMP .CONV     CONVERT NEXT DATA 
      JMP DVMMV,I   EXIT
F4    LDA B2000 
      JMP MERGE 
* 
B400  OCT 400 
B2000 OCT 2000
B2K4  OCT 20000 
B7K4  OCT 70000 
LN    DEC 1.0E+38 
DEC1  DEF D1
D1    DEC 1.0 
      DEC -1.0
IBUFR BSS 1 
SAVE  BSS 1 
SAVE2 BSS 1 
      SKP 
* 
*  SUBROUTINE TO CHECK IF PARAMETER IS IN LIMITS
* 
CKPAM NOP 
      SSB           PARAMETER POSITIVE? 
      JMP ERR1      NO, ERROR EXIT
      CMB,INB 
      ADB 0 
      SSB           PARMETER EXCEED MAXIMUM VALUE?
      JMP ERR1      YES, ERROR EXIT 
      JMP CKPAM,I 
* 
*  ERROR PROCESSING 
* 
ERR1  ISZ ERRCD 
      JSB ERROR 
      DEF *+5 
      DEF ERRCD 
      DEF ERMSG 
      DEF #ERRU 
      DEF DVMSU 
      JMP DVMSU,I 
ERMSG DEC 3 
      ASC 2,DVM 
      END 
                                                                                                                                      