Schneider / Amstrad CPC Forum

Amstrad / Schneider CPC => Programmierung => Topic started by: Devilmarkus on 29. October 2013, 19:32:23

Title: Dinamic-Tapeloader gehackt
Post by: Devilmarkus on 29. October 2013, 19:32:23
Hallo CPC-Freunde,

ich habe mir heute mal die Arbeit gemacht, und den Dinamic-Tapeloader gehackt.

Herausgekommen ist eine hilfreiche RSX-Erweiterung.

Sie stellt 2 neue RSX-Befehle zur Verfügung:
|SAVE,<sync>,<start>,<length> -> Speichert eine Binärdatei auf Kassette im Dinamic Format ab
|LOAD,<sync>,<start>,<length> -> Lädt eine solche Datei wieder von Kassette.

Vorteil:
- Sehr schnelles Format
- Schön bunte Balken am Border...

Nachteil:
- Man sollte sich mit dem CPC auskennen, wenn man ihn verwendet. (Wie lade ich eine Binärdatei? Wie komme ich an Startadresse und Länge der Datei?)

2 Dateien:
dinamic.dsk -> Die komplette Routine
cauldron_dinamic.cdt -> Ein Beispieltape welches ich erstellt hab.

Wie geht man nun vor?

1) Man lädt die Datei DINAMIC.BIN von der Disk. LOAD"DINAMIC.BIN" reicht!
2) Man schreibt in BASIC einen kleinen Loader: (Beispiel für Cauldron)
10 MODE 1:LOAD"!":CALL &A000
20 INK 0,0:BORDER 0:INK 1,9:INK 2,24:INK 3,6:CLS:CALL &BD19
30 |LOAD,1,&C000,&4000
40 |LOAD,1,&1800,&8656
50 INK 1,0:INK 2,0:INK 3,0:CLS:CALL &BD19
60 |LOAD,1,&C800,&3100
70 CALL &C800

3) Man speichert nun erst den BASIC-Loader auf Kassette: |TAPE:SPEED WRITE 1:SAVE"CAULDRON",p
4) Nun speichert man den Binärteil (DINAMIC.BIN) auch: SAVE"LOADER",B,&A000,&340
5) Nun muss man den Binärteil aufführen (Da der ja schon geladen ist, reicht ein CALL &A000)
6) Nun lädt man die einzelnen Dateien, welche noch auf Kassette sollen:
|DISC:LOAD"CAULDRO0.bin",&C000:|SAVE,1,&C000,&4000
LOAD"CAULDRO1.BIN",&1800:|SAVE,1,&1800,&8656
CLS:LOAD"CAULDRO2.BIN",&C800:|SAVE,1,&C800,&3100

Fertig!

(Diese Dateinamen sind nur ein Beispiel! Die variieren natürlich abhängig davon, was Ihr speichern wollt)