MSX Village forum

L'atelier [EN COURS] RS232 "TX" pour tous. Produire le signal [TX] du RS232 sur le port Joyestic 2.

Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1482

Le 19/02/2018 à 20h57

Reprise du message précédent

Oui pour la première valeur en ligne 260, changer $FB27 par $C032.

Mais pour la deuxième je suis perplexe ...
C'est une adresse qui n'est pas lue par la routine, et elle est localisée dans un champ de variables pour la commande PLAY ...
A mon avis, il doit y avoir une erreur.


MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
   
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1482

Le 19/02/2018 à 21h50
Je crois avoir compris, je regarde ça demain matin.


MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
   
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1482

Le 20/02/2018 à 15h34
C'est très étrange ... Cette routine comporte deux parties, quasi identiques, et non connectées.
Comme si on avait cloné la routine principale, juste derrière.

Et je ne vois aucune lecture de l'adresse $F96D, donc je ne vois vraiment pas comment elle pourrait influencer le programme. Et ce n'est pas le hook principal qui l'utilise, puisque celui-ci est shunté en sortie de routine (par altération du stack).

Tu peux me dire si elle fonctionne déjà comme ça ?


MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
   
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5481

Le 20/02/2018 à 16h40
je vais tester en attendant je recopie ici des infos qui se trouvent sur un autre site :

"DESCRIPTION

This program allows you to send your code listing serially through the joystick port of MSX computers by intercepting the LPRINT instruction from the BASIC interpreter.
The data is bitbanged in accordance with RS232 standard and it is possible to use speeds from 1200 to 19200 bauds.
The program is written in Z80 assembly and takes only 75 bytes including the binary file header and the hook code installer. The bitbang code itself takes only 44 bytes.
It can be connected directly to an USB-to-serial dongle, but the connection with a standard RS232 port can be done by a MAX232 or a single transistor voltage level converter.
DETAILS

The BASIC interpreter of MSX computers was designed to allow the expansion of many of its functionalities by using hooks, which are addresses called from strategic locations within the BIOS. Each hook code takes 5 RAM addresses that are initialized with Z80 RET instrucions. Then to expand a given function it is necessary to replace the RET instructions by a CALL to the address where the expansion code is located.

The HLPT is located at address 0xFFB6 and it is called by the LPTOUT function which is the standard routine to output a character to the line printer via the Centronics Port. Any instruction of the BASIC interpreter that uses the printer make a call to the LPTOUT function and hence make a call to the HLPT hook.

The Joy232 code is straightforward. The first time it runs it replaces the RET instructions on the HLPT hook by a CALL to the address of memory where the serial transmission is performed. After the hook code is installed any character sent to the printer will be sent serially to one pin of the joystick port.

The bitbang code concatenates a bit sequence composed by the start bit, the data bits and the stop bit into a 16 bit register. Next each bit is transmitted until 10 bits have passed. After the last bit is sent the routine ends and the control returns to the BIOS.

The baudrate can be controlled by changing the value BAUD either on compilation time or by a poke (after the hook code is already installed). The lowest baudrates allow some tolerance on such value which is indeed used in a delay loop.

The program can be loaded on the MSX machine as a binary (using BLOAD instruction) or can be typed in from a BASIC prompt.



Il y a aussi un schéma que je ne peux pas copier ici.
va voir sur cette page : https://hackaday.io/project/18552-joy232

Ca dit que le code est copié to unused RS232 queue


banniere-ericb59e
Site web    
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1482

Le 20/02/2018 à 21h10
J'avais déjà déduit ces infos en parcourant le code :)

Essaie de le faire fonctionner en changeant le poke de paramétrage "baud" à $C01F.
Pour la parité, j'ai beau regarder, je ne comprends pas.


MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
   
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5481

Le 21/02/2018 à 19h30
J'ai fait des essais, sans resultat.
Mais je saurais dire sy c'est à cause du programme ou du montage pour le moment


banniere-ericb59e
Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10316

Le 22/02/2018 à 15h16
pour &HFAF5 dans les variables systémes je trouve :
RS2IQ 64 octets pour queue d'entrée pour la RS232 dans pratique du MSX2
donc les 63 octets sont bien a leur place
c'est plutôt l'implantation du programme en ram au départ qui est mal choisie
je regarde pour décaler


