NAM LKAST EXT ASTRT JMP ASTRT END PROGRAM TEST DIMENSION ID(288),ICS(16),OUT(6),IN(6) 1 PAUSE C-------------------REPEAT SAME PARAMETER? IF(ISSW(3))14,3 C-------------------SUPPRESS INITIAL PRINTOUT? 3 IF(ISSW(0))5,2 2 WRITE(2,100) C-------------------BYPASS IOL AND F.S. VOLTS 5 IF(ISSW(2))21,20 20 WRITE(1,200) READ(1,*)IOL WRITE(2,930) READ(1,*)VOLT 21 WRITE(2,300) READ(1,*)IM C-------------------PUT ZEROS IN ARRAYS DO 6 IO=1,322 6 ID(IO)=0 WRITE(2,400) READ(1,*)ISN ISN1=ISN C-------------------SEQ=8 C-------------------RANDOM=7 C-------------------MONITOR=9 IF(IM-1)8,7,9 9 WRITE (2,500) READ(1,*)ICS(1) ICN=ISN1 ISN1=1 WRITE(2,910) GO TO 14 7 WRITE(2,500) READ(1,*)ICS GO TO 10 8 WRITE(2,920) PAUSE 10 WRITE(2,600) READ(1,*)ICN 16 DO 11 I=1,6 11 IN(I)=I WRITE(2,700)(IN(I),I=1,ISN) C-------------------GET DATA FROM MULTI AND PRINTOUT 14 CALL MULTI(IM,ICN,ICS,ID,ISN,IOL) DO 13 K=1,ICN IY=K DO 12 I=1,ISN1 C-------------------BYPASS DATA OUTPUT? IF(ISSW (1))1,19 19 OUT(I)=FLOAT(ID(IY))*VOLT/32768. IF(IM-2)18,12 18 IY=IY+ICN 12 CONTINUE IX=ICS(K) C-------------------IF SEQ MODE START AT CHANNEL 0 C-------------------IF RANDOM MODE PRINT CHANNEL # C-------------------IF MONITOR MODE PRINT ONLY ONE CHANNEL # IF(IM-1)17,13,15 17 IX=K-1 GO TO 13 15 IX=ICS(1) 13 WRITE(2,800)IX,(OUT(I),I=1,ISN1) WRITE(2,900) GO TO 1 C C C 100 FORMAT("MULTIPLEXER AND A/D CONVERTER HI SPEED 1 ANALOG TEST" 1/"PROGRAM PARAMETERS:"/3X"1)MULTI MODE SELECTION" 1/5X"SEQUENTIAL IM=0"/5X"RANDOM IM=1" 1/5X" MONITOR ONLY IM=2"/3X"2)# OF CHANNELS TO BE SCANNED" 1/5X"ICN= XXX (3 DIGIT DEC #)"/3X"3)MULTI CHANNEL ADDRESS #" 1/5X"ICS=XXX,XXX,---(MAX OF SIXTEEN 3 DIGIT DEC #)"/3X" 14)# OF SCANS ON EACH SET OF CHANNELS"/5X"ISN=XXX (3 DIGIT 1 DEC #)"/12X"MAX OF 6 1 SCANS FOR 48 OR LESS CHANNELS"/12X"MAX OF 1 SCAN 1 FOR MORE THAN 48 CHANNELS"/12X"MAX OF 288 SCANS IN 1 DIGITIZE MODE"/3X"5)COMPUTER I/O LOC OF MULTI INTERFACE 1 CARD"/5X"IOL=@XX (2 DIGIT OCTAL #)"/3X"6)COMPUTER SWITCH 1 REGISTER OPTIONS"/5X"SW(0)=1 BYPASS INITIAL PRINTOUT" 1/5X"SW(1)=1 BYPASS DATA PRINTOUT"/5X"SW(2)=1 BYPASS 1 INITALIZING IOL AND F.S. VOLTS"/5X"SW(3)=1 REPEAT SAME 1 PARAMETERS"/3X"7)F.S. VOLTS=XX.X (RATED FULL SCALE VOLTAGE 1 OF INSTR"//"SET INSTR FUNCTION SWITCH TO NORMAL" 1 /"FOR A/D CONVERTER ONLY, LET IM=2 AND ICS=0 1 "/"TEST RESULTS IN VOLTS"//) 200 FORMAT("IOL= _") 300 FORMAT("IM= _") 400 FORMAT("ISN= _") 500 FORMAT("ICS= _") 600 FORMAT("ICN= _") 700 FORMAT (//"CHAN#"4X,6(I1," SCAN",4X) 800 FORMAT(1X,I3,2X,6F10.4) 900 FORMAT("END OF TEST"/////"NEW PROGRAM PARAMETERS"/) 910 FORMAT("CHAN # VALUE") 920 FORMAT(/"SET MULTI OCTAL SELECT SWITCH=ICN-1") 930 FORMAT("F.S. VOLTS= _") END END$ HED MULTI ROUTINE ** 2310C TEST NAM MULTI * * MULTIPLEXER AND A/D CONVERTER TEST SUBROUTINE * AUG. 1971 * * TEST MAY BE CALLED BY A FORTRAN PROGRAM * * CALL STATEMENT: * * CALL MULTI(IM,ICN,ICS,ID,ISN,IOL) * * DEFINITION OF CALL VARIABLES: * * IM=MULTIPLEXER MODE SELECTION * =0 "SEQUENTIAL MODE" * =1 "RANDOM MODE" * =2 "MONITOR SCAN ONE CHANNEL ONLY" * ICN=# OF CHANNELS TO BE SCANNED * ICS=MULTIPLEXER CHANNEL ADDRESS * ID=DATA BUFFER * ISN=# OF SCANS * IOL=COMPUTER I/0 LOCATION OF INTERFACE CARD * * THROUGHPUT RATES FOR THIS TEST PROGRAM: * (WITHOUT EXTERNAL PACER) * * FOR MINIVERTERS WITH 2.5 US START PULSE * COMPUTER ----------------------- 2116 2115/2114 2100 * RANDOM MODE ------------------ 24KHZ 21KHZ 25KHZ * SEQUENTIAL MODE -------------- 40KHZ 37KHZ 41KHZ * SINGLE CHANNEL MONITOR MODE -- 38KHZ 34KHZ 38KHZ * * FOR MINIVERTERS WITH 10.0 US START PULSE * COMPUTER ----------------------- 2116 2115/2114 2100 * RANDOM MODE ------------------ 20KHZ 18KHZ 21KHZ * SEQUENTIAL MODE -------------- 32KHZ 32KHZ 31KHZ * SINGLE CHANNEL MONITOR MODE -- 28KHZ 27KHZ 26KHZ * * ENT MULTI EXT .ENTR,.IOC.,ENDIO,.MPY IM NOP MODE SEQ=0 RAM=1 DIT=2 ICN NOP # OF CHANS TO BE SCANNED ICS NOP CHAN ADDRESS # ID NOP DATA BUFFER ISN NOP # OF SCANS IOL NOP MULTI I/0 LOC MULTI NOP ENTER AND EXIT MULTI SUBROUTINE JSB .ENTR DEF IM JSB ENDIO DEF *+1 CLF 0 * * INITIALIZE I/0 LOC * LDA IOL,I I/O LOC STA IOLOC IOR ISTCC ADD I/O LOC TO STC,C INSTR STA RSTC1 STA SSTC1 STA SSTC2 STA DSTC1 STA DSTC2 LDA IOLOC I/O LOC IOR ISFS ADD I/O LOC TO SFS INSTR STA RSFS STA RSFS2 STA SSFS STA SSFS2 STA DSFS STA DSFS1 STA CSFS LDA IOLOC I/O LOC IOR ILIA ADD I/O LOC TO LIA INSTR STA RLIA STA SLIA STA DLIA LDA IOLOC I/O LOC IOR IOTA ADD I/O LOC TO OTA INSTR STA ROTA STA ROTA1 STA SOTA STA DOTA LDA IOLOC IOR OTBI STA C1 . STORE * * TEST FOR MULTIPLEXER MODE SELECTION * LDA IM,I SLA RANDOM MODE? JMP RAN YES RAR SLA MONITOR MODE? JMP DO YES JMP SEQ SEQUENTIAL MODE * * RAMDOM MODE TEST DRIVER * RAN LDA ID CMA,INA CMA STA .DATA .DATA BUFFER ADDRESS LDA ISN,I CMA,INA STA SCTR .NUMBER OF SCANS COUNTER RSFS2 SFS 0 .CONVERTER READY ? JMP *-1 LOOP1 LDA ICS STA .CHAN .CHANNEL ADDRESS BUFFER LDA ICN,I CMA,INA STA CHCTR .CHANNEL COUNTER LDA .CHAN,I .FIRST CHANNEL ROTA1 OTA 0 RSTC1 STC 0,C .START ISZ .CHAN .INCREMENT BUFFER COUNTERS ISZ .DATA RSFS SFS 0 JMP *-1 LDB .CHAN,I .GET NEXT CHAN ADDRESS RLIA LIA 0 .READ DATA C1 OTB 0 .SET NEXT CHANNEL STA .DATA,I .SAVE DATA ISZ CHCTR .DONE THIS SCAN ? JMP RSTC1 ISZ SCTR .YES - DONE THIS TEST ? JMP LOOP1 .NO - NEXT SCAN JMP CLEAN .YES - EXIT * * SEQUENTIAL MODE TEST DRIVER * SEQ LDA ID BUFFER ADDRESS STA .DATA COUNTER LDA ISN,I # OF SCANS LDB ICN STB T1 JSB .MPY .CALCULATE # OF READINGS T1 NOP CMA,INA .SET INTO READINGS STA SCTR COUNTER LOOP2 LDA RESET ROTA OTA 0 SET MULTI TO CHAN 000 SSFS2 SFS 0 ENSURE FLAG IS UP JMP *-1 NOT READY LDA SQM SOTA OTA 0 SEQ MODE TO MULTI SSTC1 STC 0B START MULTI ON CHAN 000 SSFS SFS 0 .DATA READY ? JMP *-1 SSTC2 STC 0,C .YES ENCODE FOR NEXT CHANNEL SLIA LIA 0 STA .DATA,I STORE DATA IN BUFFER ISZ .DATA BUMP COUNTER ISZ SCTR .DONE ? JMP SSFS .NO JMP CLEAN * * MONITOR MODE DRIVER * DO LDA ID BUFFER ADDRESS CMA,INA CMA BUFFER ADDRESS-1 STA .DATA COUNTER LDA ISN,I # OF SCANS CMA STA SCTR COUNTER LDA ICS,I MULTI CHAN ADDRESS DOTA OTA 0B SET MULTI TO CHAN # DSFS1 SFS 0 READY MULTI FOR SCAN JMP *-1 FLAG NOT SET DSTC1 STC 0B START MULTI ON CHAN # NOP NOP JMP *+3 DSTC2 STC 0B START MULTI STA .DATA,I STORE DATA IN BUFFER ISZ SCTR # OF SCANS COMPLETE? JMP *+2 NO JMP CLEAN YES ISZ .DATA BUMP BUFFER ADDRESS DSFS SFS 0B DATA READY? JMP *-1 NO DLIA LIA 0B YES JMP DSTC2 NEXT SCAN "A-REG HOLDS DATA" * * EXIT MULTI SUBROUTINE * CLEAN NOP EXIT LOCATION CSFS SFS 0B HAS MULTI COMPLETED OPERATION? JMP *-1 NO WAIT FOR FLAG CLC 0 JMP MULTI,I YES EXIT MULTI SUBROUTINE * * OCTAL CONSTANTS * .DATA OCT 0 BUFFER ADDRESS COUNTER SCTR OCT 0 # OF SCANS COUNTER .CHAN OCT 0 MULTIPLEXER CHAN ADDRESS COUNTER CHCTR OCT 0 #OF CHANS TO BE SCANNED COUNTER IOLOC OCT 0 I/O LOC ISTCC OCT 103700 STC,C ISFS OCT 102300 SFS ILIA OCT 102500 LIA IOTA OCT 102600 OTA OTBI OTB 0 SQM OCT 040000 SEQ MODE COMMAND CODE---CHAN000 RESET OCT 020000 RESET COMMAND CODE CHAN 000 END * THIS PROGRAM PERMITS CONFIGURATION OF THE TELETYPE * FROM THE SWITCH REGISTER AT THE START OF PROGRAM EXECUTION. * * IT REQUIRES THAT THE PROGRAM BE LOADED VIA THE ABSOLUTE * TAPE OPTION PRIOR TO EXECUTION. * * THE STARTING ADDRESS OF THIS PROGRAM CAN THEN BE OBTAINED * FROM THE LOADER SYMBOL TABLE (LST) AT THE END OF LOADING. * THE STARTING ADDRESS WILL BE THE ADDRESS OF ASTRT. AFTER * THIS ADDRESS IS LOADED BY PRESSING 'LOAD ADDRESS', THE ADDRESS * OF THE TELETYPE SHOULD BE SET INTO THE SWITCH REGISTER * BEFORE PRESSING 'RUN'. * * IF THIS PROGRAM IS LOADED FIRST, ITS STARTING ADDRESS * WILL BE 2000B. * NAM ASTRT ENT ASTRT EXT .SQT. * A EQU 0 B EQU 1 * ASTRT NOP LDA SQTAD GET ADDRESS OF SQT TABLE N1 SSA,RSS THIS AN INDIRECT? JMP N2 NO - LETS GO AND IBIT YES - ELIMINATE IT LDA A,I GET NEXT STEP JMP N1 AND TRY AGAIN N2 INA GO TO SQT #2 - TTY OUTPUT LDB A,I GET EQT # FROM SQT ADB .M7 SUBTRACT 7 BLS,BLS MULTIPLY BY 4 ADB .6 ADD 6 TO GET PROPER EQT ADDRESS ADB A MAKE EQT ADDRESS ABSOLUTE STB EQTAD SAVE IT LDB B,I GET ORIGINAL I/O ADDRESS LDB B,I GET CONTENTS OF TRAP CELL LIA 1 GET I/O ADDRESS OF TTY IN SW REG AND IOMSK MASK ANY EXTRA BITS STB A,I PUT LINK IN NEW TRAP CELL STA EQTAD,I STORE NEW I/O ADDR IN EQT INA TAKE CARE OF STB A,I SERIAL TTY JMP 2 START PROGRAM EXECUTION * * PROGRAM CONSTANTS * SQTAD DEF .SQT. POINTER TO SQT TABLE IBIT OCT 77777 MASK TO ELIMINATE INDIRECT BIT .M7 DEC -7 .6 DEC 6 IOMSK OCT 77 I/O LIMIT MASK EQTAD NOP END