CE = CONDITIONS D’ENTRÉE
CS = CONDITIONS DE SORTIE
REGS = REGISTRES
C = FLAG CARRY
Z = FLAG ZÉRO

 

 

GESTIONNAIRE CLAVIER
********************

 

#BB00 – INITIALISATION GESTIONNAIRE CLAVIER.

CE: Rien.
CS: AF, BC, DE, HL modifiés. Tous les autres sont préservés

 

#BB03 – RESET DU GESTIONNAIRE CLAVIER.

CE: Rien.
CS: Idem BB00.

 

#BB06 – LE GESTIONNAIRE CLAVIER ATTEND LE CARACTÈRE TAPE.

CE: Rien.
CS: Si C=1, A contient le caractère tapé.
       Tous les regs sont préservés

 

#BB09 – LECTURE D’UN CARACTÈRE.

CE: Rien.
CS: Si un caractère est disponible C=1 et A contient le caractère
       Si il n’y a pas de caractères dispo. C=0 et A est modifié.
       Tous les autres regs sont préservés.

 

#BB0C – RÉSERVE UN CARACTÈRE POUR LE PROCHAIN APPEL DE LA ROUTINE PRÉCÉDENTE.

CE: A contient le caractère a sauver.
CS: Tous les regs sont préservés.

 

#BB0F – POSITIONNE UNE CHAINE DE CARACTÈRES ASSOCIES A UN CODE.

CE: B contient le code qui doit être associé a une chaine de caractères.
       C contient la longueur de la chaine.
       HL contient son adresse.
CS: Si l’expansion est faite, C=1.
       Si la chaine est trop longue ou le code invalide, C=0.
       A, BC, DE, HL sont modifiés.

 

#BB12 – LIT UN CARACTÈRE DEPUIS UNE CHAINE DE CARACTÈRE EXPANSÉE. LES CARACTÈRES CONTENUS DANS LA CHAINE DE CARACTÈRES SONT NUMÉROTÉS EN PARTANT DE 0.

CE: A contient le code d’expansion. L contient le numéro du caractère.
CS: Si le caractère est trouvé, A contient le caractère et C=1.
       Si le code est mauvais ou si la chaine de caractères n’est pas assez longue C=0, et A est modifié.
       DE est modifié.

 

#BB15 – ALLOCATION D’UN TAMPON POUR UNE CHAINE DE CARACTÈRES EXPANSÉE.

CE: DE contient l’adresse du tampon, HL sa longueur.
CS: Si tout est correct, C=1, sinon C=0.
       Les regs A, BC, DE, HL sont modifiés

 

#BB18 – ATTENTE D’UN CARACTÈRE EN PROVENANCE DU CLAVIER.

CE: Rien.
CS: C=1 et A contient le caractère frappé. Tous les regs sont préservés.

 

#BB1B – TESTE SI UNE TOUCHE EN PROVENANCE DU CLAVIER EST DISPONIBLE.

CE: Rien.
CS: Si une touche est disponible, C=1 et A contient le caractère sinon C=0.

 

#BB1E – TESTE SI UNE TOUCHE EST PRESSÉE. (PERMET AUSSI DE TESTER LE JOYSTICK)

CE: A contient le numéro de la touche qui doit être testée.
CS: Si la touche n’est pas pressée C=1, si elle l’est C=0, A et HL sont modifiés.
       C contient l’état des touches SHIFT et CONTROL.

 

#BB21 – VÉRIFIE SI LA TOUCHE DE VERROUILLAGE DES MAJUSCULES EST ENFONCÉE CAPSLOCK

CE: Rien.
CS: L contient l’état de la touche SHIFT et A contient l’état de la touche de verrouillage des majuscules;
       A=00 si pas enfoncée FF si oui.
       AF est modifié.

 

#BB24 – LECTURE DE L’ETAT DE LA MANETTE DE JEUX.

