APPLICATIONSPROGRAMMATION ★ Speicher frei ★

Speicher frei (CPC Amstrad International)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 ★ 

Man kennt das ja, Sie arbeiten gerade mit einem Programm, das die deutschen Umlaute benutzen soll. Aber, wie bekannt, müssen diese erst durch die SYMBOL-AFTER-Befehle definiert werden. Die Folge: Einschränkungen im freien Speicher. Das heißt, Sie haben weniger RAM zum Bearbeiten frei.

Genau hier greift das Programm ein. Es stellt Ihnen genauso viel Speicherplatz zur Verfügung wie beim Einschalten des CPCs.

Zur Zeit schreibe ich gerade ein Programm, das mit einem eigenen Zeichensatz arbeitet. Dieser Umstand hat mich veranlaßt, mich etwas näher mit der Verwaltung der USER-Matrizen zu beschäftigen. Bei den meisten Programmen werden die deutschen Umlaute benutzt. Und das Selbstdefinieren dieser Zeichen in BASIC mittels des SYMBOL-AFTER-bzw. SYMBOL-Befehls ist auch nicht schwer. Doch wenn man sich dann mit Hilfe von SYMBOL AFTER 91 Platz im Speicher reserviert, werden alle Zeichen ab Symbol 91 aus dem ROM in den Speicher kopiert. Das sind dann immerhin 165 Zeichen mit je 8 Byte -> 1320 Bytes. Aber meistens braucht man die Zeichen oberhalb Symbol 126 (ß) nicht, das heißt, man hat die restlichen 129 Zeichen (SYMBOL 127 bis SYMBOL 255) zuviel im Speicher. Ich habe nun eine Möglichkeit gefunden, wie man trotz deutscher Umlaute einen Speicherplatz von 42747 Bytes (mit Floppy) unter BASIC zur Verfügung hat. Der CPC ist bei der Zeichenverwaltung ziemlich aktiv. Er 'schaut' vor jeder Zeichenausgabe im RAM des 'Text Screens' nach, ob die Matrix eines Zeichens aus dem ROM oder aus dem RAM gelesen werden soll. Dabei sind folgende Adressen wichtig (die Adressen für 664/6128 befinden sich in den Klammern dahinter). Zum ersten wird an der Adresse &B295 (&B735) ein Flag zwischengespeichert.

Dieses Flag signalisiert, ob Zeichen selbstdefiniert wurden (also im RAM zwischengespeichert sind). Ist das der Fall, so wird das Flag mit &FF hex gesetzt, ansonsten steht dort eine 0. Ist das Flag gesetzt, so schaut der CPC an die Adresse &B294 (&B734). Da steht dann die Nummer des ersten Zeichens, welches sich im RAM befindet. Zum Beispiel steht bei einen SYMBOL AFTER 91 unter dieser Adresse die Zahl 91. Unter den Adressen &B296/&B297 (&B736/&B737) wird die Anfangsadresse der USER- Matrizen im RAM in Form von Low/Highbyte abgelegt. Die Adresse kommt mit Hilfe folgender BASIC-Zeile zum Vorschein:

PRINT PEEK( &B296)+256*PEEK(&B297)
(664/6128 Adressen ändern!)

