home *** CD-ROM | disk | FTP | other *** search
/ Crawly Crypt Collection 1 / crawlyvol1.bin / program / compiler / m2posx14 / doc / neu < prev   
Encoding:
Text File  |  1994-05-31  |  35.3 KB  |  615 lines

  1. M2POSIX-14: 31-Mai-94
  2.   o 'PORTAB.M2H': Neue Konfigurationsmakros __RANGE_CODE__, __STACK_CODE__
  3.     und __DEBUG_CODE__, um einzustellen, ob die Module mit oder ohne die
  4.     entsprechenden Tests übersetzt werden sollen. Alle drei Einstellungen
  5.     werden (de)aktiviert, wenn im Quelltext das Makro __DEBUG__ auftaucht.
  6.     Aus dem Makro __IMP_SWITCHES__ sind diese Einstellungen jetzt
  7.     herausgenommen.
  8.     __STACK_CODE__ sollte deaktiviert werden; ich habs zwar nicht
  9.     ausprobiert, aber wenn "[v]fork()" oder "exec*()" verwendet werden,
  10.     gibts vermutlich Probleme.
  11.     Bei TDI sollten alle Tests ausgeschaltet werden, da teilweise falsche
  12.     Range-Checks erzeugt werden, die zumindest bei 'ListDir' und 'tlib'
  13.     zum Programmabbruch wegen (fälschlich erkannter) Bereichsüberschreitungen
  14.     führt.
  15.     Leider sollten auch bei Megamax alle Tests ausgeschaltet werden; zum
  16.     einen läuft bei __DEBUG_CODE__ sonst das gesamte Programm im Trace-Modus
  17.     ab, zum anderen werden aber auch hier teilweise falsche Range-Checks
  18.     erzeugt, die zu Abstürzen führen. Ich habe zwar versucht, dies zu
  19.     umgehen, kann aber für nichts garantieren.
  20.     Bei LPR können die Laufzeitüberprüfungen beim Übersetzen jetzt
  21.     eingeschaltet werden, da bei allen Assemblerprozeduren mit Rückgabewert
  22.     die Aufräumarbeiten jetzt explizit im Assemblercode erledigt werden,
  23.     sodaß der Test auf ein fehlendes RETURN nicht mehr ausgeführt wird.
  24.  
  25.     Leider muß ich sagen, daß wegen der vielen Fehler bei der Erzeugung
  26.     des Test-Codes diese neuen Konfigurationsmakros eher zum Testen
  27.     der Compiler als zum Testen der Module geeignet sind... Aus diesem
  28.     Grund sollten die Tests i. allg. ausgeschaltet bleiben.
  29.  
  30.   o 'PORTAB': Neue MIN*/MAX*-Konstanten.
  31.   o Noch ein paar Abfragen auf MiNT beseitigt.
  32.   o "proc.getlogin()": Neue Funktion.
  33.   o 'cstr': "strerror()" und "strsignal()" arbeiten jetzt mit `C'-Strings.
  34.   o "sys.gethostname()": Neue Funktion.
  35.   o 'lib': "strtol()", "strtoul()", "ltoa()", "ultoa()" arbeiten mit
  36.     `C'-Strings.
  37.     "itoa()", "atoi()", "atol()": Neue Funktionen.
  38.   o "sys.uname()" liefert mehr Informationen.
  39.   o 'OSCALLS': Bconout, Bconin, Bconstat neu.
  40.   o "tim.difftime()": Neue Funktion.
  41.   o "proc.clock()": Neue Funktion.
  42.   o Einige Bezeichner von 'BSD' nach 'ANSIC' transportiert.
  43.   o 'sig': Signale sind nicht mehr vom Aufzählungstyp 'Signal', sondern
  44.     int-Werte. Dadurch haben "sigadd/delset()" wieder einen Funktions-
  45.     wert, der anzeigt, ob ein gültiges Signal angegeben wurde, und in
  46.     'POSIX1' werden nur noch die POSIX-Signale exportiert, während die
  47.     restlichen Signale in 'BSD' exportiert werden.
  48.   o 'DosSupport': "IsCTerm()", "Disconnect()": Neue Funktionen.
  49.   o "proc.setsid()": Das Kontrollterminal wird jetzt auch mehr oder weniger
  50.     freigegeben.
  51.   o 'Spawn', 'ForkExec': Signale werden mittels "strsignal()" als Text
  52.     ausgegeben.
  53.     Bei 'ForkExec' werden im Elternprozeß die Signale SIGINT und SIGQUIT
  54.     ignoriert, solange auf die Beendigung des Kindprozesses gewartet wird,
  55.     sodaß z.B. bei ^C genau wie bei 'Spawn' nur der Kindprozeß abgebrochen
  56.     wird.
  57.   o "POSIX2.system()": Neue Funktion.
  58.   o 'LC*', 'loc': Unterstützung von sog. Locales, d.h. bestimmte Funktionen
  59.     lassen sich so beeinflussen, daß nationale Gegebenheiten berücksichtigt
  60.     werden. Im einzelnen:
  61.  
  62.     - Die Funktionen aus 'ctype' werden durch das 'LC_CTYPE'-Locale
  63.       beeinflußt.
  64.     - "strftime()" durch das 'LC_TIME'-Locale.
  65.     - "strsignal()" und "strerror()" durch das 'LC_MESSAGES'-Locale.
  66.  
  67.     und alle Funktionen, die die oben genannten benutzen.
  68.     Implementiert sind das POSIX- bzw. C-Locale, das bei Programmstart aktiv
  69.     ist, ein usa-Locale und ein german-Locale.
  70.   o 'showdate': Das 'LC_TIME'-Locale wird ausgewertet und die Ausgabe,
  71.     falls verlangt, den deutschen Konventionen entsprechend gestaltet.
  72.   o 'POSIX_ID.M2H', 'ANSIC', 'POSIX1' und 'BSD' aktualisiert.
  73.  
  74. M2POSIX-13: 10-Apr-94
  75.   o 'sig': Neue Funktionen: "sigmask()", "sigpause()", "sigblock()" und
  76.     "sigsetmask()", neuer Typ 'SigAtomicT'.
  77.   o 'tsighandler', 'tsigtimer': Tests für die neuen Funktionen.
  78.   o "proc.*stat()": In 'StatRec' werden die neuen Felder 'stRdev',
  79.     'stBlksize' und 'stBlocks' berücksichtigt. Unter TOS haben Dateien mit
  80.     dem HIDDEN-Attribut keine Leseberechtigung. Die Länge symbolischer Links
  81.     wird immer ohne Nullbyte angegeben, egal ob das Dateisystem das Nullbyte
  82.     zur Länge mitzählt.
  83.   o 'dir': Neue Funktionen: "telldir()", "seekdir()".
  84.     Typ 'DirentRec' um die Felder 'dIno' und 'dNamlen' erweitert.
  85.     Bei "getcwd()" und "readlink()" die Platzangabe für den Ergebnispfad vom
  86.     Typ 'sizeT'.
  87.   o 'pOUT': Neues Modul für die einheitliche Ausgabe von LONG-Zahlen in den
  88.     Testmodulen.
  89.   o "getcwd()" und "chdir()" von 'dir' nach 'proc' transportiert, da das
  90.     Arbeitsverzeichnis eher ein Prozeßattribut ist.
  91.   o In Funktionen, bei denen eine Größenangabe für einen 'StrPtr' nicht vom
  92.     Typ 'StrRange' ist, werden zu hohe Werte auf den maximalen Wert für
  93.     'StrRange' reduziert.
  94.   o "term.tcgetpgrp()": Es fehlte ein RETURN.
  95.   o "cstr.AssignCToM2()": Neuer Parameter, um die Anzahl der zu kopierenden
  96.     Zeichen zu begrenzen.
  97.   o "DosSystem.MagiXVersion()": Neue Funktion.
  98.   o 'ListDir': Dateigrößen werden in Bytes angegeben. Zusätzlich werden
  99.     die Benutzer- und Gruppenkennung und das Ergebnis von "telldir()"
  100.     ausgegeben (ergibt sowas wie eine physikalische Reihenfolge im
  101.     Verzeichnis). Bei symbolischen Links werden zusätzlich Name und Typ des
  102.     Ziels ausgegeben.
  103.   o 'types': ``C''-Standardtypen neu (int, unsigned usw.).
  104.     In den Schnittstellen aller ``High-Level''-Module diese Typen verwendet.
  105.   o "proc.vfork()": Mit Megamax funktionierts, dank Thomas Tempelmann, jetzt
  106.     wenigstens unter MiNT.
  107.   o In der ST-Computer 4/94, S.94-99, wird in dem Artikel 'Unter einem Hut...'
  108.     beschrieben, wie man die neuen Funktionen von MiNT einsetzen kann, ohne
  109.     daß deswegen immer auf das Vorhandensein von MiNT abgefragt wird. Auf
  110.     diese Weise werden die Funktionen auch verwendet, wenn sie von einer
  111.     anderen Erweiterung zur Verfügung gestellt werden, die nicht den MiNT-
  112.     Cookie anlegt. Die Funktionen werden nur dann nicht unterstützt, wenn
  113.     beim Aufruf der Fehler EINVFN (= -32) zurückgeliefert wird. Dieses
  114.     Vorgehen ist zwar nicht an allen Stellen von M2POSIX möglich oder
  115.     sinnvoll, aber ich habe die Anzahl der Abfragen auf MiNT doch stark
  116.     reduzieren können.
  117.   o 'OSCALLS.M2H': Einige Fehler bei den Falcon-XBIOS-Funktionen beseitigt.
  118.   o "ctype.isblank()": Neue Funktion.
  119.   o 'PORTAB.M2H': Neuere Versionen des HM-Compilers unterstützen eine
  120.     ganze Reihe von ISO-Funktionen, deshalb habe ich die entsprechenden
  121.     Makros auch für HM2 definiert. Wer noch eine ältere Version hat, muß
  122.     die Makros entsprechend zurücksetzen. Im einzelnen betrifft dies:
  123.     - ISO_value_constructor
  124.     - ISO_opaque_far_imp
  125.     - ISO_recursive_proc_decl
  126.     - ISO_packedset
  127.     - ISO_loc
  128.     - ISO_val
  129.   o 'DosSupport': "DecodeDate()", "EncodeDate()", "DateToSeconds()",
  130.     "SecondsToDate()", 'Date', 'DaysPerMonth', 'MonthDays' neu.
  131.   o 'DosSystem': "FcntlAvail()", "DpathconfAvail()", "DgetcwdAvail()",
  132.     "SysconfAvail()" neu.
  133.   o 'TDosSystem': Gibt die Ergebnisse der neuen DosSystem-Funktionen aus.
  134.   o Ausdrücke des Typs 'timeT' enthalten jetzt die Anzahl der Sekunden seit
  135.     dem 1.1.1970 0:00 Uhr, lokaler Zeit, also ohne Zeitzonenkorrektur zu UTC.
  136.   o "utime()": Parameter mehr POSIX-like.
  137.   o "sys.stime()": Neue Funktion.
  138.   o 'OSCALLS': "Tsettime()" und "Tsetdate()" haben einen Ergebnisparameter,
  139.     da unter MiNT ein ``richtiger'' Fehlercode zurückgeliefert wird.
  140.   o 'tim': Neues Modul mit den POSIX-Zeitfunktionen, inkl. Auswertung der
  141.     Environmentvariable TZ.
  142.   o 'showdate': Neues Programm für die Demonstration von "tim.strftime()".
  143.   o 'POSIX_ID.M2H', 'ANSIC', 'POSIX1' und 'BSD' aktualisiert.
  144.  
  145. M2POSIX-12: 12-Mär-94
  146.   o OSCALLS.M2H: Einige Fehler bei der LPR-Einbindung beseitigt.
  147.     XBIOS-Definitionen, incl. Falcon-XBIOS, neu.
  148.     Tmalarm von MiNT 1.10 neu.
  149.   o 'OSCALLS': "Cnecin()", "Cconis()", "Cconout()", "Cconws()", "Vsync()",
  150.     "Dfree()", "Tmalarm()" neu.
  151.   o 'DosSystem': Neue Funktionen "SetException()", "GetException()".
  152.     "*SysVar()" in "*SysMem()" umbenannt.
  153.   o 'proc': Neue Funktionen: "seteuid/gid()", setreuid/gid()", wait3()",
  154.     "wait4()" und "select()", "FDZERO()", "FDSET()", "FDCLR()", "FDISSET()".
  155.   o 'PORTAB.M2H': Neues Makro PROCADR für die Adreßbildung von Prozeduren.
  156.     Compileroption $K- als Default fuer HM2 im Definitionsmodul.
  157.   o 'pLONGSET': Neues Modul für Operationen mit 32-Bit-Mengen.
  158.   o "sys.statfs()": Neue Funktion.
  159.   o 'tsys': Gibt Informationen von "statfs()" aus.
  160.     Es kann ein Argument übergeben werden, das den Pfad angibt, für den
  161.     die dateisystemabhängigen Daten ermittelt werden sollen.
  162.   o 'cstr': Neue Funktionen "strlwr()", "strupr()".
  163.   o "proc.exec/spawnvp()": Zwei Pfadtrenner hintereinander oder ein Pfadtrenner
  164.     am Anfang oder Ende der Pfadliste von 'PATH' bedeuten: das aktuelle
  165.     Verzeichnis soll probiert werden. Für die Extensionen ausführbarer
  166.     Programme wird statt 'SUFFIX' jetzt nur noch 'TOSEXT' verwendet. Die zu
  167.     testenden Extensionen werden zuvor immer in Kleinbuchstaben gewandelt.
  168.   o "file.open()": genauer eingegrenzt, wann eine Datei zum Kontrollterminal
  169.     wird.
  170.   o 'sig': "pause()" und "sigsuspend()" haben keinen Rückgabewert mehr, da
  171.     dieser ohnehin immer gleich -1 wäre. Ebenso haben die Mengenoperationen
  172.     "sig*set()" keinen Rückgabewert, da der einzige Fehler ein falsches
  173.     Signal wäre, was aber nur durch einen Programmierfehler entstehen
  174.     könnte.
  175.   o "sig.sleep()": Die Funktion war mittels 'Fselect' implementiert, da
  176.     dieser Aufruf seit MiNT 1.08 durch ein Signal abgebrochen werden kann;
  177.     in MiNT 1.10 wird er aber nur noch unterbrochen, nicht jedoch abgebrochen,
  178.     deshalb ist "sleep()" jetzt durch die aufwendige MiNTLib-Variante mittels
  179.     'Talarm' implementiert.
  180.   o "sig.sigaction()": Implementiert.
  181.   o 'sig': Neue Funktionen: "signal()", "killpg()", "raise()", "usleep()".
  182.  
  183.   Durch die obigen Änderungen an 'sig' und viele weitere kleine, die hier
  184.   nicht erwähnt sind, sind jetzt endlich Signale verwendbar!
  185.   Es ist zu beachten, daß Signalhandler reentrant sein müssen (für asynchrone
  186.   Signale)! HM2-Benutzer sollten den entsprechenden Hinweis in M2POSIX.TXT
  187.   lesen. Außerdem dürfen unter MiNT innerhalb eines Signalhandlers zwar
  188.   BIOS-, XBIOS- und GEMDOS-Aufrufe stattfinden, aber keine VDI- oder AES-
  189.   Aufrufe, also z.B. auch keine Ausgaben über 'InOut' oder so, wenn sie
  190.   in ein Fenster umgeleitet werden.
  191.  
  192.   o 'jump': "sigsetjmp()" und "siglongjmp()" implementiert.
  193.     Bei der HM2-Version von "longjmp()" wurde 'Psigreturn' höchstens zufällig
  194.     ausgeführt.
  195.   o 'showsig': Neues Modul zum Testen asynchroner (externer) Signale.
  196.   o 'tsighandler': Neues Modul zum Testen der Installierung von
  197.     Signalhandlern.
  198.   o 'tsigtimer': Neues Modul zum Testen der Signalfunktionen, die mit der Zeit
  199.     zu tun haben.
  200.   o 'e': Konstanten 'eLOOP' und 'ePIPE' (von MiNT generiert) aufgenommen.
  201.     'EINTR' hat den Code -128. Fehlercodes von Kai Roemers Socket-Bibliothek
  202.     aufgenommen.
  203.   o "cstr.strerror()": Fehlercodes der Socket-Bibliothek werden berücksichtigt.
  204.   o "cstr.strsignal()": Neue Funktion, Äquivalent von "strerror()" für Signale.
  205.   o "sys.time()": Parameter mehr POSIX-like.
  206.   o 'forkexec': Es wird mit "wait4()" auf das Ende des Kindprozeßes gewartet
  207.     und die `verbrauchte' Zeit ausgegeben.
  208.   o 'proc': Bei "tfork()" und "spawn*(pWAIT,...)" wird unter TOS nach
  209.     Beendigung des Unterprozesses ein SIGCHLD-Signal generiert.
  210.   o "proc.tfork()": Der Speicher für den Kindprozeß wurde unter MiNT nicht
  211.     wieder freigegeben.
  212.   o 'forkexec', 'spawn', 'tthread': Es wird ein Signalhandler für SIGCHLD
  213.     installiert, der eine Meldung bei Beendigung des Unterprozesses ausgibt.
  214.   o 'POSIX1': "seteuid/gid()" aufgenommen.
  215.   o 'BSD': Neues Modul für den Reexport von Nicht-POSIX-aber-UNIX-meistens-
  216.     BSD-UNIX-Funktionen..., man darf sich also nicht darauf verlassen, daß
  217.     nur BSD-Funktionen auftauchen, mir ist nur kein anderer Name eingefallen.
  218.   o 'POSID_ID.M2H': Um die neuen Nicht-POSIX-Bezeichner erweitert.
  219.  
  220. M2POSIX-11: 27-Jan-94
  221.   o 'DosSystem': 'MachineType' berücksichtigt auch den Falcon und den
  222.     Mega-STE. Neue Funktion für das Ermitteln der bevorzugte Landessprache.
  223.     Neue Funktionen für das Setzen, Löschen, Abfragen von Cookies.
  224.     Neue Funktionen für das Lesen und Setzen von Systemvariablen.
  225.   o 'TDosSystem': Beim Rechnertyp werden Falcon und Mega-STE berücksichtigt.
  226.     Über die FPU (falls vorhanden) werden Informationen ausgegeben.
  227.     Die bevorzugte Landessprache wird ausgegeben.
  228.     Der Cookie-Jar wird ausgegeben.
  229.   o "sys.uname()" berücksichtigt auch die neuen Rechnertypen, 'nodename'
  230.     wird auf "?" gesetzt.
  231.   o 'PORTAB': Die Typen BYTESET und LONGSET sind nicht mehr auskommentiert,
  232.     damit nach dem Präprozessieren die gleichen Typen vorhanden sind wie
  233.     beim Originalmodul aus 'crystal'; deshalb ist evtl. ein Patchen des
  234.     HM2-Compilers nötig, siehe 'M2POSIX.TXT'.
  235.   o 'OSCALLS': Neue Funktion "Dcntl()". Bei 32-Bit-VAR-Parametern wird
  236.     das Ergebnis der Systemaufrufe nicht mehr direkt den Parametern
  237.     zugewiesen, sondern auf dem Umweg über eine lokale Variable -- das
  238.     ist sicherer.
  239.   o 'MAKEUNIX.*', 'MAKETEST.*': Batchdateien bzw. Pseudomodul für die
  240.     Komplettübersetzung aller Module.
  241.   o "file.utime()": Unter MiNT wird versucht auch bei Verzeichnissen
  242.     Zeit und Datum zu setzen, wenns nicht klappt, weiterhin keine
  243.     Fehlermeldung.
  244.   o 'tvfork': Kleines Beispielprogramm für "vfork()". Läuft unter TOS und
  245.     MiNT, aber nicht mit Megamax (MM2) (siehe dazu auch M2POSIX.TXT)
  246.   o "DosSupport.UnixToDos()": Die fehlende Initialisierung einer Variable
  247.     führte dazu, daß Dateinamen mit führendem '.' manchmal falsch bearbeitet
  248.     wurden. <xpath> ist jetzt auch ein `C'-String, der jedoch nicht mit
  249.     einem Nullbyte abgeschlossen zu sein braucht.
  250.   o 'PORTAB.M2H': Neues Makro REFADR für die Adreßbildung von
  251.     REF-Parametern (MM2: CADR, statt ADR).
  252.   o 'cstr': neue Funktionen "stricmp()", "strnicmp()". "TOKEN()" wurde von
  253.     'pSTRING' hierhin transportiert, in "Token()" umbenannt und arbeitet
  254.     nun mit `C'-Strings.
  255.   o "proc.vfork()": bei TDI wird auch Register A5 gerettet.
  256.   o 'ForkExec': Wenn beim 'exec' ein Fehler auftritt, Fehler im Klartext
  257.     ausgeben und Kindprozeß beenden. Statt "fork()" wird jetzt mit "vfork()"
  258.     gearbeitet (außer bei MM2), sodaß das Programm nun auch ohne MiNT läuft.
  259.   o 'proc': Den Code zur Suche eines Programms bei "execvp()" und "spawnvp()"
  260.     neu geschrieben, sodaß keine Beschränkung der Pfadlänge oder der Länge
  261.     von PATH mehr besteht.
  262.     Damit gibt es in M2POSIX keine, durch die Implementierung bedingte,
  263.     Einschränkungen einer Pfadlänge mehr!
  264.  
  265. M2POSIX-10: 01-Jan-94
  266.   o 'lib' ist nicht mehr von 'DosSystem' und 'OSCALLS' abhängig.
  267.   o 'timeT' ist jetzt nach außen hin vom Typ UNSIGNEDLONG, damit es ohne
  268.     Probleme als Funktionsresultat geliefert werden kann.
  269.   o 'SsizeMax' und 'ClkTck' wurden von 'sys' nach 'types' transportiert.
  270.   o "term.tcgetpgrp()": Wenn das Terminal zu keiner Prozessgruppe gehört,
  271.     wird ein Fehler gemeldet.
  272.   o "file.open()": Ist jetzt weitgehend nach dem MiNTLib-open gestaltet,
  273.     wodurch unter MiNT mehr Aufgaben von MiNT direkt übernommen werden.
  274.     Unter MiNT wird nun tatsächlich die kleinste freie Kennung verwendet,
  275.     nicht die kleinste, die größer als fünf ist.
  276.     Ausserdem wurde noch ein Fehler der alten Implementierung entfernt,
  277.     und übersichtlicher ist es auch geworden...
  278.   o 'DosSupport': Die Auswertung von UNIXMODE im Modulrumpf hatte noch
  279.     Fehler.
  280.   o "file.fcntl()": Unter TOS funktionierte fDUPFD nicht, und bei fSETLK
  281.     fehlte ein RETURN.
  282.   o Unterstützung für HM2_OLD (Versionen < 5.1) eingestellt.
  283.   o 'jump': Bei TDI wird auch Register A5 gerettet.
  284.   o "term.isatty()": INTEGER statt BOOLEAN als Funktionswert.
  285.   o PORTAB.M2H: Neues Konfigurationsmakro __REG_VARS__, um Registervariablen
  286.     zentral (de)aktivieren zu können.
  287.   o Für jede Datei wird (unter TOS) in 'DosSupport' ein Pseudo-
  288.     Dateibeschreibungsblock geführt, der vor allem die beim 'open'
  289.     angegebenen Attribute enthält. Dadurch können unter TOS mit "fcntl()""
  290.     Flags abgefragt und gesetzt werden, außerdem wird das O_APPEND-Flag
  291.     von "write()" und das FD_CLOEXEC-Flag von "spawn*/exec*()" unterstützt.
  292.   o 'tfile': Tests für O_APPEND und "fcntl()".
  293.   o 'jump': Die bis jetzt nicht implementierten Prozeduren "sig*()" mit
  294.     Prozedurrahmen, da sonst bei einem irrtümlichen Aufruf kein Rück-
  295.     sprung erfolgt. Außerdem konnte es beim optimierten Linken von 'TLib'
  296.     mit HM2 zum Absturz beim Aufruf des Programms kommen.
  297.  
  298. M2POSIX-09: 07-Nov-93
  299.   o "dir.getcwd()": Unter TOS wird intern immer ein Puffer von mindestens
  300.     PATHMAX Zeichen bereitgestellt, da 'Dgetpath' keine Maximallänge
  301.     beachtet.
  302.   o "DosSupport.UnixToDos()": Die Umsetzung von Pfadnamen der Form /dev/xxx
  303.     funktionierte nicht. Außerdem wurde zu ``früh'' gemeldet, daß der Platz im
  304.     Dos-Pfad nicht ausreicht. Durch eine interne Umstellung wird der *IX-Pfad
  305.     nicht mehr verändert, sodaß er jetzt ein VAR-Parameter ist, und weniger
  306.     Stack ``verbraucht'' wird. Der Puffer für die Ermittlung des aktuellen
  307.     Verzeichnisses wird nur noch angelegt, wenn nötig -- das spart auch Stack.
  308.     Die Umwandlung von '/' in '\' wird jetzt früher vorgenommen, sodaß z.B.
  309.     neben /pipe/ auch \pipe\ umgesetzt wird.
  310.   o Das Makro __MINT__ wird nicht mehr beachtet; wenn MiNT vorhanden ist,
  311.     werden immer dessen Systemaufrufe benutzt. Dadurch wird die Funktionalität
  312.     nicht eingeschränkt, aber der Quellcode wird übersichtlicher.
  313.   o 'file': "utime()": Wenn für 'modtime' Null übergeben wird, wird dies
  314.     unter MiNT auch als NULL-Pointer an das Dateisystem weitergereicht, damit
  315.     es selbst die aktuellen Zeiten einsetzen kann. Bei Verzeichnissen wird
  316.     kein Fehler mehr gemeldet, es wird einfach nix getan.
  317.     "dup()", "dup2()": Das 'FdCloExec'-Flag der neuen Dateikennung wird
  318.     gelöscht; die Dateien bleiben also bei einem Unterprozeßstart geöffnet.
  319.     Bei "dup()" ist unter MiNT die kleinstmögliche neue Kennung nicht mehr 6
  320.     sondern 0.
  321.  
  322. M2POSIX-08: 10-Okt-93
  323.   o In den Definitionsmodulen wird genauer auf das Verhalten der Funktionen
  324.     unter TOS und unter MiNT eingegangen.
  325.   o Die ``C''-Stringfunktionen aus 'pSTRING' herausgenommen und in das neue
  326.     Modul 'cstr' transportiert.
  327.   o "strerror()" von 'lib' nach 'cstr' transportiert, da "strerror()" zwar
  328.     keinen ``C''-String liefert, aber trotzdem zu den "str*()"-Funktionen
  329.     gehört.
  330.   o Modul 'CTYPE' in 'ctype' umbenannt.
  331.   o 'cstr': Neue Funktionen: "strncat()", "strcmp()", "strncmp()", "strchr()",
  332.     "strrchr()" und "strstr()".
  333.   o Längenangaben in 'cstr' und 'MEMBLK' nicht mehr als CARDINAL oder
  334.     UNSIGNEDLONG, sondern als 'sizeT'.
  335.   o "DosSystem.FPU()": Neue Funktion + zugehörige Typen.
  336.   o Neues Modul 'jump', in das "lib.set/longjmp()" und "sig.sigset/longjmp()"
  337.     transportiert wurden. Außerdem wird "set/longjmp()" jetzt nicht mehr von
  338.     ANSIC, sondern von POSIX1 reexportiert.
  339.   o 'DosFile' in 'DosSupport' umbenannt. In Zukunft gehen alle M2POSIX-
  340.     spezifischen Hilfsfunktionen, nicht beschränkt auf Dateifunktionen, in
  341.     dieses Modul, damit 'DosSystem' allgemein verwendbar bleibt.
  342.   o 'MEMBLK': "memalloc()", "memdealloc()": Neue Funktionen für Speicherre-
  343.     servierung auf dem Stack.
  344.   o "dir.readdir()": Unter TOS werden die Dateinamen in Kleinbuchstaben
  345.     umgewandelt.
  346.   o 'ANSIC': Die Prozedurvariablen für "main()" und "getenv()" wurden nicht
  347.     initialisiert.
  348.   o "DosSupport.UnixToDos()": Verarbeitung von "." und ".." im Wurzelver-
  349.     zeichnis erweitert.
  350.   o 'lib': Tests für "MEMBLK.mem[de]alloc()".
  351.   o "OSCALLS.Supexec()": Die auszuführende Prozedur ist jetzt vom Typ PROC,
  352.     da die Rückgabe eines Funktionswertes nur funktioniert, wenn dafür
  353.     Register D0 verwendet wird (und der Stack unangetastet bleibt).
  354.   o 'DosSystem': Im Hinblick auf Mag!X-Versionen 2.x wurden sämtliche
  355.     'Super'-Konstruktionen durch 'Supexec'-Aufrufe ersetzt (laut Handbuch
  356.     sollen'Super'-Aufrufe nicht mehr benutzt werden).
  357.   o 'proc': Testweise Implementierung von "vfork()". Testweise deswegen, weil
  358.     ich nicht weiß, ob die Prozedur unter allen Bedingungen funktioniert --
  359.     mit Megamax-Modula MM2 funktioniert sie jedenfalls unter keiner
  360.     Bedingung... Vor Anwendung unbedingt den Kommentar im Definitionsmodul
  361.     lesen!
  362.   o Überall wo Pfadnamen als Ein- oder Ausgabeparameter vorkommen, wird jetzt
  363.     für die Konvertierung nach bzw. aus dem Dos-Format der Platz dynamisch
  364.     mit "memalloc()" auf dem Stack angelegt. Das bedeutet zum einen, daß
  365.     nur noch soviel Stack ``verbraucht'' wird wie nötig, zum anderen aber,
  366.     daß ``beliebig'' lange Pfadnamen verwendet werden können! Damit besteht
  367.     bei den meisten Funktionen keine (interne) Beschränkung der Pfadlänge
  368.     mehr! Da die Änderungen jedoch umfangreicher waren, als ich gedacht
  369.     hatte und ich auch keine Lust hatte, nochmal alles zu testen, ist es
  370.     wahrscheinlich, daß ein paar Bugs hinzugekommen sind.
  371.  
  372. M2POSIX-07: 14-Aug-93
  373.   o "DosSystem.GetCookie()": Neue Funktion.
  374.   o 'pSTRING': Neue Funktionen "strcat()" und "strpbrk()".
  375.   o "lib.longjmp()": Unter MiNT wird ein 'Psigreturn' ausgeführt.
  376.   o "file.open()": Unterstützung von 'O_NOCTTY' unter MiNT.
  377.   o Modul 'err' in 'e' umbenannt, da bei HM2 ein gleichnamiges Modul
  378.     in der GEMplus-Bibliothek existiert.
  379.   o 'DosFile': Neue Variable 'BINIO', die angibt, ob in der Environment-
  380.     Variablen UNIXMODE die Option 'b' (binary) gesetzt ist.
  381.   o "DosFile.DosToUnix()": Die Umsetzung von Pfadnamen ohne Laufwerks-
  382.     angabe funktionierte nicht. In einem Fall wurde die Länge des
  383.     Ergebnispfades falsch berechnet. ROOTDIR wird jetzt ausgewertet, um
  384.     die Startadressen der Pfade mehr *IX-like zu gestalten.
  385.   o "file.utime()": Datum und Zeit waren vertauscht, wenn der übergebene
  386.     Parameter statt der aktuellen Zeit benutzt werden sollte.
  387.     Unter MiNT werden bei einem entsprechenden Dateisystem 'actime' und
  388.     'modtime' getrennt gesetzt (z.B. Minix-FS 0.60pl6).
  389.   o "file.ftruncate()": Neue Funktion. Läuft nur mit entsprechendem
  390.     Dateisystem (z.B. Minix-FS 0.60pl6).
  391.   o "pSTRING.AssignM2ToC()": Schließt ähnlich wie "strncat()" den Ergebnis-
  392.     string nur noch mit einem Nullbyte ab, wenn der Quellstring kürzer als
  393.     die angegebene Maximalgröße ist.
  394.   o "dir.readlink()": mehr POSIX-like: das Ergebnis wird nicht mehr mit
  395.     einem Nullbyte abgeschlossen, stattdessen MUß jetzt das Funktions-
  396.     ergebnis fuer die Länge herangezogen werden.
  397.   o "term.ttyname()": Neue Funktion.
  398.   o "term.ctermid()": Neue Funktion.
  399.   o "MEMBLK.memmove()": Ziel- und Quellparameter waren vertauscht.
  400.   o In "DosFile.UnixToDos()" und "CompletePath()" wird jetzt wieder auf
  401.     die Version von MiNT abgefragt und 'Dgetcwd' nur benutzt, falls
  402.     mindestens MiNT 0.96 vorhanden ist, sonst wird 'Dgetpath' verwendet.
  403.     dadurch kann M2POSIX jetzt auch wieder mit Versionen unter 0.96 benutzt
  404.     werden, nur laufen dann eben manche Funktionen, wie z.B. "waitpid()"
  405.     nicht. Aus diesem Grund entfällt auch die Sicherheitsabfrage in
  406.     'DosSystem', die zum Programmabruch fuehrte. Ich empfehle aber trotzdem,
  407.     nur die jeweils neueste MiNT-Version einzusetzen!
  408.   o "DosFile.DosToUnix()": Es wird zusätzlich die Länge des DOS-Pfades
  409.     geliefert. Somit kann leicht ermittelt werden, um wieviele Zeichen
  410.     der *IX-Pfad länger oder kürzer als der DOS-Pfad ist.
  411.   o "file.lstat()": Bei symbolischen Links wird jetzt im st.stSize-Feld
  412.     die Länge des Pfades geliefert, wie sie nach Umwandlung durch
  413.     "DosToUnix()" wäre, und durch "readlink()" geliefert wird (+ Nullbyte).
  414.   o Die Definitionen fuer ``C''-Strings und die Konstante EOS fuer M2-
  415.     Strings wurden von 'pSTRING' nach 'types'transportiert.
  416.   o "MEMBLK.memchr()": Neue Funktion.
  417.   o "MEMBLK.memcmp()": Neue Funktion.
  418.   o 'tlib': Tests fuer "memchr()" und "memcmp()".
  419.   o Die Funktion "fnmatch()" wurde von 'lib' in das neue Modul POSIX2
  420.     verlegt. Damit ist zwar "fnmatch()" die einzige Funktion im Modul, aber
  421.     vielleicht kommen ja irgendwann weitere hinzu.
  422.   o 'cmdline': ARGV^[ARGC] wurde nicht immer auf NULL gesetzt.
  423.  
  424. M2POSIX-06: 30-Jun-93
  425.   o In 'pSTRING' weitere String-Parameter als REF-Parameter deklariert.
  426.     Weitere Variablen als Registervariablen, Registervariablen auch in
  427.     anderen Modulen häufiger.
  428.   o 'ShowCMD': Die Basepage-Kommandozeile wird zusätzlich ausgegeben.
  429.   o 'cmdline': Die ARGV-Erweiterung für leere Argumente wird unterstützt.
  430.     Die Modulinitialisierung wurde in eine Prozedur gepackt, sodaß häufig
  431.     benutzte Variablen als Registervariablen deklariert werden konnten.
  432.   o "proc.exec*/spawn*()": Die ARGV-Erweiterung für leere Argumente wird
  433.     unterstützt.
  434.   o 'spawn' & 'forkexec': Es werden auch leere Argumente zum Testen
  435.     verwendet.
  436.   o 'dir': "readdir()"/DirentRec: Die Dateinamen sind nicht mehr in der
  437.     Länge begrenzt, da nur noch ein Zeiger auf den eigentlichen Dateinamen
  438.     geliefert wird, der bis zum nächsten "readdir()" auf das gleiche
  439.     Verzeichnis gültig bleibt. Der Speicher für den Dateinamen wird beim
  440.     "opendir()" angefordert und beim "closedir()" wieder freigegeben.
  441.   o 'PORTAB': Neue Typen: (UN)SIGNED für die jeweils größten verfügbaren
  442.     Ganzzahltypen, entsprechend ISO-CARDINAL/INTEGER, und jeweilige Maximal/
  443.     Minimalwerte als Konstanten.
  444.   o 'CTYPE': Alle Funktionen in Kleinbuchstaben (entsprechend ``C'').
  445.   o "pSTRING.strcpy()": Neue Funktion.
  446.   o 'POSIX' umbenannt in 'POSIX1'. Es werden nur noch Funktionen aufge-
  447.     nommen, die erstens aus POSIX.1 stammen (damit fällt z.B. "fnmatch()"
  448.     raus, da POSIX.2), und zweitens nicht gleichzeitig Ansi-C-Bibliotheks-
  449.     funktionen sind. Gleichzeitig kommen die Ansi-C-Funktionen in ein neues
  450.     Modul ANSIC, in das zusätzlich auch Ansi-C-Funktionen aufgenommen werden,
  451.     die nicht gleichzeitig POSIX-Funktionen sind. Auf diese Weise wird eine
  452.     gewisse Trennung zwischen ``System''- und ``Bibliotheks''-Funktionen
  453.     erreicht, obwohl diese Unterscheidung von POSIX nicht getroffen wird.
  454.   o OSCALLS.M2H: BIOS-Aufrufe integriert.
  455.   o "file.fcntl()": F_SETLK wird auch ohne MiNT im begrenztem Maße unter-
  456.     stützt, wenn durch eine entsprechende GEMDOS-Erweiterung der 'Flock'-
  457.     Aufruf existiert.
  458.   o Neues Modul 'pSTORAGE'. Das Modul stammt von Ulrich Kaisers GEM-
  459.     Bibliothek ``crystal'' (leicht verändert).
  460.   o "pSTRING.strncpy()": Neue Funktion.
  461.   o "file.fcntl()": Die GEMDOS-Fehler 'eLOCKED' und 'eNSLOCK' werden auf
  462.     'EACCES' abgebildet.
  463.   o 'DosSystem': Neue Funktionen "Machine()" und "CPU()". 'TDosSystem'
  464.     gibt auch die Werte dieser beiden Funktionen aus.
  465.   o "sys.uname()": Neue Funktion. 'tsys' gibt auch Informationen dieser
  466.     Funktion aus.
  467.   o 'term': Neues Modul für POSIX-Terminalfunktionen. Die meisten Funktionen
  468.     sind (noch) nicht implementiert, das Modul legt hauptsächlich erstmal
  469.     die neuen Bezeichner fest. Ob und wann Funktionen tatsächlich implemen-
  470.     tiert werden, weiß ich nicht.
  471.   o "isatty()" von 'file' nach 'term' transportiert.
  472.   o 'sig': Neues Modul für POSIX-Signalfunktionen. Es gilt das gleiche wie
  473.     bei 'term'.
  474.   o 'POSIX1' und POSIX_ID.M2H um die neuen Bezeichner erweitert.
  475.   o Der GNU-C-Präprozessor wird jetzt mitgeliefert.
  476.  
  477. M2POSIX-05: 07-Jun-93
  478.   o OSCALLS.M2H: Bessere Ausnutzung der von den Compilern gebotenen
  479.     Features für Betriebssystemaufrufe.
  480.   o 'MEMBLK': Neues Modul mit den von 'lib' ausgelagerten Funktionen
  481.     "bcopy()","bswap()" und "bzero()" für die Bearbeitung von
  482.     Speicherbereichen. Dadurch ist das Modul nicht mehr auf M2POSIX
  483.     beschränkt.
  484.   o 'MEMBLK': "bcopy()" und "bswap()" umbenannt in "memmove()" und "memswap()".
  485.     "bzero()" durch universelleres "memset()" ersetzt.
  486.   o 'PORTAB.M2H': Makro für Registervariable definiert. In einigen Modulen
  487.     (z.B. 'pSTRING') Indexvariablen als Registervariablen deklariert.
  488.   o !!! ACHTUNG: !!! ES WIRD JETZT NICHT MEHR AUF UNTERSCHIEDLICHE MiNT-
  489.     VERSIONEN IM PROGRAMMTEXT ABGEFRAGT, SONDERN NUR NOCH, OB MiNT VORHANDEN
  490.     IST ODER NICHT. DA IM FALLE DES VORHANDENSEINS VON MiNT AUCH NEUERE
  491.     MiNT-AUFRUFE BENUTZT WERDEN (Z.B. PWAITPID UND DGETCWD), MUSS, FALLS
  492.     MiNT ÜBERHAUPT EINGESETZT WIRD, MINDESTENS VERSION 0.96 BENUTZT WERDEN!!
  493.     MIT VERSION 0.95 (ODER KLEINER) LÄUFTS NICHT MEHR!!
  494.   o "file.fcntl()": Neue Funktion.
  495.   o 'tlib': Neues Modul zum Testen von Funktionen aus 'lib' und 'MEMBLK'.
  496.   o "file.open()": In der Beschreibung der Funktion im Definitionsmodul wird
  497.     auf den Unterschied zwischen Datei, Dateibeschreibungsblock und Datei-
  498.     kennung eingegangen. Die einzelnen Konstanten Im Aufzählungstyp
  499.     'OpenMode' sind auf die Positionen der entsprechenden Flags im MiNT-Fopen
  500.     angepaßt (wegen "fcntl()").
  501.   o 'types': POSIX-Mindestwerte (PosixPathMax, usw.) als Konstanten definiert.
  502.     Dokumentiert, daß NAMEMAX und PATHMAX bibliotheksinterne Größen sind -
  503.     sie wurden deshalb auch aus dem Modul POSIX entfernt. Die tatsächlich vom
  504.     Dateisystem unterstützten Größen können mit "sys.path/sysconf()" erfragt
  505.     werden.
  506.   o 'DosSystem': Bei der Modulinitialisierung wird geprüft, ob eine MiNT-
  507.     Version kleiner als 0.96 benutzt wird; wenn ja, wird das Programm mit
  508.     einer Fehlermeldung abgebrochen.
  509.   o "file.open()": Unter MiNT wird eine geöffnete Datei nicht mehr auto-
  510.     matisch bei Ausführung von "exec*()" geschlossen ('FdCloExec'-Flag
  511.     wird gelöscht).
  512.   o "proc.tfork()": Neue Funktion.
  513.   o "proc.SetStacksize()": Neue Funktion.
  514.   o 'tthread': Neues Modul zum Testen von "tfork()".
  515.  
  516. M2POSIX-04: 13-Mai-93
  517.   o Modul 'lib': Funktionen "bcopy()","bswap()","bzero()": Die Register
  518.     wurden erst gerettet, NACHDEM sie bereits verändert waren...
  519.     Zum Glück hatte das keine Auswirkungen auf die derzeit unterstützten
  520.     Compiler.
  521.   o Modul 'lib': Funktion "fnmatch()": Funktionswert INTEGER statt BOOLEAN,
  522.     Konstante FNMNoMatch.
  523.   o Neues Modul PORTAB. Ersetzt das alte M2TYPES. Das Modul stammt von
  524.     Ulrich Kaisers GEM-Bibliothek ``crystal'' (leicht verändert).
  525.   o Datei PORTAB.M2H: Die Abfrage auf die unterschiedlichen Compiler
  526.     geschieht jetzt mit #if (defined ...) oder #ifdef anstatt mit #if ...,
  527.     d.h. das entsprechende Makro ist nur für den jeweilig benutzten
  528.     Compiler definiert, sonst nicht (Kompatibilität mit ``crystal'').
  529.     Ebenso werden nun die Konfigurationsmakros und die Betriebssystemmakros
  530.     als definiert oder undefiniert abgefragt.
  531.     Die restlichen Makros sind wie bisher entweder mit 0 oder Nicht-Null (1)
  532.     definiert (#if ...)
  533.   o Neues Modul OSCALLS: Die Betriebssystemaufrufe sind jetzt ``richtige''
  534.     M2-Prozeduren, keine Makros mehr. Das ist doch etwas robuster.
  535.   o "proc.spawnvp()"/"execvp()": Der Parameter für den Programmnamen wurde
  536.     verändert (Bei Compilern mit REF-Parametern). Das angegebene Programm
  537.     wurde u.U. nicht gefunden.
  538.   o "file.open()": Unterstützung von O_APPEND unter MiNT.
  539.   o "file.open()": bei O_TRUNC wird jetzt versucht, die Dateiattribute einer
  540.     vorhandenen Datei so weit wie möglich zu erhalten.
  541.   o "file.creat()": Die Funktion wird jetzt über "open()" implementiert,
  542.     wie im Definitionsmodul angegeben. Dadurch wird die neue Datei auch
  543.     explizit mit 'O_WRONLY' geöffnet, und zumindest MiNT verhindert dann
  544.     Lesezugriffe.
  545.   o Modul 'tfile': Wegen obiger Änderung wurde die fälschliche Benutzung von
  546.     "creat()" für eine Datei, von der auch gelesen wird, durch "open()"
  547.     ersetzt.
  548.   o Modul 'POSIX': weitere Konstanten und Typen aufgenommen, besonders die
  549.     Fehlerkonstanten aus 'err'. Leider lassen sich Variablen nicht
  550.     reexportieren, sodaß 'err.errno' und 'cmdline.environ' nicht aus
  551.     'POSIX' importiert werden können.
  552.   o Modul 'DosSystem': "GetBasepage()" und PID, PPID sind entfallen, dafür
  553.     gibt es die Variable BASEP und die Prozedur "DosPid()", die aus einer
  554.     Adresse (auf eine Basepage) eine Prozeßkennung errechnet.
  555.   o Aufgrund eines Compilerfehlers kam das Megamax-System nicht mit
  556.     __LONG_WHOLE__ zurecht. Als Abhilfe wird jetzt in sämtlichen Modulen
  557.     bei Feldindizierungen explizit mit 16-Bit-Ausdrücken gearbeitet.
  558.  
  559. M2POSIX-03: 17-Apr-93
  560.   o Datei PORTAB.M2H: Makros für Standardeinstellungen von Compileroptionen.
  561.     Konfigurierbar (16/32-Bit, Stack/Registerrückgabe, MiNT-Berücksichtigung)
  562.   o Modul 'proc': neue Funktion "setsid()". Funktion "setpgid()": mehr
  563.     POSIX-Verhalten bei Argumenten <= 0.
  564.   o Anpassung an Hänisch Compiler Version 5.x
  565.   o Modul 'lib': neue Funktionen "setjmp()"/"longjmp()".
  566.   o Neues Modul POSIX: Dieses Modul ist eine Zusammenfassung aller
  567.     POSIX-Funktionen, sodaß der Import aus einem einzigen Modul ausreicht.
  568.     Es wird dabei lediglich reexportiert, bzw. wo dies nicht möglich ist,
  569.     die Prozeduren als Variablen definiert, sodaß kein zusätzlicher
  570.     ``Wasserkopf'' entsteht.
  571.   o Neue Datei POSIX_ID.M2H: Diese Datei kann als Eingabe für den
  572.     Präprozessor benutzt werden, um die Original-POSIX-Bezeichner, die
  573.     für die Anpassung an (alte) M2-Compiler geändert werden mußten,
  574.     wiederherzustellen.
  575.   o Modul 'dir': Funktionen "opendir()", "readdir()", "rewinddir()" und
  576.     "closedir()": Seit MiNT 0.97 ist das von 'Dopendir' gelieferte Handle
  577.     als opak zu behandeln, d.h. es darf nur als Handle wieder an andere
  578.     Verzeichnis-Routinen übergeben, aber nicht dereferenziert werden, da
  579.     der Speicher für das Verzeichnis im geschützten Bereich
  580.     (bei ``Memory Protection'') liegt.
  581.     Dieselbe Änderung in der MiNTLib von pl24 auf pl25 war mir entgangen.
  582.   o Modul 'CTYPE': Funktion "TOCARD()" liefert jetzt bei einem Zeichen, das
  583.     nicht zwischen '0' und '9', bzw 'A'/'a' und 'Z'/'z' liegt, einen Wert
  584.     zurück, der größer als jeder mögliche gültige Wert ist, um Fehler-
  585.     erkennung zu ermöglichen. "TOLOWER()" und "TOUPPER()" vereinfacht.
  586.     "ISODIGIT()" rausgeschmissen.
  587.   o Modul 'types' in 'types' und 'M2TYPES' aufgespalten. Dadurch können
  588.     die Typen aus 'M2TYPES' auch in anderen Umgebungen als M2POSIX genutzt
  589.     werden.
  590.  
  591. M2POSIX-02: 17-Feb-93
  592.   o Die optionale Exportliste rausgeschmissen
  593.   o Anpassung an TDI.
  594.   o Modul 'forkexec': "waitpid()" statt "wait()" benutzen
  595.   o Modul 'lib': Das Retten der Register bei den Assemblerprozeduren
  596.     wird je nach Compiler mit Makros geregelt.
  597.   o Modul 'file': Funktion "utime()": statt 'actime' wird 'modtime'
  598.     ausgewertet, da bei GEMDOS das Datum bei lesendem Zugriff nicht
  599.     geändert wird.
  600.   o Modul 'dir': "getcwd()" und "readlink()": Parameter mehr POSIX-like.
  601.   o Modul 'DosFile': Funktion "DosToUnix()" liefert jetzt statt <done> die
  602.     Länge des ungekürzten Dateinamens. Bei Bedarf kann dieser mit der
  603.     max. Größe des Strings verglichen werden.
  604.   o Modul 'lib': Funktion "bswap()" exportiert (erleichtert das Testen).
  605.   o Modul 'pSTRING': Funktion "AssignM2ToC()" hat 'size'-Parameter.
  606.   o Modul 'pSTRING': neue Funktion "APPENDCHR()".
  607.   o an einigen Stellen ISO-Änderung: PACKEDSET statt SET bei Mengen, die
  608.     für Bits stehen.
  609.   o Modul 'types': Etwas gestrafft.
  610.   o Datei PORTAB.M2H: geändert & erweitert
  611.  
  612. M2POSIX-01: 25-Dez-92
  613.   o M2POSIX erstmalig zur Verbreitung freigegeben
  614.  
  615.