APPLICATIONSDISQUE ★ CPC 464/664/6128 - HEADER READER (FILE EXAMINER ) ★

CPC 464/664/6128 - File-Examiner (CPC Magazin)CPC 464 - File-Examiner (CPC Magazin)
★ 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 ★ 

Wer wollte nicht schon immer mal seine Programme von Cassette auf Diskette kopieren? Mit unserer Kopier-Anleitung in diesem und im nächsten Heft ist das jetzt kein Problem mehr

Die Situation ist bekannt: Man hat sich ein neues Spiel gekauft, spielt es einige Male pro Tag und nach einem Monat kommen die ersten Lesefehler. Zum anderen ist man Besitzer eines Diskettenlaufwerks, muß aber trotzdem von Band laden, da es das gekaufte Spiel entweder nicht auf Diskette gibt, man erst kürzlich stolzer Besitzer eines Laufwerks geworden ist oder die Diskettenversion im Verhältnis zur Cassettenversion bedeutend mehr kostet. Dabei übersteigt der Mehrpreis so gut wie immer den Preis einer Diskette, den ein Programm-Hersteller bei Massenabnahme zahlen müßte (ca. 7 bis 8 DM).

Der geplagte User sucht also nach einem Weg, wie er das Programm auf Diskette transferieren könnte. Er hätte dann eine schnell zu ladende Sicherheitskopie, die außerdem noch beliebig weiterkopiert werden könnte. Leider schaffen Cassetten-Disketten-Kopier-programme (z.B. Transmat) nicht annähernd alle Programme. Somit ist es notwendig, daß wir selbst Hand anlegen. Wir möchten aber ausdrücklich darauf hinweisen, daß man Programme nur zum eigenen Gebrauch kopieren darf. Kopien zu verschenken, zu tauschen oder gar zu verkaufen, ist nach dem neuen Urheberrecht illegal.

Der Aufbau unseres Kurses

Da sehr viele Leser vor der erwähnten Situation stehen, wurden wir immer wieder gebeten, Anleitungen zum Knacken und Überspielen von Programmen auf Diskette zu geben. Wir wollen dies in drei Teilen tun: Im vorliegenden ersten Teil wird das Überspielen von ungeschützten Programmen auf Diskette erläutert und im zweiten Teil das Ent-schützen von Programmen, die nicht im normalen Format abgespeichert sind (z.B. headerless oder Ähnliches). Die entschützten Versionen können dann ebenfalls auf Diskette übertragen werden. Der letzte Teil hat schließlich nur bedingt etwas mit dem Überspielen von Programmen auf Diskette zu tun. Dort geben wir Anleitungen, wie Unsterblichkeitspokes zu finden sind. Dabei ist allerdings Voraussetzung, daß die Programme bereits entschützt sind.

Selbstverständlich können wir hier nur ein allgemeines Verfahren vorstellen, wie diese Programme zu überspielen sind. Dabei werden wir auch auf alle uns bekannten Spezialfälle eingehen, aber sicher wird es auch Programme geben, bei denen der Leser improvisieren und selbst eine Lösung erarbeiten muß. Der Kurs richtet sich natürlich auch an Besitzer der vortex-Floppy, aber auch an "Nur-Cassettenlaufwerk-Besitzer". Denn immerhin können sich diese mit Hilfe des Kurses Backup-Kopien auf eine andere Cassette ziehen.

Da auch die im Protected-Modus unter SAVE "Name”,P abgespeicherten Programme eingesehen und kopiert werden sollen, benötigen wir einen Deprotector. Ferner zum Erstellen von Verschiebeprogrammen einen Assembler. Es ist allerdings auch möglich, die kurzen Programme mit Hilfe des Z80-Maschinensprachekurses selbst in MC zu übersetzen. Leser, die keinen Assembler besitzen, können den ASSO aus dem CPC-Magazin 6/86, Seite 73ff, eintippen. Ferner brauchen wir unbedingt einen File-Examiner, der wichtige Daten über abgespeicherte Programme ausgibt.

Für den nächsten Teil ist zusätzlich ein Disassembler notwendig, da zum Knacken in Ladeprogramme Einblick genommen werden muß.

Beginnen wir mit dem Deprotector: Wir haben schon mehrmals kurze Programme zum Entschützen der unter SAVE "NAME",P abgespeicherten Programme abgedruckt, tun dies aber wegen der Kürze der Programme hier noch einmal:

CPC 464

1 POKE &AC02,&90
2 POKE &AC03,&C0
3 POKE&AC01,&C3

CPC 664/6128