Nach dem Einschalten des CPC erhält man mit Floppy den Wert 42620, da das BASIC automatisch nach dem Initialisieren ein SYMBOL AFTER 240 durchführt. Unter BASIC ist der HIMEM-Wert gleich der Anfangsadresse 1, sofern die Speichergrenze nicht durch den Befehl MEMORY verändert wurde. Eine Ausnahme bildet ein SYMBOL AFTER 256, hier ist HIMEM gleich der Anfangsadresse. Diese beiden Adressen &B296/&B297 (&B736/&B737) ermöglichen es nun, die Zeichen-Matrizen überall im RAM abzulegen. Man muß nur die neue Adresse mit dem Anfang der USER-Matrizen dort niederschreiben. Diese Möglichkeit macht sich mein Programm zunutze. Es definiert die Umlaute, speichert den Bereich von SYMBOL 91 bis 139 binär ab, lädt dann die USER-Matrizen ab Adresse &AF00 in den Speicher, stellt mit Hilfe von SYMBOL AFTER 256 den unteren RAM-Bereich dem BASIC wieder zur Verfügung und ändert anschließend die oben beschriebenen Adressen. Achtung: Jedes SYMBOL AFTER ändert die Werte in diesen Adressen! Der Vorteil: Man spart 1320 Bytes unter Basic und verfügt trotzdem über deutsche Umlaute (wichtig bei einer Dateiverwaltung!) Einschränkung: Man kann auf diese Weise maximal nur 49 hintereinanderliegende Zeichen umdefinieren (SYMBOL 91 bis SYMBOL 139). Der SYMBOL-Befehl ist weiterhin nutzbar, darf allerdings die maximale Anzahl von 49 USER-Matrizen nicht überschreiten, da diese wichtige Parameter des BASIC- Interpreters überschreiben würde und die Folge ein Systemabsturz wäre. Dieser Softwareeinsatz ist nur möglich, weil dem Betriebssystem (das Gehirn des CPC) nur interessiert, ab welchem Zeichen und wo die Zeichen im RAM stehen. Es benutzt sogenannte Zeiger, die durch bestimmte Berechnungen dann immer auf die gewünschte Matrix zeigen. Möchte man den internen Zeichensatz, insbesondere die Grafikzeichen (SYMBOL 140 bis SYMBOL 255) des CPC benutzen, so weist man durch POKE &B295,0 (&B735) einfach das Betriebssystem an, diese direkt aus dem ROM zu lesen. So läßt sich ebenfalls zwischen deutscher und internationaler Tastaturbelegung hin- und herschalten. Bei Zeichen größer 139 erscheinen ohne Umpoken nur wilde Zeichen auf dem Bildschirm, da diese sich ja nicht im RAM befinden (das weiß der CPC ja nicht!). Natürlich ist die Verwendung des Programms für deutsche Umlaute nur ein Vorschlag. Man kann auch andere Zeichen in den Bereich ab &AF00 ablegen, sofern man dann den 'Text Screen' im RAM mit den richtigen Werten versorgt. Beim Eintippen des Programms kann man die REM-Anweisungen weglassen. Des weiteren läßt sich diese Routine in jedes schon bestehende Programm einfügen, wenn die selbstdefinierten Zeichen sich neben dem Programm auf der Kassette bzw. Diskette in Binärform befindet (man braucht dann nur die Programmzeilen ab der SYMBOL AFTER 256-Anweisung).

Jörg Töller/cd , CPCAI

★ PUBLISHER: CPC Amstrad International
★ YEAR: 1988
★ CONFIG: 64K + AMSDOS
★ LANGUAGE:
★ LiCENCE: LISTING
★ COLLECTION: CPC AMSTRAD INTERNATIONAL 1988
★ AUTHOR: Jörg Töller (JR-Soft)
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
» Speicher  Frei    (CPC  Amstrad  International)    GERMANDATE: 2021-08-08
DL: 117
TYPE: ZIP
SiZE: 4Ko
NOTE: 40 Cyls
.HFE: Χ

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

Lien(s):
» Applications » Emulador 664/6128 para Amstrad CPC 464 (Amstrad User)
» Applications » SDcard HXC Floppy Emulator Manager
» Applications » 6128 Emulation RSXxs
» Applications » 6128 Command Emulator v1 (Amstrad Action)
» Applications » B-Select Disk Emulation System
» Applications » 664 - 6128 - Emulator für den CPC 464 (CPC Amstrad International)
Je participe au site:
» Vous avez des infos personnel, des fichiers que nous ne possédons pas concernent ce programme ?
» 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 284 millisecondes et consultée 582 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.