![]() |
Hewlett Packard HP 86B
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Caractéristiques | Les modules d'extension | Le disque dur | Les disquettes | L'interface HP-IL | L'interface RS232 | Exemple commenté | Plotter/Emul |
![]() |
Les modules s'enfichent dans un tiroir à modules, le ROM DRAWER HP 82936A qui, lui même, vient se loger dans l'un des 4 ports d'extension à l'arrière de la machine. Malheureusement, seuls 6 modules peuvent être utilisés à la fois, car un seul tiroir est supporté par le système. Il faut donc faire ses choix. Chacun apporte de nouvelles fonctionnalités logicielles ou matérielles qui viennent étendre le BASIC. Voici ceux dont je dispose... |
![]() |
Ce module permet la gestion de mémoires de masse utilisant le protocole SS/80. Il était indispensable pour la dernière génération de disques durs produits par HP tels que celui que j'utilise, le 9154A. Voir plus bas! |
![]() |
Ce module donne accès au langage assembleur de la machine. Il permet de compiler un fichier source
en un fichier Binaire. Ce dernier sera chargé par le Basic et pourra, selon les cas:
|
![]() |
Mon premier programme: ASQR Il crée une nouvelle fonction BASIC ASQR(X) qui renvoit la racine carrée de la valeur absolue de X. Ainsi, même un paramètre négatif ne provoquera pas d'erreur. Lignes 1000-1050 une table donnant les différents points d'entrée du fichier binaire. Tous les porgrammes sont structurés de la même manière! Lignes 1100-1110 la routine PARSE lit le reste de la ligne pour récupérer les arguments. Mais pour une fonction on laisse la routine du système s'en charger, donc pas de parse dans notre cas. Lignes 1200-1290 la table des routines, une seule fonction est présente donc une seule référence. Lignes 1300-1390 la table des noms, un seul présent ASQR. Et pas de message d'erreur. Lignes 1400-1410 la routine d'initialisation a éxécuter lors du chargement. Il n'y en a pas. Lignes 3000-3040 la routine de ma fonction ASQR. Les octets 20 et 55 signalent une fonction numérique à un seul argument. Ensuite se trouvent les appels à ABS et SQR (le BASIC travaille sur une pile en interne, on est comme sur une HP41. Puis un RTN pour terminer. Lignes 3050-9999 définition des adresses ROM et fin du programme. Remarquez le mot FIN en français... Etrange! |
On utilise
ASSEMBLE "ASQR_B"pour générer le fichier binaire et on rebascule sous le Basic. Voyez le chargement et l'utilisation immédiate de la nouvelle fonction! |
![]() |
![]() |
Ce module permet de piloter des traceurs. Le langage des traceurs HP, le HP-GL, ressemble
un peu au LOGO. On monte ou on descend le crayon, on peut choisir la couleur (pour les traceurs
disposant de plusieurs crayons), on place le crayon de manière relative ou absolue. Les instructions du traceur sont reprises pour l'affichage graphique, de ce fait on peut utiliser presque le même programme pour un affichage écran ou papier. Allez voir mon Plotter Emulator! |
![]() |
Ce module donne accès aux entrées sorties en conjonction avec les cartes HP-IL ou RS232. Il
donne toute une série d'instructions pour envoyer et recevoir des données ou régler le système
de transmission.
Voir l'exemple THERMO utilisant une liaison HP-IL vers une unité d'acquisition de mesures. |
![]() |
Ceci est un module double! Deux logements sont nécessaires pour faire fonctionner les
routines mises à disposition. Il apporte:
|
![]() |
Il s'agit d'un disque utilisant le jeu de commandes SS/80 (donc nécessite le module Extended Mass Storage)
et amenant la quatité phénoménale de 10Mo de données.
Il se connecte sur le port HP-IB et a, par défaut, l'adresse de périphérique ":D700". |
Le système de fichiers est archaïque:
|
![]() |
Voici l'unité de disquettes. Je l'ai réglée sur le numéro de périphérique "1" de la chaine GP-IB "7".
De ce fait, le premier lecteur est référencé ":D710" et le second ":D711".
Chaque unité permet de stocker 620Ko à peu près. C'est à dire 52 copies graphiques d'écran! |
![]() |
INITIALIZE "mydisk",":D711" STORE "myprog:D710" MASS STORAGE IS ":D710" COPY "myprog" TO "myprog:D711" |
|
Il a fallu démonter les lecteurs pour réparer le système d'éjection. En effet une grande pièce de métal a tendance à se figer, collée par la graisse et la poussière, au fil du temps. Cette pièce doit être vers l'arrière lorsque la disquette est sortie (Figure 1, on voit l'espace entre le métal et le bouton d'éjection). | Cette même pièce doit être vers l'avant lorsque la disquette est insérée (Figure 2, pas d'espace entre le métal et le bouton). Si tel n'est pas le cas, déposez quelques gouttes d'alcool aux endroits indiqués et manoeuvrez la pièce. En peu de temps elle se décolle et le lecteur est à nouveau prêt à fonctionner! |
![]() Figure 1: disquette sortie! |
![]() Figure 2: disquette insérée. |
INITIALIZE "GAME",":D710" TD2HPI GALPATRL DIR *.HPI Fdio -dup GALPATRL.HPI a: CAT ":D710" COPY ":D710" TO "D711" |
|
![]() |
Elle permet la connexion de l'ordinateur à toute une série de périphériques
pour des transferts en mode texte.
|
Il faut malheureusement l'ouvrir pour accéder aux switches de configuration. 3 sont réservés à l'adresse
de la carte, 9 par défaut. Ainsi, le premier appareil de la boucle sera adressé "901", le second "902", etc.
Le dernier switch indique si le HP86 est le controleur de la boucle ou non. Normalement OUI! Mais ceci peut entraîner des conflits lorsqu'une HP41 est également présente. Pour l'instant, je n'ai pas vu de conflit. |
![]() |
![]() |
L'interface série permet une connexion RS-232 avec une imprimante, un modem ou un autre ordinateur.
Elle est limitée à 9600 bauds, ce qui est bien suffisant au vu de la vitesse de traitement de l'ordinateur
lui-même.
Elle existe en deux options:
|
Pour les réglages, deux séries de switchs sont disponilbles. Ils permettent de fixer
le fonctionnement par défaut. Ensuite, certains réglages peuvent être modifiés par programme.
Le premier petit bloc fixe le numéro de l'interface série, 10 par dafaut. |
Le deuxième bloc règles la parité, le nombre de bits STOP, le nombre de bits par byte ainsi que la vitesse de transfert.
J'ai choisi 9600 bauds, pas de parité, 1 bit stop et 8 bits par byte. |
![]() |
![]() |
J'ai relié le HP à un PC sous Windows XP. Dans la console DOS je tape: MODE COM1: BAUD=9600 PARITY=N DATA=8 STOP=1 [ENTER] COPY CON: COM1: [ENTER] |
Côté HP, je tape ce petit programme:
10 DIM A$[128] 20 ENTER 10;A$ 30 DISP A$ 40 GOTO 20Puis touche RUN pour l'exécuter! |
Côté HP86, on lance le programme SERIE (ici à droite) qui se met en attente de la réception
des informations de transfert.
Côté WINDOWS, on lance le programme COPIE SERIE.EXE (ci-dessous) qui vous ouvre un sélecteur de fichier dans lequel vous choisissez le TEXTE à envoyer. Il est analysé en taille et nombre de lignes. On vous demande le nom à utiliser côté HP pour l'enregistrer. Pour finir, les données (nom, nombre de blocs, nombre de lignes) sont envoyées suivies des lignes de texte elles-mêmes. Côté HP, vous voyez les données reçues ainsi que l'affichage de toutes les lignes de texte à mesure qu'elles arrivent. ![]() Appuyez bien sur K1 quand on vous le demande! |
![]() Le programme de réception sur le HP86 |
Pour un programme BASIC :
|
Pour un source ASSEMBLEUR :
|
Sur le HP86 je tape:
CRT IS 10 LIST Ce qui envoie enièrement le listing vers le TERMINAL dans lequel je peux capturer le texte. | Puis:
CRT IS 1 Pour revenir au mode normal sur le HP. |
Etape 1: D'abord choisir une image ayant des proportions à peu près carrées. | Etape 2: Ensuite, la redimensionner en 400x240. | Etape 3: Puis appliquer un filtre monochrome (ici un Stucki). On enregistre ensuite au format BMP. |
![]() |
![]() |
![]() |
Pour finir on l'envoit vers le HP. D'abord lancer le programme "COPIE SERIE.EXE", choisir
le mode 2 pour envoyer une image, et sélectionner le fichier puis valider. "Sending lines..." s'affiche.
Côté HP, lancer le programme "SERIE", touche K2 pour recevoir une image et ENTREE pour lancer le transfert. ![]() Appuyez bien sur K2 quand on vous le demande! |
![]() Ci-dessus, l'image reçu sur l'écran du HP !! |
Pour envoyer l'écran GRAPH vers le PC, il faut qu'il soit déjà prêt!
![]() On vous demande le nom du BMP (n'oubliez pas l'extension BMP) et le transfert commence! Voici un exemple d'image reçue: ![]() J'ai choisi la couleur verte sur fond noir! |
![]() Appuyez bien sur K3 quand on vous le demande! |
Ce programme de monitoring capture une température intérieure et extérieure ainsi que l'ensoleillement
à intervalles réguliers programmables et en produit un graphique à la demande.
Voici l'installation ci-contre: |
![]() |
![]() |
Voici ce qu'on peut obtenir. Ce graphique est le résultat d' 1h40 d'observations avec une capture par minute. C'était une matinée avec soleil et passages nuageux (regardez la courbe de la photorésistance qui signale des variations de luminosité). La températeur extérieure varie presque instantanément suivant le soleil alors que la température intérieure augmente plus régulièrement. |
Lignes 10-30: la fonction qui transforme la résistance en température, les valeurs extrêmes (empiriques) pour la photorésistance et le tableau de données T(0,i) températures IN, T(1,i) OUT et T(2,i) la luminosité. Lignes 100-230: Les initialisations, lance le timer #1 pour une mesure régulière, fixe les actions de 3 touches. Ligne 500: boucle d'attente d'un événement Timer ou Key. Lignes 1000-1090 (Timer #1): commandes par le HP-IL, demande la lecture des 3 résistances sur les canaux 2,3 et 4. Récupère les données dans B, C et A. Valeurs transformées, affichées, stockées dans les tabeaux puis on met à jour les minima et maxima. Lignes 2000-2010 (Appui sur F2): passe en mode graphique, efface l'écran. LOCATE limite la zone de sortie pour laisser de la place aux axes et graduations. Ligne type continu, et trace le cadre autour. Lignes 2020-2040: I et X sont les limites entières des températures. SCALE va définir les plages des valeurs pour les tracés. LAXES trace les axes avec les valeurs (labels). Lignes 2050-2100: La double boucle trace les deux courbes de température en utilisant directement les valeurs en température et en temps. Le système s'occupe de la conversion en pixels grace à la fonction SCALE précédente. Lignes 2110-2125: un nouveau SCALE pour s'adapter aux valeurs de la luminosité. (on remarquera que BLANC Lignes 2030-2060: tracé de la courbe de luminosité. Lignes 3000-3020 (Appui sur F1): sort de la page graphique pour revenir à l'affichage des valeurs sous forme de liste. Lignes 4000-4050: Initialisation, affiche le titre et demande l'intervalle des mesures en heures-minutes et secondes. Lignes 4060-4075: calcule l'intervalle IT en secondes et MS en millisecondes (pour le Timer), initialise ensuite les limites hautes et basses des températures et éclairages. Lignes 4080-4090: si les secondes sont nulles, alors la graduation sera en minutes. Si de plus les minutes sont nulles alors la graduation se fera en heures. Lignes 4100-4110: le GOSUB lance la première lecture puis retour. Ligne 5000 (Appui sur F7) : sort brutalement du programme! |
![]() |
![]() |
Voici la page de texte avec les relevés de mesure. On notera les boutons en bas que le système prépare automatiquement avec les renseignements donnés par "ON KEY" qui forment un menu très facile à mettre en oeuvre. La page texte et la page graphique sont indépendantes et on n'efface pas l'une quand on affiche l'autre (on peut faire des allers retours avec la touche A/G (Alpha/Graphics). |
Côté HP86, il faut une interface série réglèée en 9600 bauds, 1 bit stop, pas de parité, et 7 bits de donnée. On redirige le plotter vers l'interface série. | CONTROL 10,4;4 -> pour 7 bits CONTROL 10,3;15 -> pour 9600 bauds PLOTTER IS 10 -> à insérer dans votre programme |
![]() |
![]() |
![]() |
Le télécharger! |
C'est à ce moment qu'on lance le programme côté HP86 (il faut en effet être en ligne pour répondre aux demandes d'informations de la commande "PLOTTER IS 10"). |
Le nom sera PLOTTER_00000.PNG et le numéro augmente en séquence feuille après feuille. |
Voici le résultat de l'impression. J'ai utilisé l'exemple donné dans le manuel du module "PLOTTER", remarquez que l'impression se fait en couleurs en insérant des commandes PEN n pour changer de crayon. Note: en plus de l'image, un fichier PLOTTER.TXT résume l'ensemble des instructions reçues, les sauvegardes d'images, les changements de page. |
![]() |
Plotter HP 7550A J'ai acquis un HP 7550A, plotter 8 crayons, qui permet d'écrire sur du A4 et même sur du A3. J'ai écrit un petit programme qui permet de préparer le fond de mes arbres généalogiques sur 8 générations. Pour l'instant, les noms sont à remplir à la main mais cela pourrait être ajouté par la suite pour qu'une base de noms soit sauvegardée et automatiquement affichée dans les cases. |
![]() |