HARDWAREMONTAGES ★ Ein Glanzstück für den CPC ★

Happy-Megabitkarte (Happy Computer)Hardware Montages
★ 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 ★ 

Gleichgültig, ob Sie Ihren Schneider CPC nur um ein 8-KByte-EPROM ausbauen oder eine 128-KByte-Speichererweite-rung (mit EPROMs und RAMs gemischt bestückt) anschließen wollen: Die Happy-Megabitkarte für den CPC erlaubt Ihnen den individuellen Ausbau des CPC-Speichers zum günstigen Preis.

Mehr Speicher müßte man haben! Ein EPROM mit zusätzlicher Software möchte ich anschließen! Diese und ähnliche Ausrufe hört man in letzter Zeit oft von CPC-Besitzern und so manch einer schaut neidisch auf die Megabyte-Speicher der Atari ST- und Amiga-Kollegen. Die Speichergröße des eigenen Computers mit 64 KByte RAM (CPC 464/664) beziehungsweise 128 KByte RAM (CPC 6128) und 32 KByte ROM bzw. 48 KByte ROM (mit Disk-ROM) macht inzwischen einen recht »mickrigen« Eindruck und viele CPC-Freaks, so geht das Gerücht, sollen wegen Minderwertigkeitskomplexen bereits auf andere Computermodelle umgestiegen sein.

Das wäre jedoch nicht nötig gewesen, denn der Schneider CPC bietet die hard- und softwaremäßigen Voraussetzungen zu einer komfortablen Speichererweiterung. Man muß nur das Verfahren kennen, das der CPC benutzt, um externe Speicherbausteine anzusprechen und in das Betriebssystem einzubinden.

Damit auch Sie wissen, wie man zusätzlichen Speicher an den CPC anschließen und seinen Computer zum Beispiel zu einer Einschaltmeldung nach Bild 1 bewegen kann, werden wir Ihnen auf den folgenden Seiten ausführlich die Hardware- und Software-Grundlagen, die Sie für den Aufbau einer Speichererweiterung benötigen, vermitteln und die Schaltung für die Happy-Megabitkarte entwerfen. Um auch den praktischen Nutzen zu demonstrieren, runden einige kleine Beispielprogramme unser Informationsangebot sinnvoll ab.

Bild 1. Diese Ein-schaltmeldung ist mit der Happy-Megabitkarte kein Problem >>

Auch wenn Sie nicht Vorhaben, die Happy-Megabitkarte selbst aufzubauen, sollten Sie diesen Beitrag lesen. Einerseits lernen Sie viel über das Zusammenspiel zwischen Hard- und Software im CPC, andererseits können Sie anhand der ausführlichen Schaltungsbeschreibungen Ihre Kenntnisse in Elektronik vertiefen.

Speicher Stück für Stück

Bild 2 zeigt die grundlegende Speicherverteilung im Schneider CPC. Der im Computer eingebaute Prozessor Z80 kann mit seiner Adreßbusbreite von 16 Bit nur einen Speicherbereich von 64 KByte adressieren. Aus diesem Grund decken bereits die 64 beziehungsweise 128 KByte RAM (Arbeitsspeicher) des CPC den gesamten Speicherbereich einmal beziehungsweise zweimal ab. (Im CPC 6128 regelt ein spezieller PAL-Chip den Zugriff auf die beiden RAM-Speicherbereiche.)

Damit der Z80 auch das interne ROM des CPC adressieren und dessen Daten verarbeiten kann, läßt sich über die Portadresse 7F (hex) ein Register im Gate Array (kundenspezifischer Schaltkreis im CPC) manipulieren. Dieses Register ist für das Umschalten des oberen und unteren RAM-Speicher-segments (zu je 16 KByte) auf die oberen und unteren 16 KByte des internen ROM zuständig. Auf diese Weise kann das Betriebssystem des CPC über einen einfachen Portausgabe-Befehl die gewünschte Speicherkonfiguration einstellen.

Doch damit nicht genug. Auch für den Anschluß weiterer Speicher wurde beim Entwurf des CPC bereits vorgesorgt. So läßt sich das obere Speichersegment nicht nur zwischen internem RAM und ROM umschalten. Die Betriebssystem-Routine »FAR CALL«, die über den kurzen Maschinensprache-Befehl RST 3 aufgerufen wird, bietet die softwaremäßigen Voraussetzungen, um für das obere Speichersegment einen von maximal 252 angeschlossenen 16-KByte-Speicherberei-chen (im folgenden kurz EXP-Speicher genannt) auszuwählen und aufzurufen.

Der Aufruf der FAR-CALL-Routine hat folgendes Format:

RST 3
DW adresse
DB numraer

Der 2-Byte-Wert »adresse« ist die Sprungadresse für den EXP-Speicher, das unmittelbar folgende Byte »nummer« gibt die Nummer des ausgewählten EXP-Speichers an. Der Maschinensprache- Profi weiß bereits, daß der RST 3-Befehl einen Sprung auf die Adresse 24 bewirkt. Von hieraus erfolgt der Aufruf der FAR-CALL-Routine. Die FAR-CALL-Routine erhält den Wert der Adresse und Nummer, indem sie über den Stack die Absprungadresse des RST 3-Befehls ermittelt, die drei folgenden Bytes einliest und entsprechend verwendet.

Hierzu gibt die Routine über die Portadresse DF (hex) die Nummer des EXP-Speichers aus. (Für die Experten: Der CPC verwendet für eine Portadresse nicht - wie allgemein üblich - das untere Adreßbyte aus Register C, sondern ausschließlich das obere Adreßbyte aus Register B).

