Changes between Version 29 and Version 30 of AS6-TME-B2
- Timestamp:
- Feb 16, 2022, 1:25:21 PM (3 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
AS6-TME-B2
v29 v30 483 483 484 484 485 == B. Travaux pratiques 486 487 488 489 === La plateforme 485 = B. Travaux pratiques 486 487 488 489 == 1. La plateforme 490 490 491 491 492 … … 506 507 **Question** : faire un dessin représentant la plateforme avec les signaux IRQ. 507 508 508 = 1. Game over simple 509 510 511 512 Vous allez réaliser un petit jeu dans lequel vous deviez deviner un nombre tiré au hasard. Ce jeu avait été mis dans `kinit` parce qu'à ce moment, il n'y avait pas encore d'application utilisateur. Nous vous proposons de mettre le jeu dans l'application user et de limiter le temps pendant lequel vous pouvez jouer. Nous allons vous guider pas-à-pas. 513 514 Récuperez l'[htdocs:files/tp3.tgz archive du code du tp3], placez-là dans le répertoire `kO6` et décompressez-là. Les commandes ci-dessous supposent que vous avez mis l'archive dans le répertoire `k06` 509 510 511 == 2. Game over simple 512 513 514 515 Vous allez réaliser un petit jeu dans lequel vous deviez deviner un nombre tiré au hasard. Nous vous proposons de limiter le temps pendant lequel vous pouvez jouer. Nous allons vous guider pas-à-pas. 516 517 Récuperez l'[htdocs:files/tp2.tgz archive du code du tp2], placez-là dans le répertoire `2kO6` et décompressez-là. Les commandes ci-dessous supposent que vous avez mis l'archive dans le répertoire `k06` 515 518 {{{#!bash 516 cd ~/ k06517 tar xvzf tp 3.tgz518 cd tp 3/1_gameover519 cd ~/2k06 520 tar xvzf tp2.tgz 521 cd tp2/01_gameover 519 522 }}} 520 523 … … 552 555 }}} 553 556 554 1. Essayez le jeu (dans le répertoire `tp 3/1_gameover`) : tapez `make exec`\\557 1. Essayez le jeu (dans le répertoire `tp2/01_gameover`) : tapez `make exec`\\ 555 558 comme vous pouvez le constater, vous avez le temps de jouer. 556 559 1. Dans la version précédente du gestionnaire de syscall, nous avions masqué les IRQ en écrivant `0` dans le registre `c0_status`(registre $12 du coprocesseur 0). Cela avait pour conséquence de mettre tout à 0, entre autre le bit `IE`. Il faut modifier ça, parce que sinon, lorsque l'utilisateur demandera à lire le clavier avec l'appel système `fgets()`, l'IRQ venant du timer ne sera jamais prise en compte (`TODO1`), ensuite au retour de la fonction qui réalise l'appel système, il faut masquer les IRQ pour ne pas avoir d'interruption pendant la restauration des registres jusqu'au `eret` qui fait sortir du kernel.