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
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 » 20 janv. 2022 16:13

Marge a écrit :
20 janv. 2022 03:00
Eh bien, merci pour ce complément d’information. Je découvre le 71, et surtout qu’il y a beaucoup à découvrir !
T'as déjà un HP-71 ?
J'avoue que sans module HP-IL j'aurais + vite fini de jouer avec, parce qu'on a relativement vite fait le tour du BASIC, si on a n'a pas autre chose sous la main (FORTH par exemple).
Hobiecat a écrit :
20 janv. 2022 09:41
Merci Danny, c'est très intéressant !

Bon je n'ai qu'un 71B équipé de HP-IL, donc pas possible de mon côté d'en relier deux, mais j'ai un 75D et un module pour 41 : plein de possibilités à explorer ! :wink:
Pas mal tout ça, il y a peut-être moyen de faire quelque chose de sympa ! Tiens-nous au courant si c'est le cas :geek:
Apparemment le module HP-IL pour HP-41 n'a pas les mêmes instructions, mais peut-être qu'on peut envoyer des infos avec la fonction OUTA par exemple :?:
Apple, Atari, Canon, Casio, Электро́ника, HP, Psion, Sharp, Tandy... même TI.

Avatar de l’utilisateur
Marge
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 5516
Inscription : 01 oct. 2008 14:39
Localisation : En bas, tout au fond à gauche.

Re: HP-IL: communication entre 2 pockets HP

Message par Marge » 20 janv. 2022 18:07

Danny a écrit :
20 janv. 2022 16:13
Marge a écrit :
20 janv. 2022 03:00
Eh bien, merci pour ce complément d’information. Je découvre le 71, et surtout qu’il y a beaucoup à découvrir !
T'as déjà un HP-71 ?
J'avoue que sans module HP-IL j'aurais + vite fini de jouer avec, parce qu'on a relativement vite fait le tour du BASIC, si on a n'a pas autre chose sous la main (FORTH par exemple).
Je n'ai pas le module HP-IL et j'avoue que j'ai déjà tellement de choses à programmer (Jeu de cartes sur Psion 3A, que je n'ai jamais compté abandonner ; une sorte de bilan de consommation automobile sur PC-1360 ; et une autre idée pour un futur concours moins savonné que le précédent) que je ne suis pas pressé de l'acquérir ! Et puis faire le tour du BASIC, qui est l'un des plus complets à ce qu'on dit, ça va déjà m'occuper.
3 hommes, 3 demis, un 3a... Magnéto, Serge !

Mes articles dans la Gazette...

« Boris », c'était juste Maurice enrhumé.

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 » 20 janv. 2022 18:19

Danny a écrit :
20 janv. 2022 16:13
Apparemment le module HP-IL pour HP-41 n'a pas les mêmes instructions, mais peut-être qu'on peut envoyer des infos avec la fonction OUTA par exemple :?:
Le module HP-IL (82401A) du HP-71B est plus puissant que ceux des modèles précédents (HP-41C & HP-75C).

Les modules du HP-41C reliés à l'interface loop:

Code : Tout sélectionner

HP 82160A      IL Interface Module   - ajoute l'interface et les fonctions reliées aux périphériques IL initiaux. (82161A Cassette Drive & 82162A Thermal Printer)
Skwid ink      Extended IL Module    - fonctions utilisateurs avancées et support des périphériques IL de deuxième génération. (HP 9114 Floppy Drive, etc.)
PPC Toulouse   Paname Module         - fonctions utilisateurs avancées et support de plusieurs périphériques IL. (82162A, 82163A, 82905, mini-plotter, etc)
HP 82183A      Extended I/O Module   - fonctions de contrôle avancées de l'interface
HP 00041-15043 IL Development Module - fonctions de contrôle de bas niveau de l'interface et une application SCOPE.
                                         (Scope permet d'imprimer sur l'imprimante thermique 82143A les trames IL qui voyage sur la boucle)
HP 82184A      Plotter Module        - fonctions et programmes qui contrôle la table traçante HP 7470A.
Les modules/lex du HP-75C reliés à l'interface loop:

Code : Tout sélectionner

HP 00075-13013 IO Utilities          - fonctions de contrôle avancées de l'interface. (SENDIO & ENTIO$)
HP 00075-13014 RIOWIO                - ajoute l'accès aux registres internes de l'interface. (RIO & WIO)
HP 00075-13015 Duplication & Privacy - copie de cassettes ou de disquettes
HP 00075-13016 Graphics              - programmes qui impriment des graphiques (bar/pie/linear charts) sur une table traçante. (HP 7470A)
HP 00075-15001 IO ROM                - fonctions de contrôle avancées de l'interface
Avec deux PIL-Box et l'utilisation de la fonctionnalité Scope du pyILPer, je vais visualiser les trames IL pour valider certain tests de Danny.

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 » 20 janv. 2022 19:42

Intéressant Sylvain !

Ça m'intéresse cette PIL-Box, je me demande si on peut facilement la connecter avec le dernier macOS, tiens :geek:
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 » 20 janv. 2022 20:22

Malheureusement, la PILbox est très PC !

Mais c'est un must have pour jouer avec les HP-IL ! :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 » 20 janv. 2022 21:51

Danny a écrit :
20 janv. 2022 19:42
Ça m'intéresse cette PIL-Box, je me demande si on peut facilement la connecter avec le dernier macOS, tiens :geek:
Hobiecat a écrit :
20 janv. 2022 20:22
Malheureusement, la PILbox est très PC !
Mais c'est un must have pour jouer avec les HP-IL ! :wink:
Ce n'est plus vrai aujourd'hui.
Le logiciel pyILPER conçu par Joachim Siebold est écrit en Python et roule sur Linux, macOS et Windows.
J'ai un MacBook Pro 2019 avec macOS Monterey et pyILPER roule sans problèmes.
Sylvain

Références:

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 » 20 janv. 2022 22:08

De la lecture passionnante en perspective, merci ! :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 » 20 janv. 2022 22:48

Pour les fanatiques du HP-IL ... double et triple boucle HP-IL contrôlé par une HP-71B !!! 8)

Image

Image

Image

Image

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 janv. 2022 00:04

pcscote a écrit :
20 janv. 2022 21:51
Ce n'est plus vrai aujourd'hui.
Le logiciel pyILPER conçu par Joachim Siebold est écrit en Python et roule sur Linux, macOS et Windows.
J'ai un MacBook Pro 2019 avec macOS Monterey et pyILPER roule sans problèmes.
Merci Sylvain, j'avais raté que la PILBox avait un peu plus d'ouverture. C'est une bonne nouvelle !

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 04:16

