Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1466 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Logiciels

  DOSBOX megabuild

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

DOSBOX megabuild

n°1195791
Sagittariu​s
Posté le 29-01-2010 à 10:29:51  profilanswer
 

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.
http://zepload.com/images/1264820916_EBP-compta_6.02.png
http://zepload.com/images/1264997441_exemple-fictif.png
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
mood
Publicité
Posté le 29-01-2010 à 10:29:51  profilanswer
 

n°1195807
Mjules
Modérateur
Parle dans le vide
Posté le 29-01-2010 à 11:14:38  profilanswer
 

\o/

 

merci pour ces infos, ça devrait être fort utile.


Message édité par Mjules le 29-01-2010 à 11:14:44

---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
n°1195978
Sagittariu​s
Posté le 30-01-2010 à 09:41:54  profilanswer
 

Oui je le pense.
 
Sinon, pour ceux qui n'utiliseraient pas DOSBOX Megabuild et souhaiteraient une redirection de ports LPT vers fichier, il y a toute la collection GARBO accessible à l'Université de Vaasa, notamment dans la sous-catégorie printer.

n°1344832
Sagittariu​s
Posté le 15-09-2013 à 22:03:04  profilanswer
 

Pour compiler dosbox megabuild en x64, sauf erreur car je n'ai pas documenté en cours, il faut décommenter dans le fichier decoder_basic.h:
 

      if (handler->flags & PFLAG_NOCODE) {
       /*   if (PAGING_ForcePageInit(lin_addr)) {
             handler=get_tlb_readhandler(lin_addr);
             if (handler->flags & PFLAG_HASCODE) {
                cph=(CodePageHandlerDynRec *)handler;
                return false;
             }
          }*/
          if (handler->flags & PFLAG_NOCODE) {
             LOG_MSG("DYNREC:Can't run code in this page" );
             cph=0;
             return false;
          }
       }


 
Source: https://github.com/leycec/raiagent/ [...] 725.ebuild
 
Ajouter un include au fichier setup.cpp: #include <limits.h>
idem ajouter #include <stddef.h> à cpu.cpp, dos.cpp, ems.cpp
 
 
Il faut aussi ces patches:

--- a/include/dos_inc.h 2010-05-10 19:43:54.000000000 +0200
+++ b/include/dos_inc.h 2011-03-16 09:46:24.430008904 +0100
@@ -27,6 +27,7 @@
 #ifndef DOSBOX_MEM_H
 #include "mem.h"
 #endif
+#include <stddef.h>
 
 #ifdef _MSC_VER
 #pragma pack (1)


 

--- a/src/gui/sdlmain.cpp 2009-05-28 09:45:43.000000000 +0200
+++ b/src/gui/sdlmain.cpp 2009-05-28 09:45:56.000000000 +0200
@@ -1526,7 +1526,7 @@
  if ( !sdl.inited && SDL_Init(SDL_INIT_VIDEO|SDL_INIT_NOPARACHUTE) < 0 ) textonly = true;
  sdl.inited = true;
 #endif
- printf(message);
+ printf("%s",message);
  if(textonly) return;
  if(!sdl.surface) sdl.surface = SDL_SetVideoMode(640,400,0,0);
  if(!sdl.surface) return;


Message édité par Sagittarius le 15-09-2013 à 22:08:54

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Logiciels

  DOSBOX megabuild

 

Sujets relatifs
Plus de sujets relatifs à : DOSBOX megabuild


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR