Seite 1 von 1

Retro-Projekt Poke-Karte V.3.0

Verfasst: 03.12.2018, 23:57
von Joachim
Sie war schon legendär, zur damaligen Zeit, die Poke-Karte. Entwickelt hat sie Gotthard S., als es erforderlich wurde, 4 Floppies per Programm zu aktivieren (Programme, Daten, Backup etc.).
Seine Idee war einfach aber genial: Mit dem Basic-Befehl Poke 8, Wert oder in MC z.B. ld hl,8 ld (hl),Wert wird die Adresse 8 auf den Adressbus gelegt. Dies erkennt eine Vergleichslogik und schaltet ein Latch frei. Dieses gibt den Wert, den es zu diesem Zeitpunkt vom Datenbus gelesen hat, aus und behält ihn. Auch bei New.

Anfangs waren es noch Logikbausteine für den Adressenvergleich. In der Version 2 wurde dann ein GAL daraus. Das hat den Vorteil, dass man auch eine andere Adresse als 8 wählen kann. Warum die Acht? Für das Layout war es leichter, es war nur eine Leitung (A3) zu beachten. Außerdem muss die Adresse größer als 5 sein, weil bekanntermaßen gewisse Routinen im ROM auf die Adressen unter 5 poken.
Hier der orignale Schaltplan. Eine der Dioden ist leider verkehrt herum gezeichnet.
pokekartealt.jpg
pokekartealt.jpg (79.1 KiB) 1702 mal betrachtet
Die Poke-Karte gibt am Ausgang des 74LS573 8 Bit aus. Damit kann man z.B. auf einem großen Speicherbaustein die oberen Adressleitungen verbinden und damit ein Bankswitching realisieren. Üblicherweise haben wir im Team aber damit die Freigabepins der EEPROMs bzw. RAMs bedient und konnten so Bänke ein- und ausschalten. Dazu war aber ein 4 zu 16-Adressdekoder 74LS154 erforderlich. Ohne diese Poke-Karte gäbe es zum Beispiel das Harddisk-Interface für den ZX81 nicht, denn damit werden die darauf befindlichen RAM-Bänke (mit Poke 8,13 ... 15) geschaltet. Nur so war es möglich, Platz für Directories und das Zwischenlager für Files und Programme zu haben. Sehr häufig wurde und wird die Poke-Karte für die Aufteilung eines EEPROMs mit Tools wie zum Beispiel ASDIS in 8KB-Bänke verwendet. Damit wurde sie auch zum Kernstück des ZX96 und seiner GIANT-RAM-Erweiterung.

Als Paul mitteilte, dass er eine Speicherkarte entwirft, war mir klar, dass ich diese pimpen werde. Dazu brauchte ich aber eine Poke-Karte. Als ich feststellte, dass diverse Logikbausteine nicht mehr oder nur sehr schwer beschaffbar waren, entschloss ich mich zur Verwendung eines GAL. Ich habe damit keine Probleme. Sie laufen bei mir bereits auf verschiedenen Karten seit Jahrzehnten ohne Ausfälle. Den Schaltplan gab es auch schon dazu:
pokekart.gif
pokekart.gif (21.03 KiB) 1702 mal betrachtet
Der zweite GAL auf diesem Plan ist für den ZX96 und deshalb nicht auf meiner Platine. Auch habe ich mir erlaubt, die Datenleitungen ordentlich zu sortieren. Damals legten wir größten Wert darauf, dass eine Platine einseitig bleibt. In der Herstellung waren die Vias sehr teuer und beim Selbermachen war das Durchkontaktieren auch kein großes Vergnügen - eher der Grund für Fehler. Jetzt ist das aber kein Problem mehr und so konnte ich mir dieses Design erlauben:
version 3.0.jpg
version 3.0.jpg (118.31 KiB) 1702 mal betrachtet

Re: Retro-Projekt Poke-Karte V.3.0

Verfasst: 04.12.2018, 00:09
von Joachim
Teil 2:

Auf der Platine kann man nun entweder die 8 Highpegel (JP1: Pfostenleiste zwischen 74LS573 und 74LS154) oder maximal 32 Lowpegel (JP2, JP3) abgreifen. Den zweiten '154er habe ich noch draufgepappt, damit das Highnibble nicht unbenutzt bleibt. Die Highpegel erreicht man mit POKE 8, 1 ... 15. Die Lowpegel 1 bis 15 werden mit auch damit erzeugt. Die Lowpegel 17 bis 31 aus dem linken Nibble werden mit POKE 8, 16/32/48/ ... 208/224/240 erreicht. POKE 8,0 geben einen Lowpegel an Pin 0 und 16 von JP2/3 aus. Bei JP3 (leider ist die Bezeichnung irgendwie verschwunden) sind noch oben und unten GND- und +5V-Pins, falls man hier eine Anzeige, welcher Poke-8 gesetzt ist, anstecken möchte. Ich habe das für mich mit einem TIL311 realisiert, der den Wert des unteren Nibble auf einem 7Segment-Display in Hex ausgibt.

