! *** 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 = 592 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$PH_MCH_SIG64_ADDR ! 64-bit sig array ptr BASIC$QUADWORD CHF$PH_MCH_SAVF32_SAVF127 BYTE CHF$FH_MCH_RETVAL_FLOAT ( 1 to 16 ) BYTE CHF$FH_MCH_RETVAL2_FLOAT ( 1 to 16 ) BYTE CHF$FH_MCH_SAVF2 ( 1 to 16 ) BYTE CHF$FH_MCH_SAVF3 ( 1 to 16 ) BYTE CHF$FH_MCH_SAVF4 ( 1 to 16 ) BYTE CHF$FH_MCH_SAVF5 ( 1 to 16 ) BYTE CHF$FH_MCH_SAVF12 ( 1 to 16 ) BYTE CHF$FH_MCH_SAVF13 ( 1 to 16 ) BYTE CHF$FH_MCH_SAVF14 ( 1 to 16 ) BYTE CHF$FH_MCH_SAVF15 ( 1 to 16 ) BYTE CHF$FH_MCH_SAVF16 ( 1 to 16 ) BYTE CHF$FH_MCH_SAVF17 ( 1 to 16 ) BYTE CHF$FH_MCH_SAVF18 ( 1 to 16 ) BYTE CHF$FH_MCH_SAVF19 ( 1 to 16 ) BYTE CHF$FH_MCH_SAVF20 ( 1 to 16 ) BYTE CHF$FH_MCH_SAVF21 ( 1 to 16 ) BYTE CHF$FH_MCH_SAVF22 ( 1 to 16 ) BYTE CHF$FH_MCH_SAVF23 ( 1 to 16 ) BYTE CHF$FH_MCH_SAVF24 ( 1 to 16 ) BYTE CHF$FH_MCH_SAVF25 ( 1 to 16 ) BYTE CHF$FH_MCH_SAVF26 ( 1 to 16 ) BYTE CHF$FH_MCH_SAVF27 ( 1 to 16 ) BYTE CHF$FH_MCH_SAVF28 ( 1 to 16 ) BYTE CHF$FH_MCH_SAVF29 ( 1 to 16 ) BYTE CHF$FH_MCH_SAVF30 ( 1 to 16 ) BYTE CHF$FH_MCH_SAVF31 ( 1 to 16 ) BASIC$QUADWORD CHF$IH_MCH_SAVB1 BASIC$QUADWORD CHF$IH_MCH_SAVB2 BASIC$QUADWORD CHF$IH_MCH_SAVB3 BASIC$QUADWORD CHF$IH_MCH_SAVB4 BASIC$QUADWORD CHF$IH_MCH_SAVB5 BASIC$QUADWORD CHF$IH_MCH_AR_LC BASIC$QUADWORD CHF$IH_MCH_AR_EC BASIC$QUADWORD CHF$PH_MCH_OSSD BASIC$QUADWORD CHF$Q_MCH_INVO_HANDLE BASIC$QUADWORD CHF$PH_MCH_UWR_START BASIC$QUADWORD CHF$IH_MCH_FPSR BASIC$QUADWORD CHF$IH_MCH_FPSS 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