/* ... "ebcomms.h" ... Master controller communication control record format */ struct master_anchor { int not_up; /* => 0 when master ready */ struct comms_record *comms_record; /* points to processor comms records */ }; /* Following record (per processor) is kept by crate master privately ... */ struct master_comms_record { int mailbox_address; int mailbox_type; int mailbox_value; int reset_address; int reset_type; int reset_value; int processor_type; int spare1; }; /* Following record (per processor) is shared with all processors ... */ struct comms_record { int vme_base_address; int vsb_base_address; int slave_status; /* modified by slave */ int load_status; /* modified by master */ int command; /* previously: int * exec_command_address; */ int command_response; int command_data; int command_data2; int * local_data_address; struct statistics_record *statistics; int spare1; int spare2; int *input_transfer_queue; int *input_return_queue; int *output_transfer_queue; int *output_return_queue; }; /* crate processor number ranges allowed */ #define PROCNUM_START 1 #define PROCNUM_END 19 #define PROCNUM_MAX 20 /* array range definitions */ #define INPUT_PROCNUM_START 4 #define INPUT_PROCNUM_END 6 #define OUTPUT_PROCNUM 7 #define EVENT_PROCNUM_START 8 #define EVENT_PROCNUM_END 15 /* Commands allowed across backplane between master and slaves ... */ #define STATUS_COMMAND 1 #define INIT_COMMAND 2 #define GO_COMMAND 3 #define STOP_COMMAND 4 #define FLUSH_COMMAND 5 #define TRANSMIT_SET_COMMAND 6 #define TRANSMIT_GET_COMMAND 7 #define TEST_INPUT_ON_COMMAND 8 #define TEST_INPUT_OFF_COMMAND 9 #define TEST_OUTPUT_ON_COMMAND 10 #define TEST_OUTPUT_OFF_COMMAND 11 #define STATS_ZERO_COMMAND 12 #define HWM_SET_COMMAND 13 #define BLOCK_LENGTH_SET_COMMAND 14 #define SORT_STATE_SET_COMMAND 15 #define TAPE_STATE_SET_COMMAND 15 #define OUTPUT_STATE_SET_COMMAND 15 #define SORTFRACTION_SET_COMMAND 16 #define QLENGTH_COMMAND 17 #define BLOCKS_COMMAND 18 #define PROCESSMODE_SET_COMMAND 19