1 FOR I=&BB9F TO &BB4A:READ A: POKE I,A:NEXT
2 DATA &3E, &00, &32, &2C, &AE, &C9

Tippen Sie das für Ihren Computer passende Programm ein und speichern Sie es auf Diskette ab. Um ein geschütztes Basic-Programm zu laden, starten Sie das kleine Programm und laden einfach mit LOAD "Name" das Basic-Programm. Normalerweise müßte dies mit "RUN” geschehen, so aber können Sie einfach den LOAD-Befehl nehmen, sich das Programm ansehen und normal auf Diskette abspeichern.

Unter dem Titel "File-Examiner" hatten wir im CPC-Magazin 1/86 schon einmal èin Programm abgedruckt. Es wurde dort irrtümlich für alle Schneider-Computèr als lauffähig angegeben, läuft aber nur auf dem 464. Da wir aber eine Version benötigen, die auf allen Schneider-Computern (außer dem Joyce) läuft, drucken wir an dieser Stelle eine leicht modifizierte Version des Programms ab. Tippen Sie es bitte ab und speichern es mit SAVE "EXAMINER” auf Diskette. 464-Besitzer ändern Zeile 180 um in 180 cpc=0

Wer kein Diskettenlaufwerk besitzt, läßt Zeüe 170 weg. Benutzer des vortex-Laufwerks ändern Zeüe 170 um in 170 |CAS

Die Benutzung des Examiners

Starten Sie das Programm und legen Sie die zu untersuchende Cassette ein. Dabei sollte diese so gespult sein, daß es noch einige Sekunden bis zum zu untersuchenden Header sind. Starten Sie dann das Band. Sobald der Vorspann eingelesen ist, drücken Sie ESC und können alle wichtigen Daten ablesen. Die Bezeichnung des Files gibt genaue Auskunft über den Filetyp: "Programm" bedeutet Basic-Programm, "Bytes” und "Screen" bedeuten Maschinenprogramme und "ASCII" bedeutet natürlich ASCII-Dateien.

Im folgenden werden die Anleitungen immer für Diskettenlaufwerke angegeben. Leser, die kein Laufwerk besitzen, müssen eben die Programme wieder auf Band ablegen. Bei yortex-Diskettenlauf-werken ist statt TÂPE immer CAS notwendig.

Basic-Programme überspielen

Im allgemeinen beginnt ein Programm mit einem Basic-Teil. Sie können dies mit dem File-Examiner einfach feststellen. Laden und starten Sie ihn, legen Sie die zu überspielende Cassette ein, starten das Band und brechen nach dem ersten Header mit ESC ab. Danach gibt das Programm die Daten aus.

Handelt es sich um ein geschütztes Programm, laden Sie den Deprotector und starten ihn. Anschließend laden Sie das Basic-Programm mit LOAD und speichern es auf Diskette ab. Ist das Programm ungeschützt, so müssen Sie es nur mit LOAD "" laden und dann wieder abspeichem. Zur Namensgebung kommen wir später.

Ein Problem haben wir bis jetzt außer acht gelassen: Basic-Programme können sehr lang sein. Da auf Diskette weniger Speicherplatz zur Verfügung steht, kann dies zu unliebsamen Effekten führen. Rechnen wir das Ganze einmal durch: Der freie Speicher beginnt bei Adresse 370 und hört ohne angeschlossenes Diskettenlaufwerk bei 43903 auf, woraus sich ein freier Speicher von 43534 Bytes ergibt. Da allerdings noch ein 4 KByte langer Cassettenbuffer eingerichtet werden muß, reduziert sich der beschreibbare Speicher auf 43534-4096=39438 Bytes. Dagegen endet mit angeschlossenem Laufwerk der beschreibbare Speicher schon bei 42619, so daß als freier Speicherplatz 42620-370-4096=38154 Bytes zur Verfügung stehen, das sind 1284 Bytes weniger.

Wenn also ein Programm kürzer als 37500 Bytes ist, können Sie es normal überspielen. Dann ist im Speicher auch bei angeschlossenem Laufwerk genug Platz. Die 654 Bytes Differenz zu 38154 sind für Eingabe, Variablen u.ä. reserviert. Zeigt sich nachher beim Ablauf al-lerdings "MEMORY FÜLL”, muß das Programm doch auf andere Art und Weise überspielt werden. Dazu wird der Cassettenpuffer in den Bildschirmspeicher gelegt, womit 4 KByte Speicherplatz gewonnen werden. Damit lassen sich alle Basic-Programme auf Disk transferieren.

