Fonctions en ROM avec les paramètres d'entrée et de sortie
Adr.Fonction en ROM permanente de C000 à DFFFMnémParam Entrée/sortieRegistres 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.

CWOPEN

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

CWBLK

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

CWCLOS

WTRL

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.

CROPEN

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

CRBLK

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.

CMBLK

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

CASSP

CRCLOS

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).

RHDR

Détails

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

Détails

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 :
CALL :DAFF
DBL C7A8

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.

CINC

INSER

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
Fonctions en ROM switchée avec les paramètres d'entrée et de sortie
Adr.partie ROM switchée de E000 à EFFFMnémParam Entrée/sortieRegistres modifiésFirm.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

Copyright 2004-2023 © Bruno VIVIEN tous droits réservés.