SUBROUTINE TRGMON_MENU(COMMAND, SUBCOMMAND1, SUBCOMMAND2) C---------------------------------------------------------------------- C- C- Purpose and Methods : Dispatch routine for TRGMON C- C- Inputs : None C- Outputs : COMMAND, SUBCOMMAND1, SUBCOMMAND2 Declared parameters that C- describe the command chosen. C- C- Created 23-JAN-91 by MENU_MAKER C- Updated 24-JAN-1991 MICHIGAN STATE UNIVERSITY, TRIGGER CONTROL SOFTWARE C- Updated 30-APR-1992 Philippe Laurens, Steven Klocek C- Add more displays. C- Updated 2-JUL-1992 Philippe Laurens, Steven Klocek C- Inserted periodic log routines. C- Updated 3-SEP-1992 Philippe Laurens, Steven Klocek C- Added Excluded Towers display. C- Updated 3-SEP-1993 Philippe Laurens - MSU L1 Trigger C- Add Large Tiles C- Updated 19-OCT-1995 Philippe Laurens - MSU L1 Trigger C- Add 36x36 scalers C---------------------------------------------------------------------- IMPLICIT NONE C INCLUDE 'LV1_MPOOL.PARAMS' INCLUDE 'LV1_MON_SCREEN.INC' INCLUDE 'LV1_MON_SCREEN_LAYOUT.PARAMS' INTEGER PFNUM EXTERNAL PFNUM CHARACTER*40 COMAND C INTEGER COMMAND, SUBCOMMAND1, SUBCOMMAND2 CHARACTER*1 BASE CHARACTER*80 BUFFER INTEGER TRULEN CHARACTER*30 LABEL DATA LABEL / 'Choose reference set type:' / INTEGER OPTNUM DATA OPTNUM / 3 / CHARACTER*20 OPTIONS(10, 1) INTEGER SELECTED C---------------------------------------------------------------------- OPTIONS(1,1) = 'EM ET Ref Set' OPTIONS(2,1) = 'TOT Et Ref Set' OPTIONS(3,1) = 'Large Tile Ref Set' COMAND=' ' DO WHILE (.TRUE.) COMMAND = COMMAND_OTHER CALL MENUDO('Trigger Monitor Program ','TRGMOND',COMAND) IF(COMAND.EQ.'GA_DISPLAY') THEN COMMAND = COMMAND_GLOBAL_ALLOC GOTO 100 C ELSEIF(COMAND.EQ.'G5_DISPLAY') THEN COMMAND = COMMAND_GLOBAL_L15 GOTO 100 C ELSEIF((COMAND.EQ.'ST_DISPLAY') & .OR. (COMAND.EQ.'S5_DISPLAY')) THEN C SUBCOMMAND1 = TRG_NUM_MIN-1 CALL GETPAR(1, & 'Enter number of specific trigger to display (0-31)> ', 'I', & SUBCOMMAND1) IF (PFNUM() .NE. 0) THEN COMMAND = COMMAND_OTHER GOTO 100 ENDIF C IF ((SUBCOMMAND1 .LT. TRG_NUM_MIN) .OR. (SUBCOMMAND1 .GT. & TRG_NUM_MAX)) THEN CALL OUTMSG(' Trigger number out of range'//CHAR(7)) CALL PFWAIT() COMMAND = COMMAND_OTHER GOTO 100 ENDIF C IF (COMAND.EQ.'ST_DISPLAY') THEN COMMAND = COMMAND_SPECIFIC_TRIGGER ELSE COMMAND = COMMAND_SPECTRIG_L15 ENDIF C GOTO 100 C ELSEIF(COMAND.EQ.'GS_DISPLAY') THEN COMMAND = COMMAND_GEO_SECT GOTO 100 C ELSEIF(COMAND.EQ.'GT_DISPLAY') THEN COMMAND = COMMAND_GLOBAL_MONIT GOTO 100 C ELSEIF(COMAND.EQ.'PT_DISPLAY') THEN COMMAND = COMMAND_GLOBAL_THRESH GOTO 100 C ELSEIF(COMAND.EQ.'RS_DISPLAY') THEN COMMAND = COMMAND_REF_SETS SELECTED = 1 CALL GETOPT(1, LABEL, OPTNUM, OPTIONS, SELECTED) IF (SELECTED .EQ. 1) THEN SUBCOMMAND1 = RS_EM_ET ELSE IF (SELECTED .EQ. 2) THEN SUBCOMMAND1 = RS_TOT_ET ELSE SUBCOMMAND1 = RS_LGTILE ENDIF SELECTED = -1 IF ( SUBCOMMAND1 .NE. RS_LGTILE ) THEN CALL GETPAR(1, 'Which reference set number (0-3)> ', & 'I', SELECTED) ELSE CALL GETPAR(1, 'Which reference set number (0-7)> ', & 'I', SELECTED) ENDIF IF (PFNUM() .NE. 0) THEN COMMAND = COMMAND_OTHER GOTO 100 ENDIF C IF ( SUBCOMMAND1 .NE. RS_LGTILE ) THEN IF ((SELECTED .GT. RS_SET_MAX) .OR. & (SELECTED .LT. RS_SET_MIN)) THEN CALL OUTMSG(' Reference set number out of range'//CHAR(7)) CALL PFWAIT() ENDIF ELSE IF ((SELECTED .GT. LT_RS_SET_MAX) .OR. & (SELECTED .LT. LT_RS_SET_MIN)) THEN CALL OUTMSG(' Reference set number out of range'//CHAR(7)) CALL PFWAIT() ENDIF ENDIF SUBCOMMAND2 = SELECTED GOTO 100 C ELSEIF(COMAND.EQ.'PB_DISPLAY') THEN COMMAND = COMMAND_PER_BUNCH GOTO 100 C ELSEIF(COMAND.EQ.'PB_LUMINOSITY') THEN COMMAND = COMMAND_LUMINOSITY GOTO 100 C ELSEIF(COMAND.EQ.'TF_DISPLAY') THEN COMMAND = COMMAND_TRIG_FILT_RUN GOTO 100 C ELSEIF(COMAND.EQ.'AO_DISPLAY') THEN COMMAND = COMMAND_ANDOR GOTO 100 C ELSEIF(COMAND.EQ.'SD_DISPLAY') THEN COMMAND = COMMAND_SPY_DUMP GOTO 100 C ELSEIF(COMAND.EQ.'JL_DISPLAY') THEN COMMAND = COMMAND_JET_LIST GOTO 100 C ELSEIF(COMAND.EQ.'AD_DISPLAY') THEN COMMAND = COMMAND_ADC GOTO 100 C ELSEIF(COMAND.EQ.'PD_DISPLAY') THEN COMMAND = COMMAND_PRTRGR_DBLOCK GOTO 100 C ELSEIF(COMAND.EQ.'SW_DISPLAY') THEN SUBCOMMAND1 = 0 SUBCOMMAND2 = 1 CALL GETPAR(1, & 'Display in Hexadecimal or Binary [H or B]>', 'U', & BASE) IF (PFNUM() .NE. 0) THEN COMMAND = COMMAND_OTHER GOTO 100 ENDIF C IF ((BASE .NE. 'H') .AND. (BASE .NE. 'B')) THEN CALL OUTMSG(' Invalid option' // CHAR(7)) CALL PFWAIT() COMMAND = COMMAND_OTHER GOTO 100 ENDIF C IF (BASE .EQ. 'B') THEN SUBCOMMAND1 = 2 WRITE(BUFFER, 300) (LINES - 4) *SW_BIN_PER_LINE, 'Binary' ELSE SUBCOMMAND1 = 16 WRITE(BUFFER, 300) (LINES - 4) *SW_HEX_PER_LINE, & 'Hexadecimal' ENDIF C 300 FORMAT('Display ', I3, ' 16-bit words in ', A, & ' starting at word number (decimal)>') C CALL GETPAR(1, BUFFER(1:TRULEN(BUFFER)), 'I', SUBCOMMAND2) IF (PFNUM() .NE. 0) THEN COMMAND = COMMAND_OTHER GOTO 100 ENDIF C IF (SUBCOMMAND2 .LT. 1) THEN CALL OUTMSG(' Out of range' // CHAR(7)) CALL PFWAIT() COMMAND = COMMAND_OTHER GOTO 100 ENDIF C COMMAND = COMMAND_SPY_WINDOW GOTO 100 C ELSEIF(COMAND.EQ.'EX_DISPLAY') THEN COMMAND = COMMAND_EXCLUDED_TOWERS GOTO 100 C ELSEIF(COMAND.EQ.'DIAGNOST') THEN COMMAND = COMMAND_DIAGNOST GOTO 100 C ELSEIF(COMAND.EQ.'FS_DISPLAY') THEN COMMAND = COMMAND_FOREIGN_SCALERS GOTO 100 C ELSEIF(COMAND.EQ.'36X36_DISPLAY') THEN COMMAND = COMMAND_36x36_SCALERS GOTO 100 C ELSEIF(COMAND.EQ.'DISPLAY_OPTIONS') THEN COMMAND = COMMAND_OTHER CALL DISPLAY_OPTIONS() C ELSEIF(COMAND.EQ.'EXIT') THEN COMMAND = COMMAND_QUIT GOTO 100 C ELSEIF(COMAND.NE.'EXIT'.AND.COMAND.NE.'BLANK') THEN CALL OUTMSG('0No ACTION defined for that command'//CHAR(7)) ENDIF END DO C 100 CONTINUE RETURN END C C C SUBROUTINE DISPLAY_OPTIONS() C---------------------------------------------------------------------- C- C- Purpose and Methods : Dispatch routine for TRGMONOP C- C- Inputs : None C- Outputs : None C- C- Created 23-JAN-91 by MENU_MAKER C- Updated 24-JAN-1991 MICHIGAN STATE UNIVERSITY, TRIGGER CONTROL SOFTWARE C- Updated 5-AUG-1994 Philippe Laurens, Freddie Landry C- Add variable integration time to display options C- C---------------------------------------------------------------------- IMPLICIT NONE INCLUDE 'LV1_MON_SCREEN.INC' INCLUDE 'LV1_MPOOL.PARAMS' INTEGER PFNUM EXTERNAL PFNUM C CHARACTER*40 COMAND C LOGICAL GOTOP C INTEGER ROW, COL CHARACTER*11 BUFFER C EXTERNAL SCREEN_LOG_FINISH, SCREEN_LOG_START EXTERNAL RATES_LOG_FINISH, RATES_LOG_START C---------------------------------------------------------------------- COMAND=' ' 1 CONTINUE IF (COMAND.NE.'EXIT'.AND..NOT.GOTOP()) THEN CALL MENUDO('Display Options ','TRGMONOP',COMAND) C IF(COMAND.EQ.'CHG_REF') THEN CALL CHANGE_REFRESH_RATE () C ELSE IF(COMAND.EQ.'CHG_INT') THEN CALL CHANGE_INTEGRATION_TIME () C ELSEIF(COMAND.EQ.'CH_DISP_SIZE') THEN CALL GETPAR(1, & 'Enter the number of lines on the screen to use> ', 'I', & LINES) ELSEIF(COMAND.EQ.'AUTO_DISP') THEN CALL GETSCR(ROW, COL) LINES = ROW CALL INTTOSTR(LINES, BUFFER, 1) CALL OUTMSG(' Now using ' // BUFFER // ' screen lines.') CALL PFWAIT() C ELSEIF(COMAND.EQ.'FILE_DUMP') THEN CALL OUTMSG(' The current screen dump file name is:') CALL OUTMSG(' '// DUMP_FILE_NAME) CALL GETPAR(1, & 'Enter the new screen dump file name> ', 'U', & DUMP_FILE_NAME) IF (PFNUM() .EQ. 0) THEN IF (DUMP_FILE_OPENED .EQV. .TRUE.) THEN CALL CLOSE_DISPLAY_DUMP_FILE() ENDIF ENDIF C ELSEIF(COMAND.EQ.'DIS_BROAD') THEN C CALL DIS_BROAD C ELSEIF(COMAND.EQ.'SLOG_START') THEN CALL DATA_LOG_BEGIN(SCREEN_LOG_RECORDING, SCREEN_LOG_START, & SCREEN_LOG_FINISH, SCREEN_LOG_LUN, SCREEN_LOG_INTERVAL, & SCREEN_WRITE_INTERVAL, SCREEN_LOG_FNAME, & SCREEN_LOG_COUNTDOWN, SCREEN_WRITE_COUNTDOWN) C ELSEIF(COMAND.EQ.'SLOG_END') THEN CALL DATA_LOG_END(SCREEN_LOG_RECORDING, & SCREEN_LOG_FINISH, SCREEN_LOG_LUN, SCREEN_LOG_COUNTDOWN, & SCREEN_WRITE_COUNTDOWN) C ELSEIF(COMAND.EQ.'RLOG_START') THEN CALL DATA_LOG_BEGIN(RATES_LOG_RECORDING, RATES_LOG_START, & RATES_LOG_FINISH, RATES_LOG_LUN, RATES_LOG_INTERVAL, & RATES_WRITE_INTERVAL, RATES_LOG_FNAME, & RATES_LOG_COUNTDOWN, RATES_WRITE_COUNTDOWN) C ELSEIF(COMAND.EQ.'RLOG_END') THEN CALL DATA_LOG_END(RATES_LOG_RECORDING, & RATES_LOG_FINISH, RATES_LOG_LUN, RATES_LOG_COUNTDOWN, & RATES_WRITE_COUNTDOWN) C ELSEIF(COMAND.NE.'EXIT'.AND.COMAND.NE.'BLANK') THEN CALL OUTMSG('0No ACTION defined for that command'//CHAR(7)) ENDIF GOTO 1 ENDIF RETURN END