HP-IL: communication entre 2 pockets HP

Ici, on fait dans le petit, le LCD qui déchire sa race, on y cause même calculatrices quand on est en manque !

Modérateur : Politburo

Avatar de l’utilisateur
pcscote
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 99
Inscription : 11 juil. 2018 01:06
Localisation : Au nord de Montréal (QC/CA)

Re: HP-IL: communication entre 2 pockets HP

Message par pcscote » 21 janv. 2022 23:58

En utilisant la commande SEND on peut envoyer la requête "MEM" aux deux HP-71B simultanément:

Code : Tout sélectionner

SEND UNT UNL LISTEN 2,4 MTA DATA "MEM"&CHR$(13)&CHR$(10) UNT UNL

Code : Tout sélectionner

UNT                           → untalk
UNL                           → unlisten
LISTEN 2,4                    → configure les deux HP-71B "device" en mode listener
MTA                           → my talker address → le contrôleur devient le talker
DATA "MEM"&CHR$(13)&CHR$(10)  → envoie la commande "MEM[CR][LF]" aux listeners
UNT                           → untalk
UNL                           → unlisten

Avatar de l’utilisateur
Danny
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 969
Inscription : 28 déc. 2013 17:34

Re: HP-IL: communication entre 2 pockets HP

Message par Danny » 22 janv. 2022 01:02

Impressionnant ! :o

J'ai des questions :
pcscote a écrit :
21 janv. 2022 23:16
La commande OUTPUT :HP71;"MEM" est envoyée à la première unité trouvé seulement.
La commande OUTPUT "HP71";"MEM" est envoyée à la première unité trouvé seulement.
:arrow: du coup tu confirmes que ces 2 commandes ont le même effet ?


Pour le détail des trames de OUTPUT :HP71;"MEM", si j'ai bien compris le début, comme le 82161A ne supporte pas le "Send Device ID" il passe la commande au device suivant, qui est un HP-71B donc celui-ci répond avec son Device ID qui est "HP71", ce qui fait que le controller désactive tous les listeners et passe à la suite en envoyant la commande MEM au device qui vient de lui confirmer qu'il est un HP-71B... j'ai bon ? :D

Du coup là on a un cas "simple" où le 1er device qui répond à la commande SDI est bien du type qu'on attend.
J'imagine que si avant le HP-71B on avait un autre device qui sait aussi répondre à la commande SDI (pas comme le 82161A), on verrait sa réponse revenir jusqu'au controller, et ensuite que se passerait-il ? Le controller renverrait SDI mais en faisant en sorte que seuls les devices suivants reçoivent ce message ?
Apple, Atari, Canon, Casio, Электро́ника, HP, Psion, Sharp, Tandy... même TI.

Avatar de l’utilisateur
pcscote
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 99
Inscription : 11 juil. 2018 01:06
Localisation : Au nord de Montréal (QC/CA)

Re: HP-IL: communication entre 2 pockets HP

Message par pcscote » 22 janv. 2022 02:14

Danny a écrit :
22 janv. 2022 01:02
:arrow: du coup tu confirmes que ces 2 commandes ont le même effet ?
Oui.
Danny a écrit :
22 janv. 2022 01:02
Pour le détail des trames de OUTPUT :HP71;"MEM", si j'ai bien compris le début, comme le 82161A ne supporte pas le "Send Device ID" il passe la commande au device suivant, qui est un HP-71B donc celui-ci répond avec son Device ID qui est "HP71", ce qui fait que le controller désactive tous les listeners et passe à la suite en envoyant la commande MEM au device qui vient de lui confirmer qu'il est un HP-71B... j'ai bon ? :D
Non, en générale chaque commande envoyé sur la boucle doit passer par tous les appareils et revenir intacte à l'appareil qui est à l''origine du message.
Donc, par exemple un message RFC envoyé par le contrôleur doit passer par tous les appareils et revenir intacte au contrôleur.
Lors du voyage du message, chaque appareil doit déterminer si le message le concerne ou pas et prendre les actions nécessaires si besoin est.
Certain messages sont plus complexes et demande une gestion plus avancée de la boucle.

À propos de l'analyse des trames ...

Chaque ligne représente un tour de boucle complet.
Par exemple, voici les étapes reliés aux deux messages IFC (Interface Clear) & RFC (Ready For Command):

Message IFC
Device 0 - contrôleur - transmet le message IFC
Device 1 - 82161A - reçoit le message IFC
Device 1 - 82161A - prend note de la requête
Device 1 - 82161A - retransmet le message IFC
Device 1 - 82161A - démarre la procédure de remise à zéro de l'interface
Device 2 - 71B #1 - reçoit le message IFC
Device 2 - 71B #1 - prend note de la requête
Device 2 - 71B #1 - retransmet le message IFC
Device 2 - 71B #1 - démarre la procédure de remise à zéro de l'interface
Device 3 - 82162A - reçoit le message IFC
Device 3 - 82162A - prend note de la requête
Device 3 - 82162A - retransmet le message IFC
Device 3 - 82162A - démarre la procédure de remise à zéro de l'interface
Device 4 - 71B #2 - reçoit le message IFC
Device 4 - 71B #2 - prend note de la requête
Device 4 - 71B #2 - retransmet le message IFC
Device 4 - 71B #2 - démarre la procédure de remise à zéro de l'interface
Device 5 - 82164A - reçoit le message IFC
Device 5 - 82164A - prend note de la requête
Device 5 - 82164A - retransmet le message IFC
Device 5 - 82164A - démarre la procédure de remise à zéro de l'interface
Device 0 - contrôleur - reçoit le message IFC
Device 0 - contrôleur - est-ce que le message IFC envoyé est pareil a celui reçu ?
Device 0 - contrôleur - oui, on passe à la prochaine étape

Message RFC
Device 0 - contrôleur - transmet d'un message RFC afin de s'assurer que tous les périphériques sont prêt à recevoir d'autre commandes.
Device 1 - 82161A - reçoit le message RFC
Device 1 - 82161A - est-ce que la RAZ est terminé?
Device 1 - 82161A - non, j'attend quelle se termine
Device 1 - 82161A - est-ce que je suis prêt a recevoir un autre message ?
Device 1 - 82161A - oui, je retransmet le message RFC
Device 2 - 71B #1 - reçoit le message RFC
Device 2 - 71B #1 - est-ce que la RAZ est terminé?
Device 2 - 71B #1 - oui, est-ce que je suis prêt a recevoir un autre message ?
Device 2 - 71B #1 - oui, je retransmet le message RFC
Device 3 - 82162A - reçoit le message RFC
Device 3 - 82162A - est-ce que la RAZ est terminé?
Device 3 - 82162A - oui, est-ce que je suis prêt a recevoir un autre message ?
Device 3 - 82162A - oui, je retransmet le message RFC
Device 4 - 71B #2 - reçoit le message RFC
Device 4 - 71B #2 - est-ce que la RAZ est terminé?
Device 4 - 71B #2 - oui, est-ce que je suis prêt a recevoir un autre message ?
Device 4 - 71B #2 - oui, je retransmet le message RFC
Device 5 - 82164A - reçoit le message RFC
Device 5 - 82164A - est-ce que la RAZ est terminé?
Device 5 - 82164A - non, j'attend quelle se termine
Device 5 - 82164A - est-ce que je suis prêt a recevoir un autre message ?
Device 5 - 82164A - non, j'attend d'être prêt.
Device 5 - 82164A - je suis prêt, donc je retransmet le message RFC
Device 0 - contrôleur - reçoit le message RFC
Device 0 - contrôleur - est-ce que le message RFC envoyé est pareil a celui reçu ?
Device 0 - contrôleur - oui, on passe à la prochaine étape

Je doit quitter, je termine l'explication plus tard .... A+

Sylvain
Dernière édition par pcscote le 22 janv. 2022 15:44, édité 1 fois.

Avatar de l’utilisateur
Danny
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 969
Inscription : 28 déc. 2013 17:34

Re: HP-IL: communication entre 2 pockets HP

Message par Danny » 22 janv. 2022 11:32

pcscote a écrit :
22 janv. 2022 02:14
Danny a écrit :
22 janv. 2022 01:02
Pour le détail des trames de OUTPUT :HP71;"MEM", si j'ai bien compris le début, comme le 82161A ne supporte pas le "Send Device ID" il passe la commande au device suivant, qui est un HP-71B donc celui-ci répond avec son Device ID qui est "HP71", ce qui fait que le controller désactive tous les listeners et passe à la suite en envoyant la commande MEM au device qui vient de lui confirmer qu'il est un HP-71B... j'ai bon ? :D
Non, en générale chaque commande envoyé sur la boucle doit passer par tous les appareils et revenir intacte à l'appareil qui est à l''origine du message.
Donc, par exemple un message RFC envoyé par le contrôleur doit passer par tous les appareils et revenir intacte au contrôleur.
Lors du voyage du message, chaque appareil doit déterminer si le message le concerne ou pas et prendre les actions nécessaires si besoin est.
Ok, je pense que j’ai pas été clair parce que c’est aussi ce que je voulais dire : le 1er HP-71 répond à la demande "Send Device ID" en passant son device ID à son camarade suivant, qui fait de même (il transmet le device ID qu’on lui a transmis, pas le sien) jusqu’à ce que ça revienne au HP-71 controller. Ce dernier, en voyant que ce device ID correspond à celui qu’il attend, passe à la demande suivante (envoyer la commande MEM) au lieu de redemander au prochain device quel est son ID jusqu’à tomber sur un HP-71 (et c’est justement ce cas qui serait aussi intéressant à voir).
Apple, Atari, Canon, Casio, Электро́ника, HP, Psion, Sharp, Tandy... même TI.

