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 du membre
Marge
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 6172
Enregistré le : 01 oct. 2008 14:39
Localisation : En bas, tout au fond à gauche.

Re: HP-IL: communication entre 2 pockets HP

Message par Marge »

Trop fort !
3 hommes, 3 demis, un 3a... Magnéto, Serge !

Quelques-uns de mes petits programmes pour machines Hewlett-Packard :
15C : Knight's Tour ;
29C : (k-)Permutations, Combinations, Linear Regression and Pseudo-random number ;
34C : Hanoi Towers - Automatic & Manual resolutions ;
67
__: A L I E N .

« Boris », c'était juste Maurice enrhumé.
Avatar du membre
pcscote
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 160
Enregistré le : 11 juil. 2018 01:06
Localisation : Québec/Canada

Re: HP-IL: communication entre 2 pockets HP

Message par pcscote »

Impressionnant ! Félicitation Danny !
Sylvain
Calculatrices et Pockets HP > J'ai tous les modèles, manuels, accessoires et périphériques, mes préférés: 41, 71 & 75.
Techno : 41 > 41CL, MLDL2K, Clonix-d, NoV-64d, MAXX | 71 > FRAM71, MultiMod | IL > PIL-Box, PIL-IO, GPIO | ...
Avatar du membre
forgeron
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 152
Enregistré le : 28 sept. 2007 19:34
Localisation : Paris XIème

Re: HP-IL: communication entre 2 pockets HP

Message par forgeron »

Je suis bluffé !
Au fait, combien peut on chaîner d'appareils dans une boucle HP-IL ?
Existe t il une limite ?
Un jour, mon père m'a offert une TI 57...
Avatar du membre
pcscote
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 160
Enregistré le : 11 juil. 2018 01:06
Localisation : Québec/Canada

Re: HP-IL: communication entre 2 pockets HP

Message par pcscote »

forgeron a écrit : 23 févr. 2022 23:04 Existe t il une limite ?
Bien sur. :wink:
forgeron a écrit : 23 févr. 2022 23:04 Au fait, combien peut on chaîner d'appareils dans une boucle HP-IL ?
Le nombre maximal de périphériques en mode d'adressage normal est de 31 et de 960 en mode d'adressage étendu.
Pages 5 et 6 du livre "The HP-IL System".

L'adresse 0 est réservé pour le contrôleur et
l'adresse 31 est utilisé pour indiquer que l'appareil n'a pas encore eu son adresse dans la boucle.

Sylvain
Modifié en dernier par pcscote le 24 févr. 2022 20:38, modifié 1 fois.
Sylvain
Calculatrices et Pockets HP > J'ai tous les modèles, manuels, accessoires et périphériques, mes préférés: 41, 71 & 75.
Techno : 41 > 41CL, MLDL2K, Clonix-d, NoV-64d, MAXX | 71 > FRAM71, MultiMod | IL > PIL-Box, PIL-IO, GPIO | ...
Avatar du membre
forgeron
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 152
Enregistré le : 28 sept. 2007 19:34
Localisation : Paris XIème

Re: HP-IL: communication entre 2 pockets HP

Message par forgeron »

Parfait, merci Sylvain
Plus que 29 à trouver... :mrgreen:
Merci pour le lien, je ne connaissais pas cet ouvrage
Un jour, mon père m'a offert une TI 57...
Avatar du membre
pcscote
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 160
Enregistré le : 11 juil. 2018 01:06
Localisation : Québec/Canada

Re: HP-IL: communication entre 2 pockets HP

Message par pcscote »

forgeron a écrit : 24 févr. 2022 19:48 Parfait, merci Sylvain
Merci pour le lien, je ne connaissais pas cet ouvrage
De rien et en voici d'autre ...
forgeron a écrit : 24 févr. 2022 19:48 Plus que 29 à trouver... :mrgreen:
J'ai plus de 30 périphériques HP-IL dans ma collection.
Il faudrait un jour que je configure une boucle à pleine capacité.
Malheureusement, la vitesse de communication reliée à cette configuration risque d'être affreusement lente.

Sylvain
Sylvain
Calculatrices et Pockets HP > J'ai tous les modèles, manuels, accessoires et périphériques, mes préférés: 41, 71 & 75.
Techno : 41 > 41CL, MLDL2K, Clonix-d, NoV-64d, MAXX | 71 > FRAM71, MultiMod | IL > PIL-Box, PIL-IO, GPIO | ...
Avatar du membre
Danny
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1248
Enregistré le : 28 déc. 2013 16:34

Re: HP-IL: communication entre 2 pockets HP

Message par Danny »

Ah oui, ça serait intéressant de voir combien de temps un message met à faire un tour de la boucle :D
? Apple, Atari, Canon, Casio, ????????????, HP, Psion, Sharp, Tandy... même TI.
Avatar du membre
forgeron
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 152
Enregistré le : 28 sept. 2007 19:34
Localisation : Paris XIème

Re: HP-IL: communication entre 2 pockets HP

Message par forgeron »

On pourrait se réunir aussi avec 31 périphérique et/ou pockets et essayer de battre un record de boucle. Si chacun en amène deux ou trois, ça pourrait le faire. Reste le problème des câbles. J'ai un vu un tuto quelque part qui expliquait comment en refaire avec plan pour imprimante 3D des connecteurs. Il faut que je le retrouve
Un jour, mon père m'a offert une TI 57...
Avatar du membre
pcscote
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 160
Enregistré le : 11 juil. 2018 01:06
Localisation : Québec/Canada

Re: HP-IL: communication entre 2 pockets HP

Message par pcscote »

forgeron a écrit : 24 févr. 2022 22:21 On pourrait se réunir aussi avec 31 périphérique et/ou pockets et essayer de battre un record de boucle.
Bonne idée, mais un peu loin pour moi, je réside au Québec (Canada). ;)
forgeron a écrit : 24 févr. 2022 22:21 Reste le problème des câbles.
Pas de problème pour bâtir la configuration chez moi, j'ai plus de 100 câbles HP-IL.
forgeron a écrit : 24 févr. 2022 22:21 J'ai un vu un tuto quelque part qui expliquait comment en refaire avec plan pour imprimante 3D des connecteurs. Il faut que je le retrouve
How to Make Your Own HP-IL Cables

Sylvain
Sylvain
Calculatrices et Pockets HP > J'ai tous les modèles, manuels, accessoires et périphériques, mes préférés: 41, 71 & 75.
Techno : 41 > 41CL, MLDL2K, Clonix-d, NoV-64d, MAXX | 71 > FRAM71, MultiMod | IL > PIL-Box, PIL-IO, GPIO | ...
Avatar du membre
pcscote
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 160
Enregistré le : 11 juil. 2018 01:06
Localisation : Québec/Canada

Re: HP-IL: communication entre 2 pockets HP

Message par pcscote »

Quelques dessins HP-IL que j'ai mis en ligne sur le HP Museum ...

HP-IL standard
Image

HP-IL avec PIL-Box et émulateur HP-IL
Image

HP-IL avec HP-IB
Image
Sylvain
Calculatrices et Pockets HP > J'ai tous les modèles, manuels, accessoires et périphériques, mes préférés: 41, 71 & 75.
Techno : 41 > 41CL, MLDL2K, Clonix-d, NoV-64d, MAXX | 71 > FRAM71, MultiMod | IL > PIL-Box, PIL-IO, GPIO | ...
Avatar du membre
Danny
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1248
Enregistré le : 28 déc. 2013 16:34

Re: HP-IL: communication entre 2 pockets HP

Message par Danny »

J'ai enfin fait une version pour HP-41 : ici le HP-41 reprend le rôle du controller dans la boucle (il ne peut pas être device de toute façon), et le HP-71B (qui est donc device) utilise le même programme que celui de la page précédente (que je détaille ci-dessous).

On note sur la vidéo que ça va beaucoup moins vite qu'entre 2 HP-71B :D

HP-IL with HP-41CV and HP-71B - Syracuse à deux (1).jpg
HP-IL with HP-41CV and HP-71B - Syracuse à deux (1).jpg (231.81 Kio) Vu 3787 fois
HP-IL with HP-41CV and HP-71B - Syracuse à deux (2).jpg
HP-IL with HP-41CV and HP-71B - Syracuse à deux (2).jpg (230.66 Kio) Vu 3787 fois

Et donc le code sur les 2 HP-71B (j'ai juste mis les n°s de lignes pour celles vers lesquelles on pointe avec un GOTO) :

Code : Tout sélectionner

Calcul de la suite de Syracuse partagée entre deux HP-71B
---------------------------------------------------------

// Sur le HP-71B device ("SYRACUSD") :
N = 0 @ M = 0
INPUT "Debut ? :";V
30 OUTPUT LOOP;V       ' envoie le nombre courant à l'autre HP-71B
IF V = 1 THEN N = 2 * N  @ GOTO 90
ENTER :LOOP;V          ' récupère le nombre suivant
PRINT V;
IF V = 1 THEN N = 2 * N + 1 @ GOTO 90
F = V / 2 @ F = F - INT(F)
IF (F = 0) THEN V = V / 2 @ BEEP 440,.05 ELSE V = 3 * V + 1 @ BEEP 1320,.05
N = N + 1
IF V > M THEN M = V
GOTO 30
90 PRINT "/ Flight time:"; N;
OUTPUT LOOP;M          ' envoie l'altitude max à l'autre HP-71B
ENTER :LOOP;M          ' récupère l'altitude max finale de l'autre HP-71B
PRINT "/ Max alt.:"; M

// Sur le HP-71B controller ("SYRACUSC") :
N = 0 @ M = 0
RESTORE IO @ CONTROL ON @ REMOTE
A = DEVADDR("HP71")    ' récupère l'adresse du device (le 1er HP-71B trouvé sur la boucle)
PRINT "Waiting..."
30 ENTER :A;V          ' récupère le nombre suivant
PRINT V;
IF V = 1 THEN N = 2 * N @ GOTO 90
F = V / 2 @ F = F - INT(F)
IF (F = 0) THEN V = V / 2 @ BEEP 440,.05 ELSE V = 3 * V + 1 @ BEEP 1320,.05
N = N + 1
IF V > M THEN M = V
OUTPUT :A;V            ' envoie le nombre courant à l'autre HP-71B
IF V = 1 THEN N = 2 * N - 1 @ GOTO 90
GOTO 30
90 PRINT "/ Flight time:"; N;
ENTER :A;N             ' récupère l'altitude max de l'autre HP-71B
IF N > M THEN M = N    ' conserve l'altitude max de l'autre HP-71B si elle est + grande
OUTPUT :A;M            ' envoie l'altitude max finale à l'autre HP-71B
PRINT "/ Max alt.:"; M

et le code sur le HP-41 (controller) : (R01 = altitude max, R02 = temps de vol)

Code : Tout sélectionner

AUTOIO             ' nécessaire seulement à la 1ère exécution
1 SELECT           ' nécessaire seulement à la 1ère exécution
REMOTE             ' nécessaire seulement à la 1ère exécution

0
STO 01
STO 02

LBL 00
CLA
XEQ "IND"          ' récupère le nombre suivant depuis la boucle HP-IL
ARCL ST X
AVIEW              ' affiche le nombre courant (avec une pause)
1
X!=Y?
GTO 01
RCL 02
2
ST* 02             ' N = N * 2
GTO 05             ' si altitude = 1, c'est fini

LBL 01
RDN
ENTER
ENTER
2
MOD
X=0?
GTO 02
RDN                ' cas V = 3 * V + 1
3
*
1
+
TONE 6
GTO 03

LBL 02
RDN                ' cas V = V / 2
2
/
TONE 3

LBL 03
ENTER
ENTER
RCL 01             ' vérifie si nouvelle altitude max
X>Y?
GTO 04
RDN
STO 01

LBL 04
1
ST+ 02             ' incrémente le temps de vol
RDN
RDN
CLA
ARCL ST X
XEQ "OUTA"         ' envoie le nombre courant au HP-71B
1
X!=Y?
GTO 00             ' si altitude <> 1, on continue
RCL 02
2
*
1
-
STO 02             ' N = N * 2 - 1

LBL 05             ' vol terminé
"FL. TIME: "
ARCL 02
AVIEW
RCL 01
XEQ "IND"          ' récupère l'altitude max venant du HP-71B
X>Y?
STO 01             ' conserve l'altitude max du HP-71B si elle est + grande
CLA
ARCL 01
XEQ "OUTA"         ' envoie l'altitude max finale au HP-71B
"MAX. ALT: "
ARCL 01
AVIEW
? Apple, Atari, Canon, Casio, ????????????, HP, Psion, Sharp, Tandy... même TI.
Avatar du membre
Hobiecat
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3626
Enregistré le : 06 sept. 2011 14:57
Localisation : Normandie

Re: HP-IL: communication entre 2 pockets HP

Message par Hobiecat »

Sympa ! Merci Danny pour ces essais !
Avatar du membre
Danny
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1248
Enregistré le : 28 déc. 2013 16:34

Re: HP-IL: communication entre 2 pockets HP

Message par Danny »

Syracuse HP-IL is back ! :D

Cette fois entre un HP-75C (qui est controller, comme le HP-41 il ne peut pas être device) et un HP-71B :

Image

La vidéo est ici.

Pour une prochaine fois, j'essaierai de trouver un truc sympa à faire à 3 (je parle de pockets HP dans une boucle HP-IL bien sûr :geek: ).
? Apple, Atari, Canon, Casio, ????????????, HP, Psion, Sharp, Tandy... même TI.
Avatar du membre
Hobiecat
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3626
Enregistré le : 06 sept. 2011 14:57
Localisation : Normandie

Re: HP-IL: communication entre 2 pockets HP

Message par Hobiecat »

Merci Danny, c'est toujours amusant de faire fonctionner la boucle HP-IL !
Avatar du membre
pcscote
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 160
Enregistré le : 11 juil. 2018 01:06
Localisation : Québec/Canada

Re: HP-IL: communication entre 2 pockets HP

Message par pcscote »

Danny a écrit : 18 mars 2023 20:29 Pour une prochaine fois, j'essaierai de trouver un truc sympa à faire à 3 (je parle de pockets HP dans une boucle HP-IL bien sûr :geek: ).
Lors de ma préparation de la présentation sur la communication HP-IL donnée à Allschwil en novembre 2022,
j'ai bâti une boucle avec huit HP-71B effectuant une communication asynchrone.

Image

Allschwil 2022 - Advanced HP-IL Communication
Advanced communication between 
HP-71B handheld computers over 
Hewlett-Packard Interface Loop. Programme 71B esclave qui roule sur toute les machines sauf le contrôleur.

Code : Tout sélectionner

 5 ! BC3D                                             Bidirectional comm. prog. 3, device side
10 DELAY 0,0                                          Set display as fast as possible
 @ RANDOMIZE                                          Random number generator
 @ A=MYADDR                                           Save my loop address
 @ CFLAG 0,1                                          Flag 0 (waiting for DDL 0) & flag 1 (waiting)
15 N=READINTR                                         Clear interrupt
 @ ON INTR GOSUB 50                                   Set interrupt handler
 @ ENABLE INTR 1                                      Enable interrupt on device dependent message
20 FOR V=1 TO 4                                       Loop to set or clear flags 1 to 4
25   DISP "D="&STR$(A)&"  S="&STR$(V)                   Ex.: "D=3  S=2"  (Device & Status)
30   SFLAG 0                                            Activate wait for DDL 0 message flag
 @   REQUEST 64+V                                       Raise SRQ bit while passing flag value
35   IF FLAG(0)=1 THEN                                  DDL 0 received ?
       SLEEP                                            No: go to sleep
 @     GOTO 35                                          Infinite DDL 0 wait loop
40   SFLAG 1                                            Activate wait flag
 @   WAIT IP(RND*10+1)/10                               Wait 100 ms to 1 sec, asynchronous simulation
 @   CFLAG 1                                            Deactivate wait flag
45 NEXT V                                             EndLoop
 @ GOTO 20                                            Infinite loop 
50 N=READINTR                                         Enter interrupt handler, clear interrupt
 @ C=READDDC                                          [00..31: DDT 0..31] & [32..63: DDL 0..31]
55 IF C=32 THEN                                       If DDL 0 received then
     CFLAG 0                                            Clear DDL 0 wait flag
 @   REQUEST V                                          Clear SRQ bit
60 ENABLE INTR 1                                      Re-enable device dependent interrupt
 @ RETURN                                             Leave interrupt handler
Programme 71B contrôleur.

Code : Tout sélectionner

  5 ! BC5C                                            Bidirectional comm. prog. 5, controller side
10 OPTION BASE 0                                      Make array index start at zero
 @ DELAY 0,0                                          Set display as fast as possible
 @ DIM D$[60]                                         Space for 8 devices (6 chr/device + some room)
15 CONTROL ON                                         Reconfigure loop
 @ N=NLOOP()                                          Get the number of devices in the loop
20 DESTROY A1, A2                                     Delete devices address & devices status arrays
 @ SHORT A1(N)                                        Create an address array for all devices
 @ A1(0)=0                                            Initialize 71B found counter
25 FOR I=1 TO N                                       Scan loop for 71Bs
30   IF DEVAID(I)=3 THEN                                Is device a 71B ?
       A1(0)=A1(0)+1                                      Yes, increment 71B found counter
 @     A1(A1(0))=I                                        Save 71b address in devices address array
35 NEXT I                                             EndLoop
40 IF A1(0)=0 THEN                                    Quit if no 71B has been found
     DISP "No 71B found"                                Display message
 @   DESTROY A1, A2                                     Exit: delete arrays
 @   END                                                End of execution ...
45 SHORT A1(A1(0)),A2(A1(0))                          Resize/create arrays to match 71Bs found
 @ S=0                                                
50 GOSUB 85                                           Display what we have
55 SEND CMD 21 UNL                                    Parallel poll unconfigure (PPU, 15h, 21d)
 @ FOR I=1 TO A1(0)                                   For all 71Bs
 @   SEND LISTEN A1(I) CMD 128+8+I-1 UNL                Enable parallel polling
 @ NEXT I                                               PPE 1:7..0 → 128 (PPE) + 8 (1:) + I-1 (7..0)
60 S=PPOLL()                                          Poll the loop to see If we have a service request
 @ IF S#0 THEN                                        Do we have a service request ?
     GOSUB 70                                           Yes: call SRQ handler
65 WAIT .15                                           Slowing polling loop to see multiple SRQs
 @ GOTO 60                                            Infinite loop polling 
70 FOR I=1 TO A1(0)                                   Enter SRQ handler, for each 71B found
75   IF BIT(S,I-1)=1 THEN                               Is the SRQ bit set for this device ?
       A2(I)=SPOLL(A1(I))                                 Get 71B status and save it in status array
 @     SEND UNT UNL LISTEN A1(I) DDL 0 UNL                Yes, notify device → SRQ handled
80 NEXT I                                             EndLoop
85 D$=STR$(A1(0))&":"&DTH$(S)[5,5]                    71B found & SRQ received
90 FOR I=A1(0) TO 1 STEP -1                           In reversed order to match PP bits pattern
 @   D$=D$&CHR$(92)&STR$(A1(I))&":"&DTH$(A2(I))[4,5]    Add 71B address then add 71B status
 @ NEXT I                                             EndLoop
95 DISP D$                                            Ex.: 3:5\4:41\3:00\2:43
 @ RETURN                                             Leave SRQ handler or end sub for line 50 and 60
Sylvain
Sylvain
Calculatrices et Pockets HP > J'ai tous les modèles, manuels, accessoires et périphériques, mes préférés: 41, 71 & 75.
Techno : 41 > 41CL, MLDL2K, Clonix-d, NoV-64d, MAXX | 71 > FRAM71, MultiMod | IL > PIL-Box, PIL-IO, GPIO | ...
Répondre

Retourner vers « Tous les Pockets »