Danny,

Les spécifications de l'interface HP-IL sont décrites dans les livres et manuels suivants:
Avant d'écrire l'analyse complète des messages HP-IL pour la séquence suivante

Code : Tout sélectionner

RESTORE IO          ' autorise les entrées/sorties
RESET HPIL          ' remet la boucle HPIL d'équerre :) 
CONTROL ON          ' met la machine locale en mode "contrôleur"
REMOTE              ' met toutes les autres machines de la boucle en mode "device"
OUTPUT :HP71;"MEM"  ' envoie la commande MEM à la 1ère machine (ou à toutes ?) de type HP71
s-t-p confirme moi que l'analyse de la séquence des messages HP-IL ci-dessous est claire.

POWER ON Sequence -> 71:1 = Controller & 71:2 = Device

Code : Tout sélectionner

| 71:1:Send: NOP    | 71:2:Recv: NOP    | 71:2:Send: NOP    | 71:1:Recv: NOP    |
| 71:1:Send: RFC    | 71:2:Recv: RFC    | 71:2:Send: RFC    | 71:1:Recv: RFC    |
| 71:1:Send: AAU    | 71:2:Recv: AAU    | 71:2:Send: AAU    | 71:1:Recv: AAU    |
| 71:1:Send: RFC    | 71:2:Recv: RFC    | 71:2:Send: RFC    | 71:1:Recv: RFC    |
| 71:1:Send: AAD  1 | 71:2:Recv: AAD  1 | 71:2:Send: AAD  2 | 71:1:Recv: AAD  2 |
| 71:1:Send: UNL    | 71:2:Recv: UNL    | 71:2:Send: UNL    | 71:1:Recv: UNL    |
| 71:1:Send: RFC    | 71:2:Recv: RFC    | 71:2:Send: RFC    | 71:1:Recv: RFC    |
| 71:1:Send: TAD  1 | 71:2:Recv: TAD  1 | 71:2:Send: TAD  1 | 71:1:Recv: TAD  1 |
| 71:1:Send: RFC    | 71:2:Recv: RFC    | 71:2:Send: RFC    | 71:1:Recv: RFC    |
| 71:1:Send: SAI    | 71:2:Recv: SAI    | 71:2:Send: DAB  3 | 71:1:Recv: DAB  3 |
| 71:1:Send: DAB  3 | 71:2:Recv: DAB  3 | 71:2:Send: ETO    | 71:1:Recv: ETO    |
| 71:1:Send: UNT    | 71:2:Recv: UNT    | 71:2:Send: UNT    | 71:1:Recv: UNT    |
| 71:1:Send: RFC    | 71:2:Recv: RFC    | 71:2:Send: RFC    | 71:1:Recv: RFC    |
Set #01

Code : Tout sélectionner

NOP        No Operation                 Donne aux périphériques le temps de se réveiller.
RFC        Ready For Command            Vérifie que tous les périphériques sont prêts à recevoir la commande suivante.
                                          le même message est reçu et retransmit par tous les périphériques sur la boucle

Code : Tout sélectionner

| 71:1:Send: NOP    | 71:2:Recv: NOP    | 71:2:Send: NOP    | 71:1:Recv: NOP    |
| 71:1:Send: RFC    | 71:2:Recv: RFC    | 71:2:Send: RFC    | 71:1:Recv: RFC    |
Set #02

Code : Tout sélectionner

AAU        Auto-Address Unconfigure     Initialisation du périphérique
                                          son adresse est maintenant 31
                                          le même message reçu et retransmis par tous les périphériques sur la boucle 
RFC        Ready For Command            Vérifie que tous les périphériques sont prêts à recevoir la commande suivante.

Code : Tout sélectionner

| 71:1:Send: AAU    | 71:2:Recv: AAU    | 71:2:Send: AAU    | 71:1:Recv: AAU    |
| 71:1:Send: RFC    | 71:2:Recv: RFC    | 71:2:Send: RFC    | 71:1:Recv: RFC    |
Set #03

Code : Tout sélectionner

AAD  1     Auto-Address                 Configuration de la boucle
                                          1) le contrôleur s'attribue l'adresse 0
                                          2) incrémente le compteur (1)
                                          3) transmet la commande AAD avec 1 comme paramètre
                                          4) le premier périphérique reçoit AAD 1
                                          5) s'attribue l'adresse 1, 
                                          6) incrémente le compteur (2)
                                          7) transmet la commande AAD avec 2 comme paramètre
                                          8) ...
                                          9) ici, le contrôleur reçoit l'adresse 2
                                             il sait alors le nombre de périphériques sur la boucle

Code : Tout sélectionner

| 71:1:Send: AAD  1 | 71:2:Recv: AAD  1 | 71:2:Send: AAD  2 | 71:1:Recv: AAD  2 |
Set #04

Code : Tout sélectionner

UNL        Unlisten                    Désactive tous les "listener" de la boucle.
RFC        Ready For Command           Vérifie que tous les périphériques sont prêts à recevoir la commande suivante

Code : Tout sélectionner

| 71:1:Send: UNL    | 71:2:Recv: UNL    | 71:2:Send: UNL    | 71:1:Recv: UNL    |
| 71:1:Send: RFC    | 71:2:Recv: RFC    | 71:2:Send: RFC    | 71:1:Recv: RFC    |
Set #05

Code : Tout sélectionner

TAD 01     Talk Address                Configure le périphérique #1 comme Talker.
RFC        Ready For Command           Vérifie que tous les périphériques sont prêts à recevoir la commande suivante

Code : Tout sélectionner

| 71:1:Send: TAD  1 | 71:2:Recv: TAD  1 | 71:2:Send: TAD  1 | 71:1:Recv: TAD  1 |
| 71:1:Send: RFC    | 71:2:Recv: RFC    | 71:2:Send: RFC    | 71:1:Recv: RFC    |
Set #06

Code : Tout sélectionner

SAI        Send Accessory ID           Reçu par le HP-71 (device)
DAB 03     Data Byte 3                 Réponds avec son identification. (03 = Full interface controller partially automatic)
ETO        End of Transmission Ok      HP-71 (device) indique que la transmission est terminée

Code : Tout sélectionner

| 71:1:Send: SAI    | 71:2:Recv: SAI    | 71:2:Send: DAB  3 | 71:1:Recv: DAB  3 |
| 71:1:Send: DAB  3 | 71:2:Recv: DAB  3 | 71:2:Send: ETO    | 71:1:Recv: ETO    |
Accessory ID structure -> 1 byte -> high nibble = Device Class & low nibble = Device Type

Code : Tout sélectionner

