Noch mehr TechTalk: Das FID-FILE-Format |
Der folgende Artikel ist aus meiner jüngsten Beschäftigung mit einer Gattung von Fileformaten entstanden, die mit Auftauchen von Festplatten ihren Einzug gehalten hat und seitdem immer mehr Funktionen ausführt. Diese Files enden immer auf .FID (manche auch auf .FIB; das ist im Prinzip dasselbe). Diese Files werden von den neueren Generationen der Betriebssysteme von LocoScript und CP/M Plus ausgewertet. Namentlich sind das sämtliche LocoScriptversionen ab v2.16H (nicht das Standard v2.16), bis zur heutigen Generation v4.xx, sowie ab CP/M Plus mit XBIOS-Versionen 1.8 bis zum neuesten CP/M v1.15. Achtung! Die älteren Versionen von LocoScript und CP/M Plus, namentlich die auf den Disketten, die bei der Auslieferung vom Joyce dabei waren, ignorieren die .FID Files vollständig. Deshalb sind auch mit diesen Versionen keine Festplatten, gesteuerten 3,5" Laufwerke, LocoScript-Screensaver etc. möglich. Bei LocoScript ist das nicht weiter tragisch, wer benutzt schon noch die Versionen vor v2.16! Für CP/M sind Updates entweder bei Cirtech oder bei Locomotive erhältlich. Um das in den folgenden Zeilen Beschriebene in der Praxis nachvollziehen zu können, ist es also nötig, mindestens LocoScript v2.16h und/oder CP/M v1.8 oder CP/M v1.15 zu verwenden. Die Versionsangabe wird immer beim Bootvorgang angezeigt! .FID ist eine Endung, genauso wie .COM oder .EMS oder .SUB, aber diese Endung bewirkt folgendes: Neuere Betriebssystemversionen schauen während des Bootvorgangs nach solchen Files, noch bevor etwa ein CP/M nach einer PROFILE.SUB sucht, was ja auch automatisch geht, und laden Files mit dieser Endung und versuchen sie auszuführen. Bedingung dafür ist, daß das File im sogenannten 'PRL-Format' vorliegt, nach dem PRL-Header von 100H Bytes einen Sprungbefehl enthält und gleich anschließend die Bytefolge 8 mal Z, dann 'FID', dann 2 Bytes einer beliebigen Versionsnummer, dann eine 2stellige(!) Prüfsumme über das komplette File. Ist eine dieser Bedingungen nicht erfüllt, wird das File kommentarlos nicht ausgeführt. Wozu ist das nun gut? Nun, z.B. um Bildschirmschoner, Festplatten, B- Laufwerke, FLASHDRIVES einzubinden und das Betriebssystem damit vertraut zu machen. Aber auch VIREN wären damit denkbar (vielleicht).
dieses Programm muß durch den Assembler gejagt werden, z.B. ZASM. Dann
folgt der LINK-Vorgang mit der Option ÄOPÜ, um ein .PRL-File zu erzeugen.
Jetzt muß noch die Prüfsumme errechnet werden. Ich verwende dazu ein
kleines Programm, das sich aus der Adresse (0001) des Files die Länge holt
und umrechnet:
Das Programm muß dann so ausschauen (mit dem Dienstprogramm DUMP gedumpt):
Beim Neustart von unserer so präparierten Startdiskette erscheint dann ....(ja das soll jeder selber ausprobieren können). Dieses kurze Beispielprogramm bewirkt nicht sehr viel im Joyce, macht sich nur am Start bemerkbar und verabschiedet sich dann. Es kann aber ausgebaut werden, um in die Betriebsabläufe des Joyce einzugreifen, und resident zu bleiben, d.h. dauerhaft im Speicher zu bleiben. Dazu genügt es schon, vor dem RETURN-Befehl oben das OR A durch ein SCF (set Carry Flag) zu ersetzen. Wer sich damit beschäftigen will, der findet die zugehörigen Files FIDTST1.Z80 und FIDTST1.FID über diesen Download-Link. FIDTST1.FID ist das fertig assemblierte und präparierte Ergebnis aus obigem Beispiel, das direkt verwendet werden kann. Um einen Effekt zu bekommen, muß es auf eine Startdiskette mit geeignetem Betriebssystem (siehe oben) kopiert werden, in Gruppe 0, und dann von dieser Startdiskette ein Warm- oder Kaltstart ausgeführt werden. Reiner Seitz
Und hier gibt es weitere Infos zu Bildschirmschonern für CP/M und LocoScript im FID-File-Format.
|