Ce vieux projet sous DOS a été fait à l'époque pour plusieurs raisons:
- il était difficile de classer toutes les archives du calculateur HP-48S/Sx/G/Gx
- avec l'utilisation du protocole KERMIT sur le port série RS232, la vitesse de transfert était vraiment trop lente
- et il y avait beaucoup trop de manipulations pour enchaîner plusieurs fichiers à la suite
Comme ELENDRIL et d'autres développeurs, avaient sorti une lib HP48 pour faire des transferts en Xmodem
alors je me suis décidé à inclure cette fonctionnalité sous DOS en PASCAL + ASM.
A cette époque, je n'avais pas accès à un système de base de données
alors je me suis créé mon propre format.
L'inspiration du moment était:
- les écrans des BBS en ASCII ART sous l'éditeur d'écrans DOS TheDraw, affichés via ANSI.SYS
- le design ASCII des écrans avec "highlighted key shortcuts" à la sauce Borland Turbo Vision
- les couleurs EGA de l'époque en mode texte 80x25 ou 80x43
- l'animation (ici de tri des fiches) suivant la même logique que l'outil de défragmentation DOS Norton Speed Disk
Le logiciel se base sur les composants de l'époque que l'on trouvait sur IBM/PC/XT/AT et les clônes x86.
Gestionnaire du port série RS232 | Controlleur d'IRQ |
---|---|
uart 8250 | intel 8259 |
Voici un diagramme simple des entrées/sorties de l'UART:
et utilisé dans le code suivant ces registres:
Base Address | I/O Access | Abbrv. | Register Name |
---|---|---|---|
+0 | Write | THR | Transmitter Holding Buffer |
+0 | Read | RBR | Receiver Buffer |
+1 | Read/Write | IER | Interrupt Enable Register |
+2 | Read | IIR | Interrupt Identification Register |
+2 | Write | FCR | FIFO Control Register |
+3 | Read/Write | LCR | Line Control Register |
+4 | Read/Write | MCR | Modem Control Register |
+5 | Read | LSR | Line Status Register |
+6 | Read | MSR | Modem Status Register |
+7 | Read/Write | SR | Scratch Register |
L'écran principal contient à gauche, une colonne de fichiers, du répertoire en cours. En haut et au milieu de l'écran, il y a un résumé de l'état actuel. Et sur la partie restante, on a accès à une fenêtre de dialogue ou d'affichage
- l'éxecutable avec runtime intégré (type "all in one"), est fait pour tenir facilement sur disquette 💾
- sans aucune modification, il tourne sans problème sous DOSemu (ici v0.74) ou BOXER sous MacOS. Il semble qu'il manque certains "extended character" (aka VGA CP437) dans le rendu de DOSbox que l'on doit pouvoir corriger en installant des fichiers EGAxx.CPI ou FreeDOS mode.com + des codepages *.CPX. Ici le rendu en fonte TTF.
- le patch Turbo Pascal de la lib CRT ne semble pas nécessaire.
- des fonctionnalités comme un éditeur d'images (au format GROB) ou de binaires, n'ont jamais été finalisé.
- avec un peu de patience, il doit être possible de porter (en enlevant le code ASM) le tout sous LAZARUS pour avoir un éxecutable pour LINUX ou MacOS 👍
- mais de nos jours, on peut facilement refaire ce programme en Python (marcherait même sur RaspberryPi) ou en application JavaScript via l'API CHROME Serial ❤️
- il faut aussi noter que depuis cette période, il y a eu des outils sous Microsoft Windows via le logiciel Hewlett Packard Connectivity Software aka ConnX v4 et un cable USB: https://www.youtube.com/watch?v=3O_TjRwsmjs
- La fameuse bible : IBM PC Technical Reference
- Les revues techniques de l'époque : Le Guide de l'utilisateur de l'IBM PC
- Une petite introduction sur la partie RS232 + UART
- Et enfin une page sur le site HP Network existe toujours comme réferencement externe (après tant d'années)