CE: rien.
CS: H contient l’état de la manette de jeux numéro 0.
       L ___________________________________1.
       A___________________________________ 0.
       La correspondance des bits est la même que celle de la fonction JOY.

 

#BB27 – POSITIONNE LE CODE QUI SERA FOURNI LORS DE LA PRESSION D’UNE TOUCHE SANS CONTROL NI SHIFT.

CE: A contient le numéro de la touche.
       B contient le code ascii que cette touche fournira.
CS: AF, HL sont modifiés.

 

#BB2A – FOURNIT LE CODE CORRESPONDANT AU NUMÉRO DE TOUCHE PRESSE.

CE: A contient le numéro de la touche.
CS: A contient le code ascii correspondant a la touche.
       HL et F sont modifiés.

 

#BB2D – POSITIONNE LE CODE QUI SERA FOURNI LORS DE LA PRESSION D’UNE TOUCHE + SHIFT.

CE: A contient le numéro de la touche.
       B contient le code ascii que cette touche fournira.
CS: AF et HL sont modifiés.

 

#BB30 – FOURNIT LE CODE CORRESPONDANT A UNE TOUCHE PRESSÉE + SHIFT.

CE: A contient le numéro de la touche.
CS: A contient le code ascii correspondant a la touche.
       HL est modifié.

 

#BB33 – POSITIONNE LE CODE QUE FOURNIRA UNE TOUCHE ENFONCÉE + CONTROL.

CE: A contient le numéro de la touche.
       B contient le code ascii que cette touche fournira.
CS: AF et HL sont modifiés.

 

#BB36 – FOURNIT LE CODE ASCII CORRESPONDANT A LA TOUCHE PRESSE + CONTROL.

CE: A contient le numéro de la touche.
CS: A contient le code ascii correspondant a la touche.
       HL est modifié.

 

#BB39 – POSITIONNE L’ENTRÉE DANS LA TABLE DES TOUCHES QUI DOIVENT SE RÉPÉTER.

CE: A contient le numéro de la touche.
       Si la touche peut se répéter, B contient FF, sinon B contient 00.
CS: AF, BC, HL sont modifiés.

 

#BB3C – TESTE SI UNE TOUCHE DONT LE NUMÉRO EST FOURNI PEUT OU NON ÊTRE RÉPÉTÉE.

CE: A contient le numéro de la touche.
CS: si la touche peut être répétée, Z=0 sinon Z=1.
       De toute façon C=0 et AF et HL sont modifiés.

 

#BB3F – POSITIONNE LE TEMPS DE DÉLAI AVANT LA PREMIÈRE RÉPÉTITION, AINSI QUE LE TEMPS PRÉVU ENTRE DEUX RÉPÉTITIONS.

CE: H contient le délai avant la première répétition.
       L contient la vitesse de répétition. Ces temps sont exprimés en /50 de seconde.
CS: AF est modifié.

 

#BB42 – LECTURE DE LA VITESSE DE RÉPÉTITION ET DU TEMPS PRÉVU AVANT LA PREMIÈRE RÉPÉTITION.

CE: Rien.
CS: H contient le délai avant la première répétition (en 1/50 de seconde) et L contient la vitesse de répétition. AF est modifié.

 

#BB45 – POSITIONNE LE MÉCANISME DU BREAK.

CE: DE contient l’adresse de la routine de traitement du break.
       C contient l’adresse de ROM sélectionnée pour cette routine.
CS: AF, BC, DE, HL sont modifiés.
       Ce mécanisme peut être désarmé par l’appel a la routine suivante.

 

#BB48 – DÉSARMEMENT DU MÉCANISME DU BREAK.

CE: rien.
CS: AF et HL sont modifiés.

 

#BB4B – GÉNÉRE UNE INTERRUPTION DE BREAK SI LE BREAK A ÉTÉ ARME AU MOYEN DE #BB45.

CE: Rien.
CS: AF et HL sont modifiés.