      HED CNFIG 
* 
* THIS PROGRAM CONFIGURES A DACE SYSTEM THROUGH THE SWITCH
* REGISTER AND TELETYPE.  IT DOES NOT HANDLE MORE THAN BASIC
* SYSTEM UNITS, I.E.;  TELETYPE 
*                      PHOTOREADER
*                      TIME BASE GENERATOR
*                      2911 AND 2401 (8421 OR 4221) 
*                   OR 2912 AND 2402 (8421 ONLY)
*               AND/OR MULTIVERTER
*                   OR MINIVERTER 
* AND IS PRIMARILY INTENDED FOR USE WITH "AXEPT" AND
* "MVERT", CUSTOMER ACCEPTANCE DACE TASKS 
* 
* THE PROGRAM STARTS AT ADDRESS 2000 AND EXITS TO 
* THE DACE EXECUTIVE
* 
* "MULT" CARRIES M-VERTER IDENTIFICATION TO THE TASK
* "NSCAN" CARRIES SCANNER IDENTIFICATION TO THE TASK
* 
      NAM CNFIG 
      ENT CNFIG,DIRAD 
      EXT .DIO.,.IOC.,.IOI. 
      EXT COD42,MSTRT 
      EXT .RTN.,SETAD,.SQT. 
      COM NSCAN,MULT,IA(102)
CNFIG NOP 
      LIA 1         TTY SC FROM SWITCH REGISTER 
      AND B77 
      STA IOSC
      JSB SETAD     GO TO SETAD 
      DEF RDR 
      DEF B0
      DEF IOSC
      DEF B2
RDR   JSB .IOC.     TYPE "READER?"
      OCT 20002 
      JMP *-2 
      DEF WRD1
      DEC 5 
      JSB RC        READ REPLY
      CPA B77       COMPARE REPLY TO 77 
      JMP BOMPR     IF 77, NO READER
      JSB CHKOD     IF READER, CHECK FOR LEGAL SC 
      SSB 
      JMP RDR       NOT LEGAL, TRY AGAIN
      JSB SETAD     LEGAL SC, GO TO SETAD 
      DEF TBG       RETURN TO TBG FROM SETAD
      DEF B1
      DEF IOSC
      DEF B1
* 
* BOMPR REMOVES PHOTO-READER FROM EQT AND REPLACES WITH TTY 
* 
BOMPR LDA SQTAD     GET SQT ADDRESS 
      JSB DIRAD     GET ACTUAL ADDRESS
      LDB 0,I       EQT ENTRY FOR TTY 
      ADA B2        ADDRESS OF UNIT 3 IN SQT
      STB 0,I       ASSIGN TTY TO UNIT 3
      ADA B2        ADDRESS OF UNIT 5 IN SQT
      STB 0,I       ASSIGN TTY TO UNIT 5
* 
TBG   JSB .IOC.     TYPE "T.B.G.?"
      OCT 20002 
      JMP *-2 
      DEF WRD2
      DEC 5 
      JSB RC        READ REPLY
      JSB CHKOD     CHECK FOR LEGAL SC
      SSB 
      JMP TBG       TRY AGAIN 
      JSB SETAD     LEGAL SC, GO TO SETAD 
      DEF MULMN 
      DEF B43 
      DEF IOSC
      DEF B1
MULMN JSB .IOC.     TYPE "M-VERTER?"
      OCT 20002 
      JMP *-2 
      DEF WRD6
      DEC 6 
      JSB RC        READ REPLY AND
      STA MULT       SAVE FOR MVERT 
      CPA B77       COMPARE REPLY TO 77 
      JMP DSI       IF 77, NO M-VERTER
      JSB CHKOD     IF M-VERTER, CHECK FOR LEGAL SC 
      SSB 
      JMP MULMN     NOT LEGAL, TRY AGAIN
WHICH JSB .IOC.     TYPE "WHICH?" 
      OCT 20002 
      JMP *-2 
      DEF WRD7
      DEC 4 
      JSB RCD       READ M-VERTER TYPE
      CPA B1         1 FOR MULTIVERTER
      JMP SHIFT 
      SZA            0 FOR MINIVERTER 
      JMP WHICH     NOT 0 OR 1, TRY AGAIN 
