ASMtrad CPC

Apprenez l'assembleur Z80

Vecteurs System – NOYAUX-KERNEL (#BCC8 – #BD0D)

#BCC8 - NETTOIE TOUTES LES FILES D’INTERRUPTION, LES CHRONOMÈTRES …

CE : Rien.
CS : B contient l’adresse de sélection de la ROM s’il y en a une.
DE contient le point d’entrée a l’intérieur de la ROM.
C contient l’adresse de sélection de la ROM pour un programme en RAM.
AF, HL sont modifiés.

#BCCB - TROUVE ET INITIALISE TOUTES LES ROMS DE SECOND PLAN.

CE : DE contient l’adresse du premier octet utilisable.
HL contient l’adresse du dernier octet utilisable.
CS : DE contient l’adresse du nouveau premier octet utilisable.
HL contient l’adresse du nouveau dernier octet utilisable.
AF, BC sont modifiés.

#BCCE - INITIALISE UNE ROM DE SECOND PLAN.

CE : C contient l’adresse de sélection de la ROM a initialiser.
#FC = 252 = ROM (inf. 0 a 3fff) ROM (sup. #C000 a #FFFF)
#FD = 253 = RAM ——————– ROM (donc ROM BASIC).
#FE = 254 = ROM ——————– RAM.
#FF = 255 = RAM ——————– RAM.
#07 = 7 = ROM SECONDAIRE (lecteur de disquette)
DE contient l’adresse du premier octet utilisable.
HL contient l’adresse du dernier octet utilisable.
CS : DE contient l’adresse du nouveau premier octet utilisable.
HL contient l’adresse du nouveau dernier octet utilisable.
AF, B sont modifiés.

#BCD1 - INTRODUIT UN RSX DANS LE LOGICIEL INTERNE.

CE : BC contient l’adresse de la table des commandes RSX.
HL contient l’adresse de 4 octets disponibles en RAM pour le noyau.
CS : DE est modifié.

#BCD4 - RECHERCHE UN RSX DANS LES ROMS POUR EFFECTUER UNE COMMANDE.

CE : HL contient l’adresse ou se trouve le nom de la commande a rechercher.
CS : si un RSX a été trouvé, C=1, C contient l’adresse de sélection de la ROM et HL contient l’adresse de la routine. Si la commande n’a pas été trouvée, C=0.
De toute façon AF, BC, DE sont modifiés.

#BCD7 - INITIALISE ET DÉPOSE UN BLOC D’ÉVÈNEMENT DANS LA LISTE DES BLOCS A ACTIVER LORS D’UNE INTERRUPTION EN PROVENANCE DU CRT.

CE : HL contient l’adresse du bloc d’évènement.
B contient la classe de l’évènement.
Bit 0 = 1 si routine dans RAM.
Bit 1-4 = priorité de l’évènement.
Bit 5 = toujours a 0.
Bit 6 = 1 si priorité + grande que les évènements conventionnels.
Bit 7 = 1 si la routine doit être exécutée immédiatement.
C contient l’adresse de sélection de la ROM.
DE contient l’adresse de la routine de l’évènement.
CS : AF, DE, HL sont modifiés.

#BCDA - DÉPOSE UN BLOC D’ÉVÈNEMENT DANS LA LISTE DES BLOCS A ACTIVER LORS D’UNE INTERRUPTION EN PROVENANCE DU CRT.

CE : HL contient l’adresse du bloc d’évènement.
CS : AF, DE, HL sont modifiés.

#BCDD - ENLÈVE UN BLOC D’ÉVÈNEMENT DANS LA LISTE DES BLOCS A ACTIVER LORS D’UNE INTERRUPTION EN PROVENANCE DU CRT.

CE : HL contient l’adresse du bloc d’évènement.
CS : AF, DE, HL sont modifiés.

#BCE0 - INITIALISE ET DÉPOSE UN BLOC D’ÉVÈNEMENT DANS LA LISTE DES BLOCS A ACTIVER LORS D’UNE INTERRUPTION RAPIDE (1/300 de seconde).

CE : HL contient l’adresse du bloc.
B contient la classe de l’évènement (voir BCD7).
C contient l’adresse de sélection de la ROM.
DE contient l’adresse de la routine de l’évènement.
CS : AF, DE, HL sont modifiés.

#BCE3 - POSE UN BLOC D’ÉVÈNEMENT DANS LA LISTE DES BLOCS A ACTIVER LORS D’UNE INTERRUPTION RAPIDE (1/300 de seconde).

CE : HL contient l’adresse du bloc d’évènement.
CS : AF, DE, HL sont modifiés.

#BCE6 - ENLÈVE UN BLOC D’ÉVÈNEMENT DE LA LISTE DES BLOCS A ACTIVER LORS D’UNE INTERRUPTION RAPIDE (1/300 de seconde).

CE : HL contient l’adresse du bloc d’évènement.
CS : AF, DE, HL sont modifiés.

#BCE9 - DEPOSE UN BLOC D’EVENEMENT DANS LA LISTE DES BLOCS A ACTIVER LORS D’UNE INTERRUPTION NORMALE (1/50 de seconde).

CE : HL contient l’adresse du bloc d’évènement.
DE contient la valeur initiale du compteur.
BC contient la valeur de recharge du compteur lorsqu’il atteint 0.
CS : AF, BC, DE, HL sont modifiés.

#BCEC - ENLEVE UN BLOC D’EVENEMENT DE LA LISTE DES BLOCS A ACTIVER LORS D’UNE INTERRUPTION NORMALE (1/50 de seconde).

CE : HL contient l’adresse du bloc d’évènement.
CS : Si le bloc a été trouvé dans la liste, C=1 et DE contient le compteur, sinon C=0.
De toute façon AF, DE, HL sont modifiés.

#BCEF - INITIALISE UN BLOC D’ÉVÈNEMENT.

CE : HL contient l’adresse du bloc d’évènement.
B contient la classe d’évènement.
C contient l’adresse de sélection de la ROM.
DE contient l’adresse de la routine d’évènement.
CS : HL contient l’adresse du bloc d’évènement augmentée de 7.

#BCF2 - ACTIONNE UN BLOC D’ÉVÈNEMENT.

CE : HL contient l’adresse du bloc d’évènement.
CS : AF, BC, DE, HL sont modifiés.

#BCF5 - NETTOIE TOUTES LES FILES D’ATTENTE DES ÉVÈNEMENTS TEMPORISÉS.

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

#BCF8 - ENLÈVE UN ÉVÈNEMENT TEMPORISE HORS D’UNE FILE D’ATTENTE.

CE : HL contient l’adresse du bloc d’évènement.
CS : AF, BC, DE, HL sont modifiés.

#BCFB - LECTURE DE L’ÉVÈNEMENT SUIVANT DANS LA FILE D’ATTENTE.

CE : Rien.
CS : S’il y a un évènement a traiter, C=1 et HL contient l’adresse du bloc d’évènement.
A peut contenir le code de priorité de l’évènement précédent.
S’il n’y a pas d’évènement a traiter, C=0.
De toute façon AF, DE, HL sont modifiés.

#BCFE - TRAITE UNE ROUTINE D’ÉVÈNEMENT.

CE : HL contient l’adresse du bloc d’évènement.
CS : AF, BC, DE, HL sont modifiés.

#BD01 - TERMINE LE TRAITEMENT D’UN ÉVÈNEMENT.

CE : HL contient l’adresse du bloc d’évènement.
A contient le code de priorité de l’évènement précédent.
CS : AF, BC, DE, HL sont modifiés.

#BD04 - INTERDIT LES ÉVÈNEMENTS TEMPORISES NORMAUX.

CE : Rien.
CS : HL est modifié.

#BD07 - AUTORISE LES ÉVÈNEMENTS TEMPORISES NORMAUX.

CE : Rien.
CS : HL est modifié.

#BD0A - INTERDIT UN ÉVÈNEMENT PARTICULIER.

CE : HL contient l’adresse du bloc d’évènement.
CS : AF est modifié.

#BD0D - DONNE LE TEMPS ECOULE EN 1/300 DE SECONDE.

CE : Rien.
CS : DE HL contient le temps écoulé sur quatre octets.