Wir haben damals das Bussystem mit den 64 Pins gewählt, weil wir auf dem Bus noch weitere Signale transportieren wollten. Das waren z.B. das Signal vom Pin 16 der ULA (Videoausgabe), 12 Volt und eben die Signale von der Poke-Karte (1 - 4 für Floppies, 13 - 15 für das Festplatteinterface). Das habe ich jetzt auch realisiert. Dazu ist die zweite Stiftreihe JP4 gedacht. Jumpered man die Signale, die man braucht, werden sie zum VG64-Stecker geleitet (Pins P1 ... 8 ). Damit muss man keine Kabel zwischen den Platinen verlegen.

Die Platine versorgt auch das BUSCS-Signal für den Bustreiber. Wer das nicht benötigt, kann sich die unterste Diode sparen.

P1070881.jpg
P1070881.jpg (114.33 KiB) 1700 mal betrachtet

Ich kann 7 Platinen zum Preis von 3 Euro das Stück abgeben. Auch habe ich noch 7 74LS154. Weitere habe ich geordert. Das sind aber dann schmale Typen, die vom Layout zwar vorgesehen sind, die ich aber noch nicht testen konnte. Ich hoffe, sie passen dann auch. Auch die GALs kann ich noch für 7 Platinen bereits programmiert liefern. Der Rest sind dann nur noch zwei Dioden BAT42 und 4 Kondensatoren mit 100 nF. Die VG64-Leisten habe ich leider nicht so üppig, weshalb man sie sich selber besorgen müßte.

P1070880.jpg
P1070880.jpg (105.1 KiB) 1700 mal betrachtet

Hier noch das SprintLayout-File. Jetzt gibt es hier https://www.electronic-software-shop.co ... rodr3214g1 eine Demo-Version von SprintLayout, mit dem man zwar nicht drucken und speichern aber den Testmodus verwenden kann. Damit kann man alle Leiterbahnen verfolgen. Evtl. ist das nützlich, wenn man Eigenkreationen machen möchte.

POKE8-V3-Karte.zip
(51.81 KiB) 37-mal heruntergeladen

Re: Retro-Projekt Poke-Karte V.3.0

Verfasst: 04.12.2018, 09:13
von siggi
Hallo Joachim
ich hätte gern 2 von den Platinen, wenn möglich mit GAL und 154 (die anderen Bauteile habe ich).

Gruß
Siggi

Edit: Könntest Du den Schaltplan noch einstellen (im ZIP ist ein .lay6-File drin, mit dem ich nix anfangen kann)

Re: Retro-Projekt Poke-Karte V.3.0

Verfasst: 04.12.2018, 10:20
von Joachim
Im Nachgang hier noch die GAL-Gleichung:
POKE1_8.txt
(2.01 KiB) 50-mal heruntergeladen

@Siggi:
Geht klar! Genügt es, wenn ich dir vorläufig nur insgesamt zwei 74154 mitschicke?
Das .lay6 ist das SprintLayout-File für die Demo (siehe Link). Der Schaltplan ist im Prinzip der zweite im Thread. Ich zeichne aber noch einen vom aktuellen Stand und stelle ihn hier ein. Ich wußte nicht, ob das Thema überhaupt von Interesse ist. Heutzutage hat man ja große Speicher und FPGAs (siehe ZXblast, ZXmore etc).

Re: Retro-Projekt Poke-Karte V.3.0

Verfasst: 04.12.2018, 10:30
von siggi
Hallo Joachim
ja, 2 reichen auf alle Fälle.

Danke und Gruß
Siggi

Re: Retro-Projekt Poke-Karte V.3.0

Verfasst: 04.12.2018, 12:00
von tokabln
Hallo Joachim,

du hast Post :mrgreen:

Hätte gerne 2 Karten inkl. GAL und 74154 Blaustein :D

Lieben Dank

Re: Retro-Projekt Poke-Karte V.3.0

Verfasst: 05.12.2018, 14:42
von Joachim
Als Nachtrag hier noch der Schaltplan:
Schaltplan PokeKarteV3.jpg
Schaltplan PokeKarteV3.jpg (75.85 KiB) 1004 mal betrachtet

Re: Retro-Projekt Poke-Karte V.3.0

Verfasst: 06.12.2018, 13:03
von tokabln
Hallo Joachim,

Platinen und Bausteine sind heute angekommen.

Es ist Bastelzeit :mrgreen:

Ganz lieben Dank.

Gruß Torsten

Re: Retro-Projekt Poke-Karte V.3.0

Verfasst: 07.12.2018, 20:00
von siggi
Meine waren heute auch im Briefkasten :)

Danke
Siggi

Re: Retro-Projekt Poke-Karte V.3.0

Verfasst: 23.12.2018, 17:28
von Joachim
Für die Poke-Karte habe ich mir eine kleine Testplatine zusammengelötet. Hier eine Demo der Poke-Karte https://youtu.be/pO41AzxWHRk

Re: Retro-Projekt Poke-Karte V.3.0

Verfasst: 24.12.2018, 11:35
von siggi
Wunderbar!
Da kann nun die Christbaumbeleuchtung einfach in BASIC programmiert werden :D