0x  Controllers
    00 = Limited controller, mostly automatic (ex.: HP-41C)
    01 = Full intrumentation controller, completely manual (Ex.: HP-85A)
    02 = Full interface controller completely automatic
    03 = Full interface controller partially automatic (Ex.: HP-71B)
    ...
1x  Mass Storage Devices
2x  Printers
3x  Displays
4x  Interfaces
5x  Electronic Instrumentation
6x  Graphic I/O
7x  Analytical and Scientific Instrumentation
8x  Not Defined
9x  Not Defined
Ax  Not Defined
Bx  Not Defined
Cx  Not Defined
Dx  Not Defined
Ex  General Devices
Fx  Extended Class
Set #07

Code : Tout sélectionner

UNT        Untalk                      Désactive le "talker" de la boucle.
RFC        Ready For Command           Vérifie que tous les périphériques sont prêts à recevoir la commande suivante

Code : Tout sélectionner

| 71:1:Send: UNT    | 71:2:Recv: UNT    | 71:2:Send: UNT    | 71:1:Recv: UNT    |
| 71:1:Send: RFC    | 71:2:Recv: RFC    | 71:2:Send: RFC    | 71:1:Recv: RFC    |
Dernière édition par pcscote le 24 févr. 2022 21:41, édité 1 fois.

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 06:49

Code : Tout sélectionner

RESTORE IO          ' autorise les entrées/sorties
RESET HPIL          ' remet la boucle HPIL d'équerre :) 
CONTROL ON          ' met la machine locale en mode "contrôleur"
REMOTE              ' met toutes les autres machines de la boucle en mode "device"
OUTPUT :HP71;"MEM"  ' envoie la commande MEM à la 1ère machine de la boucle qui à le device identifier "HP71"
OUTPUT :1;"MEM"     ' envoie la commande MEM à la 1ère machine de la boucle
RESTORE IO -> presque identique à la sequence de POWER ON.
La seule différence est la première commande qui est IFC à la place de NOP.

Code : Tout sélectionner

IFC        Interface Clear             Initialisation partielle de l'interface HP-IL du périphérique, il conserve son adresse dans la boucle.

Code : Tout sélectionner

| 71:1:Send: IFC    | 71:2:Recv: IFC    | 71:2:Send: IFC    | 71:1:Recv: IFC    |
| 71:1:Send: RFC    | 71:2:Recv: RFC    | 71:2:Send: RFC    | 71:1:Recv: RFC    |
| 71:1:Send: AAU    | 71:2:Recv: AAU    | 71:2:Send: AAU    | 71:1:Recv: AAU    |
| 71:1:Send: RFC    | 71:2:Recv: RFC    | 71:2:Send: RFC    | 71:1:Recv: RFC    |
| 71:1:Send: AAD  1 | 71:2:Recv: AAD  1 | 71:2:Send: AAD  2 | 71:1:Recv: AAD  2 |
| 71:1:Send: UNL    | 71:2:Recv: UNL    | 71:2:Send: UNL    | 71:1:Recv: UNL    |
| 71:1:Send: RFC    | 71:2:Recv: RFC    | 71:2:Send: RFC    | 71:1:Recv: RFC    |
| 71:1:Send: TAD  1 | 71:2:Recv: TAD  1 | 71:2:Send: TAD  1 | 71:1:Recv: TAD  1 |
| 71:1:Send: RFC    | 71:2:Recv: RFC    | 71:2:Send: RFC    | 71:1:Recv: RFC    |
| 71:1:Send: SAI    | 71:2:Recv: SAI    | 71:2:Send: DAB  3 | 71:1:Recv: DAB  3 |
| 71:1:Send: DAB  3 | 71:2:Recv: DAB  3 | 71:2:Send: ETO    | 71:1:Recv: ETO    |
| 71:1:Send: UNT    | 71:2:Recv: UNT    | 71:2:Send: UNT    | 71:1:Recv: UNT    |
| 71:1:Send: RFC    | 71:2:Recv: RFC    | 71:2:Send: RFC    | 71:1:Recv: RFC    |
RESET HPIL -> aucun message HP-IL généré, initialisation interne de l'interface HP-IL du HP-71B

CONTROL ON -> identique à la sequence RESTORE IO, le contrôleur est déja en contrôle de la boucle, donc rien de spécial a faire.

Code : Tout sélectionner

| 71:1:Send: IFC    | 71:2:Recv: IFC    | 71:2:Send: IFC    | 71:1:Recv: IFC    |
| 71:1:Send: RFC    | 71:2:Recv: RFC    | 71:2:Send: RFC    | 71:1:Recv: RFC    |
| 71:1:Send: AAU    | 71:2:Recv: AAU    | 71:2:Send: AAU    | 71:1:Recv: AAU    |
| 71:1:Send: RFC    | 71:2:Recv: RFC    | 71:2:Send: RFC    | 71:1:Recv: RFC    |
| 71:1:Send: AAD  1 | 71:2:Recv: AAD  1 | 71:2:Send: AAD  2 | 71:1:Recv: AAD  2 |
| 71:1:Send: UNL    | 71:2:Recv: UNL    | 71:2:Send: UNL    | 71:1:Recv: UNL    |
| 71:1:Send: RFC    | 71:2:Recv: RFC    | 71:2:Send: RFC    | 71:1:Recv: RFC    |
| 71:1:Send: TAD  1 | 71:2:Recv: TAD  1 | 71:2:Send: TAD  1 | 71:1:Recv: TAD  1 |
| 71:1:Send: RFC    | 71:2:Recv: RFC    | 71:2:Send: RFC    | 71:1:Recv: RFC    |
| 71:1:Send: SAI    | 71:2:Recv: SAI    | 71:2:Send: DAB  3 | 71:1:Recv: DAB  3 |
| 71:1:Send: DAB  3 | 71:2:Recv: DAB  3 | 71:2:Send: ETO    | 71:1:Recv: ETO    |
| 71:1:Send: UNT    | 71:2:Recv: UNT    | 71:2:Send: UNT    | 71:1:Recv: UNT    |
| 71:1:Send: RFC    | 71:2:Recv: RFC    | 71:2:Send: RFC    | 71:1:Recv: RFC    |
REMOTE -> place tous les periphériques en mode contrôle à distance.

Code : Tout sélectionner

REN        Remote Enable               Active le mode remote du périquérique.

Code : Tout sélectionner