LD A,nummer
LD B,DF
OUT (C),A

Liegt die Nummer zwischen 0 und 251, so wird ein EXP-Speicher adressiert. Beträgt der Wert dagegen 252, 253, 254 oder 255, so wird die interne Speicherkonfiguration nach Tabelle 1 eingestellt.

Eine weitere interessante Betriebssystem-Routine lautet »SIDE CALL« und wird über den Maschinensprachebefehl RST 2 aufgerufen. Die SIDE-CALL-Routine erlaubt Sprünge zwischen EXP-Speichern mit aufeinanderfolgenden Nummern über relative Adreßanga-ben. Einzige Bedingung ist, daß die Nummer des EXP-Speichers, auf den der Sprung erfolgt, höchstens um den Wert 3 größer ist als die Nummer des EXP-Speichers, von dem aus die SIDE-CALL-Routine aufgerufen wird.

Seifensprung mit SIDE CALL

Nach dem RST 2-Befehl muß die Zieladresse - C000 (hex) stehen, das heißt die relative Adresse bezogen auf den Beginn des ausführenden EXP-Speichers. Zur Verdeutlichung einige Beispiele, die in dem EXP-Speicher Nummer 1 stehen sollen:

RST 2
DW 0006

bewirkt einen Sprung an die Adresse C006 (hex) des ausführenden EXP-Speichers,

RST 2
DW 4006

ruft den EXP-Speicher Nummer 2 unter der Adresse C006 (hex) auf,

RST 2
DW 8006

bewirkt einen Sprung an die Adresse C006 (hex) des EXP-Speichers Nummer 3 und

RST 2
DW C006

ruft die Adresse C006 (hex) in EXP-Speicher Nummer 4 auf.

Der RST 2-Befehl bewirkt einen Sprung an die Adresse 16. Von hier wird die SIDE-CALL-Routine aufgerufen, die über den Stack die Absprungadresse des RST 2-Befehls ermittelt und die beiden folgenden Bytes als Sprungadresse einliest. Die oberen beiden Bits dieser Adresse werden isoliert und zur Auswahl des EXP-Speichers herangezogen.


Bild 2. Die grundsätzliche Speicherverteilung im CPC

Dekodierung ist gefragt

Ein EXP-Speicher, der von der FAR-CALL- oder SIDE-CALL-Routine erkannt werden soll, muß über eine Dekodierlogik verfügen, die die beiden Signale WR und IORQ, sowie das Adreßbit A13 auf den Zustand 0 testet. Diese drei Leitungen liegen nämlich nur dann gemeinsam auf 0, wenn die Z80 den oben erwähnten OUT-Befehl mit dem Wert DF (hex) in Register B ausführt. In diesem Fall gibt der Wert, der auf dem Datenbus liegt, die Nummer des angesprochenen EXP-Speichers an. Die Dekodierlogik muß nun entscheiden, ob diese Nummer der Nummer des angeschlossenen EXP-Speichers entspricht, und den Speicher entsprechend freigeben oder sperren.

Dieses Verfahren benutzt auch der Disketten-Controller des DD1-Lauf-werks, um dem Betriebssystem des CPC das Disk-ROM als EXP-Speicher Nummer 7 zur Verfügung zu stellen. Dadurch bleiben noch die Nummern 0 bis 6 und 8 bis 251 unbelegt.

Bild 3 zeigt die Happy-Megabitkarte Typ 1, die den Anschluß von einem oder mehreren EPROMs als EXP-Speicher an den CPC erlaubt. Die Adreßbits A0 bis A13 sowie der gesamte Datenbus werden direkt an das oder die EPROMs geführt. Ebenso führt der Datenbus an den Eingang des 8-Bit-Registers 74LS273, das den Wert, der auf dem Datenbus liegt, Zwischenspeichern kann.

Der Einschreibevorgang eines Datenbytes in den Register-Baustein wird durch eine positive Signalflanke am CLK-Eingang (11) ausgelöst. Diese Signalflanke kann nur entstehen, wenn WR, IORQ und A13 gleichzeitig auf 0 liegen. Sobald eines der Signale wieder zurückgesetzt wird, ändert sich der Pegel am CLK-Eingang auf 1. Dadurch übernimmt das Register den auf dem Datenbus anliegenden Wert. Dieser Wert entspricht der Nummer des ausgewählten EPROMs.

Die EPROM-Nummer liegt nun direkt am 3-Bit-Dekoder 74LS138 an. Dieser Dekoder besitzt drei Dateneingänge (A, B, C), an denen die Datenbits DO bis D2 angeschlossen sind, und acht Ausgänge (0 bis 7). Abhängig vom Bitmuster am Eingang wird nun ein Ausgang aktiviert, indem er auf 0 gesetzt wird (negative Logik). Es wird jeweils der Ausgang gesetzt, dessen Nummer dem binären Wert am Dateneingang entspricht. Liegt zum Beispiel das Bitmuster 010 an, so ist der Ausgang 2 gleich 0.

Die Datenbits D3 bis D7 werden nicht zur Dekodierung herangezogen. D3 und D4 sind an die beiden CE-Eingänge (4 und 5) des Dekoders geführt, und D5 bis D7 sind über ein NOR-Gatter an den CE-Eingang (6)_des Dekoders angeschlossen. Die CE-Eingänge und der CE-Eingang (chip enable) geben den Baustein frei oder sperren seine elektronische Funktion.


Bild 4. So wird ein EPROM an die Signale der Dekodierlogik angeschlossen

Man kann jedes CE-Signal als Ein-/ Ausschalter betrachten; ein Baustein ist nur dann eingeschaltet, wenn alle Schalter auf »Ein« stehen, das heißt alle Signale aktiv sind (CE = 0 und CE = 1).

Intelligente Logik

Die angegebene Beschaltung bewirkt, daß der Dekoder nur freigegeben wird, wenn die Datenbits D3 bis D7 auf 0 liegen. Aus diesem Grund akzeptiert der Dekoder nur die Werte 0 bis 7 bei der Dekodierung, so daß sich angeschlossene EPROMs nur unter den Nummern 0 bis 7 ansprechen lassen.

Die Ausgänge des Dekoders führen über die Schalter S0 bis S7 direkt an die OE-Eingänge der EPROMs. Das Signal an einem OE-Eingang (output enable) bestimmt, ob das EPROM zum Lesen gesperrt oder freigegeben ist. Folglich können Sie über die Schalter wählen, welche Bausteine der CPC erkennen soll. Wenn ein Schalter offen ist, liegt das zugehörige OE-Signal über einen Pull-up-Widerstand automatisch auf + 5 Volt, und das EPROM kann vom Betriebssystem des CPC nicht freigegeben werden.

Wenn Sie beispielsweise den Schal-ter S1 schließen und an das Signal OE1 ein EPROM anschließen, kann das Betriebssystem des CPC diesen Baustein als EXP-Speicher Nummer 1 ansprechen. Ist Schalter S1 aber offen, erkennt der CPC das EPROM nicht.
Die Ausgänge des Dekoders führen auch an das NAND-Gatter 74LS30, das über acht Eingänge verfügt. Der Ausgang des NAND-Gatters geht auf 1, sobald ein EPROM angesprochen ist, das heißt ein Eingang des NAND-Gatters auf 0 liegt. Sind dann auch noch die beiden Adreßbits A15 und A14 aktiv, so ist dies ein Zeichen, daß der Z80 das obere Speichersegment des CPC adressiert, und das ROMDIS-Signal wird über zwei AND-Gatter des vierfachen AND-Gatters 74LS08 auf 1 gelegt. Dadurch ist das interne ROM des CPC gesperrt.

Nun fehlt nur noch ein aktives ROMEN-Signal, das den Zugriff auf ein ROM (in diesem Fall ein EPROM), anstelle des Bildspeichers anzeigt. Wenn auch diese Bedingung erfüllt ist, wird das CE-Signal gesetzt, das jenes EPROM endgültig freigibt, das bereits über ein OE-Signal angesprochen ist. Jetzt kann das Betriebssystem des CPC auf das EPROM zugreifen und einen Sprung ausführen oder Daten einiesen.

Ausbaufähige Schaltung

Die meisten Leser werden sich jetzt fragen, wo denn die angekündigten EPROMs bleiben. Wir haben diese Bausteine aus Gründen der Übersichtlichkeit im Schaltplan nicht eingezeichnet. Bild 4 gibt jedoch darüber Auskunft, an welche Anschlüsse eines EPROMs die Signale der Happy-Megabitkarte geführt werden müssen.


Bild 3. Mit der Happy-Megabitkarte Typ 1 können Sie 8-KByte- und 16-KByte-EPROMs als EXP-Speicher an Ihren CPC anschließen


Bild 5. Wenn Sie mehr als zwei EPROMs an ihren CPC anschließen möchten, empfiehlt sich die Happy-Megabitkarte Typ 2 mit verstärkten Adreß- und Datenbus-Signalen


Bild 6. Die Happy-Megabitkarte Typ 3 erlaubt auch den Einsatz von statischen Speicherbausteinen

An EPROMs kommen der 8-KByte-Typ 2764 und der 16-KByte-Typ 27128 in Frage. Das Adreßbit A13 müssen Sie nur beim 27128 an Pin 26 führen, beim 2764 bleibt der Anschluß unbeschal-tet.

Wenn Sie mehr als zwei EPROMs in die angegebene Schaltung einbauen, tritt ein neues Problem auf. Bedingt durch die Anzahl und die Länge der Signalleitungen werden insbesondere die Adreßbus- und die Datenbus-Signale stark belastet. In diesem Fall empfiehlt es sich, diese Signale durch Treiberbausteine zu verstärken. Bild 5 zeigt die Happy-Megabitkarte Typ 2 mit drei 8-Bit-Treibern 74LS245, die Signalstärke und Datensicherheit erhöhen.
Die Richtungs- und Freigabe-Eingänge der Treiber-Bausteine, die für die Signale des Adreßbus zuständig sind, werden auf Masse gelegt, so daß die Bausteine ständig aktiv sind und von B nach A verstärken. Das CS-Signal (chip select), das nurjiktiv ist, wenn ein EPROM über ein OE-Signal angespro--chen und gleichzeitig über das CE-Signal freigegeben ist, schaltet den Datenbus-Treiber nur dann von B nach A (also vom EPROM zumCPC), wenn ein EPROM über OE und CE zum Auslesen freigegeben wurde. Auf diese Weise werden Kollisionen auf dem Datenbus vermieden.