Der Rechner wird zu diesem Zweck zunächst zurückgesetzt. Anschließend eröffnet man mit OPENOUT "d" eine Datei. Der Cassettenpuffer ist jetzt eingerichtet und kann auf den Bildschirmspeicher gebogen werden, indem man die Systemvariablen, die den Anfang und das Ende des Buffers angeben, auf die entsprechenden Werte setzt:

CPC 464

POKE &B092,0
POKE &B093,&C0
POKE &B094,0
POKE &BO95,&D0

CPC 664/6128

POKE &B076,0 ; Lowbyte Bufferstart

POKE &B077,&C0; Highbyte
POKE &B078,0 ; Lowbyte Bufferende
POKE &B079,&D0; Highbyte

Damit ist der Buffer auf den Bildschirmspeicher ab 49152 gebogen. Nun muß das Programm von Cassette geladen werden. Zu beachten ist aber, daß dem Namen des Programms ein Ausrufezeichen voransteht, damit die Cassettenmeldungen nicht den im Bildschirm-speicher befindlichen Buffer zerstören.

Sobald sich das Programm im Speicher befindet, schalten Sie auf Disk um und speichern es ganz normal ab. Der Buffer befindet sich ja noch immer im Bildschirmspeicher. Dem Namen brauchen Sie diesmal kein Ausrufezeichen voranzugeben. Schön ist, daß beim Einladen von Diskette dieser Buffer ohnehin nicht benutzt wird, so daß Sie sich ein Vorprogramm schenken und das Programm einfach mit LOAD oder RUN laden können. Damit wäre das Überspielen von Basic-Programm abgeschlossen.

Maschinenprogramme überspielen

Ein Maschinenprogramm wird abgespeichert mit:

SAVE "NAME", b, Startadresse, Länge, < Aufruf >

Das "b” steht dabei für Binärdatei und muß unbedingt angegeben werden, um dem Rechner dies zu signalisieren. Startadresse, Länge und Aufruf kann man durch den File-Examiner erfahren. Der Aufruf (beim File-Examiner "Autostart" ) ist dabei nur bedingt anzugeben. Manchmal ist gar keiner vorgegeben und manchmal darf man den Autostart nicht angeben, da das Füe verschoben wurde.

Das Überspielen von MC-Programmen ist schon ein wenig schwieriger. Zuerst müssen Sie mit dem File-Examiner alle wichtigen Daten wie Startadresse, Länge des ganzen Programms etc. feststellen. Achten Sie dabei darauf, daß Sie die Daten vom ersten Block abrufen. Vergessen Sie vor dem Laden von Cassette und Speichern auf Diskette nie die entsprechenden TAPE- (bei vortex CAS) und DISC-Kommandos.

Vor dem Laden dèr Maschinenprogramme muß immer MEMORY gesetzt werden, da sonst die Fehlermeldung "MEMORY FULL" den Ladevorgang unterbricht. Das "Memory-Setzen” ist an sich ja kein Problem, aber auch hier stellt sich wieder das Problem Cassettenbuffer. Die Vorgehensweise hängt deshalb ganz von der Lage des Maschinenprogramms ab. Sollte dieses über Adresse 500 beginnen und vor Adresse 38520 enden, so hat der Cassettenbuffer hinter dem Programm genügend Platz. Sie machen dann folgendes:

  1. Rechner zurücksetzen
  2. OPENOUT "d",
  3. MEMORY 499,
  4. Maschinenprogramm von Cassette laden,
  5. Maschinenprogramm auf Diskette ablegen.

Beginnt das Maschinenprogramm erst ab Adresse 4600 und endet vor Adresse 42620, so bietet sich folgendes Verfahren an, bei dem der Cassettenbuffer vor das Programm gelegt wird:

  1. Rechner zurücksetzen,
  2. MEMORY 4599,
  3. Maschinenprogramm von Cassette laden,
  4. Maschinenprogramm auf Diskette ablegen.

Falls der Cassettenbuffer jedoch nicht vor oder hinter das Programm paßt, also unter Adresse 4600 beginnt und bis über -Adresse 38520 hinausreicht, so können wir den Cassettenbuffer wieder in den Bildschirmspeicher legen. Voraussetzung: Das Programm beginnt nicht unter Adresse 400 und überschreitet nicht Adresse 42619. Sie müssen dann folgende Schritte durchführen:

  1. Rechner zurücksetzen,
  2. OPENOUT "d",
  3. Cassettenbuffer in Bildschirmspeicher verlegen (s.o.),
  4. Maschinenprogramm von Cassette laden,
  5. Maschinenprogramm auf Diskette ablegen.

