You are on page 1of 4

******************************************************************************* * SOURCE CODE and DOCUMENTATION COPYRIGHT (C) 1987 KEVIN G.

RHOADS AND THE * * HIGH VOLTAGE RESEARCH LAB., L.E.E.S, Massachusetts Institute of Technology * ******************************************************************************* ******************************************************************************* * * * This file is part of the DATAACQ.LIB library, other components are in files:* * INITOMA.FOR, LABELS.FOR, STAMP.FOR, TSTSUB.FOR, ETSTSUB.FOR, XTSTSUB.FOR, * * KTSTSUB.FOR, CTSTSUB.FOR, MTSTSUB.FOR, FRAMOP.FOR, AFROP.ASM and * * MORFROP.ASM. These routines build upon the routines in SCOPEBUS.LIB, which * * contains the low level interfacing to the IEEE-488 bus, the SENSOR I/O board* * and the PAR/OMA. This library should always be linked prior to SCOPEBUS, * * GRAPHICS, UTILS and ASMUTILS. The routines in DATAACQ.LIB are high level * * interface routines, frame operations & frame i/o, PAR programming and * * command & operator interface routines. * *-----------------------------------------------------------------------------* $SEGMENT OMADTACQ *compiler is directed to place object code in segment OMADTACQ * *-----------------------------------------------------------------------------* $CHAREQU *compiler is directed NOT to barf on CHARACTER and numeric data types mixed in* *same COMMON BLOCK or EQUIVALENCE * ******************************************************************************* * LIST OF ENTRY POINTS: * * * * SUBROUTINE GLABEL(CV,TL,POL) * * * ******************************************************************************* *---------------------------------------------------------------------SUBROUTINE GLABEL(CV,TL,POL) * (C) COPYRIGHT: Kevin G. Rhoads & High Voltage Research Lab (MIT) - 1983,84. CHARACTER*1 CR,LF,TAB,FF,TIMDAT(32),TC,TCALGN(2) CHARACTER*1 NOTES1(16),LCTRD1(25,2),CT(77,3),CL(77),PLRITY(2) CHARACTER*2 POL,POLAR CHARACTER*17 PTMP(5),PRHO(4),PDENS CHARACTER*20 TMP(5),CRHO(4),FILNAM CHARACTER NOTES*16,ELCTRD(2)*15 CHARACTER PROGNM*18,MAINLN*54,SAVENM*6,DATTIM*32,LCTRDS(2)*25 CHARACTER ANSWER*4,DATE*10,TITLE(3)*77,LABEL*77,CCV*12 REAL*4 CV,TL,GETRL,CHGVLT,TINCR,TLASER,CV2 INTEGER*4 MENU,ERROR,RECLEN,FREC,ASCOPN,LABOOK INTEGER*4 GTYR,GTMO,GTDA,GTHR,GTMIN,GTSEC,GTFR INTEGER*4 SCRN0,CNSL0,KPD,PR,BUSA,BUSB,BUSC,BUSD,FILE,GR INTEGER*2 PRPNTS,NOPNTS,IASC,ISCAN,IKBF1,IKBF2,IERR,PCOLOR,ACOLOR INTEGER*2 ASC,SCAN,KBF1,KBF2,ERR,WFM0DX,WFM1DX,TENCPI,SXTNCP INTEGER*1 SCOPE0(8192) LOGICAL*2 TEK468,TK7854,TK7D20,ABORT,ESCAPE,INTRPT,CONFRM,ISTEST LOGICAL*2 RSH,LSH,CTRL,ALT,SCRL,NUML,CAPS,INS,INYET,FOOB LOGICAL*1 DISK,END,PARAM,FUBAR EQUIVALENCE (ASC,IASC),(SCAN,ISCAN),(KBF1,IKBF1),(KBF2,IKBF2),(ERR,IERR) EQUIVALENCE (TCALGN(1),IASC),(TCALGN(2),TC),(DATTIM,TIMDAT(1)) EQUIVALENCE (TITLE(1),CT(1,1)),(LABEL,CL(1)),(LCTRDS(1),LCTRD1(1,1)) EQUIVALENCE (NOTES,NOTES1(1)) * INTEGER*1 DTCB,DTCBA(50) * EQUIVALENCE (DTCB,DTCBA(1)) * COMMON /DTCBS/DTCBA * SAVE /DTCBS/ COMMON /GARBAG/ERROR,DISK,END,PARAM,FUBAR,WFM0DX,WFM1DX,CHGVLT,TINCR, 1FREC,RECLEN,TENCPI,SXTNCP COMMON /SCTYPE/TEK468,TK7854,TK7D20,/NAMEPR/PROGNM,MAINLN,/FOO/ANSWER

COMMON /KEYGET/IASC,ISCAN,IKBF1,IKBF2,IERR,/ASCGAR/DATE,TITLE,LABEL COMMON /COLORS/PCOLOR,ACOLOR,/CNFRM/CONFRM,/CONCHR/CR,LF,TAB,FF COMMON /NTRVN/ABORT,ESCAPE,INTRPT,/PNTS/PRPNTS,NOPNTS COMMON /UNITS/SCRN0,CNSL0,KPD,PR,BUSA,BUSB,BUSC,BUSD,FILE,GR COMMON /TIMES/ GTYR,GTMO,GTDA,GTHR,GTMIN,GTSEC,GTFR COMMON /TIMDAT/DATTIM,/WFM0SV/SCOPE0,/TST/ISTEST,/OMANOW/CV2,TLASER,POLAR COMMON /SHFSTA/RSH,LSH,CTRL,ALT,SCRL,NUML,CAPS,INS,/KTESTS/INYET,FOOB COMMON /LECTRD/ELCTRD,PLRITY,/CTMPRH/TMP,CRHO,/PTMPRH/PTMP,PRHO,PDENS COMMON /LBBKRF/NOTES,LABOOK SAVE /CTMPRH/,/PTMPRH/,/LBBKRF/,/LECTRD/,/SHFSTA/,/KTESTS/ SAVE /TIMES/,/UNITS/,/CONCHR/,/FOO/,/ASCGAR/,/TIMDAT/,/TST/,/WFM0SV/ SAVE /NAMEPR/,/SCTYPE/,/GARBAG/,/CNFRM/,/NTRVN/,/PNTS/,/KEYGET/ EXTERNAL GETRL,GETTIM,CRCLS,MENU SAVE * 60 * * * *9987 SAVENM = PROGNM PROGNM = SAVENM//'>LABELR' CONTINUE CALL GETTIM(GTYR,GTMO,GTDA,GTHR,GTMIN,GTSEC,GTFR) WRITE (DATE,'(I2,''/'',I2.2,''/19'',I2)') GTMO,GTDA,GTYR WRITE (TITLE(3),9987) GTMO,GTDA,GTYR,GTHR,GTMIN FORMAT (I2,'/',I2.2,'/19',I2,5X,'Time: ',I2,':',I2.2) CALL DODATE TITLE(2) = 'This shot stored '//DATTIM CALL CRCLS PRINT *,'WHAT IS THE CHARGING VOLTAGE (in kV)' PRINT *,'PLEASE ENTER THE NUMBER WITH . AS IN 12.0' CONTINUE CHGVLT = GETRL() CONTINUE CALL SHIFTS IF (.NOT.SCRL) THEN PRINT *,'Charging Voltage: ' WRITE (*,'(F10.2)')CHGVLT PRINT *,'IS THIS CORRECT? (Y/N)' CONFRM = .FALSE. I = MENU(1,0,1) IF (I.EQ.0) GOTO 10 ENDIF CALL CRCLS IF (CHGVLT.EQ.0.0) GOTO 40 CV = CHGVLT CV2 = CHGVLT

10 50

* CALL CRCLS PRINT *,'WHAT IS THE LASER DELAY TIME (in microSEC)' PRINT *,'PLEASE ENTER THE NUMBER WITH . AS IN 12.0' 110 CONTINUE TL = GETRL() 150 CONTINUE CALL SHIFTS IF (.NOT.SCRL) THEN PRINT *,'Laser Delay Time: ' WRITE (*,'(F10.2)') TL PRINT *,'IS THIS CORRECT? (Y/N)' CONFRM = .FALSE. I = MENU(1,0,1) IF (I.EQ.0) GOTO 110 ENDIF TLASER = TL

