APPLICATIONSPROGRAMMATION ★ MC-RELOCATOR|SCHNEIDER MAGAZIN) ★

MC-Relocator (Schneider Magazin)Applications Programmation
★ Ce texte vous est présenté dans sa version originale ★ 
 ★ This text is presented to you in its original version ★ 
 ★ Este texto se presenta en su versión original ★ 
 ★ Dieser Text wird in seiner Originalfassung präsentiert ★ 

Sicher hatten Sie auch schon einmal Probleme be der Relökalisierung von MC-Programmen. Mit unserem "Tip des Monats” könnten diese der Vergangenheit angehören. Sie werden von den neuen, interessanten Befehlen bestimmt begeistert sein.

”MC-Relocator” wurde von Hans-Georg Eßer erdacht und geschrieben. Unser Autor ist 16 Jahre alt und arbeitet mit einem CPC 6128, den er hauptsächlich zur Programmentwicklung in Basic, Pascal und Assembler sowie zur Textverarbeitung einsetzt. Seit kurzem besitzt er auch einen PC 1512. Spiele können Hans-Georg nicht besonders begeistern; er interessiert sich vor allem für Anwendungen.

Wenn ihm sein Computer einmal Zeit läßt, spielt unser Autor Tennis oder ist mit seinem Rad unterwegs. Zu diesen Freizeitbeschäftigungen bietet ihm die Musik dann einen willkommenen Ausgleich.

MC-Relocator

Dieses Programm stellt neun neue Befehle zur Relo-kalisierung von MC-Programmen zur Verfügung. Ein Programm ist dann zu relokalisieren, wenn es z. B. ab Adresse &A000 läuft, aber von einem Basic-Programm benötigt wird, das den Bereich ab &A000 bereits für Daten verwendet. Dann muß es beispielsweise an die Adresse &8000 verschoben werden. Diese Aufgabe erledigt der ”MC-Relocator”. Doch nun zu den einzelnen Befehlen.

|RELOCATE, @altname$ , @neuname$ , altadr , neuadr , laenge

Der Relokator lädt zunächst das Binär-File altna-me$ an die Adresse altadr. Dabei ist zu beachten, daß das Binär-File den Relokator nicht überlagern darf. Anschließend wird die Relökalisierung durchgeführt. Nach deren Ende steht das Binärprogramm immer noch an der alten Adresse. Alle CALLs, LDs usw. sind umgebogen. Anschließend wird das Binär-File unter dem Namen DUMMY.DUM auf der Diskette abgelegt. Danach erfolgt das Laden dieses Dummy-
Files an die Adresse neuadr. Von dort wird es dann endgültig unter dem Namen neuname$ abgespeichert.

Der Schritt mit dem Dummy-File war notwendig, da ja neuadr zufällig in einem Bereich liegen könnte, der sich mit dem Relokator überschneidet. Sollte der Relokator also abstürzen, verfügen Sie immer noch über das File DUMMY.DUM, das, an die richtige Adresse geladen, ebenfalls lauffähig ist. Bei Abarbeitung dieses Befehls wird jeder Programmschritt auf dem Bildschirm angezeigt. Sollte ein Fehler auftreten, bei dem das Programm abbricht, kann der Anwender sofort erkennen, wo dieser zu finden ist.

|RELOC, altadr, neuadr, laenge Dieser

Befehl bewirkt die Relökalisierung des im Speicher stehenden Programms ab der Adresse altadr mit der Länge laenge. Es wird dabei nicht nach neuadr verschoben.

|MOVE, altadr, neuadr, laenge

Nachdem ein im Speicher stehendes Programm mit |RELOC relokalisiert wurde, läßt es sich mit |MOVE verschieben. |MOVE kopiert die Daten ab der Adresse altadr mit der Länge laenge an die neue Adresse neuadr.

|MELDUNG.AUS

Dieser Befehl bewirkt die Unterdrückung aller User-Infos und Fehlermeldungen. Das ist beispielsweise nützlich, wenn man den Relokator in eigene Programme einbauen will.

|MELDUNG.EIN

Damit schaltet man die Meldungen wieder ein.

|FEHLER , @var%

Wenn die Meldungen mit |MELDUNG.AUS unterdrückt wurden, erfolgt bei einem Fehler zwar ein Abbruch des Programms, der Benutzer erfährt aber nicht, was passiert ist. Mit diesem Befehl kann man sich die Fehlerursache mitteilen lassen. Folgende Werte für var% sind nach dem Aufruf möglich:

var% = 0 Es ist kein Fehler aufgetreten.

var% = 1 Diskettenfehler beim Laden von altname$

var% = 2 Diskettenfehler beim Speichern von DUMMY.DUM