Doch was tun, wenn ein Programm den vom Diskettenlaufwerk belegten Bereich von 42620 bis 43903 oder Adressen unter 400 benutzt? Dann muß das Programm verschoben werden. Dazu sollte man sich zuerst eine Ladeadresse errechnen, bei der keiner der beiden Bereiche vom Programm überschrieben wird. Dazu ein Beispiel: Angenommen, ein MC-Programm beginnt bei Adresse 5000 und endet bei Adresse 43000. Dann wird das Programm an Adresse 4000 geladen, womit es natürlich schon bei Adresse 42000 endet. Das hat den Vorteü, daß es nicht mehr den Diskettenspeicher in Anspruch nimmt. Wegen der ungünstigen Lage müssen Sie vor dem Laden den Cassettenbuffer wie üblich in den BUdschirmspeicher legen und das Programm mit dem Befehl LOAD "!NAME ",4000 laden. Durch die angehängte Zahl wird das Programm nicht an seiner ursprünglichen Stelle, sondern ab Adresse 4000 abgespeichert. Allerdings muß es vor dem Aufruf noch auf seinen alten Platz zurückgeschoben werden, da es ja nur ab Adresse 5000 lauffähig ist.

Dieses Verschiebeprogramm sollten Sie mit einem Assembler erstellen. Suchen Sie dazu im Basic-Programm den CALL, mit dem das Maschinenprogramm aufgerufen wird. Einen JP zu die ser Adresse hängen Sie dem Verschiebeprogramm an. So wird direkt nach dem Verschieben das Programm aktiviert. Würde man zuerst ins Basic zurückspringen, könnte dies, da wichtige RAM-Bereiche überschrieben wurden, zu einem Absturz führen.

Wenn noch weiter Programmteile nachgeladen werden sollen, darf natürlich noch nicht verschoben werden. Erst müssen sich alle Teile im Speicher befinden. Zu beachten ist dabei, daß sich die verschiedenen Programmteile nicht überschneiden, da sich das andere Programm ja schon an einer anderen Stelle befindet. Zur Not müssen die nachfolgenden Programme ebenfalls verschoben werden.

Falls der Speicherplatz dafür zu eng wird, so kann wiederum der Bildschirm; Speicher als Zwischenspeicher dienen. Er darf sogar ab Adresse 49152 beschrieben werden. Setzen Sie allerdings vorher den Rechner zurück, damit der Buffer aus diesem Bereich verschwindet. Sie müssen ein in den Bildschirmspeicher zu übertragendes Programm auf einmal laden und sofort wieder abspeichern, damit eine Textausgabe keinen Teil des Programms zerstört.

Sind schließlich alle Programmteile auf Diskette, kann das Verschiebeprogramm geschrieben werden. Es muß alle Elemente auf die richtigen Adressen kopieren, ohne daß es sich selbst oder andere Programmteile dabei überschreibt. Sobald sich alle Teile an der richtigen Stelle befinden, kann per JP das Maschinenprogramm aufgerufen werden. Diese CALL-Adresse können Sie sich aus dem Basic-Programm holen.

Je nach Kopierrichtung muß vorwärts oder rückwärts kopiert werden. Näheres dazu finden Sie im Z80-Maschinen-sprachekurs in dieser Ausgabe, den Sie bis zur Darstellung der OUT-Befehle sorgfältig durchlesen sollten. Ihr Kopier-programm muß natürlich nicht annähernd so komfortabel sein wie unseres. Eine Parametereingabe ist nicht erforderlich, da Sie die Adressen ja kennen. So können diese fest eingebaut werden. Auch die Kopierrichtung ist schon von vornherein klar. Den Verschieber sollten Sie dann auf Diskette ablegen.

Wurde ein Programm verschoben, ist mit ziemlicher Sicherheit ein zusätzliches Abspeichern oder Nachladen nicht möglich. Beispiel: Sie haben ein Adventure auf Disk überspielt, das den Diskettenspeicher belegt. Dieses haben Sie verschoben und laden es auch verschoben. Anschließend wird es mit Hilfe eines Maschinenprogramms wieder zurückgeschoben und gestartet. So belegt es wieder den Diskettenspeicher. Soll nun beispielsweise der Spielstand abgespeichert werden, so führt dies vermutlich zu einem Absturz, da der Diskettenspeicher vom Programm belegt ist.

Modifikationen am Basic-Programm