SHIFT ALS,ALS 
      ALF 
      ADA IOSC
      STA IOSC
      JSB SETAD     LEGAL SC, GO TO SETAD 
      DEF DSI 
      DEF B76 
      DEF IOSC
      DEF B1
DSI   JSB .IOC.     TYPE "DSI?" 
      OCT 20002 
      JMP *-2 
      DEF WRD3
      DEC 3 
      JSB RC        READ REPLY AND
      STA NSCAN      SAVE FOR AXEPT 
      CPA B77 
      JMP SETUP 
      JSB CHKOD     CHECK FOR LEGAL VALUE 
      SSB 
      JMP DSI       TRY AGAIN 
SCAN  JSB .IOC.     TYPE "SCANNER?" 
      OCT 20002 
      JMP *-2 
      DEF WRD4
      DEC 5 
      JSB RCD       READ REPLY AND
      STA NSCAN      SAVE FOR AXEPT 
      LDB B75 
      STB EQTN
      ADA M2912     IS SCANNER
      SZA,RSS        A 2912?
      JMP SSCAN     YES, GO TO SETAD
      LDB B77 
      STB EQTN
      INA,SZA,RSS   IS SCANNER A 2911?
      JMP SSCAN     YES, GO TO SETAD
      JSB .IOC.     NO, TYPE "2911 OR 2912" 
      OCT 20002 
      JMP *-2 
      DEF CHOSE 
      DEC 7 
      JMP SCAN      TRY AGAIN 
SSCAN JSB SETAD 
      DEF ICODE 
      DEF EQTN
      DEF IOSC
      DEF B3
ICODE JSB .IOC.     TYPE "CODE?"
      OCT 20002 
      JMP *-2 
      DEF WRD5
      DEC 4 
      JSB RCD       READ REPLY
      JSB SETCD     CHECK FOR LEGAL CODE
* 
* SETUP INITIALIZES TASK CONSTANTS
* 
SETUP LDB IPGM
* 
* THIS SECTION SETS IPGM FOR 0.1V TO 1000V RANGES, CYCLICALLY 
* 
LOOP1 LDA M5
      STA CYCLE 
      LDA PROG
LOOP2 STA 1,I 
      INA 
      INB 
      ISZ CTR 
      RSS 
      JMP NEXT
      ISZ CYCLE 
      JMP LOOP2 
      JMP LOOP1 
* 
* THIS SECTION SETS CHANNELS TO 0,2,4,6,1,3,5,7,
* 8,10,12,14,9,11,13,15,.....45,47,48,49
* 
NEXT  LDA M4
      CLB,INB 
EVEN  ADB M1
      CLE 
ODD   STA M4
LOOP4 STB ICHAN,I 
      ISZ ICHAN 
      ISZ CNTR
      INB,RSS 
      JMP SETNO 
      INB 
      ISZ M4
      JMP LOOP4 
      SEZ 
      JMP EVEN
      ADB M7
      CCE 
      JMP ODD 
* 
* THIS SECTION SETS # OF CHANNELS SCANNED AND TIME ALLOWED
* 
SETNO INB 
      STB ICHAN,I 
      LDA B10 
      STA NCHAN,I   SCAN 8 CHANNELS 
      LDA D30 
      STA ITIM3,I   ALLOW 30 SECONDS
      JSB MSTRT 
      HED CNFIG-RC, RCD, CHKOD, DIRAD 
* 
* RC READS OCTAL TELETYPE REPLIES 
* 
RC    NOP 
      CLA,INA 
      CLB,INB 
      JSB .DIO. 
      DEF K6
      DEF BACK
      JSB .IOI. 
      STA IOSC
BACK  JMP RC,I
* 
* RCD READS DECIMAL TELETYPE REPLIES
* 
RCD   NOP 
      CLA,INA 
      CLB,INB 
      JSB .DIO. 
      OCT 0 
      DEF BACK1 
      JSB .IOI. 
BACK1 JMP RCD,I 
* 
* CHKOD CHECKS THAT SELECT CODES ARE BETWEEN 10 & 67
* 
CHKOD NOP 
      ADA M8
      CLB,INB       SET UP TO RETURN VALUE = 1
      SSA 
      JMP INVAL 
      CMA,INA 
      ADA SCMAX 
      SSA,RSS 
      JMP CHKOD,I 