Avatar de l’utilisateur
pcscote
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 99
Inscription : 11 juil. 2018 01:06
Localisation : Au nord de Montréal (QC/CA)

Re: HP-IL: communication entre 2 pockets HP

Message par pcscote » 22 janv. 2022 21:30

Danny a écrit :
22 janv. 2022 11:32
pcscote a écrit :
22 janv. 2022 02:14
Danny a écrit :
22 janv. 2022 01:02
Pour le détail des trames de OUTPUT :HP71;"MEM", si j'ai bien compris le début, comme le 82161A ne supporte pas le "Send Device ID" il passe la commande au device suivant, qui est un HP-71B donc celui-ci répond avec son Device ID qui est "HP71", ce qui fait que le controller désactive tous les listeners et passe à la suite en envoyant la commande MEM au device qui vient de lui confirmer qu'il est un HP-71B... j'ai bon ? :D
Non, en générale chaque commande envoyé sur la boucle doit passer par tous les appareils et revenir intacte à l'appareil qui est à l''origine du message.
Donc, par exemple un message RFC envoyé par le contrôleur doit passer par tous les appareils et revenir intacte au contrôleur.
Lors du voyage du message, chaque appareil doit déterminer si le message le concerne ou pas et prendre les actions nécessaires si besoin est.
Ok, je pense que j’ai pas été clair parce que c’est aussi ce que je voulais dire : le 1er HP-71 répond à la demande "Send Device ID" en passant son device ID à son camarade suivant, qui fait de même (il transmet le device ID qu’on lui a transmis, pas le sien) jusqu’à ce que ça revienne au HP-71 controller. Ce dernier, en voyant que ce device ID correspond à celui qu’il attend, passe à la demande suivante (envoyer la commande MEM) au lieu de redemander au prochain device quel est son ID jusqu’à tomber sur un HP-71 (et c’est justement ce cas qui serait aussi intéressant à voir).
Non, c'est moi qui deviens sénile, ton affirmation initiale était correcte.
Danny a écrit :
22 janv. 2022 11:32
(et c’est justement ce cas qui serait aussi intéressant à voir).
L'information complète de l'échange entre tous les participants est dans le post précédent.

En enlevant le bruit relié aux autres périphériques pour la commande: OUTPUT :HP71;"MEM"

contrôleur: configure le premier périphérique en mode talker pour qu'il puisse me répondre puis je transmet la requète SDI

Code : Tout sélectionner

| 0:71-Ctr | 1:82161A Tape Drive | 0:71-Ctr | HP-IL Command             | Description
| S:TAD  1 | R:TAD  1 → S:TAD  1 | R:TAD  1 | Talk Address 1            | contrl: configure le périphérique #1 (82161A) en mode "talker"
| S:RFC    | R:RFC    → S:RFC    | R:RFC    | Ready For Command         | contrl: vérifie que les périphériques sont prêt à recevoir la commande suivante.
| S:SDI    | R:SDI    → S:SDI    | R:SDI    | Send Device ID            | contrl: transmission du message SDI
                                                                        | 82161A: réception du message SDI
                                                                        | 82161A: je suis le talker donc le message est pour moi
                                                                        | 82161A: je ne supporte pas ce message, donc je dois le retransmettre
                                                                        | 82161A: retransmission du message SDI
                                                                        | contrl: reception du message SDI, donc message non supporté par le périphérique
                                                                        | contrl: je ne l'ai pas trouvé, next!
contrôleur: clairement pas le périphérique que je recherche, il ne comprend même pas ce que je lui demande, je passe au suivant

contrôleur: configure le deuxième périphérique en mode talker pour qu'il puisse me répondre et je lui transmet la requète SDI

Code : Tout sélectionner