var% = 3 Diskettenfehler beim Laden von DUMMY.DUM

var% = 4 Diskettenfehler beim Speichern von neuname$

var% = 5 Diskettenfehler während des |LOAD-Befehls

var% = 6 Diskettenfehler während des |SAVE-Befehls

var% = 255 Parameterfehler (falsche Anzahl von Parametern)

|LOAD, @name$, adr

Dieser Befehl lädt das Binär-File name$ an die Adresse adr. Wird keine Adresse angegeben, gelangt das File an die im Header stehende.

|SAVE, @name$, adr. len

Dieser Befehl speichert das Binär-File name$ ab Adresse adr mit der Länge len ab.

Bei den Kommandos |LOAD und |SAVE wird der Bildschirmspeicher als Buffer benutzt. Ihre Anwendung ist dann sinnvoll, wenn man z.B. ein Binär-File an eine Adresse laden will, wo der normale LOAD-Befehl versagt (z.B. hex 100). Ansonsten sind diese Befehle angebracht, wenn HIMEM so weit herabgesetzt ist, daß auf jedes LOAD oder SAVE ein "Memory Full” folgt.

|HELP

Damit erhält man eine kurze Beschreibung der neuen Befehle. (Aus Platzgründen befindet sich dieser Programmteil nur auf den "Fingerschonend”-Kasset-ten und Disketten.)

|ORIGIN, adresse bzw.

|ORIGlN (ohne Parameter ) Es ist möglich, ein MC-Programm zu relokalisieren, das bei Laden an die normale Adresse Teile des Relo-kators löschen würde. Nehmen wir einmal an, das MC-File TEST.BIN, Anfangsadresse &A000, Länge &500, soll nach &9000 verschoben werden. Dazu verwenden Sie folgendes Programm:

10 MEMORY&98FF: LOAD "RELO.BIN” ,&9900: CALL &9900    ' lnit
20 MEMORY &3FFF: LOAD "TEST.BIN",&4000                       ' Test.bin laden
30 |ORIGIN, &4000                                                           ' Anfangsadresse festlegen
40 |RELOC, &A000, &9000, &500                   ' relokalisieren wie gehabt
50 SAVE ”TEST2.BIN”, B , &4000, &500          ' und abspeichern, fertig
60 |RELOC.&A000, &9000, &500

Nach Ablauf dieses Programms können Sie TEST2.BIN an die Adresse &9000 laden; es sollte nun lauffähig sein. |ORIGIN ohne Parameter macht den |ORIGIN-Befehl rückgängig.

Diese Möglichkeit dürfte besonders wichtig sein, da die meisten Programme, die in Zeitschriften veröffentlicht werden, ab Adresse &A000 laufen. Bei ihnen wäre also eine Relokalisierung nicht möglich.

Den Sourcecode finden Sie übrigens auf den Finger-schonend-Datenträgern. vortex-Anwender sollten in den Basic-Lader den Befehl |DERROR, 0 einbauen. Dann wird bei einem Diskettenfehler nicht die ganze Bildschirmmaske zerstört.

Hans-Georg Eßer , Schneider Magazin

★ PUBLISHER: Schneider Magazin
★ YEAR: 1988
★ CONFIG: 64K + AMSDOS
★ LANGUAGE:
★ TAG: /RSX/
★ LICENCE: LISTING
★ AUTHOR: Hans-Georg Eßer

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
» MC-Relocator  v2  1    (Schneider  Magazin)    GERMANDATE: 2020-06-13
DL: 25 fois
TYPE: ZIP
SIZE: 11Ko
NOTE: 40 Cyls
.HFE: NON

Je participe au site:
» Newfile(s) upload/Envoye de fichier(s)
★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Applications » Relocator v1.0 (CPC Amstrad International)
» Applications » Code Relocator
» Applications » Turbo - Relocator (CPC Amstrad International)
» Applications » Relocate Code Laser Genius

QUE DIT LA LOI FRANÇAISE:

L'alinéa 8 de l'article L122-5 du Code de la propriété intellectuelle explique que « Lorsque l'œuvre a été divulguée, l'auteur ne peut interdire la reproduction d'une œuvre et sa représentation effectuées à des fins de conservation ou destinées à préserver les conditions de sa consultation à des fins de recherche ou détudes privées par des particuliers, dans les locaux de l'établissement et sur des terminaux dédiés par des bibliothèques accessibles au public, par des musées ou par des services d'archives, sous réserve que ceux-ci ne recherchent aucun avantage économique ou commercial ». Pas de problème donc pour nous!

CPCrulez[Content Management System] v8.7-desktop/cache
Page créée en 234 millisecondes et consultée 152 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.