INVAL JSB .IOC. 
      OCT 20002 
      JMP *-2 
      DEF XCOD
      DEC 7 
      CCB 
      JMP CHKOD,I 
* 
* DIRAD FINDS DIRECT ADDRESS OF RELOCATABLE OPERAND 
* 
DIRAD NOP 
N1    SSA,RSS       INDIRECT? 
      JMP N2        NO THIS IS ACTUAL ADDRESS 
      ELA,CLE,ERA   YES - REMOVE INDIRECT BIT 
      LDA 0,I       GET NEXT STEP 
      JMP N1        TRY AGAIN 
N2    JMP DIRAD,I   ACTUAL ADDRESS IN  A
      HED CNFIG-SETCD, CONSTANTS
* 
* SETCD TRANSFERS A 4221 TO 8421 CONVERSION SWITCH TO D.77
* 
SETCD NOP 
      CPA C8421 
      JMP .8421 
      CPA C4221 
      JMP .4221 
      JSB .IOC. 
      OCT 20002 
      JMP *-2 
      DEF MES1
      DEC 6 
      JSB .IOC. 
      OCT 40002 
      SSA 
      JMP *-3 
      JMP ICODE 
.8421 CLA,RSS       VALUE IS 0
.4221 CLA,INA       VALUE IS +
      STA COD42 
      JMP SETCD,I 
* 
* CONSTANTS, VARIABLES, MESSAGES
* 
B0    OCT 0 
B1    OCT 1 
B2    OCT 2 
B3    OCT 3 
B10   OCT 10
B43   OCT 43
B75   OCT 75
B76   OCT 76
B77   OCT 77
CHOSE ASC 7,2911 OR 2912 _
CNTR  DEC -49 
CTR   DEC -50 
CYCLE BSS 1 
C4221 DEC 4221
C8421 DEC 8421
D30   DEC 30
EQTN  OCT 75
ICHAN DEF IA+51 
IOSC  BSS 1 
IPGM  DEF IA
ITIM3 DEF IA+50 
K6    ASC 3,( K6) 
MES1  ASC 6,8421 OR 4221
M1    OCT -1
M4    OCT -4
M5    OCT -5
M7    OCT -7
M8    OCT -10 
M2912 DEC -2912 
NCHAN DEF IA+101
PROG  OCT 2042
SCMAX OCT 57
SQTAD DEF .SQT. 
WRD1  ASC 5,READER?  _
WRD2  ASC 5,T.B.G.?  _
WRD3  ASC 3,DSI? _
WRD4  ASC 5,SCANNER? _
WRD5  ASC 4,CODE?  _
WRD6  ASC 6,M-VERTER?  _
WRD7  ASC 4,WHICH? _
XCOD  ASC 7,10 TO 67 ONLY 
      END 
      HED SETAD A GENERAL CONFIGURING ROUTINE 
      NAM SETAD 
NOSWP EQU 8 
*     NOSWAP IS THE NUMBER OF ENTRYS EXPECTED IN THE SWAP TABLE 
*     IT MUST BE MORE THAN 4 AND NEED NEVER BE GREATED THAN 28
*     THIS IS A PROGRAM TO CONFIGURE A GENERAL BCS SYSTEM 
*     THE FORTRAN CALL IS 
*********************************** 
*     CALL SETAD(DRVID,NEWSC,NODEV,NODRV) 
*********************************** 
*     WHERE THE PARAMETERS ARE: 
*     DRVID IS AN INTEGER CONSTANT AND IS THE SAME NUMBER FOUND 
*           IN THE EQT #2 ENTRY E.G. 00 FOR THE TTY,01 FOR THE PHOTO
*           READER (THIS IS THE D.XX CODE)
*     NEWSC  IS AN INTEGER CONSTANT WHICH CONTAINS THE NEW SELECT CODE
*     NODEV IS AN INTEGER CONSTANT WHICH IS EQUAL TO THE
*         NUMBER OF DEVICE AS ASSOCIATED WITH THE DRIVER
*     NODRV IS USE WHERE THERE IS  MORE THAN ONE ENTRY OF THE 
*           GIVEN DRIVER IN THE EQUIPMENT TABLE 
************THIS PARAMETER IS ACTIVE ONLY IF THE PROGRAM IS ASSEMBLED 
*           UNDER THE N OPTION
*     IF IT IS ONE (INTEGER) THE FIRST APPEARANCE IS CONFIGURED 
*     IF TWO THE SECOND ETC.
* 
*     THE TRAP CELLS ARE TREATED AS FOLLOWS 
*     IF IT IS AN I/O GROUP INSTRUCTION THE SELECT CODE IS MODIFIED 
*     TO THE NEW SELECT CODE .   IF IT IS NOT AN I/O GROUP
*     INSTRUCTION THE TWO LOCATIONS ARE JUST SWAPPED. 
      EXT .ENTR,.SQT. 
      ENT SETAD 