Und jetzt kommt das Schmankerl! Bild 6 zeigt die Happy-Megabitkarte Typ 3, die auch den Einsatz von statischen Speicherbausteinen (SRAMs) erlaubt. Sie können die Typen 6264 (8 KByte) und 62128 (16 KByte) verwenden. Sollten Sie Schwierigkeiten haben, den 62128-Typ zu beschaffen, läßt sich durch die Schaltung nach Bild 7 mit zwei 6264-Bausteinen ein 62128 emulieren, indem das Adreßbit in die Dekodierung des Freigabe-Signals CE einbezogen wird.

Liegt A13 auf 0, so wird der linke 6264 freigegeben (sofern das CE-Signal der Dekodierschaltung ebenfalls aktiv ist), und wenn A13 auf 1 gesetzt ist, wird der rechte 6264 aktiviert. Der linke 6264 entspricht folglich der unteren und der rechte 6264 der oberen Speicherhälfte eines 62128.

Doch kommen wir zurück zur Schaltung in Bild6. Dadurch, daß die Elektronik das WR-Signal erkennt und auch das MREQ-Signal berücksichtigt, versetzt sie den CPC nicht nur in die Lage, EPROMs auszulesen, sondern auch SRAMs zu beschreiben.



Bild 7. Ersatzschaltung für den 62128 aus zwei 6264 und drei Logik-Gattern


Bild 8. Dieses Anschlußschema gilt sowohl für EPROMs als auch für SRAMs


Bild 9. Das Testmuster einer Megabitkarten-Version, die den Einsatz von statischen Speicherbausteinen unterstützt

Schreiben und lesen

Die Funktion ist einfach zu verstehen: Wenn der zweipolige Umschalter US auf das ROMEN-Signal geschaltet ist, bleibt alles wie gehabt. Schalten Sie US dagegen auf das MREQ-Signal um, das einen Speicherzugriff anzeigt, so wird das Signal CE, das die Speicherbausteine freigibt, nur aktiv, wenn ein Speicherzugriff auf das obere Speicherseg-ment des CPC vorliegt (A14 + A15 + MREQ). Wenn nun noch über die Schalter S8 bis S15 ein WR-Signal zu einem SRAM durchgeschaltet ist, kann der Z80 in den SRAM schreiben, indem er in das obere Speichersegment schreibt. Dadurch wird zwar auch der Bildspeicher des CPC beschrieben, der parallel liegt, doch der Bildinhalt läßt sich über Software leicht in einen anderen Bereich verschieben.

Ganz pfiffige Leser werden jetzt fra-gen, warum denn nicht das ROMEN-Signal in Verbindung mit dem WR-Signal für einen Schreibzugriff verwendet wird. In diesem Fall würde nämlich nur dann in das obere Speichersegment geschrieben, wenn ein ROM angesprochen wäre, so daß der Bildspeicher nicht überschrieben werden könnte.

Der Grund für die Wahl des MREQ-Signals ist ganz einfach: Das ROMEN-Signal wird vom Gate Array des CPC erzeugt. Und das Gate Array denkt sich ganz logisch, daß in ein ROM nichts geschrieben werden kann (wobei es ja nicht weiß, daß ein RAM angeschlossen ist). Aus diesem Grund aktiviert das Gate Array bei einem Schreibzugriff auf ein ROM (was softwaremäßig machbar ist), das ROMEN-Signal nicht, so daß wir das Signal in diesem Fall nicht zur Kennzeichnung eines Schreibzugriffes verwenden können.

Auch die Logik zur Ansteuerung der Bustreiber ist einer näheren Beschreibung wert. Die beiden Adreßbus-Treiber sind wie in Schaltung Typ 2 beschältet. Der Richtungseingang des Datenbus-Treibers ist dagegen an das RD-Signal angeschlossen, das CS-Signal wird dem Baustein über den zweipoligen Umschalter US zugeführt. Das RD-Signal sorgt dafür, daß der Datenbus-Treiber nur dann in Richtung CPC geschaltet ist, wenn ein Lesezugriff vorliegt.

Die Umschaltung des CS-Signals an das CE-Signal im Schreibmodus ist nötig, weil beim Schreiben kein OE-Signal aktiv ist und der Ausgang des NAND-Gatters 74LS30 folglich auf 0 liegt. Dadurch liegt der Ausgang des angeschlossenen NOR-Gatters, das lediglich als Inverter arbeitet, auf 1, und wer sich in der digitalen Schaltalgebra ein wenig auskennt, weiß, daß unter diesen Umständen das CS-Signal über das AND-Gatter keine Chance hat, einen aktiven Zustand einzunehmen, das heißt auf 0 zu gehen.

Wenn CS dagegen auf CE umgeschaltet wird, geht es auf 0, sobald ein SRAM angesprochen ist. Damit der Datenbus-Treiber nur dann freigegeben wird, wenn wirklich ein Schreibzugriff vorlieqt, ist das CE-Signal zusätzlich mit dem WR-Signal verknüpft, bevor es an den Treiber gelangt. Würde das WR-Signal bei der Dekodierung nicht berücksichtigt, dann würde der CPC bei einem Lesezugriff auf den Bildspeicher gleichzeitig Daten aus dem SRAM lesen, was zu einem Systemabsturz führen könnte.

Das zur Happy-Megabitkarte Typ 3 passende Anschlußschema der Speicherbausteine, das gemeinsam für EPROMs und SRAMs gilt, zeigt Bild 8. Wenn es sich bei dem Speicherbaustein um einen 8-KByte-Typ handelt (2764 oder 6264), wird Pin 26 auf +5 Volt gelegt. Die 16-KByte-Typen 27128 und 62128 verlangen das Adreßbit A13 an Pin 26.

Externe Energiequelle oder Batterie

