APPLICATIONSPROGRAMMATION ★ BANKGESCHÄFTE (CPC AMSTRAD INTERNATIONAL) ★

Bankgeschäfte (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 ★ 

Nutzung der zweiten 64 kByte beim CPC 6128

Wer hat schon vierundsechzigtausend übrig? Deshalb sollten Sie die 64-kByte-Speicher Ihres CPC auch nicht brachliegen lassen.

Der CPC 6128 hat gegenüber seinen Brüdern einen entschiedenen Vorteil, er hat einen Speicher von 128 kByte (wie schon im Namen ersichtlich). Der Prozessor des CPC, der Z80, hat aber nur 16 Adreßleitungen. Mit diesen läßt sich maximal eine 16-Bit-Zahl übertragen, was bedeutet, daß maximal 65536 Byte (216) adressiert werden können. Ein kByte hat 1024 Byte; somit sind dies also die bekannten 64 kByte. Um mehr Speicher verwalten zu können, muß also irgendein Trick angewendet werden.

Denkbar wäre es, den zu großen Speicher in passende kleinere Bereiche auf-zuteilen und diese dann dem Prozessor abwechselnd zugänglich zu machen. Genau diese Möglichkeit wird im CPC und vielen anderen Computern, wie beispielsweise auch den IBM-PCs, genutzt. Der Speicher des CPC 6128 ist in acht 16 kByte große Bereiche aufgeteilt. die man von null bis sieben durch-numerieren kann. Durch Verwendung bestimmter Befehle werden nun der jeweils benötigte Block oder auch mehrere Blöcke eingeblendet. Dazu muß man ein oder mehrere Speicherfenster festlegen, die hierfür benutzt werden. Das am häufigsten benutzte Fenster ist hierbei das im Adreßbereich von &4000 bis &7FFF. Wird nun der konventionelle Speicher in diesem Bereich inaktiv geschaltet, so kann hier ein anderer 16-kByte-Block eingeblendet werden.

Der Z80 besitzt zwei verschiedene Möglichkeiten, um mit seiner Umgebung in Verbindung zu treten. Die eine ist, er tauscht seine Daten mit dem Speicher aus. die andere, er tauscht diese aus mit sogenannten Ports. Als Port kann man im weiteren Sinne den Drucker oder die Tastatur bezeichnen. Für jede Operationsart hat der Prozessor nun einen Adreßumfang von &0 bis &FFFF, das sind 65536 Byte, zur Verfügung. Der Speicherbereich ist ja bekanntlich schon voll belegt, aber wer hat schon über 65tausend Drucker? Hier sind also noch freie Ressourcen. Und genau diese werden beim CPC6128 genutzt. Aus technischen Gründen stehen aber nur eine begrenzte Anzahl von IN/OUT-Adressen zur Verfügung, von denen eine einzige für die zweiten 64 kByte vorgesehen ist. Das mag etwas mager erscheinen, ist aber völlig ausreichend. Diese Adresse, sic lautet &7FXX (“XX“ bedeutet, daß dieser Teil der Adresse beliebig sein kann), wird nur dazu genutzt, einen Schaltbefehl an den richtigen Empfänger weiterzuleiten.

Der Trick mit den I/O-Adressen

Genau dieser Schaltbefehl ist es nun, mit welchem die Konfiguration des Speichers festgelegt wird. Er ist in einem Datenbyte, welches gleichzeitig mit der Portadresse übermittelt wird, verschlüsselt. Das Datenbyte kann acht verschiedene Werte (&C0 bis &C7) annehmen. Die dadurch erzielbaren Speicherkonfigurationen sind aus der Tabelle ersichtlich. Die Zeilen stellen je eine Speicherkonfiguration dar, die Spalten geben an, welcher Speicherblock sich auf welcher Adresse befindet.

Beispiel: Es soll der Speicherblock fünf in das Speicherfenster von &4000 bis &7FFF eingeblendet werden. In der Spalte &4000 bis &7FFF wird nach dem Block fünf gesucht. Die gefundene Zeile ist dem Steuerbyte &C5 zugeordnet. Das Byte &C5 muß also auf die Adresse &7FXX ausgegeben werden. Die wohl interessantesten Einstellungen sind die ab Schaltbefehl &C4. Hier werden in das Speicherfenster von &4000 bis &7FFF nacheinander mit größer werdendem Steuerbyte die Speicherblöcke vier bis sieben eingeblendet. Mit dem Schaltbefehl &C2 werden die beiden 64-kByte-Spcicherblöcke komplett ausgetauscht, wobei der Bildspeicher in seinem ursprünglichen Block verbleibt. Das bedeutet, daß nun der gesamte 64-kByte-Bereich für Programme zur Verfügung steht. Bei diesem Schaltbefehl sind aber einige Besonderheiten zu beachten.

Datenbyte&0000-&3FFF&4000-&7FFF&8000-BFFF&C000-&FFFF
&C00123
&C10127
&C24567
&C30327
&C40423
&C50523
&C60623
&C70723
Die Speicherkonfiguration bei den verschiedenen SteuerbytesDas Speicherfenster im Block 1

Ein im Speicher laufendes Programm, welches diesen Schaltvorgang auslöst, wird ja plötzlich weggeschaltet. Der Prozessor setzt aber stur sein Programm auf der folgenden Adresse fort. Also muß im entsprechenden anderen Speicherblock die Fortsetzung des Programms stehen. Ist dies nicht der Fall, stürzt der Rechner unweigerlich ab. Die Umschaltung des kompletten Speichers wird vor allem von CP/M plus genutzt. Hierbei laufen die Programme unter CP/M größtenteils im zweiten 64-kByte-Bereich ab. Hingegen liegen große Teile des Betriebssystems CP/M im konventionellen, also ersten Speicherbereich.

CP/M und Bankumschaltung

Beide Betriebssystemteile haben dabei einen gemeinsamen Speicherbereich, Common-Bereich genannt. Dieser liegt ab Adresse &C000 bis zum Speicherende. Dadurch wird es möglich, problemlos die anderen Bänke zu schalten und Daten auszutauschen. Wo liegt aber nun der Bildspeicher? Dieser wird in den Bereich von &4000 bis &7FFF geschaltet. Hier wird das Steuerbyte &C3 verwendet.

Wird also unter CP/M auf Betriebssystem-Ressourcen zurückgegriffen, wird ständig zwischen den Speicherblöcken hin und her geschaltet. Da das sehr schnell geht, merkt der Anwender kaum etwas von diesen Vorgängen.

Hat man in einem eigenen Programm die beiden Speicherbänke völlig vertauscht, stellt natürlich die Ein- und Ausgabe von Zeichen ein besonderes Problem dar. Hierfür müssen natürlich erst der Bildspeicherblock und die Betriebssystem-Vektoren in den ursprünglichen Zustand versetzt werden, so daß diese Bereiche real adressierbar sind.

Hat man ein sehr großes Programm, aber sehr wenige Bildschirmausgaben, so kann nun ein weiterer Steuerbefehl Abhilfe schaffen. Durch Ausgabe des Dalenbytes &C2 wird der Bildspeicher weggeschaltet und der Block sieben in den Bereich von &C000 bis &FFFF eingeblendet. Zur Erleichterung von Bildschirmausgaben in diesem Zustand kann nun mit dem Steuerbyte &C3 der Bildschirmspeicher in den Adreßraum von &4000 bis &7FFF eingeblendet werden.

I/O AdresseByteFunktion
0XGate Array - Farbadressenregister
4XGate Array - Farbwert Datenregister
8XGate Array - Mode-Auswahl
CXGate Array - RAM-Bank-Register
&BCXXXXCRTC Adressregister
&BDXXXXCRTC schreiben
&BFXXXXCRTC lesen
&EFXXXXCentronics
&F5XXXXPIO Port A
&F6XXXXPIO Port B
&F7XXXXPIO Port C
&F7XXXXPIO Steuerport
Die vom CPC belegten I/O-Adressen

Bildspeicher im Hintergrund

Schreibt man einmal selbst ein Programm. so steht man oftmals vor der Aufgabe, mehrere Bilder schnellstmöglich darstellen zu wollen. Am besten wäre es, sie alle im Speicher zu halten. Ein Beispiel, wie dies gelöst werden könnte, gibt Ihnen unser Listing. Bei der Anwendung eines solchen Programms sollte man natürlich darauf achten, daß sich dieses nicht im Adreßbereich von &4000 bis &7FFF befinden. Ansonsten stürzt der Rechner ab oder zeigt irgendwelche seltsamen Reaktionen.

Manch einem mag die Nutzung des Bankmanagers wohl mehr Zusagen. Aber ist Geschwindigkeit gefragt, hat die direkte Schaltung des erweiterten Speichers über I/O-Befehle entschiedene Vorteile. Der CPC hat natürlich nicht nur eine I/O-Adresse. Damit man einmal eine Übersicht über die anderen verwendeten Adressen bekommt, ist hier eine Tabelle abgedruckt. Ein “X“ bedeutet. daß diese Stelle beliebig sein kann. Bei der Bedienung des GatE-Array ist zu beachten, daß auch das gesendete Datenbyte eine Auswahlfunktion hat.

Jörg Gurowski , CPCAI

★ PUBLISHER: CPC Amstrad International
★ YEAR: 1991
★ CONFIG: 128K + AMSDOS
★ LANGUAGE:
★ LiCENCE: LISTING
★ COLLECTION: CPC AMSTRAD INTERNATIONAL 1991
★ AUTOR: Jörg Gurowski
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
» Bankgeschaefte-Joerg  Gurowski    (CPC  Amstrad  International)    GERMAN    LISTINGDATE: 2021-08-10
DL: 729
TYPE: PDF
SiZE: 554Ko
NOTE: 2 pages/PDFlib v1.6

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

Lien(s):
» Applications » Pattern-Fill / Pattern-Draw (CPC Amstrad International)
» Applications » Affichag
» Applications » DAMS (Notice)
» Applications » Debugger (E.L.S)
» Applications » Interrupt Driven Scroller (Computing with the Amstrad)
» Applications » Macro (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 450 millisecondes et consultée 868 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.