| 0:71-Ctr | 2:71B Device #1     | 0:71-Ctr | HP-IL Command             | Description
| S:TAD  2 | R:TAD  2 → S:TAD  2 | R:TAD  2 | Talk Address 2            | ctrl: configure le périphérique #2 (71B#1) en mode "talker"
| S:RFC    | R:RFC    → S:RFC    | R:RFC    | Ready For Command         | ctrl: vérifie que les périphériques sont prêt à recevoir la commande suivante.
| S:SDI    | R:SDI    → S:DAB 48 | R:DAB 48 | Send Device ID            | 71#1: requète SDI reçu, transmet le premier caractère de l'identifiant, cad "H"
| S:DAB 48 | R:DAB 48 → S:DAB 50 | R:DAB 50 | Data Byte                 | 71#1: retour du caractère "H", transmission du caractère "P"
| S:DAB 50 | R:DAB 50 → S:DAB 37 | R:DAB 37 | Data Byte                 | 71#1: retour du caractère "P", transmission du caractère "7"
| S:DAB 37 | R:DAB 37 → S:DAB 31 | R:DAB 31 | Data Byte                 | 71#1: retour du caractère "7", transmission du caractère "1"
| S:DAB 31 | R:DAB 31 → S:DAB 0D | R:DAB 0D | Data Byte                 | 71#1: retour du caractère "1", transmission du caractère CR
| S:DAB 0D | R:DAB 0D → S:DAB 0A | R:DAB 0A | Data Byte                 | 71#1: retour du caractère [CR], transmission du caractère LF
| S:DAB 0A | R:DAB 0A → S:ETO    | R:ETO    | End of Transmission OK    | 71#1: retour du caractère [LF], j'ai terminé, je transmet le message EOT
                                                                        | ctrl: reception du message EOT, j'ai donc reçu l'identifiant au complet
                                                                        | ctrl: est que HP71 est pareil au SDI du périphérique ?
                                                                        | ctrl: oui, je l'ai trouvé!
contrôleur: Ha! Ha! je l'ai trouvé

Note: la séquence de messages SDI / DAB / ETO est asymétrique

contrôleur: je transmet donc la requete "MEM"

Code : Tout sélectionner

