[Restauration] - Boot du Tavernier 6809

Discussions sur les anciens ordis souvent ludiques et familiaux (Amstrad, Atari, Amiga, ...).

Modérateurs : Membres WDA, Modérateurs complets

leduigou
Membre adhérent WDA
Messages : 86
Enregistré le : 06 janv. 2010, 08:34
Collectionneur (-euse) ? : Oui
Localisation : Paris

[Restauration] - Boot du Tavernier 6809

Message non lu par leduigou » 16 janv. 2013, 15:30

Bonjour,
Je suis actuellement en Chine et j'ai un peu de temps pour bricoler entre mon travail et les plats de Noodles Shanghai Style. Je me suis donc mis à chercher pourquoi mon magnifique Tavernier 6809 refuse de démarrer. Voici en résumé ce qui s'est passé.
Tavernier6809.jpg
Tavernier 6809 en cours de restauration
Tavernier6809.jpg (16.93 Kio) Vu 5199 fois
Acheté en 2010 sur eBay, mon Tavernier 6809 a un bon look, mais deux disquettes sont restés dans les lecteurs de floppy depuis … longtemps!
Je n'avais pas eu le temps de m'en occuper sur le moment, j'ai donc simplement pris quelques photos des cartes et j'ai dumpé la ROM. Là, j'ai fait une grosse erreur: J'ai considéré que j'avais une EPROM 2Ko! En fait, c'était une 4Ko! :censored:
Fin d'année 2012, je me mets à regarder de plus prêt: L'alimentation est OK, je met la carte CPU, mais rien ne se passe … L'EPROM est morte!
Pièce jointe Mail.jpeg
Carte CPU09
J'avais contacté sur internet des personnes ayant la documentation du Tavernier provenant du Haut Parleur, et je ne reconnaissait pas mes petits. Il semble comme on me l'a expliqué que la société SIE (Saint Ignan Electronique) ait décidé d'améliorer seule les cartes du Tavernier sans accord du HP et/ou de Christian Tavernier et donc de faire des cartes différentes avec une EPROM différente, tout en gardant le même nom aux cartes. Je ne sais pas si l'histoire s'est terminée au tribunal, mais en tout cas, mon Tavernier n'est pas conforme aux plans publiés dans le HP!
Les principales différences sont: Mémoire intégrée à la carte mère, implantation des composants différents, Contrôleur de disquette de la famille WD2795 au lieu du WD1795.
Heureusement que la personne qui m'a transmis la documentation du HP et qui avait un Tavernier m'a envoyé un dump de son système: Le TAVBUG.
J'ai programmé une 2732 et j'ai essayé la carte mère CPU09: Super :P . La carte fonctionne parfaitement avec une terminal série RS232. J'ai aussi testé le carte graphique IVG09: Elle marche aussi, mais n'ayant pas encore fait un câble clavier, je continue à utiliser le terminal série.
TAVBUG.jpg
Invite du TAVBUG
J'avais oublié de dire que j'avais localisé les jumpers sur ma carte CPU09 en faisant du fil à fil par rapport au plan du HP.
C'est ici que commencent les vrais problèmes: les disquettes que j'avais récupérées par le programme de lump du HxC2000 et corrigées à la main ne bootent pas. J'ai pourtant vérifié sur mon Vegas 6809 qu'elles sont bonnes. ::?:
D'après la personne qui possède un Tavernier et qui m'a donné le dump de l'EPROM, le système est appairé avec la disquette. Je me suis donc lancé dans le dé-assemblage du TAVBOG et la comparaison avec le bout de PROMON que j'avais récupéré.
La structure du TAVDOS est très compliquée. Il est programmé en code 6809 entièrement relogeable, avec une utilisation des interruptions SWI pour les commandes de base des E/S. Cela rend le travail assez fastidieux.
J'ai donc copié le TAVDOS sur une disquette virtuelle dans mon émulateur FLEXEMU. J'ai chargé le programme à une adresse quelconque ($7000) et je l'ai sauvegardé. Cela permet de créer tous les codes de chargement des programmes binaires dans le fichier. J'ai en suite fait tourné DYNAMITE, le désassembler sous FLEX. Il faut en suite changer l'adresse de base avec la directive ORG $7000 à la place de $F000 car j'avais chargé le programme en $7000. En effet, une EPROM n'ayant pas de code de chargement, il faut le lui rajouter sinon le désassembler ne sais pas à quelle adresse doit se charger le programme.
On assemble avec l'assembleur ASMB puis on re-déassemble avec DYNAMITE.
Maintenant le programme est bien positionné et les labels de sauts sont positionnés aux bonnes adresses. Sauf que certains codes ne sont pas bien interprétés. Par exemple, après un SWI, on trouve un code FCB $03. Mais le désassembleur ne sait pas que l'octet qui suit le SWI est un paramètre donné à l'interruption, et l'interprète comme un COM avec adressage direct (Complémentation logique)… il y a donc plein d'erreurs !
Là commence un travail fastidieux pour dénouer l'écheveau du programme en assembleur.
Il faut suivre le cheminement de l'exécution du programme pas à pas, sachant qu'au reset le programme commence à l'instruction pointée par les registres $FFFE et $FFFF.
On identifie au fur et à mesure les adresses connues du FLEX ou des E/S qui sont indiquées dans les articles du HP:
*
* Plan de la mémoire du Tavernier 6809
*
*
*
* Page Commune
* $FFFF Fin de la ROM
* $F000 Début de la ROM
* $EFFF Fin Mémoire système
* $EC00 Début Mémoire système
* $EBFF Fin zone Périphériques
* $EB0C Timer
* $EBOB Timer
* $EB0A Timer
* $EBO9 Timer
* $EB08 Timer
* $EBO5 ACIA
* $EBO4 ACIA
* $EBO3 PIA
* $EBO2 PIA
* $EBO1 PIA
* $EBO0 PIA
* $EAFF Fin zone libre
* $E080 Registre sélection lecteur
* $E003 Contrôleur disquettes
* $E002 Contrôleur disquettes
* $E001 Contrôleur disquettes
* $E000 Contrôleur disquettes
* Page 0 ---------------- Page 1 ----- Page 2 ----- Page 3 -----
* $DFFF Fin Périphériques $DFFF $DFFF $DFFF Fin RAM
* $2FFF Fin IVG + PIA " " "
* $2081 CRT " " "
* $2080 CRT " " "
* $1FFF Fin RAM Vidéo " " "
* $1000 Début RAM Vidéo " " "
* $0000 Vide $0000 $0000 $0000 Début RAM
*
*
*
* STANDARD PRE-NAMED LABEL EQUATES

CMDADR EQU $C100
CMDEND EQU $C700
WARMS EQU $CD03

Après quelques jours de chasse au trésor, voici ce que j'ai obtenu quand à la routine appelée par la commande de chargement de la disquette:

********************************************************
* Commande X: Chargement et lancement DOS
********************************************************
LFC9E NOP
NOP
LDB #$FE Met %11111110
STB LE080 dans le registre lecteur (lecteur 0)
LDX #L0000 Tempo
LFCA8 LEAX -1,X
BNE LFCA8 Loop
LDB #$0C Commande Restore
STB LE000 Applique commande
BSR LFD01 Tempo
LDX #LFFFF Tempo longue
LFCB6 LEAX -1,X
LBEQ LFD64 Loop
BSR LFD01 Tempo
LDB LE000 Charge WD Status
BITB #1 Test Busy
BNE LFCB6 Loop pour attendre
LDA #1
STA LE002
BSR LFD01
LDB #$8C Charge commande Read Sector $8C
STB LE000 Applique commande
BSR LFD01 Tempo
LDX #CMDADR Charge la destination du boot
LFCD6 BITB #2 Donnée prête ?
BEQ LFCDF Non, saute
LDA LE003 Charge la donnée
STA 0,X+ store dans buffer
LFCDF LDB LE000 Charge WD Status
BITB #1 Test Busy
BNE LFCD6 Loop
ANDB #$1C Test error
BNE LFD64 Oui, Message d'erreur
CLRA
TFR A,DP Mise à $00 du DP
*
* Vérification version appairée
*
LDD LC1F5 Charge le contenu de $C1F5
CMPD LFDEF Compare à $5056
BEQ LFCFE OK, démarre ...
LDX #L0000
CLRA
LFCFA STA 0,X+ Efface tout
BRA LFCFA Loop
LFCFE JMP CMDADR
*Tempo
LFD01 BSR LFD03
LFD03 RTS
NOP
NOP
NOP

On voit ici que après le chargement du secteur de boot, le programme va:
- Ré-initialiser le registre d Page Directe DP=$00;
- Tester le contenu du registre 16 bits $C1F5 en le comparant au contenu du registre 16 bits placé en $FDEF qui est égal à $5056.
- Si égal, on saute a l'adresse de chargement du secteur de boot;
- Sinon, on écrase en boucle toute la mémoire de l'ordinateur par $00.