Die Anschlüsse für »+5 V extern« und »GND extern« im Schaltbild zur Happy-Megabitkarte Typ 3 weisen darauf hin, daß die Spannungsversorgung der Schaltung über eine externe Spannungsquelle erfolgen sollte, um das Netzteil des CPC nicht übermäßig zu belasten. Wenn die externe Spannungsquelle auch nach Ausschalten des Computers eingeschaltet ist, bleibt der Speicherinhalt der SRAMs erhalten.

Möchten Sie nur wenige SRAM-Bausteine in die Schaltung einsetzen, empfiehlt sich anstelle der externen Spannungsversorgung eine Batteriepufferung, die gestrichelt eingezeichnet ist. Hier wird eine kleine 5,6-Volt-Batterie vom Typ Photo eingesetzt, deren Spannung über eine Diode auf 5 Volt reduziert wird. Im Computerbetrieb erfolgt die Spannungsversorgung über den CPC. Wenn der Computer ausgeschaltet ist, kann die Happy-Megabitkarte von der Computerspannung getrennt und über den Kippschalter KS an die Batteriespannung geführt werden.

In diesem Fall ist es auch sinnvoll, die Betriebsspannungs-Anschlüsse der Dekodierlogik-Bausteine (nicht der SRAMS!) direkt an die Versorgungsspannung des CPC zu legen, so daß die Leitungen durch den Schalter KS von der Batterie getrennt sind. Dadurch muß die Batterie nicht für die Betriebsspannung von Bausteinen aufkommen, deren Funktion für die SRAM-Pufferung unwichtig ist. (Die Masseleitungen von Computer und Batterie müssen Sie natürlich direkt verbinden.)

Bild 9 zeigt das Muster einer Happy-Megabitkarte mit vier Sockeln. Ein Sockel ist mit einem 8-KByte-SRAM 6264 bestückt. Neben dem gelben Kondensator ist eine Batterie zur Pufferung des SRAMs eingelötet. Es ist jedoch empfehlenswert, eine Halterung für die Batterie zu wählen, um verbrauchte Batterien problemlos auswechseln zu können.

Damit sich die SRAM-Bausteine bei ausgeschaltetem Computer im stromsparenden gesperrten Zustand (Stand-By-Betrieb) befinden und die Batterie geschont wird, ist der Eingang des OR-Gatters, das für das CE-Signal zuständig ist, über einen Pull-up-Widerstand an den +5-Volt-Anschluß der Batterie-pufferung geführt. Dadurch liegt das CE-Signal auf 1 und alle Speicher bausteine sind gesperrt.

Aufbau und Anschluß

Für die Bastler, die noch nicht zu den alten Hasen zählen, ist es wichtig zu wissen, daß man jeweils das Pin mit der höchsten Nummer eines ICs an die positive Versorgungsspannung (+5 Volt), und das schräg gegenüberliegende Pin mit der halb so großen Nummer an Masse anschließen muß, um dem Baustein seine Betriebsspannung zuzuführen. Dies gilt für alle in den drei Schaltungen verwendete ICs. So müssen Sie zum Beispiel Pin 20 der Treiberbausteine 74LS245 an +5 Volt führen und Pin 10 auf Masse legen. Das Schema, nach dem die Pins eines ICs durchnumeriert sind, können Sie Bild 4 und 8 entnehmen.

Grundsätzlich sollten Sie beim Aufbau einer der drei Megabitkarten-Versionen alle Bausteine sockeln! Ein Sockel sorgt dafür, daß der Baustein beim Einbau nicht zerstört wird und erlaubt den einfachen Ausbau im Reparaturfall. EPROMs können auf diese Weise zum Neuprogrammieren problemlos herausgenommen werden. Die Investition für Sockel lohnt sich also in jedem Fall.

Eine weitere Maßnahme, die für den Profi selbstverständlich ist, betrifft den Einbau von Keramikkondensatoren, die durch Schaltspitzen bedingte Spannungsschwankungen abfangen. Zu diesem Zweck sollten Sie an jeden zweiten bis dritten IC-Sockel zwischen den Be-triebsspannungs-Anschlüssen (siehe oben) einen 100-Nanofarad-Konden-sator einlöten. Dadurch sind Fehler bei der Datenübertragung (fast) ausgeschlossen.

Für die Schalter S0 bis S7 und S8 bis S15 sollten Sie jeweils einen achtpoligen DIL-Schalter verwenden. Diese Schalter sind zwar etwas unhandlich zu bedienen, doch sie sind platzsparend und können wie Sockel eingelötet werden.

Für die Verdrahtung der Schaltung eignet sich der Fädelstift von Siemens. Dieser Stift ist mit einer 50-m-Drahtrolle bestückt. Der Draht ist lackisoliert und kann bequem von Lötpunkt zu Lötpunkt geführt werden. Beim Lötvorgang schmilzt die Lackisolierung und es entsteht eine leitende Verbindung. Nur für die Leitungen zur Spannungsversorgung sollten Sie konventionellen (dickeren) Draht wählen. Bild 10 zeigt ein Muster des Fädelstiftes.

