TheC64: Die Auslieferung beginnt

In den 1980er Jahren war er der Renner: Der Commodore 64. Er wurde auf der CES 1982 vorgestellt und Commodore knackt mit ihm den Jackpot. In nur zwei Jahren nach Markteinführung, bricht Commodore alle Rekorde mit 4 Mio. verkauften Rechner weltweit und sogar bis heute ist der C64 der bestverkaufte Heimcomputer mit über 17 Millionen Geräten. Selbst heute noch gibt es zahlreiche Entwicklungen rund um den C64 und im voll im Retro sind derzeit Neuauflagen im Mini-Format, wie das NES Mini, SNES Mini und VCS Mini.

Am 29. März 2018 erschien eine weitere (Mini-)Neuauflage unter dem Namen TheC64 mini. Entstanden war der Mini aus einer fehlgeschlagenen indiegogo Kampagne. Trotz verfehltem Finanzierungsziel veröffentlicht nun der Entwickler Retro Games – wenn auch etwas verspätet – zusammen mit dem Distributor Koch Media die kleine Konsole.

Weiter >

Speichertester für DRAM Chips für Arduino Mega 2560 (Rev. 4)

Vor drei Monaten stellte ich die Rev. 3 meines Speichertesters für DRAMs vor. Diese benötigte noch ein externes Netzteils um die drei Versorgungsspannungen +12V, +5V und -5V für die 4116 Chips zu erzeugen.

Die Rev. 4 erzeugt die benötigten Versorgungsspannungen nun selbst aus einer Eingangsspannung von ca. 5-12V. Hierzu werden aus der Eingangsspannung zunächst ungefähr 16V und -16V erzeugt, die dann mit Linarreglern auf +12V, +5V und -5V reduziert werden.

Eine weitere Revision ist bereits in Entwicklung: Diese soll komplett auf den Arduino Mega 2560 verzichten, die gesamte Elektronik auf einer Platine haben und zudem SRAMs und DRAMs gleichermaßen testen können (es entfallen also die zwei separaten Platinen für SRAMs und DRAMs).

Es gibt allerdings einen Haken: Das TQFP-100A Gehäuse ist nicht leicht von Hand zu löten.

ATmega328P Development Board

Für kleinere Basteleien habe ich ein eigenes günstiges ATmega328P Board entwickelt. Es werden nur wenige Komponenten benötigt, so dass das Board nur ein paar Euro kostet. Die Pin-Leisten sind zwar kompatibel zum Arduino Uno, da aber kein USB-auf-Seriell Chip verwendet wird, muss der ATmega per ISP programmiert werden. Es gibt hierzu etliche günstige Programmierer zu kaufen (z.B. diesen hier bei Amazon), die von der Arduino IDE unterstützt werden (anstelle von „Hochladen“ wird „Hochladen mir Programmer“ verwendet).

Wer Interesse an dem Board hat, findet hier die Gerber-Dateien.

Z80 CPU Tester als Arduino-Shield

Vor ein paar Wochen stolperte ich über Goran Devics Website. Goran beschriebt dort eine Möglichkeit mit einem Arduino eine Z80 CPU zu steuern. Die Idee fand ich so interessant, dass ich ein Arduino-Shield für den Mega 2560 entwarf, seine Software entsprechend anpasste und um einige Funktionen erweiterte, z.B. kann die Länge des Taktzyklus eingestellt werden und vorgegebene Testprogramme können geladen werden. Damit auch ein Betrieb ohne serielle Konsole möglich ist, kann zusätzlich ein LCD Display angeschlossen werden.

Das folgende Video zeigt, wie die CPU ein kleines Programm schrittweise abarbeitet (200msec pro Taktzyklus).

Z80 CPU Tester

Das Display wird aktuell noch nicht verwendet. Anstelle eines teuren ZIF-Sockels kann auch ein Präzisionssockel verwendet werden. Die Bauteilkosten liegen jeweils bei ca. 5-6 EUR zzgl. Platine. Sofern ich noch Platinen übrig habe, gebe ich die gerne zum Selbstkostenpreis ab. Über eine Rückmeldung würde ich mich sehr freuen. Auch Verbesserungsvorschläge sind sehr willkommen.

