!*** MODULE $SFDEF *** CDEC$ OPTIONS /NOALIGN ! + ! Define stack frame offsets as a separate structure SF$ ! - PARAMETER SF$M_C = '00000001'X PARAMETER SF$M_V = '00000002'X PARAMETER SF$M_Z = '00000004'X PARAMETER SF$M_N = '00000008'X PARAMETER SF$M_TBIT = '00000010'X PARAMETER SF$M_IV = '00000020'X PARAMETER SF$M_FU = '00000040'X PARAMETER SF$M_DV = '00000080'X STRUCTURE /SFDEF/ INTEGER*4 SF$A_HANDLER ! Adr. of handler or 0 if no handler UNION MAP INTEGER*2 SF$W_SAVE_PSW ! saved PSW END MAP MAP PARAMETER SF$S_C = 1 PARAMETER SF$V_C = 0 ! carry PARAMETER SF$S_V = 1 PARAMETER SF$V_V = 1 ! overflow PARAMETER SF$S_Z = 1 PARAMETER SF$V_Z = 2 ! zero PARAMETER SF$S_N = 1 PARAMETER SF$V_N = 3 ! negative PARAMETER SF$S_TBIT = 1 PARAMETER SF$V_TBIT = 4 ! trace trap enable PARAMETER SF$S_IV = 1 PARAMETER SF$V_IV = 5 ! integer overflow enable PARAMETER SF$S_FU = 1 PARAMETER SF$V_FU = 6 ! floating underflow enable PARAMETER SF$S_DV = 1 PARAMETER SF$V_DV = 7 BYTE %FILL (1) ! decimal overflow enable END MAP END UNION UNION MAP INTEGER*2 SF$W_SAVE_MASK ! saved register mask plus flags END MAP MAP PARAMETER SF$S_SAVE_MASK = 12 PARAMETER SF$V_SAVE_MASK = 0 ! register save mask PARAMETER SF$S_CALLS = 1 PARAMETER SF$V_CALLS = 13 ! 1 if CALLS PARAMETER SF$S_STACKOFFS = 2 PARAMETER SF$V_STACKOFFS = 14 BYTE %FILL (2) ! SP offset END MAP END UNION INTEGER*4 SF$L_SAVE_AP ! saved AP INTEGER*4 SF$L_SAVE_FP ! saved FP INTEGER*4 SF$L_SAVE_PC ! saved PC INTEGER*4 SF$L_SAVE_REGS ! first register saved is saved here END STRUCTURE ! SFDEF CDEC$ END OPTIONS