-----------------------------------------------------------------------------
   :Program.    M2Error
   :Author.     Fridtjof Björn Siebert (Amok)
   :Address.    Nobileweg 67, D-7000 Stuttgart-40
   :Phone.      (0)711/822509
   :Shortcut.   [fbs]
   :Version.    1.0
   :Date.       29.03.88
   :Copyright.  PD, but of course contributions are wellcomed.
   :Language.   Modula-II
   :Translator. M2Amiga
   :Imports.    none.
   :Contents.   Program to type compile-errors.
   :Remark.     Usage: M2Error Source
   :Bugs.       none known yet. I still don't know what c1455252H in Error-
   :Bugs.       means, but I guess it's not important.
-----------------------------------------------------------------------------

Diese Routine macht im Prinzip nicht viel mehr als das Programm
`M2Error', daß M2Amiga beiliegt. M2Error gibt aber zu jeder fehler-
haften Zeile lediglich die Umgebung, und nicht, was viel nötiger wäre,
die Zeilennummer aus.

Bei M2Err ist dieser Mangel beseitigt. Es werden die Zeilennummern der
fehlerhaften Zeilen ausgegeben, so daß man in einem Editor direkt in
diese springen kann, ohne viel zu suchen. Nicht beabsichtigt, aber
dennoch positiv ist, daß M2Err die Fehlerliste fast doppelt so schnell
ausgibt wie M2Error.

Außerdem werden von M2Err keine Minuszeichen ausgegeben, die ich bei
M2Error ziemlich häßlich finde. Der Pfeil nach oben wurde durch einen
dezenten Strich ersetzt.

Als ich M2Err schrieb viel mir negativ auf, daß ich nirgends eine
Dokumentation der Fehlerdatei und der Fehlerlist fand. Inzwischen ist
mir nach vielen Hexdumps das Format jedoch einigermaßen klar geworden.
Für diejenigen, die auch über die Fehlerdateien bescheidwissen
möchten, hier kurz deren Aufbau:

s:Modula-2 Fehlermeldungen:

  1. Addresse des nächsten Fehlers (4 Byte)
  2. Fehlernummer                  (2 Byte)
  3. Fehlertext, Ende mit 0        (x Byte)

  4. Wie 1. Hierher zeigt der Zeiger bei 1.
  5. Fehlernummer
  etc.

  letzter Zeiger zum nächsten Fehler ist 0. Danach ist die
  Fehlernummer auch 0.

.modE und .defE -File:

  1. LONG(3).     (4 Byte) Bedeutung ist mir unklar
  2. WORD(c145H)  (2 Byte) Bedeutung auch nicht klar. 2. Byte ist `E'

  3. WORD(5252H)  (2 Byte) `RR' ergibt mit 2. `ERR'
  4. Adrresse des Fehlers im .mod oder .def-File (4 Byte)
  5. Fehlernummer (2 Byte) Entspricht Nummer in "s:Modula-2 Fehlermeldungen"
     Vorsich: Die Fehlernummer muß nicht in der Fehlerliste enthalten sein.
     Es gibt Fehlernummern, die in der zum M2Amiga-Buch gehörenden Fehler-
     mit xx bei den zwei niederwertigsten Ziffern, die in der Fehlerdatei
     fehlen. Dies ist aber nicht weiter schlimm, da die Fehlermeldungen
     (für mich) unverständlich sind.
  6. WORD(c145H) oder WORD(0FFFFH) (2 Byte). Wenn keines von beidem, dann
     zweite oder dritte Fehlernummer, kann wie 5. behandelt werden. c145H
     zeigt an, daß weitere Fehler folgen. 0FFFFH bedeutet Ende der Fehler-
     dateil.

-- Fridtjof.
