lego dacta TO8

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

Fool-DupleX
Messages : 2284
Inscription : 06 avr. 2009 12:07

Re: lego dacta TO8

Message par Fool-DupleX »

Interface IEEE optionnelle. Ca devrait donc être libre. Ca vaudrait le coup de produire une ROM modifiée avec les 4 premiers octets de la page 31 qui vont bien pour éviter la détection comme une interface Nanoréseau.
Avatar de l’utilisateur
petitjd
Messages : 2007
Inscription : 23 oct. 2007 11:50

Re: lego dacta TO8

Message par petitjd »

J'ai tout ce qu'il faut, sauf... une 27c256 vide.
J'ai pas trop envie d'effacer la rom d'origine, mais je peux en commander si nécessaire. Dis moi.
PetitJD
Tortue Jeulin: www.tortue-jeulin.com
Nanoreseau: www.nanoreseau.net
Proteus III: www.proteus-international.fr
Avatar de l’utilisateur
6502man
Messages : 12286
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: lego dacta TO8

Message par 6502man »

PetitJd je peux te dépanner d"une 27C257 si ca peut aider :wink:
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
Mushussu
Messages : 16
Inscription : 19 oct. 2015 17:30

Re: lego dacta TO8

Message par Mushussu »

Bonsoir,

J'ai installé ma station de travail pour les tests avec TO7/70 pour essayer de ne pas cumuler des erreurs.
Avec le logiciel Lego line, les sorties fonctionnent et les LED des entrées s'allument lorsque les contacts sont mis.
Afin de trouver comment discuter avec le boitier,j'ai testé les entrées avec une méthode de brute, j'ai comparé les adresses à partir de A000 qui contenait la valeur 64 quand la première entrée était activé et à 128 quand la deuxième entrée l'était. Les adresses E7F2, E7F6, E7FA et E7FE sont apparues.
C'est une première victoire qui répondait à la suggestion de Fool. J'ai tenté d'écrire sur les adresses proches, mais les LED de sorties ne se sont jamais allumées.
Chose étrange, à l'adresse E7F0 il n'ya que 5 bits disponibles et 6 aux adresses E7F1 et E7F4.
Si avez des suggestions afin de faire fonctionner les sorties du boîtier, je suis preneur.
Est-il posible de désassambler le code de la mémoire du Dacta ?
Merci pour vos contributions.
Mushussu
Messages : 16
Inscription : 19 oct. 2015 17:30

Re: lego dacta TO8

Message par Mushussu »

La question en faite est-ce que le TO7 procède à l'initialisation du PIA ou alors faut-il le faire nous même ?

Je regarde la feuille de caractéristiques du PIAet je suis tombé sur cela :
https://www.epi.asso.fr/fic_pdf/b37p091.pdf

A suivre ...
Mushussu
Messages : 16
Inscription : 19 oct. 2015 17:30

Re: lego dacta TO8

Message par Mushussu »

Je me réponds à moi-même pour l'ultime fois.

Il faut bien sûr initialiser le PIA, ce que j'ai fait et cela fonctionne parfaitement.
Youpi !

Vous pourrez suivre mes aventures trépidantes ici :
https://wiki.labomedia.org/index.php/Dacta


Merci pour vos précieuses indications.
nicolho
Messages : 409
Inscription : 10 nov. 2016 16:53

Re: lego dacta TO8

Message par nicolho »

C'est louable d'essayer un peu tout pour trouver des pistes, et le désassemblage des instructions de la ROM, bien que fastidieux serait très instructif :wink: mais là c'est un peu "pourquoi faire simple quand on peut faire compliqué".

Franchement, Daniel a indiqué dès le début comment trouver, et s'il s'est fendu d'explications précises et de photos, c'est pas pour faire joli... alors d'accord, il a parlé de faire du "reverse-engineering", un mot qui peut faire un peu peur (surtout à ceux qui valident les œillères à la mode, du style "je suis informaticien, pas électronicien") mais en gros ça correspond au maximum à une heure de bidouille du dimanche matin.

Vu que les composants logiques impliqués dans l'adressage sont tout ce qu'il y a de plus basiques, et que le PIA, en plus d'être parfaitement documenté en quelques pages (avec de nombreux exemples d'utilisation disponibles , en particulier si on prétend s''intéresser à ces ordinateurs Thomson, à commencer par le TO8 qui en contient déjà 2 !), il n'est aucun besoin d'analyser le code assembleur de la ROM pour répondre à la question.