Et voilà, j'ai mon explication! Mon secteur de boot (déassemblé par la même méthode) montre que mon registre DP = $00 (au lieu de $E0) et je n'ai pas $5056 en $C1F5. Aucune chance que ça ne marche! :mrgreen:

J'ai donc modifié mon secteur de boot en conséquence, mais je vous épargnerais la manoeuvre …
Pour ceux que ce type d'opération intéresse sur du 6809 et qui désirent de l'aide, n'hésitez pas à me contacter …
Bien que ce post soit un peu technique, merci de m'indiquer s'il n'est pas assez clair et s'il doit être amélioré (quand j'ai la tête dans le guidon …)
Modifié en dernier par leduigou le 19 janv. 2013, 13:27, modifié 3 fois.
Cordialement
Frédéric

Avatar du membre
Krapoutchik
Bureau WDA
Bureau WDA
Messages : 923
Enregistré le : 01 juil. 2009, 08:00
Collectionneur (-euse) ? : Oui
Localisation : Paris

Re: [Restauration] - Boot du Tavernier 6809

Message non lu par Krapoutchik » 16 janv. 2013, 22:42

Alors là... j'ai déjà été étonné par la compétence de certain mais là C H A P E A U :respect: :clap: :clap: :clap:

Les Noodles Shanghai Style ça boost !!

En tout cas tu es le premier et le seul à découvrir et corriger un plombage sur une de nos vieilles babasses.
Grosso modo la société SIE s'est appropriée le travail de Tavernier et a modifié le bios et la disquette de boot pour que les gens soient obligés de se fournir chez eux, en bref ils ont fabriqué un Tavernier incompatible avec le vrai Tavernier.

Bon en tous cas, tu m'as donné très largement matière à réflexion ::wink: .

BRAVO !!! :best:

Ps : Ramène nous la recette des Noodles Shanghai Style :mrgreen: .
Pps : Tu as réparé ton Willem ?
Tektronix 454A, Atten ADS 1102CAL Powa !!
Born to bricole
[Rch] Vieux composants électroniques et circuits intégrés toute époque et vieilles cartes à microprocesseur
Ma petite collection...
Tutoriel pour insérer des photos...

leduigou
Membre adhérent WDA
Messages : 86
Enregistré le : 06 janv. 2010, 08:34
Collectionneur (-euse) ? : Oui
Localisation : Paris

Re: [Restauration] - Boot du Tavernier 6809

Message non lu par leduigou » 17 janv. 2013, 00:08

Bonjour,

Juste une remarque: c'est l'EPROM originale de Christian Tavernier que j'ai déassemblée et qui est protégée: la TAVBUG.
SIE a fait un système légèrement différent (des commandes de débuggage en moins et un système de boot sur le premier drive présent): le PROMON. Je n'ai pas entièrement déassemblé le PROMON mais il est pompé à 80% sur le TAVBUG, la protection en moins :D

A+
Cordialement
Frédéric

leduigou
Membre adhérent WDA
Messages : 86
Enregistré le : 06 janv. 2010, 08:34
Collectionneur (-euse) ? : Oui
Localisation : Paris

Re: [Restauration] - Boot du Tavernier 6809

Message non lu par leduigou » 11 févr. 2013, 22:50

C'est fait, ça marche :D
Maintenant, il me faut faire fonctionner la carte graphique car à 1200 bauds. Le fonctionnement avec un terminal est très pénible, c'est très lent alors que le 6809 est très rapide ...
IMG_0726.jpg
Catalog du Tavernier
Il me faut aussi modifier la commande de formatage pour que le bon secteur boot soit inséré à chaque formatage.
Et il y a des caractères bizares qui apparaissent au démarrage, avec le nom du propriétaire (je suppose). Je vais devoir faire du nettoyage ...
Cordialement
Frédéric

marcopolo
Messages : 8
Enregistré le : 26 janv. 2013, 20:20
Collectionneur (-euse) ? : Oui
Localisation : NANCY

Re: [Restauration] - Boot du Tavernier 6809

Message non lu par marcopolo » 12 févr. 2013, 08:48

Super !

Et un petit patch pour modifier la config du 6840 et passer à 9600 bauds ?
Je sais bien que la fréquence du quartz choisi par Tavernier n'est pas idéale mais ça devrait aller.
Sinon, un petit upgrade de 4Mhz -> 4.9152 Mhz arrangera bien les choses (mais peut être pas pour le FDC)

Marc.

EDIT : Teraterm pour remplacer Hyperterminal, c'est pas mal :icon_smile:
Je recherche un programmeur DATA I/O Unisite
Et aussi tout ce qui est ici : http://www.retronik.fr/marc/Annonces/Recherches.html

Répondre

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité