{ *************************************************************************** } MODULE mod_phat_execute ; { Created 28-APR-1989 MICHIGAN STATE UNIVERSITY, TRIGGER CONTROL SOFTWARE } { *************************************************************************** } INCLUDE mod_common_global_flags, mod_common_soft_conn, mod_common_parse, mod_handle_remcons, mod_handle_console, mod_handle_logfile, mod_handle_tracing, mod_handle_read_input, mod_handle_ZRL, mod_def_hardware_tables, mod_handle_begin_end_run, mod_parse_global, mod_parse_detail, mod_handle_registers, mod_handle_fmln, mod_handle_sptrg, mod_init_auxi, mod_tst_task, mod_common_hard_io, {from the TRICS hardware IO library } mod_tcs_io_cbus_handling, {from the TRICS hardware IO library } mod_tcs_io_drv11j_handling, {from the TRICS hardware IO library } mod_tcs_io_comint_handling, {from the TRICS hardware IO library } mod_tcs_io_prescaler_handling, {from the TRICS hardware IO library } mod_tcs_io_scaler_handling, {from the TRICS hardware IO library } mod_tcs_io_spy_handling, {from the TRICS hardware IO library } mod_io_allocation_handling, $PHYSICAL_ADDRESS, $KERNEL ; { *************************************************************************** } EXPORT phat_writereg, {PROCEDURE write cbus reg according to phat msg item list} phat_w_hdbase, {PROCEDURE write cbus reg and update hardware data base } phat_show_reg, {PROCEDURE show cbus reg content and hard data base profile } phat_readreg, {PROCEDURE read cbus register according to phat msg item list} phat_readhist, {PROCEDURE read cbus reg multiple times and build histogram } phat_readsbsc, {PROCEDURE read sbsc card according to phat msg item list} phat_readdbsc, {PROCEDURE read dbsc scaler according to phat msg item list} phat_prescale, {PROCEDURE write presc ratio according to phat msg item list} phat_readprsc, {PROCEDURE read presc ratio according to phat msg item list} phat_reset , {PROCEDURE reset comint card } phat_reqstspy, {PROCEDURE ask the spy to make a copy of the next data block } phat_readspy, {PROCEDURE read the data block spy } phat_read11jr, {PROCEDURE read the DRV11J card interrupt control registers } phat_monitor, {PROCEDURE gather comint card control and status statistics } phat_trace_ms, {PROCEDURE change receive and reply message trace mode ON/OFF} phat_trace_io, {PROCEDURE change info and warning trace mode for io cycles } phat_trace_in, {PROCEDURE change info trace mode according to phat msg } phat_trace_wa, {PROCEDURE change warning trace mode according to phat msg } phat_trace_er, {PROCEDURE change error trace mode according to phat msg } phat_new_con, {PROCEDURE create new connection process according to msg } phat_del_con, {PROCEDURE delete connection process according to phat msg } phat_shutdown, {PROCEDURE starts a shutdown of the TRICS software } phat_set_wsiz, {PROCEDURE set/change system window size } phat_rem_cons, {PROCEDURE start/stop redirecting mesasges to remote terminal} phat_rfmp_rat, {PROCEDURE changes the monitoring pool refresh rate } phat_closelog, {PROCEDURE forces the system to close the log file } phat_cre_rfmp, {PROCEDURE start monitoring pool refresh process } phat_del_rfmp, {PROCEDURE delete monitoring pool refresh process } phat_cre_test, {PROCEDURE start hardware testing task } phat_del_test, {PROCEDURE stop hardware testing task } phat_force_db, {PROCEDURE initialize force datablock specific trigger } phat_old_menu, {PROCEDURE invokes old menu program } phat_deall_io, {PROCEDURE forces deallocation of trigger IO } phat_modif_hdb,{PROCEDURE change card address in hardware data base } phat_take_par, {PROCEDURE places message string in parameter mailbox } phat_com_file, {PROCEDURE execute explicit auxiliary file } phat_cre_bert, {PROCEDURE create begin/end run write file task } phat_del_bert, {PROCEDURE delete begin/end run write file task } phat_ber_dbsc, {PROCEDURE add DBSC entry to list of scalers at begin_end_run} phat_ber_sbsc, {PROCEDURE add SBSC entry to list of scalers at begin_end_run} phat_ber_show, {PROCEDURE show list of scalers read at begin_end_run } phat_write_fmln,{PROCEDURE write 512 consecutive bytes of FMLN } phat_read_fmln, {PROCEDURE read 512 consecutive bytes of FMLN } phat_verif_fmln,{PROCEDURE verify FMLN programming of thresholds } phat_zero_fmln, {PROCEDURE reset FMLN programming of thresholds to zero } phat_write_mpt, {PROCEDURE write FMLN programming of missing Pt } phat_verif_mpt, {PROCEDURE verify FMLN programming of missing Pt } phat_readpQBA, {PROCEDURE read pQBA registers } phat_readpVBA ; {PROCEDURE read pVBA registers } { *************************************************************************** } IMPORT status_type, ok, already_done, io_failure, not_found, {from module MOD_COMMON_GLOBAL_FLAGS } main_process, {from module MOD_COMMON_GLOBAL_FLAGS } param, {from module MOD_COMMON_SOFT_CONN } reqstmsg, {from module MOD_COMMON_SOFT_CONN } replymsg, {from module MOD_COMMON_SOFT_CONN } con_served, {from module MOD_COMMON_SOFT_CONN } eln_recv_task_name, {from module MOD_COMMON_SOFT_CONN } parsed_command, {from module MOD_COMMON_PARSE } command_count, {from module MOD_COMMON_PARSE } parse_status, {from module MOD_COMMON_PARSE } {parse_code, Parse_success,}Parse_failure, Parse_asserted,{Parse_negated, Parse_par_still_empty,Parse_par_found_empty,}Parse_no_par_found, {from module MOD_COMMON_PARSE } esc, scroll, {from module MOD_HANDLE_CONSOLE } display_console, {from module MOD_HANDLE_CONSOLE } init_remcons, {from module MOD_HANDLE_REMCONS } stop_remcons, {from module MOD_HANDLE_REMCONS } close_logfile, {from module MOD_HANDLE_LOGFILE } state_type,{ON, OFF,} {from module MOD_HANDLE_TRACING } trace_info,{trace_warn,}trace_error,{from module MOD_HANDLE_TRACING } inline_tracing, {from module MOD_HANDLE_TRACING } {io_tracing, elncon_tracing,} {from module MOD_HANDLE_TRACING } handle_trc_inf, {from module MOD_HANDLE_TRACING } handle_trc_err, {from module MOD_HANDLE_TRACING } handle_trc_sys, {from module MOD_HANDLE_TRACING } {handle_trc_sta, {from module MOD_HANDLE_TRACING } modify_trace_inf, {from module MOD_HANDLE_TRACING } modify_trace_wrn, {from module MOD_HANDLE_TRACING } modify_trace_err, {from module MOD_HANDLE_TRACING } modify_trace_con, {from module MOD_HANDLE_TRACING } modify_io_tracing, {from module MOD_HANDLE_TRACING } set_sys_window, {from module MOD_HANDLE_TRACING } input_parameter_mailbox, {from module MOD_HANDLE_READ_INPUT } addr_pQBA, {from module MOD067_HANDLE_ZRL } addr_pVBA, {from module MOD067_HANDLE_ZRL } cbus_register, {from module MOD_DEF_HARDWARE_TABLES } card_header, {from module MOD_DEF_HARDWARE_TABLES } find_card_pointer, {from module MOD_DEF_HARDWARE_TABLES } find_reg_pointer, {from module MOD_DEF_HARDWARE_TABLES } fmln_compare, {from module MOD_DEF_HARDWARE_TABLES } dbsc_foreign_card, {from module MOD_DEF_HARDWARE_TABLES } sbsc_card, {from module MOD_DEF_HARDWARE_TABLES } reg_singularities, histdep,ronly, {from module MOD_DEF_HARDWARE_TABLES } create_begin_end_run, {from module MOD_HANDLE_BEGIN_END_RUN } delete_begin_end_run, {from module MOD_HANDLE_BEGIN_END_RUN } add_beg_end_run_dbsc, {from module MOD_HANDLE_BEGIN_END_RUN } add_beg_end_run_sbsc, {from module MOD_HANDLE_BEGIN_END_RUN } show_beg_end_run_entries, {from module MOD_HANDLE_BEGIN_END_RUN } true_length, {from module MOD_PARSE_GLOBAL } bad_format, bad_param, bad_failure, {from module MOD_PARSE_DETAIL } inline_check_command_count, {from module MOD_PARSE_DETAIL } inline_check_object_has_no_item, {from module MOD_PARSE_DETAIL } inline_check_object_asserted, {from module MOD_PARSE_DETAIL } inline_check_object_in_range, {from module MOD_PARSE_DETAIL } update_register, {from module MOD_HANDLE_REGISTER } zero_fmln_thresholds, {from module MOD_HANDLE_FMLN } verify_fmln_thresholds, {from module MOD_HANDLE_FMLN } program_fmln_momentum_lookup, {from module MOD_HANDLE_FMLN } verify_fmln_momentum_lookup, {from module MOD_HANDLE_FMLN } setup_force_db, {from module MOD_HANDLE_SPTRG } init_auxi, {from module MOD_INIT_AUXI } init_test_mode, {from module MOD_HARDWARE_TEST } quit_test_mode, {from module MOD_HARDWARE_TEST } hard_test_mode, {from module MOD_HARDWARE_TEST } reg_drv11j_pilot, {from module MOD_COMMON_HARD_IO } reg_drv11j_assist, {from module MOD_COMMON_HARD_IO } array_data_block_spy, {from module MOD_COMMON_HARD_IO } eight_bit_0_7, eight_integer_0_7, {from module MOD_COMMON_HARD_IO } pilot, {from module MOD_COMMON_HARD_IO } array_0_255, {from module MOD_COMMON_HARD_IO } proced_tcs_read_cbus, {from module MOD_TCS_IO_CBUS_HANDLING } proced_tcs_write_cbus, {from module MOD_TCS_IO_CBUS_HANDLING } proced_tcs_read_fmln_cbus, {from module MOD_TCS_IO_CBUS_HANDLING } proced_tcs_write_fmln_cbus, {from module MOD_TCS_IO_CBUS_HANDLING } proced_tcs_read_cbus_histogram, {from module MOD_TCS_IO_CBUS_HANDLING } proced_tcs_initialize_drv11j, {from module MOD_TCS_IO_DRV11J_HANDLING } proced_tcs_read_drv11j_intr_reg, {from module MOD_TCS_IO_DRV11J_HANDLING } proced_tcs_reset_comint, {from module MOD_TCS_IO_COMINT_HANDLING } proced_tcs_read_status, {from module MOD_TCS_IO_COMINT_HANDLING } proced_tcs_write_prscratio, {from mod MOD_TCS_IO_PRESCALER_HANDLING } proced_tcs_read_prscratio, {from mod MOD_TCS_IO_PRESCALER_HANDLING } proced_tcs_read_dbscaler, {from module MOD_TCS_IO_SCALER_HANDLING } proced_tcs_read_sbscalers, {from module MOD_TCS_IO_SCALER_HANDLING } proced_tcs_request_spy, {from module MOD_TCS_IO_SPY_HANDLING } proced_tcs_read_db_spy, {from module MOD_TCS_IO_SPY_HANDLING } deallocate_trigger, {from module MOD_IO_ALLOCATION_HANDLING } PHYSICAL_ADDRESS, {from module $PHYSICAL_ADDRESS } ELN$PHYSICAL_ADDRESS ; {from module $PHYSICAL_ADDRESS } { *************************************************************************** } { *************************************************************************** } %INCLUDE 'SITE_DEPENDENT.CST/LIST' TYPE cbus_io_quantities = ( cbus, mba, ca, fa, dataout, ratio, sbsc_scaler, state, through, fmln_thrsh ) ; cbus_io_quantity_list = SET OF cbus_io_quantities ; bit = [BIT(1)] 0..1 ; byte = [BYTE] 0..255 ; word = [WORD] 0..65535 ; long_multi_def = [LONG] {used in phat_readpQBA/pVBA} PACKED RECORD CASE INTEGER OF 0 : ( int : INTEGER ) ; 1 : ( byte_1 : byte ; byte_2 : byte ; byte_3 : byte ; byte_4 : byte ) ; 2 : ( word_1 : byte ; word_2 : byte ) ; 3 : ( lsb : [POS(0)] bit ; upper_31 : 0..2147483647 ) ; 4 : ( lower_31 : 0..2147483647 ; msb : [POS(31)] bit ) ; END ; VAR item_num : INTEGER ; start_state : [BIT(1)] 0..1 ; through_Px_magn : INTEGER ; { *************************************************************************** } { *************************************************************************** } PROCEDURE read_param ( param_set : cbus_io_quantity_list ) ; BEGIN IF ( cbus IN param_set ) THEN BEGIN inline_check_object_in_range ( COMMAND := 1, LOW := 0, HIGH := 3 ) ; inline_check_object_asserted ( COMMAND := 1 ) ; inline_check_object_has_no_item ( COMMAND := 1 ) ; param^.cbus := parsed_command^[1].objid ; END ; IF ( mba IN param_set ) THEN BEGIN inline_check_object_in_range ( COMMAND := 2, LOW := 0, HIGH := 255 ) ; inline_check_object_asserted ( COMMAND := 2 ) ; inline_check_object_has_no_item ( COMMAND := 2 ) ; param^.mba := parsed_command^[2].objid ; END ; IF ( ca IN param_set ) THEN BEGIN inline_check_object_in_range ( COMMAND := 3, LOW := 0, HIGH := 63 ) ; inline_check_object_asserted ( COMMAND := 3 ) ; inline_check_object_has_no_item ( COMMAND := 3 ) ; param^.ca := parsed_command^[3].objid ; END ; IF ( fa IN param_set ) THEN BEGIN inline_check_object_in_range ( COMMAND := 4, LOW := 0, HIGH := 255 ) ; inline_check_object_asserted ( COMMAND := 4 ) ; inline_check_object_has_no_item ( COMMAND := 4 ) ; param^.fa := parsed_command^[4].objid ; END ELSE IF ( sbsc_scaler IN param_set ) THEN BEGIN inline_check_object_in_range ( COMMAND := 4, LOW := 0, HIGH := 31 ) ; inline_check_object_asserted ( COMMAND := 4 ) ; inline_check_object_has_no_item ( COMMAND := 4 ) ; item_num := parsed_command^[4].objid ; END ; IF ( dataout IN param_set ) THEN BEGIN inline_check_object_in_range ( COMMAND := 5, LOW := 0, HIGH := 255 ) ; inline_check_object_asserted ( COMMAND := 5 ) ; inline_check_object_has_no_item ( COMMAND := 5 ) ; param^.dataout := parsed_command^[5].objid ; END ELSE IF ( ratio IN param_set ) THEN BEGIN inline_check_object_in_range ( COMMAND := 5, LOW := 0, HIGH:=16777215 ); inline_check_object_asserted ( COMMAND := 5 ) ; inline_check_object_has_no_item ( COMMAND := 5 ) ; param^.psratio := parsed_command^[5].objid ; END ELSE IF ( state IN param_set ) THEN BEGIN inline_check_object_in_range ( COMMAND := 5, LOW := 0, HIGH:= 1 ); inline_check_object_asserted ( COMMAND := 5 ) ; inline_check_object_has_no_item ( COMMAND := 5 ) ; start_state := parsed_command^[5].objid ; END ELSE IF ( fmln_thrsh IN param_set ) THEN BEGIN inline_check_object_in_range ( COMMAND := 5, LOW := 0, HIGH:= 7 ); inline_check_object_asserted ( COMMAND := 5 ) ; inline_check_object_has_no_item ( COMMAND := 5 ) ; item_num := parsed_command^[5].objid ; END ; IF ( through IN param_set ) THEN BEGIN inline_check_object_in_range ( COMMAND := 6, LOW := 0, HIGH:= 255 ); inline_check_object_asserted ( COMMAND := 6 ) ; inline_check_object_has_no_item ( COMMAND := 6 ) ; through_Px_magn := parsed_command^[6].objid ; END ; END ; { *************************************************************************** } [INLINE] PROCEDURE inline_return_param ; BEGIN replymsg[con_served]^.replysupl := CONVERT (STRING, param^.datain); END ; { *************************************************************************** } { *************************************************************************** } PROCEDURE phat_writereg ; BEGIN inline_check_command_count ( TOTAL := 5 ) ; read_param ( [ cbus, mba, ca, fa, dataout ] ) ; IF ( parse_status = parse_failure ) THEN GOTO quit_write_reg ; proced_tcs_write_cbus ( param ) ; IF ( inline_tracing(trace_info) <> 0 ) THEN handle_trc_inf ( TAG := 'PHT/CBS%', MESSAGE := ' WRITE Reg ' + '@ cbus' + CONVERT(STRING(2),param^.cbus) + ' mba' + CONVERT(STRING(4),param^.mba) + ' ca' + CONVERT(STRING(3),param^.ca) + ' fa' + CONVERT(STRING(4),param^.fa) + ' prev' + CONVERT(STRING(4),param^.dataprev) + ' write' + CONVERT(STRING(4),param^.dataout) + ' read' + CONVERT(STRING(4),param^.datain) ); IF ( param^.datain <> param^.dataout ) THEN replymsg[con_served]^.replystat := ' BAD' ; replymsg[con_served]^.replysupl := CONVERT(STRING(3),param^.dataprev) + '->' + CONVERT(STRING(3),param^.datain) ; quit_write_reg : END ; { *************************************************************************** } { *************************************************************************** } PROCEDURE phat_w_hdbase ; VAR card_pointer :^ANYTYPE ; reg_pointer :^cbus_register ; status : status_type ; BEGIN inline_check_command_count ( TOTAL := 5 ) ; read_param ( [ cbus, mba, ca, fa, dataout ] ) ; IF ( parse_status = parse_failure ) THEN GOTO quit_write_hdbase ; IF ( inline_tracing(trace_info) <> 0 ) THEN handle_trc_inf ( TAG := 'PHT/HDB%', MESSAGE := ' WRITE Hard Data Base ' + '@ cbus' + CONVERT(STRING(2),param^.cbus) + ' mba' + CONVERT(STRING(4),param^.mba) + ' ca' + CONVERT(STRING(3),param^.ca) + ' fa' + CONVERT(STRING(4),param^.fa) + ' data' + CONVERT(STRING(4),param^.dataout) ); find_card_pointer ( CBUS := param^.cbus, MBA := param^.mba, CA := param^.ca, CARD := card_pointer, STATUS := status ) ; IF ( status = not_found ) THEN BEGIN IF ( inline_tracing(trace_error) <> 0 ) THEN handle_trc_err ( TAG := 'PHT/HDB%', MESSAGE := ' Card Not Found in Hard Data Base ' + '@ cbus' + CONVERT(STRING(2),param^.cbus) + ' mba' + CONVERT(STRING(4),param^.mba) + ' ca' + CONVERT(STRING(3),param^.ca) ); bad_failure ; GOTO quit_write_hdbase ; END ; find_reg_pointer ( FA := param^.fa, CARD := card_pointer, REGISTER := reg_pointer, STATUS := status ) ; IF ( status = not_found ) THEN BEGIN IF ( inline_tracing(trace_error) <> 0 ) THEN handle_trc_err ( TAG := 'PHT/HDB%', MESSAGE := ' Register Not Found in Hard Data Base ' + '@ cbus' + CONVERT(STRING(2),param^.cbus) + ' mba' + CONVERT(STRING(4),param^.mba) + ' ca' + CONVERT(STRING(3),param^.ca) + ' fa' + CONVERT(STRING(3),param^.fa) ); bad_failure ; GOTO quit_write_hdbase ; END ; { *** modify the hardware data base } update_register ( CARD := card_pointer, REGISTER := reg_pointer, IOPAR := param, DATA := param^.dataout, STATUS := status ) ; IF ( status = io_failure ) THEN bad_failure ; replymsg[con_served]^.replysupl := CONVERT(STRING(3),param^.dataprev) + '->' + CONVERT(STRING(3),param^.datain) ; quit_write_hdbase : END ; { *************************************************************************** } { *************************************************************************** } PROCEDURE phat_show_reg ; VAR card_pointer :^card_header ; reg_pointer :^cbus_register ; status : status_type ; string_buffer: VARYING_STRING(50) ; singularity : reg_singularities ; BEGIN inline_check_command_count ( TOTAL := 4 ) ; read_param ( [ cbus, mba, ca, fa ] ) ; IF ( parse_status = parse_failure ) THEN GOTO quit_show_reg ; IF ( inline_tracing(trace_info) <> 0 ) THEN handle_trc_inf ( TAG := 'PHT/HDB%', MESSAGE := ' SHOW Hard Data Base ' + '@ cbus' + CONVERT(STRING(2),param^.cbus) + ' mba' + CONVERT(STRING(4),param^.mba) + ' ca' + CONVERT(STRING(3),param^.ca) + ' fa' + CONVERT(STRING(4),param^.fa) ); find_card_pointer ( CBUS := param^.cbus, MBA := param^.mba, CA := param^.ca, CARD := card_pointer, STATUS := status ) ; IF ( status = not_found ) THEN BEGIN IF ( inline_tracing(trace_error) <> 0 ) THEN handle_trc_err ( TAG := 'PHT/HDB%', MESSAGE := ' Card Not Found in Hard Data Base ' + '@ cbus' + CONVERT(STRING(2),param^.cbus) + ' mba' + CONVERT(STRING(4),param^.mba) + ' ca' + CONVERT(STRING(3),param^.ca) ); bad_failure ; GOTO quit_show_reg ; END ; IF ( inline_tracing(trace_info) <> 0 ) THEN handle_trc_inf ( TAG := 'PHT/HDB%', MESSAGE := ' Card ' + '@ cbus' + CONVERT(STRING(2),param^.cbus) + ' mba' + CONVERT(STRING(4),param^.mba) + ' ca' + CONVERT(STRING(3),param^.ca) + ' has' + CONVERT(STRING(4),card_pointer^.regtotal) + ' registers' ); find_reg_pointer ( FA := param^.fa, CARD := card_pointer, REGISTER := reg_pointer, STATUS := status ) ; IF ( status = not_found ) THEN BEGIN IF ( inline_tracing(trace_error) <> 0 ) THEN handle_trc_err ( TAG := 'PHT/HDB%', MESSAGE := ' Register Not Found in Hard Data Base ' + '@ cbus' + CONVERT(STRING(2),param^.cbus) + ' mba' + CONVERT(STRING(4),param^.mba) + ' ca' + CONVERT(STRING(3),param^.ca) + ' fa' + CONVERT(STRING(3),param^.fa) ); bad_failure ; GOTO quit_show_reg ; END ; string_buffer := '' ; FOR singularity := histdep TO ronly DO IF ( singularity IN reg_pointer^.class ) THEN string_buffer := string_buffer + '/' + CONVERT(STRING,singularity) ; IF ( string_buffer = '' ) THEN handle_trc_inf ( TAG := 'PHT/HDB%', MESSAGE := ' Register ' + '@ fa' + CONVERT(STRING(4),param^.fa) + ' has no special singularities ' ) ELSE handle_trc_inf ( TAG := 'PHT/HDB%', MESSAGE := ' Register ' + '@ fa' + CONVERT(STRING(4),param^.fa) + ' has sigularities ' + string_buffer + '/' ) ; IF ( reg_pointer^.pipelen = 0 ) THEN handle_trc_inf ( TAG := 'PHT/HDB%', MESSAGE := ' Register ' + '@ fa' + CONVERT(STRING(4),param^.fa) + ' is not of pipeline type' ) ELSE handle_trc_inf ( TAG := 'PHT/HDB%', MESSAGE := ' Register ' + '@ fa' + CONVERT(STRING(4),param^.fa) + ' is pipeline of length ' + CONVERT(STRING,reg_pointer^.pipelen) + ', Current Beam X at depth ' + CONVERT(STRING,reg_pointer^.xdepth) ) ; handle_trc_inf ( TAG := 'PHT/HDB%', MESSAGE := ' Register ' + '@ fa' + CONVERT(STRING(4),param^.fa) + ' last read as' + CONVERT(STRING(4),reg_pointer^.content) + ', Msk= W ' + BIN(reg_pointer^.wmsk,8,8) + ' R ' + BIN(reg_pointer^.rmsk,8,8) ) ; replymsg[con_served]^.replysupl := CONVERT(STRING(3),reg_pointer^.content) ; quit_show_reg : END ; { *************************************************************************** } { *************************************************************************** } PROCEDURE phat_readreg ; BEGIN inline_check_command_count ( TOTAL := 4 ) ; read_param ( [cbus, mba, ca, fa ] ) ; IF ( parse_status = parse_failure ) THEN GOTO quit_readreg ; proced_tcs_read_cbus ( param ) ; inline_return_param ; IF ( inline_tracing(trace_info) <> 0 ) THEN handle_trc_inf ( TAG := 'PHT/CBS%', MESSAGE := ' READ Reg ' + '@ cbus' + CONVERT(STRING(2),param^.cbus) + ' mba' + CONVERT(STRING(4),param^.mba) + ' ca' + CONVERT(STRING(3),param^.ca) + ' fa' + CONVERT(STRING(4),param^.fa) + ' data' + CONVERT(STRING(4),param^.datain) + ' or bin' + BIN(param^.datain,9,8) ) ; quit_readreg : END ; { *************************************************************************** } { *************************************************************************** } PROCEDURE phat_readhist ; VAR histogram : array_0_255 ; sample_size : INTEGER ; bin : INTEGER ; peak_bin, peak_count : INTEGER ; BEGIN inline_check_command_count ( TOTAL := 5 ) ; read_param ( [ cbus, mba, ca, fa ] ) ; inline_check_object_asserted ( COMMAND := 5 ) ; inline_check_object_has_no_item ( COMMAND := 5 ) ; sample_size := parsed_command^[5].objid ; IF ( parse_status = parse_failure ) THEN GOTO quit_readhist ; histogram := ZERO ; proced_tcs_read_cbus_histogram ( PARAM := param, HISTOGRAM := ADDRESS(histogram), SAMPLE_SIZE := sample_size ) ; peak_count := 0 ; FOR bin := 0 TO 255 DO IF ( histogram[bin] > 0 ) THEN BEGIN IF ( inline_tracing(trace_info) <> 0 ) THEN handle_trc_inf ( TAG := 'PHT/CBS%', MESSAGE := ' READ Reg hist ' + '@ cbus' + CONVERT(STRING(2),param^.cbus) + ' mba' + CONVERT(STRING(4),param^.mba) + ' ca' + CONVERT(STRING(3),param^.ca) + ' fa' + CONVERT(STRING(4),param^.fa) + ' data' + CONVERT(STRING(4),bin) + ' read' + CONVERT(STRING(5),histogram[bin]) + ' times' ) ; IF ( histogram[bin] > peak_count ) THEN BEGIN peak_bin := bin ; peak_count := histogram[bin] ; END ; END ; replymsg[con_served]^.replysupl := CONVERT (STRING(3), peak_bin ) + '*' + CONVERT (STRING(4), peak_count ) ; quit_readhist : END ; { *************************************************************************** } { *************************************************************************** } PROCEDURE phat_readsbsc ; VAR field_num : INTEGER ; BEGIN inline_check_command_count ( TOTAL := 4 ) ; read_param ( [ cbus, mba, ca, sbsc_scaler ] ) ; IF ( parse_status = parse_failure ) THEN GOTO quit_readsbsc ; proced_tcs_read_sbscalers ( param ) ; IF ( inline_tracing(trace_info) <> 0 ) THEN handle_trc_inf ( TAG := 'PHT/CBS%', MESSAGE := ' READ SBSC ' + '@ cbus' + CONVERT(STRING(2),param^.cbus) + ' mba' + CONVERT(STRING(4),param^.mba) + ' ca' + CONVERT(STRING(3),param^.ca) ) ; replymsg[con_served]^.replysupl := HEX(param^.a_sbsc[4,item_num],2,2) + HEX(param^.a_sbsc[3,item_num],2,2) + HEX(param^.a_sbsc[2,item_num],2,2) + HEX(param^.a_sbsc[1,item_num],2,2) ; FOR field_num := 0 TO 31 DO IF ( inline_tracing(trace_info) <> 0 ) THEN handle_trc_inf ( TAG := 'PHT/CBS%', MESSAGE := ' scaler #' + CONVERT(STRING(3),field_num) + ' data ' + HEX(param^.a_sbsc[4,field_num],2,2) + HEX(param^.a_sbsc[3,field_num],2,2) + HEX(param^.a_sbsc[2,field_num],2,2) + HEX(param^.a_sbsc[1,field_num],2,2) ) ; quit_readsbsc : END ; { *************************************************************************** } { *************************************************************************** } PROCEDURE phat_readdbsc ; BEGIN inline_check_command_count ( TOTAL := 4 ) ; read_param ( [cbus, mba, ca, fa ] ) ; IF ( parse_status = parse_failure ) THEN GOTO quit_readdbsc ; proced_tcs_read_dbscaler ( param ) ; replymsg[con_served]^.replysupl := HEX(param^.a_dbsc[4],2,2) + HEX(param^.a_dbsc[3],2,2) + HEX(param^.a_dbsc[2],2,2) + HEX(param^.a_dbsc[1],2,2) ; IF ( inline_tracing(trace_info) <> 0 ) THEN handle_trc_inf ( TAG := 'PHT/CBS%', MESSAGE := ' READ DBSC ' + '@ cbus' + CONVERT(STRING(2),param^.cbus) + ' mba' + CONVERT(STRING(4),param^.mba) + ' ca' + CONVERT(STRING(3),param^.ca) + ' fa' + CONVERT(STRING(4),param^.fa) + ' data' + HEX(param^.a_dbsc[5],6,2) + HEX(param^.a_dbsc[4],2,2) + HEX(param^.a_dbsc[3],2,2) + HEX(param^.a_dbsc[2],2,2) + HEX(param^.a_dbsc[1],2,2) ) ; quit_readdbsc : END ; { *************************************************************************** } { *************************************************************************** } PROCEDURE phat_prescale ; BEGIN inline_check_command_count ( TOTAL := 5 ) ; read_param ( [cbus, mba, ca, fa, ratio ] ) ; IF ( parse_status = parse_failure ) THEN GOTO quit_write_prescale ; proced_tcs_write_prscratio ( param ) ; IF ( inline_tracing(trace_info) <> 0 ) THEN handle_trc_inf ( TAG := 'PHT/CBS%', MESSAGE := ' WRITE Prescaler ' + '@ cbus' + CONVERT(STRING(2),param^.cbus) + ' mba' + CONVERT(STRING(4),param^.mba) + ' ca' + CONVERT(STRING(3),param^.ca) + ' fa' + CONVERT(STRING(4),param^.fa) + ' ratio' + CONVERT(STRING(10),param^.psratio) ); replymsg[con_served]^.replysupl := CONVERT(STRING,param^.psratio) ; quit_write_prescale : END ; { *************************************************************************** } { *************************************************************************** } PROCEDURE phat_readprsc ; BEGIN inline_check_command_count ( TOTAL := 4 ) ; read_param ( [cbus, mba, ca, fa ] ) ; IF ( parse_status = parse_failure ) THEN GOTO quit_read_prescale ; proced_tcs_read_prscratio ( param ) ; IF ( inline_tracing(trace_info) <> 0 ) THEN handle_trc_inf ( TAG := 'PHT/CBS%', MESSAGE := ' READ Prescaler ' + '@ cbus' + CONVERT(STRING(2),param^.cbus) + ' mba' + CONVERT(STRING(4),param^.mba) + ' ca' + CONVERT(STRING(3),param^.ca) + ' fa' + CONVERT(STRING(4),param^.fa) + ' ratio' + CONVERT(STRING(10),param^.psratio)); replymsg[con_served]^.replysupl := CONVERT(STRING,param^.psratio) ; quit_read_prescale : END ; { *************************************************************************** } { *************************************************************************** } PROCEDURE phat_reset ; BEGIN inline_check_command_count ( TOTAL := 0 ) ; IF ( parse_status = parse_failure ) THEN GOTO quit_reset_comint ; IF ( inline_tracing(trace_info) <> 0 ) THEN handle_trc_inf ( TAG := 'PHT/CMI%', MESSAGE := ' Reset comint card ' ) ; proced_tcs_reset_comint ; quit_reset_comint : END ; { *************************************************************************** } { *************************************************************************** } PROCEDURE phat_reqstspy; BEGIN inline_check_command_count ( TOTAL := 0 ) ; IF ( parse_status = parse_failure ) THEN GOTO quit_request_spy ; IF ( inline_tracing(trace_info) <> 0 ) THEN handle_trc_inf ( TAG := 'PHT/CMI%', MESSAGE := ' Request copy of next data block ' ) ; proced_tcs_request_spy ; quit_request_spy : END ; { *************************************************************************** } { *************************************************************************** } PROCEDURE phat_readspy ; VAR dbspy :^array_data_block_spy ; outbuff : STRING(78) ; i, j : INTEGER ; base : INTEGER ; BEGIN inline_check_command_count ( TOTAL := 1 ) ; inline_check_object_in_range ( COMMAND := 1, LOW := 0, HIGH := 3936 ) ; inline_check_object_asserted ( COMMAND := 1 ) ; inline_check_object_has_no_item ( COMMAND := 1 ) ; IF ( parse_status = parse_failure ) THEN GOTO quit_read_spy ; base := parsed_command^[1].objid ; IF ( inline_tracing(trace_info) <> 0 ) THEN handle_trc_inf ( TAG := 'PHT/CMI%', MESSAGE := ' Read Pilot Spy, display starting at address ' + CONVERT(STRING,base) ) ; NEW (dbspy) ; proced_tcs_read_db_spy ( dbspy, Pilot ) ; replymsg[con_served]^.replysupl := HEX ( dbspy^[base ], 4, 2 ) + HEX ( dbspy^[base+1], 4, 2 ) ; FOR i := 0 TO 9 DO BEGIN outbuff := HEX ( base+16*i, 3, 3 ) ; FOR j := 0 TO 15 DO SUBSTR(outbuff,6+4*j,4) := HEX(dbspy^[base+16*i+j],4,2) ; IF ( inline_tracing(trace_info) <> 0 ) THEN handle_trc_inf ( MESSAGE := outbuff ) ; END ; DISPOSE (dbspy) ; quit_read_spy : END ; { *************************************************************************** } { *************************************************************************** } PROCEDURE phat_read11jr ; BEGIN inline_check_command_count ( TOTAL := 0 ) ; IF ( parse_status = parse_failure ) THEN GOTO quit_read_drv11j_intr_reg ; IF ( inline_tracing(trace_info) <> 0 ) THEN handle_trc_inf ( TAG := 'PHT/DRV%', MESSAGE := ' Pilot DRV11J interrupt control registers ' ) ; proced_tcs_read_drv11j_intr_reg ( reg_drv11j_pilot ) ; IF ( inline_tracing(trace_info) <> 0 ) THEN handle_trc_inf ( TAG := 'PHT/DRV%', MESSAGE := ' Assistant DRV11J interrupt control registers'); proced_tcs_read_drv11j_intr_reg ( reg_drv11j_assist ) ; quit_read_drv11j_intr_reg : END ; { *************************************************************************** } { *************************************************************************** } PROCEDURE phat_monitor ; VAR i : INTEGER ; BEGIN inline_check_command_count ( TOTAL := 0 ) ; IF ( parse_status = parse_failure ) THEN GOTO quit_monitor_comint ; IF ( inline_tracing(trace_info) <> 0 ) THEN handle_trc_inf ( TAG := 'PHT/CMI%', MESSAGE := ' gather comint card monitoring data' ) ; proced_tcs_read_status ( reg_drv11j_pilot, param ) ; SUBSTR ( replymsg[con_served]^.replystring, 1, 2 ) := HEX(param^.ctrl,2,2) ; FOR i := 2 TO 200 DO BEGIN WAIT_ANY ( TIME := -100000 ) ; { 10 ms wait } proced_tcs_read_status ( reg_drv11j_pilot, param ) ; SUBSTR(replymsg[con_served]^.replystring,2*i,2):=HEX(param^.status,2,2); END ; quit_monitor_comint : END ; { *************************************************************************** } { *************************************************************************** } PROCEDURE phat_trace_io ; BEGIN inline_check_command_count ( TOTAL := 1 ) ; inline_check_object_in_range ( COMMAND := 1, LOW := 0, HIGH := 1 ) ; inline_check_object_asserted ( COMMAND := 1 ) ; inline_check_object_has_no_item ( COMMAND := 1 ) ; IF ( parse_status = parse_failure ) THEN GOTO quit_set_trace_io ; modify_io_tracing ( STATE := CONVERT(state_type,parsed_command^[1].objid) ) ; quit_set_trace_io : END ; { *************************************************************************** } { *************************************************************************** } PROCEDURE phat_trace_ms ; BEGIN inline_check_command_count ( TOTAL := 2 ) ; inline_check_object_in_range ( COMMAND := 1, LOW := 0, HIGH := 1 ) ; inline_check_object_asserted ( COMMAND := 1 ) ; inline_check_object_has_no_item ( COMMAND := 1 ) ; inline_check_object_in_range ( COMMAND := 2, LOW := 0, HIGH := 1 ) ; inline_check_object_asserted ( COMMAND := 2 ) ; inline_check_object_has_no_item ( COMMAND := 2 ) ; IF ( parse_status = parse_failure ) THEN GOTO quit_set_trace_msg ; modify_trace_con ( CONSOLE := CONVERT(state_type,parsed_command^[1].objid), LOGFILE := CONVERT(state_type,parsed_command^[2].objid) ); quit_set_trace_msg : END ; { *************************************************************************** } { *************************************************************************** } PROCEDURE phat_trace_in ; BEGIN inline_check_command_count ( TOTAL := 2 ) ; inline_check_object_in_range ( COMMAND := 1, LOW := 0, HIGH := 1 ) ; inline_check_object_asserted ( COMMAND := 1 ) ; inline_check_object_has_no_item ( COMMAND := 1 ) ; inline_check_object_in_range ( COMMAND := 2, LOW := 0, HIGH := 1 ) ; inline_check_object_asserted ( COMMAND := 2 ) ; inline_check_object_has_no_item ( COMMAND := 2 ) ; IF ( parse_status = parse_failure ) THEN GOTO quit_set_trace_info ; modify_trace_inf ( CONSOLE := CONVERT(state_type,parsed_command^[1].objid), LOGFILE := CONVERT(state_type,parsed_command^[2].objid) ); quit_set_trace_info : END ; { *************************************************************************** } { *************************************************************************** } PROCEDURE phat_trace_wa ; BEGIN inline_check_command_count ( TOTAL := 2 ) ; inline_check_object_in_range ( COMMAND := 1, LOW := 0, HIGH := 1 ) ; inline_check_object_asserted ( COMMAND := 1 ) ; inline_check_object_has_no_item ( COMMAND := 1 ) ; inline_check_object_in_range ( COMMAND := 2, LOW := 0, HIGH := 1 ) ; inline_check_object_asserted ( COMMAND := 2 ) ; inline_check_object_has_no_item ( COMMAND := 2 ) ; IF ( parse_status = parse_failure ) THEN GOTO quit_set_trace_warning ; modify_trace_wrn ( CONSOLE := CONVERT(state_type,parsed_command^[1].objid), LOGFILE := CONVERT(state_type,parsed_command^[2].objid) ); quit_set_trace_warning : END ; { *************************************************************************** } { *************************************************************************** } PROCEDURE phat_trace_er ; BEGIN inline_check_command_count ( TOTAL := 2 ) ; inline_check_object_in_range ( COMMAND := 1, LOW := 0, HIGH := 1 ) ; inline_check_object_asserted ( COMMAND := 1 ) ; inline_check_object_has_no_item ( COMMAND := 1 ) ; inline_check_object_in_range ( COMMAND := 2, LOW := 0, HIGH := 1 ) ; inline_check_object_asserted ( COMMAND := 2 ) ; inline_check_object_has_no_item ( COMMAND := 2 ) ; IF ( parse_status = parse_failure ) THEN GOTO quit_set_trace_error ; modify_trace_err ( CONSOLE := CONVERT(state_type,parsed_command^[1].objid), LOGFILE := CONVERT(state_type,parsed_command^[2].objid) ); quit_set_trace_error : END ; { *************************************************************************** } { *************************************************************************** } PROCEDURE phat_set_wsiz ; BEGIN inline_check_command_count ( TOTAL := 1 ) ; inline_check_object_in_range ( COMMAND := 1, LOW := 2, HIGH := 16 ) ; inline_check_object_asserted ( COMMAND := 1 ) ; inline_check_object_has_no_item ( COMMAND := 1 ) ; IF ( parse_status = parse_failure ) THEN GOTO quit_set_window_size ; set_sys_window ( SIZE := parsed_command^[1].objid ) ; quit_set_window_size : END ; { *************************************************************************** } { *************************************************************************** } PROCEDURE phat_new_con ; VAR elncon_port : PORT; status : INTEGER ; BEGIN inline_check_command_count ( TOTAL := 1 ) ; inline_check_object_in_range ( COMMAND := 1, LOW := 1, HIGH := 9 ) ; inline_check_object_asserted ( COMMAND := 1 ) ; inline_check_object_has_no_item ( COMMAND := 1 ) ; IF ( parse_status = parse_failure ) THEN GOTO quit_create_channel ; handle_trc_sys ( TAG := 'PHT/SYS%', MESSAGE := ' Create Communication Channel #' + CONVERT(STRING(1),parsed_command^[1].objid) ) ; TRANSLATE_NAME ( elncon_port, eln_recv_task_name[parsed_command^[1].objid], NAME$LOCAL, STATUS := status ) ; IF ( status = 1 ) THEN BEGIN handle_trc_sys ( TAG := 'PHT/SYS%', MESSAGE := ' Channel Already Exists ' ) ; GOTO quit_create_channel ; END ; create_new_conn_channel ( parsed_command^[1].objid ) ; quit_create_channel: END ; { *************************************************************************** } PROCEDURE create_new_conn_channel ( chan_num : INTEGER ) ; EXTERNAL ; { *************************************************************************** } { *************************************************************************** } PROCEDURE phat_del_con ; VAR elncon_port : PORT; status : INTEGER ; BEGIN inline_check_command_count ( TOTAL := 1 ) ; inline_check_object_in_range ( COMMAND := 1, LOW := 1, HIGH := 9 ) ; inline_check_object_asserted ( COMMAND := 1 ) ; inline_check_object_has_no_item ( COMMAND := 1 ) ; IF ( parse_status = parse_failure ) THEN GOTO quit_delete_channel ; handle_trc_sys ( TAG := 'PHT/SYS%', MESSAGE := ' Deleting Communication Channel #' + CONVERT(STRING(1),parsed_command^[1].objid) ) ; IF ( parsed_command^[1].objid = con_served ) THEN BEGIN handle_trc_sys ( TAG := 'PHT/SYS%', MESSAGE := ' Cannot Delete Current Channel ' ); GOTO quit_delete_channel ; END ; TRANSLATE_NAME ( elncon_port, eln_recv_task_name[parsed_command^[1].objid], NAME$LOCAL, STATUS := status ) ; IF ( status <> 1 ) THEN BEGIN handle_trc_sys ( TAG := 'PHT/SYS%', MESSAGE := ' Channel Does Not Exists ' ) ; GOTO quit_delete_channel ; END ; delete_conn_channel ( parsed_command^[1].objid ) ; quit_delete_channel: END ; { *************************************************************************** } PROCEDURE delete_conn_channel ( chan_num : INTEGER ) ; EXTERNAL ; { *************************************************************************** } { *************************************************************************** } PROCEDURE phat_shutdown ; BEGIN inline_check_command_count ( TOTAL := 1 ) ; inline_check_object_in_range ( COMMAND := 1, LOW := 0, HIGH := 0 ) ; inline_check_object_asserted ( COMMAND := 1 ) ; inline_check_object_has_no_item ( COMMAND := 1 ) ; IF ( parse_status = parse_failure ) THEN GOTO quit_shutdown ; handle_trc_sys ( TAG := 'PHT/SYS%', MESSAGE := ' TRICS Shut Down, Please Disconnect ' ); RESUME ( main_process ) ; quit_shutdown : END ; { *************************************************************************** } { *************************************************************************** } PROCEDURE phat_closelog ; BEGIN inline_check_command_count ( TOTAL := 0 ) ; IF ( parse_status = parse_failure ) THEN GOTO quit_closelog ; handle_trc_sys ( TAG := 'PHT/LOG%', MESSAGE := ' Temporarily Close Log File ' ); close_logfile ; quit_closelog : END ; { *************************************************************************** } { *************************************************************************** } PROCEDURE phat_rfmp_rat ; BEGIN inline_check_command_count ( TOTAL := 1 ) ; inline_check_object_in_range ( COMMAND := 1, LOW := 0, HIGH := 600000000 ) ; inline_check_object_asserted ( COMMAND := 1 ) ; inline_check_object_has_no_item ( COMMAND := 1 ) ; IF ( parse_status = parse_failure ) THEN GOTO quit_set_rfmp_rate ; handle_trc_sys ( TAG := 'PHT/CNS%', MESSAGE := ' Set Monitoring Pool Refresh Rate to ' + CONVERT(STRING,(parsed_command^[1].objid/10000000)) + ' s ' ) ; set_mpool_rate ( RATE := parsed_command^[1].objid ) ; quit_set_rfmp_rate : END ; { *************************************************************************** } PROCEDURE set_mpool_rate ( rate : INTEGER ) ; EXTERNAL ; { *************************************************************************** } { *************************************************************************** } PROCEDURE phat_rem_cons ; VAR status : status_type ; BEGIN inline_check_command_count ( TOTAL := 1 ) ; inline_check_object_in_range ( COMMAND := 1, LOW := 0, HIGH := 1 ) ; inline_check_object_asserted ( COMMAND := 1 ) ; inline_check_object_has_no_item ( COMMAND := 1 ) ; IF ( parse_status = parse_failure ) THEN GOTO quit_redirect_console ; IF ( parsed_command^[1].objid = 1 ) THEN BEGIN init_remcons ( STATUS := status ) ; CASE status OF ok : handle_trc_sys ( TAG := 'PHT/CNS%', MESSAGE := ' Remote Console Server Activated ' ) ; already_done : handle_trc_sys ( TAG := 'PHT/CNS%', MESSAGE := ' Remote Console Server already Active ' ) ; io_failure : handle_trc_err ( TAG := 'PHT/CNS%', MESSAGE := ' Failure Activating Remote Console Server '); END ; IF ( status = ok ) THEN set_sys_window ; END ELSE BEGIN stop_remcons ; handle_trc_sys ( TAG := 'PHT/CNS%', MESSAGE := ' Remote Console Server De-Activated ' ) ; END ; quit_redirect_console : END ; { *************************************************************************** } { *************************************************************************** } PROCEDURE phat_cre_rfmp ; VAR status : INTEGER ; BEGIN inline_check_command_count ( TOTAL := 1 ) ; inline_check_object_in_range ( COMMAND := 1, LOW := 0, HIGH := 0 ) ; inline_check_object_asserted ( COMMAND := 1 ) ; inline_check_object_has_no_item ( COMMAND := 1 ) ; IF ( parse_status = parse_failure ) THEN GOTO quit_create_rfmp ; handle_trc_sys ( TAG := 'PHT/SYS%', MESSAGE := ' Create Process Refreshing Monitoring Pool ' ) ; start_rfrsh_mpool_proc ; quit_create_rfmp : END ; { *************************************************************************** } PROCEDURE start_rfrsh_mpool_proc ; EXTERNAL ; { *************************************************************************** } { *************************************************************************** } PROCEDURE phat_del_rfmp ; VAR status : INTEGER ; BEGIN inline_check_command_count ( TOTAL := 1 ) ; inline_check_object_in_range ( COMMAND := 1, LOW := 0, HIGH := 0 ) ; inline_check_object_asserted ( COMMAND := 1 ) ; inline_check_object_has_no_item ( COMMAND := 1 ) ; IF ( parse_status = parse_failure ) THEN GOTO quit_delete_rfmp ; handle_trc_sys ( TAG := 'PHT/SYS%', MESSAGE := ' Delete Process Refreshing Monitoring Pool ' ) ; delete_rfrsh_mpool_proc ; quit_delete_rfmp : END ; { *************************************************************************** } PROCEDURE delete_rfrsh_mpool_proc ; EXTERNAL ; { *************************************************************************** } { *************************************************************************** } PROCEDURE phat_cre_test ; BEGIN IF ( hard_test_mode = 0 ) THEN init_test_mode ELSE handle_trc_sys ( TAG := 'PHT/SYS%', MESSAGE := ' Hardware Test Task Already Active' ) ; END ; { *************************************************************************** } { *************************************************************************** } PROCEDURE phat_del_test ; BEGIN handle_trc_sys ( TAG := 'PHT/SYS%', MESSAGE := ' Deleting Hardware Test Task ' ) ; quit_test_mode ; END ; { *************************************************************************** } { *************************************************************************** } PROCEDURE phat_force_db ; BEGIN inline_check_command_count ( TOTAL := 1 ) ; inline_check_object_in_range ( COMMAND := 1, LOW := firstsptrg, HIGH := lastsptrg ) ; inline_check_object_asserted ( COMMAND := 1 ) ; inline_check_object_has_no_item ( COMMAND := 1 ) ; IF ( parse_status = parse_failure ) THEN GOTO quit_force_db ; setup_force_db ( TAGEXT := 'forcedb%', SPTRGNUM := parsed_command^[1].objid, IOPAR := param ) ; quit_force_db : END ; { *************************************************************************** } { *************************************************************************** } PROCEDURE phat_take_par ; VAR retry : INTEGER ; BEGIN FOR retry := 1 TO 10 DO BEGIN IF ( input_parameter_mailbox = ' ' ) THEN BEGIN input_parameter_mailbox := reqstmsg[con_served]^.itemlist ; handle_trc_inf ( TAG := 'PHT/PAR%', MESSAGE := ' Input Parameter Received :' + SUBSTR(reqstmsg[con_served]^.itemlist,1, true_length(ADDRESS(reqstmsg[con_served]^.itemlist))) ) ; GOTO quit_take_par ; END ; WAIT_ANY ( TIME := -1000000 ) ; END ; bad_failure ( TAGEXT := 'param%' ) ; handle_trc_err ( TAG := 'PHT/PAR%', MESSAGE := ' Input Parameter Mailbox Timeout' ) ; quit_take_par : END ; { *************************************************************************** } { *************************************************************************** } PROCEDURE phat_com_file ; VAR status : status_type ; error_count : INTEGER ; BEGIN init_auxi ( TAGEXT := '@%', FILENAME := SUBSTR( reqstmsg[con_served]^.itemlist, 1, true_length( ADDRESS(reqstmsg[con_served]^.itemlist) ) ), ERROR_COUNT := error_count, STATUS := status ) ; IF ( status = not_found ) THEN bad_param ( COMMAND := 1 ) ELSE IF ( status = io_failure ) THEN BEGIN bad_failure ; replymsg[con_served]^.replysupl := CONVERT(STRING,error_count) + ' Errors' ; END ; quit_com_file : END ; { *************************************************************************** } { *************************************************************************** } PROCEDURE phat_old_menu ; BEGIN inline_check_command_count ( TOTAL := 1 ) ; inline_check_object_in_range ( COMMAND := 1, LOW := 0, HIGH := 0 ) ; inline_check_object_asserted ( COMMAND := 1 ) ; inline_check_object_has_no_item ( COMMAND := 1 ) ; IF ( parse_status = parse_failure ) THEN GOTO quit_menu ; delete_rfrsh_mpool_proc ; quit_test_mode ; wait_any ( TIME := -5000000 ) ; set_sys_window ( SIZE := 16 ) ; display_console ( scroll(4,24) ) ; menu ; set_sys_window ( SIZE := 8 ) ; handle_trc_sys ( TAG := 'PHT/SYS%', MESSAGE := ' Exit from MENU mode, return to TRICS ' ) ; handle_trc_sys ( TAG := 'INI/DRV%', MESSAGE := ' RE-Initializing DRV11J Device (Pilot+Assitant) ' ) ; proced_tcs_initialize_drv11j ; quit_menu: END ; { *************************************************************************** } PROCEDURE menu ; EXTERNAL ; { *************************************************************************** } { *************************************************************************** } PROCEDURE phat_deall_io ; BEGIN inline_check_command_count ( TOTAL := 1 ) ; inline_check_object_in_range ( COMMAND := 1, LOW := 0, HIGH := 0 ) ; inline_check_object_asserted ( COMMAND := 1 ) ; inline_check_object_has_no_item ( COMMAND := 1 ) ; IF ( parse_status = parse_failure ) THEN GOTO quit_deall ; deallocate_trigger ; quit_deall: END ; { *************************************************************************** } { *************************************************************************** } PROCEDURE phat_cre_bert ; VAR status : status_type ; BEGIN inline_check_command_count ( TOTAL := 1 ) ; inline_check_object_in_range ( COMMAND := 1, LOW := 0, HIGH := 0 ) ; inline_check_object_asserted ( COMMAND := 1 ) ; inline_check_object_has_no_item ( COMMAND := 1 ) ; IF ( parse_status = parse_failure ) THEN GOTO quit_cre_bert ; create_begin_end_run ( STATUS := status ) ; IF ( status <> ok ) THEN bad_failure ; quit_cre_bert: END ; { *************************************************************************** } { *************************************************************************** } PROCEDURE phat_del_bert ; BEGIN inline_check_command_count ( TOTAL := 1 ) ; inline_check_object_in_range ( COMMAND := 1, LOW := 0, HIGH := 0 ) ; inline_check_object_asserted ( COMMAND := 1 ) ; inline_check_object_has_no_item ( COMMAND := 1 ) ; IF ( parse_status = parse_failure ) THEN GOTO quit_del_bert ; delete_begin_end_run ; quit_del_bert: END ; { *************************************************************************** } { *************************************************************************** } PROCEDURE phat_ber_dbsc ; VAR status : status_type ; start_name : INTEGER ; entry_name : STRING(42) ; card_pointer :^dbsc_foreign_card ; channel : INTEGER ; BEGIN inline_check_command_count ( TOTAL := 4 ) ; read_param ( [cbus, mba, ca ] ) ; inline_check_object_in_range ( COMMAND := 4, LOW := 0, HIGH := 3 ) ; inline_check_object_asserted ( COMMAND := 4 ) ; inline_check_object_has_no_item ( COMMAND := 4 ) ; channel := parsed_command^[4].objid ; IF ( parse_status = parse_failure ) THEN GOTO quit_ber_dbsc ; find_card_pointer ( CBUS := param^.cbus, MBA := param^.mba, CA := param^.ca, CARD := card_pointer, STATUS := status ) ; IF ( status = not_found ) THEN BEGIN IF ( inline_tracing(trace_error) <> 0 ) THEN handle_trc_err ( TAG := 'PHT/HDB%', MESSAGE := ' Card Not Found in Hard Data Base ' + '@ cbus' + CONVERT(STRING(2),param^.cbus) + ' mba' + CONVERT(STRING(4),param^.mba) + ' ca' + CONVERT(STRING(3),param^.ca) ); bad_failure ; GOTO quit_ber_dbsc ; END ; IF ( card_pointer^.regtotal <> 24 ) THEN BEGIN IF ( inline_tracing(trace_error) <> 0 ) THEN handle_trc_err ( TAG := 'PHT/HDB%', MESSAGE := ' Not a DBSC Card at address ' + '@ cbus' + CONVERT(STRING(2),param^.cbus) + ' mba' + CONVERT(STRING(4),param^.mba) + ' ca' + CONVERT(STRING(3),param^.ca) ); bad_failure ; GOTO quit_ber_dbsc ; END ; start_name := FIND_MEMBER ( reqstmsg[con_served]^.itemlist, ['!'] ) ; IF ( start_name = 0 ) THEN bad_param ( COMMAND := command_count + 1 ) ; entry_name := SUBSTR( reqstmsg[con_served]^.itemlist, start_name+1 ) ; start_name := FIND_NONMEMBER ( entry_name, [' '] ) ; IF ( start_name = 0 ) THEN bad_param ( COMMAND := command_count + 1 ) ; IF ( parse_status = parse_failure ) THEN GOTO quit_ber_dbsc ; add_beg_end_run_dbsc ( ENTRY_NAME := SUBSTR( entry_name, start_name, 32 ), CARD := card_pointer, CHANNEL := channel, STATUS := status ) ; IF ( status <> ok ) THEN bad_failure ; quit_ber_dbsc : END ; { *************************************************************************** } { *************************************************************************** } PROCEDURE phat_ber_sbsc ; VAR status : status_type ; start_name : INTEGER ; entry_name : STRING(42) ; card_pointer :^sbsc_card ; from_chan : INTEGER ; to_chan : INTEGER ; BEGIN inline_check_command_count ( TOTAL := 5 ) ; read_param ( [cbus, mba, ca ] ) ; inline_check_object_in_range ( COMMAND := 4, LOW := 0, HIGH := 31 ) ; inline_check_object_asserted ( COMMAND := 4 ) ; inline_check_object_has_no_item ( COMMAND := 4 ) ; from_chan := parsed_command^[4].objid ; inline_check_object_in_range ( COMMAND := 5, LOW := 0, HIGH := 31 ) ; inline_check_object_asserted ( COMMAND := 5 ) ; inline_check_object_has_no_item ( COMMAND := 5 ) ; to_chan := parsed_command^[5].objid ; IF ( parse_status = parse_failure ) THEN GOTO quit_ber_sbsc ; find_card_pointer ( CBUS := param^.cbus, MBA := param^.mba, CA := param^.ca, CARD := card_pointer, STATUS := status ) ; IF ( status = not_found ) THEN BEGIN IF ( inline_tracing(trace_error) <> 0 ) THEN handle_trc_err ( TAG := 'PHT/HDB%', MESSAGE := ' Card Not Found in Hard Data Base ' + '@ cbus' + CONVERT(STRING(2),param^.cbus) + ' mba' + CONVERT(STRING(4),param^.mba) + ' ca' + CONVERT(STRING(3),param^.ca) ); bad_failure ; GOTO quit_ber_sbsc ; END ; IF ( card_pointer^.regtotal <> 10 ) THEN BEGIN IF ( inline_tracing(trace_error) <> 0 ) THEN handle_trc_err ( TAG := 'PHT/HDB%', MESSAGE := ' Not an SBSC Card at address ' + '@ cbus' + CONVERT(STRING(2),param^.cbus) + ' mba' + CONVERT(STRING(4),param^.mba) + ' ca' + CONVERT(STRING(3),param^.ca) ); bad_failure ; GOTO quit_ber_sbsc ; END ; start_name := FIND_MEMBER ( reqstmsg[con_served]^.itemlist, ['!'] ) ; IF ( start_name = 0 ) THEN bad_param ( COMMAND := command_count + 1 ) ; entry_name := SUBSTR( reqstmsg[con_served]^.itemlist, start_name+1 ) ; start_name := FIND_NONMEMBER ( entry_name, [' '] ) ; IF ( start_name = 0 ) THEN bad_param ( COMMAND := command_count + 1 ) ; IF ( parse_status = parse_failure ) THEN GOTO quit_ber_sbsc ; add_beg_end_run_sbsc ( ENTRY_NAME := SUBSTR( entry_name, start_name, 32 ), CARD := card_pointer, FROM_CHAN := from_chan, TO_CHAN := to_chan, STATUS := status ) ; IF ( status <> ok ) THEN bad_failure ; quit_ber_sbsc : END ; { *************************************************************************** } { *************************************************************************** } PROCEDURE phat_ber_show ; BEGIN inline_check_command_count ( TOTAL := 0 ) ; show_beg_end_run_entries ; END ; { *************************************************************************** } { *************************************************************************** } PROCEDURE phat_write_fmln ; BEGIN inline_check_command_count ( TOTAL := 6 ) ; read_param ( [ cbus, mba, ca, fa, state, through ] ) ; IF ( parse_status = parse_failure ) THEN GOTO quit_write_fmln ; IF ( inline_tracing(trace_info) <> 0 ) THEN handle_trc_inf ( TAG := 'PHT/CBS%', MESSAGE := ' WRITE FMLN ' + '@ cbus' + CONVERT(STRING(2),param^.cbus) + ' mba' + CONVERT(STRING(4),param^.mba) + ' ca' + CONVERT(STRING(3),param^.ca) + ' fa' + CONVERT(STRING(4),param^.fa) + ' state' + CONVERT(STRING(2),start_state) + ' for |Px| <= '+ CONVERT(STRING(4),through_Px_magn) ); proced_tcs_write_fmln_cbus ( PARAM := param, START_STATE := start_state, through_Px_magn := through_Px_magn ) ; quit_write_fmln : END ; { *************************************************************************** } { *************************************************************************** } PROCEDURE phat_read_fmln ; TYPE eight_status_0_7 = ARRAY [0..7] OF status_type ; VAR status : eight_status_0_7 ; eight_state : eight_bit_0_7 ; eight_through : eight_integer_0_7 ; field_num : INTEGER ; BEGIN inline_check_command_count ( TOTAL := 5 ) ; read_param ( [cbus, mba, ca, fa, fmln_thrsh ] ) ; IF ( parse_status = parse_failure ) THEN GOTO quit_read_fmln ; IF ( inline_tracing(trace_info) <> 0 ) THEN handle_trc_inf ( TAG := 'PHT/CBS%', MESSAGE := ' READ FMLN ' + '@ cbus' + CONVERT(STRING(2),param^.cbus) + ' mba' + CONVERT(STRING(4),param^.mba) + ' ca' + CONVERT(STRING(3),param^.ca) + ' fa' + CONVERT(STRING(4),param^.fa) ) ; proced_tcs_read_FMLN_cbus ( PARAM := param, EIGHT_START_STATE := ADDRESS(eight_state), EIGHT_THROUGH_PX_MAGN := ADDRESS(eight_through), EIGHT_STATUS := status ) ; IF ( status[item_num] <> ok ) THEN bad_failure ; start_state := eight_state.bitfield[item_num] ; through_Px_magn := eight_through[item_num] ; replymsg[con_served]^.replysupl := CONVERT(STRING(1),start_state) + '<0-' + CONVERT(STRING(3),through_Px_magn) + '>' ; FOR field_num := 0 TO 7 DO BEGIN IF ( status[field_num] <> ok ) THEN BEGIN IF ( inline_tracing(trace_error) <> 0 ) THEN handle_trc_err ( TAG := 'PHT/CBS%', MESSAGE := ' FMLN comparator' + ' #' + CONVERT(STRING(2),field_num) + ' contains illegal programming' ) ; END ELSE BEGIN start_state := eight_state.bitfield[field_num] ; through_Px_magn := eight_through[field_num] ; IF ( inline_tracing(trace_info) <> 0 ) THEN BEGIN handle_trc_inf ( TAG := 'PHT/CBS%', MESSAGE := ' FMLN comparator' + ' #' + CONVERT(STRING(2),field_num) + ' for current Py was' + CONVERT(STRING(2),start_state) + ' for |Px| within [0..' + CONVERT(STRING(4),through_Px_magn) + ']' ) ; END ; END ; END ; quit_read_fmln : END ; { *************************************************************************** } { *************************************************************************** } PROCEDURE phat_zero_fmln ; VAR status : status_type ; BEGIN inline_check_command_count ( TOTAL := 0 ) ; IF ( parse_status = parse_failure ) THEN GOTO quit_zero_fmln ; zero_fmln_thresholds ( IOPAR := param, CARD := ADDRESS(fmln_compare), STATUS := status ) ; IF ( status <> ok ) THEN bad_failure ; quit_zero_fmln : END ; { *************************************************************************** } { *************************************************************************** } PROCEDURE phat_verif_fmln ; VAR status : status_type ; BEGIN inline_check_command_count ( TOTAL := 0 ) ; IF ( parse_status = parse_failure ) THEN GOTO quit_verif_fmln ; verify_fmln_thresholds ( CARD := ADDRESS(fmln_compare), IOPAR := param, STATUS := status ) ; IF ( status <> ok ) THEN bad_failure ; quit_verif_fmln : END ; { *************************************************************************** } { *************************************************************************** } PROCEDURE phat_write_mpt ; VAR status : status_type ; BEGIN inline_check_command_count ( TOTAL := 0 ) ; IF ( parse_status = parse_failure ) THEN GOTO quit_write_pt ; program_fmln_momentum_lookup ( IOPAR := param, STATUS := status ) ; IF ( status <> ok ) THEN bad_failure ; quit_write_pt: END ; { *************************************************************************** } { *************************************************************************** } PROCEDURE phat_verif_mpt ; VAR status : status_type ; BEGIN inline_check_command_count ( TOTAL := 0 ) ; IF ( parse_status = parse_failure ) THEN GOTO quit_verif_pt ; verify_fmln_momentum_lookup ( IOPAR := param, STATUS := status ) ; IF ( status <> ok ) THEN bad_failure ; quit_verif_pt: END ; { *************************************************************************** } { *************************************************************************** } PROCEDURE phat_modif_hdb ; VAR old_cbus, old_mba, old_ca : INTEGER ; new_cbus, new_mba, new_ca : INTEGER ; card_pointer :^card_header ; status : status_type ; BEGIN inline_check_command_count ( TOTAL := 6 ) ; inline_check_object_in_range ( COMMAND := 1, LOW := 0, HIGH := 2 ) ; inline_check_object_asserted ( COMMAND := 1 ) ; inline_check_object_has_no_item ( COMMAND := 1 ) ; inline_check_object_in_range ( COMMAND := 2, LOW := 0, HIGH := 255 ) ; inline_check_object_asserted ( COMMAND := 2 ) ; inline_check_object_has_no_item ( COMMAND := 2 ) ; inline_check_object_in_range ( COMMAND := 3, LOW := 0, HIGH := 63 ) ; inline_check_object_asserted ( COMMAND := 3 ) ; inline_check_object_has_no_item ( COMMAND := 3 ) ; inline_check_object_in_range ( COMMAND := 4, LOW := 0, HIGH := 2 ) ; inline_check_object_asserted ( COMMAND := 4 ) ; inline_check_object_has_no_item ( COMMAND := 4 ) ; inline_check_object_in_range ( COMMAND := 5, LOW := 0, HIGH := 255 ) ; inline_check_object_asserted ( COMMAND := 5 ) ; inline_check_object_has_no_item ( COMMAND := 5 ) ; inline_check_object_in_range ( COMMAND := 6, LOW := 0, HIGH := 63 ) ; inline_check_object_asserted ( COMMAND := 6 ) ; inline_check_object_has_no_item ( COMMAND := 6 ) ; IF ( parse_status = parse_failure ) THEN GOTO quit_modif_hdb ; old_cbus := parsed_command^[1].objid ; old_mba := parsed_command^[2].objid ; old_ca := parsed_command^[3].objid ; new_cbus := parsed_command^[4].objid ; new_mba := parsed_command^[5].objid ; new_ca := parsed_command^[6].objid ; IF ( inline_tracing(trace_info) <> 0 ) THEN handle_trc_sys ( TAG := 'PHT/HDB%', MESSAGE := ' MODIFY Hard Data Base ' + '@ cbus' + CONVERT(STRING(2),old_cbus) + ' mba' + CONVERT(STRING(4),old_mba) + ' ca' + CONVERT(STRING(3),old_ca) + '-> cbus' + CONVERT(STRING(2),new_cbus) + ' mba' + CONVERT(STRING(4),new_mba) + ' ca' + CONVERT(STRING(3),new_ca) ) ; find_card_pointer ( CBUS := old_cbus, MBA := old_mba, CA := old_ca, CARD := card_pointer, STATUS := status ) ; IF ( status = not_found ) THEN BEGIN IF ( inline_tracing(trace_error) <> 0 ) THEN handle_trc_err ( TAG := 'PHT/HDB%', MESSAGE := ' Card Not Found in Hard Data Base ' + '@ cbus' + CONVERT(STRING(2),old_cbus) + ' mba' + CONVERT(STRING(4),old_mba) + ' ca' + CONVERT(STRING(3),old_ca) ) ; bad_failure ; GOTO quit_modif_hdb ; END ; card_pointer^.cbus := new_cbus ; card_pointer^.mba := new_mba ; card_pointer^.ca := new_ca ; quit_modif_hdb : END ; { *************************************************************************** } { *************************************************************************** } PROCEDURE phat_readpQBA ; TYPE pQBA_reg_type = PACKED RECORD Reserved : ARRAY [0..7] of byte ; {skip to %X34000008} DMAEAR : integer ; {unused in our configuration} QEAR : integer ; INT0 : long_multi_def ; INT1 : long_multi_def ; RESET : long_multi_def ; DMACR : integer ; {unused in our configuration} END ; VAR p_pQBA_reg : ^pQBA_reg_type ; status : INTEGER ; reg_cont : long_multi_def ; BEGIN inline_check_command_count ( TOTAL := 0 ) ; IF ( parse_status = parse_failure ) THEN GOTO quit_read_pQBA ; p_pQBA_reg := addr_pQBA::^pQBA_reg_type ; handle_trc_inf ( TAG := 'PHT/PQB%', MESSAGE := ' pQBA Register Base Address ' + ' = %X' + HEX(PHYSICAL_ADDRESS(p_pQBA_reg),8,8) ) ; reg_cont.int := READ_REGISTER ( p_pQBA_reg^.QEAR ) ; handle_trc_inf ( TAG := 'PHT/PQB%', MESSAGE := ' pQBA Q-Bus Error Address Reg ' + ' - Longwrd (QBus Address) = %X' + HEX(reg_cont.int,8,8) ) ; reg_cont.word_1 := READ_REGISTER ( p_pQBA_reg^.INT0.word_1 ) ; {read low word separately to avoid QBus Interrupt Acknowledge Cycle } handle_trc_inf ( TAG := 'PHT/PQB%', MESSAGE := ' pQBA Q-Bus Interrupt Reg INT0' + ' - Word #1 (QBus Int Vect) = %X' + HEX(reg_cont.word_1,4,4) ) ; reg_cont.word_2 := READ_REGISTER ( p_pQBA_reg^.INT0.word_2 ) ; handle_trc_inf ( TAG := 'PHT/PQB%', MESSAGE := ' pQBA Q-Bus Interrupt Reg INT0' + ' - Byte #3 (Qbus Int Enb) = %B' + BIN(reg_cont.byte_3,8,8) ) ; handle_trc_inf ( TAG := 'PHT/PQB%', MESSAGE := ' pQBA Q-Bus Interrupt Reg INT0' + ' - Byte #4 (QBus Int Pend) = %B' + BIN(reg_cont.byte_4,8,8) ) ; reg_cont.int := READ_REGISTER ( p_pQBA_reg^.INT1.int ) ; handle_trc_inf ( TAG := 'PHT/PQB%', MESSAGE := ' pQBA Q-Bus Interrupt Reg INT1' + ' - Byte #1 (QBus Err Msk) = %B' + BIN(reg_cont.byte_1,8,8) ) ; handle_trc_inf ( TAG := 'PHT/PQB%', MESSAGE := ' pQBA Q-Bus Interrupt Reg INT1' + ' - Byte #2 (Reset Error) = %B' + BIN(reg_cont.byte_2,8,8) ) ; handle_trc_inf ( TAG := 'PHT/PQB%', MESSAGE := ' pQBA Q-Bus Interrupt Reg INT1' + ' - Byte #3 (QBus Err Enb) = %B' + BIN(reg_cont.byte_3,8,8) ) ; handle_trc_inf ( TAG := 'PHT/PQB%', MESSAGE := ' pQBA Q-Bus Interrupt Reg INT1' + ' - Byte #4 (QBus Ext Err) = %B' + BIN(reg_cont.byte_4,8,8) ) ; reg_cont.int := READ_REGISTER ( p_pQBA_reg^.RESET.int ) ; handle_trc_inf ( TAG := 'PHT/PQB%', MESSAGE := ' pQBA Reset Register ' + ' - LSBit (1 = Problem) = %B' + BIN(reg_cont.lsb,1,1) ) ; quit_read_pQBA: END ; { *************************************************************************** } { *************************************************************************** } PROCEDURE phat_readpVBA ; TYPE pVBA_reg_type = PACKED RECORD BusCtrl : INTEGER ; ErrStat : long_multi_def ; MBoxFIFO : long_multi_def ; INT0 : long_multi_def ; INT1 : long_multi_def ; RESET : long_multi_def ; Reserved : INTEGER ; {unused in our configuration} END ; VAR p_pVBA_reg : ^pVBA_reg_type ; status : INTEGER ; reg_cont : long_multi_def ; BEGIN inline_check_command_count ( TOTAL := 0 ) ; IF ( parse_status = parse_failure ) THEN GOTO quit_read_pVBA ; p_pVBA_reg := addr_pVBA::^pVBA_reg_type ; handle_trc_inf ( TAG := 'PHT/PVB%', MESSAGE := ' pVBA Register Base Address ' + ' = %X' + HEX(PHYSICAL_ADDRESS(p_pVBA_reg),8,8) ) ; reg_cont.int := READ_REGISTER ( p_pVBA_reg^.BusCtrl ) ; handle_trc_inf ( TAG := 'PHT/PVB%', MESSAGE := ' pVBA Bus Control Register ' + ' - Longwrd (Bus Ownership) = %X' + HEX(reg_cont.int,8,8) ) ; reg_cont.int := READ_REGISTER ( p_pVBA_reg^.ErrStat.int ) ; handle_trc_inf ( TAG := 'PHT/PVB%', MESSAGE := ' pVBA Error Status Register ' + ' - Byte #1 (Error Mask) = %B' + BIN(reg_cont.byte_1,8,8) ) ; reg_cont.int := READ_REGISTER ( p_pVBA_reg^.MBoxFIFO.int ) ; handle_trc_inf ( TAG := 'PHT/PVB%', MESSAGE := ' pVBA Mailbox FIFO Register ' + ' - Byte #1 (Register Numb) = %B' + BIN(reg_cont.byte_1,8,8) ) ; handle_trc_inf ( TAG := 'PHT/PVB%', MESSAGE := ' pVBA Mailbox FIFO Register ' + ' - MSBit (1=FIFO empty) = %B' + BIN(reg_cont.msb,1) ) ; reg_cont.int := READ_REGISTER ( p_pVBA_reg^.INT0.int ) ; handle_trc_inf ( TAG := 'PHT/PVB%', MESSAGE := ' pVBA VME Interrupt Reg INT0 ' + ' - Byte #1 (Vector Number) = %X' + HEX(reg_cont.byte_1,2,2) ) ; handle_trc_inf ( TAG := 'PHT/PVB%', MESSAGE := ' pVBA VME Interrupt Reg INT0 ' + ' - Byte #3 (IRQ enab Mask) = %B' + BIN(reg_cont.byte_3,8,8) ) ; handle_trc_inf ( TAG := 'PHT/PVB%', MESSAGE := ' pVBA VME Interrupt Reg INT0 ' + ' - MSBit (0 = Int Pend) = %B' + BIN(reg_cont.MSB,1,1) ) ; reg_cont.int := READ_REGISTER ( p_pVBA_reg^.INT1.int ) ; handle_trc_inf ( TAG := 'PHT/PVB%', MESSAGE := ' pVBA VSB Interrupt Reg INT1 ' + ' - Byte #1 (Vector Number) = %X' + HEX(reg_cont.byte_1,2,2) ) ; handle_trc_inf ( TAG := 'PHT/PVB%', MESSAGE := ' pVBA VSB Interrupt Reg INT1 ' + ' - Byte #3 (Int enab Mask) = %B' + BIN(reg_cont.byte_3,8,8) ) ; handle_trc_inf ( TAG := 'PHT/PVB%', MESSAGE := ' pVBA VSB Interrupt Reg INT1 ' + ' - MSBit (0 = Int Pend) = %B' + BIN(reg_cont.MSB,1,1) ) ; reg_cont.int := READ_REGISTER ( p_pVBA_reg^.RESET.int ) ; handle_trc_inf ( TAG := 'PHT/PVB%', MESSAGE := ' pVBA Reset Register ' + ' - LSBit (1 = Problem) = %B' + BIN(reg_cont.LSB,1,1) ) ; quit_read_pVBA: END ; { *************************************************************************** } { *************************************************************************** } END .