CALL CRCLS PRINT *,' ' PRINT *,'Is this shot ALIGNED(0,N) or CROSSED(1,y) polarization?' I = MENU(0,0,1) IF (I.EQ.0) THEN POL = 'AP' ELSE POL = 'CP' ENDIF POLAR = POL * CALL CRCLS PRINT *,'PLEASE ENTER LABEL/DESCRIPTOR DATA (1 LINE)' 20 READ (*,'(A)') LABEL CALL SHIFTS IF (LABEL.EQ.' ') THEN LABEL = ELCTRD(1)//PLRITY(1)//' '//ELCTRD(2)//PLRITY(2) ENDIF IF (.NOT.SCRL) THEN PRINT *,'Label: ' PRINT *,LABEL PRINT *,'IS THIS CORRECT? (Y/n)' I = MENU(1,0,1) IF (I.EQ.0) GOTO 20 ENDIF CONFRM = .TRUE. * PROGNM = SAVENM RETURN 40 CONTINUE PRINT *,'YOU ENTERED ZERO FOR THE THE CHARGING VOLTAGE' 30 PRINT *,'This is the signal to end or change parameters' PRINT *,'OPTIONS ARE: (0) Reenter the charging voltage.' PRINT *,' (1) Terminate this run.' PRINT *,' (2) Change parameters.' * PRINT *,' (3) Restore WFM 0 (AS LAST READ) to scope (TK7854)' * PRINT *,' (4) Change number of points printed.' IANS = MENU(0,0,2) IF (IANS.EQ.0) THEN GOTO 60 ELSEIF (IANS.EQ.1) THEN END = .TRUE. PROGNM = SAVENM CLOSE (10,STATUS='KEEP') STOP ELSEIF (IANS.EQ.2) THEN PARAM = .TRUE. PROGNM = SAVENM CALL LABELS GOTO 60 * ELSEIF (IANS.EQ.3) THEN * IF (TK7854.OR.TK7D20) THEN *9087 IF (DTCB.EQ.3) GOTO 9087 * IF (DTCB.EQ.2.OR.DTCB.EQ.0) THEN * ERROR = 0 * IF (ISTEST) CALL CANCEL(6,ERROR) * ERROR = 0 * CALL CLRBUS * PRINT *,'RESTORING WFM 0 TO SCOPE' * DO 9088 I = 1,50

* DTCBA(I) = 0 *9088 CONTINUE * CALL TIMOUT * PRINT *,'INIT: About to send WFM 0 from computer to scope.' * IF (TK7854) THEN * WRITE (6,'(A)') '0 WFM READX 0 WFM' * CALL AWRITE(DTCB,6,SCOPE0(1),8192,LENDB,HENDB,0,ERROR) * ELSEIF (TK7D20) THEN * WRITE (26,'(A)') ' ' * CALL AWRITE(DTCB,26,SCOPE0(1),8192,LENDB,HENDB,0,ERROR) * ENDIF * ENDIF * ELSE * PRINT *,'LABELR: INVALID CHOICE, SCOPE IS NOT TEKTRONIX 7854 OR 7D 20' * GOTO 60 * ENDIF * ELSEIF (IANS.EQ.4) THEN * 12 PRINT *,'WHAT PRINT FORMAT? (1=1 Page, Wide Spacing, 200 POINTS;' * PRINT *,' 2=1 Page, Narrow Spacing, 256 POINTS;' * PRINT *,' 3=1 Page, Narrow Spacing, 300 POINTS;' * PRINT *,' 4=2 Pages, Narrow, ALL 512 POINTS.' * PRINT *,' 5=4 Pages, Narrow, ALL 1024 POINTS.' * PRINT *,' 0=DEFAULT (200 POINTS)' * I = MENU(1,0,5) * IF (I.EQ.1) THEN * PRPNTS = 200 * ELSEIF (I.EQ.2) THEN * PRPNTS = 256 * ELSEIF (I.EQ.3) THEN * PRPNTS = 300 * ELSEIF (I.EQ.4) THEN * PRPNTS = 512 * ELSEIF (I.EQ.5) THEN * PRPNTS = 1024 * ELSE * PRPNTS = 200 * ENDIF * CONFRM = .TRUE. * PRINT *,'For printing what are your choices of color?' * PRINT *,'PRIMARY PRINT COLOR (1=green, 2=blue, 3=BLACK)' * PCOLOR = MENU(3,0,3) * PRINT *,'ACCENT PRINT COLOR (0=RED, 1=green, 2=blue)' * ACOLOR = MENU(0,0,2) * PRINT *,'Do you need to reposition the printer paper? (Y/N)' * I = MENU(0,0,1) * IF (I.EQ.1) CALL PRSET * GOTO 60 ENDIF END

You might also like