OpenCores
URL https://opencores.org/ocsvn/t400/t400/trunk

Subversion Repositories t400

[/] [t400/] [trunk/] [sw/] [verif/] [include/] [int_macros.inc] - Rev 179

Compare with Previous | Blame | View Log

        ;; *******************************************************************
        ;; $Id: int_macros.inc 179 2009-04-01 19:48:38Z arniml $
        ;;
        ;; Defines macros for interrupt tests.
        ;;

        ;; -------------------------------------------------------------------
        ;; Save current A, M and C to M(3,15), M(3,14) and M(3,13).
        ;;
save_a_m_c      MACRO
        xad     3, 15           ; save A to M(3,15)

        x       0                ; save current M
        xad     3, 14           ; to M(3,14)

        smb     0x0             ; save C
        skc                     ; to M(3,13)
        rmb     0x0             ;
        x       0                ;
        xad     3, 13           ;
        ENDM


        ;; -------------------------------------------------------------------
        ;; Check SA against specified address
        ;;
check_sa        MACRO   addr
        ;; request nibble 0 of SA
        ogi     0x0
        inl
        ;; check this nibble
        x       0
        clra
        IF      addr & 0xf <> 0
        aisc    addr & 0xf
        ENDIF
        ske
        jmp     fail

        ;; request nibble 1 of SA
        ogi     0x1
        inl
        ;; check this nibble
        x       0
        clra
        IF      addr & 0x0f0 <> 0
        aisc    (addr >> 4) & 0xf
        ENDIF
        ske
        jmp     fail

        ;; request nibble 2 of SA
        ogi     0x2
        inl
        ;; check this nibble
        x       0
        clra
        IF      addr & 0xf00 <> 0
        aisc    (addr >> 8) & 0xf
        ENDIF
        ske
        jmp     fail

        ENDM


        ;; -------------------------------------------------------------------
        ;; Restore C, M and A from M(3,13), M(3,14) and M(3,15)
        ;;
restore_c_m_a   MACRO
        xad     3, 13           ; restore C
        x       0                ; from M(3,13)
        rc                      ;
        skmbz   0x0             ;
        sc                      ;

        xad     3, 14           ; restore current M
        x       0                ; from M(3,14)

        xad     3, 15           ; restore A
        ENDM


        ;; -------------------------------------------------------------------
        ;; Flag that interrupt occured in M(3,12).1
        ;;
int_flag_set    MACRO
        clra
        aisc    0x1
        xad     3, 12
        ENDM

        ;; -------------------------------------------------------------------
        ;; Clear 'interrupt occured' flag
        ;;
int_flag_clear  MACRO
        clra
        xad     3, 12
        ENDM

        ;; -------------------------------------------------------------------
        ;; Check interrupt occurence
        ;;
int_flag_check  MACRO
        lbi     3, 12
        skmbz   0x0
        jp      +
        jmp     fail            ; no interrupt!
+       lbi     0, 0
        ENDM

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.