APPLICATIONSDIVERS ★ VON CP/M NACH BASIC UND ZURÜCK ★

Convert v2 (CPC Amstrad International)Applications Divers
★ 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 kennt jeder das Problem: Man hat eine Datei unter CP/M, die man mit dem eingebauten BASIC bearbeiten möchte (z.B. will man ein kleines Assemblerprogramm für BASIC schreiben und will den ASM.COM benutzen, weil man keinen Assembler extra kaufen möchte). Sofern die Datei keine reine Textdatei ist, wird der Versuch jedoch mit der Meldung »EOF met« abgebrochen. So geht's also nicht!

Woran mag das liegen ? Die Lösung ist ziemlich einfach: BASIC unterscheidet zwischen Programm- und ASCII-Dateien. Programmdateien (also die ».BAS« und ».BIN« Dateien) erhalten einen Programmkopf vor der eigentlichen Datei. In diesem Kopf steht der Filetyp (BASIC, Binär, geschütztes BASIC), die Länge der Datei, der Dateiname und bei Binärdateien auch die Lade- und Startadresse. ASCII-Dateien dagegen haben ebenso wenig einen Programmkopf wie die Dateien unter CP/M.

Nun könnte man ja meinen, da BASIC auch Dateien ohne Header (Programmkopf) verwalten kann, müßte man doch ganz einfach die CP/M Dateien wie ASCII-Dateien unter BASIC einladen können. Dies geht auch wie oben schon erwähnt bei reinen Textdateien. Diese können ohne Probleme mit OPENIN und OPENOUT behandelt werden. Allerdings können auf diesem Wege keine ».COM«, ».OVR« und andere Programmdateien von CP/M unter BASIC eingeladen werden.

Der Grund liegt einmal darin, daß BASIC am ASCII-Code & 1A das Dateiende (EOF) erkennt und dieser Code recht häufig in den Programmdateien vorkommt (sei es als Z80 Opcode oder als Teil einer Adresse), zum anderen auch andere Steuercodes vom BASIC erkannt und interpretiert werden (z.B. wird das Zeichen &0D (carriage retum) als Zeilenende interpretiert, aber nicht im String aufgenommen; wird nach der Da-
teibearbeitung der String zurückgeschrieben fehlt dieses Zeichen...). Soweit zum eigentlichen Problem, kommen wir zur Lösung...

Die Lösung ist ein Utility mit dem Namen CONVERT. Dieses komplett in Assembler geschriebene Utility ist in der Lage den ASCII-Dateien einen Programmheader mitzugeben und in Binärdateien diesen Header zu entfernen. Zur allgemeinen Freude ist dieses Utility äußerst einfach handzuhaben.

CONVERT läuft unter CP/M und ist ein »reines« CP/M Programm, d.h. es läuft unter CP/M 2.2, CP/M Plus und dem 62k RAM Card CP/M von Vortex, sowie auch auf allen anderen CP/M Rechnern.

Das Utility erwartet alle Parameter in der Eingabezeile durch SPACES getrennt (wie z.B. auch das AMSTRAD FILECOPY):

CONVERT < parameter1 > < parameter2 >

Wenn Sie den BASIC-Lader für das Utility schon abgetippt haben (Besitzer der DATABOX werden nun müde lächeln ...) können Sie ruhig nach dem Lesen der folgenden Beschreibung ein paar Beispiele ausprobieren.

Wenn wir das Utility ohne Parameter aufrufen, wird ein kleiner Hilfstext ausgegeben, der die Aufrufmöglichkeiten beschreibt:

A> CONVERT

(es erscheint die Programmeldung, gefolgt von dem Hilfstext...)
Die zweite Möglichkeit ist, daß wir nur einen Dateinamen angeben: wir erfahren dann den Dateityp der angegebenen Datei gefolgt von der Dateilänge in 128 Byte Records.

A> CONVERT < filename.ext >

Um nun oben genannte Probleme zu lösen müssen wir dem Utility zwei Dateinamen angeben; einmal den Namen der Datei, die wir konvertieren wollen, zum anderen den Dateinamen der neuen Datei.

A> CONVERT < filename1 > < filename2 >

CONVERT lädt sich nun die erste Datei in den Arbeitsspeicher (falls die Datei nicht existiert, erfolgt natürlich eine entsprechende Fehlermeldung...) und gibt den Dateityp und die Dateilänge aus. Wenn die geladene Datei eine Binärdatei ist, wird der Header entfernt, ansonsten wird nach der Lade- und der Startadresse gefragt und der entsprechende Header erzeugt (die Eingaben erfolgen HEXADEZIMAL). Anschließend wird die Datei auf die Diskette zurückgeschrieben. Sofern bereits eine Datei mit dem Namen der zweiten Datei existiert, erfolgt die Abfrage, ob die alte Datei überschrieben werden soll (wenn die alte Datei das Attribut Read Only besitzt erfolgt eine zweite Sicherheitsabfrage). Wenn in dem ersten Dateinamen Wildcards »*« oder »?« angegeben werden, wird die erste Datei geladen, die die Bedingung erfüllt. Beim zweiten Dateinamen sind Wildcards verboten.

Ein Beispiel:

A> CONVERT CONVERT.COM CONVERT.BIN Wenn man nun als Ladeadresse &2000 eingibt (Startadresse ist egal), kann man sich das Utility unter BASIC in jedem Monitor ab Adresse &2000 ansehen. Die Angabe der Startadresse ermöglicht es auch, daß man bei Programmen, die mit einem CP/M Assembler für BASIC geschrieben wurden, direkt ausführbare Dateien erhält.

(M. Siebke) , CPCAI

★ PUBLISHER: CPC Amstrad International
★ YEAR: 1987
★ CONFIG: 64K + CP/M
★ LANGUAGE:
★ LiCENCE: LISTING
★ COLLECTION: CPC AMSTRAD INTERNATIONAL 1987
★ AUTHOR: M.Siebke
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
» Convert  v2.2    (M.Siebke)    (CPC  Amstrad  International)    GERMANDATE: 2022-08-04
DL: 87
TYPE: ZIP
SiZE: 7Ko
NOTE: 40 Cyls
.HFE: Χ

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Applications » Conversions
» Applications » Claudia BMP Converter
» Applications » 664-464 Converter
» Applications » Temperature Converter (Amstrad Computer User)
» Applications » Dams Converter
» Applications » Conversion Ecran Images Degas St
Je participe au site:
» Vous avez des infos personnel ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop
Page créée en 260 millisecondes et consultée 486 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.