| 0:71-Ctr | 2:71B Device #1     | 0:71-Ctr | HP-IL Command             | Description
| S:UNL    | R:UNL    → S:UNL    | R:UNL    | Unlisten                  | ctrl: s'assure qu'aucun des périphériques ne soit "listener"
| S:RFC    | R:RFC    → S:RFC    | R:RFC    | Ready For Command         | ctrl: vérifie que les périphériques sont prêt à recevoir la commande suivante.
| S:LAD  2 | R:LAD  2 → S:LAD  2 | R:LAD  2 | Listen Address 2          | ctrl: configure le périphérique #2 (71B#1) en mode "listener"
| S:RFC    | R:RFC    → S:RFC    | R:RFC    | Ready For Command         | ctrl: vérifie que les périphériques sont prêt à recevoir la commande suivante.
| S:UNT    | R:UNT    → S:UNT    | R:UNT    | Untalk                    | ctrl: désactive le "talker" de la boucle, je devient implicitement le "talker"
| S:RFC    | R:RFC    → S:RFC    | R:RFC    | Ready For Command         | ctrl: vérifie que les périphériques sont prêt à recevoir la commande suivante.
                                                                        | ctrl: transmission de la requète "MEM[CR][LF]" a tous les listeners (ici le device à l'adresse 2, cad: 71#1)
| S:DAB 4D | R:DAB 4D → S:DAB 4D | R:DAB 4D | Data Byte                 | ctrl: transmission du caractère "M" et retour du caractère "M"
| S:DAB 45 | R:DAB 45 → S:DAB 45 | R:DAB 45 | Data Byte                 | ctrl: transmission du caractère "E" et retour du caractère "E"
| S:DAB 4D | R:DAB 4D → S:DAB 4D | R:DAB 4D | Data Byte                 | ctrl: transmission du caractère "M" et retour du caractère "M"
| S:DAB 0D | R:DAB 0D → S:DAB 0D | R:DAB 0D | Data Byte                 | ctrl: transmission du caractère CR et retour du caractère CR
| S:DAB 0A | R:DAB 0A → S:DAB 0A | R:DAB 0A | Data Byte                 | ctrl: transmission du caractère LF et retour du caractère LF
| S:UNT    | R:UNT    → S:UNT    | R:UNT    | Untalk                    | ctrl: rdésactive le "talker" de la boucle
| S:RFC    | R:RFC    → S:RFC    | R:RFC    | Ready For Command         | ctrl: vérifie que les périphériques sont prêt à recevoir la commande suivante.
| S:UNL    | R:UNL    → S:UNL    | R:UNL    | Unlisten                  | ctrl: s'assure qu'aucun des périphériques ne soit "listener"
| S:RFC    | R:RFC    → S:RFC    | R:RFC    | Ready For Command         | ctrl: vérifie que les périphériques sont prêt à recevoir la commande suivante.
Sylvain

Avatar de l’utilisateur
Danny
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 969
Inscription : 28 déc. 2013 17:34

Re: HP-IL: communication entre 2 pockets HP

Message par Danny » 23 janv. 2022 01:00

En fait ce que je disais, c'est que ça serait intéressant de voir le cas où le 1er device qui comprend la commande SDI et qui y répond n'est pas un HP-71, donc il ne renverrait pas "HP71" comme device ID, ce qui ferait que le controller devrait renvoyer la commande SDI (en spécifiant comme talker le device qui suit le talker précédent, je suppose, logiquement) :geek:
Apple, Atari, Canon, Casio, Электро́ника, HP, Psion, Sharp, Tandy... même TI.

Avatar de l’utilisateur
pcscote
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 99
Inscription : 11 juil. 2018 01:06
Localisation : Au nord de Montréal (QC/CA)

Re: HP-IL: communication entre 2 pockets HP

Message par pcscote » 23 janv. 2022 02:33

Danny a écrit :
23 janv. 2022 01:00
En fait ce que je disais, c'est que ça serait intéressant de voir le cas où le 1er device qui comprend la commande SDI et qui y répond n'est pas un HP-71, donc il ne renverrait pas "HP71" comme device ID, ce qui ferait que le controller devrait renvoyer la commande SDI (en spécifiant comme talker le device qui suit le talker précédent, je suppose, logiquement) :geek:
Configuration de la boucle:

Code : Tout sélectionner

0:HP71#0      (contrôleur)
1:HP852164A   (interface serie)
2:HP71#1      (device)
contrôleur: configure le premier périphérique en mode talker pour qu'il puisse me répondre, puis je transmet la requête SDI

Code : Tout sélectionner

| 0:71-Ctr | 1:82164A RS232C Int | 0:71-Ctr | HP-IL Command             | Description
| S:TAD  1 | R:TAD  1 → S:TAD  1 | R:TAD  1 | Talk Address 1            | contrl: configure le périphérique #1 (82161A) en mode "talker"
| S:RFC    | R:RFC    → S:RFC    | R:RFC    | Ready For Command         | contrl: vérifie que les périphériques sont prêt à recevoir la commande suivante.
| S:SDI    | R:SDI    → S:DAB 48 | R:DAB 48 | Send Device ID            | 82164A: requète SDI reçu, SID="HP82164A", transmission du caractère "H"
| S:DAB 48 | R:DAB 48 → S:DAB 50 | R:DAB 50 | Data Byte                 | 82164A: retour du caractère "H", transmission du caractère "P"
| S:DAB 50 | R:DAB 50 → S:DAB 38 | R:DAB 38 | Data Byte                 | 82164A: retour du caractère "P", transmission du caractère "8"
| S:DAB 38 | R:DAB 38 → S:DAB 32 | R:DAB 32 | Data Byte                 | 82164A: retour du caractère "8", transmission du caractère "2"
| S:DAB 32 | R:DAB 32 → S:DAB 31 | R:DAB 31 | Data Byte                 | 82164A: retour du caractère "2", transmission du caractère "1"
| S:DAB 31 | R:DAB 31 → S:DAB 36 | R:DAB 36 | Data Byte                 | 82164A: retour du caractère "1", transmission du caractère "6"
| S:DAB 36 | R:DAB 36 → S:DAB 34 | R:DAB 34 | Data Byte                 | 82164A: retour du caractère "6", transmission du caractère "4"
| S:DAB 34 | R:DAB 34 → S:DAB 41 | R:DAB 41 | Data Byte                 | 82164A: retour du caractère "4", transmission du caractère "A"
| S:NRD    | R:NRD    → S:NRD    | R:NRD    | Not Ready for Data        | contrl: mon buffer de réception est plein, demande au talker de prendre une pose afin que je puisse vider mon buffer
| S:DAB 41 | R:DAB 41 → S:ETO    | R:ETO    | End of Transmission OK    | contrl: j'ai réussi a faire de la place dans mon buffer de réception, envoi du dernier caractère reçu avant le NRD
                                                                        | 82164A: retour du caractère "A", j'ai terminé, donc je transmet le message EOT
                                                                        | contrl: reception du message EOT, j'ai donc reçu l'identifiant au complet
                                                                        | contrl: "HP82164A" <> "HP71"+CR+LF, donc pas le bon périphérique, next!
contrôleur: mmmm, pas le périphérique que je recherche, je passe au suivant

contrôleur: configure le deuxième périphérique en mode talker pour qu'il puisse me répondre, puis je lui transmet la requête SDI

Code : Tout sélectionner

| 0:71-Ctr | 2:71B Device #1     | 0:71-Ctr | HP-IL Command             | Description
| S:TAD  2 | R:TAD  2 → S:TAD  2 | R:TAD  2 | Talk Address 2            | ctrl: configure le périphérique #2 (71B#1) en mode "talker"
| S:RFC    | R:RFC    → S:RFC    | R:RFC    | Ready For Command         | ctrl: vérifie que les périphériques sont prêt à recevoir la commande suivante.
| S:SDI    | R:SDI    → S:DAB 48 | R:DAB 48 | Send Device ID            | 71#1: requète SDI reçu, SID="HP71"+CR+LF, transmet le premier caractère de l'identifiant, cad "H"
| S:DAB 48 | R:DAB 48 → S:DAB 50 | R:DAB 50 | Data Byte                 | 71#1: retour du caractère "H", transmission du caractère "P"
| S:DAB 50 | R:DAB 50 → S:DAB 37 | R:DAB 37 | Data Byte                 | 71#1: retour du caractère "P", transmission du caractère "7"
| S:DAB 37 | R:DAB 37 → S:DAB 31 | R:DAB 31 | Data Byte                 | 71#1: retour du caractère "7", transmission du caractère "1"
| S:DAB 31 | R:DAB 31 → S:DAB 0D | R:DAB 0D | Data Byte                 | 71#1: retour du caractère "1", transmission du caractère CR
| S:DAB 0D | R:DAB 0D → S:DAB 0A | R:DAB 0A | Data Byte                 | 71#1: retour du caractère [CR], transmission du caractère LF
| S:DAB 0A | R:DAB 0A → S:ETO    | R:ETO    | End of Transmission OK    | 71#1: retour du caractère [LF], j'ai terminé, je transmet le message EOT
                                                                        | ctrl: reception du message EOT, j'ai donc reçu l'identifiant au complet
                                                                        | ctrl: est que HP71 est pareil au SDI du périphérique ?
                                                                        | ctrl: oui, je l'ai trouvé!
contrôleur: Ha! Ha! je l'ai trouvé

Note: la séquence de messages SDI / DAB / ETO est asymétrique

contrôleur: je transmet donc la requete "MEM"

Code : Tout sélectionner

| 0:71-Ctr | 2:71B Device #1     | 0:71-Ctr | HP-IL Command             | Description
| S:UNL    | R:UNL    → S:UNL    | R:UNL    | Unlisten                  | ctrl: s'assure qu'aucun des périphériques ne soit "listener"
| S:RFC    | R:RFC    → S:RFC    | R:RFC    | Ready For Command         | ctrl: vérifie que les périphériques sont prêt à recevoir la commande suivante.
| S:LAD  2 | R:LAD  2 → S:LAD  2 | R:LAD  2 | Listen Address 2          | ctrl: configure le périphérique #2 (71B#1) en mode "listener"
| S:RFC    | R:RFC    → S:RFC    | R:RFC    | Ready For Command         | ctrl: vérifie que les périphériques sont prêt à recevoir la commande suivante.
| S:UNT    | R:UNT    → S:UNT    | R:UNT    | Untalk                    | ctrl: désactive le "talker" de la boucle, je devient implicitement le "talker"
| S:RFC    | R:RFC    → S:RFC    | R:RFC    | Ready For Command         | ctrl: vérifie que les périphériques sont prêt à recevoir la commande suivante.
                                                                        | ctrl: transmission de la requète "MEM[CR][LF]" a tous les listeners (ici le device à l'adresse 2, cad: 71#1)
| S:DAB 4D | R:DAB 4D → S:DAB 4D | R:DAB 4D | Data Byte                 | ctrl: transmission du caractère "M" et retour du caractère "M"
| S:DAB 45 | R:DAB 45 → S:DAB 45 | R:DAB 45 | Data Byte                 | ctrl: transmission du caractère "E" et retour du caractère "E"
| S:DAB 4D | R:DAB 4D → S:DAB 4D | R:DAB 4D | Data Byte                 | ctrl: transmission du caractère "M" et retour du caractère "M"
| S:DAB 0D | R:DAB 0D → S:DAB 0D | R:DAB 0D | Data Byte                 | ctrl: transmission du caractère CR et retour du caractère CR
| S:DAB 0A | R:DAB 0A → S:DAB 0A | R:DAB 0A | Data Byte                 | ctrl: transmission du caractère LF et retour du caractère LF
| S:UNT    | R:UNT    → S:UNT    | R:UNT    | Untalk                    | ctrl: rdésactive le "talker" de la boucle
| S:RFC    | R:RFC    → S:RFC    | R:RFC    | Ready For Command         | ctrl: vérifie que les périphériques sont prêt à recevoir la commande suivante.
| S:UNL    | R:UNL    → S:UNL    | R:UNL    | Unlisten                  | ctrl: s'assure qu'aucun des périphériques ne soit "listener"
| S:RFC    | R:RFC    → S:RFC    | R:RFC    | Ready For Command         | ctrl: vérifie que les périphériques sont prêt à recevoir la commande suivante.
Sylvain

Avatar de l’utilisateur
Danny
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 969
Inscription : 28 déc. 2013 17:34

Re: HP-IL: communication entre 2 pockets HP

Message par Danny » 23 janv. 2022 15:33

Nickel ! 8)
Pas mal le "Not Ready for Data" :geek:
Apple, Atari, Canon, Casio, Электро́ника, HP, Psion, Sharp, Tandy... même TI.

Avatar de l’utilisateur
pcscote
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 99
Inscription : 11 juil. 2018 01:06
Localisation : Au nord de Montréal (QC/CA)

Re: HP-IL: communication entre 2 pockets HP

Message par pcscote » 23 janv. 2022 18:43

À propos de l'interface HP-IL ...

L'interface HP-IL est la version série de l'interface parallèle HP-IB (aussi appelé GPIB ou IEEE-488).
Comparativement à l'interface HP-IL, il y a beaucoup plus d'informations et de tutoriels sur l'interface HP-IB.
Le comportement des deux interfaces sont presque qu'identique.
La majorité des lignes de contrôles du HP-IB ont été transportées dans les trois bits de contrôle de la trame HP-IL.

L'interface HP-IB - Data Lines

Code : Tout sélectionner

Pin  1   DIO1       Data input/output bit.
Pin  2   DIO2       Data input/output bit.
Pin  3   DIO3       Data input/output bit.
Pin  4   DIO4       Data input/output bit.
Pin 13   DIO5       Data input/output bit.
Pin 14   DIO6       Data input/output bit.
Pin 15   DIO7       Data input/output bit.
Pin 16   DIO8       Data input/output bit.
L'interface HP-IB - Handshake Lines

Code : Tout sélectionner

Pin  6   DAV        Data valid.
Pin  7   NRFD       Not ready for data.
Pin  8   NDAC       Not data accepted.
L'interface HP-IB - Control Lines

Code : Tout sélectionner

Pin 11   ATN        Attention.
Pin  9   IFC        Interface clear.
Pin 10   SRQ        Service request.
Pin 17   REN        Remote enable.
Pin  5   EOI        End-or-identify.
L'interface HP-IB - Ground Lines

Code : Tout sélectionner

Pin 18   DAV-GND    Data valid ground.
Pin 19   NRFD-GND   Not ready for data ground.
Pin 20   NDAC-GND   Not data accepted ground.
Pin 23   ATN-GND    Attention ground.
Pin 21   IFC-GND    Interface clear ground.
Pin 22   SRQ-GND    Service request ground.
Pin 24   GND        Logic ground.
Pin 12   SHIELD     Shield.
L'interface HP-IL

Code : Tout sélectionner

C2  C1  C0  D7  D6  D5  D4  D3  D2  D1  D0  Commande    Description
0   0   0   XX  XX  XX  XX  XX  XX  XX  XX  DAB         data byte 
0   0   1   XX  XX  XX  XX  XX  XX  XX  XX  DAB + SRQ   data byte avec service request demandé par un périphérique (équivalent à une demande d'interruption)
0   1   0   XX  XX  XX  XX  XX  XX  XX  XX  END         end data byte 
0   1   1   XX  XX  XX  XX  XX  XX  XX  XX  END + SRQ   end data byte avec service request demandé par un périphérique (équivalent à une demande d'interruption)
1   0   0   XX  XX  XX  XX  XX  XX  XX  XX  CMD class   instructions de type command, dont: IFC, LAD, TAD, NRE, DDL, DDT, etc.
1   0   1   XX  XX  XX  XX  XX  XX  XX  XX  RDY class   instructions de type ready,   dont: NRD, ETO, ETE, RFC, etc.
1   1   0   --  --  --  --  --  --  --  --  IDY         identify - vérifie la continuité de la boucle et effectue du "polling" permettant aux périphériques de level le flag SRQ.
1   1   1   --  --  --  --  --  --  --  --  IDY + SRQ   vérifie la continuité de la boucle avec service request demandé par un périphérique

Avatar de l’utilisateur
Danny
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 969
Inscription : 28 déc. 2013 17:34

Re: HP-IL: communication entre 2 pockets HP

Message par Danny » 18 févr. 2022 15:55

J'ai récupéré un module HP-IL pour HP-41... je continue à m'amuser :geek: :P :

HP-IL loop with HP-41CV and two HP-71B 2.jpg
HP-IL loop with HP-41CV and two HP-71B 2.jpg (125.15 Kio) Consulté 1828 fois

(vidéo)
Dernière édition par Danny le 18 févr. 2022 16:47, édité 1 fois.
Apple, Atari, Canon, Casio, Электро́ника, HP, Psion, Sharp, Tandy... même TI.

Avatar de l’utilisateur
Hobiecat
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3371
Inscription : 06 sept. 2011 14:57
Localisation : Normandie

Re: HP-IL: communication entre 2 pockets HP

Message par Hobiecat » 18 févr. 2022 16:06

Sympa la vidéo ! :wink:

Avatar de l’utilisateur
pcscote
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 99
Inscription : 11 juil. 2018 01:06
Localisation : Au nord de Montréal (QC/CA)

Re: HP-IL: communication entre 2 pockets HP

Message par pcscote » 18 févr. 2022 20:15

Superbe installation! 8)
Quelle est la prochaine étape ?
Un logiciel de "chat" en réseau ? :mrgreen:

Avatar de l’utilisateur
Danny
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 969
Inscription : 28 déc. 2013 17:34

Re: HP-IL: communication entre 2 pockets HP

Message par Danny » 18 févr. 2022 21:20

J’y ai pensé yep :)
Mais j’ai un autre truc marrant en tête, prochaine vidéo à venir bientôt :geek:
Apple, Atari, Canon, Casio, Электро́ника, HP, Psion, Sharp, Tandy... même TI.

Avatar de l’utilisateur
Danny
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 969
Inscription : 28 déc. 2013 17:34

Re: HP-IL: communication entre 2 pockets HP

Message par Danny » 21 févr. 2022 22:45

Voici un nouvel essai basé sur HP-IL, intitulé Syracuse à deux :)

