Logicielsmoto.com
http://www.logicielsmoto.com/phpBB/

Résumé technique du MO5
http://www.logicielsmoto.com/phpBB/viewtopic.php?f=3&t=386
Page 1 sur 4

Auteur:  PulkoMandy [ 28 Juil 2010, 14:21 ]
Sujet du message:  Résumé technique du MO5

Bon, j'avait fait cette page il y a un moment déjà; le but est de rassembler toutes les infos utiles sur le MO5 :
* A un seul endroit (parce que fouiller plein de ftp et de sites pour tout récolter a pris du temps)
* Dans un format texte (parce que c'est indexable par les moteursde recherche et lisible par les gens)
* De façon claire et concise, sans ambiguités

Je pense que ce n'est pas encore complet (il manque les appels non documentés à la rom disque par exemple). Mais je trouve que c'est pratique à avoir sous la main.

et aussi, je suis sur que vous allez avoir plein de choses à y ajouter... :)

http://shinra.cpcscene.com/mo5.shtml

Auteur:  Fool-DupleX [ 28 Juil 2010, 14:33 ]
Sujet du message: 

Bonne initiative.

En vrac et de memoire ...

Ca serait bien de détailler les bits du 6821 système, pour les appels en ROM, je ne m'y fierais pas trop, il y a eu plusieurs version de la ROM, $A7CB est utilisé par l'extension mémoire 64 Ko, la zone RAM 1F40-1FFF est utilisable pour stocker des trucs, le nanoreseau ainsi que logo s'en servent, la firq est utilisée par le crayon optique, le contenu des registres du gate-array sont decrit dans le manuel technique du mo5 dispo chez Daniel, je ne suis pas sur que le FDC utilise les adresse A7D9-A7DF, le A7D8 est utilisé pour la commutation des pages de la ROM floppy c'est clair, la zone ROM disque contient des choses diverses et variees et peut etre paginée (cf. A7D8), ca peut aussi etre les routines nanoreseau et le logiciel de l'interface Lego-DACTA.

ah et je crois que A7DD contient le numero de poste nanoreseau mais j'ai un doute, ma memoire flanche.

Fool

Auteur:  PulkoMandy [ 28 Juil 2010, 17:21 ]
Sujet du message: 

Merci !
J'ai rajouté tout ça, corrigé une ou deux fautes de frappe et nettoyé un peu la mise en page.

Auteur:  Daniel Coulom [ 28 Juil 2010, 17:58 ]
Sujet du message: 

Fool-DupleX a écrit:
je crois que A7DD contient le numero de poste nanoreseau mais j'ai un doute, ma memoire flanche.

Je n'ai pas plus de mémoire, mais je viens de lire les sources de dcnanoréseau :) Le numéro de poste est dans les 5 bits de poids faible de $A7D8.

Auteur:  PulkoMandy [ 28 Juil 2010, 18:02 ]
Sujet du message: 

Encore corrigé :)

Auteur:  PulkoMandy [ 03 Aoû 2010, 21:09 ]
Sujet du message: 

Je viens de compléter la liste des syscals avec les appels au contrôleur disque.

J'ai noté en bleu tous les trucs sur lesquels il me manque des informations.

Auteur:  Fool-DupleX [ 04 Aoû 2010, 07:32 ]
Sujet du message: 

Toujours de mémoire et apres parcours rapide, la routine du SWI utilise le numero de routine pour aller piocher dans une table de vecteurs, donc si tu mets un numero impair ou un numero superieur a la taille de la table, tu vas sauter a une adresse bidon, mais previsible : la valeur sur 16 bits qui se trouve a cet endroit.

Ex: si la table contient entre 8 et 10 les valeurs F722 et FACD (exemple bidon), un call 9 devrait aller sauter en 22FA.

Il faut desassembler la routine pour en etre sur.

Le detail du fonctionnement de l'extension memoire se trouve ici : http://www.nanoreseau.net/lib/exe/fetch.php?media=ext64k.pdf