Der Anschluß der Happy-Megabit-karte an den CPC erfolgt zweckmäßigerweise direkt über einen 50poligen Platinenstecker (CPC 6128: 50poliger Amphenolstecker), der auf die Karte direkt gelötet wird. Wollen Sie weitere Peripherie an Ihren CPC anschließen, müssen Sie Ihre Megabitkarte mit einer Flachbandkabel-Brücke versehen, die die Computersignale vom Anschlußstück der Schaltung auf einen zweiten 50poligen Platinenstecker bzw. auf eine 50polige Amphenolbuchse (CPC 6128) überträgt. Besitzer eines CPC 464 oder 664 müssen sich dann noch em schmales Stück Platine mit 50 Leiterbahnen anfertigen, das, in den Plati--enstecker eingefügt, wie der Originalanschluß des CPC um einen Zentimeter -ervorsteht.

Die Anschlußbelegung des 50poli-gen Platinenanschlusses am CPC können Sie dem Handbuch entnehmen. Tabelle 2 zeigt eine Liste aller Bauteile, die Sie für den Bau der Happy-Megabitkarte benötigen.

Haben Sie eine der Happy-Megabit-«arten Ihren Wünschen angepaßt aufgebaut, ist alles weitere ganz einfach, jsting 1 zeigt das Programm »Memory Bank Manager«, das die Bausteine der Megabitkarte verwaltet. Die EXP-Speicher können gelesen, beschrieben und gelöscht (nur SRAM) werden, die Daten aus EXP-Speichern können auf Datenträger gespeichert oder für SRAMs von Datenträgern geladen werden.


Bild 10. Der Fädelstift erleichtert die Verdrahtung beim Aufbau der Schaltung

Programme zur Speichererweiterung

Das Programm informiert Sie über die jeweils nötigen Schalterstellungen und Berücksichtigt sowohl 8-KByte- als such 16-KByte-Speichertypen.

In Zeile 110 wird die höchste freie Speicheradresse auf 3FFF (hex) heruntergesetzt und geprüft, ob es sich bei 5irem CPC um das Modell 464 PEEK(6)=&80) oder um das Modell 664/6128 handelt. Dementsprechend *ird in Speicherstelle B1CB (hex) oder 37C6 (hex) das obere Byte der neuen Biidspeicher-Startadresse geschrieben, so daß der Bildspeicher nun im Bereich von 4000 bis 7FFF (hex) liegt.

Zeile 120 initialisiert den Bildschirm neu, und Zeile 130 schreibt die Maschinencode-Routine »mbmcode« ab Adresse A600 (hex) in den Speicher des CPC.

Ein Speicher wird ausgelesen, indem I;ber die Maschinencode-Routine der gewünschte Speicherbaustein eingeschaltet und der Inhalt ausgelesen wird.

Der Aufruf zum Auslesen eines Bytes, den Sie im Zusammenhang mit »mbmcode« auch in Ihren eigenen Programmen verwenden können, lautet:

CALL &A600 , adresse , nummmer , @ziel

Die Variable < adresse > muß die Leseadresse und < nummer > die Nummer des gewünschten EXP-Speichers enthalten. Der von der Maschinencode-Routine eingelesene Wert wird der Variablen < ziel > zugewiesen. Listing 2 zeigt den dokumentierten Quellcode von »mbmcode«.

Nummerunterer Speicherbereichoberer Speicherbereich
252ROMROM
253ROMROM
254RAMROM
255RAMRAM
Tabelle 1. Diese Speicherkonfigurationen können über die FAR-CALL-Routine eingestellt werden

Anzahl

Bauteil(e)Wert/Typ

9

9

4 bis 9

1

1

Widerstände

Widerstände (nur Typ 3)

Keramikkondensatoren

Elektrolytkondensator (nur Typ 3)

Standarddiode

4.7 kΩ

4.7 kΩ

100 nF

470 µF

1N4148

1

1

1

1

1

3

1

0 bis 16

0 bis 8

0 bis 16

0 bis 8

vierfaches AND-Gatter mit je zwei Eingängen

dreifaches NOR-Gatter mit je drei Eingängen

ein NAND-Gatter mit acht Eingängen

vierfaches OR-Gatter mit je zwei Eingängen

3-Bit-Dekoder

bidirektionale 8-Bit-Treiber (nur Typ 2 und 3)

8-Bit-Register

8-KByte-EPROMs

16-KByte-EPROMs

8-KByte-SRAMs (nur Typ 3)

16-KByte-SRAMs (nur Typ 3)

74LS08

74LS27

74LS30

74LS32

74LS138

74LS245

74LS273

2764

27128

6264

62128

1

1

1

1

1

1

1

1

1

1

1

Platine

Flachbandkabel (zum Anschluß weiterer Peripherie)

IC-Sockel

IC-Sockel

IC-Sockel

IC-Sockel (nur Typ 2 und 3)

Umschalter (nur Typ 3)

DIL-Schalter DIL-Schalter (nur Typ 3)

Platinenstecker (nur CPC 464/664)

Platinenstecker (nur CPC 464/664 zum Anschluß weiterer Peripherie)

Amphenolstecker (nur CPC 6128)

Amphenolbuchse (nur CPC 6128 zum Anschluß weiterer Peripherie)

50polig

14pollg

16polig

20polig

20polig

2polig

Spolig

8polig

50polig

50polig

50polig

50pollg

Für die Batteriepufferung werden zusätzlich benötigt:

1

1

1

1

Umschalter

Diode

Batterie

Batteriehalterung

1polig

1N4001

5,6 Volt, Typ Photo

Für die Emulation eines 62128 durch zwei 6264 werden zusätzlich benötigt:

1

1

1

sechsfacher Inverter (für sechs Emulationen geeignet)

vierfaches OR-Gatter mit je zwei Eingängen (für zwei

Emulationen geeignet)

74LS04

74LS32