Nun befinden sich tatsächlich alle notwendigen Fües auf Diskette. Am Basic-Programm sind aber meistens noch umfangreiche Änderungen notwendig: Das beginnt natürlich mit den Namen. Während auf Cassette bis zu 15 Buchstaben pro Namen für ein File erlaubt sind, wären dies auf Diskette nur acht plus Extension. Diese Extension wird zudem noch völlig anders gehandhabt als auf Cassette. Ferner sind auf Cassette gleiche Namen und unbenannte Files erlaubt. Die nicht auf Disk zulässigen Namen müßten Sie ja bereits geändert haben. Achten Sie auch darauf, daß Sie keinen Namen doppelt verwenden. Entsprechend müssen Sie die Namen auch im Basic-Programm ändern.

Falls Sie Programme verschoben haben, sind ebenfalls einige Änderungen notwendig: So müssen MEMORY-Kommandos geändert werden, aber auch die manchmal angegebenen Startadressen bei den Ladekommandos. Das Verschiebeprogramm muß geladen und aufgerufen werden und nicht das eigentliche MC-Programm. Verschobene Fües dürfen natürlich nicht mit RUN geladen werden, sonst würden Sie ja sofort gestartet, sondern mit LOAD.

Wird ein File in den Büdschirmspeicher übergeben, so darf bis zum Ende des Kopiervorgangs nichts mehr geschrieben oder gezeichnet werden. Entsprechende Vorkehrungen sind auch im Basic-Programm zu treffen.

Ist das Basic-Programm optimal angepaßt, sollten Sie sich nicht schämen, noch eine Notiz einzubringen, wer das Programm denn nun auf Diskette herübergebracht. hat, sofern der Platz reicht. Anschließend müssen Sie das Basic-Programm nur noch abspeichern.
Manchmal gibt es natürlich auch mehrere Basic-Teile, die dann natürlich alle angepaßt werden müssen.

Während Cassetten-Disketten-Kopierprogramme wie z.B. Transmat das Kopieren der einzelnen Fües noch ganz gut hinbekommen (zumindest bei Programmen im normalen Format), bewerkstelligen sie die Anpassung des Basic-Programms nicht. Diese ist auch besser durchzuführen, wenn man die restlichen Programmteile ebenfalls auf Diskette übertragen hat und so alle Daten der zu übertragenden Programme kennt.

ASCII-Files kopieren

Eine ASCII-Datei auf Diskette zu kopieren, ist eigentlich überhaupt kein Problem. Sie benutzen dazu folgendes Programm:

10 |TAPE.IN
20 |DISC.OUT
30 OPENIN "Cassettenname"
40 OPENOUT "Diskettenname"
50 WHILE NOT EOF
60 INPUT #9,A$
70 PRINT #9,A$
80 WEND
90 CLOSEIN
100 CLOSEOUT

Mit dieser Anleitung müßten Sie eigentlich imstande sein, alle im normalen Format abgespeicherten Programme auf Diskette zu kopieren. Vielleicht tim Sie sich am Anfang etwas schwer, aber Übung macht den Meister. Und Sie werden sehen: Nachher geht Ihnen das Kopieren ganz leicht von der Hand, eine reine Routineangelegenheit.

Im nächsten Heft

Im nächsten Heft wollen wir uns an ein paar etwas fieser abgespeicherte Programme wagen. Es wäre schön, wenn Sie auch da wieder dabei sein könnten.

Andreas Zallmann, CPC MAGAZIN

★ PUBLISHERS: CPC Magazin , CPC Magazin Codex
★ YEAR: 1985
★ CONFIG: 64K + AMSDOS
★ LANGUAGE:
★ LiCENCE: LISTING
★ COLLECTIONS: CPC MAGAZIN 1985 1986 , CPC MAGAZIN 1985 1986
★ AUTHOR: Andreas Zallmann
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listings:
» CPC  464-664-6128-Header  Reader    (CPC  Magazin)    LISTING    GERMANDATE: 2021-02-02
DL: 199
TYPE: PDF
SiZE: 204Ko
NOTE: 2 pages/PDFlib v1.6

» CPC  464-664-6128-Header  Reader    (CPC  Magazin)    LISTING    GERMANDATE: 2020-07-15
DL: 184
TYPE: text
SiZE: 3Ko
NOTE:

» CPC  464-Header  Reader    (CPC  Magazin)    LISTING    GERMANDATE: 2021-02-02
DL: 263
TYPE: PDF
SiZE: 172Ko
NOTE: 2 pages/PDFlib v1.6

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

Lien(s):
» Applications » Procopy 128k v3
» Applications » Transfich (Cahiers de l'Amstrad)
» Applications » WACCI Homegrown Disc #02
» Applications » Copy
» Applications » Rsx - Disc Copier v1
» Applications » Directory Boss (CPC Amstrad International)
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/c
Page créée en 182 millisecondes et consultée 2467 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.