Comme precedemment dit, le detail des compteurs du gate-array se trouve dans le manuel technique du MO5. Whitebird a recree le gate-array commplet 100% fidele (testé sur un vrai MO5) en VHDL, voir ce fil : http://www.logicielsmoto.com/phpBB/viewtopic.php?t=211

Par ailleurs l'octet A7D8 a encore d'autre fonctionnalités sur certaines machines, par exemple sur l'extension MO5, il permet de masquer le controleur de disque externe (ou pas).

D'une maniere generale, utiliser la rom moniteur avec SWI et les registres situes en $2000-$21FF n'est pas très utile si tu veux faire des trucs un peu sérieux ... Ca peut depanner pour afficher un texte ou jouer une note de musique, mais franchement, la routine d'affichage d'une ligne par exemple peut etre reecrite pour aller cinq fois plus vite. Meme les routine disquette et cassette ont ete reecrites maintes fois par les gens un peu serieux (cf. puls). Et ca gagne 512 precieux octets de RAM pour faire autre chose.

Tu devrais plutot te concentrer sur la description du hard, notemment le PIA systeme, qui est encore nettement insuffisante.

Auteur:  PulkoMandy [ 04 Aoû 2010, 09:53 ]
Sujet du message: 

Oui,il faut que je désassemble la ROM pour voir ou vont atterrir les SWI qui restent. ça peut servir si je veux avoir des bouts de codes accessibles facilement sans détruire le système.

quand à l'utilisation de la ROM, certes c'est lent, mais ça a quand même un interêt quand il s'agit de gagner de la place. Une ROM de ce genre permet d'imaginer facilement une démo 1k ou 512o.

Pour de la démo pluscomplète ça passera efectivement par le matériel. Mais chaque chose en son temps.

Et puis bon les routines d'accès disk de PULS... moi j'ai pas encore réussi à voir une démo entière sur mon TO8, y'a toujours une erreur disque quelque part. Alors que mes disquettes marchent bien sur d'autres machines... :)

Auteur:  PulkoMandy [ 04 Aoû 2010, 10:46 ]
Sujet du message: 

Je viens d'ajouter les registres du Gate Array (mieux expliqués) et un peu plus d'infos sur le PIA, j'avais en effet raté certains trucs.

Je vais attendre d'avoir un MO5 sous la main et faire des tests plus poussés pour être sur d'avoir tout compris, quand même.

Auteur:  Fool-DupleX [ 04 Aoû 2010, 13:59 ]
Sujet du message: 

Pour la touche ACC, tu dis que c'est un left over du TO7, mais toutes les machines thomson ont la touche ACC, c'est par design. left-over ne me parait pas tres approprie

Octet A7C2, tu dis que le bit qui controle le moteur ne peut rien faire en entree, c'est inexact. En lisant le bit, tu peux detecter la presence ou l'absence du lecteur externe. C'est utilisé par exemple dans le BASIC qui renvoie un Error 60 (de mémoire) quand le lecteur n'est pas branche ou pas alimenté. C'est du au fait que la ligne est en haute impédance quand le lecteur n'est pas branche, mais tirée a 0 quand il est branché.

Octet A7C3: lorsque l'incrustation video est activée, l'horloge est generee par l'extension incrustation en PLL sur le signal video. Pas d'extension incrustation : il n'y a plus d'horloge 16 MHz sur le gate-array et la machine s'arrete. concretement, t'obtient un ecran noir. facile a tester : screen ,,,,1 sous BASIC.

les compteurs du gate array sont en lecture seule. Thomson a d'ailleurs astucieusement loge d'autres fonctionnalites sur MO6 en ecriture a cet endroit.

A7E4 : bits 2-9 du block clock
A7E5 : bits 0-1 du block clock, bit0-2 du dot clock de ligne, horloges a 1, 2 et 4 MHz
A7E6 : iniln a 1 quand on se trouve dans la fenetre horizontalement, j'ai un doute sur lt3, le reste est inutilise
A7E7 : inttn a 1 quand on se trouve dans la fenetre verticalement, le reste est inutilise

en ROM, tu indiques le vecteur de reset, mais il y a tous les autres juste avant : nmi, swi, irw, firq, swi2, swi3 ...

A noter egalement que la zone EFE0-EFFF est utilisée dans les cartouches MEMO5 pour identifier la cartouche et contient notamment le vecteur de redemarrage de l'application en EFFE-EFFF. Cette zone est appelee signature de l'application en langage Nanoreseau.

La zone B000-EFFF est utilisée par les cartouches MEMo5 en masquant le BASIC qui se trouve en C000-EFFF. Avec le basic,la zone B000-BFFF est libre et peut etre exploitee : sur le mo5 a clavier mecanique, ils ont rajoute un slot libre sur la carte-mere pour loger une EEPROM a cet endroit et le signal de decodage d'adresse est egalement disponible sur le bus externe.

les cartouches peuvent etre paginees ; le mecanisme le plus courant pour la commutation de page consiste a aller lire les octets BFFC-BFFF qui sont relies dans la cartouche au commutateur de page. Par exemple, faire un LDA >$BFFC commute en page 0 de la cartouche, et faire un LDA $BFFF commute en page 3.

Auteur:  CloudStrife [ 04 Aoû 2010, 16:09 ]
Sujet du message: 

Fool-DupleX a écrit:
Octet A7C2, tu dis que le bit qui controle le moteur ne peut rien faire en entree, c'est inexact. En lisant le bit, tu peux detecter la presence ou l'absence du lecteur externe. C'est utilisé par exemple dans le BASIC qui renvoie un Error 60 (de mémoire) quand le lecteur n'est pas branche ou pas alimenté. C'est du au fait que la ligne est en haute impédance quand le lecteur n'est pas branche, mais tirée a 0 quand il est branché.


Bin donc on peux rien conclure donc, c'est susceptible d'être 0 aussi si on est en haute impédance, à moins qu'il y est un autre tirage à 1 de résistance plus importante.

Auteur:  PulkoMandy [ 04 Aoû 2010, 17:34 ]
Sujet du message: 

Il y a ce qu'il faut dans le PIA pour éviter ce genre de problèmes.

Auteur:  PulkoMandy [ 04 Aoû 2010, 19:36 ]
Sujet du message: 

Page mise à jour avec les infos de Fool Duplex. Merci :)

EDIT: J'ai rajouté une partie des SWI non documentés. J'ai commencé à désassembler et commenter le listing de la rom du MO5v2, mais je mettrai ça en ligne un peu plus tard, c'est pas encore assez complet.

Auteur:  Fool-DupleX [ 05 Aoû 2010, 07:16 ]
Sujet du message: 

Desassembler et commenter la ROM ? Bonne idee, mais ca a deja ete fait. Autant profiter de ce qui existe deja. Je possede d'ailleurs aussi les codes sources de toutes les ROM de premiere generation si besoin.

http://www.forler.ch/secret1.jpg
http://www.forler.ch/secret2.jpg
http://www.forler.ch/secret3.jpg
http://www.forler.ch/secret4.jpg
http://www.forler.ch/secret5.jpg

Auteur:  Daniel Coulom [ 05 Aoû 2010, 08:59 ]
Sujet du message: 

Si ça peut aider PulkoMandy, j'ai aussi un document de travail à http://dcmoto.free.fr/tmp/mo5v2moniteur.txt
A prendre avec beaucoup de réserves, car je n'ai pas encore tout analysé ni tout compris. Ce document est un brouillon en évolution constante et peut contenir de grosses erreurs.
Au passage j'en profite pour dire que j'apprécie beaucoup la page http://shinra.cpcscene.com/mo5.shtml et je compte l'utiliser souvent :)

Page 1 sur 4 Heures au format UTC + 1 heure
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/