Wer den Z80 CPU Tester nachbauen möchte findet hier die Gerber-Daten und den Quellcode zum Download.

Z80 / 6502 CPU NOP-Generator zum Selberbauen

Oft steht man vor dem Problem schnell die CPU eines nicht funktionierenden Computers testen zu wollen. Zwar kann man diese auch in einen anderen Computer einbauen und so prüfen, ob dieser mit der CPU startet, aber bequem ist anders.

Z80 NOP Generator

Mit einem NOP-Generator ist es möglich schnell optisch zu prüfen, ob eine CPU generell noch in der Lage ist Kommandos auszuführen. Der Generator liefert der CPU bei jedem Speicherzugriff ein NOP („No Operation“) Kommando, d.h. im Idealfall zählt die CPU einfach die Adressen hoch. Durch LEDs wird dabei der Zustand der Adressleitungen visualisiert. Zählen die Adressen binär hoch, was gut an den LEDs zu verfolgen ist, ist die CPU mit hoher Wahrscheinlichkeit in Ordnung. Leuchten nach einem Reset einige LEDs dauerhaft (oder auch gar nicht), ist die CPU sehr wahrscheinlich defekt.

Das folgende Video zeigt, wie der Test für eine funktionsfähige CPU aussieht.

Z80 CPU NOP-Generator

Der hier vorgestellte NOP-Generator funktioniert nur mit Z80 CPUs. Da die CPU sehr langsam getaktet wird, weit außerhalb der Spezifikation, ist es durchaus möglich, dass auch eine eigentlich funktionsfähige CPU nicht mit dem NOP-Generator funktioniert. Die Funktionsweise ist sehr einfach: Die Datenleitungen werden durch Pull-Down-Widerstände auf Masse gezogen, so dass die CPU bei einem lesenden Speicherzugriff ein NOP (Opcode 0x00) liest. Nach einem Reset fängt die CPU an diese Kommandos ab Adresse 0 auszuführen.

Wer den Z80 CPU NOP-Generator nachbauen möchte findet hier die Gerber-Daten und den Quellcode zum Download.

6502 NOP Generator

Eine ähnliche Platine habe ich auch für die 6502 CPU vorbereitet. Der 6502 NOP Generator liefert den Opcode 0xEA, welches einem NOP beim 6502 entspricht. Nach einem Reset beginnt der 6502 NOP-Generator ab Adresse 0xEAEA zu zählen (nach einem Reset liest die CPU aus den Adressen 0xFFFC-0xFFFD die reale Startadresse ab und da diese immer 0xEA liest, ist dieses die 0xEAEA). Die LEDs sollten somit bei 11101010‬ beginnen zu zählen.

Das folgende Video zeigt, wie der Test für eine funktionsfähige CPU aussieht. Sehr schön zu sehen ist, wie nach dem Reset zuerst auf die Adressen 0xFFFC und 0xFFFD zugegriffen wird (davor noch ein wenig Initialisierung der CPU), um danach ab 0xEAEA zu zählen (LEDs: FC, FD, E9, E7, EA, E9, FD, [FF]FC, [FF]FD, [EA]EA, EB, EC, ED, EE, EF, F0, F1…, in eckigen Klammern die oberen 8 Bits zum Verständnis ergänzt).

6502 CPU NOP-Generator

Anstelle eines teuren ZIF-Sockels kann auch ein Präzisionssockel verwendet werden. Die Bauteilkosten liegen jeweils bei ca. 5-6 EUR zzgl. Platine. Sofern ich noch Platinen übrig habe, gebe ich die gerne zum Selbstkostenpreis ab. Über eine Rückmeldung würde ich mich sehr freuen. Auch Verbesserungsvorschläge sind sehr willkommen.

Wer den 6502 CPU NOP-Generator nachbauen möchte findet hier die Gerber-Daten und den Quellcode zum Download.

Memory Tester for DRAM Chips with Arduino Mega 2560 (EN)

