★ APPLICATIONS ★ DISQUE ★ HEADER-CAT ★ |
Header-Cat | Applications Disque |
Programm -transfer leicht gemacht Viele Programme auf Kassette für den Schneider belegen den Speicherbereich, der auch vom DOS benutzt wird. Das Überspielen von Kassette auf Diskette ist dadurch unmöglich. Zwei Routinen helfen die Programme dennoch zu überspielen. Das Überspielen der Programme von Kassette auf Diskette ist beim Schneider CPC 464 manchmal nicht ganz einfach. Das im Controller befindliche Amsdos (das Betriebssystem des Diskettenlaufwerks) belegt für seine Systemvariablen nämlich exakt 916 Byte im oberen RAM-Bereich. Hat man auf der Kassette ein Programm gespeichert, das diesen Bereich ebenfalls nutzt, so werden die Variablen beim Laden überschrieben und das Diskettenlaufwerk kann nicht mehr angesprochen werden. Programme die in Basic geschrieben sind machen dagegen selten Probleme Wenn sie so lang sind, daß die übrig bleibenden 42629 Bytes nicht ausreichen, dann hilft nichts außer Streichen. Schwieriger ist es, wenn Maschinenprogramme von Kassette auf Diskette überspielt werden sollen. Erstens braucht man dazu Programmdaten wie Anfangsadresse, Länge und Startadresse und zweitens liegen gerade diese Programme bevorzugt am oberen Speicherende »Header-Cat« und »Move« helfen hier weiter. Mit »Header-Cat« werden die Kopfdaten der Programmblöcke von der Kassette gelesen und ausgegeben. Das Programm »Move« dient zum Verschieben von Speicherbereichen. Dies ist immer dann erforderlich, wenn ein Maschinenprogramm die DOS-System-variablen zu überschreiben droht. Dazu wird das Programm zuerst von Kassette in einen anderen Speicherbereich geladen. so daß die Diskettenstation weiterhin angesprochen werden kann. Beim späteren Laden von der Floppy wird vor dem Start des Programms die Maschinenroutine an Ihren ursprünglichen Platz zurückverschoben und die orginalen Adressen stimmen wieder. Belegt beispielsweise ein Maschinenprogramm den Speicherbereich von 18000 bis 43000, so wird es mit der Befehlsfolge »MEMORY 14999:LOAD"",15000« in den Bereich zwischen 15000 und 40000 von Kassette geladen. Danach wird es mit »SAVE"Name.bin"b,15000,25001« auf die Diskette geschrieben. Vorsicht: 25001 ist die Länge dieses Programms und nicht 25000. Mit »LOAD'Name.bin"« läßt sich die Maschinenroutine nun immer wieder laden, aber sie liegt noch nicht an der richtigen Stelle im Speicher. Um sie wieder in die richtige Position zu bringen, wird nun das Hilfsprogramm »Move.bin« in einen freien Speicherbereich geladen, das nach Eingabe der »Move-Routine« auf Diskette zur Verfügung steht In unserem Beispiel würde das mit »MEMORY 14999-28:LOAD "Move.bin”15000-28« erfolgen. Nun kann die Verschieberoutine mit »CALL 15000-28,15000,25001,18000« aufgerufen werden und das Programm an den ursprünglichen Platz verschoben werden. H. Schwarting/hg, Happy Computer
|