A     EQU 0 
B     EQU 1 
SWPNO NOP           NUMBER OF ENTRIES IN THE TABLE
SWPTB BSS NOSWP     THIS IS AN EQU AT LINE 5
COUNT BSS 1 
      IFN 
      ORG *+3 
      XIF 
OLDS. BSS 1 
      IFN 
      ORR 
      XIF 
DRVID BSS 1 
NEWS. BSS 1 
NODEV BSS 1 
      IFN 
NODRV BSS 1 
      XIF 
SWAPC EQU COUNT 
OLDSC EQU COUNT 
NEWSC EQU DRVID 
SWAPI EQU NEWS. 
      ORG *-11      ORG BACK FOR ENTRY ROUTINE
      NOP 
START LDA JSB.E     GET THE JSB .ENTR INSTRUCTION 
      STA ENTR      STORE IT IN THE ENTRY POINT 
      LDA SQTAD     GET SQT ADDRESS 
      RAL,CLE,SLA,ERA STRIP THE INDIRECT BIT
      LDA A,I       DIRECT ADDRESS NOW
      ADA SIX       ADD TO GET ADDRESS OF # OF ENTRIES
      STA SQTAD     STORE THE ADDRESS OF EQT NUMBER FOR ROUTINE 
      JMP ENTR      DO JSB .ENTR AND REST OF ROUTINE
JSB.E JSB .ENTR 
SIX   OCT 6 
      ORR           CONTINUE REST OF PROGRAM
SETAD NOP 
ENTR  JMP START     FIRST ENTRY JUMP REPLACED BY JSB .ENTR THERE AFTER
      DEF DRVID 
      LDA NODEV,I   GET THE NO OF DEVICES FOR THE  DRIVER 
      CMA,INA       MAKE IT NEGATIVE
      STA NODEV     AND SAVE IT 
      IFN 
      LDA NODRV,I   GET THE NUMBER OF THE DRIVER
      CMA,INA 
      STA NODRV     STORE BACK THE NEGATIVE NUMBER
      XIF 
      LDB SQTAD     ADDRESS OF FIRST WORD OF EQT
      LDA B,I       GET # 
      CMA,INA       MAKE NEG
      STA COUNT     USE AS  COUNTER 
      INB           GET DOWN INTO THE EQT 
      LDA DRVID,I   GET THE DRIVER ID 
      ALF,ALF       MOVE IT TO THE PROPER POSITION FOR COMPARE
      STA DRVID     SAVE IT 
      INB,RSS       B NOW RIGHT FOR WORD TWO
SEARH ADB FOUR     GET ADDRESS OF NEXT ENTRY
      LDA B,I       GET THE ENTRY 
      AND TYPCD =B37400  STRIP ALL EXTRA BITS 
      CPA DRVID 
      JMP FOUND     IF THE SAME WE FOUND IT 
MULDR ISZ COUNT     IF NOT CONTINUE 
      JMP SEARH     GO BACK 
IOG   HLT 0         NOT FOUND STOP ERROR
      JMP *-1 
FOUND EQU * 
      IFN 
      JMP MULDR     NO CONTINUE 
      ISZ NODRV     MULT DRIVER  THIS ONE?
      XIF 
      CMB,INB       SUBTRACT ONE TO 
