! *** PREDECLARED TYPES %IF %DECLARED ( %BASIC$QUADWORD_DECLARED ) = 0 %THEN RECORD BASIC$QUADWORD LONG FILL ( 2 ) END RECORD %LET %BASIC$QUADWORD_DECLARED = 1 %END %IF %IF %DECLARED ( %BASIC$OCTAWORD_DECLARED ) = 0 %THEN RECORD BASIC$OCTAWORD LONG FILL ( 4 ) END RECORD %LET %BASIC$OCTAWORD_DECLARED = 1 %END %IF %IF %DECLARED ( %BASIC$HFLOAT_AXP_DECLARED ) = 0 %THEN RECORD BASIC$HFLOAT_AXP LONG FILL ( 4 ) END RECORD %LET %BASIC$HFLOAT_AXP_DECLARED = 1 %END %IF %IF %DECLARED ( %BASIC$F_FLOATING_COMPLEX_DECL ) = 0 %THEN RECORD BASIC$F_FLOATING_COMPLEX SINGLE REAL_PART SINGLE IMAGINARY_PART END RECORD %LET %BASIC$F_FLOATING_COMPLEX_DECL = 1 %END %IF %IF %DECLARED ( %BASIC$D_FLOATING_COMPLEX_DECL ) = 0 %THEN RECORD BASIC$D_FLOATING_COMPLEX DOUBLE REAL_PART DOUBLE IMAGINARY_PART END RECORD %LET %BASIC$D_FLOATING_COMPLEX_DECL = 1 %END %IF %IF %DECLARED ( %BASIC$G_FLOATING_COMPLEX_DECL ) = 0 %THEN RECORD BASIC$G_FLOATING_COMPLEX GFLOAT REAL_PART GFLOAT IMAGINARY_PART END RECORD %LET %BASIC$G_FLOATING_COMPLEX_DECL = 1 %END %IF %IF %DECLARED ( %BASIC$H_FLOAT_AXP_CMPLX_DCL ) = 0 %THEN RECORD BASIC$H_FLOATING_COMPLEX_AXP BASIC$HFLOAT_AXP REAL_PART BASIC$HFLOAT_AXP IMAGINARY_PART END RECORD %LET %BASIC$H_FLOAT_AXP_CMPLX_DCL = 1 %END %IF ! ! CONDITION HANDLING ARGUMENT LIST OFFSETS ! THERE ARE FOUR CONDITIONAL HANDLING STRUCTURES: THE PRIMARY ARGUMENT ! LIST, THE SIGNAL AND MECHANISM ARRAYS AND THE ALPHA EXCEPTION RECORD ! ALL ARE IDENTIFIED BY THE SAME BLOCK PREFIX. ! DECLARE LONG CONSTANT CHF$S_CHFDEF = 12 record CHFDEF LONG CHFDEF$$_FILL_1 ! Primary Argument Count LONG CHF$L_SIGARGLST ! ADDRESS OF SIGNAL ARGUMENTS LONG CHF$L_MCHARGLST ! ADDRESS OF MECHANISM ARGUMENTS end record CHFDEF DECLARE LONG CONSTANT CHF$S_CHFDEF1 = 12 record CHFDEF1 group CHF$R_SIG_ARGS_DESC variant case LONG CHF$IS_SIG_ARGS ! NUMBER OF SIGNAL ARGUMENTS case LONG CHF$L_SIG_ARGS ! obsolete def end variant end group CHF$R_SIG_ARGS_DESC group CHF$R_SIG_NAME_DESC variant case LONG CHF$IS_SIG_NAME ! SIGNAL NAME case LONG CHF$L_SIG_NAME ! obsolete def end variant end group CHF$R_SIG_NAME_DESC group CHF$R_SIG_ARG1_DESC variant case LONG CHF$IS_SIG_ARG1 ! FIRST SIGNAL SPECIFIC ARGUMENT case LONG CHF$L_SIG_ARG1 ! obsolete def end variant end group CHF$R_SIG_ARG1_DESC end record CHFDEF1 DECLARE LONG CONSTANT CHF$M_FPREGS_VALID = x'00000001' DECLARE LONG CONSTANT CHF$M_FPREGS2_VALID = x'00000002' DECLARE LONG CONSTANT CHF$S_CHFDEF2 = 360 record CHFDEF2 group CHF$R_MCH_ARGS_DESC variant case LONG CHF$IS_MCH_ARGS ! NUMBER OF MECHANISM ARGUMENTS end variant end group CHF$R_MCH_ARGS_DESC group CHF$R_MCH_FLAGS_DESC variant case LONG CHF$IS_MCH_FLAGS ! Flags case group CHF$R_MCH_FLAGS_BITS ! Flags bits. ! FP registers stored in MCH. BYTE FPREGS_VALID_bits ! COMMENT ADDED BY SDL - FPREGS_VALID_bits contains bits FPREGS_VALID through & ! FILL_75_ end group CHF$R_MCH_FLAGS_BITS end variant end group CHF$R_MCH_FLAGS_DESC group CHF$R_MCH_FRAME_DESC variant case BASIC$QUADWORD CHF$PH_MCH_FRAME ! ESTABLISHER FRAME ADDRESS end variant end group CHF$R_MCH_FRAME_DESC group CHF$R_MCH_DEPTH_DESC variant case LONG CHF$IS_MCH_DEPTH ! FRAME DEPTH OF ESTABLISHER case LONG CHF$IH_MCH_DEPTH ! temp end variant end group CHF$R_MCH_DEPTH_DESC LONG CHF$IS_MCH_RESVD1 ! reserved, paired with DEPTH BASIC$QUADWORD CHF$PH_MCH_DADDR ! ESTABLISHER HANDLER DATA CELL BASIC$QUADWORD CHF$PH_MCH_ESF_ADDR ! ESTABLISHER EXCEPTION STACK FRAME BASIC$QUADWORD CHF$PH_MCH_SIG_ADDR ! ESTABLISHER EXCEPTION STACK FRAME group CHF$R_MCH_SAVR0_DESC variant case BASIC$QUADWORD CHF$IH_MCH_RETVAL case group CHF$R_FILL_71_ variant case BASIC$QUADWORD CHF$IH_MCH_SAVR0 ! SAVED REGISTER R0 case group CHF$R_FILL_72_ LONG CHF$IL_MCH_SAVR0_LOW ! LOW ORDER 32 BITS LONG CHF$IL_MCH_SAVR0_HIGH ! HIGH ORDER 32 BITS end group CHF$R_FILL_72_ end variant end group CHF$R_FILL_71_ end variant end group CHF$R_MCH_SAVR0_DESC group CHF$R_MCH_SAVR1_DESC variant case BASIC$QUADWORD CHF$IH_MCH_RETVAL2 case group CHF$R_FILL_73_ variant case BASIC$QUADWORD CHF$IH_MCH_SAVR1 ! SAVED REGISTER R1 case group CHF$R_FILL_74_ LONG CHF$IL_MCH_SAVR1_LOW ! LOW ORDER 32 BITS LONG CHF$IL_MCH_SAVR1_HIGH ! HIGH ORDER 32 BITS end group CHF$R_FILL_74_ end variant end group CHF$R_FILL_73_ end variant end group CHF$R_MCH_SAVR1_DESC BASIC$QUADWORD CHF$IH_MCH_SAVR16 ! SAVED REGISTER R16 BASIC$QUADWORD CHF$IH_MCH_SAVR17 ! SAVED REGISTER R17 BASIC$QUADWORD CHF$IH_MCH_SAVR18 ! SAVED REGISTER R18 BASIC$QUADWORD CHF$IH_MCH_SAVR19 ! SAVED REGISTER R19 BASIC$QUADWORD CHF$IH_MCH_SAVR20 ! SAVED REGISTER R20 BASIC$QUADWORD CHF$IH_MCH_SAVR21 ! SAVED REGISTER R21 BASIC$QUADWORD CHF$IH_MCH_SAVR22 ! SAVED REGISTER R22 BASIC$QUADWORD CHF$IH_MCH_SAVR23 ! SAVED REGISTER R23 BASIC$QUADWORD CHF$IH_MCH_SAVR24 ! SAVED REGISTER R24 BASIC$QUADWORD CHF$IH_MCH_SAVR25 ! SAVED REGISTER R25 BASIC$QUADWORD CHF$IH_MCH_SAVR26 ! SAVED REGISTER R26 BASIC$QUADWORD CHF$IH_MCH_SAVR27 ! SAVED REGISTER R27 BASIC$QUADWORD CHF$IH_MCH_SAVR28 ! SAVED REGISTER R28 group CHF$R_MCH_RETVAL_FLOAT variant case BASIC$QUADWORD CHF$FH_MCH_SAVF0 ! SAVED REGISTER F0 case BASIC$QUADWORD CHF$FH_MCH_RETVAL_FLOAT end variant end group CHF$R_MCH_RETVAL_FLOAT group CHF$R_MCH_RETVAL2_FLOAT variant case BASIC$QUADWORD CHF$FH_MCH_SAVF1 ! SAVED REGISTER F1 case BASIC$QUADWORD CHF$FH_MCH_RETVAL2_FLOAT end variant end group CHF$R_MCH_RETVAL2_FLOAT BASIC$QUADWORD CHF$FH_MCH_SAVF10 ! SAVED REGISTER F10 BASIC$QUADWORD CHF$FH_MCH_SAVF11 ! SAVED REGISTER F11 BASIC$QUADWORD CHF$FH_MCH_SAVF12 ! SAVED REGISTER F12 BASIC$QUADWORD CHF$FH_MCH_SAVF13 ! SAVED REGISTER F13 BASIC$QUADWORD CHF$FH_MCH_SAVF14 ! SAVED REGISTER F14 BASIC$QUADWORD CHF$FH_MCH_SAVF15 ! SAVED REGISTER F15 BASIC$QUADWORD CHF$FH_MCH_SAVF16 ! SAVED REGISTER F16 BASIC$QUADWORD CHF$FH_MCH_SAVF17 ! SAVED REGISTER F17 BASIC$QUADWORD CHF$FH_MCH_SAVF18 ! SAVED REGISTER F18 BASIC$QUADWORD CHF$FH_MCH_SAVF19 ! SAVED REGISTER F19 BASIC$QUADWORD CHF$FH_MCH_SAVF20 ! SAVED REGISTER F20 BASIC$QUADWORD CHF$FH_MCH_SAVF21 ! SAVED REGISTER F21 BASIC$QUADWORD CHF$FH_MCH_SAVF22 ! SAVED REGISTER F22 BASIC$QUADWORD CHF$FH_MCH_SAVF23 ! SAVED REGISTER F23 BASIC$QUADWORD CHF$FH_MCH_SAVF24 ! SAVED REGISTER F24 BASIC$QUADWORD CHF$FH_MCH_SAVF25 ! SAVED REGISTER F25 BASIC$QUADWORD CHF$FH_MCH_SAVF26 ! SAVED REGISTER F26 BASIC$QUADWORD CHF$FH_MCH_SAVF27 ! SAVED REGISTER F27 BASIC$QUADWORD CHF$FH_MCH_SAVF28 ! SAVED REGISTER F28 BASIC$QUADWORD CHF$FH_MCH_SAVF29 ! SAVED REGISTER F29 BASIC$QUADWORD CHF$FH_MCH_SAVF30 ! SAVED REGISTER F30 BASIC$QUADWORD CHF$PH_MCH_SIG64_ADDR ! 64-bit sig array ptr end record CHFDEF2 DECLARE LONG CONSTANT CHF$M_CALEXT_CANCEL = x'00000001' DECLARE LONG CONSTANT CHF$M_CALEXT_LAST = x'00000002' DECLARE LONG CONSTANT CHF$K_CALEXT_LENGTH = 16 ! LENGTH OF CATCH-ALL DESC BLOCK DECLARE LONG CONSTANT CHF$C_CALEXT_LENGTH = 16 ! LENGTH OF CATCH-ALL DESC BLOCK DECLARE LONG CONSTANT CHF$S_CHFDEF3 = 16 record CHFDEF3 LONG CHF$L_CALEXT_LINK ! CATCH-ALL EXTENSION LINK LONG CHF$L_CALEXT_ADDRESS ! ADDRESS OF CATCH-ALL EXTENSION group CHF$R_CALEXT_FLAGS_DESC variant case LONG CHF$L_CALEXT_FLAGS ! FLAGS case group CHF$R_CALEXT_FLAGS_BITS ! FLAGS BITS ! REMOVE CATCH-ALL EXTENSION ! LAST CATCH-ALL EXTENSION BYTE CALEXT_CANCEL_bits ! COMMENT ADDED BY SDL - CALEXT_CANCEL_bits contains bits CALEXT_CANCEL through & ! FILL_76_ end group CHF$R_CALEXT_FLAGS_BITS end variant end group CHF$R_CALEXT_FLAGS_DESC LONG CHF$L_CALEXT_RESERVED ! RESERVED end record CHFDEF3 DECLARE LONG CONSTANT CHF64$S_CHFDEF6 = 24 record CHFDEF6 group CHF64$R_SIG_ARGS_UNION variant case LONG CHF64$L_SIG_ARGS ! Longword including count ? options case group CHF64$R_SIG_WORDS WORD CHF64$W_SIG_ARG_COUNT ! Word holding count itself WORD CHF64$W_SIG_MSG_OPTIONS ! Word containing message options end group CHF64$R_SIG_WORDS end variant end group CHF64$R_SIG_ARGS_UNION LONG CHF64$L_SIGNAL64 ! 64-bit array tag: overlays sig_name of 32b version BASIC$QUADWORD CHF64$Q_SIG_NAME ! Signal value BASIC$QUADWORD CHF64$Q_SIG_ARG1 ! First signal argument end record CHFDEF6