ProtoCoder - Prototech

Questions et discussions d'ordre matériel concernant le HP-41, ses accessoires et extensions.
Avatar de l’utilisateur
jeffcalc
Expert HP-41
Messages : 65
Inscription : mer. 5 mars 2008 21:32
Localisation : France, Isere
Contact :

Re: ProtoCoder - Prototech

Message par jeffcalc »

pilou45000 a écrit : mar. 30 mai 2023 10:00 On peut bien programmer le ProtoCoder en manuel « mot par mot » mais c’est fastidieux… Donc je cherche à récupérer les prgm et routines de la NFCROM-1B pour les faire passer sur la calculatrice.
Le moyen le plus "simple" serait de programmer un jeu d'EPROM avec la NFCROM pour utilisation dans un de tes ProtoEPROM.
Tu aurais alors toutes les fonctions disponibles.
C'est "simple", sauf qu'il faut juste trouver des EPROMs et un programmateur d'EPROM...

Sinon, tu peux aussi te procurer un Clonix programmé avec le NFCROM.
Oui, en fait, ce serait *beaucoup* plus simple...

J-F

Avatar de l’utilisateur
pcscote
Apprenti expert
Messages : 25
Inscription : lun. 23 janv. 2017 04:51
Localisation : Quebec/Canada

Re: ProtoCoder - Prototech

Message par pcscote »

jeffcalc a écrit : jeu. 1 juin 2023 08:54
pilou45000 a écrit : mar. 30 mai 2023 10:00 Donc je cherche à récupérer les prgm et routines de la NFCROM-1B pour les faire passer sur la calculatrice.
C'est "simple", sauf qu'il faut juste trouver des EPROMs et un programmateur d'EPROM...
J'ai tout le matos nécessaire pour créer et tester son ensemble d'EPROM, je n’ai juste pas encore eu le temps libre pour le faire.
jeffcalc a écrit : jeu. 1 juin 2023 08:54 Sinon, tu peux aussi te procurer un Clonix programmé avec le NFCROM.
Oui, en fait, ce serait *beaucoup* plus simple...
On est parfaitement en accord sur ce point ;)

Sylvain

pilou45000
Apprenti
Messages : 18
Inscription : lun. 27 mars 2023 11:12

Re: ProtoCoder - Prototech

Message par pilou45000 »

pcscote a écrit : mar. 30 mai 2023 20:44 Bonjour Philippe,

Un petit récapitulatif des technos du HP-41 question qu'on soit au même niveau.

Le langage utilisateur du HP-41 est appelé FOCAL (Forty One CAlculator Language) et son système de calcul est la notation polonaise inverse (RPN en anglais).
Le NUT est un processeur 4-bit, les registres de calculs internes sont de 56-bit (7 octets) et la largeur du bus de communication entre le processeur et les périphériques est de 1-bit.
Le processeur supporte deux types de mémoire, une mémoire à 10-bit servant à exécuter des programmes en langage machine et une mémoire faite de registres de 7-octet qui sert à emmagasiner des données et des programmes utilisateur de type FOCAL.

Le maximum de mémoire 10-bit que le processeur est capable d'adresser est de 64 kiloWord (10-bit).
Ce 64 kW est divisé en 16 pages de 4 kW et si le matériel le permet, chaque page peut être avoir jusqu'a un maximum de 4 banques.

Code : Tout sélectionner

Page  Allocation
F     Port 4, Upper 4 K 
E     Port 4, Lower 4 K 
D     Port 3, Upper 4 K 
C     Port 3, Lower 4 K 
B     Port 2, Upper 4 K 
A     Port 2, Lower 4 K 
9     Port 1, Upper 4 K 
8     Port 1, Lower 4 K 
7     HP-IL Mass Storage ROM 
6     Printer ROM 
5     Timer ROM; [Secondary Bank] Extended Fuctions (41CX Only) 
4     Diagnostic Module 
3     Extended Functions (41CX Only) 
2     Operating System 
1     Operating System 
0     Operating System  
Le maximum de mémoire 56-bit que le processeur est capable d'adresser est 4096 registres (de 56-bit). [hex: 000...FFF]
Mais dus à une limitation du système d'exploitation, seulement 1024 registres sont disponibles. [hex: 000...3FF]

Code : Tout sélectionner

+-------------------------+-----------+------+--------------+--------------+
| description             | registres | type |  Adr. départ |  Adr. de fin |
+-------------------------+-----+-----+------+--------------+--------------+
| 41C/CV/CX status registers    |  16 | main |    0 (0x000) |   15 (0x00F) |
+-------------------------------+-----+------+--------------+--------------+

Code : Tout sélectionner

