[MPF-I] Echanges libres sur les tutos

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

Zebulon
Messages : 2787
Inscription : 02 nov. 2020 14:03

Re: [MPF-I] Echanges libres sur les tutos

Message par Zebulon »

Le format de sauvegarde du MPF-1 possède un checksum du fichier dans l'entête. :wink:
Avatar de l’utilisateur
fneck
Site Admin
Messages : 17423
Inscription : 01 avr. 2007 12:03
Localisation : Drôme Provençale (26)
Contact :

Re: [MPF-I] Echanges libres sur les tutos

Message par fneck »

gotcha a écrit : 25 sept. 2022 11:41 Du coup, ce code est fait pour être mis dans l'EPROM U7 à l'adresse 2000h et pas autre part !
On ne peut donc pas le charger en RAM à l'adresse 1800h.
D'accord. Effectivement moi je l'ai exécuté depuis la ROM en mettant le pointeur de programme sur 2000h.

On ne peut pas lors de la lecture depuis la cassette (ou ton interface série) choisir l'adresse de départ du programme à charger?
Fabien https://www.system-cfg.com
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3
Zebulon
Messages : 2787
Inscription : 02 nov. 2020 14:03

Re: [MPF-I] Echanges libres sur les tutos

Message par Zebulon »

Lors d'une sauvegarde le moniteur du MPF-1 enregistre dans l'entête du fichier le nom logique de fichier, l'adresse de départ et l'adresse de fin ainsi qu'un checksum.

Lors d'un chargement, le moniteur ne demande que le nom logique et il implantera le fichier aux mêmes adresses que celles de la sauvegarde.

Il est possible de créer du code relogeable mais en bannissant toute instruction faisant référence à une adresse absolue au sein de la plage de code que l'on souhaite pouvoir reloger. Bien sûr les appels aux fonctions du moniteur doivent être spécifiés de manière absolue. Donc si tout est adressé de manière relative oui ce serait possible de charger à une autre adresse. Sinon il faut faire des manipulations sur le code.
Avatar de l’utilisateur
fneck
Site Admin
Messages : 17423
Inscription : 01 avr. 2007 12:03
Localisation : Drôme Provençale (26)
Contact :

Re: [MPF-I] Echanges libres sur les tutos

Message par fneck »

Oui bien sûr. Comme le moniteur demande les adresses de départ et de fin lors de l'enregistrement, c'est assez logique qu'il l'utilise celles-ci lors de la lecture. Donc ça voudrait aussi dire que si tu utilises un générateur de WAV il serait possible de modifier cette adresse avec le programme générateur.
Fabien https://www.system-cfg.com
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3
Notator
Messages : 1286
Inscription : 09 août 2015 20:13

Re: [MPF-I] Echanges libres sur les tutos

Message par Notator »

gleike a écrit : 25 sept. 2022 18:04
Notator a écrit : 22 sept. 2022 14:32 Idéalement, il faudrait se débrouiller pour garder intact le contenu de la RAM entre les séances, afin de n'avoir pas à répéter les opérations fastidieuses de chargement et de sauvegarde à chaque séance.
Un petit montage dans ce genre pourrait être tenté,
Deux diodes schottky, un condo, une résistance, une pile CR2032, un inter.
Image
On bascule l'inter avant d'éteindre, on le re-bascule après l'allumage et Hop :wink:
D'après le Datasheet des HM6116LP-3 celles-ci ne consomment que 30µA en veille ( /CS au niveau haut)
et se contentent de 2V minimum.
Oui, c'est une des trois solutions que j'évoquais plus haut.

Dans les solutions par piles, il est aussi possible de reproduire le système utilisé pour le MPF-1P :

MPF-1P sauvegarde.png
MPF-1P sauvegarde.png (36.09 Kio) Consulté 2497 fois

Le derrière du MPF-1P :

MPF-1P dos.png
MPF-1P dos.png (478.71 Kio) Consulté 2484 fois
Notator est le nom d'un programme séquenceur Midi et notation musicale pour Atari ST(e) (puis Mac).
Zebulon
Messages : 2787
Inscription : 02 nov. 2020 14:03