Le but est que deux HP-71B dans une boucle HP-IL calculent ensemble les termes de la suite de Syracuse, pour un nombre de départ donné : on saisit le nombre de départ sur le 1er HP-71B, qui le transmet à l'autre HP-71B. Celui-ci affiche le nombre reçu, puis calcule le terme suivant et le transmet à l'autre HP-71B, et ainsi de suite jusqu'à ce qu'un des deux HP-71B arrive à 1.

À la fin, les 2 HP-71B savent afficher chacun le même temps de vol car ils savent combien de termes ont été traités.
Il affichent aussi tous les deux l'altitude maxi... pourtant, un seul des 2 HP-71B l'a calculée car ils se sont partagé les termes et chacun n'a eu connaissance que de la moitié des nombres de la suite.
Donc pour qu'ils puissent afficher tous les 2 l'altitude maxi correcte, l'astuce est qu'un des 2 HP-71B envoie son altitude maxi "locale" à l'autre HP-71B : celui-ci la compare à la sienne, ne garde que la + grande, et la renvoie au 1er :)

HP-IL with two HP-71B - Syracuse à deux (1).jpg
HP-IL with two HP-71B - Syracuse à deux (1).jpg (227.72 Kio) Consulté 1705 fois
HP-IL with two HP-71B - Syracuse à deux (2).jpg
HP-IL with two HP-71B - Syracuse à deux (2).jpg (254.08 Kio) Consulté 1705 fois

Pour ajouter une touche sympa, chaque HP-71B émet un bip grave quand il calcule un terme de la forme u(n+1) = u(n) / 2, et un bip aigu pour un terme de la forme u(n+1) = 3u(n) + 1.

:arrow: Une vidéo d'exemple avec la suite pour 23 : 23 - 70 - 35 - 106 - 53 - 160 - 80 - 40 - 20 - 10 - 5 - 16 - 8 - 4 - 2 - 1.

(site pour tester : https://calculis.net/syracuse)

Je publierai le code + tard, je dois d'abord le mettre au propre :geek:
Dernière édition par Danny le 21 févr. 2022 23:09, édité 1 fois.
Apple, Atari, Canon, Casio, Электро́ника, HP, Psion, Sharp, Tandy... même TI.

Avatar de l’utilisateur
Hobiecat
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3371
Inscription : 06 sept. 2011 14:57
Localisation : Normandie

Re: HP-IL: communication entre 2 pockets HP

Message par Hobiecat » 21 févr. 2022 22:52

Excellent ! Bravo Danny !

Répondre

Revenir vers « Tous les Pockets »