CROSS CHASE compilé avec CMOC pour les Thomsons?

Cette catégorie traite de développements récents pour nos vieilles machines, applications, jeux ou démos... Amis programmeurs, c'est ici que vous pourrez enfin devenir célèbres!

Modérateurs : Papy.G, fneck, Carl

Linzino
Messages : 67
Enregistré le : 26 août 2017 02:40

Re: CROSS CHASE compilé avec CMOC pour les Thomsons?

Message par Linzino » 12 déc. 2018 10:37

Merci!

Comment je peux deplacer le curseur?

Fabrizio

__sam__
Messages : 5411
Enregistré le : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: CROSS CHASE compilé avec CMOC pour les Thomsons?

Message par __sam__ » 12 déc. 2018 10:56

Pour déplacer le curseur il faut utiliser la séquence d'échappement: $1F,$40+y,$40+x avec y entre 0 et 24 et x entre 1 et 40 (je ne suis pas trop certain des bornes.)
Samuel.
A500 Vampire V2+ ^8^, A1200(030@50mhz/fpu/64mb/cf 8go),
GVP530 (MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.

Linzino
Messages : 67
Enregistré le : 26 août 2017 02:40

Re: CROSS CHASE compilé avec CMOC pour les Thomsons?

Message par Linzino » 13 déc. 2018 08:25

J'ai reussi à effacer le curseur

asm {
ldb #$14
swi
.byte 2
}

mais pas avec une fonction avec un parametre pour le caractère.

Je ne comprends pas pourquoi on mets un octet avec la valeur 2 après svi et
je ne comprends pas "ldb 2,s" ou "ldb 3,s" (conseillé par Full-Duplex).

J'imagine que cela sert à mettre le parametre de la fonction C sur B mais cela depend du compilateur C.
Je dois verifier si le passage des parametrès dans l'Assembleur "in line" est fait par la pile.

Fabrizio

Daniel
Messages : 12986
Enregistré le : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: CROSS CHASE compilé avec CMOC pour les Thomsons?

Message par Daniel » 13 déc. 2018 08:52

En assembleur 6809, l'appel d'une subroutine est réalisé par un BSR ou un JSR.
Pour l'appel des fonctions standard, les ordinateurs MO utilisent l'instruction SWI comme un JSR avec adressage indirect : SWI = JSR [$FFFA].
Le SWI est codé sur 1 octet, le JSR [$FFFA] est codé sur 4 octets, il y a donc un gain de 3 octets pour chaque appel.
De plus le SWI empile tous les registres (sauf S), ce qui peut être un avantage par rapport au JSR qui n'empile que le registre PC.


Dans les deux cas il y a plusieurs techniques pour passer des paramètres :

- Soit en faisant suivre l'appel à la subroutine d'un ou plusieurs octets de paramètres.
C'est le cas (sur ordinateur MO) du SWI suivi d'un octet donnant le numéro de la fonction dans les bits 0-6 et le type de retour dans le bit 7.

- Soit en plaçant les paramètres dans la pile système.
C'est le cas de l'exemple donné par Fool-DupleX.

On pourrait aussi mettre les paramètres à des adresses fixes en RAM, mais ce serait plus coûteux en nombre d'octets de programme et en cycles machine pour l'exécution, c'est pourquoi les programmeurs ont utilisé les deux techniques précédentes.
Daniel
L'obstacle augmente mon ardeur.

Répondre