( Pilote des interruptions externes de l'emulateur MICROCHIP. Version 0.10 du 21 Avril 2013. Ecrit par jpb.forth . ) TELECHARGEMENT DECIMAL ( 054 CONSTANT RCOUNT 130 CONSTANT INTCON2 132 CONSTANT IFS0 134 CONSTANT IFS1 140 CONSTANT IEC0 142 CONSTANT IEC1 148 CONSTANT IPC0 156 CONSTANT IPC4 158 CONSTANT IPC5 ) HERE 2 3 * ALLOT CONSTANT TABLE_INTX ( PRGH PRGL x 3 pour INT0, INT1 et INT2 ) PRGHERE 0 20 PRG! ( INT0 ) ] 54 ( RCOUNT ) DUP >R @ R> ( Sauvegarde de RCOUNT ) 132 ( IFSO ) DUP >R @ -2 AND R> ! ( Effacement de l'interruption ) TABLE_INTX DUP >R @ R> 2+ @ EXECUTE ( Appel de l'instruction d'interruption ) ! ( Recuperation de RCOUNT ) [ HEX 06 4000 ( RETFIE ) PRG, DECIMAL PRGHERE 0 52 PRG! ( INT1 ) ] 54 ( RCOUNT ) DUP >R @ R> ( Sauvegarde de RCOUNT ) 134 ( IFS1 ) DUP >R @ -2 AND R> ! ( Effacement de l'interruption ) TABLE_INTX 4+ DUP >R @ R> 2+ @ EXECUTE ( Appel de l'instruction d'interruption ) ! ( Recuperation de RCOUNT ) [ HEX 06 4000 ( RETFIE ) PRG, DECIMAL PRGHERE 0 66 PRG! ( INT2 ) ] 54 ( RCOUNT ) DUP >R @ R> ( Sauvegarde de RCOUNT ) 134 ( IFS1 ) DUP >R @ -129 AND R> ! ( Effacement de l'interruption ) TABLE_INTX 8+ DUP >R @ R> 2+ @ EXECUTE ( Appel de l'instruction d'interruption ) ! ( Recuperation de RCOUNT ) [ HEX 06 4000 ( RETFIE ) PRG, DECIMAL : INT0 ( prgh,prgl,niveau,front --> - ) 4 PICK 4 PICK OR IF 1 AND 130 ( INTCON2 ) DUP >R @ -2 AND OR R> ! ( front: 1 si descendant ) 7 AND 148 ( IPC0 ) DUP >R @ -8 AND OR R> ! ( niveau: 4 par defaut ) TABLE_INTX DUP >R 2+ ! R> ! ( adresse de l'instruction d'interruption ) 1 140 ( IEC0 ) DUP >R @ OR R> ! ( activation de l'interruption ) ELSE DROP DROP DROP DROP THEN ; : INT1 ( prgh,prgl,niveau,front --> - ) 4 PICK 4 PICK OR IF 1 AND 130 ( INTCON2 ) DUP >R @ -3 AND OR R> ! ( front: 1 si descendant ) 7 AND 156 ( IPC4 ) DUP >R @ -8 AND OR R> ! ( niveau: 4 par defaut ) TABLE_INTX 4+ DUP >R 2+ ! R> ! ( adresse de l'instruction d'interruption ) 1 142 ( IEC1 ) DUP >R @ OR R> ! ( activation de l'interruption ) ELSE DROP DROP DROP DROP THEN ; : INT2 ( prgh,prgl,niveau,front --> - ) 4 PICK 4 PICK OR IF 1 AND 130 ( INTCON2 ) DUP >R @ -5 AND OR R> ! ( front: 1 si descendant ) 7 AND 12 LSH 158 ( IPC5 ) DUP >R @ -28673 AND OR R> ! ( niveau: 4 par defaut ) TABLE_INTX 8+ DUP >R 2+ ! R> ! ( adresse de l'instruction d'interruption ) 128 142 ( IEC1 ) DUP >R @ OR R> ! ( activation de l'interruption ) ELSE DROP DROP DROP DROP THEN ; ( FIN )