Tabelle 2. Diese Bauteile sind für den Aufbau der Happy-Megabitkarte nötig

Das Schreiben in einen EXP-Speicher erfolgt einfach, indem direkt in den Speicherbereich C000 bis FFFF (hex) geschrieben wird. Dadurch, daß nur der WR-Signal-Schalter für den angesprochenen EXP-Speicher geschlossen ist, liegt der ausgewählte SRAM-Baustein parallel zum internen RAM des CPC, so daß die Daten in beide Speicher geschrieben werden. Das Löschen eines RAM-Speichers funktioniert vergleichbar, indem jede Speicherstelle mit dem Wert 0 beschrieben wird.

Wenn Sie aus eigenen Programmen heraus einen EXP-Speicher beschreiben möchten, müssen Sie zu Anfang den Bildspeicher wie in Zeile 110 gezeigt verschieben, nur den WR-Signal-Schalter für den gewünschten EXP-Speicher schließen, und den Speicher über die Adressen C000 bis FFFF (hex) beschreiben. Anschließend stellen Sie die alte Schalterstellung wieder ein und verschieben den Bildschirm zurück an seine ursprüngliche Position (»POKE &B1CB,&C0«, bzw. »POKE &B7C6,&C0).

Probieren geht über Studieren

Die Daten können Sie nun nur noch verändern, indem Sie erneut den Bildspeicher verschieben und die geforderte Schalterstellung einstellen. Aus diesem Grund empfiehlt es sich, in die EXP-Speicher nur Daten zu schreiben, die während des Programmlaufs nicht mehr verändert werden.
Nachdem wir nun ausführlich besprochen haben, wie die Happy-Megabitkarte aufgebaut und programmiert wird, interessiert es Sie natürlich, was man in die EXP-Speicher schreiben kann, und wie die Daten vom CPC verwaltet werden.

Das Betriebssystem des CPC führt nach jedem Reset oder Einschalten eine Systeminitialisierung durch und versucht einen EXP-Speicher mit der Nummer 0 aufzurufen. Ist dieser EXP-Speicher nicht vorhanden, so wird automatisch die obere Hälfte des internen ROM, in diesem Fall das Basic adressiert. Das Basic durchläuft nun zuerst die Routine »ROM WALK«, die das Computersystem auf angeschlossene EXP-Speicher testet.

Die ROM-WALK-Routine des CPC 464 berücksichtigt EXP-Speicher mit den Nummern 1 bis 7, und die gleichnamige Routine des CPC 664/6128 erkennt EXP-Speicher mit den Nummern 1 bis 15. Zuerst schaltet die ROM -WALK-Routine die EXP-Speicher der Reihe nach ein und liest den Inhalt der ersten Speicherstelle. Ist unter der angegebenen Nummer kein EXP-Speicher angeschlossen, so lautet der Inhalt der Speicherzelle schaltungstechnisch bedingt FF (hex). Hat der Inhalt dagegen den Wert 1, so wird der EXP-Speicher unter der Adresse C006 (hex) aufgerufen. Hier Kann eine Initialisierungsroutine, die zum Beispiel eine Bereitschaftsmeldung auf den Bildschirm des CPC ausgibt und einen eigenen Speicherbereich im internen RAM des CPC reserviert, stehen.

Tippen Sie als Beispiel Listing 3 ab und starten Sie den DATA-Lader. Der DATA-Lader erzeugt einen Binärcode namens »rsxram.bin«. Wenn Sie nun den Binärcode mit dem Memory Bank Manager in einen SRAM laden, gibt dieser EXP-Speicher bei jeder Initialisierung des Computersystems eine Bereitschaftsmeldung auf den Bildschirm aus. Zusätzlich werden mit minimalem Aufwand die beiden RSX-Befehle |WAIT und |RESET in das Basic des CPC eingebunden.

Schauen Sie sich den dokumentierten Quellcode in Listing 4 an. Hier wird der allgemeine Aufbau eines Programms zum Einklinken zusätzlicher Befehle in das Basic des CPC deutlich.

Zu Beginn (C000 hex) muß, wie bereits oben erwähnt, der Wert 1 stehen, damit die ROM-WALK-Routine den EXP-Speicher als Hintergrund-ROM erkennt und ab Adresse C006 (hex) aufruft.

Einklinken mit RSX

Die Werte in den Speicherstellen C001 bis C003 (hex) sind unwichtig. Sie sind für die Versionsnummer des EXP-Speichers reserviert und können auf 0 gesetzt werden.

In C004 und C005 (hex) muß die Adresse der Befehlsworttabelle stehen, die die Namen der RSX-Befehle enthält. Der ASCII-Code des letzten Buchstabens eines Befehls muß jeweils mit einem gesetzten siebten Bit ( + 128) gespeichert sein. Eine 0 beendet die Befehlswort-Tabelle.

An Speicherstelle C006, die die Einsprungsadresse der ROM-WALK-Routine markiert, steht ein Sprung zur Initialisierungsroutine. In den folgenden Speicherstellen müssen die Aufrufadressen für die RSX- Befehle in Form von JP-Befehlen stehen, und zwar in der Reihenfolge, in der sie auch in der Befehlswort-Tabelle erscheinen. Beachten Sie bei allen Sprungadressen, daß das niederwertige Adreßbyte vor dem höherwertigen Byte im Speicher stehen muß!

