Adr. | Fonction en ROM permanente de C000 à DFFF | Mném | Param Entrée/sortie | Registres modifiés | Firm.Manual |
---|---|---|---|---|---|
Gestion des chaînes de caractères | |||||
D106 |
Concatène deux chaînes |
SHAPP |
DE : adresse début 1ère chaîne
HL : adresse début 2ème chaîne |
HL | p10051b |
HL =>pointe vers chaîne résultat ou "Error" si châine trop longue
|
|||||
D121 |
Compare deux chaînes |
SHCOMP |
DE : adresse début 1ère chaîne
HL : adresse début 2ème chaîne |
p20001a | |
Z=1=>chaînes identiques S=1; Z=0 =>2nde châine plus longue S=0 ; Z=0 =>1ère chaîne plus longue |
|||||
D14F |
Extraction d'une sous-chaîne |
SHMID |
HL : adresse de la chaîne
D : position de départ de la sous-chaîne E : longueur de la sous-chaîne |
AHLDEF | p20001b |
HL=>adresse de la sous-chaîne si OK ou pointe vers "Error" sinon |
|||||
D16D |
Copie une chaîne d'un endroit vers un autre |
SCOPF |
DE : adresse début chaîne à transférer (le 1er octet de la chaîne = longueur de la chaîne)
HL : adresse destination. |
A=FF, CY=1 | p20001b |
DE=>pointe vers 1er octet après chaîne de départ HL =>pointe vers 1er octet après chaîne d'arrivée |
|||||
Gestion cassette | |||||
D2B8 | Ouvre un fichier cassette en écriture Ecrit le file header + le type de fichier + calcule la taille du nom de fichier + écrit le nom de fichier + écrit le checksum du nom de fichier. |
A = type de fichier HL = pointeur sur le début du nom de fichier attendu |
ADEHLF | p20005b | |
HL = pointe après le nom de fichier
DE = longueur du nom A = checksum du nom de fichier |
|||||
D2F1 | Ecrit un bloc de fichier sur cassette | HL = adresse de départ du bloc
DE = longueur du bloc |
AHLF | p20006a | |
HL = pointe sur le premier octet après
le bloc. A = checksum du contenu du block |
|||||
D427 | Ferme
un fichier cassette en écriture (écriture du trailer)
Ecrit le file trailer pour un programme ou un bloc de données |
C = longueur du trailer | AF | p20008b | |
A = 0 | |||||
D325 | Ouvre un fichier cassette en
lecture
Cette fonction utilise RHDR. Cette fonction démarre le moteur cassette et rend la main après avoir trouvé un fichier du type requis et si un nom de fichier a été fourni, alors elle rend la main après avoir lu le nom de ce fichier sur la bande. |
HL = adresse de l'octet contenant la
longueur du nom de fichier ou programme à lire ; B = type de fichier à lire ; C = 0 si l'appel vient d'un programme en fonctionnement sinon C = FF. |
AFDEHL | p20006b | |
A = type de fichier
HL = pointeur sur le début du nom de fichier DE = longueur du nom de fichier (avec D=0 donc longueur dans E). |
|||||
D340 | Lecture de la longueur, du contenu et du checksum d'un bloc fichier cassette | HL = adresse où écrire les données lues DE = adresse de fin d'espace libre |
AFHL (si CY=1) A (si CY=0) |
p20006b | |
CY=1 =>pas d'erreur et
HL contient la prochaine adresse libre. CY=0 =>erreur de lecture ; A = contient le type d'erreur |
|||||
D3A2 | ouverture de fichier via son nom
Le nom lu sur cassette est comparé au nom fourni en entrée. |
A = Evt. différence en type de fichier
lu et requis. B = type de fichier requis. C = 0 si l'appel vient d'un programme et FF sinon. HL = pointeur sur le début du nom de fichier attendu. |
AF | p20007b | |
A =0 => OK ; A = 1 erreur de lecture |
|||||
D795 | Transfert des vecteurs cassette en RAM
à partir de 2C5. Cette routine est appelée par la routine en D72D lors de la phase d'initialisation. Attention, ça ne s'utilise pas tel quel ! |
CASIN |
Pas de paramètre d'entrée | DEHL | p20017b |
Pas de paramètre de sortie. | |||||
D7A4 | Table des vecteurs de cassette |
CINTB |
Pas de paramètre d'entrée | p20017b | |
Pas de paramètre de sortie. | |||||
DE4F | Copie bloc de données
Copie un bloc de données démarrant à l'adresse DE et finissant à l'adresse HL-1 vers une zone mémoire démarrant à l'adresse BC |
MOVE |
DE = adresse début source
HL pointe sur octet suivant fin de zone à copier; ; BC = adresse début de la destination |
BCDEHL | p20035a |
Pas de paramètre de sortie. | |||||
D42E | Démarre le moteur cassette
Et attente de 665 ms pour permettre au moteur d'atteindre une vitesse constante. |
CASST |
Pas de paramètre d'entrée | |
p20009a |
Pas de paramètre de sortie. | |||||
D445 | Arrête le moteur cassette | Pas de paramètre d'entrée | |
p20009a | |
Pas de paramètre de sortie. | |||||
D3F4 | Lecture du File Header et du type de fichier. Cette routine localise un fichier sur la cassette et lit le file header puis le type de fichier. Elle ne rend la main qu'après avoir réussi à lire un header correct suivi d'un octet (le type de fichier). |
Pas de paramètre d'entrée | AF | p20008b | |
Interruptions désactivées en sortie;
A = type de fichier lu |
|||||
D387 | Mise à jour du checksum |
RBUEX |
A = octet lu ; B = checksum précédant |
B | p20007a |
B = nouveau checksum | |||||
D384 | Lecture d'un octet et mise à jour checksum |
INSC |
B = checksum précédant | AB | p20007a |
A = octet lu ; B = nouveau checksum |
|||||
D4D4 | Lecture d'un octet sur cassette |
RBYTE |
Pas de paramètre d'entrée | AF | p20010a |
CY=0 =>A
= octet lu
CY =1 => erreur de lecture |
|||||
Affichage de messages et caractères | |||||
D695 |
Affiche le caractère présent dans A. L'endroit où s'affichera le caractère va dépendre de OTSW. Cette fonction est utilisable par tout programme assembleur. |
MPT31 |
A : caractère à tester | |
p20014b |
CY =1 => majuscule |
|||||
D695 |
Effacer l'écran en mettant 0C dans A. |
MPT31 |
A : 0C | |
p20014b |
CY =1 => majuscule |
|||||
DAD4 |
Affiche un message contenant éventuellement des références à des sous messages. Si l'octet courant vers lequel pointe HL est compris entre 1 et 7F alors la routine comprend qu'il s'agit d'un octet appartenant à une chaîne qui doit se terminer par l'octet 0. Si l'octet courant vers lequel pointe HL est supérieur ou égal à C0, alors la routine comprend qu'il s'agit de l'octet de poids fort d'une référence à un sous message, l'octet de poids faible de la référence étant l'octet suivant. Ceci permet d'afficher un sous-message se trouvant entre les adresses C000 et FFFF. Ce message étant supposé se terminer par l'octet 0. Si l'octet courant vers lequel pointe HL est compris entre 80 et C0, alors la routine ajoute la valeur 40 à cet octet et comprend que la nouvelle valeur obtenue correspond au poids fort d'une référence à un sous message, l'octet de poids faible de la référence étant l'octet suivant. Ceci permet d'afficher un sous-message se trouvant entre les adresses C000 et FFFF. Ce message étant supposé débuter par un octet n de longueur et se terminer par n caractères correspondant au message.
|
PMSG |
HL : pointeur sur le message | HL | p20025b |
HL: Pointe sur l'octet après le message |
|||||
DAFF |
Affiche un message (terminé par 0) dont l'adresse figure juste après le call DAFF. exemple : |
PMSGR |
p20026a | ||
DB32 |
Impression d'un message ASCII (solution 1) |
PSTR |
p20026b | ||
DB44 |
Impression d'un message ASCII (solution 2) |
PSTRM |
p20026b | ||
DD60 |
Sortie d'un caractère sur un media dépendant de OTSW (#0131) |
OUTC |
p20032a | ||
EFE1 |
Affiche une chaîne entourée de guillemets (") |
SQTS |
p40037a | ||
EFED |
Affiche une chaîne sans guillemets |
SUQTS |
p40037b | ||
EFF5 |
Affiche un caractère |
SCHRI |
p40037b | ||
Gestion des caractères | |||||
DE02 |
Le caractère est-il une majuscule ? |
ALPHA |
A : caractère à tester | F | p20033b |
CY=0 =>ce n'est pas une majuscule
CY =1 => majuscule |
|||||
DE09 |
Le caractère-il est une majuscule ou un chiffre ? |
ALNUM |
A : caractère à tester | F | p20033b |
CY=0 =>ce n'est ni une majuscule, ni
un chiffre CY =1 => majuscule ou chiffre |
|||||
DE0D |
Le caractère est-il un chiffre ? |
NUMER |
A : caractère à tester | F | p20033b |
CY=0 =>ce n'est pas un chiffre CY =1 => chiffre |
|||||
Gestion clavier | |||||
D6BB |
Entrée d'un caractère via clavier ou RS232 Dépend de la valeur mise dans l'octet 296. Si l'octet 296 = 0 l'attente du caractère est faite via le clavier. Si l'octet 296 = 1, l'attente du caractère est faite via la prise RS232. |
FGETC |
Pas de paramètre en entrée | AF | p20015a |
CY=1=>Touche Break =>A=0 CY<>1 et Z<>1=>le caractère se trouve dansA |
|||||
D1DB |
Input scanning : check source (keyboard or DINC) and inputs |
MPT29 |
p20003a | ||
ED06 |
Entrée d'un caractère au clavier avec impression (sans echo) |
CIE |
p60032a | ||
Opérations sur simples et doubles octets | |||||
DE14 |
Comparer HL et DE |
COMP |
HL et DE | AF | p20034a |
Z=1=>HL = DE Z=0; CY=1 => HL < DE Z=0 ; CY=0 => HL > DE |
|||||
DE1A |
Calcul de la longueur d'un bloc. HL = HL -DE Si HL est au départ inférieur à DE, alors le résultat est en complément à 2 |
SUBDE |
HL et DE | DEHLF | p20034a |
Z=1=>HL = DE Z=0; CY=1 => HL < DE Z=0 ; CY=0 => HL > DE HL = HL - DE |
|||||
DE26 |
Calcule le complément à 2 de HL |
CMPHL |
HL | HL | p20034a |
HL = complément à 2 de HL en entrée | |||||
DE30 |
Calcule de l'adresse effective HL = HL + A |
DADA |
A = déplacement HL = adresse de base |
HLF | p20034b |
HL = HL + A | |||||
DE39 |
Calcul de l'adresse après la chaîne |
DADM |
p20034b | ||
DE41 |
Introduction d'un délai de 665ms (si interruptions désactivées) et de 750 ms sinon. |
DELAY |
p20034b | ||
DE41 |
Remplissage d'une zone de mémoire avec une constante (octet) |
FILL |
p20035a | ||
Gestion des entrées/sorties | |||||
D7EB |
En version 1.0 du firmware Ecrit un octet à la position courante du curseur et met à jour la position du curseur. Ce gestionnaire écrit directement en mémoire vidéo. |
LD95 |
A= octet à afficher sur l'écran | |
p20018a |
Pas de paramètre en sortie | |||||
D7EC |
En version 1.1 du firmware Ecrit un octet à la position courante du curseur et met à jour la position du curseur. Ce gestionnaire écrit directement en mémoire vidéo. |
LD95 |
A= octet à afficher sur l'écran | |
p20018a |
Pas de paramètre en sortie | |||||
Fonctions d'encodage | |||||
DDB4 |
Lit l'entrée à partir de l'interface RS232 Seuls les octets ASCII sur 7 bits sont admis. |
Pas de paramètre en entrée | AF | p20032b | |
A = caractère reçu.A= 0 si rien n'est reçu. | |||||
DD94 |
Transmission d'un caractère vers l'interface RS232 via TICC |
OUTSE |
p20032b | ||
DDC0 |
RS232 Frame error. Test du break sur ligne série |
BRSER |
p20033a | ||
Adr. | partie ROM switchée de E000 à EFFF | Mném | Param Entrée/sortie | Registres modifiés | Firm.Manual |
---|---|---|---|---|---|
Package encodage et UTILITY | |||||
E009 |
Démarre le package Utility Lorsque l'on est déjà sous UT et qu'un programme fait appel à cette adresse par une des instructions de saut (JMP, JC etc) alors on se retrouve sous UTILITY. |
USTART |
Pas de paramètre en entrée | |
p60001a |
Pas de paramètre en sortie |