[wiki] MBC Alcyane

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

Avatar de l’utilisateur
Carl
Modérateur
Messages : 13300
Inscription : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

Re: [wiki] MBC Alcyane

Message par Carl »

Je ne m'en souviens plus….
Je ne pense pas que cela vienne de l'INA car il n'y a pas le logo...

Carl
MichelDu77
Messages : 53
Inscription : 02 juin 2010 15:05

Re: [wiki] MBC Alcyane

Message par MichelDu77 »

Bonjour à tous,

j'ai commencé un mini-site internet où j'ai posté de petites choses comme un manuel complet du basic Alcyane et un petit bricolage permettant de remplacer un clavier d'Alcyane par un PC et sa carte son (sur une idée de franfran).

J'y posterai prochainement un émulateur complet d'Alcyane et d'autres menu bricolages, toujours autour de l'Alcyane.

jetez un coup d'oeil ici http://michel.mbc.free.fr/ et dites-moi ce que vous en pensez.

Amicalement

Michel
panoramic
Messages : 27
Inscription : 19 mai 2010 23:32

Re: [wiki] MBC Alcyane

Message par panoramic »

Très bonne idée d'avoir créé un site sur l'Alcyane !
Et d'avoir rassemblé tes connaissances dans un document interne que tu remets régulièrement à jour !

J'attends avec impatience ta nouvelle version d'émulateur. Dommage que la première version que tu as proposée en mai 2021 ne soit plus disponible car j'aurais bien aimé la tester. Comment se présente-t-il ? Est-ce qu'il peut générer ou lire un fichier image d'une disquette ou d''un disque dur ?
Est-ce qu'il émule les calculs en virgule flottante du composant AMD9512 ?

Pour programmer l'Alcyane, doit-on obligatoirement le faire en Basic ? Est-t-il possible de programmer en assembleur 8080 ou 8085 ?

Mais pour utiliser l'assembleur, il faut connaître les adresses des différentes routines du système avec leur interface (registres d'entrée et de sortie), or, je t'ai pas trouvé dans la documentation une liste d'API avec leur adresses en ROM.

Par exemple : où se trouve en mémoire l'adresse de la routine de lecture d'un caractère au clavier ?
A la page 28 de ton "Document interne Alcyane", il y a un exemple d'attente d’un caractère, mais où se trouve BCLCLA dans la ROM, pour qu'on puisse faire un CALL BCLCLA puis récupérer le caractère dans A ?

Je sais, ça fait beaucoup de questions. Car j'ai une idée derrrière la tête ...:D
Tout seul, on va plus vite. Ensemble, on va plus loin.
https://panoramic.1fr1.net/
MichelDu77
Messages : 53
Inscription : 02 juin 2010 15:05

Re: [wiki] MBC Alcyane

Message par MichelDu77 »

Panoramic,

Pour répondre à tes questions :

- mon « site » a un but très modeste. On trouve déjà énormément de choses sur ce forum et notamment sur ce fil que je t’invite à parcourir en entier. J’en profite pour remercier au passage les administrateurs et les modérateurs qui font un travail remarquable.

- l’émulateur est quasiment achevé. Je suis en train de le documenter.

- l’émulateur utilise effectivement des fichiers « image » de disquettes de 800ko (5 pouces) ou 1,2 Mo (8 pouces). L’un des deux basics que je propose peut aussi gérer 8 disques winchester de 10 Mo mais l’émulation reste à écrire.

- oui l’émulateur gère le 9512 qui, par chance, utilise le format interne IEEE 754 qui est le même que le 8087 et ses successeurs.

- il est possible de programmer en assembleur. L’émulateur permet l’import / export de fichiers. Je conseille d’utiliser un outil PC, l’assembleur Alcyane étant assez pauvre.

- MBC n’a jamais utilisé le concept de BIOS. Il n’y a pas de routines utilisables dans la ROM de boot. Il faut recréer toutes les routines. Ce n’est pas très complexe. Je pourrai t’aider sans problème.

J’espère avoir répondu à tes questions. Si tu as des demandes précises, je pourrai mettre à jour le document interne.

Amicalement,

Michel
panoramic
Messages : 27
Inscription : 19 mai 2010 23:32

Re: [wiki] MBC Alcyane

Message par panoramic »

@MichelDu77:
J'ai encore des questions. :D :D :D

Lorsque j'examine l'EPROM de boot d'un ALCYANE A6 (RCM508.bin) qui a été fournie par attilavv et que j'essaye de comprendre le code à l'aide de ton magnifique document interne Alcyane, je trouve des instructions OUT et IN pour des ports qui ne sont pas cités dans ton document.
Sont-ils réellement utilisés par le boot (en fait sont-ils exécutés) et si oui, à quoi correspondent-ils?

