DATAGEN/CMD für Disk-Jockeys Das Programm DATAGEN/CMD dient dazu, beliebige Speicherinhalte für BASIC-Programme in DATA-Statements umzuwandeln. Auf diese Weise können z. B. Assembler-Programmierer ihre Maschinenroutinen einem BASIC-Programm mit der bekannten READ-POKE-Methode einverleiben. Ob eine Diskversion von DATAGEN existiert, weiß ich nicht. Mir lag eine Level-2-Kopie vor, und das gab Ärger: LMOFFSET bzw. VL setzen gewissen Programmen eine Aufforderung hin­ tenan, RESET und BREAK gleichzeitig zu drücken, um ins Level-2-BASIC zu gelangen. Um ein Maschinenprogramm mit dieser Aufforderung letztenendes doch noch unter Disk-BASIC fahren zu können, müßte ich es zunächst dis­ assemblieren, relozieren und anschließend wieder auf die Platte zurück­ schreiben. Da gibt es Amüsanteres. Also schaute ich mir DATAGEN mit DDE (ähnlich SUPERZAP) genauer an und merkte, daß wegen der genügend hohen Ladeadresse die RESET-BREAK-Akrobatik völlig überflüssig war. Dann flog sie eben raus. Das nächste Ärgernis war, daß man immer artig alle geforderten Ein­ gaben machen mußte, sonst wurden die erfragten Werte zu 0 gesetzt. Des­ halb wurden "Default"- Werte (Normalwerte) gleich in das Programm einge­ zapt, und zwar 10 für die erste Zeilennummer und 10 für den Zeilenabstand (Inkrement, s. LNBUF und INCBUF im Listing). Ums Disassemblieren usw. kam ich schließlich doch nicht herum, denn: Nun sollte DATAGEN auch automatisch die nächste verfügbare Zeilen­ nummer bei bereits vorhandenem BASIC-Programm und gegebenem Inkrement (nach AUTO) ermitteln. Das erledigt der Programmteil vor NOBAS (Listing), wo zunächst geprüft wird, ob ein Programm bereits im Speicher steht. In diesem Falle wird der Benutzer nur noch nach der Start-, der Endadresse und dem Inkrement gefragt, damit es mit den bereits vorhandenen Zeilen­ nummern keinen Kuddelmuddel gibt. Nachdem das Programm nun ohnehin hatte analysiert werden müssen, kam es auf eine weitere kleine Änderung jetzt auch nicht mehr an: Bei der Hexeingabe sind nun auch Kleinbuchstaben zulässig. Mit AND DF wird dann kurzerhand das Bit 5 wegmaskiert. Schließlich fügte ich noch nach jedem Datum ein zusätzliches Blank ein, auf daß die Sache zum Abtippen über­ sichtlicher werde. Drei Schönheitsfehler hat das Programm in seiner neuen Form noch: 1. Es darf zwar innerhalb eines Programms aufgerufen werden, erzeugt dann allerdings sehr phantasievolle Zeilennummern. 2. Es kann sich nicht sel­ ber in DATA verwandeln, obgleich es sich dabei eigentlich nicht verän­dert. 3. Mit CMD"S" kommt man nicht mehr nach DOS, sondern die Fehler­meldung "zuwenig Speicher" wird ausgegeben. Also muß man über DEBUG oder mit CMD"BOOT" ins DOS zurückkehren. Daran ist wohl eine der gecallten ROM-Routinen schuld, die nur für L2 passen. Vielleicht fällt jemandem von euch ein, wie man diese drei für die Praxis belanglosen Fehler beseitigen kann. Muß aber nicht sein. Da DATAGEN in seiner ursprünglichen Form nur zwei Sektoren belegt (jetzt übrigens auch), wobei die zu einer Einheit (Granule) fehlenden drei Sektoren für alles Mögliche verfügbar gewesen wären, wäre auch eine Erweiterung mit Zaps am Programmende möglich gewesen. Einfacher ist eine Disassembly mit DISASSEM oder DSMBLR, in die man die Änderungen ein­ bringt. DATAGEN hat nämlich nur willkürliche Adressen und kann in jeder neuen Form wieder assembliert werden. Daher auch das neue ORG bei FE71 (Topmem für 64 kB). Mit einem entsprechenden ORG kann das Programm für jede Speichergröße beliebig reloziert werden. Die Labels "M7xxx" stammen aus der alten Version für 16 kB. Sie wurden von DSMBLR erzeugt. Arnulf Sopp