CFLAG CMB           GET THE SELECT CODE 
      LDA B,I       GET THE SELECT CODE 
      AND B77       IN A
      STA OLDS.     SAVE THE OLD SELECT CODE
      LDA B,I       GET THE EQT ENTRY AGAIN 
      AND NOSC =B177700  CLEAR THE SC 
      ADA NEWS.,I   PUT IN THE UMASKED NEW SELECT CODE
      IOR CFLAG     SET CONFIGURED FLAG 
      CPA B,I       HAS THIS DRIVER BEEN CONFIGURED ALREADY?
      JMP SETAD,I   YES: RETURN 
      STA B,I       PUT IT IN THE EQT 
      AND B77       ISOLATE THE NEW SELECT CODE 
      STA NEWSC     AND SAVE IT SO WE CAN INCREMENT IT
MUL   LDA SWAPA     GET THE ADDRESS OF THE SWAP TABLE 
      STA SWAPI     STORE IT AS THE SWAP INDEX
      LDB SWPNO     GET THE NUMBER OF ENTRIES 
      CMB,INB,SZB,RSS  MAKE NEG AND IF ZERO 
      JMP SETUP     JUMP OUT
TBLSH LDA SWAPI,I   GET THE FIRST WORD
      AND B77       ISOLATE THE FROM CODE 
      CPA OLDS.     IS IT THE OLD SELECT CODE?
      JMP MATCH     YES:  FOUND JUMP
      ISZ SWAPI     INCREMENT THE INDEX 
      INB,SZB       UNTIL COUNT IS ZERO 
      JMP TBLSH     CONTINUE TABLE SEARCH 
SETUP ISZ SWPNO     NOT FOUND MAKE NEW ENTRY
      LDA OLDS.     GET THE OLD SC
      JMP OUT       GO FINISH 
MATCH LDA SWAPI,I   FOUND UPDATE THE TABLE
      ALF,ALF       ROTATE THE OLD TO CODE TO THE LOW ORDER 
      AND B77       AND ISOLATE IT
OUT   STA OLDSC     STORE AS THE NEW OLD CODE 
      ALF,ALF       ROTATE THE TO CODE
      IOR NEWSC     PUT IN THE NEW SC 
      STA SWAPI,I   STORE IT IN THE TABLE 
ENDSW LDA OLDSC,I   GET THE OLD TRAP CELL 
      LDB NEWSC,I   AND THE NEW ONE 
      STB OLDSC,I   STORE THE OLD ONE BACK WITH NO MOD
      STA NEWSC,I   STORE THE NEW ONE BACK WITH NO MOD
      AND NOSC =B177700 DROP THE SELECT CODE
      LDB A         TO B
      ADB NEWSC     PUT IN THE NEW SELECT CODE
      AND IOGMS =B172000 IS THIS AN I/O GROUP  INSTRUCTION
      CPA IOG       ? 
      STB NEWSC,I   YES: RESET THE NEW TRAP CELL
      ISZ NEWSC     INCREMENT SC FOR MORE THAN ONE DEVICE 
      ISZ OLDS.     INCREMENT THE ORGIONAL OLD SC 
      ISZ NODEV    MORE THAN ONE DEVICE?
      JMP MUL       YES GO BACK AND PROCESS IT
      JMP SETAD,I   RETURN
SQTAD DEF .SQT. 
B77   OCT 77
FOUR  OCT 4 
TYPCD OCT 37400 
NOSC  OCT 177700
IOGMS OCT 172000
SWAPA DEF SWPTB     ADDRESS OF  SWAP TABLE
      END 
      HED MSTRT 
* 
* MSTRT TRANSFERS CONTROL TO DACE AFTER CONFIGURING AND 
* SETS THE ADDRESS AND LENGTH OF THIS CONFIGURING PROGRAM 
* INTO RLEAS SO THAT THE BLOCK WILL BE AVAILABLE FOR
* OUTPUT BUFFERING
* 
      NAM MSTRT 
      ENT COD42,MSTRT 
      EXT AXEP1,AXEP2,DIRAD 
MSTRT NOP 
      LDA AX1 
      JSB DIRAD     GET ACTUAL ADDRESS OF DEF .AUTO 
      LDB C2000     START OF BLOCK
      STB 0,I 
      INA 
      CMB,INB 
      INB 
      ADB .END      LENGTH OF BLOCK 
      STB 0,I 
      LDA AX2 
      JSB DIRAD     GET ACTUAL ADDRESS
      CLB 
      STB 0,I       WIPE OUT RELEASE OF AUTO
      JMP 2 