| 71:1:Send: UNL    | 71:2:Recv: UNL    | 71:2:Send: UNL    | 71:1:Recv: UNL    |
| 71:1:Send: RFC    | 71:2:Recv: RFC    | 71:2:Send: RFC    | 71:1:Recv: RFC    |
| 71:1:Send: REN    | 71:2:Recv: REN    | 71:2:Send: REN    | 71:1:Recv: REN    |
| 71:1:Send: RFC    | 71:2:Recv: RFC    | 71:2:Send: RFC    | 71:1:Recv: RFC    |
OUTPUT :HP71;"MEM"

Code : Tout sélectionner

| 71:1:Send: UNL    | 71:2:Recv: UNL    | 71:2:Send: UNL    | 71:1:Recv: UNL    |
| 71:1:Send: RFC    | 71:2:Recv: RFC    | 71:2:Send: RFC    | 71:1:Recv: RFC    |
| 71:1:Send: TAD  1 | 71:2:Recv: TAD  1 | 71:2:Send: TAD  1 | 71:1:Recv: TAD  1 |
| 71:1:Send: RFC    | 71:2:Recv: RFC    | 71:2:Send: RFC    | 71:1:Recv: RFC    |
| 71:1:Send: SDI    | 71:2:Recv: SDI    | 71:2:Send: DAB 48 | 71:1:Recv: DAB 48 |
| 71:1:Send: DAB 48 | 71:2:Recv: DAB 48 | 71:2:Send: DAB 50 | 71:1:Recv: DAB 50 |
| 71:1:Send: DAB 50 | 71:2:Recv: DAB 50 | 71:2:Send: DAB 37 | 71:1:Recv: DAB 37 |
| 71:1:Send: DAB 37 | 71:2:Recv: DAB 37 | 71:2:Send: DAB 31 | 71:1:Recv: DAB 31 |
| 71:1:Send: DAB 31 | 71:2:Recv: DAB 31 | 71:2:Send: DAB 0D | 71:1:Recv: DAB 0D |
| 71:1:Send: DAB 0D | 71:2:Recv: DAB 0D | 71:2:Send: DAB 0A | 71:1:Recv: DAB 0A |
| 71:1:Send: DAB 0A | 71:2:Recv: DAB 0A | 71:2:Send: ETO    | 71:1:Recv: ETO    |
| 71:1:Send: UNL    | 71:2:Recv: UNL    | 71:2:Send: UNL    | 71:1:Recv: UNL    |
| 71:1:Send: RFC    | 71:2:Recv: RFC    | 71:2:Send: RFC    | 71:1:Recv: RFC    |
| 71:1:Send: LAD  1 | 71:2:Recv: LAD  1 | 71:2:Send: LAD  1 | 71:1:Recv: LAD  1 |
| 71:1:Send: RFC    | 71:2:Recv: RFC    | 71:2:Send: RFC    | 71:1:Recv: RFC    |
| 71:1:Send: UNT    | 71:2:Recv: UNT    | 71:2:Send: UNT    | 71:1:Recv: UNT    |
| 71:1:Send: RFC    | 71:2:Recv: RFC    | 71:2:Send: RFC    | 71:1:Recv: RFC    |
| 71:1:Send: DAB 4D | 71:2:Recv: DAB 4D | 71:2:Send: DAB 4D | 71:1:Recv: DAB 4D |
| 71:1:Send: DAB 45 | 71:2:Recv: DAB 45 | 71:2:Send: DAB 45 | 71:1:Recv: DAB 45 |
| 71:1:Send: DAB 4D | 71:2:Recv: DAB 4D | 71:2:Send: DAB 4D | 71:1:Recv: DAB 4D |
| 71:1:Send: DAB 0D | 71:2:Recv: DAB 0D | 71:2:Send: DAB 0D | 71:1:Recv: DAB 0D |
| 71:1:Send: DAB 0A | 71:2:Recv: DAB 0A | 71:2:Send: DAB 0A | 71:1:Recv: DAB 0A |
| 71:1:Send: UNT    | 71:2:Recv: UNT    | 71:2:Send: UNT    | 71:1:Recv: UNT    |
| 71:1:Send: RFC    | 71:2:Recv: RFC    | 71:2:Send: RFC    | 71:1:Recv: RFC    |
| 71:1:Send: UNL    | 71:2:Recv: UNL    | 71:2:Send: UNL    | 71:1:Recv: UNL    |
| 71:1:Send: RFC    | 71:2:Recv: RFC    | 71:2:Send: RFC    | 71:1:Recv: RFC    |
Analyse des trames de la commande OUTPUT

Set #01 - désactive tous les listener

Code : Tout sélectionner

UNL        Unlisten                    Désactive tous les "listener" de la boucle.
RFC        Ready For Command           Vérifie que tous les périphériques sont prêts à recevoir la commande suivante

Code : Tout sélectionner

| 71:1:Send: UNL    | 71:2:Recv: UNL    | 71:2:Send: UNL    | 71:1:Recv: UNL    |
| 71:1:Send: RFC    | 71:2:Recv: RFC    | 71:2:Send: RFC    | 71:1:Recv: RFC    |
Set #02 - le HP-71 device devient le talker de la boucle

Code : Tout sélectionner

TAD 01     Talk Address                Configure le périphérique #1 comme Talker.
RFC        Ready For Command           Vérifie que tous les périphériques sont prêts à recevoir la commande suivante

Code : Tout sélectionner

| 71:1:Send: TAD  1 | 71:2:Recv: TAD  1 | 71:2:Send: TAD  1 | 71:1:Recv: TAD  1 |
| 71:1:Send: RFC    | 71:2:Recv: RFC    | 71:2:Send: RFC    | 71:1:Recv: RFC    |
Set #03 - le HP-71 contrôleur demande au HP-71 device de transmettre son Device ID

Code : Tout sélectionner

SDI        Send Device ID              Demande au périphérique de transmettre son device identifier.
DAB xx     Data Byte xx                Device identifier en ASCII -> HP71[CR][LF]
ETO        End of Transmission Ok      HP-71 (device) indique que la transmission est terminée

Code : Tout sélectionner

| 71:1:Send: SDI    | 71:2:Recv: SDI    | 71:2:Send: DAB 48 | 71:1:Recv: DAB 48 |
| 71:1:Send: DAB 48 | 71:2:Recv: DAB 48 | 71:2:Send: DAB 50 | 71:1:Recv: DAB 50 |
| 71:1:Send: DAB 50 | 71:2:Recv: DAB 50 | 71:2:Send: DAB 37 | 71:1:Recv: DAB 37 |
| 71:1:Send: DAB 37 | 71:2:Recv: DAB 37 | 71:2:Send: DAB 31 | 71:1:Recv: DAB 31 |
| 71:1:Send: DAB 31 | 71:2:Recv: DAB 31 | 71:2:Send: DAB 0D | 71:1:Recv: DAB 0D |
| 71:1:Send: DAB 0D | 71:2:Recv: DAB 0D | 71:2:Send: DAB 0A | 71:1:Recv: DAB 0A |
| 71:1:Send: DAB 0A | 71:2:Recv: DAB 0A | 71:2:Send: ETO    | 71:1:Recv: ETO    |
Set #04 - désactive tous les listener

Code : Tout sélectionner

UNL        Unlisten                    Désactive tous les "listener" de la boucle.
RFC        Ready For Command           Vérifie que tous les périphériques sont prêts à recevoir la commande suivante

Code : Tout sélectionner

| 71:1:Send: UNL    | 71:2:Recv: UNL    | 71:2:Send: UNL    | 71:1:Recv: UNL    |
| 71:1:Send: RFC    | 71:2:Recv: RFC    | 71:2:Send: RFC    | 71:1:Recv: RFC    |
Set #05 - le HP-71 device devient le talker de la boucle

Code : Tout sélectionner

LAD 01     Listen Address              Configure le périphérique #1 comme un listener.
RFC        Ready For Command           Vérifie que tous les périphériques sont prêts à recevoir la commande suivante

Code : Tout sélectionner

| 71:1:Send: LAD  1 | 71:2:Recv: LAD  1 | 71:2:Send: LAD  1 | 71:1:Recv: LAD  1 |
| 71:1:Send: RFC    | 71:2:Recv: RFC    | 71:2:Send: RFC    | 71:1:Recv: RFC    |
Set #06 - désactive le talker de la boucle (HP71 device)

Code : Tout sélectionner

UNT        Untalk                      Désactive le "talker" de la boucle.
RFC        Ready For Command           Vérifie que tous les périphériques sont prêts à recevoir la commande suivante

Code : Tout sélectionner

| 71:1:Send: UNT    | 71:2:Recv: UNT    | 71:2:Send: UNT    | 71:1:Recv: UNT    |
| 71:1:Send: RFC    | 71:2:Recv: RFC    | 71:2:Send: RFC    | 71:1:Recv: RFC    |
Set #07 - le HP71 contrôleur est maintenant le talker de la boucle.

Code : Tout sélectionner

DAB xx     Data Byte xx                Commande en ASCII envoyées à tous les listeners de la boucle -> MEM[CR][LF]

Code : Tout sélectionner

| 71:1:Send: DAB 4D | 71:2:Recv: DAB 4D | 71:2:Send: DAB 4D | 71:1:Recv: DAB 4D |
| 71:1:Send: DAB 45 | 71:2:Recv: DAB 45 | 71:2:Send: DAB 45 | 71:1:Recv: DAB 45 |
| 71:1:Send: DAB 4D | 71:2:Recv: DAB 4D | 71:2:Send: DAB 4D | 71:1:Recv: DAB 4D |
| 71:1:Send: DAB 0D | 71:2:Recv: DAB 0D | 71:2:Send: DAB 0D | 71:1:Recv: DAB 0D |
| 71:1:Send: DAB 0A | 71:2:Recv: DAB 0A | 71:2:Send: DAB 0A | 71:1:Recv: DAB 0A |
Set #08 - désactive le talker de la boucle (HP71 controler).

Code : Tout sélectionner

UNT        Untalk                      Désactive le "talker" de la boucle.
RFC        Ready For Command           Vérifie que tous les périphériques sont prêts à recevoir la commande suivante

Code : Tout sélectionner

| 71:1:Send: UNT    | 71:2:Recv: UNT    | 71:2:Send: UNT    | 71:1:Recv: UNT    |
| 71:1:Send: RFC    | 71:2:Recv: RFC    | 71:2:Send: RFC    | 71:1:Recv: RFC    |
Set #09 - désactive tous les listener.

Code : Tout sélectionner

UNL        Unlisten                    Désactive tous les "listener" de la boucle.
RFC        Ready For Command           Vérifie que tous les périphériques sont prêts à recevoir la commande suivante

Code : Tout sélectionner

| 71:1:Send: UNL    | 71:2:Recv: UNL    | 71:2:Send: UNL    | 71:1:Recv: UNL    |
| 71:1:Send: RFC    | 71:2:Recv: RFC    | 71:2:Send: RFC    | 71:1:Recv: RFC    |
OUTPUT :1;"MEM" -> même commande que la précédente, mais en utilisant son adresse dans la boucle.

Code : Tout sélectionner

| 71:1:Send: UNL    | 71:2:Recv: UNL    | 71:2:Send: UNL    | 71:1:Recv: UNL    |
| 71:1:Send: RFC    | 71:2:Recv: RFC    | 71:2:Send: RFC    | 71:1:Recv: RFC    |
| 71:1:Send: LAD  1 | 71:2:Recv: LAD  1 | 71:2:Send: LAD  1 | 71:1:Recv: LAD  1 |
| 71:1:Send: RFC    | 71:2:Recv: RFC    | 71:2:Send: RFC    | 71:1:Recv: RFC    |
| 71:1:Send: UNT    | 71:2:Recv: UNT    | 71:2:Send: UNT    | 71:1:Recv: UNT    |
| 71:1:Send: RFC    | 71:2:Recv: RFC    | 71:2:Send: RFC    | 71:1:Recv: RFC    |
| 71:1:Send: DAB 4D | 71:2:Recv: DAB 4D | 71:2:Send: DAB 4D | 71:1:Recv: DAB 4D |
| 71:1:Send: DAB 45 | 71:2:Recv: DAB 45 | 71:2:Send: DAB 45 | 71:1:Recv: DAB 45 |
| 71:1:Send: DAB 4D | 71:2:Recv: DAB 4D | 71:2:Send: DAB 4D | 71:1:Recv: DAB 4D |
| 71:1:Send: DAB 0D | 71:2:Recv: DAB 0D | 71:2:Send: DAB 0D | 71:1:Recv: DAB 0D |
| 71:1:Send: DAB 0A | 71:2:Recv: DAB 0A | 71:2:Send: DAB 0A | 71:1:Recv: DAB 0A |
| 71:1:Send: UNT    | 71:2:Recv: UNT    | 71:2:Send: UNT    | 71:1:Recv: UNT    |
| 71:1:Send: RFC    | 71:2:Recv: RFC    | 71:2:Send: RFC    | 71:1:Recv: RFC    |
| 71:1:Send: UNL    | 71:2:Recv: UNL    | 71:2:Send: UNL    | 71:1:Recv: UNL    |
| 71:1:Send: RFC    | 71:2:Recv: RFC    | 71:2:Send: RFC    | 71:1:Recv: RFC    |
L'avantage d'utiliser l'adresse est que le contrôleur n'a pas à découvrir où se trouve le destinataire de la commande

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 janv. 2022 11:09

