★ APPLICATIONS ★ DIVERS ★ Daten in den Cassetten-Header laden|CPC Magazin) ★ |
Head-poke (CPC Magazin) | Applications Divers |
Vorliegende kleine MC-Routine bietet die Antwort auf eine Frage in Heft 12/86. Dort erkundigte sich ein Leser nach der Möglichkeit, Daten oder ein kurzes MC-Programm in den Cassetten-Header zu laden. Der freie Bereich geht meines Erachtens sogar von &b868-&b88b. Somit stehen dem versierten Programmierer hier 36 Byte zur Verfügung. Unglücklicherweise wird der Headerbuffer direkt vor dem eigentlichen Abspeichern komplett gelöscht (im ROM ab &23c5). Ein vorheriges Ein-poken in diesen Bereich ist damit sinnlos geworden. Um dies zu umgehen, ohne gleich eine neue SAVE-Rou-tine zu schreiben, braucht man unbedingt einen Sprung ins RAM, um dann hier ein kleines Ladeprogramm nutzen zu können, das die Daten nach dem Löschen in den Header schreibt. Leider sind diese Sprünge rar und auch nicht immer gut geeignet. Meine Wahl fiel auf die Indirection TXT Write Char an der Stelle &bdd3. Das Ganze läuft nun folgendermaßen ab: Zuerst lädt man die kleine Hilfsroutine nach &b0c7 und die Daten für den Header nach &b0db-&b0fe. Anschließend wird die Indirection mit Poke &bdd4, &c7: poke &bdd5, &b0 (unbedingt in einer Zeile eingeben) auf die Hilfsroutine umgebogen. Nun speichert man irgendein Programm ab (nicht save ”!” benutzen, die Textausgabe darf ja nicht unterdrückt werden). Danach stehen die gewünschten Daten im Header. Beim späteren Laden (funktioniert sogar bei Cat) gibt es dann keine Schwierigkeiten, da hier der Header unversehrt bleibt. Zu beachten ist nur, daß jetzt die Daten bzw. der MC-Code in den Eingabepuffer geladen werden. Man findet sie jetzt also im Bereich von &b8a8-&b8cb, genau um &40 höher, wieder. Dies funktioniert so nur auf dem 464. Eine Anpasung an 664/6128 erfordert die Änderung der Buffer- und der Rücksprungadresse; hier dürfte der Cassettenbetrieb aber kaum gefragt sein.
|