Technische Tips und Tricks: Dateianalyse B. Kühnast Manchmal steht man vor dem Problem, daß ein Programm auf dem eigenen System nicht läuft, auf dem eines Freundes aber keine Probleme macht. Das kann daran liegen, daß das Programm Speicherbereiche benutzt, die schon anderweitig benötigt werden. Einer dieser Speicherbereiche ist die Seite 6, der Adreßraum von 1536 ($0600) bis 1792 ($06FF). Dieser Platz wird in vielen Zeitschriften und Büchern als frei dargestellt und für eigene Routinen (Maschinensprache unter Basic z. B.) empfohlen. Dabei sollte man beachten, daß es zu Überschneidungen mit anderen Programmen kommen kann. Grundsätzlich sollte man davon aus- gehen, daß die Seite 6 nicht frei ist, außer man benutzt nur EIN Programm. Es gibt auch Programmier- sprachen, die die Seite 6 brauchen. Um solchen Fällen auf die Schliche zu kommen, habe ich ein ganz einfaches Programm geschrieben, mit dem man ausführbare Dateien, also Maschinen- sprache-Files (meist durch .COM gekennzeichnet) untersuchen kann. Diese Dateien sind oft in mehreren Teilen. Der File Segment Analyzer gibt von jedem Teil (Fachausdruck Segment) die Start- und Endadresse an. Die Bedienung ist einfach. Nach dem Start in Turbo-Basic gibt man den Dateinamen an. Wichtig ist die Eingabe des Laufwerks! Wenn man die Ausgabe auf den Drucker haben will, sollte er jetzt eingeschaltet werden. Zum Drucken auf die Taste P drücken, mit jeder anderen Taste erfolgt die Ausgabe auf den Bildschirm. Das Programm listet alle Segmente mit Start und Ende auf und startet nach Druck auf eine beliebige Taste neu. Da jedes Segment in den Speicher gelesen werden muß, kann es bei sehr großen Teilen zu Problemen mit dem Programm kommen. Segmente die mehr als 25000 Bytes groß sind (siehe Zeile 30), können Fehler verursachen. Dieses Problem sollte jedoch nicht allzu oft vorkommen. Hier das Programmlisting: (BITTE DAS LISTING AUSDRUCKEN) In Zeile 80 wird festgelegt, wie der Line-Feed Befehl für den Drucker auszusehen hat. Der Atari sendet kein automatisches Line-Feed (Zeilen- schaltung das Papier wird eine Zeile weiter transportiert) an den Drucker. Sollte der über ein Auto-LF verfügen (erkennt man an den Leerzeilen in der Auflistung der Segmente), kann man hier LF$="" einsetzen. Die Adressen werden in Hexadezimal- zahlen ausgegeben. Für dezimale Angaben muß man die Hex$-Funktion in Zeile 170 entfernen, also statt HEX$(ST) einfach ST einsetzen usw. Leider kann der FSA nur Hinweise geben. Sollte es mit einem eigenen Programm Probleme geben, kann man das wahr- scheinlich ändern. Bei Überschneidungen von zwei fremden Dateien kann man leider nichts ändern. Das war's für dieses Mal. Übrigens könnt ihr bei Problemen auch schreiben.