Il y a des OUT sur les ports :
95h
96h
a8h
a9h
b5h
b6h
d5h
d6h
f5h
f6h

et il y a des IN sur les ports :
89h
95h
96h
a9h
b5h
b6h
Tout seul, on va plus vite. Ensemble, on va plus loin.
https://panoramic.1fr1.net/
MichelDu77
Messages : 53
Inscription : 02 juin 2010 15:05

Re: [wiki] MBC Alcyane

Message par MichelDu77 »

@panoramic

Effectivement, les ports que tu cites ne sont pas exposés dans mon document. Ils correspondent à des lecteurs de disques dont je n'ai pas le logiciel (ni le matériel).

Je m'explique : la rom RCM50B était capable, après des bidouilles assez pointues pour faire tenir ça dans 4 k-octets, de charger un logiciel depuis les disques :

- 1, 2, 9, 10, 11, 12 : sur le contrôleur de disquettes double-densité, déjà documenté.
- 3, 4 : sur le contrôleur de disques durs D120
- sur un serveur multiposte connecté au travers d'une carte 4060 (8 bits parallèle). Le mode multiposte est détecté au lancement en lisant le numéro de poste sur le port 97H.

Les ports que tu cites sont utilisés ainsi :

- Les ports 95H, B5H, D5H et F5H correspondent au D120 n°3.
- Les ports 96H, B6H, D6H et F6H correspondent au D120 n°4.
- Les ports 89H et A9H correspondent à la carte 4060 qui est connectée à un serveur de disques. Le protocole est le même que l'interface des disquettes, ce qui a donné lieu à des simplifications (enfin, si on veut...).
- Le port A8H correspond aux lecteurs de disquettes 8 pouces, hard-sector, simple densité ayant une capacité de 600 k-octets. La rom RCM50B n'est pas capable de lire un logiciel depuis ces disquettes. Le code XRA A / OUT 0A8H / RET à l'adresse 04F2H est sans doute un reste de code mal nettoyé et ne sert à rien ! En pratique, cela désélectionnait les disques et remettait l'interface en mode "repos".

J'espère avoir répondu à tes questions.

Amicalement,

Michel
panoramic
Messages : 27
Inscription : 19 mai 2010 23:32

Re: [wiki] MBC Alcyane

Message par panoramic »

Bonjour,

Voici un humble "exécuteur de ROM de boot" d'Alcyane, codé en Delphi d'après la documentation mise à disposition sur ce forum.
https://uploadnow.io/f/t7vM39b

Ce logiciel permet d'exécuter la ROM de boot d'un Alcyane 6 fournie par attilavv (RCM50B.BIN), en émulant un écran et un clavier: on charge la ROM et elle est aussitôt exécutée. On peut alors taper quelques commandes.

Il n'utilise que les 2 ports E2 et C2 qui permettent d'émuler un clavier de PC (et non pas un clavier d'Alcyane).
Tous les autres ports d'entrée/sortie sont neutralisés, donc il n'y a pas d'accès à une disquette.

Au lancement de la ROM, il s'affiche "MONOPOSTE", alors que je m'attendais à l'affichage de "- SYSTEME ALCYANE".
Si je tape quelques commandes:
M , il s'affiche 'TEST MEMOIRE 82 DEBUT : 20 FIN: PATTERN: '
C , il s'affiche M.
L , il ne se passe rien.
/1/, il s'affiche ERREURNOM, puis plus rien, ce qui est normal puisque les accès aux disquettes sont inhibés.

Ce qui m'a surpris, c'est que je m'attendais à un affichage de 24 lignes de 80 caractères. Or, dans ce cas, l'affichage n'est pas correct: des lignes sont tronquées. J'ai mis un affichage sur 64 colonnes pour que ce soit correct.

@MichelDu77:
Cette ROM est-elle prévue pour un affichage sur 64 ou sur 80 caractères ?

Pour que je transforme cet exécuteur de ROM de boot en un début d'émulateur, j'aurais besoin de plus d'informations sur le logiciel.
Par exemple, à quoi correspondent les commandes L (local ?), M (mémoire), C ?
Et comment les utilise-t-on ?

D'autre part, j'aurai besoin aussi d'une image d'une disquette. Je pourrais cependant créer de toute pièce la structure d'une disquette avec la documentation dont je dispose, mais rien ne vaut l'image d'une vrai disquette.

Qui pourrait fournir une image d'une disquette ?

Qui pourrait fournir une autre ROM de boot ?
Tout seul, on va plus vite. Ensemble, on va plus loin.
https://panoramic.1fr1.net/
MichelDu77
Messages : 53
Inscription : 02 juin 2010 15:05

Re: [wiki] MBC Alcyane

Message par MichelDu77 »

@panoramic

Je vois que je ne suis pas le seul à m’amuser sur Alcyane ;-)

