Vous êtes sur la page 1sur 5

TD2

NAJID Mostafa

// Initialisation

FRQ_PT EQU $3ff6

IRQ_PT EQU $3ff8

NMI_PT EQU $3ffc

PIADDRA EQU $8000

PIACRA EQU $8001

PIADDRB EQU $8002

PIACRB EQU $8003

LDU $0600 //initialiser pointeur pile

LDX #SP_IRQ

STX IRQ_PT //Initialiser le vecteur IRQ

LDX #SP_NMI

STX NMI_PT // Initialiser le vecteur NMI

LDX #SP_FRQ

STX FRQ_PT //Initialiser le vecteur FIRQ

LDB #$00

STB PIACRB //activer DDRB

LDB #$FF
STB PIADDRB

LDB #$04

STB PIACRB //activer ORB

Debut LDB #$ff

STB PIADDRB //éteindre les leds

BSR SOFT

ANCC #$AF

// Défilement du chenillard

BCL ASLB

STB PIADDRB //allumer la led

LDX #$FFFF //Initialiser le compteur de temporization

BSR SOFT

CMPB #$00

BNE BCL

BRA Debut //Boucler

// TEMPORISATION

SOFT LEAX -1,X //decrementer X

CMPX #$0

BNE SOFT // boucler tant que X>0

RTS
// INTERRUPTION IRQ

SP_IRQ LDY #$05 // Clgnotement alternative 10 fois

SP_IRQ2 LDB #$0F //allumer les quartets fort

STB PIADDRB //allumer les leds rouges

LDX #$FFFF

BSR SOFT

LDB #$F0 //allumer les quartets faibles

STB PIADDRB //allumer les leds rouges

LDX #$FFFF //Initialiser le compteur de temporisation

BSR SOFT // brancher vers la temporisation

LEAY -1,Y //decrementer Y

CMPY #$00

BNE SP_IRQ2 // repeater tant que Y>0

RTI

// INTERRUPTION NMI

SP_NMI LDY #$05

SP_NMI2 LDA #$0F

STA PIADDRA //allumer les quartets verts

LDX #$FFFF

BSR SOFT

LDA #$F0

STA PIADDRA //allumer les quartets verts

LDX #$FFFF

BSR SOFT
LEAY -1,Y

CMPY #$00

BNE SP_NMI2

RTI

INTERRUPTION FIRQ
SP_FRQ PSHU A //stocker le contenu de A dans la pile

PSHU X

PSHU Y

LDY #$05 //clignoter 10 fois alternativement

SP_FRQ2 LDA #$0F //allumer le quartet fort

STA PIADDRA // allumer les leds Vertes

STB PIADDRB //allumer les leds Rouges

LDX #$FFFF

BSR SOFT

LDA #F0 //allumer le quartet faible

STA PIADDRA // allumer les leds vertes

STB PIADDRB //allumer les leds rouges

LDX #$FFFF // Initialiser le compteur de temporisation

BSR SOFT // Brancher vers la temporisation

LEAY -1,Y // Décrementer le registre Y

CMPY #$00

BNE SP_FRQ2
PULU Y //remettre le contenu de la pile dans Y

PULU X // remettre le contenu de la pile dans X

PULU A // remettre le contenu de la pile dans A

RTI