Merci pour l'analyse des trames ! 8)

Pour la séquence OUTPUT :HP71;"MEM", ça serait intéressant d'avoir un autre type de device dans la boucle avant le HP-71 device, pour voir comment le controller continue sa recherche jusqu'à trouver un HP-71 :geek:

Et du coup tu sais confirmer la différence entre ces 2 commandes ? :

Code : Tout sélectionner

OUTPUT "HP71";"MEM"
OUTPUT :HP71;"MEM"
D'après le décodage de OUTPUT :HP71;"MEM" ci-dessus, je crois comprendre qu'une fois que le 1er device a répondu que son ID est HP71, le controller désactive tous les listeners, ce qui voudrait dire qu'il n'a plus besoin de poursuivre la recherche, donc cette commande ciblerait seulement le 1er device de type HP71 alors que OUTPUT "HP71";"MEM" les ciblerait tous... mais j'ai toujours un doute :)
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 » 21 janv. 2022 15:56

Danny,

Je vais refaire le test ce soir (GMT-5h) avec la configuration suivante:

0: 71B contrôleur-actif (loop-controler)
-: PIL-Box avec pyILPer en mode scope (loop controller outgoing frames sniffer, transparent sur la boucle)
1: 82161A lecteur de cassette
2: 71B contrôleur-passif (device)
3: 82162A imprimante thermique
4: 71B contrôleur-passif (device)
5: 82164A interface RS-232C
-: PIL-Box avec pyILPer en mode scope (loop controller incoming frames sniffer, transparent sur la boucle)

Avec six appareils visible sur la boucle, attend toi a avoir une trace HP-IL plus complexe à suivre, style:

0:Send → 1:Recv/1:Send → 2:Recv/2:Send → 3:Recv/3:Send → 4:Recv/4:Send → 5:Recv/5:Send → 0:Recv

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 » 21 janv. 2022 18:17

Belle boucle ! :o
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 » 21 janv. 2022 23:16

Danny a écrit :
21 janv. 2022 18:17
Belle boucle ! :o
Yep! 8)
Danny a écrit :
21 janv. 2022 11:09
D'après le décodage de OUTPUT :HP71;"MEM" ci-dessus, je crois comprendre qu'une fois que le 1er device a répondu que son ID est HP71, le controller désactive tous les listeners, ce qui voudrait dire qu'il n'a plus besoin de poursuivre la recherche, donc cette commande ciblerait seulement le 1er device de type HP71 alors que OUTPUT "HP71";"MEM" les ciblerait tous... mais j'ai toujours un doute :)
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.

Choisir l'option "Aperçu avant impression" pour obtenir une meilleure visualisation des trames HP-IL.

================
POWER ON Sequence
================

Code : Tout sélectionner

| 0:71-Ctr | 1:82161A Tape Drive | 2:71B Device #1     | 3:82162A Printer    | 4:71B Device #2     | 5:82164A Interface  | 0:71-Ctr | HP-IL Command             | Description
---

Code : Tout sélectionner

| S:NOP    | R:NOP    → S:NOP    | R:NOP    → S:NOP    | R:NOP    → S:NOP    | R:NOP    → S:NOP    | R:NOP    → S:NOP    | R:NOP    | No Operation              | donne au périphérique le temps de se réveiller.
| S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    | Ready For Command         | vérifie que le périphérique est prêt à recevoir la commande suivante.
---

Code : Tout sélectionner

| S:AAU    | R:AAU    → S:AAU    | R:AAU    → S:AAU    | R:AAU    → S:AAU    | R:AAU    → S:AAU    | R:AAU    → S:AAU    | R:AAU    | Auto-Address Unconfigure  | adresse du périphérique = 31
| S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    | Ready For Command         | vérifie que le périphérique est prêt à recevoir la commande suivante.
---

Code : Tout sélectionner

| S:AAD  1 | R:AAD  1 → S:AAD  2 | R:AAD  2 → S:AAD  3 | R:AAD  3 → S:AAD  4 | R:AAD  4 → S:AAD  5 | R:AAD  5 → S:AAD  6 | R:AAD  6 | Auto-Address              | adresse du périphérique = parametre recu
---

Code : Tout sélectionner

| S:UNL    | R:UNL    → S:UNL    | R:UNL    → S:UNL    | R:UNL    → S:UNL    | R:UNL    → S:UNL    | R:UNL    → S:UNL    | R:UNL    | Unlisten                  | s'assure que le périphérique n'est pas un "listener"
| S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    | Ready For Command         | vérifie que le périphérique est prêt à recevoir la commande suivante.
---

Code : Tout sélectionner

| S:TAD  1 | R:TAD  1 → S:TAD  1 | R:TAD  1 → S:TAD  1 | R:TAD  1 → S:TAD  1 | R:TAD  1 → S:TAD  1 | R:TAD  1 → S:TAD  1 | R:TAD  1 | Talk Address 1            | le périphérique #1 (82161A) devient le "talker" de la boucle
| S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    | Ready For Command         | vérifie que le périphérique est prêt à recevoir la commande suivante.
| S:SAI    | R:SAI    → S:DAB 10 | R:DAB 10 → S:DAB 10 | R:DAB 10 → S:DAB 10 | R:DAB 10 → S:DAB 10 | R:DAB 10 → S:DAB 10 | R:DAB 10 | Send Accessory ID         | 10 = Mass Storage Device
| S:DAB 10 | R:DAB 10 → S:ETO    | R:ETO    → S:ETO    | R:ETO    → S:ETO    | R:ETO    → S:ETO    | R:ETO    → S:ETO    | R:ETO    | End of Transmission OK    | le 82161A n'a pas d'autre information à envoyer
---

Code : Tout sélectionner

| S:TAD  2 | R:TAD  2 → S:TAD  2 | R:TAD  2 → S:TAD  2 | R:TAD  2 → S:TAD  2 | R:TAD  2 → S:TAD  2 | R:TAD  2 → S:TAD  2 | R:TAD  2 | Talk Address 2            | le périphérique #2 (71B Device #1) devient le "talker" de la boucle
| S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    | Ready For Command         | vérifie que le périphérique est prêt à recevoir la commande suivante.
| S:SAI    | R:SAI    → S:SAI    | R:SAI    → S:DAB 03 | R:DAB 03 → S:DAB 03 | R:DAB 03 → S:DAB 03 | R:DAB 03 → S:DAB 03 | R:DAB 03 | Send Accessory ID         | 03 = Full interface controller partially automatic
| S:DAB 03 | R:DAB 03 → S:DAB 03 | R:DAB 03 → S:ETO    | R:ETO    → S:ETO    | R:ETO    → S:ETO    | R:ETO    → S:ETO    | R:ETO    | End of Transmission OK    | le 71B#1 n'a pas d'autre information à envoyer
---