After my memory tester for SRAMs worked as intended, I went on with my second Arduino shield for testing DRAMs. With this shield the following DRAMs can be tested:

4k x 1: 2104A, 4015, 4027, 7027
16k x 1: 4116, 2117, 6116, 8116, 416, 2116, 3716, U256
16k x 1: 2118
16k x 4: 4416, 2620
32k x 1: 3732H (4532-L4) und 3732L (4532-L3)
64k x 1: 4164, 2600, K565RU5, 8264, 3764
64k x 4: 4464, 41464, 50464
256k x 1: 41256, 53256, 81256, MT1259 883C
256k x 4: 44256, 514256
1024k x 1: 41024, 411000

Theoretically, all other DRAMs that have an identical pin assignments should also be able to be tested. The following video shows how the tester works with a faulty 4116.

Failed memory test of a 4116

To test 4116 chips, the shield has a pin header for the voltages + 5V, + 12V and -5V. In the video, a converted ATX power supply is used, which supplies these voltages stable.

Speichertester für DRAM Chips für Arduino Mega 2560

Nachdem mein Speichertester für SRAMs wie gewünscht funktioniert, ging es an mein zweites Arduino Shield zum Testen von DRAMs. Mit dem können die folgenden DRAMs getestet werden:

4k x 1: 2104A, 4015, 4027, 7027
16k x 1: 4116, 2117, 6116, 8116, 416, 2116, 3716, U256
16k x 1: 2118
16k x 4: 4416, 2620
32k x 1: 3732H (4532-L4) und 3732L (4532-L3)
64k x 1: 4164, 2600, K565RU5, 8264, 3764
64k x 4: 4464, 41464, 50464
256k x 1: 41256, 53256, 81256, MT1259 883C
256k x 4: 44256, 514256
1024k x 1: 41024, 411000

Theoretisch sollten auch alle anderen DRAMs getestet werden können, die eine identische Pinbelegung besitzen. Das folgende Video zeigt die Funktionsweise des Testers mit einem fehlerhaften 4116.

Fehlgeschlagener Speichertest eines 4116

Damit auch 4116 Chips getestet werden können, besitzt das Shield eine Pfostenleiste für die Versorgungsspannungen +5V, +12V und -5V. In dem Video kommt ein umgebautes ATX-Netzteil zum Einsatz, welches diese Versorgungsspannungen stabil liefert.

Memory Tester for SRAM Chips with Arduino Mega 2560 (EN)

The revised version of my memory tester has been finished. The following SRAMs can be tested:

1k x 1: 2102
1k x 4: 2114, 2148, 2149, 5114, 6514, C214, U224
1k x 4: 6550
1k x 8: 4118, 4801
2k x 8: 2016, 4016, 4802, 4812, 6116, 6512
8k x 8: 2064, 2464, 6264, 2465
32k x 8: 20256, 61256, 62256, 71256

Theoretically, all other SRAMs that have an identical pin assignments should also be able to be tested. The following video shows how the tester works with a healthy 2102.

Successful memory test of a 2102

The following three videos show tests of 6550 chips. The first chip is healthy, the second returns the value „0000“ (= 0) for the test vector „0101“ (= 5) and the third chip returns the value „0001“ (= 1) for the test vector „0000“ (= 0) ).

Successful memory test of a 6550
Failed memory test of a 6550 (Bit permanently „0“)
Failed memory test of a 6550 (Bit permanently „1“)

As a bonus, a CRC32 can be displayed on the contents of type 2716, 2732, 2764, 27128, 27256 and 27512 EPROMs. This can be compared to an existing ROM image to see if the ROM content is identical.

Basically, the tester is already fully functional. I would like to make the power supply switchable, so that a chip can not be destroyed if it is inserted incorrectly. The board design is already done, but it will take some time before I will have the new version finished.

SRAM Tester rev.3

Update 30.8.2019:

The new version of the DRAM and SRAM tester is now ready. With the help of a MOSFET, the supply voltage is only switched on during the test. Thus, a chip with the wrong switch position may not be destroyed when inserting.