From 1512cd843829ec0dc7ab77bd98aa367997400e97 Mon Sep 17 00:00:00 2001 From: rick Date: Wed, 2 Jun 2021 11:38:16 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20lecture=20d=E2=80=99une=20touche=20et?= =?UTF-8?q?=20affichage?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- read_one_key.asm | 66 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 read_one_key.asm diff --git a/read_one_key.asm b/read_one_key.asm new file mode 100644 index 0000000..b075691 --- /dev/null +++ b/read_one_key.asm @@ -0,0 +1,66 @@ +; programme lisant une touche et l’affichant +; headers (voir helloworld pour plus d’information) + org 0x4000 + db "AB" + dw init + db 00,00,00,00,00,00 + +init: ; init écran + call 0x006F + ld a, 32 + ld (0xF3B0), a + +main: + ld hl, message + call printf + + call 0x009F ; on attend une entrée. Elle sera stockée dans a + + ld b, a ; on sauvegarde a dans b pour l’afficher + call newLine + ld hl, messageTouche + call printf + call newLine + + ld a, b ; on récupère la lettre + cp 0x71 ; on vérifie si ce n’est pas q (code ascii) + jp z, fin ; si oui, on arrete le programme + jr main + +fin: + call newLine + ld hl, messageFin + call printf + + di + halt + +newLine: ; une nouvelle ligne = 13 (retour chariot) + ld a, 13 ; + 10 (nouvelle ligne) + call 0x00A2 + ld a, 10 + call 0x00A2 + ret + +printf: + ld a, (hl) + cp 1 ; si on tombe sur 1 dans la string, on affiche + jp z, printChar ; le caractère + cp 0 + ret z + + inc hl + call 0x00A2 + jr printf + +printChar: + ld a, b ; on reprend le caractère sauvegardé dans b + inc hl + call 0x00A2 + jr printf + +message: db 'Tapez sur une touche (q pour arreter): ', 0 +messageFin: db 'Programme fini !', 0 +messageTouche: db 'Vous avez tape sur: ', 1, 0 + + org 0xC000