Code : Tout sélectionner

| S:TAD  3 | R:TAD  3 → S:TAD  3 | R:TAD  3 → S:TAD  3 | R:TAD  3 → S:TAD  3 | R:TAD  3 → S:TAD  3 | R:TAD  3 → S:TAD  3 | R:TAD  3 | Talk Address 3            | le périphérique #3 (82162A) devient le "talker" de la boucle
| S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    | Ready For Command         | vérifie que le périphérique est prêt à recevoir la commande suivante.
| S:SAI    | R:SAI    → S:SAI    | R:SAI    → S:SAI    | R:SAI    → S:DAB 20 | R:DAB 20 → S:DAB 20 | R:DAB 20 → S:DAB 20 | R:DAB 20 | Send Accessory ID         | 20 = Printer
| S:DAB 20 | R:DAB 20 → S:DAB 20 | R:DAB 20 → S:DAB 20 | R:DAB 20 → S:ETO    | R:ETO    → S:ETO    | R:ETO    → S:ETO    | R:ETO    | End of Transmission OK    | le 82162A n'a pas d'autre information à envoyer
---

Code : Tout sélectionner

| S:TAD  4 | R:TAD  4 → S:TAD  4 | R:TAD  4 → S:TAD  4 | R:TAD  4 → S:TAD  4 | R:TAD  4 → S:TAD  4 | R:TAD  4 → S:TAD  4 | R:TAD  4 | Talk Address 4            | le périphérique #4 (71B Device #2) devient le "talker" de la boucle
| S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    | Ready For Command         | vérifie que le périphérique est prêt à recevoir la commande suivante.
| S:SAI    | R:SAI    → S:SAI    | R:SAI    → S:SAI    | R:SAI    → S:SAI    | R:SAI    → S:DAB 03 | R:DAB 03 → S:DAB 03 | R:DAB 03 | Send Accessory ID         | 03 = Full interface controller partially automatic
| S:DAB 03 | R:DAB 03 → S:DAB 03 | R:DAB 03 → S:DAB 03 | R:DAB 03 → S:DAB 03 | R:DAB 03 → S:ETO    | R:ETO    → S:ETO    | R:ETO    | End of Transmission OK    | le 71B#2 n'a pas d'autre information à envoyer
---

Code : Tout sélectionner

| S:TAD  5 | R:TAD  5 → S:TAD  5 | R:TAD  5 → S:TAD  5 | R:TAD  5 → S:TAD  5 | R:TAD  5 → S:TAD  5 | R:TAD  5 → S:TAD  5 | R:TAD  5 | Talk Address 5            | le périphérique #5 (82164A) devient le "talker" de la boucle
| S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    | Ready For Command         | vérifie que le périphérique est prêt à recevoir la commande suivante.
| S:SAI    | R:SAI    → S:SAI    | R:SAI    → S:SAI    | R:SAI    → S:SAI    | R:SAI    → S:SAI    | R:SAI    → S:DAB 42 | R:DAB 42 | Send Accessory ID         | 42 = HP-IL/RS-232-C Interface
| S:DAB 42 | R:DAB 42 → S:DAB 42 | R:DAB 42 → S:DAB 42 | R:DAB 42 → S:DAB 42 | R:DAB 42 → S:DAB 42 | R:DAB 42 → S:ETO    | R:ETO    | End of Transmission OK    | le 82164A n'a pas d'autre information à envoyer
---

Code : Tout sélectionner

| S:UNT    | R:UNT    → S:UNT    | R:UNT    → S:UNT    | R:UNT    → S:UNT    | R:UNT    → S:UNT    | R:UNT    → S:UNT    | R:UNT    | Untalk                    | désactive le "talker" de la boucle
| S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    | Ready For Command         | vérifie que le périphérique est prêt à recevoir la commande suivante.
==============
REMOTE Sequence
==============

Code : Tout sélectionner

| 0:71-Ctr | 1:82161A Tape Drive | 2:71B Device #1     | 3:82162A Printer    | 4:71B Device #2     | 5:82164A Interface  | 0:71-Ctr | HP-IL Command             | Description
---

Code : Tout sélectionner

| S:UNL    | R:UNL    → S:UNL    | R:UNL    → S:UNL    | R:UNL    → S:UNL    | R:UNL    → S:UNL    | R:UNL    → S:UNL    | R:UNL    | Unlisten                  | s'assure que le périphérique n'est pas un "listener"
| S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    | Ready For Command         | vérifie que le périphérique est prêt à recevoir la commande suivante.
| S:REN    | R:REN    → S:REN    | R:REN    → S:REN    | R:REN    → S:REN    | R:REN    → S:REN    | R:REN    → S:REN    | R:REN    | Remote Enable             | active le mode remote (contrôle à distance)
| S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    | Ready For Command         | vérifie que le périphérique est prêt à recevoir la commande suivante.
=================
OUTPUT :HP71;"MEM"
=================

Code : Tout sélectionner

| 0:71-Ctr | 1:82161A Tape Drive | 2:71B Device #1     | 3:82162A Printer    | 4:71B Device #2     | 5:82164A Interface  | 0:71-Ctr | HP-IL Command             | Description
---

Code : Tout sélectionner

| S:UNL    | R:UNL    → S:UNL    | R:UNL    → S:UNL    | R:UNL    → S:UNL    | R:UNL    → S:UNL    | R:UNL    → S:UNL    | R:UNL    | Unlisten                  | s'assure que le périphérique n'est pas un "listener"
| S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    | Ready For Command         | vérifie que le périphérique est prêt à recevoir la commande suivante.
---

Code : Tout sélectionner

| S:TAD  1 | R:TAD  1 → S:TAD  1 | R:TAD  1 → S:TAD  1 | R:TAD  1 → S:TAD  1 | R:TAD  1 → S:TAD  1 | R:TAD  1 → S:TAD  1 | R:TAD  1 | Talk Address 1            | le périphérique #1 (82161A) devient le "talker" de la boucle
| S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    | Ready For Command         | vérifie que le périphérique est prêt à recevoir la commande suivante.
| S:SDI    | R:SDI    → S:SDI    | R:SDI    → S:SDI    | R:SDI    → S:SDI    | R:SDI    → S:SDI    | R:SDI    → S:SDI    | R:SDI    | Send Device ID            | commande HP-IL non-supporté par 82161A
---

