{"id":4394,"date":"2013-12-16T17:55:24","date_gmt":"2013-12-16T16:55:24","guid":{"rendered":"http:\/\/www.jungsi.de\/?p=4394"},"modified":"2026-04-18T15:54:10","modified_gmt":"2026-04-18T13:54:10","slug":"retro-sinclair-zx-spectrum-zxc3-teil-6","status":"publish","type":"post","link":"https:\/\/www.jungsi.de\/en\/retro-sinclair-zx-spectrum-zxc3-teil-6\/","title":{"rendered":"ZXC3 &#8211; Teil 6"},"content":{"rendered":"<p>Heute kommen wir zum vorerst letzten Teil der Artikelreihe rund um das <strong>ZXC3<\/strong> Modul. Schon lange hat mich keine &#8222;Erweiterung&#8220; mehr so besch\u00e4ftigt wie diese kleine Cartridge. F\u00fcr den Preis bietet es schon sehr viel an zus\u00e4tzlichen M\u00f6glichkeiten. Wenn man nur diesen Artikel heute liest und mit diesem Model einfach mal die M\u00f6glichkeit hat einen defekten Spectrum zu identifizieren &#8211; das ist schon richtig toll. Evt. folgt ja mal noch ein Bericht zu dem schon \u00f6fter erw\u00e4hnten SPECTRA Interface \ud83d\ude42<\/p>\n\n\n\n<p><strong>1. 128 RAM<\/strong> <strong>Tester<\/strong><\/p>\n\n\n\n<p>Diese 8K ROM Cartridge wurde f\u00fcr den Spectrum 128 und den grauen Spectrum +2, kann aber auch mit dem16K\/48K Spectrum verwendet werden. Es verbessert den Speichertest der beim Start des Spectrum 128 Editor ROM durchgef\u00fchrt wird, welcher folgende Fehlerkategorien nicht erkennen kann:<\/p>\n\n\n\n<!--more-->\n\n\n\n<ul class=\"wp-block-list\">\n<li>es wird nur das erste Byte in jeder 16K RAM Bank getestet und w\u00fcrde daher keine Fehler in anderen Pl\u00e4tzen innerhalb der RAM Bank erkennen<\/li>\n\n\n\n<li>es tastet nur die Werte FFh und 00h und erkennt daher keine kurzgeschlossenen Lines<\/li>\n\n\n\n<li>es erkennt kein RAM Paging Fehler die verursachen das die falsche Bank eingeschaltet wird<\/li>\n\n\n\n<li><\/li>\n<\/ul>\n\n\n\n<p>Sollte das Editor ROM einen Speicherfehler entdecken dann setzt es die entsprechende Randfarbe um anzuzeigen welche 16K Bank fehlerhaft ist. Die Bedeutung der Farben ist wie folgt:<\/p>\n\n\n\n\n<table id=\"tablepress-6\" class=\"tablepress tablepress-id-6\">\n<tbody class=\"row-hover\">\n<tr class=\"row-1\">\n\t<td class=\"column-1\"><strong>Randfarbe<\/strong><\/td><td class=\"column-2\"><strong>Fehlerhafte RAM Bank<\/strong><\/td>\n<\/tr>\n<tr class=\"row-2\">\n\t<td class=\"column-1\">Schwarz<\/td><td class=\"column-2\">7<\/td>\n<\/tr>\n<tr class=\"row-3\">\n\t<td class=\"column-1\">Wei\u00df<\/td><td class=\"column-2\">6<\/td>\n<\/tr>\n<tr class=\"row-4\">\n\t<td class=\"column-1\">Gelb<\/td><td class=\"column-2\">5<\/td>\n<\/tr>\n<tr class=\"row-5\">\n\t<td class=\"column-1\">Cyan<\/td><td class=\"column-2\">4<\/td>\n<\/tr>\n<tr class=\"row-6\">\n\t<td class=\"column-1\">Gr\u00fcn<\/td><td class=\"column-2\">3<\/td>\n<\/tr>\n<tr class=\"row-7\">\n\t<td class=\"column-1\">Magenta<\/td><td class=\"column-2\">2<\/td>\n<\/tr>\n<tr class=\"row-8\">\n\t<td class=\"column-1\">Rot<\/td><td class=\"column-2\">1<\/td>\n<\/tr>\n<tr class=\"row-9\">\n\t<td class=\"column-1\">Blau<\/td><td class=\"column-2\">0<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- #tablepress-6 from cache -->\n\n\n\n<p>Das Spectrum 128 RAM Tester ROM macht einen genaueren Test der 128K RAM und des Paging-Mechanismus der zwischen den verschiedenen 16K B\u00e4nken schaltet. Wenn ein Speicherfehler entdeckt wurde dann versucht die Cartridge herauszufinden welche Data-Line oder Adress-Line den Fehler verursacht. Die Cartridge beginnt startet den Test bei den unteren 16K RAM welcher an Adress 4000h &#8211; 7FFFh ist, da dieser den Bildschirmspeicher enth\u00e4lt und der Cartridge erlaubt festzustellen ob Nachrichten auf dem Bildschirm angezeigt werden k\u00f6nnen. Die Cartridge setzt die Randfarbe erst Mal auf wei\u00df und sollte sie einen Fehler innerhalb der unteren 16K RAM finden dann setzt es die Randfarbe entsprechend um die Herkunft des Fehlers anzuzeigen und es finden keine weiteren Tests statt. Die Randfarben haben folgende Bedeutung:<\/p>\n\n\n\n\n<table id=\"tablepress-7\" class=\"tablepress tablepress-id-7\">\n<tbody class=\"row-striping row-hover\">\n<tr class=\"row-1\">\n\t<td class=\"column-1\"><strong>Rand Farbe<\/strong><\/td><td class=\"column-2\"><strong>Fehler<\/strong><\/td>\n<\/tr>\n<tr class=\"row-2\">\n\t<td class=\"column-1\">Schwarz<\/td><td class=\"column-2\">Kein RAM vorhanden<\/td>\n<\/tr>\n<tr class=\"row-3\">\n\t<td class=\"column-1\">Rot<\/td><td class=\"column-2\">Schlechte Address Line<\/td>\n<\/tr>\n<tr class=\"row-4\">\n\t<td class=\"column-1\">Blau<\/td><td class=\"column-2\">Schlechte Daten Line<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- #tablepress-7 from cache -->\n\n\n\n<p>Wenn eine Address oder Data Line identifiziert wurde dann wird die fehlerhafte Line durch ein Anzahl an wei\u00dfen Linien im Randbereich angezeigt. F\u00fcr die Adress oder Dataline 0 wird ein Streifen, f\u00fcr Adress oder Dataline 1 werden zwei Streifen, f\u00fcr Adress oder Dataline 2 werden 3 Streifen, usw. angezeigt. Sollte die fehlerhafte Line nicht identifiziert werden k\u00f6nnen, wird der Rand keinen weissen Streifen haben.<\/p>\n\n\n\n\n<table id=\"tablepress-3\" class=\"tablepress tablepress-id-3\">\n<tbody>\n<tr class=\"row-1\">\n\t<td class=\"column-1\"><a href=\"http:\/\/www.jungsi.de\/blog\/wp-content\/uploads\/2013\/10\/S128_RAM_Tester_Error4.gif\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.jungsi.de\/blog\/wp-content\/uploads\/2013\/10\/S128_RAM_Tester_Error4.gif\" alt=\"\" width=\"320\" height=\"240\" class=\"alignleft size-full wp-image-4422\" srcset=\"https:\/\/www.jungsi.de\/blog\/wp-content\/uploads\/2013\/10\/S128_RAM_Tester_Error4.gif 320w, https:\/\/www.jungsi.de\/blog\/wp-content\/uploads\/2013\/10\/S128_RAM_Tester_Error4-300x225.gif 300w\" sizes=\"auto, (max-width: 320px) 100vw, 320px\" \/><\/a><\/td><td class=\"column-2\"><a href=\"http:\/\/www.jungsi.de\/blog\/wp-content\/uploads\/2013\/10\/S128_RAM_Tester_Error5.gif\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.jungsi.de\/blog\/wp-content\/uploads\/2013\/10\/S128_RAM_Tester_Error5.gif\" alt=\"\" width=\"320\" height=\"240\" class=\"alignleft size-full wp-image-4421\" srcset=\"https:\/\/www.jungsi.de\/blog\/wp-content\/uploads\/2013\/10\/S128_RAM_Tester_Error5.gif 320w, https:\/\/www.jungsi.de\/blog\/wp-content\/uploads\/2013\/10\/S128_RAM_Tester_Error5-300x225.gif 300w\" sizes=\"auto, (max-width: 320px) 100vw, 320px\" \/><\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- #tablepress-3 from cache -->\n\n\n\n<p>Wenn ein Dataline Fehler erkannt wird, zeigt das Bild im Hauptbereich mehr Informationen \u00fcber den Fehler an. Der RAM Tester ermittelt die niedrigste Dataline mit einem Fehler indem die untere 16K Bank mit $01 gef\u00fcllt wird um Bit 0 zu pr\u00fcfen. Wenn alle Bytes korrekt zur\u00fcckgelesen werden, wird die Bank mit $02 gef\u00fcllt um Bit 1 zu pr\u00fcfen. Wenn immer noch alle Bytes korrekt zur\u00fcckgelesen werden f\u00fcllt es die Bank mit $04 um Bit 2 zu pr\u00fcfen usw. Als Konsequenz daraus werden die Bildschirmdatei und die Attribut-Datei entsprechend dem Wert des Bits gesetzt das getestet wird und stellt daher das Bitmuster am Bildschirm dar. Das Bitmuster das dem Bit entspricht das getestet wird sieht man unten. Beachte das f\u00fcr Bit 6 und Bit7 das Attribut File auf $38 gesetzt wird (wei\u00dfer Hintergrund, schwarze Farbe), damit das Bitmuster auf dem Bildschirm gesehen werden kann.<\/p>\n\n\n\n\n<table id=\"tablepress-1\" class=\"tablepress tablepress-id-1\">\n<tbody class=\"row-hover\">\n<tr class=\"row-1\">\n\t<td class=\"column-1\"><strong>Bit<\/strong><\/td><td class=\"column-2\"><strong>Expected Display Pattern<\/strong><\/td>\n<\/tr>\n<tr class=\"row-2\">\n\t<td class=\"column-1\">0<\/td><td class=\"column-2\">schwarzer Hintergrund, blaue, vertikale Linien<\/td>\n<\/tr>\n<tr class=\"row-3\">\n\t<td class=\"column-1\">1<\/td><td class=\"column-2\">schwarzer Hintergrund, rote, vertikale Linien<\/td>\n<\/tr>\n<tr class=\"row-4\">\n\t<td class=\"column-1\">2<\/td><td class=\"column-2\">schwarzer Hintergrund, graue, vertikale Linien<\/td>\n<\/tr>\n<tr class=\"row-5\">\n\t<td class=\"column-1\">3<\/td><td class=\"column-2\">blauer Hintergrund, schwarze vertikale Linien<\/td>\n<\/tr>\n<tr class=\"row-6\">\n\t<td class=\"column-1\">4<\/td><td class=\"column-2\">roter Hintergrund, schwarze, vertikale Linien<\/td>\n<\/tr>\n<tr class=\"row-7\">\n\t<td class=\"column-1\">5<\/td><td class=\"column-2\">grauer Hintergrund, schwarze, vertikale Linien<\/td>\n<\/tr>\n<tr class=\"row-8\">\n\t<td class=\"column-1\">6<\/td><td class=\"column-2\">wei\u00dfer Hintergrund, schwarze, vertikale Linien (bit Position 6)<\/td>\n<\/tr>\n<tr class=\"row-9\">\n\t<td class=\"column-1\">7<\/td><td class=\"column-2\">wei\u00dfer Hintergrund, schwarze, vertikale Linien (bit Position 7)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- #tablepress-1 from cache -->\n\n\n\n<p>Wenn das Bit das durch die Streifen dargestellt wird, nicht geschrieben werden kann, wird ein komplett schwarzer oder wei\u00dfer Bildschirm erwartet. Wenn das passende Muster f\u00fcr das Bit sichtbar ist, bedeutet das, das das Datenbit geschrieben aber nicht mehr gelesen werden konnte. Beachte, das bei mehreren Data Line Fehlern mehr Muster sichtbar sein k\u00f6nnen, die das Entschl\u00fcsseln der Bedeutung der Muster erschweren k\u00f6nnte.<\/p>\n\n\n\n<p>Wenn die unteren 16K funktionieren, kann das Display benutzt werden und damit kann eine Liste der 16K RAM B\u00e4nke die getestet werden angezeigt werden. Wenn eine Bank getestet wurde, wird der Erfolg angezeigt. Die acht 16K RAM B\u00e4nke werden ebenfalls durch die Nummern 0 bis 7 dargestellt und diese zeigen die Durchf\u00fchrung an und stellen den Erfolg jeder Bank dar. Ein gr\u00fcner Hintergrund einer Nummer zeigt an das das Paging der Bank funktioniert, ein roter Hintergrund zeigt einen Fehler an. Wenn eine Bank erfolgreich gepaged werden kann aber die Bank selbst fehlerhaft ist, wird die Nummer in roter Schrift auf gr\u00fcnem Hintergrund angezeigt.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><a href=\"https:\/\/www.jungsi.de\/blog\/wp-content\/uploads\/2013\/10\/S128_RAM_Tester.gif\"><img loading=\"lazy\" decoding=\"async\" width=\"320\" height=\"240\" data-attachment-id=\"4468\" data-permalink=\"https:\/\/www.jungsi.de\/en\/retro-sinclair-zx-spectrum-zxc3-teil-6\/s128_ram_tester\/\" data-orig-file=\"https:\/\/www.jungsi.de\/blog\/wp-content\/uploads\/2013\/10\/S128_RAM_Tester.gif\" data-orig-size=\"320,240\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"S128_RAM_Tester\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/www.jungsi.de\/blog\/wp-content\/uploads\/2013\/10\/S128_RAM_Tester.gif\" src=\"https:\/\/www.jungsi.de\/blog\/wp-content\/uploads\/2013\/10\/S128_RAM_Tester.gif\" alt=\"S128_RAM_Tester\" class=\"wp-image-4468\" srcset=\"https:\/\/www.jungsi.de\/blog\/wp-content\/uploads\/2013\/10\/S128_RAM_Tester.gif 320w, https:\/\/www.jungsi.de\/blog\/wp-content\/uploads\/2013\/10\/S128_RAM_Tester-300x225.gif 300w\" sizes=\"auto, (max-width: 320px) 100vw, 320px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p><\/p>\n\n\n\n<p>Die oberen 32K des RAM in der Speichermap wird dann getestet die Ergebnisse am Bildschirm dargestellt. Es folgen Tests des Paging-Mechanismus des Spectrum 128 durch den Versuch jede der 16K B\u00e4nke in die Speichermap zu pagen. Wenn alles diese Tests scheitern stellt die Cartridge die Frage ob wohl nur ein 16K oder ein 48K Spectrum getestet wird. Wenn eine der B\u00e4nke erfolgreich gepaged wurde, f\u00e4hrt die Cartridge mit dem Test der Speicherpl\u00e4tze innerhalb dieser B\u00e4nke fort. Wenn irgendein Fehler gefunden wurde, versucht die Cartridge herauszufinden ob der Fehler durch fehlenden Speicher entstanden ist oder durch eine fehlerhafte Address- oder Data Line. Obwohl in der Theorie ein Speicherfehler mehrere Gr\u00fcnde haben kann, best\u00e4tigt die Cartridge nur den ersten, den sie gefunden hat.<\/p>\n\n\n\n<p>Beispiele:<\/p>\n\n\n\n\n<table id=\"tablepress-8\" class=\"tablepress tablepress-id-8 tbody-has-connected-cells\">\n<tbody>\n<tr class=\"row-1\">\n\t<td class=\"column-1\"><a href=\"http:\/\/www.jungsi.de\/blog\/wp-content\/uploads\/2013\/10\/S128_RAM_Tester_Error1.gif\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.jungsi.de\/blog\/wp-content\/uploads\/2013\/10\/S128_RAM_Tester_Error1-300x225.gif\" alt=\"\" width=\"300\" height=\"225\" class=\"aligncenter size-medium wp-image-4472\" srcset=\"https:\/\/www.jungsi.de\/blog\/wp-content\/uploads\/2013\/10\/S128_RAM_Tester_Error1-300x225.gif 300w, https:\/\/www.jungsi.de\/blog\/wp-content\/uploads\/2013\/10\/S128_RAM_Tester_Error1.gif 320w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/td><td class=\"column-2\"><a href=\"http:\/\/www.jungsi.de\/blog\/wp-content\/uploads\/2013\/10\/S128_RAM_Tester_Error2.gif\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.jungsi.de\/blog\/wp-content\/uploads\/2013\/10\/S128_RAM_Tester_Error2-300x225.gif\" alt=\"\" width=\"300\" height=\"225\" class=\"aligncenter size-medium wp-image-4474\" srcset=\"https:\/\/www.jungsi.de\/blog\/wp-content\/uploads\/2013\/10\/S128_RAM_Tester_Error2-300x225.gif 300w, https:\/\/www.jungsi.de\/blog\/wp-content\/uploads\/2013\/10\/S128_RAM_Tester_Error2.gif 320w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/td>\n<\/tr>\n<tr class=\"row-2\">\n\t<td colspan=\"2\" class=\"column-1\"><a href=\"http:\/\/www.jungsi.de\/blog\/wp-content\/uploads\/2013\/10\/S128_RAM_Tester_Error3.gif\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.jungsi.de\/blog\/wp-content\/uploads\/2013\/10\/S128_RAM_Tester_Error3-300x225.gif\" alt=\"\" width=\"300\" height=\"225\" class=\"aligncenter size-medium wp-image-4473\" srcset=\"https:\/\/www.jungsi.de\/blog\/wp-content\/uploads\/2013\/10\/S128_RAM_Tester_Error3-300x225.gif 300w, https:\/\/www.jungsi.de\/blog\/wp-content\/uploads\/2013\/10\/S128_RAM_Tester_Error3.gif 320w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- #tablepress-8 from cache -->\n\n\n\n<p>Das RAM des Spectrum 128 wird durch sechzehn 4164 RAM ICs generiert. Das sind 1 x64Kb dynamische RAM Chips und habe die IC Bezeichnungen IC6 &#8211; IC13 und IC15 &#8211; IC22. Die RAM B\u00e4nke 1,3,5 und 7 (das &#8222;umstrittene&#8220; RAM) wird durch IC6 &#8211; IC13 erzeugt, wobei die RAM B\u00e4nke 0, 2, 4 und 6 (das unumstrittene RAM) durch IC15 &#8211; IC22 erzeugt werden. [Beachte das das Spectrum 128 Service-Handbuch f\u00e4lschlicherweise behauptet das die B\u00e4nke 4-7 das umstritten RAM bilden und die B\u00e4nke 0-3 das unumstrittene RAM}. Jeder RAM IC speichert ein spezielles Datenbit f\u00fcr das zugeh\u00f6rige RAM. Beispiel: IC6 speichert die Data Line D0 f\u00fcr alle Adressen innerhalb der RAM B\u00e4nke 1, 3, und 7. Daher ist es einfach wenn die RAM Tester Cartridge einen Dataline Fehler findet, diesen direkt einem RAM Chip innerhalb des Spectrum 128 zuzuordnen, wie diese Tabelle zeigt:<\/p>\n\n\n\n\n<table id=\"tablepress-9\" class=\"tablepress tablepress-id-9 tbody-has-connected-cells\">\n<tbody class=\"row-striping row-hover\">\n<tr class=\"row-1\">\n\t<td class=\"column-1\"><strong>Data Line<\/strong><\/td><td class=\"column-2\"><strong>RAM Chip<\/strong><\/td><td class=\"column-3\"><\/td><td class=\"column-4\"><strong>Data Line<\/strong><\/td><td class=\"column-5\"><strong>RAM Chip<\/strong><\/td>\n<\/tr>\n<tr class=\"row-2\">\n\t<td class=\"column-1\">0<\/td><td class=\"column-2\">IC6<\/td><td class=\"column-3\"><\/td><td class=\"column-4\">0<\/td><td class=\"column-5\">IC15<\/td>\n<\/tr>\n<tr class=\"row-3\">\n\t<td class=\"column-1\">1<\/td><td class=\"column-2\">IC7<\/td><td class=\"column-3\"><\/td><td class=\"column-4\">1<\/td><td class=\"column-5\">IC16<\/td>\n<\/tr>\n<tr class=\"row-4\">\n\t<td class=\"column-1\">2<\/td><td class=\"column-2\">IC8<\/td><td class=\"column-3\"><\/td><td class=\"column-4\">2<\/td><td class=\"column-5\">IC17<\/td>\n<\/tr>\n<tr class=\"row-5\">\n\t<td class=\"column-1\">3<\/td><td class=\"column-2\">IC9<\/td><td class=\"column-3\"><\/td><td class=\"column-4\">3<\/td><td class=\"column-5\">IC18<\/td>\n<\/tr>\n<tr class=\"row-6\">\n\t<td class=\"column-1\">4<\/td><td class=\"column-2\">IC10<\/td><td class=\"column-3\"><\/td><td class=\"column-4\">4<\/td><td class=\"column-5\">IC19<\/td>\n<\/tr>\n<tr class=\"row-7\">\n\t<td class=\"column-1\">5<\/td><td class=\"column-2\">IC11<\/td><td class=\"column-3\"><\/td><td class=\"column-4\">5<\/td><td class=\"column-5\">IC20<\/td>\n<\/tr>\n<tr class=\"row-8\">\n\t<td class=\"column-1\">6<\/td><td class=\"column-2\">IC12<\/td><td class=\"column-3\"><\/td><td class=\"column-4\">6<\/td><td class=\"column-5\">IC21<\/td>\n<\/tr>\n<tr class=\"row-9\">\n\t<td class=\"column-1\">7<\/td><td class=\"column-2\">IC13<\/td><td class=\"column-3\"><\/td><td class=\"column-4\">7<\/td><td class=\"column-5\">IC22<\/td>\n<\/tr>\n<tr class=\"row-10\">\n\t<td colspan=\"2\" class=\"column-1\">Spectrum 128\/+2<br \/>\nContended RAM<br \/>\n(Banks 1, 3, 5, 7)<\/td><td class=\"column-3\"><\/td><td colspan=\"2\" class=\"column-4\">Spectrum 128\/+2<br \/>\nUncontended RAM<br \/>\n(Banks 0, 2, 4, 6)<br \/>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- #tablepress-9 from cache -->\n\n\n\n<p>Das RAM des 48K Spectrum wird durch acht 4116 RAM ICs f\u00fcr die unteren 16K (umstrittenes RAM) und acht 4532 RAM ICs f\u00fcr die oberen 32K (unumstrittenes RAM) generiert. Das 4116 RAM sind 8 x 16Kb dynamische RAM Chips und haben die IC Bezeichnungen IC6-IC13. Das 4532 RAM sind 8 x 32Kb dynamische RAM Chips und haben die IC Bezeichnungen IC15 &#8211; IC22. Jeder RAM IC speichert ein spezielles Datenbit f\u00fcr das zugeh\u00f6rige RAM. Zum Beispiel speicher IC6 die Dataline D0 f\u00fcr alle Addressen innerhalb der unteren 16K. Daher ist es einfach wenn die RAM Tester Cartridge einen 16K oder 48K Spectrum mit einem Dataline Fehler identifiziert diese direkt einem RAM Chip innerhalb des Spectrum zuzuordnen, wie die folgende Tabelle zeigt:<\/p>\n\n\n\n\n<table id=\"tablepress-10\" class=\"tablepress tablepress-id-10 tbody-has-connected-cells\">\n<tbody class=\"row-striping row-hover\">\n<tr class=\"row-1\">\n\t<td class=\"column-1\"><strong>Data Line<\/strong><\/td><td class=\"column-2\"><strong>RAM Chip<\/strong><\/td><td class=\"column-3\"><\/td><td class=\"column-4\"><strong>Data Line<\/strong><\/td><td class=\"column-5\"><strong>RAM Chip<\/strong><\/td>\n<\/tr>\n<tr class=\"row-2\">\n\t<td class=\"column-1\">0<\/td><td class=\"column-2\">IC6<\/td><td class=\"column-3\"><\/td><td class=\"column-4\">0<\/td><td class=\"column-5\">IC15<\/td>\n<\/tr>\n<tr class=\"row-3\">\n\t<td class=\"column-1\">1<\/td><td class=\"column-2\">IC7<\/td><td class=\"column-3\"><\/td><td class=\"column-4\">1<\/td><td class=\"column-5\">IC16<\/td>\n<\/tr>\n<tr class=\"row-4\">\n\t<td class=\"column-1\">2<\/td><td class=\"column-2\">IC8<\/td><td class=\"column-3\"><\/td><td class=\"column-4\">2<\/td><td class=\"column-5\">IC17<\/td>\n<\/tr>\n<tr class=\"row-5\">\n\t<td class=\"column-1\">3<\/td><td class=\"column-2\">IC9<\/td><td class=\"column-3\"><\/td><td class=\"column-4\">3<\/td><td class=\"column-5\">IC18<\/td>\n<\/tr>\n<tr class=\"row-6\">\n\t<td class=\"column-1\">4<\/td><td class=\"column-2\">IC10<\/td><td class=\"column-3\"><\/td><td class=\"column-4\">4<\/td><td class=\"column-5\">IC19<\/td>\n<\/tr>\n<tr class=\"row-7\">\n\t<td class=\"column-1\">5<\/td><td class=\"column-2\">IC11<\/td><td class=\"column-3\"><\/td><td class=\"column-4\">5<\/td><td class=\"column-5\">IC20<\/td>\n<\/tr>\n<tr class=\"row-8\">\n\t<td class=\"column-1\">6<\/td><td class=\"column-2\">IC12<\/td><td class=\"column-3\"><\/td><td class=\"column-4\">6<\/td><td class=\"column-5\">IC21<\/td>\n<\/tr>\n<tr class=\"row-9\">\n\t<td class=\"column-1\">7<\/td><td class=\"column-2\">IC13<\/td><td class=\"column-3\"><\/td><td class=\"column-4\">7<\/td><td class=\"column-5\">IC22<\/td>\n<\/tr>\n<tr class=\"row-10\">\n\t<td colspan=\"2\" class=\"column-1\">16K\/48K Spectrum<br \/>\nContended RAM<br \/>\n(Lower 16K)<\/td><td class=\"column-3\"><\/td><td colspan=\"2\" class=\"column-4\">16K\/48K Spectrum<br \/>\nUncontended RAM<br \/>\n(Upper 32K)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- #tablepress-10 from cache -->\n\n\n\n<p><strong> 2. ROM Tester<\/strong><\/p>\n\n\n\n<p>Diese 8K ROM Cartridge wurde f\u00fcr den Gebrauch mit dem Spectrum 16K, 48K, +, 128 und dem grauen Spectrum+2 entworfen. Es f\u00fchrt einen Test der ROMs im Rechner durch um festzustellen ob sie besch\u00e4digt sind. Es pr\u00fcft auch ob ein ZX Interface 1 angeschlossen ist und stellt die Version fest und ob es besch\u00e4digt ist.<\/p>\n\n\n\n<p>Die Cartridge stellt zuerst fest ob sie auf einem 16K, 48K oder 128K Rechner l\u00e4uft und stellt dadurch fest wie viele ROMs gepr\u00fcft werden m\u00fcssen. Es berechnet dann eine 16-bit P\u00fcrfsumme und eine exklusive 8-bit Pr\u00fcfsumme f\u00fcr jedes ROM und stellt diese in Hexadezimal dar. Danach vergleich es diese Pr\u00fcfsummen mit der bekannten Liste der Spectrum ROM Pr\u00fcfsummen und zeigt das identifizierte Modell an. Die bekannten ROMs sind:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>UK Spectrum ROM (16K\/48K\/+)<\/li>\n\n\n\n<li>UK Spectrum 128 ROM 0<\/li>\n\n\n\n<li>UK Spectrum 128 ROM 1<\/li>\n\n\n\n<li>UK Spectrum +2 ROM 0<\/li>\n\n\n\n<li>UK Spectrum +2 ROM 1<\/li>\n\n\n\n<li>Spanish Spectrum+ ROM<\/li>\n\n\n\n<li>Spanish Spectrum 128 ROM 0<\/li>\n\n\n\n<li>Spanish Spectrum 128 ROM 1<\/li>\n\n\n\n<li>Spanish Spectrum +2 ROM 0<\/li>\n\n\n\n<li>Spanish Spectrum +2 ROM 1<\/li>\n\n\n\n<li>French Spectrum +2 ROM 0<\/li>\n\n\n\n<li>Scandinavian Spectrum ROM (16K\/48K)<\/li>\n\n\n\n<li>Timex TC2048 ROM<\/li>\n<\/ul>\n\n\n\n<p>Bei anderen ROMs als die aufgelisteten muss die Pr\u00fcfsumme manuell verglichen werden. Die Pr\u00fcfsumme wird durch das Summieren aller Bytes des ROMs erzeugt.Die exklusive Pr\u00fcfsumme wird erzeigt indem man die XOR&#8217;s aller Bytes des ROMs addiert. Die Cartridge pr\u00fcft dann ob das Interface 1 angeschlossen ist. Dies macht es indem es versucht den Paging Mechanismus des Interface 1 &#8222;aufzuwecken&#8220; durch das Ausf\u00fchren eines Befehls der innerhalb der ROM Cartridge bei $0008 liegt. Wenn ein Interface 1 angeschlossen ist, wird versucht dessen ROM einzubinden auch wenn die ROM Cartridge den Speicher \u00fcberschreiben wird. Die ROM Cartridge startet dann eine Routine die ins RAM kopiert wird, die die ROM Cartridge entfernt, dann eine Pr\u00fcfsumme der ersten 8K des Speicherbereichs berechnet und dann die ROM Cartridge wieder einbindet. Das Interface 1 ROM wird dann wieder entfernt durch das Ausf\u00fchren eines Befehls der innerhalb der ROM Cartridge bei $0700 liegt.<\/p>\n\n\n\n\n<table id=\"tablepress-4\" class=\"tablepress tablepress-id-4\">\n<tbody>\n<tr class=\"row-1\">\n\t<td class=\"column-1\"><a href=\"http:\/\/www.jungsi.de\/blog\/wp-content\/uploads\/2013\/10\/ROM_Tester_48K.gif\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.jungsi.de\/blog\/wp-content\/uploads\/2013\/10\/ROM_Tester_48K.gif\" alt=\"\" width=\"320\" height=\"240\" class=\"alignleft size-full wp-image-4418\" srcset=\"https:\/\/www.jungsi.de\/blog\/wp-content\/uploads\/2013\/10\/ROM_Tester_48K.gif 320w, https:\/\/www.jungsi.de\/blog\/wp-content\/uploads\/2013\/10\/ROM_Tester_48K-300x225.gif 300w\" sizes=\"auto, (max-width: 320px) 100vw, 320px\" \/><\/a><\/td><td class=\"column-2\"><a href=\"http:\/\/www.jungsi.de\/blog\/wp-content\/uploads\/2013\/10\/ROM_Tester_128K.gif\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.jungsi.de\/blog\/wp-content\/uploads\/2013\/10\/ROM_Tester_128K.gif\" alt=\"\" width=\"320\" height=\"240\" class=\"alignleft size-full wp-image-4417\" srcset=\"https:\/\/www.jungsi.de\/blog\/wp-content\/uploads\/2013\/10\/ROM_Tester_128K.gif 320w, https:\/\/www.jungsi.de\/blog\/wp-content\/uploads\/2013\/10\/ROM_Tester_128K-300x225.gif 300w\" sizes=\"auto, (max-width: 320px) 100vw, 320px\" \/><\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- #tablepress-4 from cache -->\n\n\n\n<p>Es wurden zwei Editionen des Interface 1 ROMs ver\u00f6ffentlicht, die beide von der ROM Cartridge identifiziert werden k\u00f6nnen. Das Edition 2 ROM wurde im Interface 1 verwendet deren Seriennummer gr\u00f6\u00dfer als 87315 war. \u00dcber eine dritte Edition des ROMs gab es Spekulationen, wurde aber nie ver\u00f6ffentlicht. Daher kann es sein, falls die ROM Cartridge die Edition des Interface 1 ROM nicht identifizieren kann (auch wenn in BASIC alle Funktionen des ROM ordentlich funktionieren) das es mit der dritten Edition des ROMs ausgestattet ist.<\/p>\n\n\n\n<p>Die Downloads der beiden Cartridges sind wie immer auf der Homepage von Paul Farrow zu finden:<\/p>\n\n\n\n<p><a href=\"http:\/\/www.fruitcake.plus.com\/Sinclair\/Interface2\/Cartridges\/Interface2_RC_New_RAM_Tester.htm\">128 RAM Test<\/a><br><a href=\"http:\/\/www.fruitcake.plus.com\/Sinclair\/Interface2\/Cartridges\/Interface2_RC_New_ROM_Tester.htm\">ROM Tester<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/www.jungsi.de\/en\/retro-sinclair-zx-spectrum-zxc3-teil-1\/\">ZXC3 &#8211; Teil 1: Allgemeines zum ZXC3<\/a><br><a href=\"https:\/\/www.jungsi.de\/en\/retro-sinclair-zx-spectrum-zxc3-teil-2\/\">ZXC3 &#8211; Teil 2: Cartridge Programmer Utility\/Flash Programmer<\/a><br><a href=\"https:\/\/www.jungsi.de\/en\/retro-sinclair-zx-spectrum-zxc3-teil-3\/\">ZXC3 &#8211; Teil 3: ZX80\/ZX81 Emulatoren<\/a><br><a href=\"https:\/\/www.jungsi.de\/en\/retro-sinclair-zx-spectrum-zxc3-teil-4\/\">ZXC3 &#8211; Teil 4: Spectrum 128 Emulator<\/a><br><a href=\"https:\/\/www.jungsi.de\/en\/retro-sinclair-zx-spectrum-zxc3-teil-5\/\">ZXC3 &#8211; Teil 5: Microdrive Emulator\/Microdrive Kopierer<\/a><br>ZXC3 &#8211; Teil 6: Testprogramme<\/p>","protected":false},"excerpt":{"rendered":"<p>Heute kommen wir zum vorerst letzten Teil der Artikelreihe rund um das ZXC3 Modul. Schon lange hat mich keine &#8222;Erweiterung&#8220; mehr so besch\u00e4ftigt wie diese \u2026<\/p>","protected":false},"author":2,"featured_media":3675,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_lmt_disableupdate":"","_lmt_disable":"","ngg_post_thumbnail":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"_links_to":"","_links_to_target":""},"categories":[102],"tags":[4737,4738],"class_list":["post-4394","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-zx-spectrum","tag-hardware","tag-how-to"],"modified_by":"Jungsi","jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/www.jungsi.de\/blog\/wp-content\/uploads\/2013\/06\/ZXC3-vorne-oben-Vorderseite.jpg","jetpack_shortlink":"https:\/\/wp.me\/p4eXvk-18S","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":3825,"url":"https:\/\/www.jungsi.de\/en\/retro-sinclair-zx-spectrum-zxc3-teil-4\/","url_meta":{"origin":4394,"position":0},"title":"Retro: Sinclair ZX Spectrum &#8211; ZXC3 &#8211; Teil 4","author":"Jungsi","date":"26. October 2013","format":false,"excerpt":"Ein weiterer Teil in der Artikelreihe zu dem wunderbaren ZXC3 Cartridge. Diese Mal geht es um den Spectrum 128 Emulator. Die Cartridge ist in erster Linie f\u00fcr den 48K Spectrum und den Spectrum+ gedacht und versorgt diese mit der neuen Softwarefunktionalit\u00e4t des ZX Spectrum 128. Es gibt zwei Versionen des\u2026","rel":"","context":"In &quot;Retro&quot;","block_context":{"text":"Retro","link":"https:\/\/www.jungsi.de\/en\/category\/retro\/"},"img":{"alt_text":"ZXC3","src":"https:\/\/i0.wp.com\/www.jungsi.de\/blog\/wp-content\/uploads\/2013\/06\/ZXC3-vorne-oben-mini.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":3585,"url":"https:\/\/www.jungsi.de\/en\/retro-sinclair-zx-spectrum-zxc3-teil-1\/","url_meta":{"origin":4394,"position":1},"title":"Retro: Sinclair ZX Spectrum &#8211; ZXC3 &#8211; Teil 1","author":"Jungsi","date":"29. August 2013","format":false,"excerpt":"Diese Reihe dreht sich rund um das ZXC3 Modul f\u00fcr den Sinclair ZX Spectrum. Im ersten Teil geht es erst Mal um die trockene Theorie :-) Was ist das ZXC3? Das ZXC3 ist ein Modul das mit einem 128K Flash Eprom ausgestattet ist und kompatibel zum Sinclair Interface 2 ist.\u2026","rel":"","context":"In &quot;Retro&quot;","block_context":{"text":"Retro","link":"https:\/\/www.jungsi.de\/en\/category\/retro\/"},"img":{"alt_text":"ZXC3","src":"https:\/\/i0.wp.com\/www.jungsi.de\/blog\/wp-content\/uploads\/2013\/06\/ZXC3-vorne-oben-Vorderseite.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":3824,"url":"https:\/\/www.jungsi.de\/en\/retro-sinclair-zx-spectrum-zxc3-teil-3\/","url_meta":{"origin":4394,"position":2},"title":"Retro: Sinclair ZX Spectrum &#8211; ZXC3 &#8211; Teil 3","author":"Jungsi","date":"13. October 2013","format":false,"excerpt":"Weiter gehts im n\u00e4chsten Teil rund um das ZXC3 Modul f\u00fcr den Sinclair Spectrum. Diese Mal dreht alles um die ZX81 und ZX80 Emulatoren. Am Besten funktionieren die Emulatoren auf einem Spectrum 128K. Sie w\u00fcrden auch auf dem 48K Spectrum funktionieren, allerdings ist hier zus\u00e4tzliche Hardware n\u00f6tig, auf die ich\u2026","rel":"","context":"In &quot;Retro&quot;","block_context":{"text":"Retro","link":"https:\/\/www.jungsi.de\/en\/category\/retro\/"},"img":{"alt_text":"ZXC3","src":"https:\/\/i0.wp.com\/www.jungsi.de\/blog\/wp-content\/uploads\/2013\/06\/ZXC3-vorne-oben-mini.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":3715,"url":"https:\/\/www.jungsi.de\/en\/retro-sinclair-zx-spectrum-zxc3-teil-2\/","url_meta":{"origin":4394,"position":3},"title":"Retro: Sinclair ZX Spectrum &#8211; ZXC3 &#8211; Teil 2","author":"Jungsi","date":"16. September 2013","format":false,"excerpt":"Nun zum zweiten Teil rund um das ZXC3 von Paul Farrow. Diese Mal beschreibe ich die Erstellung von Cartridges und die \u00dcbertragung zum Spectrum. Auf der Seite des PC wird das Tool \"Cartridge Creator Utility\" verwendet. Auf der Seite des Spectrum ben\u00f6tigt man das Flash Programmer Utility. Dies sollte eigentlich\u2026","rel":"","context":"In &quot;Retro&quot;","block_context":{"text":"Retro","link":"https:\/\/www.jungsi.de\/en\/category\/retro\/"},"img":{"alt_text":"Cartridge Creator Utility","src":"https:\/\/i0.wp.com\/www.jungsi.de\/blog\/wp-content\/uploads\/2013\/09\/ZXC3-Cartridge-Creator-Utility-kl.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.jungsi.de\/blog\/wp-content\/uploads\/2013\/09\/ZXC3-Cartridge-Creator-Utility-kl.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.jungsi.de\/blog\/wp-content\/uploads\/2013\/09\/ZXC3-Cartridge-Creator-Utility-kl.jpg?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":5435,"url":"https:\/\/www.jungsi.de\/en\/spectra-sinclair-zx-spectrum\/","url_meta":{"origin":4394,"position":4},"title":"SPECTRA [Sinclair ZX Spectrum]","author":"Jungsi","date":"20. June 2014","format":false,"excerpt":"Wer meinen Blog schon l\u00e4nger verfolgt, dem wird evt. noch die Erw\u00e4hnung des SPECTRA Interfaces, w\u00e4hrend meiner Artikelreihe zum ZXC3 in Erinnerung sein. F\u00fcr alle, denen das SPECTRA noch kein Begriff ist, erl\u00e4utere ich das ganze nochmal. Dieses Interface ist haupts\u00e4chlich daf\u00fcr gedacht einen Sinclair ZX Spectrum 16K\/48K per Standard-Scartkabel\u2026","rel":"","context":"In &quot;Retro&quot;","block_context":{"text":"Retro","link":"https:\/\/www.jungsi.de\/en\/category\/retro\/"},"img":{"alt_text":"SPECTRA Interface mit Handbuch","src":"https:\/\/i0.wp.com\/www.jungsi.de\/blog\/wp-content\/uploads\/2014\/03\/SPECTRA-Interface-mit-Handbuch.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":3826,"url":"https:\/\/www.jungsi.de\/en\/retro-sinclair-zx-spectrum-zxc3-teil-5\/","url_meta":{"origin":4394,"position":5},"title":"ZXC3 &#8211; Teil 5","author":"Jungsi","date":"1. December 2013","format":false,"excerpt":"Weiter geht es mit den Artikeln zum Multitalent ZXC3. Diese Mal dreht sich alles um die bekannten (und manchmal gehassten) Microdrives! Von dem Microdrive Emulator gibt es zwei verschiedene Versionen. Einmal zur Verwendung mit dem ZX Interface 2 und einmal zur Verwendung mit dem Spectra Interface von Paul Farrow. Beide\u2026","rel":"","context":"In &quot;Sinclair ZX Spectrum&quot;","block_context":{"text":"Sinclair ZX Spectrum","link":"https:\/\/www.jungsi.de\/en\/category\/retro\/sinclair\/zx-spectrum\/"},"img":{"alt_text":"ZXC3","src":"https:\/\/i0.wp.com\/www.jungsi.de\/blog\/wp-content\/uploads\/2013\/06\/ZXC3-vorne-oben-Vorderseite.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]}],"_links":{"self":[{"href":"https:\/\/www.jungsi.de\/en\/wp-json\/wp\/v2\/posts\/4394","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jungsi.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jungsi.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jungsi.de\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jungsi.de\/en\/wp-json\/wp\/v2\/comments?post=4394"}],"version-history":[{"count":1,"href":"https:\/\/www.jungsi.de\/en\/wp-json\/wp\/v2\/posts\/4394\/revisions"}],"predecessor-version":[{"id":40982,"href":"https:\/\/www.jungsi.de\/en\/wp-json\/wp\/v2\/posts\/4394\/revisions\/40982"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.jungsi.de\/en\/wp-json\/wp\/v2\/media\/3675"}],"wp:attachment":[{"href":"https:\/\/www.jungsi.de\/en\/wp-json\/wp\/v2\/media?parent=4394"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jungsi.de\/en\/wp-json\/wp\/v2\/categories?post=4394"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jungsi.de\/en\/wp-json\/wp\/v2\/tags?post=4394"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}