Disk Label Printer V1.10 ------------------------ geschrieben 1989 von Jürgen Weinelt Zur Kanzel 1 D-8783 Hammelburg Deutschland Disk Label Printer (DLP) V1.10 ist Public Domain. DLP V1.10 darf ohne jede Einschränkung weitergegeben, verändert, teilweise oder ganz in anderen Programmen genutzt werden. Hinweis: Benutzung des Programms auf eigene Gefahr; d.h. wenn es irgendwas demoliert, beschwert euch nicht bei mir! Über größere Bugs wüßte ich trotzdem gerne Bescheid... Hinweis: DLP V1.10 bedruckt Diskettenetiketten für 3.5" Disketten. Das Programm erwartet Endlos-Etiketten in der Größe von ca. 69×71mm², wie sie in Deutschland z.B. von der Firma Zweckform vertrieben werden. Hinweis: Die vorliegende Version wurde mit M2Amiga V3.32d übersetzt und mit dem Optimizer m2o V1.2d gebunden. Vorgeschichte ------------- Ich habe meinen Amiga1000 schon seit längerer Zeit (ca.02/87); zunächst schrieb ich einige Programme in AmigaBASIC, aber das war mir schließlich zu langsam und zu unflexibel. Auf der Suche nach Besserem entschied ich mich dann für Assembler, das war schon sehr viel schneller und flexibler. Leider mußte ich nach kurzem feststellen, daß mir Assembler doch etwas zu unkomfortabel war, trotz der unbestrittenen Leistungsfähigkeit. C kam für mich nicht in Frage ("C" steht für Chaos, gell Steffen?) Schließlich (ca. 02/89) wurde ich auf Modula-2 aufmerksam... es war sozusagen Liebe auf den zweiten Blick. Was hat diese schöne Story nun mit DLP zu tun? DLP war mein erstes Modula-2 Programm; ich schrieb es hauptsächlich, um mit den Besonderheiten von M2Amiga vertraut zu werden und um mit Modula-2 ganz allgemein ein wenig vertraut zu werden. (Eine Demo-Version von M2Amiga V3.1 gibt's auf der Fish-Disk #113; die zur Zeit [11/90] neueste Version ist V3.32). DLP ist sicher an diversen Stellen verbesserungsbedürftig; das ist auch der Grund, warum ich das Programm als PD freigebe (und zwar zusammen mit dem Quellcode). Ich habe einfach weder Zeit noch Lust, das Programm weiter zu verbessern, für meine Zwecke ist es gut genug. Sollten Sie DLP wesentlich verbessern, wäre ich Ihnen dankbar, wenn Sie mir eine Kopie Ihrer Version schicken könnten... Die hier veröffentlichte Version 1.10 unterscheidet sich nur unwesentlich von der ursprünglichen (unveröffentlichten) Version 1.00; ich habe sie nur anläßlich der Amiga90 in Köln etwas aufpoliert. Ich hoffe, daß das Programm vielleicht für manchen Modula-II-Einsteiger als Beispiel für Dos- Programmierung dienen kann. Aufruf ------ Der Aufruf von DLP V1.10 ist denkbar einfach; das Programm kann sowohl vom CLI aus gestartet werden, als auch von der Workbench. Es gibt nur einen einzigen Parameter, nämlich den Namen des Devices, für das ein Etikett gedruckt werden soll (i.allg. DF0: ... DF3:). Dieser Name wird nicht überprüft, es kann z.B. auch ein Subdirectory oder sogar ein anderes Device (wie z.B. "SER:") angegeben werden, was natürlich u.U. zu recht seltsamen Ergebnissen führt. Die Angabe des Parameters ist optional; falls nichts angegeben wird, nimmt DLP als Voreinstellung das interne Laufwerk (DF0:). Bedienung --------- Nach dem Programmstart liest das Programm das Inhaltsverzeichnis des ausge- wählten Laufwerks ein. Das kann je nach Ihrer Arbeitsumgebung (AddBuffers) und Umfang des Verzeichnisses einige Sekunden dauern. Falls der Name der Diskette auf "AmigaLibDiskxxx" lautet, ersetzt DLP ihn durch "Fish-Disk #xxx". Der Name wird angezeigt, und man kann entscheiden, ob man den Disknamen von Hand ändern möchte (das betrifft natürlich nur den Namen, der auf das Etikett gedruckt wird; die Diskette bleibt davon unbeeinflußt). Dann wird das Inhaltsverzeichnis der Diskette angezeigt; allerdings nur die ersten 32 Programme (zweispaltig). ".info"-Dateien werden ignoriert. Man kann nun mit den Cursortasten und Return/Enter diejenigen Programmnamen auswählen, die auf das Etikett gedruckt werden sollen (max. 12 Stück). Die Zahlen, die vor den Programmnamen angezeigt werden, geben die Reihen- folge beim Ausdruck an. Der Name mit der größten Ziffer kann jeweils wieder aus der Liste gelöscht werden, indem man dort einfach nochmals Return/Enter drückt. Wenn man mit der Auswahl fertig ist, kann man mit "ESC" das Etikett drucken lassen. Danach kann man noch wählen, ob man noch eine weitere Diskette bearbeiten möchte. Einige technische Einzelheiten ------------------------------ DLP liest einfach solange mit Examine/ExNext FileInfoBlocks, bis das gesamte Verzeichnis gelesen ist. Gleichzeitig werden die FIB-Felder für den Dateinamen und den Dateityp in ein eigenes Array übernommen. Der Algorithmus, mit dem die Dateinamen sortiert werden, glänzt nicht gerade durch überragende Geschwindigkeit, ist aber recht kurz und einfach zu ver- stehen; angesichts der geringen Datenmenge, die zu sortieren ist, habe ich mich für diese simple Sortiermethode entschieden. Der Ausdruck der Etiketten erfolgt über "PRT:", sollte also mit allen Matrixdruckern problemlos zusammenarbeiten (ich habe einen Star NL10). Die diversen Ein-/Ausgaberoutinen (besonders InputLine) bieten sich dazu an, sie in ein eigenes Modul auszulagern und auch in anderen Programmen zu nutzen; ich arbeite zur Zeit u.a. auch an einem Modul namens "RawIO", das einige dieser Prozeduren enthalten wird (und einige zusätzliche). RawIO wird eine einheitliche Ein-/Ausgabeschnittstelle sowohl für die Kommunikation mit Dos (CON:, RAW: etc.) als auch mit Intuition (Windows/Input.device) zur Verfügung stellen, jedenfalls, was die Ein-/Ausgabe von Texten angeht. Viel Spass. #################################### ######################################## ## ## ## /¯¯¯¯\ \\|||// \ / ## ## / \ \|o o|/ \ / ## ## | | . | \ /\ / ## ## \ / | ' | \ / \ / ## ## \____/ \ ~ / \/ \/ ## ## ¯¯¯ ## ######################################## ####################################