Re: [MPF-I] Echanges libres sur les tutos

Message par Zebulon »

On pourrait en effet modifier cette adresse de chargement mais le programme ne fonctionnerait plus car il continuerait d'appeler des sous-routines dans la plage d'adresse 2000h alors qu'elles seraient chargées dans la plage d'adresse 1800h.

Comme le disait Gotcha il faudrait en même temps modifier toutes les adresses absolues indiquées dans le code (appels de sous-routines, pointeurs vers des données, etc) pour leur retrancher 200h.
Avatar de l’utilisateur
fneck
Site Admin
Messages : 17423
Inscription : 01 avr. 2007 12:03
Localisation : Drôme Provençale (26)
Contact :

Re: [MPF-I] Echanges libres sur les tutos

Message par fneck »

En fait je me suis mal exprimé, je voulais dire qu'en créant un WAV, il suffirait de lui dire de se charger en 2000h pour que cela fonctionne. Bien entendu il faut avoir la deuxième RAM en U7.
Fabien https://www.system-cfg.com
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3
Zebulon
Messages : 2787
Inscription : 02 nov. 2020 14:03

Re: [MPF-I] Echanges libres sur les tutos

Message par Zebulon »

Oui d'accord. J'y travaille mais mon code est truffé de bugs... il avait fonctionné "par chance" sur le petit fichier de test mais là j'ai une erreur en fin de chargement. Je pense qu'il y a un problème sur le calcul du checksum et la longueur du fichier, en fait ma boucle "while !eof" est foireuse, elle va une itération trop loin et j'embarque le -1 du EOF. Bref je n'avais pas codé "sérieusement" depuis... 20 ans ? :wink:
gotcha
Messages : 2758
Inscription : 30 mars 2017 11:39
Localisation : Isère
Contact :

Re: [MPF-I] Echanges libres sur les tutos

Message par gotcha »

De mon coté, le HEX-1BP patché pour une liaison TTL que j'utilise me permet de charger les programmes en format Intel Hex en RAM.
Dans un fichier Intel Hex, il peut y avoir l'adresse de chargement. Mais comme souvent on convertit un .bin en .hex sans donner l'adresse de début, il faut spécifier un 'offset' au moment du chargement sur le MPF-1, ce que HEX-1BP permet de faire (valeur qui sera ajoutée à l'adresse spécifiée dans le fichier .hex).

Maintenant que je peux charger en RAM, j'ai assemblé mon loader amélioré pour le placer en RAM (1800h), mais j'ai un comportement très bizarre du MPF-1. Il décide se s’arrêter sur une adresse RAM où il y a une instruction valide, sans raison apparente. Ensuite, l’exécution pas à pas 'Step' marche bien, mais pas la commande 'Go'. Il y a un truc qui m'échappe ...

Du coup, je vais faire des plus petits pas en essayant simplement de charger le code original de HEX-1BP (sans modifs) réassemblé pour être placé en 1800h et voir si ça marche ou pas. Je vais aussi lire un peu la doc que MPF-1 car on ne peut peut-être pas faire tout ce qu'on veut avec la RAM. Je crois aussi avoir vu passer un programme de vérification de la RAM. Ça peut valoir le coup de vérifier que le hardware est bon aussi.

Une petite photos du debug d'hier (bug du convertisseur USB-Serie TTL):

Debug de HEX-1BP
Debug de HEX-1BP
IMAG2255_ret.jpg (169.91 Kio) Consulté 2448 fois
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)
Avatar de l’utilisateur
jeffounet
Messages : 1563
Inscription : 25 janv. 2020 06:59
Localisation : Les Angles (30)

Re: [MPF-I] Echanges libres sur les tutos

Message par jeffounet »

Bonjour à tous,

@Gotcha
Si tu parles du programme de test que j'ai posté avec les docs il est fait pour un Z80 de façon générale, il n'est pas spécifique au MPF-I.
Par contre tu dois pouvoir l'adapter sans trop de problème.

Bonne journée

Jean-François
Il n'y a que 11 sortes de gens, ceux qui comprennent ceux qui ne comprennent pas et ceux qui me font répéter!
Jean-François
Avatar de l’utilisateur
jeffounet
Messages : 1563
Inscription : 25 janv. 2020 06:59
Localisation : Les Angles (30)

Re: [MPF-I] Echanges libres sur les tutos

Message par jeffounet »

Bonjour à tous,

Pour les bricoleurs du dimanche et autres...
Un générateur de fichier pour MPF à partir d'un Arduino (je ne l'ai pas testé)
MPF_1_TapeFileGen.rar
(584.63 Kio) Téléchargé 45 fois
Et un autre système de chargement des données: (non testé aussi)
MPF-2-Loader-master.zip
(1.49 Mio) Téléchargé 51 fois
Programming the MPF-1 with W10.rar
(232.85 Kio) Téléchargé 52 fois
Voilà de quoi s'ammuser.

Bonne journée

Jean-François
Il n'y a que 11 sortes de gens, ceux qui comprennent ceux qui ne comprennent pas et ceux qui me font répéter!
Jean-François
Avatar de l’utilisateur
meridian
Messages : 1226
Inscription : 01 sept. 2014 13:10
Localisation : Seine-Saint-Denis

Re: [MPF-I] Echanges libres sur les tutos

Message par meridian »

Merci Jean-François.

Par contre je ne peux pas dl le dernier, l'anti-virus me dit qu'il y a HEUR:Trojan.MSOffice.Badur.gena
Avatar de l’utilisateur
fneck
Site Admin
Messages : 17423
Inscription : 01 avr. 2007 12:03
Localisation : Drôme Provençale (26)
Contact :

Re: [MPF-I] Echanges libres sur les tutos

Message par fneck »

Tu peux le télécharger, par contre c'est le fichier .docx qui est dans l'archive qui pose problème, non ?

[edit] Pas d'alerte de mon côté.
Fabien https://www.system-cfg.com
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3
Avatar de l’utilisateur
meridian
Messages : 1226
Inscription : 01 sept. 2014 13:10
Localisation : Seine-Saint-Denis

Re: [MPF-I] Echanges libres sur les tutos

Message par meridian »

Je suppose d'après le nom du trojan que c'est bien le docx.
Je vais essayer sur un autre PC qui a un anti-virus différent. Là c'était Kapersky. J'ai ESET NOD32 sur d'autres.
gotcha
Messages : 2758
Inscription : 30 mars 2017 11:39
Localisation : Isère
Contact :

Re: [MPF-I] Echanges libres sur les tutos

Message par gotcha »

gotcha a écrit : 26 sept. 2022 09:32 Du coup, je vais faire des plus petits pas en essayant simplement de charger le code original de HEX-1BP (sans modifs) réassemblé pour être placé en 1800h et voir si ça marche ou pas.
Bon, j'ai réassemblé le HEX-1BP original pour être chargé en RAM (1800h) et il marche bien. Le problème avec mon programme modifié doit donc venir d'un bug de ma part. Il ne reste plus qu'à chercher ...

Pour assembler sur PC et charger dans la RAM du MPF-1, c'est assez simple. J'utilise (sous Linux):
  • z80asm pour créer un .bin à partir du .asm
  • objcopy pour convertir le .bin en fichier Intel Hex avec la bonne adresse de chargement.
Par exemple:

Code : Tout sélectionner

z80asm HEX-1BP-RS232.asm -l --output HEX-1BP-RS232.bin 2> HEX-1BP-RS232.listing
objcopy -I binary HEX-1BP-RS232.bin -O ihex HEX-1BP-RS232.hex --change-addresses 0x1800
Ensuite, je charge sur MPF-1 avec HEX-1BP sans avoir besoin de spécifier un offset.
J'envoie le fichier .hex depuis le PC par liaison série avec Teraterm (sous Windows pour l'instant) en 2400 bauds, 7 bits, even parity, 1 bit stop
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)
Répondre