Sans besoin d'allumer le moindre ordinateur (pas évident pour les spécialistes d'allumage de LED à l'aide de Java sur un PC à 3Ghz), une chose qui serait à la fois la manière la plus directe de répondre à la question et d'apporter des informations utiles pour la communauté serait simplement de faire LE SCHÉMA de principe de l'interface.
On peut procéder de même pour d'autres analyses du même genre, mais pour les néophytes, voici le tuto :
- matériel nécessaire : un papier, un crayon, une gomme, ̶u̶n̶e̶ ̶l̶a̶m̶p̶e̶ ̶d̶e̶ ̶p̶o̶c̶h̶e̶ un multimètre qui fait "bip"
- dessiner les quelques puces présentes sur l'interface + les connecteurs, en précisant bien leur nom ainsi que les dénominations de chaque patte (en reprenant celles indiquées en première page de chaque datasheet)
- tester les liaisons entre chaque pattes (la plupart sont clairement visibles, faire un test de continuité pour les autres) et les dessiner également.

Ensuite on peut rallumer l'ordinateur pour poster le schéma sur le forum, histoire d'en faire profiter tout le monde et, par la même occasion, de pouvoir confirmer ensemble le décodage des adresses qui apparaîtra alors clairement et nous donnera celles des registres concernés.
Dernière modification par nicolho le 23 févr. 2018 00:10, modifié 3 fois.
nicolho
Messages : 409
Inscription : 10 nov. 2016 16:53

Re: lego dacta TO8

Message par nicolho »

Mushussu a écrit : 22 févr. 2018 23:34 Il faut bien sûr initialiser le PIA, ce que j'ai fait et cela fonctionne parfaitement.
Youpi !

Vous pourrez suivre mes aventures trépidantes ici :
https://wiki.labomedia.org/index.php/Dacta
Euh, 3 semaines avant de se décider à ouvrir un semblant de documentation consacrée au principal composant de cette interface LEGO (manque de bol, juste pendant que je prends finalement la peine de rédiger le précédent message pour rappeler le début du commencement...), c'est pas exactement ce que j’appellerais "trépidant" :D

Si on câble le 6821 comme dans "l'interface Universelle pour TO7/MO5" de Jean Lacours (celle donnée en lien plus haut), donc de manière identique à la classique extension "Musique et Jeux" de ces machines, on peut effectivement configurer ses registres via les adresses A7CD à A7CF, comme expliqué dans le document.

Maintenant, si on souhaite le "piloter" sans passer par un Thomson, la question de l'adresse des registres sur le bus de l'ordinateur n'a plus lieu d'être. Mais utiliser un Arduino (par exemple) pour configurer un PIA, ça serait un peu comme monter dans un avion pour faire du cerf-volant :mrgreen:
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: lego dacta TO8

Message par Daniel »

Pour information :

Je viens d'ajouter l'émulation du contrôleur LEGO DACTA à dcmoto. Elle fonctionne bien pour le MO5, le MO6 et le TO7/70 : l'écran d'accueil s'affiche, le choix 1 permet de lancer le programme. Pour l'instant les entrées/sorties ne sont pas émulées sur le PC, mais s'il y a des amateurs c'est envisageable. En émulation TO8 ou TO8D l'écran d'accueil s'affiche, le choix 1 lance le programme, certaines touches réagissent bien mais pas toutes. Il doit y avoir quelques modifications à faire dans la gestion du clavier.

Dans quelques jours je publierai une nouvelle version de dcmoto pour permettre à tous de faire fonctionner le programme, et je publierai aussi le désassemblage. Ce programme est entièrement en RAM. Il est chargé au début à partir des 32 banques de la cartouche. Il est inutile de désassembler directement la ROM car les adresses ne sont pas les bonnes. Il faut laisser la routine d'initialisation charger le programme en RAM et ensuite désassembler la RAM. Dans la ROM il y a deux versions différentes : une pour MO et une pour TO. Le programme de chargement reconnaît le type d'ordinateur et charge le programme correspondant.

Le PIA 6821 est utilisé pour la commutation des banques mémoire, par les cinq bits de poids faible du port A. Ces cinq bits ne sont donc pas utilisables pour les entrées/sorties, au moins pendant le chargement du programme en RAM, et il ne faut pas chercher à modifier la configuration du 6821 sinon la commutation risque de ne plus fonctionner. De toutes façons le programme commence par réinitialiser le 6821 avec les bonnes valeurs des registres DDRA et DDRB.

Les adresses sont les suivantes :
$A7F0 : PA et DDRA
$A7F1 : CRA
$A7F2 : PB et DDRB
$A7F3 : CRB

Notez que l'ordre n'est pas le même que pour les PIA 6821 internes des ordinateurs (PIA système et PIA musique et jeux).


01.png
01.png (1.29 Kio) Consulté 4090 fois
02.png
02.png (557 octets) Consulté 4090 fois
03.png
03.png (898 octets) Consulté 4090 fois
04.png
04.png (980 octets) Consulté 4090 fois
Daniel
L'obstacle augmente mon ardeur.
nicolho
Messages : 409
Inscription : 10 nov. 2016 16:53

Re: lego dacta TO8

Message par nicolho »

Ah là, forcément, c'est carrément nettement plus trépidant ! 8) Je trouve que l'intérêt, c'est justement de conserver le logiciel original, pour le faire revivre malgré ses défauts, et au moins voir comment ça se présente et s'utilise.

C'est sûr que, pour aller au bout du truc, faire une liaison avec un Arduino Uno (via son port série émulé, et "préflashé" avec un script adapté) comme interface de remplacement pour ce kit Lego serait tout à fait dans l'esprit, mais malheureusement réservé aux possesseurs de ce matériel rare... Idéalement, que ce soit avec une extension clonée au cul d'un Thomson, ou bien émulée et contrôlée depuis DcMoto, pouvoir reproduire, au moins partiellement, la proposition originelle avec des "briques" LEGO Technic actuelles et trouvables facilement ferait un "revival" sympa.
Daniel a écrit : 23 févr. 2018 08:13 Les adresses sont les suivantes :
$A7F0 : PA et DDRA
$A7F1 : CRA
$A7F2 : PB et DDRB
$A7F3 : CRB

Notez que l'ordre n'est pas le même que pour les PIA 6821 internes des ordinateurs (PIA système et PIA musique et jeux).
En effet, j'avais déjà remarqué (en suivant les pistes sur ta photo du dessous du circuit) que RS0 et RS1 du 6821 étaient respectivement reliées à A0 et A1 via le connecteur d'extension, alors que c'est l'inverse sur les PIA mentionnés, ce qui explique l'ordre différent.
Le schéma nous l'apprendrait aussi, mais maintenant on sait grâce à toi que les portes NOR et NAND servent à décoder les adresses sur A7Fx (ainsi que A2 et A3 ensemble à zéro), mystère résolu donc.
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: lego dacta TO8

Message par Daniel »

Version MO du programme LEGO DACTA, brute de désassemblage :
lego-dacta_mo5.zip
(46.99 Kio) Téléchargé 130 fois

Version TO du programme LEGO DACTA, brute de désassemblage :
lego-dacta_to7.zip
(52.25 Kio) Téléchargé 137 fois

Reste à commenter...


Une nouvelle version de dcmoto_nouveau vient d'être mise en ligne à http://dcmoto.free.fr/emulateur/index.html
C'est la version 2018.02.22. Elle émule le contrôleur SDDDRIVE avec le programme de selection sddrive.sel, la nouvelle version du contrôleur CS91-280 avec le programme de sélection sdmoto.sel et le contrôleur LEGO DACTA pour MO et TO.

Dans les versions "sdmoto_nouveau" la documentation n'est pas à jour, si vous avez des difficultés pour utiliser les nouvelles fonctions n'hésitez pas à demander de l'aide.
Daniel
L'obstacle augmente mon ardeur.
Mushussu
Messages : 16
Inscription : 19 oct. 2015 17:30

Re: lego dacta TO8

Message par Mushussu »

Merci Daniel pour ces précisions.

Je fais mon mea-culpa culpa, je pensais benoîtement que le boitier configurait lors du démarrage les directions des ports, d'où mon incompréhension. La photo m'a indiquer que c'était le portB qui était utilisé pour dialoguer avec le module Dacta.

Quand on ne connait pas un chemin, il n'est pas évident de le trouver, mais une fois emprunté il devient évident.

Le but du jeu est de passer par le Basic car je souhaiterais utiliser le crayon optique afin d'interagir avec les Lego.
Répondre