Comment afficher un caractère ASCII en ASM sur MO5

C'est la catégorie reine de l'ordinophile, 8 bits et pas un de plus!
Single board ou bus S-100 acceptés.

Modérateurs : Papy.G, fneck, Carl

Répondre
Curiosus
Messages : 5
Inscription : 05 mars 2024 07:43

Comment afficher un caractère ASCII en ASM sur MO5

Message par Curiosus »

Bonjour à tous,
Je suis collectionneur d'ordi 8bits depuis de nombreuses années et nouveau sur le forum.
J'ai fait l’acquisition il y a un an d'un Thomson TO7 et récemment d'un Thomson MO5.
J'aime beaucoup m'amuser à programmer en assembleur sur différents microprocesseurs et ce sont mes premiers ordinateurs possédants un 6809.

Je suis à la recherche de la routine permettant d'afficher un caractère ASCII à l'écran en assembleur sur le MO5.
J'ai trouvé la routine sur le TO7 qui est à l'adresse $E803 en chargeant au préalable le code ASCII dans l'accumulateur "B" mais je ne trouve pas l'équivalent sur le MO5...
Si quelqu'un peut m'aider à ce sujet ce serait sympa ;)
Merci d'avance pour vos réponses
__sam__
Messages : 7988
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Comment afficher un caractère ASCII en ASM sur MO5

Message par __sam__ »

Pour afficher le caractère dont le code ASCII figure dans le registre B, il faut faire:

Code : Tout sélectionner

SWI 2
documentation
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Daniel
Messages : 17426
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Comment afficher un caractère ASCII en ASM sur MO5

Message par Daniel »

Les fonctions du moniteur MO5 sont appelées par un SWI suivi du code de la fonction.
Pour afficher un caractère, c'est la fonction $02 (PUTC = affichage d'un caractère).
Le code ASCII du caractère doit être dans l'accumulateur B.
Le caractère est affiché à la position courante du curseur.

Exemple : Affichage du caractère 'A'

Code : Tout sélectionner

  LDB   #$41    ; code ASCII du caractère 'A'
  SWI           ; interruption logicielle
  FCB   $02     ; code de la fonction PUTC
[EDIT] Comme souvent, __sam__ a été plus rapide :lol:
Daniel
L'obstacle augmente mon ardeur.
Curiosus
Messages : 5
Inscription : 05 mars 2024 07:43

Re: Comment afficher un caractère ASCII en ASM sur MO5

Message par Curiosus »

Bonjour,

Merci _sam_ et Daniel pour vos réponses !

LDB #$41
SWI #$2
RTS

ça fonctionne parfaitement :D

Merci beaucoup !
Dernière modification par Curiosus le 05 mars 2024 13:14, modifié 1 fois.
Avatar de l’utilisateur
hlide
Messages : 3507
Inscription : 29 nov. 2017 10:23

Re: Comment afficher un caractère ASCII en ASM sur MO5

Message par hlide »

C'est une directive d'assembleur pour dire que j'insère un octet à cet adresse. Donc un DATA 2 :).
Curiosus
Messages : 5
Inscription : 05 mars 2024 07:43

Re: Comment afficher un caractère ASCII en ASM sur MO5

Message par Curiosus »

Merci à tous :D
Daniel
Messages : 17426
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Comment afficher un caractère ASCII en ASM sur MO5

Message par Daniel »

Curiosus a écrit : 05 mars 2024 13:02 Est-ce qu'un appel à la routine d'affichage avec un JSR par exemple serait possible ?
Possible, oui, mais il ne faut surtout pas le faire. L'adresse de la routine PUTC est variable entre les différentes versions du MO5. Le JSR fonctionnera avec un MO5, mais pas avec un autre.

Il n'y a aucun problème pour créer le langage machine de SWI #$02 : c'est tout simplement 3F 02 (en hexadécimal).
Daniel
L'obstacle augmente mon ardeur.
Curiosus
Messages : 5
Inscription : 05 mars 2024 07:43

Re: Comment afficher un caractère ASCII en ASM sur MO5

Message par Curiosus »

Merci Daniel pour ces info détaillées.
J'ai maintenant compris que selon la ROM du MO5 l'adresse de la routine peut ne pas être au même endroit et que faire un appel avec JSR est effectivement par une bonne idée...
__sam__
Messages : 7988
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Comment afficher un caractère ASCII en ASM sur MO5

Message par __sam__ »

SWI est une instruction 6809 qui ne prends pas toujours d'argument suivant l'assembleur. Sur thomson les macro-processeurs intègrent en interne cette definition

Code : Tout sélectionner

CALL MACRO
     SWI
     FCB \0
     ENDM
qui ajoute un argument à SWI. Exemple

Code : Tout sélectionner

     LDB  #48
     CALL $02
Affiche un 0 à l'écran.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Fool-DupleX
Messages : 2367
Inscription : 06 avr. 2009 12:07

Re: Comment afficher un caractère ASCII en ASM sur MO5

Message par Fool-DupleX »

SWI n'a jamais d'argument, c'est juste une interruption logicielle. Sur MO, ils ont élégamment récupéré l'octet qui suit comme un argument.

Tu peux économiser le RTS en faisant un SWI $82.

Il y a un livre pour apprendre tout ça, très facile d'abord:

http://dcmoto.free.fr/documentation/pas ... index.html
Curiosus
Messages : 5
Inscription : 05 mars 2024 07:43

Re: Comment afficher un caractère ASCII en ASM sur MO5

Message par Curiosus »

Merci Fool-DupleX pour le lien du livre que je ne connaissais pas, j'ai commencé à le lire hier soir, il comporte une mine d'informations 👍
Fool-DupleX
Messages : 2367
Inscription : 06 avr. 2009 12:07

Re: Comment afficher un caractère ASCII en ASM sur MO5

Message par Fool-DupleX »

J'ai eu la chance d'acheter ce bouquin quand j'avais 10 ans à la librairie du coin. Pas assez d'argent de poche, mais mon père a accepté de mettre le complément. Il m'avait dit de choisir entre celui-là et "50 programmes en assembleur MO5".

Ce bouquin a changé ma vie de jeune programmeur à jamais. Je l'ai toujours et je le consulte encore régulièrement. L'autre bouquin ... j'ai découvert bien plus tard qu'il était sans intérêt. Ouf!
Répondre