De mémoire, la commande C passe en mode « connecté » à un serveur de disque, la commande L permet de forcer le mode « local » sur un système multipostes et la commande M lance un test mémoire. Aucune commande n’accepte de paramètre.

En ce qui concerne l’affichage, c’est bien du 80 colonnes. Par contre, chaque ligne débute sur une frontière de 128 octets. Les adresses des lignes sont donc 1000H, 1080H, 1100H, 1180H, 1200H, etc.

Dès que j’aurai une minute, je t’enverrai une image de disquette 8 pouces avec un basic, mais il gère obligatoirement 128 ko de mémoire. Au moins, ça te permettra de lire le disque.

Je vais regarder dans mon bord… heu dans mes affaires si je trouve un autre rom de boot.

Amuse-toi bien !

Amicalement,

Michel
panoramic
Messages : 27
Inscription : 19 mai 2010 23:32

Re: [wiki] MBC Alcyane

Message par panoramic »

@MichelDu77:

J'ai avancé dans mon logiciel. L'affichage se fait maintenant correctement.

Je me suis lancé dans une émulation d'un controleur de disquettes, et j'utilise 2 ROMs de boot : R0921D.BIN (pour A10) et RCM50B.BIN (pour A6).
Mais j'ai des problèmes.

1 - Que ce soit avec la ROM R0921D.BIN ou la ROM RCM50B.BIN, il n'y a jamais la phase d'initialisation (l'Alcyane envoie 05H, le controleur 05H puis 19H et l'Alcyane répond par 19H).

2 - Avec les 2 ROMs : R0921D.BIN et RCM50B.BIN, si je tape /1/PR il y a exactement le même comportement:
- l'émulateur de disquette envoie 2 "Prêt à recevoir"
- l'Alcyane envoie alors une séquence d'entête : AAH A5H 00H 04H 00H 20H 0CH 10H 38H mais juste après le préambule AAH A5H, il lit une donnée du controleur (et je ne sais pas ce qu'il s'attend à lire)
- après la séquence d'entête, il est alors impossible d'envoyer à l'Alcyane le CRC (38H) de cette séquence (qui doit être suivi de 00H, mais même le 38H n'est pas lu).

J'ai fait différents essais:
Si l'émulateur de disquette positionne alors un "Prêt à émettre" après avoir mis 38H comme donnée à émettre, l'Alcyane boucle indéfiniment sur la lecture de l'état "Prêt à émettre" et ne lit rien.
Si l'émulateur positionne au contraire un "Prêt à recevoir" il y a une centaine de lectures de cet état sans lecture de la donnée (ce qui est normal puisque l'émulateur devrait "émettre"), puis l'Alcyane envoie ensuite un grand nombre de valeurs FFH au controleur. Il s'affiche finalement "ERREURNOM".

Je suis bloqué à ce niveau. Je vais regarder au niveau du code desassemblé ce que l'Alcyane demande comme valeur après le préambule et après l'entête.
Tout seul, on va plus vite. Ensemble, on va plus loin.
https://panoramic.1fr1.net/
MichelDu77
Messages : 53
Inscription : 02 juin 2010 15:05

Re: [wiki] MBC Alcyane

Message par MichelDu77 »

@panoramic

je vois que tu t'es attaqué à un gros morceau ! Je dois avouer bien humblement que c'est la partie qui m'a donné le plus de fil à retordre !

La phase d'initialisation (05H etc.) ne sert que lorsque l'hôte veut connaître le numéro d'un périphérique. Par exemple, lorsqu'un serveur veut connaître le numéro du poste connecté à la carte 4060 n° X ou Y. Dans le cas du contrôleur de disquette, ce numéro est toujours 19H. Afin de simplifier la ROM de boot et d'optimiser le code au maximum, le logiciel considère que cette phase n'est pas nécessaire. Elle n'est utilisée que dans le basic.

Pour faire fonctionner tout ça, j'ai utilisé un automate d'état. Dans l'état "idle", j'attends soit un 05 (je réponds alors AAH 19H et j'attends le retour de 19H), soit un AAH (que j'ignore) soit un A5H qui me place dans l'état d'attente d'un en-tête.

Je te suggère d'utiliser le même genre d'automate qui permet de mieux séparer les fonctions.

Bon courage !

Michel
MichelDu77
Messages : 53
Inscription : 02 juin 2010 15:05

Re: [wiki] MBC Alcyane

Message par MichelDu77 »

Bonjour à tous,

j'ai enfin achevé la mise au point et la documentation de mon émulateur d'Alcyane 2.0.
Il est disponible sur mon site http://michel.mbc.free.fr avec sa documentation.
Amusez-vous bien et n'oubliez pas de me dire si vous trouvez des bugs.

Amicalement

Michel
gotcha
Messages : 2802
Inscription : 30 mars 2017 11:39
Localisation : Isère
Contact :

Re: [wiki] MBC Alcyane

Message par gotcha »

Merci @MichelDu77 pour ce partage.

On parle bien de l'Alcyane A6 ici ? Je ne peux pas émuler l'A10 (avec son 8080) avec ton émulateur (?)
Amstrad CPC et Goupil power :mrgreen:
Bénévole à l'association pour un conservatoire de l’informatique et de la télématique (https://www.aconit.org)
panoramic
Messages : 27
Inscription : 19 mai 2010 23:32

Re: [wiki] MBC Alcyane

Message par panoramic »

Merci pour cet émulateur.
gotcha m'a précédé : rien n'indique le type d'Alcyane qui est émulé, à part le chargement de la ROM de boot RCM50B.bin qui correspond à l'A6. Est-ce l'A6 ou l'A6E ?

D'autre part, je pensais que la mémoire écran commençait en 1000H. Or, si j'exécute le petit bout d'assembleur : 3E 2A 32 00 11 C9 qui envoie un astérisque (2AH) en ligne 3 de l'écran (1100H), il ne se passe rien. De même si j'envoie une chaine de caractères plus longue à un autre endroit d l'écran, rien n'est visible, et même si je commence le programme assembleur par PUSH H et le termine par POP H, RET.
Tout seul, on va plus vite. Ensemble, on va plus loin.
https://panoramic.1fr1.net/
MichelDu77
Messages : 53
Inscription : 02 juin 2010 15:05

Re: [wiki] MBC Alcyane

Message par MichelDu77 »

@panoramic, @gotcha

L'émulateur émule un A6E Alcyane (128 ko de RAM, calcul en virgule flottante, graphique, etc.).

Je ne possède malheureusement pas de logiciel pour A10. Si j'en récupère un de ces jours (appel aux gentils contributeurs), je ferai une mise à jour de l'émulateur.

Ceci dit, le A6E est la version la plus aboutie des machines Alcyane. Il est possible de programmer en basic et même en assembleur en utilisant mon document qui décrit le hardware (disponible sur mon site http://michel.mbc.free.fr. Les programmes écrits en basic sur A6E sont compatibles A10, les fichiers de données et du séquentiel indexé aussi. La structure des disques est la même.

Que souhaitez-vous exactement émuler sur un A10 ?

@panoramic

J'avoue que je ne comprends pas ton problème d'affichage. Ton programme devrait effectivement afficher une * au début de la troisième ligne. Veux-tu que je jette un coup d'oeil à ton code Delphi / assembleur ?

Michel
panoramic
Messages : 27
Inscription : 19 mai 2010 23:32

Re: [wiki] MBC Alcyane

Message par panoramic »

J'avoue que je ne comprends pas ton problème d'affichage. Ton programme devrait effectivement afficher une * au début de la troisième ligne. Veux-tu que je jette un coup d'oeil à ton code Delphi / assembleur ?
@MichelDu77:

J'ai créé une disquette virtuelle PANO.img, qui contient 2 micro programmes en assembleur : DEMO1 et DEMO2.

DEMO1 affiche une astérisque au début de la 3ème ligne.
DEMO2 efface l'écran pour avoir un fond en couleur bleue.

Ils se chargent et se lancent tous les deux à l'adresse 3000H, donc après la ROM de boot.

Je démarre l'émulateur, je choisis le disque PANO.img en disque 1 (800 ko) avec le gestionnaire de disque.

Si je tape /1/DEMO2, l'écran graphique prend correctement la couleur bleue (quoiqu'il s'affiche à la fin FF08 00).
Mais si je tape /1/DEMO1, l'astérisque n'apparait pas.

Voici la disquette virtuelle:
https://uploadnow.io/f/0hdSzVy

Il y a sans doute quelque chose que je fais mal, mais quoi ?
Tout seul, on va plus vite. Ensemble, on va plus loin.
https://panoramic.1fr1.net/
Répondre