AX1   DEF AXEP1 
AX2   DEF AXEP2 
C2000 OCT 2000
* 
* .END, COD42, END MUST BE IN SEQUENCE
* 
.END  DEF * 
COD42 NOP 
      END 
FTN,B,L 
      SUBROUTINE AXEPT
      DIMENSION DATA(50),IPGM(50),ICHAN(50),IFUN(50)
      COMMON NSCAN,MULT,IA(51,2)
      EQUIVALENCE (IA(1,1),IPGM(1)),(IA(1,2),ICHAN(1))
      EQUIVALENCE (IA(51,2),NCHAN),(IA(51,1),ITIM3) 
C 
C USE THE SWITCH REGISTER AS FOLLOWS
C  SW 1  SCANR
C  SW 2  CHANGE # OF CHANNELS PRINTED 
C  SW 3  CHANGE TIME LIMIT FOR TASK EXECUTION 
C       (LOADED AS 30 SEC)
C  SW 4  PRINT TIME OF DAY
C 
  101 FORMAT("TIME LIM, SEC? _")
  102 FORMAT("MEAS TAKING > ",I3," SEC")
  103 FORMAT(//"SCAN TIME = ",I5," MSEC") 
  104 FORMAT("PRINT START, END AT? _")
  105 FORMAT("START # TOO BIG") 
  106 FORMAT("END # TOO BIG") 
  107 FORMAT(2X"OVERLOAD")
  108 FORMAT(" CH # ",I4,1XE13.6,"_") 
  555 FORMAT(2X"SEC") 
  109 FORMAT(2X"VDC") 
  110 FORMAT(2X"HZ")
  111 FORMAT(2X"OHMS")
  112 FORMAT(2X"FUN ERROR") 
  113 FORMAT(2X"VAC") 
  114 FORMAT(/,"TIME IS ",I2,":",I2,":",I2/)
  115 FORMAT(/,"50 CHAN MAX IN 51,2") 
  116 FORMAT(//,"SCANNER-DVM",//) 
      CALL LINK(IT,0,0,0,IA,51,2) 
      IF(NSCAN-77B)1,150,1
  150 IT=0
      RETURN
    1 WRITE(2,116)
      IF(ISSW(3))11,2 
   11 WRITE(2,101)
      READ(1,*)ITIM3
    2 IF(NSCAN-2911)200,20,200
   20 CALL STCLK(1) 
      IF(50-NCHAN)211,212 
  211 WRITE(2,115)
      RETURN
  212 IF(ISSW(1))21,22
   21 CALL SCNR(DATA,ICHAN,IPGM,NCHAN,ICNT,IFUN)
      IFLAG=0 
      GO TO 23
   22 CALL SCNB(DATA,ICHAN,IPGM,NCHAN,ICNT,IFUN)
      IFLAG=-1
   23 IF(ICNT-NCHAN)24,26 
   24 CALL RDCLK(N) 
      IF(N/100-ITIM3)23,25
   25 CALL SCNCL
      WRITE(2,102)ITIM3 
      RETURN
  200 CALL STCLK(1) 
      IF(ISSW(1))201,202
  201 CALL SKNR(DATA,ICHAN,IPGM,NCHAN,ICNT,IFUN)
      IFLAG=0 
      GO TO 203 
  202 CALL SKNB(DATA,ICHAN,IPGM,NCHAN,ICNT,IFUN)
      IFLAG=-1
  203 IF(ICNT-NCHAN)204,26
  204 CALL RDCLK(N) 
      IF(N-100*ITIM3)203,205
  205 CALL SKNCL
      WRITE(2,102)ITIM3 
      RETURN
   26 CALL RDCLK(ITIM1) 
      CALL DATIM(IH,IM,IS)
      KCNT=0
   27 IF(ICONV(DATA,ICNT,KCNT,-NCHAN))27,28 
   28 ITIM1 = ITIM1*10
      WRITE(6,103)ITIM1 
    3 IF(ISSW(2))31,310 
   31 WRITE(2,104)
      READ(1,*)L,J
  310 IF(L)311,311,312
  311 L=1 
  312 IF(J-L)313,32 
  313 J=L 
   32 IF(NCHAN-L)34,33
   33 IF(NCHAN-J)35,4 
   34 WRITE(2,105)
      GO TO 31
   35 WRITE(2,106)
      GO TO 31
    4 KCHAN=ICHAN(1)+L-1
      DO 44 M=L,J 
      IF(IFLAG)41,42
   41 WRITE(6,108)KCHAN, DATA(M)
      GO TO 43
   42 WRITE(6,108)ICHAN(M), DATA(M) 
   43 ICT =IABS(IFUN(M))
      KCHAN=KCHAN+1 
      GO TO (50,5,6,7,7,8,8,8,81,8,9),ICT 
   44 CONTINUE
      GO TO 10
   50 IF(ICT-1)55,5 
   55 WRITE(6,555)
      GO TO 44
    5 WRITE(6,109)
      GO TO 44
    6 WRITE(6,110)
      GO TO 44
    7 WRITE(6,111)
      GO TO 44
    8 WRITE(6,112)
      GO TO 44
   81 WRITE(6,107)
      GO TO 44
    9 WRITE(6,113)
      GO TO 44
   10 IF(ISSW(4))1001,1002
 1001 WRITE(6,114)IH,IM,IS
 1002 CONTINUE
      END 
        END$
      SUBROUTINE MVERT
      DIMENSION IDATA(50),ICHAN(50) 
      COMMON NSCAN,MULT,IA(51,2)
      EQUIVALENCE (IA(1,2),ICHAN(1)),(IA(51,2),NUMB)
C 
C USE THE SWITCH REGISTER AS FOLLOWS
C  SW5=1  M-VERTER MONITORS 1 CHANNEL 
C  SW5=0  AND:
C         SW6=0  M-VERTER DOES BLOCK SCAN 
C         SW6=1  M-VERTER DOES RANDOM SCAN
C  SW7=1  CHANGE # OF CHANNELS PRINTED
C 
    1 FORMAT(//,"M-VERTER",//)
    2 FORMAT("MEAS+CONVERSION TAKING> 100 MS",//) 
    4 FORMAT("PRINT START, END AT? _")
    5 FORMAT("START # TOO BIG") 
    6 FORMAT("END # TOO BIG") 
    7 FORMAT("DATA+CONVERSION TIME <",I4," MS",/, 
     14X,"CHAN",7X,"DATA(MV)",/)
    8 FORMAT(I8,I11)
C 
      CALL LINK(IT,0,0,0,IA,51,2) 
      IF(MULT-77B)110,100,110 
  100 IT=0
      RETURN
  110 CALL STCLK(1) 
      ILST=0
      IADD=-NUMB
      WRITE(2,1)
      IF(ISSW(5))150,120
  120 IF(ISSW(6))130,140
  130 CALL MVRAN(IDATA,ICHAN,NUMB,IEND) 
      IFLAG=1 
      GO TO 160 
  140 CALL MVBLK(IDATA,ICHAN,NUMB,IEND) 
      IFLAG=0 
      GO TO 160 
  150 CALL MVMON(IDATA,ICHAN,NUMB,IEND) 
      IFLAG=-1
  160 CONTINUE
  170 IF(MCONV(IDATA,IEND,ILST,IADD))180,200
  180 CALL RDCLK(N2)
      IF(N2-10)170,170,190
  190 CALL MVCL 
      WRITE(2,2)
      RETURN
  200 CALL RDCLK(N2)
      CALL MVCL 
      N=N2*10 
  230 IF(ISSW(7))240,245
  240 WRITE(2,4)
      READ(1,*)L,J
  245 IF(L)250,250,260
  250 L=1 
  260 IF(J-L)270,280
  270 J=L 
  280 IF(NUMB-L)300,290 
  290 IF(NUMB-J)310,320 
  300 WRITE(2,5)
      GO TO 240 
  310 WRITE(2,6)
      GO TO 240 
  320 KCHAN=ICHAN(1)+L-1
      WRITE(6,7)N 
      DO 360 M=L,J
      IF(IFLAG)330,340,350
  330 WRITE(6,8)ICHAN(1),IDATA(M) 
      GO TO 360 
  340 WRITE(6,8)KCHAN,IDATA(M)
      KCHAN=KCHAN+1 
      GO TO 360 
  350 WRITE(6,8)ICHAN(M),IDATA(M) 
  360 CONTINUE
      END 
      END$
    