Code : Tout sélectionner

| S:TAD  2 | R:TAD  2 → S:TAD  2 | R:TAD  2 → S:TAD  2 | R:TAD  2 → S:TAD  2 | R:TAD  2 → S:TAD  2 | R:TAD  2 → S:TAD  2 | R:TAD  2 | Talk Address 2            | le périphérique #2 (71B#1) devient le "talker" de la boucle
| S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    | Ready For Command         | vérifie que le périphérique est prêt à recevoir la commande suivante.
| S:SDI    | R:SDI    → S:SDI    | R:SDI    → S:DAB 48 | R:DAB 48 → S:DAB 48 | R:DAB 48 → S:DAB 48 | R:DAB 48 → S:DAB 48 | R:DAB 48 | Send Device ID            | ASCII: "HP71[CR][LF]"
| S:DAB 48 | R:DAB 48 → S:DAB 48 | R:DAB 48 → S:DAB 50 | R:DAB 50 → S:DAB 50 | R:DAB 50 → S:DAB 50 | R:DAB 50 → S:DAB 50 | R:DAB 50 | Data Byte                 | 
| S:DAB 50 | R:DAB 50 → S:DAB 50 | R:DAB 50 → S:DAB 37 | R:DAB 37 → S:DAB 37 | R:DAB 37 → S:DAB 37 | R:DAB 37 → S:DAB 37 | R:DAB 37 | Data Byte                 | 
| S:DAB 37 | R:DAB 37 → S:DAB 37 | R:DAB 37 → S:DAB 31 | R:DAB 31 → S:DAB 31 | R:DAB 31 → S:DAB 31 | R:DAB 31 → S:DAB 31 | R:DAB 31 | Data Byte                 | 
| S:DAB 31 | R:DAB 31 → S:DAB 31 | R:DAB 31 → S:DAB 0D | R:DAB 0D → S:DAB 0D | R:DAB 0D → S:DAB 0D | R:DAB 0D → S:DAB 0D | R:DAB 0D | Data Byte                 | 
| S:DAB 0D | R:DAB 0D → S:DAB 0D | R:DAB 0D → S:DAB 0A | R:DAB 0A → S:DAB 0A | R:DAB 0A → S:DAB 0A | R:DAB 0A → S:DAB 0A | R:DAB 0A | Data Byte                 | 
| S:DAB 0A | R:DAB 0A → S:DAB 0A | R:DAB 0A → S:ETO    | R:ETO    → S:ETO    | R:ETO    → S:ETO    | R:ETO    → S:ETO    | R:ETO    | End of Transmission OK    | le 71B#1 n'a pas d'autre information à envoyer
---

Code : Tout sélectionner

| S:UNL    | R:UNL    → S:UNL    | R:UNL    → S:UNL    | R:UNL    → S:UNL    | R:UNL    → S:UNL    | R:UNL    → S:UNL    | R:UNL    | Unlisten                  | s'assure que le périphérique n'est pas un "listener"
| S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    | Ready For Command         | vérifie que le périphérique est prêt à recevoir la commande suivante.
---

Code : Tout sélectionner

| S:LAD  2 | R:LAD  2 → S:LAD  2 | R:LAD  2 → S:LAD  2 | R:LAD  2 → S:LAD  2 | R:LAD  2 → S:LAD  2 | R:LAD  2 → S:LAD  2 | R:LAD  2 | Listen Address 2          | le périphérique #2 (71B#1) devient un "listener" sur la boucle
| S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    | Ready For Command         | vérifie que le périphérique est prêt à recevoir la commande suivante.
---

Code : Tout sélectionner

| S:UNT    | R:UNT    → S:UNT    | R:UNT    → S:UNT    | R:UNT    → S:UNT    | R:UNT    → S:UNT    | R:UNT    → S:UNT    | R:UNT    | Untalk                    | désactive le "talker" de la boucle, le contrôleur devient implicitement le "talker"
| S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    | Ready For Command         | vérifie que le périphérique est prêt à recevoir la commande suivante.
---

Code : Tout sélectionner

| S:DAB 4D | R:DAB 4D → S:DAB 4D | R:DAB 4D → S:DAB 4D | R:DAB 4D → S:DAB 4D | R:DAB 4D → S:DAB 4D | R:DAB 4D → S:DAB 4D | R:DAB 4D | Data Byte                 | Le contrôleur (71-Ctr) envoie la chaîne ASCII: "MEM[CR][LF]" à tous les "listener"
| S:DAB 45 | R:DAB 45 → S:DAB 45 | R:DAB 45 → S:DAB 45 | R:DAB 45 → S:DAB 45 | R:DAB 45 → S:DAB 45 | R:DAB 45 → S:DAB 45 | R:DAB 45 | Data Byte                 | 
| S:DAB 4D | R:DAB 4D → S:DAB 4D | R:DAB 4D → S:DAB 4D | R:DAB 4D → S:DAB 4D | R:DAB 4D → S:DAB 4D | R:DAB 4D → S:DAB 4D | R:DAB 4D | Data Byte                 | 
| S:DAB 0D | R:DAB 0D → S:DAB 0D | R:DAB 0D → S:DAB 0D | R:DAB 0D → S:DAB 0D | R:DAB 0D → S:DAB 0D | R:DAB 0D → S:DAB 0D | R:DAB 0D | Data Byte                 | 
| S:DAB 0A | R:DAB 0A → S:DAB 0A | R:DAB 0A → S:DAB 0A | R:DAB 0A → S:DAB 0A | R:DAB 0A → S:DAB 0A | R:DAB 0A → S:DAB 0A | R:DAB 0A | Data Byte                 | 
---

Code : Tout sélectionner

| S:UNT    | R:UNT    → S:UNT    | R:UNT    → S:UNT    | R:UNT    → S:UNT    | R:UNT    → S:UNT    | R:UNT    → S:UNT    | R:UNT    | Untalk                    | désactive le "talker" de la boucle, le contrôleur devient implicitement le "talker"
| S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    | Ready For Command         | vérifie que le périphérique est prêt à recevoir la commande suivante.
---

Code : Tout sélectionner

| S:UNL    | R:UNL    → S:UNL    | R:UNL    → S:UNL    | R:UNL    → S:UNL    | R:UNL    → S:UNL    | R:UNL    → S:UNL    | R:UNL    | Unlisten                  | s'assure que le périphérique n'est pas un "listener"
| S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    → S:RFC    | R:RFC    | Ready For Command         | vérifie que le périphérique est prêt à recevoir la commande suivante.
================

Répondre

Revenir vers « Tous les Pockets »