:noel
Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10316

Le 22/02/2018 à 15h25
mince ça a été changé dans les MSX2 , il faut bien implanter la routine ailleurs genre dans la queue musicale
Citation :
FOR MSX 2 ONLY
FAF5 DPPAGE Display page number
FAF6 ACPAGE active page number
FAF7 AVCSAV Reserves AV control port
FAF8 EXBRSA SUB_ROM slot address
FAF9 CHRCNT Character counter in the buffer;
used in Roman-Kana translation
FAFA ROMA Area to store character (Japan version only)
FAFC MODE mode svitch for VRAM size
FAFD NORUSE unused
FAFE XSAVE [10000000 XXXXXXXX]
FB00 YSAVE [*0000000 YYYYYYYY] *-light pen interrupt request
FB02 LOGOPR Logical operation code
Data area used by RS-232C or disk drive


:noel
Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10316

Le 22/02/2018 à 17h15
voila j'ai fait une version qui tourne mais pas testé avec le PC
juste mis une LED entre 5 et 6 avec une résistance de 2.2k en série pour voir les données
232c000.zip
il faut faire un BLOAD "232C000.BIN,R"
ensuite initialiser la vitesse en BAUD en pokant l'adresse &HF9A7
POKE &HF9A7,value
Baudrate value
1200 170
2400 83
4800 39
9600 17
14400 10
19200 6
charger la valeur pour la parité a l'adresse &HF96D
To use parity
POKE &HF96D,value
Parity value
NONE 0 (or 1)
EVEN 2
ODD 3
ensuite il ne reste plus qu'a faire un LPRINT"test de la rs232 pour voir la led flasher"


:noel
Site web    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5481

Le 22/02/2018 à 17h28
oh oh ! super jipe est de retour ! :-)
Grand Merci jipe,
je vais tester ça aussi vite que possible ... Edité par ericb59 Le 22/02/2018 à 17h59


banniere-ericb59e
Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10316

Le 22/02/2018 à 18h48
désolé mais il y a des jours ou je bosse et pas trop le temps de mettre le nez dans le MSX ou le PC


:noel
Site web    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5481

Le 22/02/2018 à 20h36
JIPEMSX :
désolé mais il y a des jours ou je bosse et pas trop le temps de mettre le nez dans le MSX ou le PC


Bien sur ... je sais bien ! ;)

En tout cas mervi à Metalion et jipe car si ca fonctionne comme je le souhaite, ca va ouvrir des perspectives !


banniere-ericb59e
Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10316

Le 23/02/2018 à 14h44
attention avec cette routine , elle est implantée dans la zone variables systémes qui sert a la queue musicale pour la voie A
donc un simple PLAY"ABC" devrait réécrire dessus et planter la com RS232
on peut décaler le programme avant &HD800 en réservant une zone mémoire par un CLEAR 200,&HD7FF
mais il faut réécrire les adresses de la partie machine


:noel
Site web    
TurboSEB Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 08/08/2010 à 20h57

Messages: 5788

Le 23/02/2018 à 14h56
P'tet alors que si le code du programme est en "double", c'est que il y'a une "copie de sauvegarde" et une "copie de travail" du code :heink Edité par TurboSEB Le 23/02/2018 à 14h58



MSX 1&2 + Moniteurs+divers (environ 0.70Tonnes)
   
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10316

Le 23/02/2018 à 15h19
le code n'est pas en double , il est chargé dans une adresse et transféré ensuite a son emplacement par une routine machine


:noel
Site web    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5481

Le 23/02/2018 à 15h26
On va laisser comme ça le temps que je puisse tester. et si ça fonctionne il faudra sans doute modifier son emplacement.

L'intérêt majeur que je vois dans ce hack c'est de pouvoir contrôler tout un tas de petits périphériques notamment fait pour arduino, qui se controlent via des commandes envoyées sur un port UART TTL (RS232 en TTL)
Je pense à des synthèses vocales, player mp3, player Wav, etc ....


banniere-ericb59e
Site web    
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie