240

Donc juste pour être sûr, si j'ai 0x5d au lieu de 0x1d dans serctl, ca veut bien dire qu'à chaque fois que des données sont recues, la methode qu'on a "bindé" avec l'irq va être appelée et les donnés peuvent alors être lues sur serdat?

Comment ca fonctionne en interne? Y a une sorte de buffer, quelque chose comme ca ? Si j'envoies 10 bytes d'affilé, ca se présente comment à la réception ?

(désolé pour les accents je suis sur un clavier suédois c'est galère ^^)

Aussi, une petite questions subsidiaire... j'ai trouvé ca sur IRQ4:
IRQ 4: UART RX or TX related Doesn’t fire at timer expiration, but rather at the moment when data has arrived in receive buffer or when transmit buffer is empty.

donc quand on "installe" la function SER sur l'IRQ 4, je n'arrive pas bien à saisir... elle va être déclenché quand on lit certes mais aussi quand on écrit ?

241

SERCTL est le registre qui permet de contrôler les paramètres du port Série
Sur IODAT, tu as une info pour détecter un câble branché
La vitesse se règle dans les paramètres du TIMER n°4
Le bug sur le déclenchement de l'interruption (selon son niveau au lieu du front) fait qu'elle se déclenche en continu et qu'il faut d'abord désactiver l'interruption quand elle survient ensuite rabaisser le niveau et après la réactiver sinon elle se déclenche en boucle.

RXINTEN écrit à 1 correspond bien à l'activation du mode interruption (et donc il faut "binder")

L'interruption en réception se déclenche aussi à l'envoi, c'est un "bug" connu.

Les bits sont transmis par un registre à décalage. Pour envoyer N octets de suite tu dois prévoir que l'octet x+1 ne doit pas être transmis (dans SERDAT) tant que TXRDY n'est pas up. (le fameux masque 0x80 sur SERCTL)

L'irq 4 a un fonctionnement particulier quand elle est déclenchée par l'UART, au lieu d'être "clock defined", elle devient "bit defined" vu que c'est la fin du chargement du registre à décalage qui déclenche l'interruption. Au final au lieu d'avoir un déclenchement toutes les 1/fréquence_timer, c'est 1/fréquence_timer+cycles de travail du registre à décalage
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

242

Merci pour les infos, je m'en vais vais jouer avec tout dès possible smile

Sinon en testant IODAT, je dois donc pouvoir verifier qu'un cable est branché sur le port comlynx...?
quels bit?
b2, NoExp (input)?
b4, Audin (input)?

243

NoExp cela dit, je ne sais pas comment est détecté le truc, si c'est ce que je crois un cure dent dans la prise lui ferait détecter un câble...
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

244

De toute façon, ça n'est pas vraiment nécessaire pour détecter une déconnexion.

Si les consoles communiquent régulièrement entre elles, il suffit de détecter qu'il n'y a pas eu de données reçues pendant plus d'un certain délai (avec un timer, ou juste en comptant les VBL) pour savoir que le câble est débranché, ou que l'autre joueur a ragequit en éteignant sa Lynx, etc.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

245

oui je pensais faire quelque chose comme ca pendant le jeu, mais je me demandais si tester IODAT ne pouvait pas être utile pour essayer de demarrer une session reseau.
Genre sur l'écran de selection des joueurs, si on detecte que le comlynx est connecté alors on boucle tant qu on recoit pas de données.

246

Ça n'apporte pas grand-chose : tu peux faire tourner la réception et l'émission tout le temps, vu que s'il n'y a pas de câble branché, ça ne fera simplement rien.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

247

Zerosquare (./244) :
ou que l'autre joueur a ragequit en éteignant sa Lynx, etc.
même pas sûr, je pense que c'est juste la présence physique d'une prise sur le connecteur qui est détectée...
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

248

C'est justement ce que je dis : si tu détectes l'absence de réception de données plutôt que le fait qu'il y a un câble est branché, ça gère tous les cas (dont celui-là).
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

249

ok o k donc je commence à y voir un peu plus clair, il semblerait qu'en balancant trop de donnée sur le comlynx, on le sature et qu on perde quasiment tous les messages. La je teste envoyant un octet par second et l'autre machine semble tout recevoir... Bon après c'est avec le handy trafiqué donc à voir sur une vraie lynx... (va falloir que je trouve un comlynx du coup ^^).

petite question subsidiaire, quand vous envoyez des données, il vous fait un identifiant pour savoir qui envoies les données... commet faites vous pour obtenir un UID ou tout au moins qq chose qui s'en rapproche?

250

On tombe dans le réseau, tu as plein d'astuces, soit tu dis que c'est par ordre d'arrivée et on tourne soit tu dis que le premier est master et c'est lui qui donne la parole les uns après les autres, soit chacun attend rnd() ms et parle si le canal est libre... c'est souvent lié à ton besoin et au type de communication que tu veux
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

251

Bon ça avance et ça communique bien et vite maintenant, mais de temps en temps j'ai des messages contenant des données incorrectes (peut-être 1% des messages).
Je me posais donc la question si tu/vous faisais/-iez un checksum des données recues lors de vos expériences ?

Quand on créé un protocole, ça me semble le truc de base à faire, mais comme on parle ici d'un cable de 1m y a ptet pas de perte ?
(bon sauf que moi j'en ai en testant sur mon Handy trafiqué ^^).

252

- Quand tu dis "données incorectes", c'est quoi ? Octets manquants, dupliqués, en trop, ou corrompus ?
- Est-ce que un ou plusieurs bits d'erreur (parity, framing, overrun) sont déclenchés ?
- Tu testes entre quoi et quoi ? Handy d'un côté et une vraie console de l'autre, ou Handy des deux côtés ?
- Quelle vitesse de transmission utilises-tu ?

Sur un câble d'un mètre, le taux d'erreur est très faible, nettement moins de 1%. Et si tu testes entre deux émulateurs, il est normalement nul. Si tu as des erreurs inexpliquées, c'est un bug dans ton code et/ou dans l'émulateur/l'adaptateur matériel (suivant le cas).

Rajouter un checksum est une bonne idée dans l'absolu (surtout quand il y a beaucoup de longueur de câble), mais dans ton cas va simplement masquer un problème qui ne devrait pas exister. À ta place je chercherais la cause d'abord.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

253

Entre ta réponse et celle de nop90 sur AA (qui n'a jamais eu de perte quand il testait son jeu) ca confirme que je dois faire une petite erreur quelque part (et c'est embêtant quand 99% des messages partent et arrivent bien).

Je teste avec 2 handy de chaque côté mais le problème ne vient pas de la.
J'ai testé en 9600 baud et 65200, le problème est le même.

Au niveau des bits d'erreurs j'avoues ne pas avoir regardé...

En revanche ce matin j'ai testé rapidement d'envoyer des données prédéfinies.
Par exemple le client 1 envoie successivement a, b, c ,d, checksum 1 (soit 5 octects) tandis que le client 2 envoie e, f, g, h, checksum 2.
Dans les 2 cas le message est terminé par l'envoie d'un octet "ACK" (255).

Quand je detecte une erreur de checksum, je logge ce que j'ai recu et là, surprise...
le client 1 a recu a, f, g, h et le client 2 a recu e, b, c, d...

Donc ca ressemble furieusement au premier octet envoyé par le client qui serait non "consumé" et donc recu par ce meme client...
Pourtant mon code est exactement le même que sur le forum ou, une fois l'octet envoyé je le consume...

Une idée ? smile

254

Bizarre bizarre. Peut-être un bug dans Handy qui ne se produit que dans des circonstances bien particulières ?

Tu peux tenter de reprendre le code de Nop90 tel quel (vu que d'après lui, ça marche), et modifier petit à petit pour voir à quel moment l'erreur apparaît.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

255

Si c'est une uart, le cable est espionnable avec un adaptateur série usb standard genre ftdi.

Un coup de capture + observation devrait confirmer si les bons bits passent sur le fil, ca permettrait de mieux comprendre ou ca foire.

Si le cable est mal fichu, genre trop capacitif, ou mal blindé, ou mal soudé, les fronts du signal peuvent être abimés et mal lus par le coté récepteur. En général une uart simple va regarder l'état du signal au milieu du bit mais pas toujours.

256

D'après ce qu'il dit, ça le fait aussi avec une liaison série virtuelle entre deux émulateurs, donc c'est pas électrique.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

257

Je vais continuer à tester ce soir, ca me saoule un peu de bloquer sur un truc qui semble relativement simple, mais de l autre c'est intéressant de se prendre la tête sur un truc bas niveau, ce que j ai pas du faire depuis 15 ans au moins ^^

258

squalyl (./255) :
Si c'est une uart, le cable est espionnable avec un adaptateur série usb standard genre ftdi.

Un coup de capture + observation devrait confirmer si les bons bits passent sur le fil, ca permettrait de mieux comprendre ou ca foire.

Si le cable est mal fichu, genre trop capacitif, ou mal blindé, ou mal soudé, les fronts du signal peuvent être abimés et mal lus par le coté récepteur. En général une uart simple va regarder l'état du signal au milieu du bit mais pas toujours.
Les fréquences utilisées ne sont pas dispo sur les ftdi classiques (à part le 9200)
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

259

lordkraken (./253) :
J'ai testé en 9600 baud et 65200, le problème est le même.
Une idée ? smile

vince (./258) :
Les fréquences utilisées ne sont pas dispo sur les ftdi classiques (à part le 9200)

9600 c'est standard donc supporté par les FTDI smile
avatar
"If you see strict DRM and copy protection that threatens the preservation of history, fight it: copy the work, keep it safe, and eventually share it so it never disappears. [...] no one living 500 years from now will judge your infringing deeds harshly when they can load up an ancient program and see it for themselves."

Benj Edwards - Why History Needs Software Piracy

- - -
Achat ou échange: topic de mes recherches Meilleur smiley = #helico# Obligatory XKCD

260

ftdi supporte pas mal de trucs non standard justement.

261

Vince > normalement si (même 62500 bps), faut juste un soft de terminal qui te laisse taper la vitesse plutôt que de choisir dans une liste.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

262

Bonjour,
Serait-il possible de faire communiquer une Lynx avec cet adapter et une Jaguar possédant une CatBox qui a aussi un port RS232?
Merci.

263

A priori rien ne l'interdit, mais il faudrait développer un jeu qui l'utilise...
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

264

Je pensais d'avantage a un test, un bout d'essai technique. Je n'ai pas de projet de jeu pour l'utiliser.
A toute fin utile, est ce que l'interface pour Lynx est déjà disponible a la vente?

265

dilinger (./262) :
Bonjour,
Serait-il possible de faire communiquer une Lynx avec cet adapter et une Jaguar possédant une CatBox qui a aussi un port RS232?
Merci.
Je n'ai jamais testé mais ça devrait marcher. Attention à quelques pièges :

- le port série de la Jaguar est bugué en réception. Mais on peut contourner le problème (le code d'exemple nécessite que le bit de parité soit toujours à 1, donc il faut configurer la Lynx en conséquence) :
A Workaround For The Uart BugJagware Here's a little idea I had to circumvent the Jaguar's UART bug.   The ZIP file contains a detailed description and a demo program (the source code is inc...


- la fréquence de base n'est pas la même sur les deux consoles, et elles ne sont pas multiples entre elles. Donc tu peux potentiellement avoir des problèmes pour trouver un débit qui tombe suffisamment juste à la fois pour la Jaguar et pour la Lynx ; mais ça ne concerne que les vitesses assez élevées, à 9600 bps ça devrait fonctionner.

- normalement la Jaguar ne reçoit pas les données qu'elle émet elle-même. Mais si tu la branches sur une Lynx, elle va les recevoir, vu qu'il n'y qu'un seul fil pour émission et réception. Il faut en tenir compte dans le code côté Jaguar (donc si tu utilises l'exemple du lien tel quel, ça va faire une boucle infinie).

dilinger (./264) :
A toute fin utile, est ce que l'interface pour Lynx est déjà disponible a la vente?
Vince en avait fabriqué quelques exemplaires il y a longtemps, je ne sais pas s'il en a encore...
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

266

Merci pour ces pertinentes informations. Je crois me souvenir que la longueur du câble peut aussi limiter le débit.
Bon, ben, avant de plonger dans le grand bain. Je vais déjà prendre le temps de faire communiquer la Jaguar / Catbox et un PC avec un câble null-modem.

267

Note : si tu utilises les interruptions pour le port série coté lynx (fortement recommandé) il faut prendre en compte un bug matériel (documenté); tu dois rabaisser le buffer "octet reçu" à la main dans le code de l'interruption vu qu'elle se déclenche sur l'état au lieu de se déclencher sur le front...

Zerosquare (./265) :

dilinger (./264) :
A toute fin utile, est ce que l'interface pour Lynx est déjà disponible a la vente?
Vince en avait fabriqué quelques exemplaires il y a longtemps, je ne sais pas s'il en a encore...
J'avais fabriqué juste le nombre de commandes.
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

268

Je sais pas si ça servira à quelqu'un d'autre, mais à tout hasard, j'ai fait un portage Windows de l'uploader BLL de Bastian Schick :
tromb Send_obj version Win32
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo