Skip to content

Instantly share code, notes, and snippets.

@ColanderCombo
Last active February 12, 2024 17:45
Show Gist options
  • Save ColanderCombo/3b28cc7c934c801ee5b37db8152a01a6 to your computer and use it in GitHub Desktop.
Save ColanderCombo/3b28cc7c934c801ee5b37db8152a01a6 to your computer and use it in GitHub Desktop.
C RECONSTRUCTED CODE: This source code was reconstructed from historical
C specifications and may not reflect the content of actual flight
C software.
C
C IBM-79-SS-4095/p.39
C
C***********************************************************************
C** **
C**
C** 3.2 Operational Sequences
C** 3.2.1 Orbit/Doors (OPS 2) Control Segment (SM2_OPS) **
C** **
C***********************************************************************
C
C
D INCLUDE TEMPLATE CZ1_COMMON /* System Servuces Common Compool */
D INCLUDE TEMPLATE DIS_PLAY /* UI external procedure used by */
/* the grammar macros (Display Pres- */
/* entation and Control) */
D INCLUDE TEMPLATE DNX_BMS /* Application_Moding_And_Sequencing */
D INCLUDE TEMPLATE SDA_DATA_ACQ /* Data Acquisition */
D INCLUDE TEMPLATE SPM_CONTROL /* Performance Monitor Control */
D INCLUDE TEMPLATE SSP_EXEC /* Special Processes Executive */
D INCLUDE TEMPLATE SAM_ITEM /* AM Item Processor */
D INCLUDE TEMPLATE SBD_ITEM /* PBD Item Processor */
D INCLUDE TEMPLATE S21_CLNUP /* OPS 2 Initialization/Cleanup */
D INCLUDE TEMPLATE SUL_UPLINK /* Uplink Processor */
D INCLUDE TEMPLATE REX_RMSEXEC /* RMS Executive */
D INCLUDE DAG#RAM /* Common grammar macro set. */
D INCLUDE DBG#RAM /* OPS Control Segment grammar macro set. */
D INCLUDE DDG#RAM /* Allows references to MCDs keyboard inputs. */
D INCLUDE OPSCMACS /* Contains FCOS OPS Cancel macros. */
D INCLUDE ZPRIOTIM /* Contains REPLACE names for baseline
priorities, phasing and rates of
scheduled processes (ref. SAM 10) */
SM2_OPS: PROGRAM;
CALL S2I_CLNUP(1,D_DEU_NUMBER);
SCHEDULE SDA_DATA_ACQ
AT PHASE_SDA
PRIORITY (PRIO_SDA)
REPEAT EVERY TIME_SDA;
SCHEDULE SPM_CONTROL
PRIORITY (PRIO_SPM);
SCHEDULE SSP_EXEC
AT PHASE_SSP
PRIORITY (PRIO_SSP)
REPEAT EVERY TIME_SSP;
SCHEDULE SUL_UPLINK
PRIORITY (PRIO_SUL);
OPS(2, NO_AUTO_ADVANCE); /* SM Orbit/Door OPS */
MODE(201, NO_AUTO_ADVANCE); /* Orbit Mode */
INIT_BLOCK(2010,NO_AUTO_ADVANCE)
CALL S2I_CLNUP(2,D_DEU_NUMBER);
DISPLAY(2011); /* Antenna Management */
IF KEY=ITEM_ENTRY THEN CALL SAM_ITEM(D_IND);
MODE_CLEAN_UP(201);
CALL S2I_CLNUP(3,D_DEU_NUMBER);
MODE_END(201, CLEAN_UP_MODE);
MODE(202, NO_AUTO_ADVANCE); /* PBD Operations Mode */
INIT_BLOCK(2020,NO_AUTO_ADVANCE)
CALL S2I_CLNUP(4,D_DEU_NUMBER);
DISPLAY(2021); /* PL Bay Doors */
IF KEY=ITEM_ENTRY THEN CALL SBD_ITEM(D_IND);
MODE_CLEAN_UP(202);
CALL S2I_CLNUP(4,D_DEU_NUMBER);
MODE_END(202, CLEAN_UP_MODE);
OPS_CLEAN_UP;
CANCEL SDA_DATA_ACQ;
CANCEL SSP_EXEC;
CANCEL REX_RMSEXEC;
CALL S2I_CLNUP(6,D_DEU_NUMBER);
OPS_END(CLEAN_UP_OPS);
CLOSE SM2_OPS;
C RECONSTRUCTED CODE: This source code was reconstructed from historical
C specifications and may not reflect the content of actual flight
C software.
C
C
C IBM-79-SS-4095/p.206
C IBM-79-SS-4095/p.932
C
C***********************************************************************
C** **
C** 3.2.1.20 Payload Bay Doors **
C** **
C***********************************************************************
C
D INCLUDE TEMPLATE CSS_COT
D INCLUDE TEMPLATE CSS_SPINB
D INCLUDE TEMPLATE CSS_SPOB
D INCLUDE TEMPLATE CSS_SP_CMT
D INCLUDE TEMPLATE CSB_PBD_CMT
D INCLUDE OPSTMACS
D INCLUDE TEMPLATE SSO_SP_DATA_OUT
C
SSB_PL_BAY_DOORS: PROCEDURE;
DECLARE SSB_CURRENT_LATCH_DOOR_POINTER INTEGER;
C ITEM-Current Latch Groups/Door Pointer
C DESC-A pointer to the latch group or door
C currently being processed during an
C auto sequence
C ID-#189
DECLARE SSB_PREVIOUS_SWITCH_POS INTEGER;
C ITEM-Previous Switch Position
C DESC-An indicator used in Auto Mode processing
C that indicates the position of the PBD
C Control Switch during the previous
C execution 1 = Opne, 2 = close, 0 = stop
C ID-#190
DECLARE SSB_OPEN_CLOSE_FEEDBACK_INDIC BOOLEAN;
C ITEM-Open/Close Feedback Indicator
C DESC-An indicator that is set on when the
C latch group or door that is currently
C being processed becomes open or closed.
C ID-#191
DECLARE SSB_SWITCH_OPEN_INDICATOR BOOLEAN;
C ITEM-Switch Open Indicator
C DESC-An intermediate value used in PBD switch
C position determination that contains the
C status of the PBD open feedback
C discretes.
C ID-#192
DECLARE SSB_SWITCH_CLOSE_INDICATOR BOOLEAN;
C ITEM-Switch Close Indicator
C DESC-An intermediate value used in PBD switch
C position determination that contains the
C status of the PBD close feedback
C discretes.
C ID-#193
DECLARE SSB_LATCH_DOOR_INPUT_PARM_1 BOOLEAN;
C ITEM-Latch/Door Input Parameter 1
C DESC-An input parameter to PBD latch status
C and PBD door status used as a common
C input for each latch group and door
C ID-#194
DECLARE SSB_LATCH_DOOR_INPUT_PARM_2 BOOLEAN;
C ITEM-Latch/Door Input Parameter 2
C DESC-See above description for PARM 1.
C ID-#195
DECLARE SSB_LATCH_DOOR_INPUT_PARM_3 BOOLEAN;
C ITEM-Latch/Door Input Parameter 3
C DESC-See above description for PARM 1.
C ID-#196
DECLARE SSB_LATCH_DOOR_INPUT_PARM_4 BOOLEAN;
C ITEM-Latch/Door Input Parameter 4
C DESC-See above description for PARM 1.
C ID-#197
DECLARE SSB_LATCH_COMPUTED_VALUE CHARACTER(2);
C ITEM-Latch Computed Value
C DESC-The output value resulting from a call
C to PBD latch status that contains the
C text for the status of the latch group
C currently being processed.
C ID-#198
DECLARE SSB_DOOR_COMPUTED_VALUE CHARACTER(3);
C ITEM-Door Computed value
C DESC-The output value resulting from a call
C to PBD Door status that contains the
C text for that status of the door
C currently being processed.
C ID-#199
DECLARE SSB_LATCH_DOOR_EXPIR_TIME SCALAR;
C ITEM-Current Latch Groups/Door Exper. Time
C DESC-Computed time that the latch group or
C door currently being processed is assumed
C to have failed to open or close if proper
C feedback signals are not received.
C ID-#200
DECLARE SSB_COMMANDS_ENABLED_ARRAY ARRAY(6,2) INTEGER;
C ITEM-Commands Enabled Array
C DESC-An array that contains the status of
C commands enabled during an auto open
C or close sequence.
C ID-#201
DECLARE SSB_SSB_PBD_MORE_WORK_IND BOOLEAN;
C ITEM-PBD More Work Indicator
C DESC-An indicator used to alert auto sequence
C processing as to whether additional work
C can be done during this execution.
C ID-#202
DECLARE SSB_TIMER_CONSTANTS_ARRY ARRAY(6) SCALAR
CONSTANT(40, 40, 60, 126, 60, 126);
C ITEM-Timer Constants Array
C DESC-An array of values which represent each
C latch group and door's maximum time
C allowed to open or close during an
C auto sequence.
C ID-#203
DECLARE SSB_OPEN_CLOSE_COMPLETE INTEGER;
C ITEM-OPEN/CLOSE Complete Ind.
C DESC-An indicator Set to Indicate When The
C Latch Groups And Doors Are Fully Closed
C
C 1 = Fully Open
C 2 = Fully Closed
C 3 = None Of The Above
C ID-#205
DECLARE SSB_SSB_POWER_DISABLE_IND BOOLEAN;
C ITEM-Power Disable Ind.
C DESC-An Indicator Set When a Power Off Request
C is Processed To Alert PBD Cyclic To Turn
C Off the Reset Masks For The Power
C Enable/Disable 'B' Commands On the Next
C Execution.
C ID-#206
C
SSB_CONTROL_SWITCH_POSITION_DETERMINATION:
PROCEDURE;
REPLACE V72K3222Y BY "CSBB_PF01_INPUT_1$(8)";
REPLACE V72K3221Y BY "CSBB_PF01_INPUT_2$(8)";
REPLACE V72K3223Y BY "CSBB_PF02_INPUT_2$(8)";
REPLACE V72K3220Y BY "CSBB_PF02_INPUT_1$(8)";
REPLACE V72K3232Y BY "CSBB_PF01_INPUT_1$(9)";
REPLACE V72K3231Y BY "CSBB_PF01_INPUT_2$(9)";
REPLACE V72K3233Y BY "CSBB_PF02_INPUT_2$(9)";
REPLACE V72K3230Y BY "CSBB_PF02_INPUT_1$(9)";
SSB_SWITCH_OPEN_INDICATOR = (
(V72K3222Y AND V72K3221Y)
OR (V72K3222Y AND V72K3223Y)
OR (V72K3222Y AND V72K3220Y)
OR (V72K3221Y AND V72K3220Y)
OR (V72K3223Y AND V72K3220Y))
AND (
(NOT V72K3232Y AND NOT V72K3231Y)
OR (NOT V72K3232Y AND NOT V72K3233Y)
OR (NOT V72K3232Y AND NOT V72K3230Y)
OR (NOT V72K3231Y AND NOT V72K3230Y)
OR (NOT V72K3233Y AND NOT V72K3230Y) );
SSB_SWITCH_CLOSE_INDICATOR = (
(NOT V72K3222Y AND NOT V72K3221Y)
OR (NOT V72K3222Y AND NOT V72K3223Y)
OR (NOT V72K3222Y AND NOT V72K3220Y)
OR (NOT V72K3221Y AND NOT V72K3220Y)
OR (NOT V72K3223Y AND NOT V72K3220Y))
AND (
(V72K3232Y AND V72K3231Y)
OR (V72K3232Y AND V72K3233Y)
OR (V72K3232Y AND V72K3230Y)
OR (V72K3231Y AND V72K3230Y)
OR (V72K3233Y AND V72K3230Y) );
IF SSB_SWITCH_OPEN_INDICATOR = ON
THEN
DO;
IF SSB_SWITCH_CLOSE_INDICATOR = ON
THEN DO;
CSBB_CONTROL_SWITCH_POS_INDIC = 0; /* Stop */
CSBB_PBD_SWITCH_IND_TEXT = 'FAIL';
END; ELSE DO;
CSBB_CONTROL_SWITCH_POS_INDIC = 1; /* Open */
CSBB_PBD_SWITCH_IND_TEXT = 'OP ';
END;
END;
ELSE IF SSB_SWITCH_CLOSE_INDICATOR = ON
THEN DO;
CSBB_CONTROL_SWITCH_POS_INDIC = 2; /* Close */
CSBB_PBD_SWITCH_IND_TEXT = 'CL ';
END; ELSE DO;
CSBB_CONTROL_SWITCH_POS_INDIC = 0; /* Stop */
CSBB_PBD_SWITCH_IND_TEXT = 'STOP';
END;
IF CSBB_SWITCH_BYPASS_ITEM = ON
THEN IF CSBB_PBD_STOP_ITEM = ON
THEN CSBB_CONTROL_SWITCH_POS_INDIC = 0; /* Stop */
ELSE IF CSBB_PBD_OPEN_ITEM = ON
THEN CSBB_CONTROL_SWITCH_POS_INDIC = 1; /* Open */
ELSE CSBB_CONTROL_SWITCH_POS_INDIC = 2; /* Close */
/* Check control switch feedback discretes for validity: */
IF (CSSV_INSTAT_D100300 = ON) OR
(CSSV_INSTAT_D100600 = ON) OR
(CSSV_INSTAT_D120300 = ON) OR
(CSSV_INSTAT_D1206002 = ON)
THEN CSBB_PBD_SW_OUT_STAT = ON; /* Invalid */
ELSE CSBB_PBD_SW_OUT_STAT = OFF; /* Valid */
CLOSE SSB_CONTROL_SWITCH_POSITION_DET;
SSB_MODE_SELECTION:
PROCEDURE;
IF CSBB_AUTO_MODE_ITEM = ON
THEN CALL SSB_AUTO_MODE_SELECT;
ELSE IF CSBB_MANUAL_MODE_ITEMS != 0
THEN CALL SSB_MANUAL_MODE_SELECT;
SSB_PREVIOUS_SWITCH_POS = 0; /* Stop Position */
CLOSE SSB_MODE_SELECTION;
SSB_AUTO_MODE_SELECT:
PROCEDURE;
IF CSBB_AUTO_MODE_FLAG = ON
THEN DO;
IF SSB_CURRENT_LATCH_DOOR_POINTER != 0
AND SSB_PREVIOUS_SWITCH_POS != 0 /* Stop */
THEN DO;
CALL SSB_DISABLE_UNVERIFIED_COMMANDS;
END;
END; ELSE DO;
IF CSBB_MANUAL_MODE_FLAG = ON
THEN DO;
CALL SSB_DISABLE_COMMANDS;
CSBB_MANUAL_MODE_FLAG = OFF;
END;
CSBB_AUTO_MODE_FLAG = ON;
CSBB_OPEN_FAIL_INDICATOR = 0;
CSBB_CLOSE_FAIL_INDICATOR = 0;
CSBB_COMMON_PBD_FAIL_INDICATOR = OFF;
SSB_CURRENT_LATCH_DOOR_POINTER = 0;
CSBB_PBD_OUTPUT_INDICATOR = ON;
END;
CLOSE SSB_AUTO_MODE_SELECT;
SSB_MANUAL_MODE_SELECT:
PROCEDURE;
IF CSBB_MANUAL_MODE_FLAG = ON
THEN DO;
IF SSB_PREVIOUS_SWITCH_POS != 0 /* Stop */
THEN DO;
CALL SSB_DISABLE_COMMANDS;
END;
END; ELSE DO;
IF CSBB_AUTO_MODE_FLAG = ON
THEN DO;
CALL SSB_DISABLE_COMMANDS;
CSBB_AUTO_MODE_FLAG = OFF;
END;
CSBB_MANUAL_MODE_FLAG = ON;
CSBB_OPEN_FAIL_INDICATOR = 0;
CSBB_CLOSE_FAIL_INDICATOR = 0;
CSBB_COMMON_PBD_FAIL_INDICATOR = OFF;
CSBB_PBD_OUTPUT_INDICATOR = ON;
END;
CLOSE SSB_MANUAL_MODE_SELECT;
SSB_DISABLE_UNVERIFIED_COMMANDS:
PROCEDURE;
IF SSB_PREVIOUS_SWITCH_POS = 1 /* Open */
THEN CALL SSB_DISABLE_UNVERIFIED_OPEN_COMMANDS;
ELSE CALL SSB_DISABLE_UNVERIFIED_CLOSE_COMMANDS;
SSB_COMMANDS_ENABLED_ARRAY$(SSB_CURRENT_LATCH_DOOR_POINTER,SSB_PREVIOUS_SWITCH_POS) = OFF;
CSBB_PBD_OUTPUT_INDICATOR = ON;
CLOSE SSB_DISABLE_UNVERIFIED_COMMANDS;
SSB_DISABLE_UNVERIFIED_OPEN_COMMANDS:
PROCEDURE;
DO CASE SSB_CURRENT_LATCH_DOOR_POINTER;
C 1: Centerline Latch Groups 5-8, 9-12
DO;
IF (V37X3390Y AND V37X3391Y) = FALSE
THEN DO;
CSBB_PF01_OUTPUT_2$(5) = OFF; /* 5-8 OPEN 1 */
CSBB_PF02_OUTPUT_2$(5) = OFF; /* 5-8 OPEN 2 */
END;
IF (V37X3405Y AND V37X3406Y) = FALSE
THEN DO;
CSBB_PF01_OUTPUT_2$(7) = OFF; /* 9-12 OPEN 1 */
CSBB_PF02_OUTPUT_2$(7) = OFF; /* 9-12 OPEN 2 */
END;
END;
C 2: Centerline Latch Groups 1-4, 13-16
DO;
IF (V37X3380Y AND V37X3381Y) = FALSE
THEN DO;
CSBB_PF01_OUTPUT_2$(3) = OFF; /* 1-4 OPEN 1 */
CSBB_PF02_OUTPUT_2$(3) = OFF; /* 1-4 OPEN 2 */
END;
IF (V37X3415Y AND V37X3416Y) = FALSE
THEN DO;
CSBB_PF02_OUTPUT_2$(9) = OFF; /* 13-16 OPEN 1 */
CSBB_PF01_OUTPUT_2$(9) = OFF; /* 13-16 OPEN 2 */
END;
END;
C 3: Right FWD BHD Latch Group/Right AFT BHD Latch Group
DO;
IF (V37X3430Y AND V37X3431Y) = FALSE
THEN DO;
CSBB_PF01_OUTPUT_1$(3) = OFF; /* RFWD BHD OPEN 1 */
CSBB_PF02_OUTPUT_1$(3) = OFF; /* RFWD BHD OPEN 2 */
END;
IF (V37X3450Y AND V37X3451Y) = FALSE
THEN DO;
CSBB_PF02_OUTPUT_1$(5) = OFF; /* RAFT BHD OPEN 1 */
CSBB_PF01_OUTPUT_1$(5) = OFF; /* RAFT BHD OPEN 2 */
END;
END;
C 4: PBD Right Door Panel
DO;
CSBB_PF01_OUTPUT_1$(1) = OFF; /* Right Door OPEN 1 */
CSBB_PF02_OUTPUT_1$(1) = OFF; /* Right Door OPEN 2 */
END;
C 5: Left FWD BHD Latch Group/Left AFT PHD Latch Group
DO;
IF (V37X3320Y AND V37X3321Y) = FALSE
THEN DO;
CSBB_PF01_OUTPUT_3$(3) = OFF; /* LFWD BHD OPEN 1 */
CSBB_PF02_OUTPUT_3$(3) = OFF; /* LFWD BHD OPEN 2 */
END;
IF (V37X3350Y AND V37X3351Y) = FALSE
THEN DO;
CSBB_PF01_OUTPUT_3$(5) = OFF; /* LAFT BHD OPEN 1 */
CSBB_PF02_OUTPUT_3$(5) = OFF; /* LAFT BHD OPEN 2 */
END;
END;
C 6: PBD Left Door Panel
DO;
CSBB_PF02_OUTPUT_3$(1) = OFF; /* Left Door OPEN 1 */
CSBB_PF01_OUTPUT_3$(1) = OFF; /* Left Door OPEN 2 */
END;
END;
CLOSE SSB_DISABLE_UNFERIFIED_OPEN_COMMANDS;
SSB_DISABLE_UNVERIFIED_CLOSE_COMMANDS:
PROCEDURE;
DO CASE SSB_CURRENT_LATCH_DOOR_POINTER;
C 1: Centerline Latch Groups 5-8, 9-12
DO;
IF (V37X3395Y AND V37X3396Y) = FALSE
THEN DO;
CSBB_PF01_OUTPUT_2$(6) = OFF; /* 5-8 CLOSE 1 */
CSBB_PF02_OUTPUT_2$(6) = OFF; /* 5-8 CLOSE 2 */
END;
IF (V37X3400Y AND V37X3401Y) = FALSE
THEN DO;
CSBB_PF01_OUTPUT_2$(8) = OFF; /* 9-12 CLOSE 1 */
CSBB_PF02_OUTPUT_2$(8) = OFF; /* 9-12 CLOSE 2 */
END;
END;
C 2: Centerline Latch Groups 1-4, 13-16
DO;
IF (V37X3385Y AND V37X3386Y) = FALSE
THEN DO;
CSBB_PF01_OUTPUT_2$(4) = OFF; /* 1-4 CLOSE 1 */
CSBB_PF02_OUTPUT_2$(4) = OFF; /* 1-4 CLOSE 2 */
END;
IF (V37X3410Y AND V37X3411Y) = FALSE
THEN DO;
CSBB_PF02_OUTPUT_2$(10) = OFF; /* 13-16 CLOSE 1 */
CSBB_PF01_OUTPUT_2$(10) = OFF; /* 13-16 CLOSE 2 */
END;
END;
C 3: Right FWD BHD Latch Group/Right AFT BHD Latch Group
DO;
IF (V37X3440Y AND V37X3441Y) = FALSE
THEN DO;
CSBB_PF01_OUTPUT_1$(4) = OFF; /* RFWD BHD CLOSE 1 */
CSBB_PF02_OUTPUT_1$(4) = OFF; /* RFWD BHD CLOSE 2 */
END;
IF (V37X3460Y AND V37X3461Y) = FALSE
THEN DO;
CSBB_PF02_OUTPUT_1$(6) = OFF; /* RAFT BHD CLOSE 1 */
CSBB_PF01_OUTPUT_1$(6) = OFF; /* RAFT BHD CLOSE 2 */
END;
END;
C 4: PBD Right Door Panel
DO;
CSBB_PF01_OUTPUT_1$(2) = OFF; /* Right Door CLOSE 1 */
CSBB_PF02_OUTPUT_1$(2) = OFF; /* Right Door CLOSE 2 */
END;
C 5: Left FWD BHD Latch Group/Left AFT PHD Latch Group
DO;
IF (V37X3330Y AND V37X3331Y) = FALSE
THEN DO;
CSBB_PF01_OUTPUT_3$(4) = OFF; /* LFWD BHD CLOSE 1 */
CSBB_PF02_OUTPUT_3$(4) = OFF; /* LFWD BHD CLOSE 2 */
END;
IF (V37X3360Y AND V37X3361Y) = FALSE
THEN DO;
CSBB_PF01_OUTPUT_3$(6) = OFF; /* LAFT BHD CLOSE 1 */
CSBB_PF02_OUTPUT_3$(6) = OFF; /* LAFT BHD CLOSE 2 */
END;
END;
C 6: LBD Left Door Panel
DO;
CSBB_PF02_OUTPUT_3$(2) = OFF; /* Left Door CLOSE 1 */
CSBB_PF01_OUTPUT_3$(2) = OFF; /* Left Door CLOSE 2 */
END;
END;
CLOSE SSB_DISABLE_UNFERIFIED_CLOSE_COMMANDS;
SSB_DISABLE_COMMANDS:
PROCEDURE;
CSBB_PF01_OUTPUT_2$(5) = OFF; /* 5-8 OPEN 1 */
CSBB_PF02_OUTPUT_2$(5) = OFF; /* 5-8 OPEN 2 */
CSBB_PF01_OUTPUT_2$(7) = OFF; /* 9-12 OPEN 1 */
CSBB_PF02_OUTPUT_2$(7) = OFF; /* 9-12 OPEN 2 */
CSBB_PF01_OUTPUT_2$(3) = OFF; /* 1-4 OPEN 1 */
CSBB_PF02_OUTPUT_2$(3) = OFF; /* 1-4 OPEN 2 */
CSBB_PF02_OUTPUT_2$(9) = OFF; /* 13-16 OPEN 1 */
CSBB_PF01_OUTPUT_2$(9) = OFF; /* 13-16 OPEN 2 */
CSBB_PF01_OUTPUT_1$(3) = OFF; /* RFWD BHD OPEN 1 */
CSBB_PF02_OUTPUT_1$(3) = OFF; /* RFWD BHD OPEN 2 */
CSBB_PF02_OUTPUT_1$(5) = OFF; /* RAFT BHD OPEN 1 */
CSBB_PF01_OUTPUT_1$(5) = OFF; /* RAFT BHD OPEN 2 */
CSBB_PF01_OUTPUT_1$(1) = OFF; /* Right Door OPEN 1 */
CSBB_PF02_OUTPUT_1$(1) = OFF; /* Right Door OPEN 2 */
CSBB_PF01_OUTPUT_3$(3) = OFF; /* LFWD BHD OPEN 1 */
CSBB_PF02_OUTPUT_3$(3) = OFF; /* LFWD BHD OPEN 2 */
CSBB_PF01_OUTPUT_3$(5) = OFF; /* LAFT BHD OPEN 1 */
CSBB_PF02_OUTPUT_3$(5) = OFF; /* LAFT BHD OPEN 2 */
CSBB_PF02_OUTPUT_3$(1) = OFF; /* Left Door OPEN 1 */
CSBB_PF01_OUTPUT_3$(1) = OFF; /* Left Door OPEN 2 */
CSBB_PF01_OUTPUT_2$(6) = OFF; /* 5-8 CLOSE 1 */
CSBB_PF02_OUTPUT_2$(6) = OFF; /* 5-8 CLOSE 2 */
CSBB_PF01_OUTPUT_2$(8) = OFF; /* 9-12 CLOSE 1 */
CSBB_PF02_OUTPUT_2$(8) = OFF; /* 9-12 CLOSE 2 */
CSBB_PF01_OUTPUT_2$(4) = OFF; /* 1-4 CLOSE 1 */
CSBB_PF02_OUTPUT_2$(4) = OFF; /* 1-4 CLOSE 2 */
CSBB_PF02_OUTPUT_2$(10) = OFF; /* 13-16 CLOSE 1 */
CSBB_PF01_OUTPUT_2$(10) = OFF; /* 13-16 CLOSE 2 */
CSBB_PF01_OUTPUT_1$(4) = OFF; /* RFWD BHD CLOSE 1 */
CSBB_PF02_OUTPUT_1$(4) = OFF; /* RFWD BHD CLOSE 2 */
CSBB_PF02_OUTPUT_1$(6) = OFF; /* RAFT BHD CLOSE 1 */
CSBB_PF01_OUTPUT_1$(6) = OFF; /* RAFT BHD CLOSE 2 */
CSBB_PF01_OUTPUT_1$(2) = OFF; /* Right Door CLOSE 1 */
CSBB_PF02_OUTPUT_1$(2) = OFF; /* Right Door CLOSE 2 */
CSBB_PF01_OUTPUT_3$(4) = OFF; /* LFWD BHD CLOSE 1 */
CSBB_PF02_OUTPUT_3$(4) = OFF; /* LFWD BHD CLOSE 2 */
CSBB_PF01_OUTPUT_3$(6) = OFF; /* LAFT BHD CLOSE 1 */
CSBB_PF02_OUTPUT_3$(6) = OFF; /* LAFT BHD CLOSE 2 */
CSBB_PF02_OUTPUT_3$(2) = OFF; /* Left Door CLOSE 1 */
CSBB_PF01_OUTPUT_3$(2) = OFF; /* Left Door CLOSE 2 */
SSB_COMMANDS_ENABLED_ARRAY$(*,*) = 0;
CSBB_PBD_OUTPUT_INDICATOR = ON;
CLOSE SSB_DISABLE_COMMANDS;
SSB_CRT_FEEDBACK_DISPLAY:
PROCEDURE;
CALL SSB_CENTERLINE_LATCH_FEEDBACK_DISPLAY;
CALL SSB_RIGHT_BHD_LATCH_AND_DOOR_FEEDBACK_DISPLAY;
CALL SSB_LEFT_BHD_LATCH_AND_DOOR_FEEDBACK_DISPLAY;
CSBB_LATCH_DOOR_OUT_STAT = HEX'0000'; /* Valid */
/* If any input discrete parent word statuses are set,
set appropriate output statuses:
*/
IF CSSV_SPINB_D100300 = ON
THEN DO;
/* PF01_INPUT_1: Right FWD/AFT, Right Door */
CSBB_LATCH_DOOR_OUT_STAT$(5 TO 7) = BIN'111'; /* Invalid */
END;
IF CSSV_SPINB_D100600 = ON
THEN DO;
/* PF01_INPUT_2: Left FWD, Left Door */
CSBB_LATCH_DOOR_OUT_STAT$(8) = ON; /* Invalid */
CSBB_LATCH_DOOR_OUT_STAT$(10) = ON; /* Invalid */
END;
IF CSSV_SPINB_D100900 = ON
THEN DO;
/* PF01_INPUT_3: Left FWD/AFT, Centerline */
CSBB_LATCH_DOOR_OUT_STAT$(1 TO 4) = BIN'1111'; /* Invalid */
CSBB_LATCH_DOOR_OUT_STAT$(8 TO 9) = BIN'11'; /* Invalid */
END;
IF CSSV_SPINB_D120300 = ON
THEN DO;
/* PF02_INPUT_1: Right FWD/AFT, Right Door */
CSBB_LATCH_DOOR_OUT_STAT$(5 TO 7) = BIN'111'; /* Invalid */
END;
IF CSSV_SPINB_D120600 = ON
THEN DO;
/* PF02_INPUT_2: Left FWD/AFT, Left Door*/
CSBB_LATCH_DOOR_OUT_STAT$(8 TO 10) = BIN'111'; /* Invalid */
END;
IF CSSV_SPINB_D120900 = ON
THEN DO;
/* PF02_INPUT_3: Right FWD/AFT, Centerline*/
CSBB_LATCH_DOOR_OUT_STAT$(1 TO 4) = BIN'1111'; /* Invalid */
CSBB_LATCH_DOOR_OUT_STAT$(5 TO 6) = BIN'11'; /* Invalid */
END;
CLOSE SSB_CRT_FEEDBACK_DISPLAY;
SSB_CENTERLINE_LATCH_FEEDBACK_DISPLAY:
PROCEDURE;
CALL SSB_PBD_LATCH_STATUS(V37X3390Y, V37X3391Y,
V37X3395Y, V37X3396Y)
ASSIGN(SSB_C_LCH_5_8_TEXT);
CALL SSB_PBD_LATCH_STATUS(V37X3405Y, V37X3406Y,
V37X3400Y, V37X3401Y)
ASSIGN(SSB_C_LCH_9_12_TEXT);
CALL SSB_PBD_LATCH_STATUS(V37X3380Y, V37X3381Y,
V37X3385Y, V37X3386Y)
ASSIGN(SSB_C_LCH_1_4_TEXT);
CALL SSB_PBD_LATCH_STATUS(V37X3415Y, V37X3416Y,
V37X3410Y, V37X3411Y)
ASSIGN(SSB_C_LCH_13_16_TEXT);
CLOSE SSB_CENTERLINE_LATCH_FEEDBACK_DISPLAY;
SSB_RIGHT_BHD_LATCH_AND_DOOR_FEEDBACK_DISPLAY:
PROCEDURE;
CALL SSB_PBD_LATCH_STATUS(V37X3430Y, V37X3431Y,
V37X3440Y, V37X3441Y)
ASSIGN(CSBB_R_FWD_BHD_TEXT);
CALL SSB_PBD_LATCH_STATUS(V37X3450Y, V37X3451Y,
V37X3460Y, V37X3461Y)
ASSIGN(CSBB_R_AFT_BHD_TEXT);
CALL SSB_PBD_DOOR_STATUS(
(V37X3300Y AND V37X3301Y),
(V37X3435Y AND V37X3436Y)
OR (V37X3436 AND V37X3437Y)
OR (V37X3435Y AND V37X3437Y),
(V37X3455Y AND V37X3456Y)
OR (V37X3456Y AND V37X3457Y)
OR (V37X3455Y AND V37X3457Y),
(V37X3302Y AND V37X3303Y))
ASSIGN(CSBB_R_DOOR_TEXT);
CLOSE SSB_RIGHT_BHD_LATCH_AND_DOOR_FEEDBACK_DISPLAY;
SSB_LEFT_BHD_LATCH_AND_DOOR_FEEDBACK_DISPLAY:
PROCEDURE;
CALL SSB_PBD_LATCH_STATUS(V37X3320Y, V37X3321Y,
V37X3330Y, V37X3331Y)
ASSIGN(CSBB_L_FWD_BHD_TEXT);
CALL SSB_PBD_LATCH_STATUS(V37X3350Y, V37X3351Y,
V37X3360Y, V37X3361Y)
ASSIGN(CSBB_L_AFT_BHD_TEXT);
CALL SSB_PBD_DOOR_STATUS(
(V37X3305Y AND V37X3306Y),
(V37X3325Y AND V37X3326Y)
OR (V37X3326Y AND V37X3327Y)
OR (V37X3325Y AND V37X3327Y),
(V37X3355Y AND V37X3356Y)
OR (V37X3356Y AND V37X3357Y)
OR (V37X3355Y AND V37X3357Y),
(V37X33027 AND V37X3308Y))
ASSIGN(CSBB_L_DOOR_TEXT);
CLOSE SSB_LEFT_BHD_LATCH_AND_DOOR_FEEDBACK_DISPLAY;
SSB_PBD_LATCH_STATUS:
PROCEDURE(SSB_LATCH_DOOR_INPUT_PARM_1,
SSB_LATCH_DOOR_INPUT_PARM_2,
SSB_LATCH_DOOR_INPUT_PARM_3,
SSB_LATCH_DOOR_INPUT_PARM_4)
ASSIGN(SSB_LATCH_COMPUTED_VALUE);
SSB_LATCH_COMPUTED_VALUE = '?';
IF SSB_LATCH_DOOR_INPUT_PARM_1 = ON
THEN IF SSB_LATCH_DOOR_INPUT_PARM_2 = ON
THEN IF (SSB_LATCH_DOOR_INPUT_PARM_3 = OFF)
AND (SSB_LATCH_DOOR_INPUT_PARM_4 = OFF)
THEN SSB_LATCH_COMPUTED_VALUE = 'OP';
ELSE IF (SSB_LATCH_DOOR_INPUT_PARM_3 = OFF)
AND (SSB_LATCH_DOOR_INPUT_PARM_4 = OFF)
THEN SSB_LATCH_COMPUTED_VALUE = ' ';
ELSE IF SSB_LATCH_DOOR_INPUT_PARM_2 = ON
THEN IF (SSB_LATCH_DOOR_INPUT_PARM_3 = OFF)
AND (SSB_LATCH_DOOR_INPUT_PARM_4 = OFF)
THEN SSB_LATCH_COMPUTED_VALUE = ' ';
ELSE IF SSB_LATCH_DOOR_INPUT_PARM_3 = ON
THEN DO;
IF SSB_LATCH_DOOR_INPUT_PARM_4 = ON
THEN SSB_LATCH_COMPUTED_VALUE = 'CL';
ELSE SSB_LATCH_COMPUTED_VALUE = ' ';
END; ELSE SSB_LATCH_COMPUTED_VALUE = ' ';
CLOSE SSB_PBD_LATCH_STATUS;
SSB_PBD_DOOR_STATUS:
PROCEDURE(SSB_LATCH_DOOR_INPUT_PARM_1,
SSB_LATCH_DOOR_INPUT_PARM_2,
SSB_LATCH_DOOR_INPUT_PARM_3,
SSB_LATCH_DOOR_INPUT_PARM_4)
ASSIGN(SSB_DOOR_COMPUTED_VALUE);
SSB_DOOR_COMPUTED_VALUE = '? ';
IF SSB_LATCH_DOOR_INPUT_PARM_1 = ON
THEN IF (SSB_LATCH_DOOR_INPUT_PARM_2 = OFF)
AND (SSB_LATCH_DOOR_INPUT_PARM_3 = OFF)
AND (SSB_LATCH_DOOR_INPUT_PARM_4 = OFF)
THEN SSB_DOOR_COMPUTED_VALUE = 'OP ';
ELSE IF SSB_LATCH_DOOR_INPUT_PARM_2 = ON
THEN IF SSB_LATCH_DOOR_INPUT_PARM_3 = ON
THEN DO;
IF SSB_LATCH_DOOR_INPUT_PARM_4 = ON
THEN SSB_DOOR_COMPUTED_VALUE = 'CL ';
ELSE SSB_DOOR_COMPUTED_VALUE = 'RDY';
END; ELSE IF SSB_LATCH_DOOR_INPUT_PARM_4 = OFF
THEN SSB_DOOR_COMPUTED_VALUE = ' ';
ELSE IF SSB_LATCH_DOOR_INPUT_PARM_4 = OFF
THEN SSB_DOOR_COMPUTED_VALUE = ' ';
CLOSE SSB_PBD_DOOR_STATUS;
SSB_AUTO_OPEN_CLOSE_SEQUENCE:
PROCEDURE;
DO UNTIL SSB_PBD_MORE_WORK_IND = OFF;
SSB_PBD_MORE_WORK_IND = OFF;
IF CSBB_CONTROL_SWITCH_POS_INDIC = 1 /* Open Position */
THEN CALL SSB_OPEN_FEEDBACK;
ELSE CALL SSB_CLOSE_FEEDBACK;
IF SSB_OPEN_CLOSE_FEEDBACK_INDIC = ON
THEN DO;
IF CSBB_CONTROL_SWITCH_POS_INDIC = 1 /* Open Position */
THEN DO;
IF SSB_CURRENT_LATCH_DOOR_POINTER = 6
C Is Auto Open Complete?
THEN DO;
CALL SSB_DISABLE_COMMANDS;
CSBB_AUTO_MODE_FLAG = OFF;
CSBB_AUTO_MODE_ITEM = OFF;
CSBB_PBD_DISP_UPDATE_IND = ON;
END; ELSE DO;
SSB_CURRENT_LATCH_DOOR_POINTER = SSB_CURRENT_LATCH_DOOR_POINTER + 1;
SSB_PBD_MORE_WORK_IND = ON;
END;
END; ELSE DO;
IF SSB_CURRENT_LATCH_DOOR_POINTER = 1
C Is Auto Close Complete?
THEN DO;
CALL SSB_DISABLE_COMMANDS;
CSBB_AUTO_MODE_FLAG = OFF;
CSBB_AUTO_MODE_ITEM = OFF;
CSBB_PBD_DISP_UPDATE_IND = ON;
END; ELSE DO;
SSB_CURRENT_LATCH_DOOR_POINTER = SSB_CURRENT_LATCH_DOOR_POINTER - 1;
SSB_PBD_MORE_WORK_IND = ON;
END;
END;
END; ELSE DO;
C Check Commands Enabled Array:
IF SSB_COMMANDS_ENABLED_ARRAY$(SSB_CURRENT_LATCH_DOOR_POINTER,
CSBB_CONTROL_SWITCH_POS_INDIC) != ON
THEN DO;
IF CSBB_COMMON_PBD_FAIL_INDICATOR != ON
THEN DO;
CALL SSB_ENABLE_COMMANDS;
SSB_LATCH_DOOR_EXPIR_TIME =
CSSV_SP_CURRENT_TIME
+ SSB_TIMER_CONSTANTS_ARRAY$(SSB_CURRENT_LATCH_DOOR_POINTER);
CSBB_PBD_OUTPUT_INDICATOR = ON;
END;
END; ELSE DO;
IF CSSV_SP_CURRENT_TIME >= SSB_LATCH_DOOR_EXPIR_TIME
C Is There a Fail Condition?
THEN DO;
IF CSBB_CONTROL_SWITCH_POS_INDIC = 1 /* Open Position */
THEN CALL SSB_SET_OPEN_FAIL_INDICATORS;
ELSE CALL SSB_SET_CLOSE_FAIL_INDICATORS;
CSBB_COMMON_PBD_FAIL_INDICATOR = ON;
CALL SSB_DISABLE_UNVERIFIED_COMMANDS;
END;
END;
END;
END;
CLOSE SSB_AUTO_OPEN_CLOSE_SEQUENCE;
SSB_OPEN_FEEDBACK:
PROCEDURE;
IF SSB_CURRENT_LATCH_DOOR_POINTER = 0
THEN SSB_CURRENT_LATCH_DOOR_POINTER = 1;
DO CASE SSB_CURRENT_LATCH_DOOR_POINTER;
C 1: Centerline Latch Groups 5-8, 9-12
DO;
SSB_OPEN_CLOSE_FEEDBACK_INDIC =
(V373390Y AND V37X3391Y)
AND (V373405Y AND V37X3406Y);
END;
C 2: Centerline Latch Groups 1-4, 13-16
DO;
SSB_OPEN_CLOSE_FEEDBACK_INDIC =
(V373380Y AND V37X3381Y)
AND (V373415Y AND V37X3416Y);
END;
C 3: Right FWD BHD Latch Group; Right AFT BHD Latch Group
DO;
SSB_OPEN_CLOSE_FEEDBACK_INDIC =
(V373430Y AND V37X3431Y)
AND (V373450Y AND V37X3451Y);
END;
C 4: PBD Right Door Panel
DO;
SSB_OPEN_CLOSE_FEEDBACK_INDIC =
(V373300Y AND V37X3301Y);
END;
C 5: :Left FWD BHD Latch Group; Left AFT BHD Latch Group
DO;
SSB_OPEN_CLOSE_FEEDBACK_INDIC =
(V373320Y AND V37X3321Y)
AND (V373350Y AND V37X3351Y);
END;
C 6: PBD Left Door Panel
DO;
SSB_OPEN_CLOSE_FEEDBACK_INDIC =
(V373305Y AND V37X3306Y);
END;
END;
CLOSE SSB_OPEN_FEEDBACK;
SSB_CLOSE_FEEDBACK:
PROCEDURE;
IF SSB_CURRENT_LATCH_DOOR_POINTER = 0
THEN SSB_CURRENT_LATCH_DOOR_POINTER = 6;
DO CASE SSB_CURRENT_LATCH_DOOR_POINTER;
C 1: Centerline Latch Groups 5-8, 9-12
DO;
SSB_OPEN_CLOSE_FEEDBACK_INDIC =
(V373395Y AND V37X3396Y)
AND (V373400Y AND V37X3401Y);
END;
C 2: Centerline Latch Groups 1-4, 13-16
DO;
SSB_OPEN_CLOSE_FEEDBACK_INDIC =
(V373385Y AND V37X3386Y)
AND (V373410Y AND V37X3411Y);
END;
C 3: Right FWD BHD Latch Group; Right AFT BHD Latch Group
DO;
SSB_OPEN_CLOSE_FEEDBACK_INDIC =
(V373440Y AND V37X3441Y)
AND (V373460Y AND V37X3461Y);
END;
C 4: PBD Right Door Panel
DO;
SSB_OPEN_CLOSE_FEEDBACK_INDIC =
( (V373435Y AND V37X3436Y)
OR (V373435Y AND V37X3437Y)
OR (V373436Y AND V37X3437Y))
AND ( (V373455Y AND V37X3456Y)
OR (V373455Y AND V37X3457Y)
OR (V373456Y AND V37X3457Y));
END;
C 5: :Left FWD BHD Latch Group; Left AFT BHD Latch Group
DO;
SSB_OPEN_CLOSE_FEEDBACK_INDIC =
(V373330Y AND V37X3331Y)
AND (V373360Y AND V37X3361Y);
END;
C 6: PBD Left Door Panel
DO;
SSB_OPEN_CLOSE_FEEDBACK_INDIC =
( (V373425Y AND V37X3426Y)
OR (V373425Y AND V37X3427Y)
OR (V373436Y AND V37X3437Y))
AND ( (V373355Y AND V37X3356Y)
OR (V373355Y AND V37X3357Y)
OR (V373356Y AND V37X3357Y));
END;
END;
IF SSB_OPEN_CLOSE_FEEDBACK_INDIC = ON
AND (SSB_CURRENT_LATCH_DOOR_POINTER = 3
OR SSB_CURRENT_LATCH_DOOR_POINTER = 5)
THEN CALL SSB_DOOR_FEEDBACK;
CLOSE SSB_CLOSE_FEEDBACK;
SSB_ENABLE_COMMANDS:
PROCEDURE;
DO CASE SSB_CURRENT_LATCH_DOOR_POINTER;
C 1: Centerline Latch Groups 5-8, 9-12
DO;
IF CSBB_CONTROL_SWITCH_POS_INDIC = 1 /* Open */
THEN DO;
CSBB_PF01_OUTPUT_2$(6) = OFF; /* 5-8 CLOSE 1 */
CSBB_PF02_OUTPUT_2$(6) = OFF; /* 5-8 CLOSE 2 */
CSBB_PF01_OUTPUT_2$(8) = OFF; /* 9-12 CLOSE 1 */
CSBB_PF02_OUTPUT_2$(8) = OFF; /* 9-12 CLOSE 2 */
CSBB_PF01_OUTPUT_2$(5) = ON; /* 5-8 OPEN 1 */
CSBB_PF02_OUTPUT_2$(5) = ON; /* 5-8 OPEN 2 */
CSBB_PF01_OUTPUT_2$(7) = ON; /* 9-12 OPEN 1 */
CSBB_PF02_OUTPUT_2$(7) = ON; /* 9-12 OPEN 2 */
END; ELSE DO;
CSBB_PF01_OUTPUT_2$(5) = OFF; /* 5-8 OPEN 1 */
CSBB_PF02_OUTPUT_2$(5) = OFF; /* 5-8 OPEN 2 */
CSBB_PF01_OUTPUT_2$(7) = OFF; /* 9-12 OPEN 1 */
CSBB_PF02_OUTPUT_2$(7) = OFF; /* 9-12 OPEN 2 */
CSBB_PF01_OUTPUT_2$(6) = ON; /* 5-8 CLOSE 1 */
CSBB_PF02_OUTPUT_2$(6) = ON; /* 5-8 CLOSE 2 */
CSBB_PF01_OUTPUT_2$(8) = ON; /* 9-12 CLOSE 1 */
CSBB_PF02_OUTPUT_2$(8) = ON; /* 9-12 CLOSE 2 */
END;
END;
C 2: Centerline Latch Groups 1-4, 13-16
DO;
IF CSBB_CONTROL_SWITCH_POS_INDIC = 1 /* Open */
THEN DO;
CSBB_PF01_OUTPUT_2$( 4) = OFF; /* 1-4 CLOSE 1 */
CSBB_PF02_OUTPUT_2$( 4) = OFF; /* 1-4 CLOSE 2 */
CSBB_PF02_OUTPUT_2$(10) = OFF; /* 13-16 CLOSE 1 */
CSBB_PF01_OUTPUT_2$(10) = OFF; /* 13-16 CLOSE 2 */
CSBB_PF01_OUTPUT_2$(3) = ON; /* 1-4 OPEN 1 */
CSBB_PF02_OUTPUT_2$(3) = ON; /* 1-4 OPEN 2 */
CSBB_PF02_OUTPUT_2$(9) = ON; /* 13-16 OPEN 1 */
CSBB_PF01_OUTPUT_2$(9) = ON; /* 13-16 OPEN 2 */
END; ELSE DO;
CSBB_PF01_OUTPUT_2$(3) = OFF; /* 1-4 OPEN 1 */
CSBB_PF02_OUTPUT_2$(3) = OFF; /* 1-4 OPEN 2 */
CSBB_PF02_OUTPUT_2$(9) = OFF; /* 13-16 OPEN 1 */
CSBB_PF01_OUTPUT_2$(9) = OFF; /* 13-16 OPEN 2 */
CSBB_PF01_OUTPUT_2$( 4) = ON; /* 1-4 CLOSE 1 */
CSBB_PF02_OUTPUT_2$( 4) = ON; /* 1-4 CLOSE 2 */
CSBB_PF02_OUTPUT_2$(10) = ON; /* 13-16 CLOSE 1 */
CSBB_PF01_OUTPUT_2$(10) = ON; /* 13-16 CLOSE 2 */
END;
END;
C 3: Right FWD BHD Latch Group; Right AFT BHD Latch Group
DO;
IF CSBB_CONTROL_SWITCH_POS_INDIC = 1 /* Open */
THEN DO;
CSBB_PF01_OUTPUT_1$(4) = OFF; /* RFWD BHD CLOSE 1 */
CSBB_PF02_OUTPUT_1$(4) = OFF; /* RFWD BHD CLOSE 2 */
CSBB_PF02_OUTPUT_1$(6) = OFF; /* RAFT BHD CLOSE 1 */
CSBB_PF01_OUTPUT_1$(6) = OFF; /* RAFT BHD CLOSE 2 */
CSBB_PF01_OUTPUT_1$(3) = ON; /* RFWD BHD OPEN 1 */
CSBB_PF02_OUTPUT_1$(3) = ON; /* RFWD BHD OPEN 2 */
CSBB_PF02_OUTPUT_1$(5) = ON; /* RAFT BHD OPEN 1 */
CSBB_PF01_OUTPUT_1$(5) = ON; /* RAFT BHD OPEN 2 */
END; ELSE DO;
CSBB_PF01_OUTPUT_1$(3) = OFF; /* RFWD BHD OPEN 1 */
CSBB_PF02_OUTPUT_1$(3) = OFF; /* RFWD BHD OPEN 2 */
CSBB_PF02_OUTPUT_1$(5) = OFF; /* RAFT BHD OPEN 1 */
CSBB_PF01_OUTPUT_1$(5) = OFF; /* RAFT BHD OPEN 2 */
CSBB_PF01_OUTPUT_1$(4) = ON; /* RFWD BHD CLOSE 1 */
CSBB_PF02_OUTPUT_1$(4) = ON; /* RFWD BHD CLOSE 2 */
CSBB_PF02_OUTPUT_1$(6) = ON; /* RAFT BHD CLOSE 1 */
CSBB_PF01_OUTPUT_1$(6) = ON; /* RAFT BHD CLOSE 2 */
END;
END;
C 4: PBD Right Door Panel
DO;
IF CSBB_CONTROL_SWITCH_POS_INDIC = 1 /* Open */
THEN DO;
CSBB_PF01_OUTPUT_1$(2) = OFF; /* Right Door CLOSE 1 */
CSBB_PF02_OUTPUT_1$(2) = OFF; /* Right Door CLOSE 2 */
CSBB_PF01_OUTPUT_1$(1) = ON; /* Right Door OPEN 1 */
CSBB_PF02_OUTPUT_1$(1) = ON; /* Right Door OPEN 2 */
END; ELSE DO;
CSBB_PF01_OUTPUT_1$(1) = OFF; /* Right Door OPEN 1 */
CSBB_PF02_OUTPUT_1$(1) = OFF; /* Right Door OPEN 2 */
CSBB_PF01_OUTPUT_1$(2) = ON; /* Right Door CLOSE 1 */
CSBB_PF02_OUTPUT_1$(2) = ON; /* Right Door CLOSE 2 */
END;
END;
C 5: :Left FWD BHD Latch Group; Left AFT BHD Latch Group
DO;
IF CSBB_CONTROL_SWITCH_POS_INDIC = 1 /* Open */
THEN DO;
CSBB_PF01_OUTPUT_3$(4) = OFF; /* LFWD BHD CLOSE 1 */
CSBB_PF02_OUTPUT_3$(4) = OFF; /* LFWD BHD CLOSE 2 */
CSBB_PF01_OUTPUT_3$(6) = OFF; /* LAFT BHD CLOSE 1 */
CSBB_PF02_OUTPUT_3$(6) = OFF; /* LAFT BHD CLOSE 2 */
CSBB_PF01_OUTPUT_3$(3) = ON; /* LFWD BHD OPEN 1 */
CSBB_PF02_OUTPUT_3$(3) = ON; /* LFWD BHD OPEN 2 */
CSBB_PF01_OUTPUT_3$(5) = ON; /* LAFT BHD OPEN 1 */
CSBB_PF02_OUTPUT_3$(5) = ON; /* LAFT BHD OPEN 2 */
END; ELSE DO;
CSBB_PF01_OUTPUT_3$(3) = OFF; /* LFWD BHD OPEN 1 */
CSBB_PF02_OUTPUT_3$(3) = OFF; /* LFWD BHD OPEN 2 */
CSBB_PF01_OUTPUT_3$(5) = OFF; /* LAFT BHD OPEN 1 */
CSBB_PF02_OUTPUT_3$(5) = OFF; /* LAFT BHD OPEN 2 */
CSBB_PF01_OUTPUT_3$(4) = ON; /* LFWD BHD CLOSE 1 */
CSBB_PF02_OUTPUT_3$(4) = ON; /* LFWD BHD CLOSE 2 */
CSBB_PF01_OUTPUT_3$(6) = ON; /* LAFT BHD CLOSE 1 */
CSBB_PF02_OUTPUT_3$(6) = ON; /* LAFT BHD CLOSE 2 */
END;
END;
C 6: PBD Left Door Panel
DO;
IF CSBB_CONTROL_SWITCH_POS_INDIC = 1 /* Open */
THEN DO;
CSBB_PF02_OUTPUT_3$(2) = OFF; /* Left Door CLOSE 1 */
CSBB_PF01_OUTPUT_3$(2) = OFF; /* Left Door CLOSE 2 */
CSBB_PF02_OUTPUT_3$(1) = ON; /* Left Door OPEN 1 */
CSBB_PF01_OUTPUT_3$(1) = ON; /* Left Door OPEN 2 */
END; ELSE DO;
CSBB_PF02_OUTPUT_3$(1) = OFF; /* Left Door OPEN 1 */
CSBB_PF01_OUTPUT_3$(1) = OFF; /* Left Door OPEN 2 */
CSBB_PF02_OUTPUT_3$(2) = ON; /* Left Door CLOSE 1 */
CSBB_PF01_OUTPUT_3$(2) = ON; /* Left Door CLOSE 2 */
END;
END;
END;
IF CSBB_CONTROL_SWITCH_POS_INDIC = 1 /* Open */
THEN DO;
SSB_COMMANDS_ENABLED_ARRAY$(SSB_CURRENT_LATCH_DOOR_POINTER,1) = ON;
SSB_COMMANDS_ENABLED_ARRAY$(SSB_CURRENT_LATCH_DOOR_POINTER,2) = OFF;
END; ELSE DO;
SSB_COMMANDS_ENABLED_ARRAY$(SSB_CURRENT_LATCH_DOOR_POINTER,1) = OFF;
SSB_COMMANDS_ENABLED_ARRAY$(SSB_CURRENT_LATCH_DOOR_POINTER,2) = ON;
END;
CLOSE SSB_ENABLE_COMMAND;
SSB_SET_OPEN_FAIL_INDICATORS:
PROCEDURE;
DO CASE SSB_CURRENT_LATCH_DOOR_POINTER;
C 1: Centerline Latch Groups 5-8, 9-12
DO;
IF (V37X3390Y AND V37X3391Y) = FALSE
THEN CSBB_OPEN_FAIL_INDICATOR$(1) = ON;
IF (V37X3405Y AND V37X3406Y) = FALSE
THEN CSBB_OPEN_FAIL_INDICATOR$(2) = ON;
END;
C 2: Centerline Latch Groups 1-4, 13-16
DO;
IF (V37X3380Y AND V37X3381Y) = FALSE
THEN CSBB_OPEN_FAIL_INDICATOR$(3) = ON;
IF (V37X3415Y AND V37X3416Y) = FALSE
THEN CSBB_OPEN_FAIL_INDICATOR$(4) = ON;
END;
C 3: Right FWD BHD Latch Group; Right AFT BHD Latch Group
DO;
IF (V37X3430Y AND V37X3431Y) = FALSE
THEN CSBB_OPEN_FAIL_INDICATOR$(5) = ON;
IF (V37X3450Y AND V37X3451Y) = FALSE
THEN CSBB_OPEN_FAIL_INDICATOR$(6) = ON;
END;
C 4: PBD Right Door Panel
DO;
CSBB_OPEN_FAIL_INDICATOR$(7) = ON;
END;
C 5: :Left FWD BHD Latch Group; Left AFT BHD Latch Group
DO;
IF (V37X3320Y AND V37X3321Y) = FALSE
THEN CSBB_OPEN_FAIL_INDICATOR$(8) = ON;
IF (V37X3350Y AND V37X3351Y) = FALSE
THEN CSBB_OPEN_FAIL_INDICATOR$(9) = ON;
END;
C 6: PBD Left Door Panel
DO;
CSBB_OPEN_FAIL_INDICATOR$(10) = ON;
END;
END;
CLOSE SSB_SET_OPEN_FAIL_INDICATORS;
SSB_SET_CLOSE_FAIL_INDICATORS:
PROCEDURE;
DO CASE SSB_CURRENT_LATCH_DOOR_POINTER;
C 1: Centerline Latch Groups 5-8, 9-12
DO;
IF (V37X3390Y AND V37X3391Y) = FALSE
THEN DO;
CSBB_CLOSE_FAIL_INDICATOR$(1) = ON;
END;
IF (V37X3405Y AND V37X3406Y) = FALSE
THEN DO;
CSBB_CLOSE_FAIL_INDICATOR$(2) = ON;
END;
END;
C 2: Centerline Latch Groups 1-4, 13-16
DO;
IF (V37X3380Y AND V37X3381Y) = FALSE
THEN DO;
CSBB_CLOSE_FAIL_INDICATOR$(3) = ON;
END;
IF (V37X3415Y AND V37X3416Y) = FALSE
THEN DO;
CSBB_CLOSE_FAIL_INDICATOR$(4) = ON;
END;
END;
C 3: Right FWD BHD Latch Group; Right AFT BHD Latch Group
DO;
IF (V37X3430Y AND V37X3431Y) = FALSE
THEN DO;
CSBB_CLOSE_FAIL_INDICATOR$(5) = ON;
END;
IF (V37X3450Y AND V37X3451Y) = FALSE
THEN DO;
CSBB_CLOSE_FAIL_INDICATOR$(6) = ON;
END;
END;
C 4: PBD Right Door Panel
DO;
CSBB_CLOSE_FAIL_INDICATOR$(7) = ON;
END;
C 5: :Left FWD BHD Latch Group; Left AFT BHD Latch Group
DO;
IF (V37X3320Y AND V37X3321Y) = FALSE
THEN DO;
CSBB_CLOSE_FAIL_INDICATOR$(8) = ON;
END;
IF (V37X3350Y AND V37X3351Y) = FALSE
THEN DO;
CSBB_CLOSE_FAIL_INDICATOR$(9) = ON;
END;
END;
C 6: PBD Left Door Panel
DO;
CSBB_CLOSE_FAIL_INDICATOR$(10) = ON;
END;
END;
CLOSE SSB_SET_CLOSE_FAIL_INDICATORS;
SSB_MANUAL_SEQUENCE:
PROCEDURE;
IF CSBB_CONTROL_SWITCH_POS_INDIC = 1 /* Open Position */
THEN CALL SSB_MANUAL_OPEN;
ELSE CALL SSB_MANUAL_CLOSE;
SSB_PREVIOUS_SWITCH_POS = CSBB_CONTROL_SWITCH_POS_INDIC;
CSBB_PBD_OUTPUT_INDICATOR = ON;
CLOSE SSB_MANUAL_SEQUENCE;
SSB_MANUAL_OPEN:
PROCEDURE;
IF CSBB_MANUAL_MODE_ITEMS$(4) = ON
THEN DO;
CSBB_PF01_OUTPUT_2$(6) = OFF; /* 5-8 CLOSE 1 */
CSBB_PF02_OUTPUT_2$(6) = OFF; /* 5-8 CLOSE 2 */
CSBB_PF01_OUTPUT_2$(5) = ON; /* 5-8 OPEN 1 */
CSBB_PF02_OUTPUT_2$(5) = ON; /* 5-8 OPEN 2 */
END;
IF CSBB_MANUAL_MODE_ITEMS$(5) = ON
THEN DO;
CSBB_PF01_OUTPUT_2$(8) = OFF; /* 9-12 CLOSE 1 */
CSBB_PF02_OUTPUT_2$(8) = OFF; /* 9-12 CLOSE 2 */
CSBB_PF01_OUTPUT_2$(7) = ON; /* 9-12 OPEN 1 */
CSBB_PF02_OUTPUT_2$(7) = ON; /* 9-12 OPEN 2 */
END;
IF CSBB_MANUAL_MODE_ITEMS$(6) = ON
THEN DO;
CSBB_PF01_OUTPUT_2$(4) = OFF; /* 1-4 CLOSE 1 */
CSBB_PF02_OUTPUT_2$(4) = OFF; /* 1-4 CLOSE 2 */
CSBB_PF01_OUTPUT_2$(3) = ON; /* 1-4 OPEN 1 */
CSBB_PF02_OUTPUT_2$(3) = ON; /* 1-4 OPEN 2 */
END;
IF CSBB_MANUAL_MODE_ITEMS$(7) = ON
THEN DO;
CSBB_PF02_OUTPUT_2$(10) = OFF; /* 13-16 CLOSE 1 */
CSBB_PF01_OUTPUT_2$(10) = OFF; /* 13-16 CLOSE 2 */
CSBB_PF02_OUTPUT_2$(9) = ON; /* 13-16 OPEN 1 */
CSBB_PF01_OUTPUT_2$(9) = ON; /* 13-16 OPEN 2 */
END;
IF CSBB_MANUAL_MODE_ITEMS$(8) = ON
THEN DO;
CSBB_PF01_OUTPUT_1$(4) = OFF; /* RFWD BHD CLOSE 1 */
CSBB_PF02_OUTPUT_1$(4) = OFF; /* RFWD BHD CLOSE 2 */
CSBB_PF01_OUTPUT_1$(3) = OFF; /* RFWD BHD OPEN 1 */
CSBB_PF02_OUTPUT_1$(3) = OFF; /* RFWD BHD OPEN 2 */
END;
IF CSBB_MANUAL_MODE_ITEMS$(9) = ON
THEN DO;
CSBB_PF02_OUTPUT_1$(6) = OFF; /* RAFT BHD CLOSE 1 */
CSBB_PF01_OUTPUT_1$(6) = OFF; /* RAFT BHD CLOSE 2 */
CSBB_PF02_OUTPUT_1$(5) = ON; /* RAFT BHD OPEN 1 */
CSBB_PF01_OUTPUT_1$(5) = ON; /* RAFT BHD OPEN 2 */
END;
IF CSBB_MANUAL_MODE_ITEMS$(10) = ON
THEN DO;
CSBB_PF01_OUTPUT_1$(2) = OFF; /* Right Door CLOSE 1 */
CSBB_PF02_OUTPUT_1$(2) = OFF; /* Right Door CLOSE 2 */
CSBB_PF01_OUTPUT_1$(1) = ON; /* Right Door OPEN 1 */
CSBB_PF02_OUTPUT_1$(1) = ON; /* Right Door OPEN 2 */
END;
IF CSBB_MANUAL_MODE_ITEMS$(11) = ON
THEN DO;
CSBB_PF01_OUTPUT_3$(3) = OFF; /* LFWD BHD OPEN 1 */
CSBB_PF02_OUTPUT_3$(3) = OFF; /* LFWD BHD OPEN 2 */
CSBB_PF01_OUTPUT_3$(4) = ON; /* LFWD BHD CLOSE 1 */
CSBB_PF02_OUTPUT_3$(4) = ON; /* LFWD BHD CLOSE 2 */
END;
IF CSBB_MANUAL_MODE_ITEMS$(12) = ON
THEN DO;
CSBB_PF01_OUTPUT_3$(4) = OFF; /* LFWD BHD CLOSE 1 */
CSBB_PF02_OUTPUT_3$(4) = OFF; /* LFWD BHD CLOSE 2 */
CSBB_PF01_OUTPUT_3$(5) = ON; /* LAFT BHD OPEN 1 */
CSBB_PF02_OUTPUT_3$(5) = ON; /* LAFT BHD OPEN 2 */
END;
IF CSBB_MANUAL_MODE_ITEMS$(13) = ON
THEN DO;
CSBB_PF02_OUTPUT_3$(2) = OFF; /* Left Door CLOSE 1 */
CSBB_PF01_OUTPUT_3$(2) = OFF; /* Left Door CLOSE 2 */
CSBB_PF02_OUTPUT_3$(1) = ON; /* Left Door OPEN 1 */
CSBB_PF01_OUTPUT_3$(1) = ON; /* Left Door OPEN 2 */
END;
CLOSE SSB_MANUAL_OPEN;
SSB_MANUAL_CLOSE:
PROCEDURE;
IF CSBB_MANUAL_MODE_ITEMS$(4) = ON
THEN DO;
CSBB_PF01_OUTPUT_2$(5) = OFF; /* 5-8 OPEN 1 */
CSBB_PF02_OUTPUT_2$(5) = OFF; /* 5-8 OPEN 2 */
CSBB_PF01_OUTPUT_2$(6) = ON; /* 5-8 CLOSE 1 */
CSBB_PF02_OUTPUT_2$(6) = ON; /* 5-8 CLOSE 2 */
END;
IF CSBB_MANUAL_MODE_ITEMS$(5) = ON
THEN DO;
CSBB_PF01_OUTPUT_2$(7) = OFF; /* 9-12 OPEN 1 */
CSBB_PF02_OUTPUT_2$(7) = OFF; /* 9-12 OPEN 2 */
CSBB_PF01_OUTPUT_2$(8) = ON; /* 9-12 CLOSE 1 */
CSBB_PF02_OUTPUT_2$(8) = ON; /* 9-12 CLOSE 2 */
END;
IF CSBB_MANUAL_MODE_ITEMS$(6) = ON
THEN DO;
CSBB_PF01_OUTPUT_2$(3) = OFF; /* 1-4 OPEN 1 */
CSBB_PF02_OUTPUT_2$(3) = OFF; /* 1-4 OPEN 2 */
CSBB_PF01_OUTPUT_2$(4) = ON; /* 1-4 CLOSE 1 */
CSBB_PF02_OUTPUT_2$(4) = ON; /* 1-4 CLOSE 2 */
END;
IF CSBB_MANUAL_MODE_ITEMS$(7) = ON
THEN DO;
CSBB_PF02_OUTPUT_2$(9) = OFF; /* 13-16 OPEN 1 */
CSBB_PF01_OUTPUT_2$(9) = OFF; /* 13-16 OPEN 2 */
CSBB_PF02_OUTPUT_2$(10) = ON; /* 13-16 CLOSE 1 */
CSBB_PF01_OUTPUT_2$(10) = ON; /* 13-16 CLOSE 2 */
END;
IF CSBB_MANUAL_MODE_ITEMS$(8) = ON
THEN DO;
CSBB_PF01_OUTPUT_1$(3) = OFF; /* RFWD BHD OPEN 1 */
CSBB_PF02_OUTPUT_1$(3) = OFF; /* RFWD BHD OPEN 2 */
CSBB_PF01_OUTPUT_1$(4) = ON; /* RFWD BHD CLOSE 1 */
CSBB_PF02_OUTPUT_1$(4) = ON; /* RFWD BHD CLOSE 2 */
END;
IF CSBB_MANUAL_MODE_ITEMS$(9) = ON
THEN DO;
CSBB_PF02_OUTPUT_1$(5) = OFF; /* RAFT BHD OPEN 1 */
CSBB_PF01_OUTPUT_1$(5) = OFF; /* RAFT BHD OPEN 2 */
CSBB_PF02_OUTPUT_1$(6) = ON; /* RAFT BHD CLOSE 1 */
CSBB_PF01_OUTPUT_1$(6) = ON; /* RAFT BHD CLOSE 2 */
END;
IF CSBB_MANUAL_MODE_ITEMS$(10) = ON
THEN DO;
CSBB_PF01_OUTPUT_1$(1) = OFF; /* Right Door OPEN 1 */
CSBB_PF02_OUTPUT_1$(1) = OFF; /* Right Door OPEN 2 */
CSBB_PF01_OUTPUT_1$(2) = ON; /* Right Door CLOSE 1 */
CSBB_PF02_OUTPUT_1$(2) = ON; /* Right Door CLOSE 2 */
END;
IF CSBB_MANUAL_MODE_ITEMS$(11) = ON
THEN DO;
CSBB_PF01_OUTPUT_3$(4) = OFF; /* LFWD BHD CLOSE 1 */
CSBB_PF02_OUTPUT_3$(4) = OFF; /* LFWD BHD CLOSE 2 */
CSBB_PF01_OUTPUT_3$(3) = ON; /* LFWD BHD OPEN 1 */
CSBB_PF02_OUTPUT_3$(3) = ON; /* LFWD BHD OPEN 2 */
END;
IF CSBB_MANUAL_MODE_ITEMS$(12) = ON
THEN DO;
CSBB_PF01_OUTPUT_3$(5) = OFF; /* LAFT BHD OPEN 1 */
CSBB_PF02_OUTPUT_3$(5) = OFF; /* LAFT BHD OPEN 2 */
CSBB_PF01_OUTPUT_3$(4) = ON; /* LFWD BHD CLOSE 1 */
CSBB_PF02_OUTPUT_3$(4) = ON; /* LFWD BHD CLOSE 2 */
END;
IF CSBB_MANUAL_MODE_ITEMS$(13) = ON
THEN DO;
CSBB_PF02_OUTPUT_3$(1) = OFF; /* Left Door OPEN 1 */
CSBB_PF01_OUTPUT_3$(1) = OFF; /* Left Door OPEN 2 */
CSBB_PF02_OUTPUT_3$(2) = ON; /* Left Door CLOSE 1 */
CSBB_PF01_OUTPUT_3$(2) = ON; /* Left Door CLOSE 2 */
END;
CLOSE SSB_MANUAL_CLOSE;
SSB_DOOR_FEEDBACK:
PROCEDURE;
IF SSB_CURRENT_LATCH_DOOR_POINTER = 3
THEN DO;
SSB_OPEN_CLOSE_FEEDBACK_INDIC = (V37X3302Y AND V37X3303Y);
END; ELSE DO;
SSB_OPEN_CLOSE_FEEDBACK_INDIC = (V37X3307Y AND V37X3308Y);
END;
IF SSB_OPEN_CLOSE_FEEDBACK_INDIC = OFF
THEN DO;
CSBB_COMMON_PBD_FAIL_INDICATOR = ON;
IF SSB_CURRENT_LATCH_DOOR_POINTER = 3
THEN DO;
CSBB_CLOSE_FAIL_INDICATOR$(7) = ON;
END; ELSE DO;
CSBB_CLOSE_FAIL_INDICATOR$(10) = ON;
END;
SSB_CURRENT_LATCH_DOOR_POINTER =
SSB_CURRENT_LATCH_DOOR_POINTER + 1;
CALL SSB_DISABLE_UNVERIFIED_COMMANDS;
END;
CLOSE SSB_DOOR_FEEDBACK;
SSB_PBD_TALKBACK:
PROCEDURE;
SSB_OPEN_CLOSE_COMPLETE = 3; /* None of The Above */
IF CSBB_C_LCH_5_8_TEXT = 'OP'
AND CSBB_C_LCH_9_12_TEXT = 'OP'
AND CSBB_C_LCH_1_4_TEXT = 'OP'
AND CSBB_C_LCH_13_16_TEXT = 'OP'
AND CSBB_R_FWD_BHD_TEXT = 'OP'
AND CSBB_R_AFT_BHD_TEXT = 'OP'
AND CSBB_L_FWD_BHD_TEXT = 'OP'
AND CSBB_L_AFT_BHD_TEXT = 'OP'
AND CSBB_R_DOOR_TEXT = 'OP'
AND CSBB_L_DOOR_TEXT = 'OP'
THEN DO;
CSBB_PF01_OUTPUT_2$(1) = ON;
CSBB_PF02_OUTPUT_2$(1) = ON;
IF SSB_OPEN_CLOSE_COMPLETE != 1
THEN DO;
CSBB_PBD_OUTPUT_INDICATOR = ON;
END;
SSB_OPEN_CLOSE_COMPLETE = 1; /* Fully Open */
END; ELSE DO;
IF CSBB_C_LCH_5_8_TEXT = 'CL'
AND CSBB_C_LCH_9_12_TEXT = 'CL'
AND CSBB_C_LCH_1_4_TEXT = 'CL'
AND CSBB_C_LCH_13_16_TEXT = 'CL'
AND CSBB_R_FWD_BHD_TEXT = 'CL'
AND CSBB_R_AFT_BHD_TEXT = 'CL'
AND CSBB_L_FWD_BHD_TEXT = 'CL'
AND CSBB_L_AFT_BHD_TEXT = 'CL'
AND CSBB_R_DOOR_TEXT = 'CL'
AND CSBB_L_DOOR_TEXT = 'CL'
THEN DO;
CSBB_PF01_OUTPUT_2$(2) = ON;
CSBB_PF02_OUTPUT_2$(2) = ON;
IF SSB_OPEN_CLOSE_COMPLETE != 2
THEN DO;
CSBB_PBD_OUTPUT_INDICATOR = ON;
END;
SSB_OPEN_CLOSE_COMPLETE = 2; /* Fully Closed */
END; ELSE DO;
IF SSB_OPEN_CLOSE_COMPLETE != 0
THEN DO;
CSBB_PBD_OUTPUT_INDICATOR = ON;
END;
END;
END;
CLOSE SSB_PBD_TALKBACK;
SSB_POWER_ON_OFF_PROCESSING:
PROCEDURE;
IF SSB_POWER_DISABLE_IND = ON
THEN DO;
/* XXX set bit masks for 'B' */
SSB_POWER_DISABLE_IND = OFF;
CSBB_PBD_OUTPUT_INDICATOR = ON;
END;
IF CSBB_POWER_ON_OFF_FLAG = ON
THEN DO;
/* XXX set bit masks for 'B' */
CSBB_POWER_ON_OFF_FLAG = OFF;
CSBB_PBD_OUTPUT_INDICATOR = ON;
IF CSBB_POWER_ON_OFF_ITEM$(1)
THEN DO;
CSBB_PF01_OUTPUT_1$(7) = ON;/*Power On/Off Cmd 1A*/
CSBB_PF02_OUTPUT_1$(7) = ON;/*Power On/Off Cmd 2A*/
CSBB_PF01_OUTPUT_1$(8) = ON;/*Power On/Off Cmd 3A*/
CSBB_PF01_OUTPUT_1$(9) = ON;/*Power On/Off Cmd 4A*/
CSBB_PF02_OUTPUT_3$(8) = ON;/*Power On/Off Cmd 5A*/
CSBB_PF02_OUTPUT_1$(9) = ON;/*Power On/Off Cmd 6A*/
CSBB_PF01_OUTPUT_4$(8) = ON;/*Power On/Off Cmd 1B*/
CSBB_PF02_OUTPUT_3$(7) = ON;/*Power On/Off Cmd 2B*/
CSBB_PF01_OUTPUT_3$(8) = ON;/*Power On/Off Cmd 3B*/
CSBB_PF01_OUTPUT_3$(9) = ON;/*Power On/Off Cmd 4B*/
CSBB_PF02_OUTPUT_3$(8) = ON;/*Power On/Off Cmd 5B*/
CSBB_PF02_OUTPUT_4$(2) = ON;/*Power On/Off Cmd 6B*/
END; ELSE DO;
CSBB_PF01_OUTPUT_1$(7) = OFF;/*Power On/Off Cmd 1A*/
CSBB_PF02_OUTPUT_1$(7) = OFF;/*Power On/Off Cmd 2A*/
CSBB_PF01_OUTPUT_1$(8) = OFF;/*Power On/Off Cmd 3A*/
CSBB_PF01_OUTPUT_1$(9) = OFF;/*Power On/Off Cmd 4A*/
CSBB_PF02_OUTPUT_3$(8) = OFF;/*Power On/Off Cmd 5A*/
CSBB_PF02_OUTPUT_1$(9) = OFF;/*Power On/Off Cmd 6A*/
CSBB_PF01_OUTPUT_4$(8) = OFF;/*Power On/Off Cmd 1B*/
CSBB_PF02_OUTPUT_3$(7) = OFF;/*Power On/Off Cmd 2B*/
CSBB_PF01_OUTPUT_3$(8) = OFF;/*Power On/Off Cmd 3B*/
CSBB_PF01_OUTPUT_3$(9) = OFF;/*Power On/Off Cmd 4B*/
CSBB_PF02_OUTPUT_3$(8) = OFF;/*Power On/Off Cmd 5B*/
CSBB_PF02_OUTPUT_4$(2) = OFF;/*Power On/Off Cmd 6B*/
SSB_POWER_DISABLE_IND = ON;
END;
END;
CLOSE SSB_POWER_ON_OFF_PROCESSING;
C
C --- ENTRY
C
CALL SSB_POWER_ON_OFF_PROCESSING;
/* Move valid switch position feedback parameters to save area */
IF CSSV_INSTAT_D100300 = TRUE THEN
CSBB_PF01_INPUT_1 = CSSV_SPINB_D100300;
IF CSSV_INSTAT_D100600 = TRUE THEN
CSBB_PF01_INPUT_2 = CSSV_SPINB_D100600;
IF CSSV_INSTAT_D120300 = TRUE THEN
CSBB_PF02_INPUT_1 = CSSV_SPINB_D120300;
IF CSSV_INSTAT_D120600 = TRUE THEN
CSBB_PF02_INPUT_2 = CSSV_SPINB_D120600;
CALL SSB_CONTROL_SWITCH_POSITION_DETERMINATION;
IF CSBB_CONTROL_SWITCH_POS_INDIC != SSB_PREVIOUS_SWITCH_POS
OR CSSB_FULL_EX_FLAG = ON
THEN DO;
/* move remainder of valid feedback parameters to save area */
IF CSSV_INSTAT_D120900 = TRUE THEN
CSBB_PF02_INPUT_3 = CSSV_SPINB_D120900;
IF CSSV_INSTAT_D120900 = TRUE THEN
CSBB_PF02_INPUT_3 = CSSV_SPINB_D120900;
CALL SSB_CRT_FEEDBACK_DISPLAY;
CALL SSB_PBD_TALKBACK;
IF CSBB_CONTROL_SWITCH_POS_INDIC = 0 /* Stop Position */
THEN DO;
RESET CZ1E_OPS_MODE_INHIBIT$(3);
CALL SBB_MODE_SELECTION;
END; ELSE DO;
SET CZ1E_OPS_MODE_INHIBIT$(3);
IF (CSBB_AUTO_MODE_FLAG = ON) AND (CSBB_AUTO_MODE_ITEM = ON)
THEN DO;
SSB_PREVIOUS_SWITCH_POS = CSBB_CONTROL_SWITCH_POS_INDIC;
CALL SSB_AUTO_OPEN_CLOSE_SEQUENCE;
END; ELSE DO;
IF (CSBB_MANUAL_MODE_FLAG = ON) AND (CSBB_MANUAL_MODE_ITEMS != 0)
THEN DO;
CALL SSB_MANUAL_SELECT;
END; ELSE DO;
CALL SSB_MODE_SELECTION;
END;
END;
END;
CSSB_FULL_EX_FLAG = OFF;
END;
IF CSBB_PBD_OUTPUT_INDICATOR = ON
THEN DO;
CALL SSO_SP_DATA_OUT;
CSBB_PBD_OUTPUT_INDICATOR = OFF;
END;
CLOSE SSB_PL_BAY_DOORS;
C RECONSTRUCTED CODE: This source code was reconstructed from historical
C specifications and may not reflect the content of actual flight
C software.
C
C
C IBM-79-SS-4095/p.130
C
C***********************************************************************
C** **
C** 3.2 Operational Sequences **
C** 3.2.1 Orbit/Doors (OPS 2) Control Segment (SM2_OPS) **
C** 3.2.1.9 Special Processes Executive (SSP_EXEC) **
C** **
C***********************************************************************
C
D INCLUDE TEMPLATE SSD_SP_DATA_ACQ /* SP Data Acquisition */
D INCLUDE TEMPLATE SSO_SP_DATA_OUT /* SP Data Out */
D INCLUDE TEMPLATE SSA_APU_FUEL_QTY /* APU Fuel Quantity */
D INCLUDE TEMPLATE SSF_FUEL_CELL /* Fuel Cell Comp */
D INCLUDE TEMPLATE SSH_HYD_H20_QTY /* Hydraulic Water Boiler Quantity */
D INCLUDE TEMPLATE SSN_O2N2_QTY /* O2/N2 Quantity */
D INCLUDE TEMPLATE SSW_H20_PUMP_P /* H2O Pump Delta Pressure */
D INCLUDE TEMPLATE SSR_REC_TAPE /* Recorder Position Tape */
D INCLUDE TEMPLATE SSC_FUEL_CELL_PURGE /* FUel Cell Purge */
D INCLUDE TEMPLATE SST_HYD_FLD_TEMP /* Hydraulic Fluid On-Orbit Temperature */
D INCLUDE TEMPLATE SSB_PL_BAY_DOORS /* Payload Bay Doors */
D INCLUDE TEMPLATE SSS_STAND_H20_COOL /* Standby Water Coolant Loop */
D INCLUDE TEMPLATE SSM_ANT_MGMT /* Antenna Management */
D INCLUDE TEMPLATE CSS_SP_CMT /* Special PRocesses CMT */
D INCLUDE TEMPLATE CGE_DISPATCHER /* Contains Code for hybrid dispatcher */
D INCLUDE TEMPLATE SHD_HYB_DISPATCH /* SM hybrid dispatch table */
D INCLUDE GEDISP /* Contains integer values used by
hybrid dispatcher to index
through Dispatch Table. */
D INCLUDE TEMPLATE CSZ_ICC_CMT /* ICC Input Buffers and Communica -
tions Table. */
D INCLUDE DIM_ICC_COLLECTOR /* UI ICC Collector Routines */
C
SSP_EXEC: PROGRAM;
DECLARE NEGMAX INTEGER CONSTANT(-32768);
C FSSR-
C DESC-Used as a method to multipy frequency
C by -1 and store into phase.
C
DECLARE CGEV_PS INTEGER INITIAL(0);
DECLARE CGEV_FREQ INTEGER INITIAL(0);
DECLARE I INTEGER INITIAL(1);
NAME(SHD_HYB_DISPATCH) = NAME(SHD_HYB_DISPATCH_TBL$I);
DISPATCHER: DO WHILE TRUE;
CGEV_PS = CGE_PS - 1;
IF CGEV_PS <= 0 THEN DO;
IF CGEV_FREQ <= 0 THEN DO;
IF CGEV_FREQ = 0 THEN DO;
CGEV_PS = 1;
EXIT DISPATCHER;
ELSE DO;
CGEV_PS = CGEV_FREQ - NEGMAX;
END;
ELSE DO;
CGE_PS = CGEV_FREQ;
DO CASE SHD_HYB_DISPATCH.CASENO;
C 1:
DO
CSSV_SP_CURRENT_TIME = CLOCKTIME;
CALL SSD_SP_DATA_ACQ;
END;
C 2:
CALL SSA_APU_FUEL_QTY;
C 3:
CALL SSF_FUEL_CELL;
C 4:
CALL SSC_FUEL_CELL_PURGE;
C 5:
CALL SSN_O2N2_QTY;
C 6:
CALL SSW_H2O_PUMP_P;
C 7:
CALL SST_HYD_FLD_TEMP;
C 8:
CALL SSR_REC_TAPE_POS;
C 9:
CALL SSH_HYD_H2O_QTY;
C 10:
CALL SSB_PL_BAY_DOORS;
C 11:
CALL SSS_STAND_H2O_COOL;
C 12:
CALL SSM_ANT_MGMT;
C 13:
CALL SSO_SP_DATA_OUT;
C 14:
CSSB_FULL_EX_FLAG = ON;
END;
END;
END;
I = I + 1;
NAME(SHD_HYB_DISPATCH) = NAME(SHD_HYB_DISPATCH_TBL$I);
END;
CLOSE_SSP: CLOSE SSP_EXEC;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment