DOSBOX est un formidable outil pour faire revivre les jeux MS-DOS.
Surtout, il est très simple d'utilisation car il ne nécessite pas d'image disque. Un simple dossier se monte facilement sous DOSBOX: une fois sous dosbox, keyb fr puis mount c ~/DOS et le tour est joué.
Seulement, il ne supporte pas nativement l'impression sur LPT.
D'où des patches pour obtenir l'implémentation du port LPT. C'est l'objet de megabuild qui intègre un ensemble de patches.
Récupérer les sources de DOSBOX megabuild pour GNU/Linux: http://home.arcor.de/h-a-l-9000/
Installer les librairies de développement de SDL.
Sous Mandriva x86_64 par exemple: lib64SDL-devel, lib64SDL_sound-devel, lib64SDL_mixer-devel, lib64SDL_ttf-devel, lib64SDL_net-devel, lib64SDL_image-devel, lib64pcap-devel.
Désarchiver la source de DOSBOX megabuild
Pour la compilation sous GNU, modifier /dosbox/src/misc/setup.cpp et ajouter l'include suivant: #include <limits.h> (l'original contient #include <limits> )
puis classiquement revenez au dossier /dosbox/ ./autogen.sh puis ./configure puis make et (root) make install.
Vous avez maintenant un DOSBOX supportant l'impression avec différentes possibilités réglables via le fichier créé au lancement (dosbox-0.73.conf) que vous pourrez modifier.
On peut capturer les sorties LPT vers un fichier.
On peut capturer les sorties LPT vers un png ou un fichier PS, mais le résultat s'est avéré peu probant.
J'ai donc préféré la capture vers un fichier d'impression:
[parallel]
# parallel1: parallel1-3 -- set type of device connected to lpt port.
# Can be:
# reallpt (direct parallel port passthrough using Porttalk),
# file (records data to a file or passes it to a device),
# printer (virtual dot-matrix printer, see [printer] section)
# Additional parameters must be in the same line in the form of
# parameter:value.
# for reallpt:
# Windows: realbase (the base address of your real parallel port).
# Standard ports are 378, 278 and 3BC. The first two can be ECP ports.
# PCI add-on cards may use nonstandard ports, look them up in the device manager.
# Default: 378
# You have to install the PortTalk driver from
# http://www.beyondlogic.org/porttalk/porttalk.htm first.
# Linux: realport (the parallel port device i.e. /dev/parport0).
# for file: # dev:<devname> (i.e. dev:lpt1) to forward data to a device,
# or append:<file> appends data to the specified file.
# Without the above parameters data is written to files in the capture dir.
# Additional parameters: timeout:<milliseconds> = how long to wait before
# closing the file on inactivity (default:500), addFF to add a formfeed when closing,
# addLF to add a linefeed if the app doesn't, cp:<codepage number> to perform
# codepage translation, i.e. cp:437
# for printer:
# printer still has it's own configuration section above.
# parallel2: see parallel1
# parallel3: see parallel1
parallel1=file append:impress.esc timeout:4000 (un exemple)
parallel2=disabled
parallel3=disabled |
Ensuite, vous pouvez récupérer le fichier impress.esc et le transformer en un, cette fois, bon fichier PS via l'utilitaire epsonps.
Il faut savoir en effet que nombre d'applications DOS utilisent les codes ESC/P pour l'impression.
L'utilitaire epsonps est disponible ici sous forme d'archive-sh: partie 1, partie2. Désarchiver ces archives et les sauvegarder sans l'entête (effacer le début jusqu'à #!bin sh non inclus) sous 1.sh et 2.sh, rendez-les exécutables (chmod +x). Exécutez-les. Vous obtenez les fichiers sources avec un make file. Elles se compilent sous pure DOS avec TurboC++ (turbo C) et bien sûr sous GNU: make puis (root) make install. Avant le make install, vérifier si le chemin de la page de manuel epsonps.1 est bon pour votre distribution. Sous Mandriva /usr/share/man/man1
Vous avez alors l'utilitaire epsonps à disposition (/usr/local/bin/epsonps) qui va permettre de récupérer le fichier d'impression et le transformer en PS (en tenant compte des formats A4, 11", 12" ) !
A savoir: A4 = 70 lignes, 11" = 66 lignes, 12" = 72 lignes.
Tout apparaît parfaitement: les polices doubles, normales, grasses, condensées, expansées...
Début caractères compressés: 27 15, Fin: 27 18
Début caractères expansés: 27 71, Fin: 27 72
Début caractères gras: 27 69, Fin: 27 70
Après, il ne vous reste plus qu'à transformer vos ps en PDF avec Ghostscript: gs -sDEVICE=pdfwrite -sOutputFile=myfile.pdf -sPAPERSIZE=a4 -dBATCH -dNOPAUSE myfile.ps
ou faire l'ensemble de la manipulation ESC/P->PS->PDF avec un service menu tel que celui-là vite fait (à placer dans /usr/share/KDE4/services/ServicesMenus ou similaire selon votre environnement et votre distribution):
[Desktop Entry]
Type=Service
ServiceTypes=KonqPopupMenu/Plugin
MimeType=application/octet-stream;
Icon=application-postscript
TryExe=/usr/local/bin/epsonps
Actions=esctopdf;
[Desktop Action esctopdf]
Name=ESC/P PDF
Icon=application-postcript
Exec=/usr/local/bin/epsonps %f -o%f.ps;gs -sDEVICE=pdfwrite -sOutputFile=%f.pdf -sPAPERSIZE=a4 -dBATCH -dNOPAUSE "%f.ps";rm -f %f.ps;kdialog --passivepopup "Terminé" 3; echo |
Cela m'a permis de réutiliser une veille comptabilité EBP DOS 6.02 dont j'ai la licence (bien plus rapide lors de la saisie qu'avec souris) qui permet de produire de fichiers PDF parfaitement exploitables.
Cliquer sur l'image pour voir le PDF, autre exemple
Bref, un outil vraiment utile pour engendrer des documents PDF à partir de DOS.
On regrettera que les anciens programmes sous DOS ne soient pas en sources libres.
Message édité par Sagittarius le 03-02-2010 à 20:15:04