----------------------------- ModList -------------------------------- Dieses Programm dient dazu Modula-2 Quelltexte auszudrucken. Was ist daran so besonders? Nun, alle Modula-Schlüsselwörter werden im Fettdruck ausgegeben, alle Kommen- tare werden kursiv gestellt, jede Zeile erhält eine Nummer und 'last not least' gibt's noch 'ne seitenweise Formatierung. Das alles dient dazu, hinterher bestimmte Textstellen leichter auffinden zu können und die Lesbarkeit des Listings durch die markierten Kommentare und M2-Schlüsselwörter zu steigern. Ausgedacht hat sich das ganze die Redaktion der Zeitschrift: CHIP-TOOL-Praxis/Modula-Sonderheft (Gruß an den Programmierer, wirklich mal ein nützliches Programm) Ich hab eigentlich nichts anderes gemacht als das Listing (das auf einem MS-DOS M2-Compiler erstellt wurde ) abzutippen, und es an den Stellen, an denen es erforderlich war, auf die Besonderheiten des Amiga und des M2-Amiga- Compilers umzustellen. Viel Spass mit dem Programm, Andreas P.S.: Ich hoffe, daß ich durch die Umsetzung des Programms auf den Amiga nicht gegen irgend welche Copyrights verstosse. ModList Version 1.2 ------------------- Mich (Bene) hat die Verbesserungswut gepackt. Ich hoffe, daß ich das Programm nicht nur unnötig verkompliziert, sondern auch etwas bedienungsfreundlicher gemacht habe. Hier die Änderungen: * Die Ein/Ausgaben laufen jetzt nicht mehr über OpenInput/OpenOutpt von InOut sondern über das FileSystem. Der Grund dafür ist, das das Modul InOut praktisch keine Fehler abfängt und nicht auf das Dateiende achtet ("done" wird nicht richtig gesetzt). Deshalb hat die alte Version nicht korrekt aufgehört, als die Eingabedatei zu Ende war oder wenn man den Drucker auf OffLine gestellt hat. Der Fehler ist jetzt behoben. * Jetzt mal eine Moralpredigt an alle Druckerprogrammierer: Was glaubt ihr eigentlich, wozu die Preferences und die ganzen Druckertreiber da sind? Bestimmt nicht deswegen, damit dann jeder sein Programm trotzdem eigenbrödlerisch schreibt und nur seinen eigenen Drucker ansteuert. Preferences mit seinen Druckertreibern ist dazu da, damit Druckprogramme, die keine besonderen Fähigkeiten verlangen, sondern nur Dinge benötigen, die eigentlich jeder Drucker kann (Fettschrift, Unterstreichen usw) ohne Anpassung auf allen Konfigurationen laufen. Es gibt deshalb genormte Steuerzeichen (Esc-Sequenzen), die im "Rom Kernel Reference Manual Libraries and Devices" von Addison Wessley im Kapitel "Printer device" auf Seite 420 beschrieben werden. Diese Standardsequenzen werden vom printer-device (prt:) automatisch in die Steuerzeichen des mit Preferences eingestellten Druckers übersetzt. Ich habe deshalb anstatt der spezifischen Steuerzeichen die Standard- Esc-Sequencen implementiert. Das ganze funktioniert bei mir und Fridtjof einwandfrei und ohne Programmänderungen, obwohl wir verschiedene Drucker haben. * Da ich öfters auch auf Einzelblatt drucke, habe ich eine Abfrage eingebaut, die prüft, ob bei Preferences "Single Sheet" eingestellt ist und wenn ja, dann bei jeder Seite wartet, bis man ein Blatt eingelegt hat. (Leider ist im Modul "Intuition.def" der Compiler- version V3.2d ein Fehler, weshalb dies nur mit der korrigierten Version (liegt bei) funktioniert.) * Bei langen Pfadnamen ist es lästig, den Namen der Quelldatei anzu- geben, deshalb habe ich das Programm so erweitert, daß der Workbench- Argument-Mechanismus funktioniert. Man braucht jetzt nur noch das Icon des Texts anzuklicken, den man drucken möchte und danach ModList doppelklicken. Startet man ModList "pur" kann man natürlich den Namen auch von Hand eingeben. * Das automatische Anhängen von "mod" habe ich ausgebaut, weil es sonst unmöglich ist, ein Definitionsmodul (.def) auszudrucken. Viel Spaß Bene ModList Version 1.3 ------------------- Auch mich (A.Lüdtke) hat die Verbesserungswut gepackt. Mich hat es z.B. gestört, daß mein Drucker bei Tabs und anderen Steuerzeichen den Ausdruck auf "seine Art" dargestellt hat. - Jetzt werden Steuerzeichen durch "^" + Buchstaben dargestellt und die Tabs werden durch 1 bis 8 Spaces ersetzt. Weiterhin wird bei einem Formfeed im Text eine neue Seite begonnen. Bei einem Formfeed im Kommentar oder String erscheint dagegen ein "^L" im Ausdruck. - Ich finde es auch besser, daß jetzt auf jeder Seite Dateiname, Datum und Uhrzeit steht. - Als letzte Verbesserung habe ich das Auslesen der Paperlength und des Spacing eingebaut. Hierdurch kann über Preferences die Seitenlänge des Ausdrucks bestimmt werden. Möchte man mit 8 LPI statt 6 LPI drucken, so braucht die Paperlength nicht umgerechnet werden, da das Programm dies macht. - Als allerletztes habe ich im Programm ein paar kosmetische Korrekturen angebracht (z.B. kann von der Workbench nur noch auf dem Drucker ausgegeben werden). Ich hoffe das mir das verziehen wird. Ebenfalls viel Spaß Andreas PS.: Findet Ihr nicht auch das der Name --> M2P <-- besser paßt ? ModList Version 1.4 ------------------- Was soll ich sagen, auch mich (Thomas Clever) hat die Verbesserungswut gepackt. Meine Änderungen: - ModList heißt bei mir wieder ModList, aber das kann natürlich jeder machen wie er will. - ModList ist jetzt ein reines Druckprogramm, Dateien werden nicht mehr unterstützt. (Schon V1.3 war ja fast gänzlich auf die Druckausgabe zugeschnitten.) Zur Ausgabe auf den Drucker wird das Modul PrinterSupport V3.0 benutzt. - ModList V1.3 hatte einen Fehler, der es für mich unbrauchbar machte: Wenn die Einstellung von PaperLength in Preferences die Seitenlänge des eingelegten Papiers voll oder fast voll ausnutzte und einige Zeilen des Listings mehr als 72 Zeichen lang waren, dann hatte das katastrophale Folgen, denn der Drucker druckt den Rest der Zeile natürlich in die nächste Zeile. Wenn dann nach den Berechnungen von ModList die Seite zu Ende war - in Wirklichkeit waren schon die ersten Zeilen der nächsten Seite beschrieben - schickte ModList ein Formfeed (Seitenvorschub) an den Drucker und dieser führte den dann (leider) auch aus. Das Result war dann ein fast leeres Blatt Papier. Bei mir sah das dann so aus, das nach fast jeder vollen Seite eine fast leere Seite (natürlich ohne Titel und Seitenzahl) aus dem Drucker kam. Dieser Fehler ist behoben! - Die lokalen Module habe ich entfernt, weil der Link Optimizer (optimierender Linker) von A+L lokale Module nicht handhaben kann. Dabei ist das externe Modul ReservierteWoerter entstanden. - An das übergebene Argument wird wieder (wie in V1.1) ".mod" angehängt. Dies geschieht jedoch nur, wenn das Argument weder auf ".mod" noch auf ".def" endet. Somit kommen sowohl Tippfaule wie auch die, die Definitionsmodule ausdrucken wollen, auf ihre Kosten. - Viele interne Änderungen (es sollen Optimierungen sein) sind ModList auch nicht erspart geblieben. Viel Spaß Thomas