Oie Initialisierungsroutine gibt im Fall von »rsxram.bin« nur eine Textmeldung auf den Bildschirm aus. Wenn Sie für den EXP-Speicher einen Bereich im internen RAM des CPC reservieren möchten, müssen Sie den Wert des HL-Registers, das die höchste freie Speicheradresse HiRAM enthält, entsprechend verringern. Der Speicherbereich 1 Byte über HiRAM bis zum alten HiRAM-Wert steht Ihnen dann zur freien Verfügung.

Wenn Sie einen EXP-Speicher, der zuvor initialisiert wurde, über die FAR-CALL-Routine aufrufen, wird die Startadresse des reservierten Speicherbereichs automatisch im lY-Register mit übergeben. Den Wert der niedrigsten freien Speicheradresse LoRAM sollten Sie nicht verändern, weil sich sonst alle Bezugsadressen für Basic-Programme verändern, was zu Inkompatibilitäten führen kann.

Das Gesagte gilt nicht für einen Baustein, der durch die Nummer 0 freigegeben wird. Wie bereits erwähnt wurde, hat es mit der Nummer 0 eine ganz besondere Bewandnis, weil das Betriebssystem des CPC nach der Systeminitialisierung versucht, einen EXP-Speicher mit dieser Nummer aufzurufen. Ist nun ein EXP-Speicher mit der Nummer 0 am CPC angeschlossen, so wird dieser Speicher anstelle des Basic-Interpreters (obere ROM-Hälfte) unter der Adresse C006 (hex) aufgerufen. Wenn der EXP-Speicher dann noch mit

DI ;Interrupt sperren
EXX ;Alternativ-Registersatz
LD A,C ;alten Zustand in A retten
SET 2,0, ;Bit für Abschalten setzen
OUT (C),C ;in das Gate Array
schreiben ; (B = Portadresse = 7F)
EXX ;Original-Registersatz
EI ;Interrupt freigeben

die untere ROM-Hälfte (Betriebssystem) ausschaltet, hat das Programm im EXP-Speicher Nummer 0 die alleinige Kontrolle über die Hardware des Schneider CPC und kann über den gesamten internen RAM-Speicher (und weitere angeschlossene EXP-Speicher) verfügen. Wer in Maschinensprache und im Aufbau des CPC gut bewandert ist, kann auf dieser Basis sein eigenes Betriebssystem für den CPC schreiben, ohne in Gefahr zu geraten, daß ihm eine Original-Routine des internen ROM »dazwischenfunkt«. Wir sind schon jetzt gespannt, welche interessanten Lesereinsendungen wir zu diesem Thema erhalten. Es muß ja nicht gleich ein Multiuser- und Multitaskingfähiger MS-DOS-Emulator sein!


Bild 11. Diese Dekodier-Version verarbeitet die geraden Nummern von 0 bis 14

Da das Disk-ROM des Disketten-Controllers als EXP-Speicher die Nummer 7 belegt, können alle CPC-Besitzer, die mit mindestens einem Laufwerk arbeiten, diese Nummer nicht nutzen. Weil die ROM-WALK-Routine des CPC 664/6128 jedoch EXP-Speicher mit den Nummern 1 bis 15 einbindet, lohnt sich der Umbau der Dekodier-Schaltung nach Bild 11. Diese Version dekodiert nicht die Nummern 0 bis 7, sondern alle geraden Nummern von 0 bis 14. Dadurch wird die Nummer 7 nicht genutzt, und Sie können acht EXP-Speicher an Ihren CPC anschließen. (Achten Sie jedoch auf die Nummer 0!)

Zu guter Letzt in Listing 5 noch eine kleine Routine als DATA-Lader, die, in jeden EXP-Speicher eingebunden, eine Bereitschaftsmeldung in der Art von Bild 1 ausgibt. Die Nummer, Größe und Art des EXP-Speichers müssen Sie natürlich entsprechend den Hardwarevoraussetzungen abändern. Um Ihnen diese Änderungen zu erleichtern, haben wir zusätzlich den Quellcode in Listing 6 abgedruckt.

Wichtig ist, daß der Text mit den Werten 10 und 13 für Zeilenvorschub und Wagenrücklauf, sowie einer 0 als Kennzeichen für das Textende abgeschlossen wird, damit eine korrekt formatierte Bildschirmausgabe erfolgt.

(Michael Stagge/ma) , HC

★ PUBLISHER: Happy Computer
★ YEAR: 1986
★ LANGUAGE:
★ LiCENCE: ???
★ COLLECTION: HAPPY COMPUTER-SCHNEIDER SONDERHEFT
★ AUTHOR: Michael STAGGE
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listings:
» MBM-Memory  Bank  Manager  v1.2    (Happy  Compter)    GERMANDATE: 2023-10-19
DL: 86
TYPE: ZIP
SiZE: 6Ko
NOTE: 40 tracks
.HFE: Χ
.DSK: √

» MBM-Memory  Bank  Manager  v1.2    (Incl.  Source  Codes)    (Happy  Compter)    GERMAN    LISTINGDATE: 2023-10-19
DL: 68
TYPE: PDF
SiZE: 294Ko
NOTE: Uploaded by hERMOL ; 5 pages/PDFlib v1.6

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

Lien(s):
» Hardware » Interface Rom - Eprom Programmer - John Morrison (Amstrad Action)
» Hardware » Interface Rom - Bryce - Megaflash
» Hardware » Interface ROM - Inicron RAMROM - Box (Manual)
» Hardware » XROM Eprom Programmer
» Hardware » Memoire - Microgenic - Advanced Eprom Expansion
» Hardware » Amstrad CPC 1M RAM Expansion Card
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 721 millisecondes et consultée 448 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.