Gruß und fröhliche (Glüh-)Wein-8-en
Siggi

Re: Retro-Projekt Poke-Karte V.3.0

Verfasst: 28.12.2018, 08:53
von msch
Hallo Joachim,

Ich hoffe, es ist noch nicht zu spät - ich hätte gerne eine Platine mit Bauteilen.
Ist die LED-Platine aus dem Video auch erhältlich? ;-)

Beste Grüße und vielen Dank,

Mathias

Re: Retro-Projekt Poke-Karte V.3.0

Verfasst: 28.12.2018, 12:56
von Joachim
Hallo Mathias!
Geht klar.
Die LED-Platine ist selbstgefräst und nicht als Platine erhältlich. Für so einen Fall müßte man tatsächlich eine anfertigen lassen, damit man eine Lötstoppmaske hat. Ich habe mehrere Stunden gepfrimelt, bis alle LED nur dann leuchten, wenn sie sollen. SMD ist schon ein Gefrickel.

Re: Retro-Projekt Poke-Karte V.3.0

Verfasst: 28.12.2018, 22:17
von msch
Besten Dank, Joachim!
Aus diesem Grunde mache ich um SMD einen weiten Bogen... through hole ist mir lieber. Klassische LEDs finde ich für sowas audh irgendwie schöner :wink:

Re: Retro-Projekt Poke-Karte V.3.0

Verfasst: 02.01.2019, 12:13
von msch
Die Pokekarte ist angekommen, besten Dank!

Re: Retro-Projekt Poke-Karte V.3.0

Verfasst: 03.01.2019, 21:03
von tokabln
Hallo Joachim,

kannst Du bitte mal Dein Schaltbild dahingehend verändern, daß auch zu erkennen ist welche Signale am Bus Connector anliegen? Mir fehlen z.B. die P1 bis P8 Signale und auf welchen PIN die gehen. Das habe ich mir jetzt aus dem Layout heraus geholt, es wäre aber sicher gut wenn man klar erkennen könnte welcher Bus Connector PIN wie angeschlossen ist.

Lieben Dank

Re: Retro-Projekt Poke-Karte V.3.0

Verfasst: 04.01.2019, 09:01
von Joachim

Re: Retro-Projekt Poke-Karte V.3.0

Verfasst: 04.01.2019, 17:37
von ZX-Heinz
Joachim hat geschrieben:
23.12.2018, 17:28
Für die Poke-Karte habe ich mir eine kleine Testplatine zusammengelötet. Hier eine Demo der Poke-Karte https://youtu.be/pO41AzxWHRk
Hallo Joachim,
zuerst einmal ein gutes Neues Jahr!
Meine Frage: Wie hast Du das Audio-File erzeugt?
Gruß, Heinz

Re: Retro-Projekt Poke-Karte V.3.0

Verfasst: 04.01.2019, 23:04
von Joachim
Hallo Heinz!
Hört sich nach Mr.X an, ist aber mit magix musicmaker gemacht. Ich wollte, ich könnte sowas mit Mr.X machen.

Re: Retro-Projekt Poke-Karte V.3.0

Verfasst: 05.01.2019, 12:14
von ZX-Heinz
Noch eine Frage: Der Sinn der GAL-Gleichung

ROMCS = A0 & A1 & A2 & A3 & A4 & A5 & A6 & A7 & A8 & A9 &
A10 & A11 & A12 & A13 & A14 & A15 & MREQ & WR;

erschließt sich mir nicht. Diese Leitung wird nur aktiv (und dann HIGH), wenn Adr=#FFFF und kein Memory-Zugriff und kein IO-Write passiert.
Dieser Zustand tritt doch normalerweise im Rechner gar nicht ein. Oder?

Re: Retro-Projekt Poke-Karte V.3.0

Verfasst: 05.01.2019, 13:06
von Joachim
Hallo Heinz!
Unter '*PINS' werden die Eingangsbedingungen definiert. Damit tritt die Bedingung ROMCS=hi ein, wenn alle Adressleitungen außer A3 auf lo sind, A3 auf hi, MREQ auf lo und WR auf lo. Also bei Adresse 8 - wenn ich mich recht erinnere. Ansonsten müßte Kai hier einspringen.

Re: Retro-Projekt Poke-Karte V.3.0

Verfasst: 05.01.2019, 15:05
von ZX-Heinz
Hallo Joachim,
danke für die Nachhilfe. Ich hatte übersehen, dass unter Pins die Adressleitungen (außer A3) negiert werden. Das ergibt #0008.

Re: Retro-Projekt Poke-Karte V.3.0

Verfasst: 05.01.2019, 16:21
von Paul
Hauptsache ist doch das die Gleichung nicht verrät was sie macht. Wenn man bei mir sowas im Code findet (codereview) kommt mein Standard Spruch: security by obscurity :mrgreen:

Re: Retro-Projekt Poke-Karte V.3.0

Verfasst: 09.01.2019, 17:28
von Joachim
Poke-Karte V.3.0. ist aus!