2
Examen de TP d'assembleur 68K Durée : 45 minutes Licence d'informatique 3ème année 2003-2004 Module 6 Pong Note : Ne sont autorisés que les polycopiés sur le processeur 68K et sur les entrées/sorties parallèles. Principe du jeu : Le jeu est constitué d'un terrain découpé en deux parties égales séparé par un filet, de deux joueurs chacun muni d'une raquette et affecté à un camp et d'une balle. Le but du jeu est de rattraper la balle chaque fois qu'elle se trouve dans sa moitié de terrain. Le premier joueur qui laisse sortir la balle de son camp sans la rattraper à perdu. Le terrain de jeu est représenté par les huit diodes du port de sortie (CB7, CB6, CB5 et CB4 pour le camp du joueur 1 et CB3, CB2, CB1 et CB0 pour le camp du joueur 2). Lorsqu'une diode est allumée, cela signifie que la balle se trouve à cet endroit. Chaque joueur possède un bouton lui permettant d'utiliser sa raquette (IA1 pour le joueur 1, IB1 pour le joueur 2). Questions : 1. Initialiser correctement le port d'entrée/sortie parallèle pour que les deux boutons IA1 et IB1 soient gérés par test d'état. L'initialisation devra également allumer la diode 4 ou 3 (au choix) du port de sortie et initialiser la direction de la balle qui sera rangée dans D0 (0 dans le cas ou la balle va vers la droite et 1 vers la gauche). 2. Ecrire deux sous programmes qui permettent de décaler d'une position les diodes du port de sortie respectivement vers la droite et vers la gauche (on utilisera des instructions de décalage et non de rotation). Pour ces fonctions, on ajoutera après le décalage un appel à la fonction de temporisation logicielle fournie en annexe. Tester ces sous programmes. 3. Ecrire un programme principal qui représentera un tour de jeu (boucle) qui : Teste si la balle est sortie du terrain ou pas et quitte le programme en conséquence. Choisit la fonction de la question 1 à activer (décalage à droite ou décalage à gauche) en fonction de la direction courante de la balle (rangée dans D0). Teste si le bouton IA1 est appuyé auquel cas la nouvelle direction de la balle sera vers la droite (D0 prend la valeur 1). Respectivement si IB1 est appuyé la nouvelle direction de la balle sera vers la gauche (D0 prend la valeur 0). Question supplémentaire : Prendre en compte le filet en modifiant le code appelé lors de l'appui sur IA1 et IB1.

Pong

Embed Size (px)

Citation preview

Page 1: Pong

Examen de TP d'assembleur 68K

Durée : 45 minutes

Licence d'informatique 3ème année 2003-2004

Module 6

Pong

Note : Ne sont autorisés que les polycopiés sur le processeur 68K et sur lesentrées/sorties parallèles.

Principe du jeu :

Le jeu est constitué d'un terrain découpé en deux parties égales séparé par unfilet, de deux joueurs chacun muni d'une raquette et affecté à un camp et d'une balle.Le but du jeu est de rattraper la balle chaque fois qu'elle se trouve dans sa moitié deterrain. Le premier joueur qui laisse sortir la balle de son camp sans la rattraper àperdu.

Le terrain de jeu est représenté par les huit diodes du port de sortie (CB7, CB6,CB5 et CB4 pour le camp du joueur 1 et CB3, CB2, CB1 et CB0 pour le camp dujoueur 2). Lorsqu'une diode est allumée, cela signifie que la balle se trouve à cetendroit. Chaque joueur possède un bouton lui permettant d'utiliser sa raquette (IA1pour le joueur 1, IB1 pour le joueur 2).

Questions :

1. Initialiser correctement le port d'entrée/sortie parallèle pour que les deux boutonsIA1 et IB1 soient gérés par test d'état. L'initialisation devra également allumer ladiode 4 ou 3 (au choix) du port de sortie et initialiser la direction de la balle quisera rangée dans D0 (0 dans le cas ou la balle va vers la droite et 1 vers la gauche).

2. Ecrire deux sous programmes qui permettent de décaler d'une position les diodesdu port de sortie respectivement vers la droite et vers la gauche (on utilisera desinstructions de décalage et non de rotation). Pour ces fonctions, on ajoutera aprèsle décalage un appel à la fonction de temporisation logicielle fournie en annexe.Tester ces sous programmes.

3. Ecrire un programme principal qui représentera un tour de jeu (boucle) qui :

• Teste si la balle est sortie du terrain ou pas et quitte le programme enconséquence.

• Choisit la fonction de la question 1 à activer (décalage à droite ou décalage àgauche) en fonction de la direction courante de la balle (rangée dans D0).

• Teste si le bouton IA1 est appuyé auquel cas la nouvelle direction de la ballesera vers la droite (D0 prend la valeur 1). Respectivement si IB1 est appuyé lanouvelle direction de la balle sera vers la gauche (D0 prend la valeur 0).

Question supplémentaire :Prendre en compte le filet en modifiant le code appelé lors de l'appui sur IA1 et IB1.

Page 2: Pong

Annexe :

attente move.l D0,-(A7)move.w #$FFFF,D0

bclatt tst.w D0beq finattsub.w #1,D0bra bclatt

finatt move.l (A7)+,D0rts