82S100: Unterschied zwischen den Versionen

Aus
Wechseln zu: Navigation, Suche
(PLA, GAL, CPLD und FPGA)
(Das PLA 82S100)
 
(35 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 17: Zeile 17:
  
 
* im C64
 
* im C64
* im Diskettenlaufwerk 1541
+
* im C116
* im Business Computer 8032
+
* im Plus 4
 +
* im Diskettenlaufwerk 1551
 
* im Business Computer 8296  (UE5 und UE6)
 
* im Business Computer 8296  (UE5 und UE6)
 
* alle neueren Computer Systeme verwenden eine oder mehrere PLA
 
* alle neueren Computer Systeme verwenden eine oder mehrere PLA
Zeile 41: Zeile 42:
  
  
Der Nachfolger der CPLD ist ein FPGA ([[wikide:Field Programmable Gate Array|Field Programmable Gate Array]]). Es gibt sehr einfache FPGA bis hin zu richtigen Logik Monster. Ein FPGA benötigt nur noch sehr wenig an Außenbeschaltung. Man kann mit einem FPGA ganze Computer System abbilden. Abgesehen von der unvorstellbar großen Komplexität arbeitet ein modernes FPGA mit einer extrem hohen Geschwindigkeit. Allerdings tendieren FPGA Bausteine zu einer immer kleineren Versorgungsspannung. Es gibt kaum FPGA die mit höheren Spannungen als 3,3V arbeiten können. Das erschwert den Einsatz für Retro Systeme, die meist mit 5V laufen. Aber mit Pegelkonverter kann man auch FPFA an einem Retro Computer System einsetzen, was zu eindrucksvollen Produkten geführt hat wie zum Beispiel das [[wiki64:Turbo_Chameleon_64]]  
+
Der Nachfolger der CPLD ist ein FPGA ([[wikide:Field Programmable Gate Array|Field Programmable Gate Array]]). Es gibt sehr einfache FPGA bis hin zu richtigen Logik Monster. Ein FPGA benötigt nur noch sehr wenig an Außenbeschaltung. Man kann mit einem FPGA ganze Computer System abbilden. Abgesehen von der unvorstellbar großen Komplexität arbeitet ein modernes FPGA mit einer extrem hohen Geschwindigkeit. Allerdings tendieren FPGA Bausteine zu einer immer kleineren Versorgungsspannung. Es gibt kaum FPGA die mit höheren Spannungen als 3,3V arbeiten können. Das erschwert den Einsatz für Retro Systeme, die meist mit 5V laufen. Aber mit Pegelkonverter kann man auch FPFA an einem Retro Computer System einsetzen, was zu eindrucksvollen Produkten geführt hat wie zum Beispiel das [[wiki64:Turbo_Chameleon_64|Turbo_Chameleon_64]].
  
 
<br />
 
<br />
  
=== C64 Module ganz allgemein ===
+
=== PLA im Commodore 8296 ===
  
Für den C64 gibt es eine große Anzahl an Modul Erweiterungen. Das reicht von einfachen Spiel Module über komplexe Anwendungen hin zu kompletten Hardware Erweiterungen (IEEE-488, RS-2342, Hardware Speeder, neue CPU ...).
+
Im CBM 8296 gibt es zwei PLA Bausteine: UE5 und UE6
  
  
Wir unterscheiden zwei grundsätzliche Arten:
+
Der 8296 und der 8296D waren die letzten der CBM Business Maschinen, bevor die CBM-II Computer auf den Markt kamen. Diese Geräte haben 128K SRAM und ein raffiniertes Banking, damit die 64K Grenze der 6502 CPU umgangen werden kann. Die beiden PLA Bausteine sind zuständig für die komplexe Adress-Dekodierung und damit für die Ansteuerung alles Komponenten am CPU Bus (RAM, ROM, IO, Bildschirmspeicher, erweiterter Speicher, Banking).
  
* Software Modul (Software für den C64)
 
* Hardware Modul (bringt neue Hardware)
 
  
 +
Der CBM 8032 ist wohl die am meisten verbreitete Business Computer von Commodore. Der 8032 hat nur 32K RAM (kein erweiterter Speicher) benötigt nur eine PLA. Für den 8032 gibt es eine 64K Speichererweiterung. Der CBM 8096 ist ein 8032 mit dieser 64K Speichererweiterung und hat daher 96K RAM.
  
Die Informationen auf dieser Seite beziehen sich nur auf Software Module.
+
Der CBM 8296 hat von Haus aus 128K RAM (zwei RAM Bänke zu 64K). Die zweite PLA (UE5) ist für den Betrieb des Computers nicht unbedingt notwendig. Wenn man den PLA UE5 entfernt und 5 Brücken setzt (JR1 bis JR5), dann läuft der 8296 als ganz normaler 8032.
Software für den C64 gab es entweder als Kassette, Floppy Disk oder Modul. Modul Software zeichnet sich aus durch einfache Handhabung. Einfach Modul in den C64 stecken und einschalten.  
 
  
  
Beim C64 werden in Bezug auf Software Module grundsätzlich drei Modi unterstützt:
+
<br />
 
+
=== PLA im Commodore 64 ===
* 8K Modus
 
* 16K Modus
 
* 16K UltiMax Modus
 
 
 
  
Später hat man aus Platzmangel Module mit "Banking" eingeführt, um die Größenbeschränkung von 16KB zu umgehen. Aber auch Module mit Banking sind zu jedem Zeitpunkt auf 16K und die drei grundsätzlichen Modi beschränkt. Der Unterschied ist nur, dass die 16K Modulspeicher ein wählbarer Bereich aus einem größeren Speicherbereich ist.  
+
Im C64 gibt es auch eine [[wiki64:PLA_(C64-Chip)|PLA 82S100]]. Diese PLA ist zuständig für das Speicher Management und erzeugt einige wichtige Signale im C64. Am Modul Port des C64 liegen auch Signale der PLA und die PLA bekommt Signale vom Modul Port (/EXROM und /GAME).
  
Der Banking Mechanismus ist aber nicht genormt. Deswegen ist die Software auf dem Modul beschränkt auf genau eine bestimmte '''Modul Type'''.  
+
Neuere Modelle des C64 (250269 Board) haben einen Multifunktions-Chip anstatt der PLA.  
  
  
Das UC ist ein Software Modul für den C64. In dem Modul kann man ein oder mehrere Programme und Spiele speichern und am C64 ausführen. Das UC Modul hat einen eigenen Banking Mechanismus. Und es kann alle drei Modul Modi per Software einstellen.
+
Wie auch in anderen Commodore Computer ist die PLA im C64 ebenfalls relativ anfällig.
 +
Deswegen gibt es auch einige PLA Ersatz Lösungen:
  
 +
* die SuperPLA von Jens Schönfeld
 +
* die realPLA von Skoe
 +
* das PLAnkton von e5frog
 +
* die PLAdvanced+
 +
* die PLA20V8 von Daniël Mantione
  
 
<br />
 
<br />
  
== Erstellen einer eigenen Programmsammlung ==
+
== PLA Ersatz Lösungen ==
 
 
Die Erstellung einer persönlichen Programm Sammlung für ein UC Modul macht man mit Hilfe eines PC Programm: '''UC-Builder'''
 
 
 
  
Der UC-Builder nimmt die gewünschten C64 Programme und verpackt sie in eine einzelne Datei ('''UC Image Datei'''). Diese Datei wird in den Speicher (EPROM, FLASH) des UC Modul geschrieben. Nun steht die Programm Sammlung für den C64 zur Verfügung.
+
Die PLA Chips in den Commodore Computer sind relativ anfällig und fallen häufig aus. Die originalen PLA Chip 82S100 sind schwer zu bekommen und daher auch ziemlich teuer. Mal davon abgesehen  besteht die Gefahr, dass ein Ersatzteil auf Basis des 82S100 wieder auf kurz oder lang ausfallen wird.  
  
 
<br />
 
<br />
=== UC Image Datei ===
+
=== EPROM Ersatz Schaltung ===
 
 
Die C64 Programm Sammlung auf dem UC Modul kann man frei zusammen stellen. Dazu dient ein kleines Programm ('''UC-Builder''') am PC. Das Programm erstellt eine sogenannte '''UC Image Datei'''. diese Image Datei hat die Endung '''.bin''' und kann direkt in das EPROM (oder den FLASH) programmiert werden.
 
 
 
  
Die Größe der UC Image Datei darf den verfügbaren Platz im EPROM (im FLASH Speicher) nicht überschreiten. Bei Verwendung eines W27C040 darf die Image Datei eine maximale Größe von 512KB haben. Die Größe setzt sich zusammen aus der Summe der einzelnen C64 Programme plus der Größe des '''UC-Loader'''. Der UC-Loader ist ein C64 Programm, das für die Bedienung des Modul (UC-Menü) notwendig ist.
+
Der 82S100 hat exakt 16 Eingänge und 8 Ausgänge. Die einfache Architektur erlaubt keine Signal Rückführung. Die Logikschaltung im PLA verknüpft einfach 16 Eingangssignale und erzeugt daraus bis zu 8 Ausgangssignale. Einfach gesagt entstehen 8 Signale aus einem Bitmuster von 16 Signalen.  
  
<br />
+
Nun ja, genau das macht im Grunde auch ein Speicherbaustein. Ein EPROM hat 8 Ausgangssignale (Daten-Pins D0 bis D7) und die können jeden beliebigen Wert annehmen aufgrund eines Eingangsmuster (Adress-Pins). Ein EPROM mit 16 Adressleitungen hat 64KB, also zum Beispiel ein 27C512.
=== Der UC-Loader ===
 
  
In dem UC Modul kann mehr als ein Programm gespeichert sein. Deswegen muss man die Möglichkeit haben, das gewünschte Programm auszuwählen. Die Auswahl des gewünschte Programm erfolgt über das UC-Menü. Im UC-Menü werden alle Programme auf dem Modul gelistet und können auf Knopfdruck gestartet werden.
+
Ein EPROM ist zwar eine völlig andere Technik als eine PLA, aber in diesem Fall läuft es genau auf das selbe hinaus. Und die Kombination 16 Eingänge und 8 Ausgänge entspricht exakt einem EPROM 27C512. Nur die PIN Belegung ist bei einem EPROM etwas anders als bei dem PLA Baustein. Aber die PIN Belegung lässt sich sehr einfach durch einen Adapter anpassen. Diese Technik ist sehr gut beschrieben auf der Seit von '''Jogi''':
  
 +
[http://www.vic20.de/html/eprom_pla_8296_und_c64.html EPROM Ersatz Schaltung (Seite von Jogi)]
  
Nach dem Einschalten des C64 startet der UC-Loader. Der UC-Loader schaut nach, welche Programme auf dem Modul gespeichert sind. Wenn es nur ein Programm ist, dann wird dieses direkt gestartet. Wenn sich mehr als ein Programm auf dem Modul befindet, dann zeigt der UC-Loader die Namen aller Programme am Bildschirm an ('''UC-Menü'''). Der Benutzer wählt das gewünschte Programm und der UC-Loader startet es.  
+
Auf der Seite von Jogi ist beschrieben, wie man einen EPROM-PLA Adapter herstellen kann. Man benötigt dazu nur einen EPROM 27C512, zwei Sockel und etwas Draht. Die etwas komfortablere Lösung ist eine Adapter Platine, die Gerber Daten für diese Platine gibt es hier im Download Bereich.
  
 +
Zudem sind da die EPROM Daten für mehrere gängige Commodore PLA:
  
Wenn sich ein '''File Browser''' (UC-FB) in der Image Datei befindet, dann kann man das Programm über die Taste <F1> starten. Der File Browser ist ein modifiziertes FB (File Browser) Version 2. Man kann damit Dateien auf einem Disketten Laufwerk oder einem SD2IEC anzeigen und starten. Dateien mit der Dateiendung .CRT startet der UC-FB automatisch als Modul.
+
* PLA 324745-01 Daten (CBM 8296 - UE5)
 +
* PLA 324744-01 Daten (CBM 8296 - UE6)
 +
* PLA 906114-01 Daten (C64 PLA)
 +
* PLA 251641-02 Daten (Plus-4)
 +
* PLA 251641-03 Daten (1551)
  
  
Mit den Tasten <F7> oder <F8> kommt man in den normalen C64 Eingabemodus (C64 BASIC). Die Taste <F7> schaltet dabei das UC Modul aus. Man kann dann immer noch auf die UC-Register an der Adresse $DE0x zugreifen. Mit der Taste <F8> schaltet man zusätzlich auch die UC Register aus. Das Modul ist dadurch vollkommen unsichtbar und kann nur durch einen Modul Reset wieder aktiviert werden.
+
Die PLA Ersatz Schaltung auf Basis eines EPROM besticht durch die Einfachheit. Man kann es sehr einfach selbst nachbauen. Leider funktioniert diese Lösung nicht in allen Fällen völlig problemlos. Der C64 ist ziemlich pingelig im Timing und es funktionieren bestimmte Dinge (Software und Hardware Erweiterungen) nicht oder nicht immer. Aber für weniger sensible Geräte wie zB. dem CBM 8296 funktioniert die EPROM Lösung tadellos.
  
 
<br />
 
<br />
 +
=== GAL Ersatz Schaltung ===
  
=== Der UC-Builder ===
+
Ein GAL ist preisgünstig, einfach zu bekommen und läuft mit 5V. Die Programmierung der Logik kann mit einigen EPROM Programmiergeräten (zB. der verbreitete TL-866) durchgeführt werden. Die GAL Lösungen laufen sehr robust und sicher, auch an sensiblen Geräten wie einem C64.
  
In dem Speicher des UC Modul (EPROM oder FLASH) kann man fertige Image Dateien programmieren.
+
Um ein PLA  zu ersetzen benötigt man ein oder zwei GAL Bausteine. Es funktionieren GAL von Lattice (GAL22v10) und Atmel (ATF22v10), möglicherweise auch viele andere GAL.
Dazu braucht man nur ein EPROM Programmiergerät.  
 
Wenn man eine eigene Zusammenstellung von Programmen machen möchte, dann braucht man den '''UC-Builder'''.
 
  
Der UC-Builder erstellt eine UC Image Datei aus einem oder mehreren C64 Programme.
+
<br />
Die Image Datei enthält den '''UC-Loader''', das '''UC-Menü''' (die Programmauswahl), ggf. einen File Browser ('''UC-FB''') und alle C64 Programme die in dem Modul sind. Der UC-Loader ist in dem UC-Builder bereits enthalten und wird immer automatisch in die Image Datei geschrieben. Das UC-Menü wird vom UC-Builder erzeugt und in die Image Datei geschrieben.
+
=== CPLD Ersatz Schaltung ===
  
 +
Ein CPLD ist etwas 'oversized' als PLA Ersatz. Aber dafür benötigt man nur ein einziges CPLD statt zweier GAL Bausteine. Ein weiterer Vorteil ist, dass man nur eine Platinen Version benötigt, um beliebige PLA 82S100 zu ersetzen. Nur das JEDEC File für den CPLD ist unterschiedlich, die Platine und der CPLD ist immer derselbe.
  
Für die Erstellung des UC-Menü benötigt das UC-Builder folgende Informationen zu jedem C64 Programm:
+
Die CPLD Ersatz Schaltung ist simpel. Viele CPLD laufen jedoch nur mit 3,3V, was zusätzliche Pegel Wandler erforderlich machen würde. Aber es gibt auch einen CPLD von Atmel der mit 5V läuft (ATF-1504AS) bzw. einen 3,3V CPLD (ATF-1504ASV) der an den IO Pins 5V tolerant ist.
  
* Name des Programm
+
Von den Kosten ist ein CPLD nicht teurer als zwei GAL Bausteine. Insofern ist die CPLD Ersatzschaltung eine sehr gute Lösung. Allerdings ist der CPLD schwerer zu löten und die Programmierung erfolgt über JTAG, daher ist der Nachbau etwas schwieriger.
* Art des Programm
 
* Den Dateinamen des Programm
 
  
Der ''Name des Programm'' wird dann beim Start vom UC-Loader angezeigt.
+
<br />
Die ''Art des Programm'' benötigt der UC-Loader, damit das Programm korrekt gestartet werden kann.
+
=== FPGA Ersatz Schaltung ===
Die ''Dateiname des Programm'' benötigt der UC-Builder, damit er es in die UC Image Datei integrieren kann.
 
  
 +
Ein CPLD ist etwas 'oversized', ein FPGA ist daher absolut 'oversized'. Der FPGA könnte das ganze Retro Computer System ersetzen, nicht nur das PLA ...
 +
Zudem gibt es praktisch keine FPGA die mit 5V laufen. Es braucht also eine mehr oder weniger komplexe Außenbeschaltung.
  
Der UC-Builder ist ein Programm für die Windows Kommandozeile. Es erstellt Image Dateien für das UC1, UC1.5 und das UC2 Modul. Wird es ohne Argumente aufgerufen, dann sucht das UC-Builder nach einer CSV Datei namens ''''''menu.csv''''''. Wenn keine Fehler auftreten beim bilden des Image, dann erfolgt nur die Ausgabe der Image Datei Größe sowie des freien Speicherplatz. Die Berechnung des freien Speicher beruht auf de Annahme, dass ein 128K EPROM (W27C010) verwendet wird. Bei Verwendung eines 64K EPROM muss man darauf achten, dass die Image Größe 0x10000 nicht überschreitet.
+
Im Vergleich zu einem CPLD sind FPGA noch schwieriger zu löten, für einen Amateur ist das kaum zu schaffen. Die Programmierung erfolgt ebenfalls über JTAG.  
  
 +
Der FPGA hat aber einen Vorteil, der sehr angenehm ist: der FPGA ist in der Lage gleich mehrere PLA zu ersetzen, oft sind daher mehrere Logik Schaltungen implementiert die man per Jumper auswählen kann. Man kauft also eine FPGA Ersatzlösung, die dann in vielen Geräten laufen kann.
  
<u>Optionen</u>:
+
<br />
  
Mit der Option '-h' oder '--help' bekommt man eine Ausgabe aller verfügbaren Optionen zum UC-Builder.<br />
+
== PLA im CBM 8296 ==
Mit der Option '-V' oder '--version' wird die Version des  UC-Builder angezeigt.
 
  
Mit der Option '-1' oder '--UC1' wird der UC-Builder angewiesen, eine Image Datei für ein [[UC1|UC1 Modul]] zu erstellen.<br />
+
Im Commodore 8296 sind zwei PLA Chips (UE5 und UE6). Nach meiner Erfahrung sind diese beiden PLA mit Abstand die häufigste Fehlerursache. Ein 8296 der nicht startet kann sehr oft durch Austausch der PLA repariert werden.
Mit der Option '-2' oder '--UC2' wird der UC-Builder angewiesen, eine Image Datei für ein [[UC2|UC2 Modul]] zu erstellen. Diese Image Dateien laufen auch in der UC1.5<br />
 
Mit der Option '-5' oder '--UC1.5' wird der UC-Builder angewiesen, eine Image Datei für ein [[UC1.5|UC1.5 Modul]] zu erstellen. Diese Image Dateien laufen auch in der UC2
 
  
Mit der Option '-8' oder '--MD' wird der UC-Builder angewiesen, eine Image Datei für ein Magic-Desk Modul zu erstellen. Die maximale Größe ist 1MB.  
+
Für das UE5 existiert eine PLA Ersatz Schaltung von Nicolas Welte auf Basis eines einzelnen GAL 20v10. Die Datei ist erhältlich auf (zimmers.net):<br />
Mit der Option '-9' oder '--EF' wird der UC-Builder angewiesen, eine Image Datei für ein EasyFlash Modul zu erstellen.  
+
[http://www.zimmers.net/anonftp/pub/cbm/firmware/computers/pet/8296/index.html How to replace the PLA UE5 in a CBM8296 with a GAL 20V8 written in 2005 by Nicolas Welte] ([http://x1541.de
 +
])
  
Mit der Option '-m' oder '--menu-csv' kann man eine CSV Datei mit beliebigem Namen verwenden.
 
  
Mit der Option '-i' oder '--image-file' kann man den Namen der Ausgabe Datei (UC Image Datei) festlegen.<br />
+
Mein CBM 8296 läuft seit Jahren tadellos mit einer PLA Ersatzschaltung auf Basis eines EPROM für UE5 und UE6.  
Mit der Option '-c' oder '--crt-file' kann man den Namen der Ausgabe Datei (CRT Datei) festlegen.
 
  
Mit der Option '-v' erhöht man die Anzahl der Meldungen, das UC-Builder wird 'gesprächiger'. Die Option kann mehrfach verwendet werden. Ab drei '-vvv' erhält man detaillierte Informationen über den Aufbau der Image Datei, also die Adresse, Bank und Länge jedes Programmes in dem Image. Es wird auch angezeigt wie das Programm geladen und gestartet wird und ob das IO Register verborgen wird.
+
Inspiriert durch die GAL Lösung von [https://www.freepascal.org/~daniel/c64pla/ Daniël Mantione ('''PLA20V8''')] wollte ich diese PLA Ersatzschaltung anpassen für das PLA UE6 in meinem CBM 8296. Nun sind es 4 Platinen geworden. Die Gerber Dateien und die JEDEC Dateien sind hier erhältlich im Download Bereich.
  
 
+
[https://forum.classic-computing.de/forum/index.php?thread/25947-ersatz-f%C3%BCr-82s100-pla/&postID=331422&highlight=82s100#post331422 Projekt im Forum des VzEkC e.V. (Verein zum Erhalt klassischer Computer e.V.)]
Am Ende wirft der UC-Builder zwei Dateien aus. Die BIN Datei (EPROM Abbild) ist die '''UC Image Datei''', die direkt in das EPROM für das Modul gebrannt werden kann. Die '''CRT Datei''' ist ein 8K CRT für den VICE, damit kann man das Menü gleich kontrollieren. Allerdings kann der VICE die Programme nicht richtig starten, da der VICE die UC Hardware (noch) nicht emulieren kann.
 
 
 
 
 
Die Image Dateien für Magic-Desk oder EasyFlash sind wie bei den UC-Images eine BIN Datei (EPROM Abbild) und eine CRT Datei für den VICE Emulator. Neuere Versionen des VICE Emulator können beide Arten (EasyFlash und Magic-Desk) perfekt emulieren.
 
  
  
 
<gallery mode="traditional" widths=90px heights=90px perrow=9 caption="">
 
<gallery mode="traditional" widths=90px heights=90px perrow=9 caption="">
Image:UC-Builder_00.png
+
Image:GAL2PLA-12.GIF
Image:UC1-Tool_01.png
+
Image:GAL2PLA-13.GIF
Image:UC1-Tool_02.png
+
Image:GAL2PLA-11.GIF
Image:UC1-Tool_04.png
+
Image:GAL2PLA-14.GIF
Image:UC1-Tool_05.png
+
Image:GAL2PLA-03.jpg
Image:Screenshot 2021-11-29 144141.png
+
Image:GAL2PLA-01.jpg
Image:Screenshot 2021-11-29 151254.png
+
Image:GAL2PLA-02.jpg
 +
Image:GAL2PLA-04.jpg
 
</gallery>
 
</gallery>
 +
  
 
<br />
 
<br />
 +
=== GAL Lösung für UE5 ===
  
=== Die CSV Datei für die Menü Erstellung ===
+
Für das UE5 existiert eine PLA Ersatz Schaltung von Nicolas Welte auf Basis eines einzelnen GAL 20v10. Die GAL 22v10 sind einfacher zu bekommen, deswegen habe ich das PLD File neu übersetzt in ein JEDEC File für das ATF 22v10. Im Download Bereich befinden sich die Gerber Datei für die Adapter Platine sowie die PLD Datei und das JEDEC.
  
Das UC-Builder liest die benötigten Informationen aus einer Text Datei (CSV Datei).
+
<br />
Jede Zeile in der CSV Datei steht für ein Programm (bzw. einen Menü Eintrag).
+
=== GAL Lösung für UE6 ===
Mit der Option -m sagt man dem UC-Builder den Namen der CSV Datei (''-m menuFile.csv'').
 
Wenn das UC-Builder ohne CSV Dateinamen aufgerufen wird, sucht es automatisch nach der CSV Datei ''menu.csv''.
 
  
 +
Inspiriert durch die GAL Lösung von [https://www.freepascal.org/~daniel/c64pla/ Daniël Mantione ('''PLA20V8''')] habe ich eine Platine für zwei GAL 22v10 entwickelt. Wie bei der Platine von Daniël Mantione ist jedes GAL verantwortlich für je vier Ausgänge. Aber der Rest ist anders gelöst, auf beide GAL Bausteine sind alle 16 Eingänge geführt, jeweils immer an dieselben PIN der GAL. Dadurch kann man diese Platine prinzipiell als Ersatzschaltung einsetzen für jeden beliebige PLA 82S100. Man muss nur ein JEDEC erstellen für jede neue PLA die man mit dieser Platine ersetzen möchte.
  
<b><u>Beispiel einer CSV Datei</u>:</b>
+
Im Download Bereich befinden sich die Gerber Datei für die Adapter Platine sowie die PLD und JEDEC Dateien.
  
Programm;          Typ;      Dateiname
+
<br />
Hello World;        PRG;      10-Zeiler\hello world.prg
+
=== CPLD Lösung für UE6 ===
Fort Apocalypse;    PRG;      Games\Fort Apocalypse.prg
 
Jupiter Lander;    UltiMax;  Ultimax\Jupiter_Lander.crt
 
ExBasic-II;        CRT;      CRT\ExBasic II.crt
 
Test $C003;        BIN;      Test\UC-testc01.prg;              SYS $C003
 
TSB;                BIN;      BIN\tsb.obj.prg;                  RESET
 
Help+;              !$8000;  BIN\Help+-C64.bin;                RESET
 
 
 
 
 
 
 
 
 
 
 
 
 
Aus der CSV Datei entsteht eine UC Image Datei mit einem Menü und vier C64 Programmen.
 
Die zweite Spalte enthält den ''Typ'' des C64 Programm.
 
Diese Information benötigt der UC-Loader damit das Programm richtig gestartet werden kann.
 
 
 
 
 
<b><u>Spalte 1 -- Programm Name</u>:</b>
 
  
Der Programm Name wird nur für die Darstellung im UC-Menü benutzt. Der Name wird automatisch in PETSCII konvertiert, sofern dies möglich ist. Die Länge wird automatisch auf 17 Zeichen reduziert, damit es am C64 problemlos dargestellt wird.
+
Als Variante für die PLA Ersatzschaltung mit 2 GAL Bausteinen habe ich eine Adapter Platine entwickelt mit einem CPLD ATF-1504AS. Auf der Platine ist ein optionaler Wannenstecker (JTAG), über den man den CPLD programmieren kann (JTAG Adapter notwendig - ATDH1150USB). Der Wannenstecker muss nicht bestückt werden, wenn man den CPLD anders programmiert. Auf der Unterseite der Platine kann man zwei SMD Kondensatoren auflöten (2 mal 100nF 0805), als Stütze für den CPLD. Es funktioniert aber auch ohne die Kondensatoren, denn die Ausgänge sind nicht auf hohe 'Slew Rate' gesetzt.
  
Ein Sonderfall ist der Text 'F1'. Wenn der Programm Name exakt 'F1' ist, dann betrachtet der UC-Builder diesen Eintrag als 'File Browser'. Im UC-Menü wird kein Eintrag gebildet, aber es erscheint ganz unten links die Auswahl 'F1-File Browser'. Mit der Taste 'F1' wird dieser Eintrag als File Browser gestartet. Der File Browser wird immer mit aktiviertem IO Register gestartet, damit ggf. später eine Konfiguration des UC Modul erfolgen kann.
+
Die CPLD Lösung ist eine '''universelle Lösung''' für alle PLA der 82S10x Serie. Der CPLD kann alle Arten von PLA exakt nachbilden, auch die speziellen Typen mit Open Collector, Flip Flop und Rückführungen. Mit einem passenden JEDEC kann man diese Platine als Ersatz für alle PLA Problemfälle nutzen.
  
Der File Browser kann entweder ein externes Programm oder der interne UC-FB sein. Im Falle des internen UC-FB ist der '''Programm Typ''' immer als '---' anzugeben. Und es ist natürlich kein  Dateiname nötig, die Spalte drei kann also einen beliebigen Inhalt haben.
+
Im Download Bereich befinden sich die Gerber Datei für die Adapter Platine sowie die PLD und JEDEC Datei für den UE6 PLA.
 
 
 
 
<b><u>Spalte 2 -- Programm Typ</u>:</b>
 
 
 
Der '''Programm Typ''' steuert, wie das Programm geladen wird. Zudem bestimmt es die Konfiguration der UC Hardware vor dem Programm Start. Zudem wirkt sich der Programm Typ aus auf die Start Option, sofern diese nicht manuell eingestellt wird (siehe Spalte 4).
 
 
 
 
 
;Folgende Kürzel sind in der Spalte ''Typ'' erlaubt:
 
 
 
;PRG
 
: normales BASIC Programm, das an der Adresse $801 geladen und mit RUN gestartet wird
 
;BIN
 
:  ein Programm mit Ladeadresse, das an beliebiger Adresse geladen und mit SYS oder RESET gestartet wird
 
;BLK nnn
 
;! nnn
 
:  eine Datei OHNE Ladeadresse, die an beliebiger Adresse geladen und mit SYS oder RESET gestartet wird
 
:  es kann entweder 'BLK' oder '!' verwendet werden, das Ergebnis ist das selbe.
 
:  die Datei wird an die angegebene Adresse 'nnn' geladen. Die Adresse kann dezimal, hexadezimal (beginnt mit '$' oder '0x') oder Oktal (beginnt mit '0') angegeben werden
 
;8KB
 
: das Programm wird als 8KB Modul gestartet
 
;16KB'''
 
: das Programm wird als 16KB Modul gestartet
 
;UltiMax
 
:  das Programm wird als Ultimax Modul gestartet
 
;CRT
 
:  der Modul Typ wird selbsttätig erkannt, - nur bei CRT Dateien
 
;"---"
 
: Sonderfall für die Verwendung des internen UC-FB, wenn der '''Programm Name''' exakt 'F1' ist
 
 
 
 
 
<b><u>Spalte 3 -- Dateiname</u>:</b>
 
 
 
Der Dateiname am PC, damit der UC-Builder die Datei lesen und in die Image Datei einbinden kann. Es sind alle Arten von Pfade erlaubt, die dem OS bekannt sind (Unterverzeichnisse, andere Laufwerke, absolute Pfade, Netzlaufwerke, Pfad Aliase ...). Dateien werden einfach als Byte Stream gesehen. Es gibt aber Ausnahmen, Dateien die inhaltlich interpretiert werden: P00 und CRT
 
 
 
; P00
 
: Diese Dateien werden besonders behandelt, der P00 Header wird überlesen und ab Byte [0x1A] wird als Inhalt verwendet
 
 
 
; CRT
 
: Diese Dateien sind 'Modul Dateien' für den Emulator. Sofern es CRT Dateien vom Typ 0 (8K, 16K, Ultimax) sind, werden sie vom UC Builder und vom UC-FB richtig interpretiert.
 
 
 
 
 
<b><u>Spalte 4 -- Start Optionen</u>:</b> (optional, ab v1.05)
 
 
 
Die Spalte 4 kann normalerweise einfach weg gelassen werden. Man kann hier eine bestimmte Startoption erzwingen. Wenn die Spalte weg gelassen wird, startet der UC-Loader alle PRG mit einem 'RUN' Befehl, alle Modul Dateien mit einem Soft RESET und alles andere gar nicht (springt nach dem LOAD ins BASIC).
 
 
 
Wenn man eine Startoption definiert, dann führt sie der UC-Loader nach dem LOAD aus, unabhängig davon ob es Sinn macht oder nicht.
 
 
 
 
 
;Folgende Startoptionen sind erlaubt
 
 
 
; RESET
 
: Nach dem laden des Programmes wird ein Soft RESET ausgeführt.<br />
 
: (Das ist Standard bei Programm Typ 8KB, 16KB, UltiMax und CRT)
 
 
 
; SYS nnn
 
: Nach dem laden des Programmes wird ein SYS ausgeführt auf die Adresse 'nnn'. Die Start Adresse kann dezimal, hexadezimal (beginnt mit '$' oder '0x') oder Oktal (beginnt mit '0') angegeben werden.
 
 
 
; RUN
 
: Nach dem laden des Programmes wird ein RUN ausgeführt. Sofern es sich bei dem Programm um ein BASIC Programm handelt, wird es automatisch nach dem LOAD ausgeführt.<br />
 
: (Das ist Standard bei Programm Typ PRG)
 
 
 
; READY
 
: Nach dem laden des Programmes wird '''nichts''' gemacht. Der UC-Loader springt direkt nach dem LOAD in den Direktmodus des BASIC (Interpreter Loop).<br />
 
: (Das ist Standard bei Programm Typ BIN und BLK)
 
 
 
; ROM
 
: Das Programm wird direkt im ROM (EPROM/FLASH) ausgeführt, ohne zuerst ins RAM geladen zu werden. Der UC Loader selektiert die richtige Speicher Bank und startet dann per Reset. Module vom Typ  8K und 16K werden direkt an der unteren Grenze einer 16K Bank angeordnet. Ultimax Module mit 8K werden automatisch in dem oberen 8K Block einer Bank angeordnet, das ist Standard für Ultimax Module wegen dem Reset Vektor.
 
: Diese Methode hat den Nachteil, dass ein Programm genau an den Block Grenzen einer Bank angeordnet werden muss, dadurch entstehen u.U. Lücken zu dem Programm vorher und der Speicher kann nicht mehr vollständig benutzt werden. Aber es eignet sich gut, wenn hauptsächlich Modul Programme (CRT Dateien) mit 8K und 16K Größe benutzt werden (zB. das Multi-MAX Modul). Im Falle von vielen 8K Modulen wird der Speicher ideal genutzt, wenn sich eine 8K und eine Ultimax immer abwechseln.
 
  
 
<br />
 
<br />
 +
=== EPROM / PLA Adapter ===
  
=== Der File Browser (UC-FB) ===
+
Diese Platine kann auf zwei Arten verwendet werden:
 
 
Der UC File Browser wird vom UC-Menü gestartet mit der Taste <F1>. Der UC File Browser ist nur verfügbar, wenn im CSV File ein Dummy Eintrag gemacht wird. Der Menütext (erste Spalte) muss 'F1' lauten und die zweite Spalte enthält drei Bindestriche ('---'). Die dritte Spalte wird nicht ausgewertet. Optional kann man statt des internen UC-FB auch einen eigenen Browser einbinden, dazu muss nur die erste Spalte exakt 'F1' enthalten.
 
 
 
Der UC-FB läuft als 8KB ROM und ist sonst wie der normale FB v2. Er startet Programme, wechselt in Verzeichnisse oder Disk Image Dateien und verlässt diese auch wieder. So kann man sehr komfortabel auf einem SD basierten Laufwerk (wie das SD2IEC) navigieren.
 
 
 
Der UC-FB kann auch CRT Dateien vom Typ 0 starten. Es wird automatisch der Modul Typ (8K, 16K oder Ultimax) aus dem CRT File gelesen und entsprechend in den UC RAM geladen. Der Start erfolgt über einen Soft Reset.
 
 
 
<gallery mode="traditional" widths=90px heights=90px perrow=9 caption="">
 
Image:UC1-FB-01.png
 
</gallery>
 
  
<br />
+
* als PLA Ersatzschaltung auf EPROM Basis  (Löt Trennstelle geschlossen)
=== MAX Machine ===
+
* als PLA Adapter für den TL-866  (Löt Trennstelle offen)
  
Die UC Module sind dafür konzipiert, in einem C64 Computer zu arbeiten. Neuere UC Module können aber auch in einer Commodore MAX Machine laufen. Mie Module UC-1 und UC-1.5 haben dazu einen optionalen Jumper, mit dem sie in den MAX Machine Modus geschaltet werden können. Das UC-2 Modul kann per Software Einstellung in den MAX Machine Modus wechseln.
 
  
Ein UC Modul im Max Machine Modus läuft auch in einem C64.
+
Wenn man die Platine als PLA Ersatzschaltung verwendet, dann muss die Trennstelle auf der Unterseite der Platine geschlossen werden. Ein passender EPROM 27C512 dient dann als Ersatz für die gängigen Commodore PLA ([http://www.vic20.de/html/eprom_pla_8296_und_c64.html siehe EPROM Ersatzschaltung von Jogi]).
  
  
Der MAX Machine Modus unterliegt den Beschränkungen dieser Ziel Plattform:
+
Wenn man die Platine als PLA Adapter verwendet, dann muss die Trennstelle auf der Unterseite der Platine offen sein. Der Adapter wirkt dann (nach 'unten') wie ein EPROM, so kann man den Adapter in praktisch jedem EPROM Programmiergerät einsetzen. Auf dem Adapter (nach 'oben') kann man ein PLA 82S100 einsetzen, so kann man das PLA auslesen mit einem EPROM Programmiergerät (zB. einem TL-866).
* es funktioniert nur noch der Ultimax Modus
 
* der UC Loader funktioniert in diesem Modus nicht
 
* ein C64 hat nur noch 4K RAM
 
* an einer MAX Machine sind 2K RAM (intern) und 2K extern (UC-RAM) von $0800 bis $0x0FFF
 
* das Signal IO-1 ist direkt mit /EXRAM verbunden
 
* das Signal IO-2 ist direkt mit /EXROM verbunden
 
* die UC Register sind in einer MAX Machine in dem 2K Adressraum $0800-$0FFF ansprechbar (statt wie gewohnt ab $DExx)
 
* an einem C64 hat man 256 Byte UC RAM im IO-2 Bereich ($DFxx)
 
  
 
+
Der Adapter dient zum auslesen eines unbekannten PLA in einem EPROM Programmiergerät. Aber natürlich kann man statt eines PLA auch eine PLA Ersatzschaltung einsetzen und auslesen. Damit ist es möglich, jede PLA Ersatzschaltung direkt zu testen, indem man die Ersatzschaltung ausliest und die binär Dateien vergleicht. Alternativ kann man das vergleichen der Dateien auch direkt mit dem EPROM Programmiergerät machen (Funktion VERIFY).
Da der UC Loader nicht funktioniert im Max Machine Modus funktionieren da auch keine UC Images mehr. Es braucht eine Software die spezielle für diesen Modus entwickelt wurde, zum Beispiel die MultiMax Software für das UC Modul.
 
  
 
<br />
 
<br />
Zeile 314: Zeile 203:
 
== News ==
 
== News ==
  
* 11.06.2021 -- Prototyp der UC1
+
* 21.12.2021 -- Release der PLA Ersatz Schaltungen
* 14.07.2021 -- Release der UC1
 
* 20.09.2021 -- UC2 voll funktionsfähig
 
* 23.09.2021 -- UC1.1 Prototyp
 
* 01.10.2021 -- Release UC-Builder v1.07
 
* 08.10.2021 -- Release der UC2
 
* 29.10.2021 -- Release UC-Builder v1.10
 
  
 
<br />
 
<br />
Zeile 326: Zeile 209:
 
== Downloads ==
 
== Downloads ==
  
* [https://www.dropbox.com/s/6c3nfel83yqz5zo/UC-Image-v1_06.zip?dl=1 UC-Builder v1.06 mit Beispiel Images und den Menü Sourcen]
+
* [[Media:8296ue5cr.zip|JEDEC für das GAL 22v10 im UE5 Adapter]]  
* [[Media:UC-Builder.zip|UC-Builder v1.10]]  
+
* [[Media:8296ue6-GAL-03.zip|JEDEC für beide GAL 22v10 im UE6 Adapter]]  
* [[Media:Multimax-UC2-UC1.5.zip|MultiMax Image für die UC-1.5 und UC-2]]
+
* [[Media:8296UE6-CPLD-02.zip|JEDEC für das CPLD ATF-1504AS im UE6 Adapter]]  
* [[Media:Pop512.zip|'Prince of Persia' Image für UC2 (dazu benötigt wird das EF Jedec)]]
 
  
 +
* [[Media:GAL2PLD UE5 GAL.zip|Gerber Dateien für den UE5 Adapter (1 x GAL 22v10)]]
 +
* [[Media:GAL2PLD UE6 GAL.zip|Gerber Dateien für den UE6 Adapter (2 x GAL 22v10)]]
 +
* [[Media:GAL2PLD UE6 CPLD.zip|Gerber Dateien für den UE6 Adapter (CPLD ATF-1504AS)]]
 +
* [[Media:PLA Adapter.zip|Gerber Dateien für den PLA Adapter]]
 
<br />
 
<br />
  
 
== Links ==
 
== Links ==
  
* [[Universal_Cartridge_1|Handbuch zur UC-1]]
+
* [https://forum.classic-computing.de/forum/index.php?thread/25947-ersatz-f%C3%BCr-82s100-pla/&postID=331422&highlight=82s100#post331422 Projekt im Forum des VzEkC e.V. (Verein zum Erhalt klassischer Computer e.V.)]
* [[Universal_Cartridge_1.5|Handbuch zur UC-1.5]]
+
 
* [[Universal_Cartridge_2|Handbuch zur UC-2]]
+
* [http://www.zimmers.net/anonftp/pub/cbm/firmware/computers/pet/8296/index.html PLA Ersatzschaltung für UE5 im CBM 8296 mit einem GAL 20V8 (2005 by Nicolas Welte - http://x1541.de)]
 +
* [https://www.freepascal.org/~daniel/c64pla/ PLA Ersatzschaltung für C64 von Daniël Mantione (PLA20V8)]  
 +
* [http://www.vic20.de/html/eprom_pla_8296_und_c64.html PLA Ersatzschaltung auf Basis eines EPROM 27C512 (Jogi)]).
  
 
* [https://www.kanda.com/products/Kanda/PLD-BOARD.html Kanda PLD Training Board - GAL16v8]
 
* [https://www.kanda.com/products/Kanda/PLD-BOARD.html Kanda PLD Training Board - GAL16v8]
Zeile 343: Zeile 231:
 
* [https://www.microchip.com/en-us/development-tool/ATDH1150USB Microchip USB Programmer (für ATF-1504)]
 
* [https://www.microchip.com/en-us/development-tool/ATDH1150USB Microchip USB Programmer (für ATF-1504)]
 
* [[ATF150x|die Programmierung des ATF-1504]]
 
* [[ATF150x|die Programmierung des ATF-1504]]
* [http://www.harries.dk/files/C64MemoryMaps.pdf C64 Banking (PDF)]
 
* [https://www.c64-wiki.de/wiki/Max_Machine Commodore MAX Machine]
 
* [https://www.c64-wiki.de/wiki/Expansionsport C64 Cartridge Port]
 
* [https://www.c64-wiki.de/wiki/Expansionsport_(Max_Machine) Max Machine Cartridge Port]
 
* [http://www.multimax.co/ MultiMAX Cartridge]
 
 
* [https://vice-emu.sourceforge.io/vice_15.html VICE Doku zu CARTCONV]
 
* [http://unusedino.de/ec64/technical/formats/crt.html Doku zu CRT Datei Format (EC64)]
 
* [https://fossies.org/linux/vice/src/cartridge.h Liste der CRT CartTypes]
 
* [https://codebase64.org/doku.php?id=base:crt_file_format Doku zu CRT Datei Format (Codebase)]
 
* [https://skoe.de/easyflash/files/devdocs/EasyFlash-ProgRef.pdf EasyFlash Entwickler Doku]
 
* [https://codebase64.org/doku.php?id=base:code_sample EasyFlash Sample Code]
 
* [https://github.com/msolajic/c64-magic-desk-1024k 1MB Magic-Desk Doku]
 

Aktuelle Version vom 24. Dezember 2021, 01:07 Uhr

PLA Adapter
PLA Adapter


Das PLA 82S100

Das PLA 82S100 (Programmable Logic Array) ist ein integrierter Schaltkreis (IC), der viele Logik TTL ersetzen kann. Der Einsatz einer PLA hat viele Vorteile:

  • Reduktion der Anzahl an IC in einer Schaltung
  • Reduktion der notwendigen Fläche auf der Platine
  • das Platinen Layout ist einfacher
  • Reduktion des Stromverbrauch
  • deutlich höhere Flexibilität bei Design Änderungen


Das alles führt zu deutlich verringerte Produktionskosten. Die Firma Commodore hat den 82S100 deshalb in praktisch allen neueren Designs ihrer Produkte eingesetzt:

  • im C64
  • im C116
  • im Plus 4
  • im Diskettenlaufwerk 1551
  • im Business Computer 8296 (UE5 und UE6)
  • alle neueren Computer Systeme verwenden eine oder mehrere PLA


Leider haben diese PLA nicht nur Vorteile. Aus Erfahrung weiß man, dass die PLA in einem Commodore Computer sehr oft defekt sind. Speziell die beiden Systeme 8032 und 8296 haben fast immer defekte PLA, wenn sie nicht mehr richtig starten.


PLA, GAL, CPLD und FPGA

Ein PLA ist quasi der 'Urvater' der programmierbaren Logik Bausteine. Die PLA 82S100 hat 16 Eingänge und 8 Ausgänge. Die Verknüpfung zwischen Ein- und Ausgänge ist flexibel (programmierbar). Die Logik in dem PLA ist wie eine Software, aber es wird nicht sequentiell ausgeführt, sondern zeitgleich. Man muss sich diese Logik wie ein Schaltbild vorstellen. Der Entwurf dieser Logik erfolgt in einer eigenen Sprache (Syntax). Wie bei jeder Software ist es zuerst ein Textfile, das von einem Compiler übersetzt wird.

Ein PLA kann einmal programmiert werden, und folgt fortan dieser Logik. Die Pins an dem Baustein haben eine fix zugeordnete Verwendung (Eingang, Ausgang). Der PLA an sich hat einen relativ begrenzten Funktionsumfang. Bausteine wie der 82S100 haben TTL Ausgänge und können logische Verknüpfungen ausführen. Beim 82S101 sind alle Ausgänge in Open Collector Bauweise. Es gibt weitere PLA wie den 82S105 die Flip Flop Elemente zur Verfügung stellen.


Die nächste Generation an programmierbaren Logik Bausteine waren die GAL. Im Unterschied zu den PLA können GAL gelöscht und neu programmiert werden (ähnlich wie ein EPROM). GAL Bausteine ersetzen meist eine Vielzahl unterschiedlicher PLA Bausteine. Es können Gatter Schaltungen und Flip Flop definiert werden. Einige Pins der GAL Bausteine haben fixe Verwendung (Ein- oder Ausgang), andere können als ein- oder Ausgang verwendet werden. Die Funktion kann sogar im Betrieb geändert werden, abhängig von einem Ergebnis einer internen Logik. Ausgänge können auch hochohmig geschaltet werden, das ermöglicht den Betrieb an einem Computer Bus.


Nach den GAL kamen die CPLD (Complex Programmable Logic Device) Bausteine. Ein CPLD erhöht die Flexibilität noch weiter: alle Pins können wahlfrei verwendet werden (Ein- oder Ausgang). Aber es gibt auch Pins mit speziellenr Funktion (Trigger, OE, Clk ...). Die Anzahl an interne Gatter wurde drastisch erhöht, was die mögliche Komplexität deutlich erhöht. Bei CPLD spricht man von Makrozellen, die Anzahl an Makrozellen ist ein Maß dafür, wie komplex die Logik sein kann, die man in den Baustein programmieren möchte. Neben einer großen Anzahl programmierbarer Gatter bieten CPLD auch viele verschiedene Arten von Flip Flops und anderer komplexer Elemente. Über sogenannte 'Fuses' kann man Eigenschaften des CPLD steuern, wie zB. das Reset Verhalten und die 'Slew Rate' der Augänge.

Mit einem CPLD kann man bereits sehr komplexe Schaltungen abbilden. Zum Beispiel kann man eine sogenannte 'State Machine' entwickeln, was einfache Ablaufsteuerungen ermöglicht. Es gibt interessante CPLD Projekt, zum Beispiel hat jemand aus zwei CPLD eine sehr einfache CPU erstellt. Diese CPU ist funktionsfähig und kann einfache Programme abarbeiten.


Der Nachfolger der CPLD ist ein FPGA (Field Programmable Gate Array). Es gibt sehr einfache FPGA bis hin zu richtigen Logik Monster. Ein FPGA benötigt nur noch sehr wenig an Außenbeschaltung. Man kann mit einem FPGA ganze Computer System abbilden. Abgesehen von der unvorstellbar großen Komplexität arbeitet ein modernes FPGA mit einer extrem hohen Geschwindigkeit. Allerdings tendieren FPGA Bausteine zu einer immer kleineren Versorgungsspannung. Es gibt kaum FPGA die mit höheren Spannungen als 3,3V arbeiten können. Das erschwert den Einsatz für Retro Systeme, die meist mit 5V laufen. Aber mit Pegelkonverter kann man auch FPFA an einem Retro Computer System einsetzen, was zu eindrucksvollen Produkten geführt hat wie zum Beispiel das Turbo_Chameleon_64.


PLA im Commodore 8296

Im CBM 8296 gibt es zwei PLA Bausteine: UE5 und UE6


Der 8296 und der 8296D waren die letzten der CBM Business Maschinen, bevor die CBM-II Computer auf den Markt kamen. Diese Geräte haben 128K SRAM und ein raffiniertes Banking, damit die 64K Grenze der 6502 CPU umgangen werden kann. Die beiden PLA Bausteine sind zuständig für die komplexe Adress-Dekodierung und damit für die Ansteuerung alles Komponenten am CPU Bus (RAM, ROM, IO, Bildschirmspeicher, erweiterter Speicher, Banking).


Der CBM 8032 ist wohl die am meisten verbreitete Business Computer von Commodore. Der 8032 hat nur 32K RAM (kein erweiterter Speicher) benötigt nur eine PLA. Für den 8032 gibt es eine 64K Speichererweiterung. Der CBM 8096 ist ein 8032 mit dieser 64K Speichererweiterung und hat daher 96K RAM.

Der CBM 8296 hat von Haus aus 128K RAM (zwei RAM Bänke zu 64K). Die zweite PLA (UE5) ist für den Betrieb des Computers nicht unbedingt notwendig. Wenn man den PLA UE5 entfernt und 5 Brücken setzt (JR1 bis JR5), dann läuft der 8296 als ganz normaler 8032.



PLA im Commodore 64

Im C64 gibt es auch eine PLA 82S100. Diese PLA ist zuständig für das Speicher Management und erzeugt einige wichtige Signale im C64. Am Modul Port des C64 liegen auch Signale der PLA und die PLA bekommt Signale vom Modul Port (/EXROM und /GAME).

Neuere Modelle des C64 (250269 Board) haben einen Multifunktions-Chip anstatt der PLA.


Wie auch in anderen Commodore Computer ist die PLA im C64 ebenfalls relativ anfällig. Deswegen gibt es auch einige PLA Ersatz Lösungen:

  • die SuperPLA von Jens Schönfeld
  • die realPLA von Skoe
  • das PLAnkton von e5frog
  • die PLAdvanced+
  • die PLA20V8 von Daniël Mantione


PLA Ersatz Lösungen

Die PLA Chips in den Commodore Computer sind relativ anfällig und fallen häufig aus. Die originalen PLA Chip 82S100 sind schwer zu bekommen und daher auch ziemlich teuer. Mal davon abgesehen besteht die Gefahr, dass ein Ersatzteil auf Basis des 82S100 wieder auf kurz oder lang ausfallen wird.


EPROM Ersatz Schaltung

Der 82S100 hat exakt 16 Eingänge und 8 Ausgänge. Die einfache Architektur erlaubt keine Signal Rückführung. Die Logikschaltung im PLA verknüpft einfach 16 Eingangssignale und erzeugt daraus bis zu 8 Ausgangssignale. Einfach gesagt entstehen 8 Signale aus einem Bitmuster von 16 Signalen.

Nun ja, genau das macht im Grunde auch ein Speicherbaustein. Ein EPROM hat 8 Ausgangssignale (Daten-Pins D0 bis D7) und die können jeden beliebigen Wert annehmen aufgrund eines Eingangsmuster (Adress-Pins). Ein EPROM mit 16 Adressleitungen hat 64KB, also zum Beispiel ein 27C512.

Ein EPROM ist zwar eine völlig andere Technik als eine PLA, aber in diesem Fall läuft es genau auf das selbe hinaus. Und die Kombination 16 Eingänge und 8 Ausgänge entspricht exakt einem EPROM 27C512. Nur die PIN Belegung ist bei einem EPROM etwas anders als bei dem PLA Baustein. Aber die PIN Belegung lässt sich sehr einfach durch einen Adapter anpassen. Diese Technik ist sehr gut beschrieben auf der Seit von Jogi:

EPROM Ersatz Schaltung (Seite von Jogi)

Auf der Seite von Jogi ist beschrieben, wie man einen EPROM-PLA Adapter herstellen kann. Man benötigt dazu nur einen EPROM 27C512, zwei Sockel und etwas Draht. Die etwas komfortablere Lösung ist eine Adapter Platine, die Gerber Daten für diese Platine gibt es hier im Download Bereich.

Zudem sind da die EPROM Daten für mehrere gängige Commodore PLA:

  • PLA 324745-01 Daten (CBM 8296 - UE5)
  • PLA 324744-01 Daten (CBM 8296 - UE6)
  • PLA 906114-01 Daten (C64 PLA)
  • PLA 251641-02 Daten (Plus-4)
  • PLA 251641-03 Daten (1551)


Die PLA Ersatz Schaltung auf Basis eines EPROM besticht durch die Einfachheit. Man kann es sehr einfach selbst nachbauen. Leider funktioniert diese Lösung nicht in allen Fällen völlig problemlos. Der C64 ist ziemlich pingelig im Timing und es funktionieren bestimmte Dinge (Software und Hardware Erweiterungen) nicht oder nicht immer. Aber für weniger sensible Geräte wie zB. dem CBM 8296 funktioniert die EPROM Lösung tadellos.


GAL Ersatz Schaltung

Ein GAL ist preisgünstig, einfach zu bekommen und läuft mit 5V. Die Programmierung der Logik kann mit einigen EPROM Programmiergeräten (zB. der verbreitete TL-866) durchgeführt werden. Die GAL Lösungen laufen sehr robust und sicher, auch an sensiblen Geräten wie einem C64.

Um ein PLA zu ersetzen benötigt man ein oder zwei GAL Bausteine. Es funktionieren GAL von Lattice (GAL22v10) und Atmel (ATF22v10), möglicherweise auch viele andere GAL.


CPLD Ersatz Schaltung

Ein CPLD ist etwas 'oversized' als PLA Ersatz. Aber dafür benötigt man nur ein einziges CPLD statt zweier GAL Bausteine. Ein weiterer Vorteil ist, dass man nur eine Platinen Version benötigt, um beliebige PLA 82S100 zu ersetzen. Nur das JEDEC File für den CPLD ist unterschiedlich, die Platine und der CPLD ist immer derselbe.

Die CPLD Ersatz Schaltung ist simpel. Viele CPLD laufen jedoch nur mit 3,3V, was zusätzliche Pegel Wandler erforderlich machen würde. Aber es gibt auch einen CPLD von Atmel der mit 5V läuft (ATF-1504AS) bzw. einen 3,3V CPLD (ATF-1504ASV) der an den IO Pins 5V tolerant ist.

Von den Kosten ist ein CPLD nicht teurer als zwei GAL Bausteine. Insofern ist die CPLD Ersatzschaltung eine sehr gute Lösung. Allerdings ist der CPLD schwerer zu löten und die Programmierung erfolgt über JTAG, daher ist der Nachbau etwas schwieriger.


FPGA Ersatz Schaltung

Ein CPLD ist etwas 'oversized', ein FPGA ist daher absolut 'oversized'. Der FPGA könnte das ganze Retro Computer System ersetzen, nicht nur das PLA ... Zudem gibt es praktisch keine FPGA die mit 5V laufen. Es braucht also eine mehr oder weniger komplexe Außenbeschaltung.

Im Vergleich zu einem CPLD sind FPGA noch schwieriger zu löten, für einen Amateur ist das kaum zu schaffen. Die Programmierung erfolgt ebenfalls über JTAG.

Der FPGA hat aber einen Vorteil, der sehr angenehm ist: der FPGA ist in der Lage gleich mehrere PLA zu ersetzen, oft sind daher mehrere Logik Schaltungen implementiert die man per Jumper auswählen kann. Man kauft also eine FPGA Ersatzlösung, die dann in vielen Geräten laufen kann.


PLA im CBM 8296

Im Commodore 8296 sind zwei PLA Chips (UE5 und UE6). Nach meiner Erfahrung sind diese beiden PLA mit Abstand die häufigste Fehlerursache. Ein 8296 der nicht startet kann sehr oft durch Austausch der PLA repariert werden.

Für das UE5 existiert eine PLA Ersatz Schaltung von Nicolas Welte auf Basis eines einzelnen GAL 20v10. Die Datei ist erhältlich auf (zimmers.net):
How to replace the PLA UE5 in a CBM8296 with a GAL 20V8 written in 2005 by Nicolas Welte ([http://x1541.de ])


Mein CBM 8296 läuft seit Jahren tadellos mit einer PLA Ersatzschaltung auf Basis eines EPROM für UE5 und UE6.

Inspiriert durch die GAL Lösung von Daniël Mantione (PLA20V8) wollte ich diese PLA Ersatzschaltung anpassen für das PLA UE6 in meinem CBM 8296. Nun sind es 4 Platinen geworden. Die Gerber Dateien und die JEDEC Dateien sind hier erhältlich im Download Bereich.

Projekt im Forum des VzEkC e.V. (Verein zum Erhalt klassischer Computer e.V.)




GAL Lösung für UE5

Für das UE5 existiert eine PLA Ersatz Schaltung von Nicolas Welte auf Basis eines einzelnen GAL 20v10. Die GAL 22v10 sind einfacher zu bekommen, deswegen habe ich das PLD File neu übersetzt in ein JEDEC File für das ATF 22v10. Im Download Bereich befinden sich die Gerber Datei für die Adapter Platine sowie die PLD Datei und das JEDEC.


GAL Lösung für UE6

Inspiriert durch die GAL Lösung von Daniël Mantione (PLA20V8) habe ich eine Platine für zwei GAL 22v10 entwickelt. Wie bei der Platine von Daniël Mantione ist jedes GAL verantwortlich für je vier Ausgänge. Aber der Rest ist anders gelöst, auf beide GAL Bausteine sind alle 16 Eingänge geführt, jeweils immer an dieselben PIN der GAL. Dadurch kann man diese Platine prinzipiell als Ersatzschaltung einsetzen für jeden beliebige PLA 82S100. Man muss nur ein JEDEC erstellen für jede neue PLA die man mit dieser Platine ersetzen möchte.

Im Download Bereich befinden sich die Gerber Datei für die Adapter Platine sowie die PLD und JEDEC Dateien.


CPLD Lösung für UE6

Als Variante für die PLA Ersatzschaltung mit 2 GAL Bausteinen habe ich eine Adapter Platine entwickelt mit einem CPLD ATF-1504AS. Auf der Platine ist ein optionaler Wannenstecker (JTAG), über den man den CPLD programmieren kann (JTAG Adapter notwendig - ATDH1150USB). Der Wannenstecker muss nicht bestückt werden, wenn man den CPLD anders programmiert. Auf der Unterseite der Platine kann man zwei SMD Kondensatoren auflöten (2 mal 100nF 0805), als Stütze für den CPLD. Es funktioniert aber auch ohne die Kondensatoren, denn die Ausgänge sind nicht auf hohe 'Slew Rate' gesetzt.

Die CPLD Lösung ist eine universelle Lösung für alle PLA der 82S10x Serie. Der CPLD kann alle Arten von PLA exakt nachbilden, auch die speziellen Typen mit Open Collector, Flip Flop und Rückführungen. Mit einem passenden JEDEC kann man diese Platine als Ersatz für alle PLA Problemfälle nutzen.

Im Download Bereich befinden sich die Gerber Datei für die Adapter Platine sowie die PLD und JEDEC Datei für den UE6 PLA.


EPROM / PLA Adapter

Diese Platine kann auf zwei Arten verwendet werden:

  • als PLA Ersatzschaltung auf EPROM Basis (Löt Trennstelle geschlossen)
  • als PLA Adapter für den TL-866 (Löt Trennstelle offen)


Wenn man die Platine als PLA Ersatzschaltung verwendet, dann muss die Trennstelle auf der Unterseite der Platine geschlossen werden. Ein passender EPROM 27C512 dient dann als Ersatz für die gängigen Commodore PLA (siehe EPROM Ersatzschaltung von Jogi).


Wenn man die Platine als PLA Adapter verwendet, dann muss die Trennstelle auf der Unterseite der Platine offen sein. Der Adapter wirkt dann (nach 'unten') wie ein EPROM, so kann man den Adapter in praktisch jedem EPROM Programmiergerät einsetzen. Auf dem Adapter (nach 'oben') kann man ein PLA 82S100 einsetzen, so kann man das PLA auslesen mit einem EPROM Programmiergerät (zB. einem TL-866).

Der Adapter dient zum auslesen eines unbekannten PLA in einem EPROM Programmiergerät. Aber natürlich kann man statt eines PLA auch eine PLA Ersatzschaltung einsetzen und auslesen. Damit ist es möglich, jede PLA Ersatzschaltung direkt zu testen, indem man die Ersatzschaltung ausliest und die binär Dateien vergleicht. Alternativ kann man das vergleichen der Dateien auch direkt mit dem EPROM Programmiergerät machen (Funktion VERIFY).


News

  • 21.12.2021 -- Release der PLA Ersatz Schaltungen


Downloads


Links