+-------------------------------+-----+------+--------------+--------------+
| 41C  mémoire de base          |  64 | main |  192 (0x0C0) |  255 (0x0FF) |
+-------------------------------+-----+------+--------------+--------------+
| 41C  +1 x 82106A mém. simple  | 128 | main |  192 (0x0C0) |  319 (0x13F) |
| 41C  +2 x 82106A mém. simple  | 192 | main |  192 (0x0C0) |  383 (0x17F) |
| 41C  +3 x 82106A mém. simple  | 256 | main |  192 (0x0C0) |  447 (0x1BF) |
| 41C  +4 x 82106A mém. simple  | 320 | main |  192 (0x0C0) |  511 (0x1FF) |
+-------------------------------+-----+------+--------------+--------------+
| 41C  +1 x 82170A mémoire Quad | 320 | main |  192 (0x0C0) |  511 (0x1FF) | remplace quatre 82106A module de mémoire simple
+-------------------------------+-----+------+--------------+--------------+

Code : Tout sélectionner

+-------------------------------+-----+------+--------------+--------------+
| 41CV mémoire de base          | 320 | main |  192 (0x0C0) |  511 (0x1FF) |
+-------------------------------+-----+------+--------------+--------------+
| 41CX mémoire de base          | 320 | main |  192 (0x0C0) |  511 (0x1FF) |
| 41CX mémoire x-memory         | 128 | ext. |   64 (0x040) |  191 (0x0BF) |
+-------------------------------+-----+------+--------------+--------------+

Code : Tout sélectionner

+-------------------------------+-----+------+--------------+--------------+
| 82180A x-fncs/memory module   | 128 | ext. |   64 (0x040) |  191 (0x0BF) | compatible avec les HP-41C/CV, inclus dans la 41CX
| 82181A x-memory module #1     | 239 | ext. |  513 (0x201) |  751 (0x2EF) |
| 82181A x-memory module #2     | 239 | ext. |  769 (0x301) | 1007 (0x3EF) |
+-------------------------------+-----+------+--------------+--------------+

Code : Tout sélectionner

+-------------------------------+-----+------+--------------+--------------+
| Espace non-disponible         |  48 | none |   16 (0x010) |   63 (0x03F) |
| Espace non-disponible         |   1 | none |  512 (0x200) |  512 (0x200) |
| Espace non-disponible         |  17 | none |  752 (0x2F0) |  768 (0x300) |
| Espace non-disponible         |  16 | none | 1008 (0x3F0) | 1023 (0x3FF) |
+-------------------------------+-----+------+--------------+--------------+
ref: HP-41 - Memory modules

... à suivre. ;)

Edit: lecture complémentaire

Bonjour Sylvain,

Encore merci de prendre autant de ton temps pour me répondre !
Pour répondre à tes trois derniers messages dans l'ordre:

1.
fonctionnement de la HP41, mémoires, adressage,... tout ça c'est ok pour moi.
"Au fond de la HP41": j'ai lu.
"Les fonctions d'extension c'est facile" j'ai lu
"Manuel du module MAXX" je ne connaissais pas, je vais le lire.

2.
La programmation synthétique je ne connaissais pas dans les années 80, aujourd'hui j'en ai compris le principe mais très loin d'être capable de l'utiliser. Le site de Warren Furlow est une mine d'or de documentations et revues diverses ! j'ai déjà lu beaucoup de choses mais mes nuits sont trop courtes !

3. Les passionnés sont toujours vivants ! :mrgreen: Oui les moyens d'aujourd'hui semblent plus simples pour accéder à la HP41.

Un petit résumé des tests que j'ai effectués:

ProtoCoder seul (select device 0 à C ; ROM adresse: 3) la HP41 s'allume.
ProtoCoder seul (select device D,E,F) la calculatrice ne s'allume pas.


ProtoCoder + ProtoROM:
Image
Image
Image
Image

ce que je ne comprends pas:
Pourquoi un module dans le slot3 du ProtoRom provoque-il toujours un crash ?
Pourquoi deux modules port(a) de la calculatrice et slot(a) du ProtoROM ne sont plus reconnus ?


ProtoCoder + ProtoEPROM avec ROM sm1cU2 et sm1cL8 (module de service 1C HP):
Image
Image

Pourquoi la HP41 ne s'allume pas avec les adresses D,E,F qui sont disponibles ? Pas d'autres modules présents, ni Card Reader (E).
Je dois me mélanger les pinceaux quelque part ... :mrgreen:

Bien cordialement
Philippe

Avatar de l’utilisateur
pcscote
Apprenti expert
Messages : 25
Inscription : lun. 23 janv. 2017 04:51
Localisation : Quebec/Canada

Re: ProtoCoder - Prototech

Message par pcscote »

Bonjour Philippe,

Je ne t'ai pas oublié, je suis juste débordé en ce moment.

Je n'ai pas eu le temps de regarder en détail tes configurations, mais ton problème en est probablement un de dispute entre les ports.

Un module ROM/Q-ROM peut ...
  • avoir une page fixe, comme le module DIAG qui est toujours à la page 4 nonobstant le port ou il est banché
  • avoir une page dynamique, comme le module HEPAX qui prend la première page disponible
  • prendre la page paire du port ou il est installé, page 8 dans le port 1, 10 dans le port 2, etc.
  • prendre la page impaire du port ou il est installé, page 9 dans le port 1, 11 dans le port 2, etc.
Avec un port extender, il faut faire attention qu'il n'y ait pas deux modules assignés à la même page, sinon la 41 peut se comporter bizarrement.

Je vais bientôt te donner la recette qui va te permettre, avec des outils disponibles aujourd'hui, de prendre n'importe quelle image ROM, de la convertir en format U2/L8, pour ensuite transférer ces deux fichiers sur un EPROM avec un programmeur moderne.
Cordialement,

Sylvain

pilou45000
Apprenti
Messages : 18
Inscription : lun. 27 mars 2023 11:12

Re: ProtoCoder - Prototech

Message par pilou45000 »

Bonjour Sylvain,

Merci encore ! Je ne veux surtout pas te prendre de ton temps, tu me réponds si tu veux et quand tu peux, ou pas. Ne t'inquiète pas je ne suis pas préssé et j'ai aussi des semaines bien chargées en ce moment...

Bon j'ai trouvé mon erreur avec le ProtoRom, j'avais mal affecté les ports (1,2,3, ou,4) aux différents slots d'où des adresses ROM communes à deux modules donc ça ne pouvait pas fonctionner. Tout est ok maintenant, le truc est donc opérationnel.
voici une config qui fonctionne:
Image

Par contre les XM restent "invisibles" même en respectant XM1 dans un "slot-port" impair, et XM2 dans un "slot-port" pair ou inversement. Il est possible que cela soit normal et j'ai peut-être toruvé une solution dans la littérature des PPCROM: on peut switcher des pages de RAM . Routine IP et PS (PPCROM V8N1 page 27,V9N2 p11, manuel du module PPCROM pages 228 & 370) je vais essayer...

Bien cordialement
Philippe

Avatar de l’utilisateur
pcscote
Apprenti expert
Messages : 25
Inscription : lun. 23 janv. 2017 04:51
Localisation : Quebec/Canada

Re: ProtoCoder - Prototech

Message par pcscote »

Bonjour Philippe,
pilou45000 a écrit : lun. 5 juin 2023 09:28 Bon j'ai trouvé mon erreur avec le ProtoRom ... Tout est ok maintenant, le truc est donc opérationnel.
Super, bravo! 8)
pilou45000 a écrit : lun. 5 juin 2023 09:28 Par contre les XM restent "invisibles" même en respectant XM1 dans un "slot-port" impair, et XM2 dans un "slot-port" pair ou inversement.
Pas normal, l'adressage des registres RAM et celle des ROM/QROM se fait de façon différente et ne devrait pas créer de conflit.
J'ai fait un test avec un Port-X-Tender et ça fonctionne bien ici. → EMROOM → 600
Configuration:
  • 41CX port 1 : Math/Stat (8K, pages 8 & 9)
  • 41CX port 2 : Home Management (4K, page A)
  • 41CX port 3 : Port-X-Tender
    • PXT port 1 : X-Memory 1 → 41CX port 1
    • PXT port 2 : X-Memory 2 → 41CX port 2
    • PXT port 3 à 7 : vide
  • 41CX port 4 : vide
pilou45000 a écrit : lun. 5 juin 2023 09:28 Il est possible que cela soit normal et j'ai peut-être trouvé une solution dans la littérature des PPCROM: on peut switcher des pages de RAM . Routine IP et PS (PPCROM V8N1 page 27,V9N2 p11, manuel du module PPCROM pages 228 & 370) je vais essayer...
Ces routines n'ont pas été conçues pour les modules X-Memory mais plutôt pour les modules Memory/Quad utilisés dans un 41C.
Ils ne fonctionneront pas dans ce contexte.

Cordialement,

Sylvain

pilou45000
Apprenti
Messages : 18
Inscription : lun. 27 mars 2023 11:12

Re: ProtoCoder - Prototech

Message par pilou45000 »

Bpnjour Sylvain,

Quelques nouvelles:
J'arrive à ecrire deux ou trois bricoles dans le ProtoCoder, je me suis fais une petite routine pour que la saisie "mot à mot" soit moins fastidieuse, ça fonctionne !

Pour les modules XFM et XM j'ai toujours le même problème, ils ne sont pas reconnus, peut-être une oxydation des contacts, je ne sais pas, mais le dispositif semble sensible avec les modules mémoire:
Image
Pourtant je place le ProtoRom en position 1 juste après le ProtoCoder...
Je vais essayer de nettoyer les contact mais le truc n'est pas démontable... :wink:

Bien cordialement
Philippe

pilou45000
Apprenti
Messages : 18
Inscription : lun. 27 mars 2023 11:12

Re: ProtoCoder - Prototech

Message par pilou45000 »

Bonjour Sylvain,

Quelques autres nouvelles:
Après une pause car occupé par mon job, je me suis remis au ProtoCoder.
J'apprends doucement le Mcode...
J'arrive à entrer des routines Mcode simples dans le ProtoCoder, à créer et mettre à jour une FAT et ça marche !
Ce qui est fastidieux c'est de tout écrire à la main sur papier...

J'ai donc réussi à faire fonctionner cette vielle machine, ce qui ne m'apporte rien d'autre qu'un simple plaisir intellectuel, mais je suis satisfait... :mrgreen:

Bien cordialement
Philippe

pilou45000
Apprenti
Messages : 18
Inscription : lun. 27 mars 2023 11:12

Re: ProtoCoder - Prototech

Message par pilou45000 »

Bonjour à tous,

J’ai récupéré une interface HP82164A pour pièces qui s’avère fonctionnelle après une petite révision. J’ai écrit une petite routine sur la HP41 pour transférer des programmes Mcode en fichiers txt depuis mon PC vers le Protocoder. Ça n’a pas été simple pour moi, mais ça fonctionne et c’est beaucoup plus pratique que d’envoyer les « words » un par un. Reste un problème à résoudre : le receive buffer de l‘interface fait 84 bytes et ça me coupe un « word » quand le buffer est plein… J’ai trouvé une astuce pas très conventionnelle : insérer un bloc de 5 caractères tous les 5 « mots » (c.f. image) et le sauter. Je ne sais pas si je suis très clair… Il faudrait, je pense, fixer la taille du receive buffer à 14 bytes en fixant la valeur du registre de caractère C08 de l’interface à la valeur 14. Je ne trouve pas la manip…

Image

Avatar de l’utilisateur
pcscote
Apprenti expert
Messages : 25
Inscription : lun. 23 janv. 2017 04:51
Localisation : Quebec/Canada

Re: ProtoCoder - Prototech

Message par pcscote »

pilou45000 a écrit : dim. 1 oct. 2023 19:37 Reste un problème à résoudre : le receive buffer de l‘interface fait 84 bytes et ça me coupe un « word » quand le buffer est plein…
Ce petit bout de code devrait changer le "Transmitter Block Size" et le "Receiver Block Size".
J'ai mis 14 pour les deux paramètres, change les valeurs pour ce dont tu as besoin.
Configuration: 41CX+HPIL ou 41C/CV+XFM+HPIL

Code : Tout sélectionner

LBL "STRBS" ; Set Transmitter & Receiver Block Size
AUTOIO
"HP82164A"
FINDID
SELECT
REMOTE      ; enable remote mode (82164A owners manual, p.36 @ 41)
"FC"        ; "FCwxyz" Special-Function Characters
14          ; updated value →→→ Transmitter Block Size = 14 bytes
XTOA        ; w C08 Transmitter Block Size ( default=j,   value=106 )
17          ; default value
XTOA        ; x C09 Character Register     ( default=DC1, value= 17 )
14          ; updated value →→→ Receiver Block Size = 14 bytes
XTOA        ; x C10 Receiver Block Size    ( default=CAN, value= 24 )
17          ; default value
XTOA        ; x C11 Delete Character       ( default=DC1, value= 17 )
OUTA        ; output alpha to device
LOCAL       ; disable remote mode
CLA
CLST
END

pilou45000
Apprenti
Messages : 18
Inscription : lun. 27 mars 2023 11:12

Re: ProtoCoder - Prototech

Message par pilou45000 »

Bonjour Sylvain,

c'est vraiment gentil de prendre du temps pour me répondre. Je n'arrivais pas à utiliser la fonction "FCwxyz" correctement... J'ai résolu mon problème avec le module "Extended I/O" (fonctions INAC et ATOXL) chargé sur le ClonixD que Diego Diaz m'a envoyé. Mes routines en Mcode (fichiers TXT) se chargent sans problème et sans aucune modification ou manipulation particulière dans le ProtoCoder. J'aurais dû expliquer que j'avais trouvé une solution, mais je ne viens plus trop sur ce forum pas rès actif...

Bien cordialement
Philippe

Répondre