    IFND EXEC_ABLES_I@
EXEC_ABLES_I@  = 1
;*********************************************************************
;
;   Commodore Amiga -- ROM Operating System Executive Include File
;
;*********************************************************************
;
;   Source Control:
;
;       $Header: ables.i,v 33.1 86/03/30 13:03:48 neil Exp $
;
;       $Locker: neil $
;
;*********************************************************************

    IFND EXEC_TYPES_I@
    INCLUDE "exec/types.i"
    ENDIF

    IFND EXEC_EXECBASE_I@
    INCLUDE "exec/execbase.i"
    ENDIF


;----------------------------------------------------------------
;
;   Interrupt Exclusion Macros
;
;----------------------------------------------------------------

INT_ABLES   MACRO                       ; externals for dis/enable
;            XREF    _intena
            ENDM


DISABLE     MACRO $\1  ; [scratchReg]
            IFND     \1
            MOVE.W  #$04000,_intena     ;(NOT IF_SETCLR)+IF_INTEN
            ADDQ.B  #1,IDNestCnt(A6)
            ELSE
            MOVE.L  4,\1
            MOVE.W  #$04000,_intena     ;(NOT IF_SETCLR)+IF_INTEN
            ADDQ.B  #1,IDNestCnt(\1)
            ENDIF
            ENDM


ENABLE      MACRO   $\1 ; [scratchReg]
            IFND     \1
            SUBQ.B  #1,IDNestCnt(A6)
            BGE.S   ENABLE\@
            MOVE.W  #$0C000,_intena     ;IF_SETCLR+IF_INTEN
ENABLE\@:
            ELSE
            MOVE.L  4,\1
            SUBQ.B  #1,IDNestCnt(\1)
            BGE.S   ENABLE\@
            MOVE.W  #$0C000,_intena
ENABLE\@:
            ENDIF
            ENDM


;----------------------------------------------------------------
;
;   Tasking Exclusion Macros
;
;----------------------------------------------------------------

TASK_ABLES  MACRO
;           INCLUDE 'execbase.i' for TDNestCnt offset
;            XREF    _LVOPermit
            ENDM


FORBID      MACRO   $\1
            IFND     \1
            ADDQ.B  #1,TDNestCnt(A6)
            ELSE
            MOVE.L  4,\1
            ADDQ.B  #1,TDNestCnt(\1)
            ENDIF
            ENDM


PERMIT      MACRO   $\1
            IFND     \1
            JSR     _LVOPermit(A6)
            ELSE
            MOVE.L  A6,-(SP)
            MOVE.L  4,A6
            JSR     _LVOPermit(A6)
            MOVE.L  (SP)+,A6
            ENDIF
            ENDM

    ENDIF
    END

 