Benutzer-Werkzeuge

Webseiten-Werkzeuge


hercules-3.10.diff

Einrichtung Hercules

Hercules wird sinnvollerweise selbst übersetzt. Notwendige bzw. sinnvolle Einstellungen sind –enable-optimization=no (wg. der schlechten Optimierung des gcc für arm) sowie –enable-multi-cpu=no und –disable-automatic-operator (braucht niemand hier).

cd /usr/src/hercules-3.10
./configure --enable-optimization=no --enable-multi-cpu=no -disable-automatic-operator
make
make install

Änderungen an den hercules sources

Es gibt ein paar wenige Änderungen gegenüber dem Standard, die hier kurz erklärt sein sollen:

Dies ist ein diff File, in dem die Änderungen gegenüber den Standard sources von Hercules 3.10 geführt sind. Ist vielleicht nicht so prima lesbar, dafür aber vollständig.

  • EOF beim Kartenleser: Der Unit Exception Status wird im Original nach der Präsentation am Rechner nicht gelöscht.
  • Kartenleser neuer Parameter ucase für die Wandlung aller Daten in upper case
  • Kartenstanzer Standardcodierung: ascii + crlf
  • Drucker Standardcodierung crlf
  • die Möglichkeit Tapes direkt aus dem Mainframesystem zu erzeugen (Zuweisung nicht existierender Datei führt zur Neuanlage und Initialisierung mit doppelter Bandmarke); Setzen des .het Magnetbanddateiformats als Standard. Es ist kompatibel zum .aws Format aus der P/370 Welt und ermöglicht die Komprimierung.
  • automatische Beendigung von Hercules bei Shutdown des DOS-5)
diff hercules-3.10/cardpch.c /root/hercules-3.10/cardpch.c
63,65c63,64
< 	/* standard ascii crlf by r.k. */  
<     dev->ascii = 1;
<     dev->crlf = 1;
---
>     dev->ascii = 0;
>     dev->crlf = 0;
93,97c92
< 	if (strcasecmp(argv[i], "nocrlf") == 0) /* because of changed standard r.k. */
<         {
<             dev->crlf = 0;
<             continue;
<         } 
---
> 
diff hercules-3.10/cardrdr.c /root/hercules-3.10/cardrdr.c
63d62
<     dev->uc = 0;    /* uppercase all characters by r.k. */
149,155d147
<         /* ucase means that all characters have to convert to uppercase by r.k. */
<      
<         if (strcasecmp(argv[i], "ucase") == 0)          /* r.k. */
<         {                           /* r.k. */
<             dev->uc = 1;                    /* r.k. */
<             continue;                       /* r.k. */
<         }                           /* r.k. */ 
431,433c423,424
< 		// dont send UX on empty stack  /* r.k. */
< 		// *unitstat=CSW_CE|CSW_DE|CSW_UX;
<                 // return -1;
---
>                 *unitstat=CSW_CE|CSW_DE|CSW_UX;
>                 return -1;
449,451c440,441
< 	    // dont send UX on empty stack  /* r.k. */
<             // *unitstat=CSW_CE|CSW_DE|CSW_UX;
<             // return -1;
---
>             *unitstat=CSW_CE|CSW_DE|CSW_UX;
>             return -1;
705,710d694
< 
<         /* Convert character to uppercase by r.k. */
<         if (dev->uc)                /* r.k. */
<         {                   /* r.k. */
<             c = toupper(c);         /* r.k. */
<         }                   /* r.k. */ 
diff hercules-3.10/featall.h /root/hercules-3.10/featall.h
41c41
< #undef OPTION_HTTP_SERVER              /* HTTP server support       */
---
> #define OPTION_HTTP_SERVER              /* HTTP server support       */
diff hercules-3.10/hetinit.c /root/hercules-3.10/hetinit.c
205,210c205
<         rc = het_tapemark( hetb ); /* added for correct tape format r.k. */
<         if( rc < 0 )
<         {
<             printf( "het_tapemark() returned %d\n", rc );
<             goto exit;
<         }
---
> 
diff hercules-3.10/hstructs.h /root/hercules-3.10/hstructs.h
1003d1002
<         u_int   uc:1;                   /* 1=Convert to uppercase by r.k. */ 
diff hercules-3.10/panel.c /root/hercules-3.10/panel.c
2765,2770d2764
<         /* Test for DOS5/US disabled wait PSW and shutdown hercules r.k. */
<         if( IS_IC_DISABLED_WAIT_PSW(regs) && regs->psw.IA == 0x00D74F81) {
< 			do_shutdown ();
< 			exit(0);
< 		}
< 
diff hercules-3.10/printer.c /root/hercules-3.10/printer.c
345c345
<     dev->crlf = 1;   /* change standard from zero r.k. */
---
>     dev->crlf = 0;
386,390d385
<         if (strcasecmp(argv[iarg], "nocrlf") == 0)  /* because of changed standard r.k. */
<         {
<             dev->crlf = 0;
<             continue;
<         } 
diff hercules-3.10/tapeccws.c /root/hercules-3.10/tapeccws.c
1643,1645c1643,1644
< 		realpath( resolve_in, resolve_out ); /* r.k. */
<                 /* if (realpath( resolve_in, resolve_out ) == NULL)
<                     HHCTA090E( resolve_in, "unresolvable path" );  */
---
>                 if (realpath( resolve_in, resolve_out ) == NULL)
>                     HHCTA090E( resolve_in, "unresolvable path" );
1664,1666c1663,1664
<              /* why not create a new file if all of them het? r.k.
<            if (access( newfile, R_OK ) != 0)
<                 HHCTA090E( newfile, "file not found" ); */
---
>             if (access( newfile, R_OK ) != 0)
>                 HHCTA090E( newfile, "file not found" );
diff hercules-3.10/tapedev.c /root/hercules-3.10/tapedev.c
781c781
< // #define  DEFAULT_FMTENTRY   AWSTAPE_FMTENTRY r.k.
---
> #define  DEFAULT_FMTENTRY   AWSTAPE_FMTENTRY
792d791
< #define  DEFAULT_FMTENTRY   HETTAPE_FMTENTRY /* r.k. */
hercules-3.10.diff.txt · Zuletzt geändert: 2017/05/12 18:23 von roman