Mitunter steht man als Programmierer vor der Entscheidung, bestimmte Vorgänge per Hand zu erledigen, weil es vermeintlich schneller geht ...
... oder man programmiert seinen Computer dafür - so dass er seinen eigentlichen Zweck erfüllt und mir Arbeit abnimmt und dadurch Zeit spart. Es kostet allerdings meist ziemliche Überwindung ein Programm für die Programmierung zu schreiben.
2002 war es bei mir aber soweit, da wurden die EDAS-Quelltexte für UNIPIC 2.0 auf den CP/M-Assembler umgestellt und in dieser Zeit entstanden zwei der kleinen Helferlein, welche sich komplett mit Quelltext auch im Downloadbereich befinden.
CAOS2INC.COM - MAC-Konverter fuer CAOS Dateien
Die Bedienoberfläche von UNIPIC enthält viele grafische Elemente, welche während bzw. nach der Übersetzung irgendwie in das fertige Programm hinein müssen. Dafür wurde das erste Werkzeug geschrieben. Es kann aus den Daten-Dateien von UNIPIC, wie PTB, SET, FIL, FNT, PIP/PIF, HIP/HIF u.s.w., beliebige Bereiche binär auslesen und in ASCII-Quelltext für den CP/M-Assembler (INC) umwandeln. Diese Include-Dateien lassen sich dann an der gewünschten Stelle im Quelltext angeben und dadurch automatisch in das Programm integrieren, wenn es übersetzt wird.
Aufgerufen wird CAOS2INC.COM unter beliebigen CP/M-Systemen durch die Eingabe von:
CAOS2INC Quellname.Typ [Zielname [Offset [Anzahl]]]
Es ist der vollständige Dateiname mit Typ der CAOS-Datei anzugeben, die Ausgabe erfolgt im aktuellen Userbereich und Laufwerk. Bereits vorhandene gleichnamige INC-Dateien werden ohne Warnung überschrieben.
Fehlermeldungen werden erzeugt, wenn die Quelldatei nicht auf dem Datenträger vorhanden ist, CAOS2INC ohne Quellname.Typ aufgerufen wurde, keine CAOS-Datei erkannt wird, bei fehlerhaften Parametern (s.u.) und bei Lese- und Schreibfehlern.
Die optionalen Parameter Zielname, Offset, Anzahl können von hinten nach vorn gesehen weggelassen werden. Der Zielname muss immer ohne Dateityp angegeben werden, da stets INC-Dateien erzeugt werden. Offset und Anzahl sind als Dezimalzahlen ohne irgendwelche Zusätze anzugeben. Offset überliest die angegebenen Bytes vom Beginn der Quelldatei gerechnet, Anzahl liest anschließend die angegebene Anzahl Bytes aus der Quelldatei und wandelt sie in die entsprechenden DB-Anweisungen um. Die Summe aus Offset und Anzahl darf nie größer als die eigentliche Codelänge der CAOS-Datei sein, welche daher bekannt sein sollte. Bei falschen Angaben wird ein Parameterfehler ausgegeben. Durch entsprechende Wahl von Offset (kann auch 0 sein!) und/oder Anzahl lassen sich beliebige Teile einer Quelle in die Zieldatei übernehmen.
COM2CAOS.COM - CAOS Datei aus COM Datei speichern
Dieses Programm sucht in einer anzugebenden Datei nach einem CAOS-Vorblock (Byte 0...7FH) und speichert anhand der dort gefundenen Anfangs- und Endadresse diesen Vorblock und ab Byte 80H folgende Binärdaten in Form einer CAOS-Datei wieder ab.
Der neue Dateiname und Typ wird ebenfalls dem CAOS-Vorblock entnommen. Deshalb ist er bei Nutzung der CP/M-Assembler immer im Quelltext zu definieren, wobei der Name in Byte 0...7 und der Typ in Byte 8...10 stehen müssen.
Es werden nur CP/M-konforme Dateibezeichnungen als CAOS-Dateiname akzeptiert. Byte 11...15 muss 0 sein, Byte 16 einen Wert von 2 bis 10 enthalten, in Byte 17 und 18 steht die Anfangs- in Byte 19 und 20 die Endadresse+1 der CAOS-Datei, in Byte 21 und 22 eine eventuelle Startadresse. Die restlichen Bytes sind nicht definiert.
Alle nach der CAOS-Endadresse folgenden Binärdaten der Quelldatei werden ignoriert. Dadurch lassen sich zusätzlich eingebundene (gelinkte) Programmteile z.B. aus Bibliotheken wieder entfernen aber alle externen Bezüge der CAOS-Datei werden vom Linker richtig aufgelöst und eingetragen.
Aufgerufen wird COM2CAOS.COM unter beliebigen CP/M-Systemen durch die Eingabe von:
COM2CAOS Quellname.Typ
Es ist der vollständige Dateiname mit Typ anzugeben, die Ausgabe erfolgt im aktuellen Userbereich und Laufwerk. Bereits vorhandene gleichnamige CAOS-Dateien werden ohne Warnung überschrieben. Fehlermeldungen werden erzeugt, wenn die Quelldatei nicht auf dem Datenträger vorhanden ist, COM2CAOS ohne Quellname.Typ aufgerufen wurde, keine CAOS-Datei erkannt wird und bei Lese- und Schreibfehlern.
Dieses Programm wird bei der Übersetzung von UNIPIC benutzt, um in den Overlays die externen Adressen des Hauptprogrammes bekannt zu machen. Dazu wird der Adresszähler der jeweiligen Datei mit der Phase-Anweisung entsprechend eingestellt und das Overlay als erster Teil mit dem Hauptprogramm als zweiter Teil gelinkt. Anschließend trennt COM2CAOS die Overlaydatei wieder aus der entstehenden COM-Datei heraus, wobei der Linker die richtigen absoluten Adressen eingetragen hat.