>* Silbentrennung: W=74, oben <@> Q -, unten <@> Q , ¨>* dann <@> H eingeben. ¨>PL=72 LM=12 RM=86 TM=4 BM=68 PF=2¨&0E&DATAGEN/CMD f}r Disk-Jockeys$B&02&¨ˇ 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.¨ˇ $B&01&Arnulf Sopp¨