Universal Cartridge 1.5: Unterschied zwischen den Versionen

Aus
Wechseln zu: Navigation, Suche
K (Tw verschob die Seite UC1.5 nach Universal Cartridge 1.5)
K (Downloads)
 
(64 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
[[File:UC1-final-01.jpg|right|thumb|200px|Universal Cartridge 1 (UC1)]]
+
[[File:UC15-THT-final-01.jpg.jpg|right|thumb|200px|Universal Cartridge 1.5 THT]]
[[File:UC1-final-02.jpg|right|thumb|200px|Universal Cartridge 1 (UC1)]]
+
[[File:UC15-SMD-final-01.jpg|right|thumb|200px|Universal Cartridge 1.5 SMD]]
[[File:UC1-Foto-blau.GIF|right|thumb|200px|Universal Cartridge 1 (UC1)]]
+
[[File:UC15-Foto-blau.GIF|right|thumb|200px|Universal Cartridge 1.5 SMD]]
 
__TOC__
 
__TOC__
 
<br />
 
<br />
 
== Die Universal Cartridge 1.5 (UC1-SMD) ==
 
== Die Universal Cartridge 1.5 (UC1-SMD) ==
  
 +
Die '''Universal Cartridge''' (UC Modul) ist ein Modul für den C64 Homecomputer. Mit dem UC Modul kann sich jeder eine eigene Sammlung von Programmen erstellen, und diese bequem per Knopfdruck starten.
  
<br />
 
=== C64 Module ===
 
 
Software für den C64 bekam man entweder als Kassette, Floppy Disk oder Modul. Modul Software zeichnet sich aus durch einfache Handhabung. Einfach Modul in den C64 stecken und einschalten. Die [[UC1]] ist ein Modul für den C64. In dem Modul kann man ein oder mehrere Programme und Spiele speichern und am C64 ausführen.
 
 
 
Beim C64 werden drei Arten von Module unterstützt:
 
 
* 8K Modul
 
* 16K Modul
 
* UltiMax Modul (2, 4, 8 oder 16KB)
 
 
Später hat man dann Module mit "Banking" eingeführt, um die Größenbeschränkung von 16KB zu umgehen. Die Software ist dann aber beschränkt auf genau diesen einen Modultyp.
 
 
 
Das UC1 Modul kann folgende Programme starten:
 
 
* Software für ein 8K Modul
 
* Software für ein 16K Modul
 
* Software für ein Ultimax Modul
 
* Software die als EINE Datei geladen und mit "RUN" gestartet wird (One-Filer)
 
* Software die als EINE Datei geladen und mit 'RESET' oder 'SYS' gestartet wird.
 
 
<br />
 
 
=== UC1 Image Datei ===
 
 
Die Software auf dem UC1 Modul kann man frei zusammen stellen. Dazu dient ein kleines Programm ('''UC-Builder''') am PC. Das Programm erstellt eine sogenannte '''UC1 Image Datei'''. diese Image Datei hat die Endung '''.bin''' und kann direkt in das EPROM programmiert werden.
 
 
 
Die Größe der UC1 Image Datei darf den verfügbaren Platz im EPROM nicht überschreiten. Bei Verwendung eines W27C010 darf die Image Datei eine maximale Größe von 128KB 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.
 
 
<br />
 
=== Der UC-Loader ===
 
 
In dem UC1 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.
 
 
 
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.
 
 
 
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.
 
 
 
Mit den Tasten <F7> oder <F8> kommt man in den normalen C64 Eingabemodus (C64 BASIC). Die Taste <F7> schaltet dabei das ROM der UC1 aus. Man kann dann immer noch auf das UC1-Register an der Adresse $DE00 zugreifen. Mit der Taste <F8> schaltet man zusätzlich auch das UC Register aus. Das UC1 Modul ist dadurch vollkommen unsichtbar und kann nur durch einen Hard Reset des C64 wieder aktiviert werden.
 
 
<br />
 
 
=== Der UC-Builder ===
 
 
In das EPROM des UC1 Modul kann man fertige Image Dateien programmieren.
 
Dazu braucht man nur ein EPROM Programmiergerät.
 
Wenn man eine eigene Zusammenstellung von Programmen machen möchte, dann braucht man den '''UC-Builder'''.
 
 
 
Den UC-Builder benötigt man, um eine UC1 Image Datei zu erstellen.
 
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.
 
 
 
Für die Erstellung des UC-Menü benötigt das UC-Builder folgende Informationen zu jedem C64 Programm:
 
 
* Name des Programm
 
* Art des Programm
 
* Den Dateinamen des Programm
 
 
Der ''Name des Programm'' wird dann beim Start vom UC-Loader angezeigt.
 
Die ''Art des Programm'' benötigt der UC-Loader, damit das Programm korrekt gestartet werden kann.
 
Die ''Dateiname des Programm'' benötigt der UC-Builder, damit er es in die UC Image Datei integrieren kann.
 
 
 
Der UC-Builder ist ein Programm für die Windows Kommandozeile. Es erstellt Image Dateien für das UC1 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.
 
 
 
<u>Optionen</u>:
 
 
Mit der Option '-h' oder '--help' bekommt man eine Ausgabe aller verfügbaren Optionen zum UC-Builder.<br />
 
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 Modul zu erstellen.<br />
 
Mit der Option '-2' oder '--UC2' wird der UC-Builder angewiesen, eine Image Datei für ein [[UC2|UC2 Modul]] zu erstellen.
 
 
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 (UC1 Image Datei) festlegen.<br />
 
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.
 
 
 
Am Ende wirft der UC-Builder zwei Dateien aus. Die BIN Datei ist die '''UC1 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 UC1 Hardware (noch) nicht emulieren kann.
 
 
<gallery mode="traditional" widths=90px heights=90px perrow=9 caption="">
 
Image:UC-Builder_00.png
 
Image:UC1-Tool_01.png
 
Image:UC1-Tool_02.png
 
Image:UC2-Tool_04.png
 
Image:UC1-Tool_05.png
 
</gallery>
 
 
<br />
 
 
=== Die CSV Datei für die Menü Erstellung ===
 
 
Das UC-Builder liest die benötigten Informationen aus einer Text Datei (CSV Datei).
 
Jede Zeile in der CSV Datei steht für ein Programm (bzw. einen Menü Eintrag).
 
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''.
 
 
 
<b><u>Beispiel einer CSV Datei</u>:</b>
 
 
Programm;          Typ;      Dateiname
 
Hello World;        PRG;      10-Zeiler\hello world.prg
 
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 UC1 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.
 
 
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 UC1 Modul erfolgen kann.
 
 
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.
 
 
 
<b><u>Spalte 2 -- Programm Typ</u>:</b>
 
 
Der '''Programm Typ''' steuert, wie das Programm geladen wird. Zudem bestimmt es die Konfiguration der UC1 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).
+
Weitere Infos auf der Seite: [[Universal_Cartridge|C64 Universal Cartridge]]
  
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.
 
  
 +
Die Version UC-1.5 gibt es in zwei Arten:
  
;Folgende Startoptionen sind erlaubt
+
* UC-1.5 SMD
 +
* UC-1.5 THT
  
; 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
+
Die SMD Bauweise ist elegant, braucht weniger Platz und die Bauteile sind preislich günstiger, - aber leider sind die SMD IC auch etwas schwieriger zu löten.
: 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
+
Die THT Bauweise ist leichter zu löten und eignet sich besser für Hobbyisten. Aber auch die THT Version ist aus Platzgründen nicht vollständig "THT", die zwei poligen Bauteile sind SMD der Bauart 0805. Mit einer guten Pinzette sollte das aber für jeden machbar sein.
: 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)
 
 
 
<br />
 
 
 
=== Der File Browser (UC-FB) ===
 
 
 
Der UC1 File Browser wird vom UC1-Menü gestartet mit der Taste <F1>. Der UC1 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 UC1 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 />
 
<br />
Zeile 227: Zeile 27:
 
== Aufbau und Inbetriebnahme ==
 
== Aufbau und Inbetriebnahme ==
  
Der Aufbau des UC1 Modul ist sehr simpel. Es kann sehr einfach selbst nachgebaut werden. Die Bauteile sind günstig und gut erhältlich. Auf SMD Bauteile wurde verzichtet, damit es einfacher zu löten ist.
+
Der Aufbau des UC1.5 Modul ist sehr simpel. Ein GAL 16v8 und zwei TTL Bausteine steuern die beiden Speicherbausteine. Das Modul kann selbst nachgebaut werden. Die Bauteile sind günstig und gut erhältlich. Die beiden TTL und der GAL sind bei der SMD Version in SMD Bauweise. Das erfordert fortgeschrittene Löt Kenntnisse, aber der Schwierigkeitsgrad ist nicht sehr hoch. Bei der TFT Version sind nur die zwei poligen Bauteile (Kondensatoren, der Widerstand und die Diode) in SMD Bauweise.
  
 
<br />
 
<br />
 
=== Technische Spezifikation ===
 
=== Technische Spezifikation ===
  
Es gibt nur wenige Bauteile auf der UC1 Platine:
+
Es gibt nur wenige Bauteile auf der UC1.5 Platine:
  
* ein EPROM mit 64 oder 128K   (zB. W27C512 oder W27C010)
+
* ein EPROM mit 128, 256 oder 512K   (zB. W27C010 oder W27E040)
 +
* bei der TFT Version kann auch ein FLASH Speicher AM29F040 verwendet werden
 
* ein SRAM mit 32KB
 
* ein SRAM mit 32KB
* ein TTL Baustein 74LS273
+
* zwei TTL Bausteine 74LS273
 
* ein GAL 16v8
 
* ein GAL 16v8
* 4 Stück Kondensatoren (100nF)
+
* 6 Stück Kondensatoren (100nF)
* '''optionales''' LED Board (6 x LED)
+
* 1 Widerstand (10K Ohm)
 +
* optional eine Diode
 +
* optional zwei Reset Taster
  
  
Für die Programmierung des EPROM und des GAL wird ein Programmiergerät benötigt (zb. der gängige TL866).
+
Für die Programmierung des EPROM und des GAL wird ein Programmiergerät benötigt (zb. der gängige TL866). Für den GAL wird zusätzlich ein SOIC-20 Adapter benötigt.
 
 
Das LED Board ist optional.
 
Es zeigt den Zustand des Register (D-Latch) an.
 
Die LED sind praktisch, wenn man selbst Software für das UC1 entwickelt.
 
Für die normale Anwendung der UC1 sind die LED völlig überflüssig und können einfach weg gelassen werden.
 
  
 
<br />
 
<br />
 
 
=== Aufbau ===
 
=== Aufbau ===
  
Notwendige Werkzeuge für den Aufbau des UC1 Modul sind:
+
Notwendige Werkzeuge für den Aufbau des UC Modul sind:
  
 
* Lötkolben oder Lötstation + Zinn
 
* Lötkolben oder Lötstation + Zinn
Zeile 259: Zeile 56:
  
  
Die IC sollten gesockelt werden, zumindest das EPROM und das GAL. Wenn man alle Bauteile direkt einlötet, sollte man das EPROM und den GAL vorher programmieren, in der Schaltung ist das ziemlich kompliziert.
+
Die IC sollten gesockelt werden, zumindest das EPROM. Wenn man alle Bauteile direkt einlötet, sollte man das EPROM und den GAL vorher programmieren, in der Schaltung ist das ziemlich kompliziert.
  
 
Am besten man fängt mit den 4 IC Sockel an (niedere Bauteile zuerst). Danach kommen die vier Kondensatoren. mit dem Seitenschneider werden die überstehenden Drähte gekürzt nach dem einlöten. Dann kann man den TTL (74LS273) in den Sockel setzen, die Nase des IC muss nach links gerichtet sein. Als nächstes kommt der RAM Chip in den Sockel, Vorsicht dass kein Pin verbogen wird beim rein drücken in den Sockel.
 
Am besten man fängt mit den 4 IC Sockel an (niedere Bauteile zuerst). Danach kommen die vier Kondensatoren. mit dem Seitenschneider werden die überstehenden Drähte gekürzt nach dem einlöten. Dann kann man den TTL (74LS273) in den Sockel setzen, die Nase des IC muss nach links gerichtet sein. Als nächstes kommt der RAM Chip in den Sockel, Vorsicht dass kein Pin verbogen wird beim rein drücken in den Sockel.
Zeile 272: Zeile 69:
 
Wenn das Board fertig gelötet, der GAL geflashed und eingesetzt ist, dann steht einer Inbetriebnahme nichts mehr im Wege.
 
Wenn das Board fertig gelötet, der GAL geflashed und eingesetzt ist, dann steht einer Inbetriebnahme nichts mehr im Wege.
  
Der Inhalt des EPROM sollte eine garantiert funktionierende Image Datei sein. Ich verwende dazu die Datei ''''MENU.BIN'''' aus dem ZIP Archiv mit den 'Beispiel Images'. Das Image enthält alle Arten von Programmen und auch den UC-FB, der mit der Taste <F1> gestartet werden kann. Wenn nun das UC-Menü erscheint, dann kann es schon mal nicht mehr allzu weit fehlen. Man kann kurz alle Programme starten und damit prüfen, ob das UC1 Modul einwandfrei arbeitet.
+
Der Inhalt des EPROM sollte eine garantiert funktionierende Image Datei sein. Ich verwende dazu die Datei ''''MENU.BIN'''' aus dem ZIP Archiv mit den 'Beispiel Images'. Das Image enthält alle Arten von Programmen und auch den UC-FB, der mit der Taste <F1> gestartet werden kann. Wenn nun das UC-Menü erscheint, dann kann es schon mal nicht mehr allzu weit fehlen. Man kann kurz alle Programme starten und damit prüfen, ob das UC Modul einwandfrei arbeitet.
  
  
 
Wenn das UC-Menü nach dem einschalten nicht erscheint, dann bitte sofort abschalten. Ich teste dann den C64 ohne Modul, ggf. den EPROM Inhalt und auch den Inhalt des GAL.
 
Wenn das UC-Menü nach dem einschalten nicht erscheint, dann bitte sofort abschalten. Ich teste dann den C64 ohne Modul, ggf. den EPROM Inhalt und auch den Inhalt des GAL.
  
Falls EPROM und GAL alles in Ordnung sind, kann man mal ganz ohne jeden IC am UC1 Modul starten. Der C64 sollte normal starten, als wenn kein Modul angesteckt wäre. Man kann auch den GAL in den Sockel stecken und der C64 sollte normal starten. Der 74LS273 darf NICHT gesteckt werden, denn dann ist das UC1 im 16K Modus, der C64 meldet sich mit blauem Schirm ohne Cursor (weil kein BASIC da ist). Wenn also der 74LS273 auf der Platine gesteckt ist, dann muss auch der EPROM mit einem funktionierenden UC-Image gesteckt sein!  
+
Falls EPROM und GAL alles in Ordnung sind, kann man mal ganz ohne jeden IC am UC Modul starten. Der C64 sollte normal starten, als wenn kein Modul angesteckt wäre. Man kann auch den GAL in den Sockel stecken und der C64 sollte normal starten. Der 74LS273 darf NICHT gesteckt werden, denn dann ist das UC im 16K Modus, der C64 meldet sich mit blauem Schirm ohne Cursor (weil kein BASIC da ist). Wenn also der 74LS273 auf der Platine gesteckt ist, dann muss auch der EPROM mit einem funktionierenden UC-Image gesteckt sein!  
  
 
Der SRAM hingegen muss nicht gesteckt sein. Das UC-Menü sollte trotzdem kommen, auch wenn das SRAM nicht vorhanden ist. Man kann auch alle PRG (OneFiler) starten, nur für die CRT Dateien die im Cartridge Modus laufen, benötigt man den SRAM Baustein. Der UC-Filebrowser ist auch eine 8KB CRT Datei, deswegen benötigt der auch ein funktionierendes SRAM.
 
Der SRAM hingegen muss nicht gesteckt sein. Das UC-Menü sollte trotzdem kommen, auch wenn das SRAM nicht vorhanden ist. Man kann auch alle PRG (OneFiler) starten, nur für die CRT Dateien die im Cartridge Modus laufen, benötigt man den SRAM Baustein. Der UC-Filebrowser ist auch eine 8KB CRT Datei, deswegen benötigt der auch ein funktionierendes SRAM.
Zeile 292: Zeile 89:
 
<br />
 
<br />
  
== Technik der UC1 ==
+
== Technik der UC1.5 ==
  
Die Technik des UC1 Modul besteht aus einem GAL, zweier Speicherbausteine und einem D-Latch als Register.
+
Die Technik des Modul besteht aus einem GAL, zweier Speicherbausteine und einem 16 Bit D-Latch (zwei Register).
  
 
<gallery mode="traditional" widths=90px heights=90px perrow=9 caption="">
 
<gallery mode="traditional" widths=90px heights=90px perrow=9 caption="">
Image:C64-UC1-Map.GIF
+
Image:C64-UC15-Map.gif
Image:C64-UC1-BlkSch.GIF
+
Image:C64-UC15-BlkSch.GIF
Image:C64-UC1-Sch.GIF
+
Image:C64-UC15-Sch.png
 
</gallery>
 
</gallery>
  
Zeile 305: Zeile 102:
 
=== GAL 16v8 ===
 
=== GAL 16v8 ===
  
Dank dieses praktischen GAL Chip (ATF 16v8) ist das Design der UC1 extrem reduziert und einfach. Der GAL ersetzt etliche TTL Bausteine und erhöht gleichzeitig die Flexibilität, weil man bei Bedarf die Logik sehr einfach und schnell ändern und anpassen kann.
+
Dank dieses praktischen GAL Chip (ATF 16v8) ist das Design der UC1.5 extrem reduziert und einfach. Der GAL ersetzt etliche TTL Bausteine und erhöht gleichzeitig die Flexibilität, weil man bei Bedarf die Logik sehr einfach und schnell ändern und anpassen kann.
  
 
Getestet ist die Schaltung mit folgenden GAL Bausteinen:
 
Getestet ist die Schaltung mit folgenden GAL Bausteinen:
Zeile 319: Zeile 116:
 
<u>UPDATE</u>:
 
<u>UPDATE</u>:
  
Auch ein weiterer GAL 16v8A läuft definitiv '''NICHT''' im UC1 Modul.
+
Auch ein weiterer GAL 16v8A läuft definitiv '''NICHT''' im UC Modul.
 
Ich rate also explizit ab von dieser GAL Type.
 
Ich rate also explizit ab von dieser GAL Type.
  
Zeile 337: Zeile 134:
  
  
Der EPROM in dem UC1 Modul wird nur als 'Massenspeicher' benutzt.  
+
Der EPROM in dem UC Modul wird nur als 'Massenspeicher' benutzt.  
  
Im Falle, der Benutzer startet ein Programm vom Typ PRG (One-Filer), wird das Programm ab $0801 in den Speicher des C64 geladen. Danach schaltet sich das UC1 ab und es wird das Programm mit RUN gestartet. Das RAM im UC1 Modul ist da nie involviert.
+
Im Falle, der Benutzer startet ein Programm vom Typ PRG (One-Filer), wird das Programm ab $0801 in den Speicher des C64 geladen. Danach schaltet sich das UC1 ab und es wird das Programm mit RUN gestartet. Das SRAM im UC Modul ist da nie involviert.
  
Alle anderen Programmtypen (8K, 16K und Ultimax) benötigen das RAM der UC1. Das Programm wird in den UC1 RAM geladen und die Signale /GAME und /EXROM werden je nach Modul Typ gesetzt. Danach wird der RAM schreib-geschützt und ein Reset des C64 ausgelöst. Das UC1 Modul verhält sich dann exakt wie ein einfaches 8K oder 16K Modul.
+
Alle anderen Programmtypen (8K, 16K und Ultimax) benötigen das SRAM der UC1.5. Das Programm wird in den UC RAM geladen und die Signale /GAME und /EXROM werden je nach Modul Typ gesetzt. Danach wird der RAM schreib-geschützt und ein Reset des C64 ausgelöst. Das UC1.5 Modul verhält sich dann exakt wie ein einfaches 8K oder 16K Modul.
  
 
Im Ultimax Modus können nur bestimmte Paket Größen verwendet werden: 1K, 2K, 4K, 8K und 16K <br />
 
Im Ultimax Modus können nur bestimmte Paket Größen verwendet werden: 1K, 2K, 4K, 8K und 16K <br />
Zeile 347: Zeile 144:
  
  
Eine Stärke des UC1 Modul ist, dass der UC1 RAM schreib geschützt werden kann. Dadurch erscheint das flexible RAM wie ein EPROM, das nicht überschrieben werden kann.
+
Eine Stärke des UC Modul ist, dass der UC RAM schreib geschützt werden kann. Dadurch erscheint das flexible RAM wie ein EPROM, das nicht überschrieben werden kann.
 
Dadurch kann man beliebige Module (8K, 16k und Ultimax) auch von Diskette oder SD-Karte laden. Für diesen Zweck gibt es den modifizierten FB (file browser). Man kann damit direkt auf CRT Dateien zugreifen und diese 'starten'.  
 
Dadurch kann man beliebige Module (8K, 16k und Ultimax) auch von Diskette oder SD-Karte laden. Für diesen Zweck gibt es den modifizierten FB (file browser). Man kann damit direkt auf CRT Dateien zugreifen und diese 'starten'.  
 +
 +
<br />
 +
===== Mögliche Speichertypen in der UC-1.5 SMD =====
 +
 +
Der SRAM ist ein 32Kx8, es können beliebige Typen verwendet werden, solange die PIN Belegung passt.
 +
 +
Das 'ROM' kann ein FLASH Speicher, ein EPROM oder ein EEPROM sein. Es funktionieren alle PIN kompatible Typen mit der Größe 128K, 256K oder 512K. Bei EPROM können auch 1MB  Typen (27C080, 27C801 ...) verwendet werden.
 +
 +
 +
Getestet sind folgende Typen:
 +
 +
* Flash AM29F040  (512K)
 +
* EPROM 27C080    (1MB)
 +
* EPROM 27C020    (256K)
 +
* EEPROM W27E040 (512K)
 +
* EEPROM W27E020 (256K)
 +
* EEPROM W27E010 (128K)
 +
 +
 +
Eine neue, unveränderte Platine ist '''standardmäßig konfiguriert für (E)EPROM Speicher''' bis 512K (zb. W27E040). Für den Einsatz andere Speichertypen muss das Modul vorbereitet werden, siehe dazu das Kapitel '''[[#Hardware_Konfiguration|Hardware Konfiguration]]'''.
 +
 +
<br />
 +
 +
===== Mögliche Speichertypen in der UC-1.5 THT =====
 +
 +
Der SRAM ist ein 32Kx8, es können beliebige Typen verwendet werden, solange die PIN Belegung passt.
 +
 +
Das 'ROM' kann ein FLASH Speicher, ein EPROM oder ein EEPROM sein. Es funktionieren alle PIN kompatible Typen mit der Größe 128K, 256K oder 512K. Bei der THT Platine können KEINE 1MB EPROM Typen verwendet werden.
 +
 +
 +
Getestet sind folgende Typen:
 +
 +
* Flash AM29F040  (512K)
 +
* EPROM 27C020    (256K)
 +
* EEPROM W27E040 (512K)
 +
* EEPROM W27E020 (256K)
 +
* EEPROM W27E010 (128K)
 +
 +
 +
Eine neue, unveränderte Platine ist '''standardmäßig konfiguriert für einen Flash Speicher (AM29F040)'''. Für den Einsatz andere Speichertypen muss das Modul vorbereitet werden, siehe dazu das Kapitel '''[[#Hardware_Konfiguration|Hardware Konfiguration]]'''.
  
 
<br />
 
<br />
Zeile 354: Zeile 191:
 
=== D-Latch als Register ===
 
=== D-Latch als Register ===
  
Das achtfach D-Latch (74LS273) wird als Register zur Konfiguration der UC1 verwendet.
+
Die beiden achtfach D-Latch (74LS273) werden als Register zur Konfiguration der UC1.5 verwendet.
  
Das Register kann vom C64 aus nur schreibend zugegriffen werden. Das Register kann nicht ausgelesen werden. Der Schreibzugriff kann im ganzen IO1 Adressbereich erfolgen (Adresse $DExx). Der Zugriff auf das Register kann aber auch abgeschaltet werden, sodass die Einstellungen der UC1 nicht mehr versehentlich verändert werden können.
+
Die Register können vom C64 aus nur schreibend zugegriffen werden. Die Register können nicht ausgelesen werden. Der Schreibzugriff kann im ganzen IO1 Adressbereich erfolgen (Adresse $DExx). Der Zugriff auf die Register kann aber auch abgeschaltet werden, sodass die Einstellungen der UC1.5 nicht mehr versehentlich verändert werden können.
  
  
Das Register hat 8 Ausgänge zur Steuerung der UC1 Hardware:
+
Das Register A hat 8 Ausgänge zur Steuerung der UC1 Hardware:
 +
 
 +
* fünf Pins dienen dem Banking und selektieren einer 16K Bank
 +
* der Rest ist Reserve
 +
 
 +
 
 +
Das Register B hat 8 Ausgänge zur Steuerung der UC Hardware:
  
* drei Pins dienen dem Banking und selektieren einer 16K Bank
 
 
* zwei Pins steuern Signale zum C64 (/EXROM und /GAME)
 
* zwei Pins steuern Signale zum C64 (/EXROM und /GAME)
* der Rest steuert Funktionen im GAL (EPROM <--> RAM, RAM write access, Register enable/disable)
+
* drei Pins steuern Funktionen im GAL (EPROM <--> RAM, RAM write access, Register enable/disable)
 +
* der Rest ist Reserve
  
  
Zeile 371: Zeile 214:
  
 
<br />
 
<br />
=== das LED Interface ===
 
  
Das LED Interface ermöglicht die visuelle Darstellung der Zustände im D-Latch. Es werden die Ausgänge D0 und D3 bis D7 an den 6 LED angezeigt. Der Anschluss des LED Board ist optional und wird für den Betrieb des Modul nicht benötigt.
+
== Hardware Konfiguration ==
 +
 
 +
Auf der Platine gibt es '''Verbinder''' die mit Jx (zb. J1) gekennzeichnet sind. Diese Verbinder sind für die Hardware Konfiguration zuständig und erhöhen die Flexibilität der Platine. Man kann eine Verbindung herstellen und wieder trennen. Manche Verbindungen sind standardmäßig vorhanden, diese Verbindungen kann man optional zB. mit einem Teppichmesser trennen. Offene Stellen kann man optional mit Hilfe eines Lötkolben und etwas Zinn schlissen und ggf. auch wieder trennen.
 +
 
 +
<br />
 +
===== Hardware Optionen auf der UC-1.5 SMD =====
 +
 
 +
Standardmäßig ist die UC-1.5 gedacht für den Einsatz in einem C64 (UC Modus). Optional kann das Modul aber auch in einer Commodore MAX Machine betrieben werden (experimentell). Dazu kann man optional Stiftleisten für einen Jumper einlöten oder einfach eine Drahtbrücke verwenden. Vorher muss man die standard Verbindung ''C64'' trennen. Wenn das Modul im MAX Machine Modus ist, dann laufen keine UC Image Dateien mehr. Der Grund ist, der C64 befindet sich nun dauerhaft im sogenannten Ultimax Modus und kann nur noch Ultimax Module ausführen.
  
Es gibt die LED Boards um kleines Geld fix und fertig zu kaufen (zB. Ali Express). Es gibt unterschiedliche Farben und auch gemischte Farben am selben Board. Diese LED Boards eignen sich auch hervorragend für die Verwendung auf einem Steckbrett.
+
 
 +
Die Verbinder J1 bis J4 sind für die Konfiguration des ROM Speicher. Eine neue, unveränderte Platine ist '''standardmäßig konfiguriert für (E)EPROM Speicher''' bis 512K (zb. W27E040). Die Adressleitung A18 liegt über den Verbinder J1 am Pin 31 des ROM Sockel. Kleinere Typen (256K und 128K) funktionieren auch unverändert.
 +
 
 +
 
 +
Für den Einsatz eines 1MB EPROM Chip (27C080) muss A19 auf Pin 1 gelegt werden. Dazu dient J4 und J3. Der Verbinder J4 ist standardmäßig auf ''VPP'' verbunden. Diese Leitung muss getrennt werden, danach wird am J4 die Verbindung zu ''A18/A19'' (oben) hergestellt. Der Verbinder J3 muss auf A19 (unten) verbunden werden.  
 +
 
 +
 
 +
Für den Einsatz eines FLASH Speicher (AM29F040) muss A18 mit auf Pin 1 gelegt werden. Dazu dient J4 und J3. Der Verbinder J4 ist standardmäßig auf ''VPP'' verbunden. Diese Leitung muss aufgekratzt werden. Danach wird am J4 die Verbindung zu ''A18/A19'' (oben) hergestellt. Der Verbinder J3 muss auf A18 (oben) verbunden werden.
 +
 
 +
Wenn der FLASH Speicher vom C64 aus programmiert werden soll, dann müssen zusätzlich J1 und J2 verändert werden. Der Verbinder J1 muss getrennt, der Verbinder J2 muss verbunden werden.
  
 
<br />
 
<br />
  
== Programmierung der UC1 ==
+
===== Hardware Optionen auf der UC-1.5 THT =====
  
Für die UC1 gibt es fertige Software:
+
Standardmäßig ist die UC-1.5 gedacht für den Einsatz in einem C64 (UC Modus). Optional kann das Modul aber auch in einer Commodore MAX Machine betrieben werden (experimentell). Dazu kann man optional Stiftleisten für einen Jumper einlöten oder einfach eine Drahtbrücke verwenden. Vorher muss man die standard Verbindung ''C64'' trennen. Wenn das Modul im MAX Machine Modus ist, dann laufen keine UC Image Dateien mehr. Der Grund ist, der C64 befindet sich nun dauerhaft im sogenannten Ultimax Modus und kann nur noch Ultimax Module ausführen.
 +
 
 +
 
 +
Die Verbinder J1 und J2 sind für die Konfiguration des ROM Speicher. Eine neue, unveränderte Platine ist '''standardmäßig konfiguriert für einen Flash Speicher (AM29F040). Die Adressleitung A18 liegt am Pin 1 des ROM Sockel. Kleinere Typen (256K und 128K) sollten auch unverändert funktionieren.
 +
 
 +
 
 +
Für den Einsatz eines EPROM oder EEPROM Speicher muss A18 auf Pin 31 gelegt werden, dazu dienen die Verbinder J1 und J2. Der Verbinder J2 ist standardmäßig auf ''/WE'' verbunden. Diese Leitung muss getrennt werden, dazu wird die Verbindung J2 aufgekratzt. Danach wird am J1 die Verbindung hergestellt, damit liegt Pin 31 auf ''A18''.
 +
 
 +
<br />
 +
 
 +
== Programmierung der UC1.5 ==
 +
 
 +
Für die UC1.5 gibt es fertige Software:
  
 
* UC-Builder --- ein Tool für die Windows Kommandozeile für die Erstellung eigener Image Dateien
 
* UC-Builder --- ein Tool für die Windows Kommandozeile für die Erstellung eigener Image Dateien
Zeile 392: Zeile 262:
 
Der Startcode (UC-Loader) kann durch eigenen Code ersetzt werden.  
 
Der Startcode (UC-Loader) kann durch eigenen Code ersetzt werden.  
  
Der eigene Code kann mit einem Assembler wie zB. dem DASM erstellt werden. Der UC-Builder schreibt den Startcode immer ganz am Anfang der UC Image Datei. Normalerweise verwendet der UC-Builder immer automatisch den internen Startcode (UC-Loader). Wenn der UC-Builder aber eine Datei namens '''''UC1-loader.prg''''' findet, dann verwendet er diese Datei als Startcode und schreibt es an den Anfang der Image Datei.
+
Der eigene Code kann mit einem Assembler wie zB. dem DASM erstellt werden. Der UC-Builder schreibt den Startcode immer ganz am Anfang der UC Image Datei. Normalerweise verwendet der UC-Builder immer automatisch den internen Startcode (UC-Loader). Wenn der UC-Builder aber eine Datei namens '''''UC15-loader.prg''''' findet, dann verwendet er diese Datei als Startcode und schreibt es an den Anfang der Image Datei.
  
  
Wenn man eigene Software für das UC1 Modul entwickeln möchte sind folgende Infos nützlich:
+
Wenn man eigene Software für das UC Modul entwickeln möchte, sind folgende Infos nützlich:
  
* das UC1 Modul startet immer im 16K Cartridge Modus (passende Initialisierung!)
+
* das UC1.5 Modul startet immer im 16K Cartridge Modus (passende Initialisierung!)
* das UC1 Register liegt im ganzen Bereich IO-1 ($DExx)
+
* die UC1.5 Register liegen im gesamten Bereich IO-1 ($DExx)
 
* die selektierte Bank hat immer eine Größe von 16KB (auch wenn nur 8KB sichtbar sind)
 
* die selektierte Bank hat immer eine Größe von 16KB (auch wenn nur 8KB sichtbar sind)
 
* je nach Modus 'sieht' der C64 8KB ab $8000, 16KB ab $8000 oder 8KB ab $8000 und 8KB ab $E000
 
* je nach Modus 'sieht' der C64 8KB ab $8000, 16KB ab $8000 oder 8KB ab $8000 und 8KB ab $E000
Zeile 415: Zeile 285:
 
Der File Browser (UC-FB) kann durch eigenen Code ersetzt werden.  
 
Der File Browser (UC-FB) kann durch eigenen Code ersetzt werden.  
  
Der eigene Code kann mit einem Assembler wie zB. dem DASM erstellt werden. Der UC-Builder schreibt den FB Code in eine UC Image Datei, wenn in der CSV Datei ein Menü Eintrag 'F1' existiert. Normalerweise verwendet der UC-Builder immer automatisch den internen File Browser (UC-FB). Wenn der UC-Builder aber eine Datei namens '''''UC1-FB.prg''''' findet, dann verwendet er diese Datei als File Browser. Der eigene File Browser kann dann vom UC-Menü mit der Taste <F1> gestartet werden.
+
Der eigene Code kann mit einem Assembler wie zB. dem DASM erstellt werden. Der UC-Builder schreibt den FB Code in eine UC Image Datei, wenn in der CSV Datei ein Menü Eintrag 'F1' existiert. Normalerweise verwendet der UC-Builder immer automatisch den internen File Browser (UC-FB). Wenn der UC-Builder aber eine Datei namens '''''UC15-FB.prg''''' findet, dann verwendet er diese Datei als File Browser. Der eigene File Browser kann dann vom UC-Menü mit der Taste <F1> gestartet werden.
  
Durch die bloße Existenz der Datei '''''UC1-FB.prg''''' wird also generell ein eigener Code verwendet. Alternativ dazu kann ein eigener File Browser Code auch ganz einfach in der CSV Datei eingebunden werden. Dazu benötigt man nur eine ganz normale Zeile in der CSV Datei, wobei der Menüeintrag "F1" heißen muss.
+
Durch die bloße Existenz der Datei '''''UC15-FB.prg''''' wird also generell ein eigener Code verwendet. Alternativ dazu kann ein eigener File Browser Code auch ganz einfach in der CSV Datei eingebunden werden. Dazu benötigt man nur eine ganz normale Zeile in der CSV Datei, wobei der Menüeintrag "F1" heißen muss.
  
  
Zeile 426: Zeile 296:
  
 
<br />
 
<br />
==== Das Register ====
+
==== Die Register ====
  
Das UC Register liegt an der Adresse $DE00 und kann nur geschrieben werden. Das Register kann 'versteckt' werden (UC Register -- IO disable). Das UC1 Modul kann dann nicht mehr konfiguriert werden. Das UC Register wird erst nach einem Hard Reset wieder sichtbar.
+
Die beiden UC Register liegen im IO-1 Block an Adresse $DE02 und $DE03. Die Register können nur geschrieben werden. Die UC Register können 'versteckt' werden (UC Register B -- IO disable). Nachdem das Bit gesetzt wird kann das UC Modul nicht mehr konfiguriert werden. Die UC Register sind erst nach einem Hard Reset wieder sichtbar.
  
  
UC Register:
+
;UC2 Register A:
  
 
* Bit 0 --- Banking A14
 
* Bit 0 --- Banking A14
 
* Bit 1 --- Banking A15
 
* Bit 1 --- Banking A15
 
* Bit 2 --- Banking A16
 
* Bit 2 --- Banking A16
* Bit 3 --- IO Register disable (1 - Register ist unsichtbar)
+
* Bit 3 --- Banking A17
 +
* Bit 4 --- Banking A18
 +
 
 +
 
 +
 
 +
;UC2 Register B:
 +
 
 +
* Bit 3 --- IO Register disable (1 - Register sind unsichtbar)
 
* Bit 4 --- SRAM write enable (1 - SRAM kann beschrieben werden)
 
* Bit 4 --- SRAM write enable (1 - SRAM kann beschrieben werden)
* Bit 5 --- SRAM select  (1 - RAM, 0 - EPROM)
+
* Bit 5 --- SRAM select  (1 - RAM, 0 - FLASH)
* Bit 6 --- Signal /GAME  (GAME und EXROM bestimmen den C64 Cartridge Mode)
+
* Bit 6 --- Signal /GAME  (GAME und EXROM bestimmen den C64 Cartridge Modus)
* Bit 7 --- Signal /EXROM  (GAME und EXROM bestimmen den C64 Cartridge Mode)
+
* Bit 7 --- Signal /EXROM  (GAME und EXROM bestimmen den C64 Cartridge Modus)
  
  
Zeile 446: Zeile 323:
 
==== Der Modul RAM ====
 
==== Der Modul RAM ====
  
Der RAM des UC1 Modul ist gedacht als "EPROM Ersatz", den man sehr schnell und einfach beschreiben kann. Dadurch kann man ROM Module einfach als CRT Datei laden und ausführen.
+
Der RAM des UC Modul ist gedacht als "EPROM Ersatz", den man sehr schnell und einfach beschreiben kann. Dadurch kann man ROM Module einfach als CRT Datei laden und ausführen.
  
Will man den RAM aber als '''32K Speichererweiterung''' benutzen, dann muss man folgende Dinge beachten. Beim C64 liegt RAM im gesamten 64K Adressraum. Dieser C64 eigene RAM wird immer beschrieben, auch wenn ein ROM oder das UC-RAM sichtbar sind. Die einzige Ausnahme ist, wenn der C64 sich im Ultimax Modus befindet. Nur im Ultimax Modus kann man den UC1 RAM beschreiben, ohne gleichzeitig einen C64 eigenen RAM zu beschreiben. Die Methode ist also, in den Ultimax Modus zu wechseln (/GAME = 0 und /EXROM = 1), ein oder mehrere Bytes zu schreiben und wieder in den normalen Zustand zurück zu kehren.
+
Will man den RAM aber als '''32K Speichererweiterung''' benutzen, dann muss man folgende Dinge beachten. Beim C64 liegt RAM im gesamten 64K Adressraum. Dieser C64 eigene RAM wird immer beschrieben, auch wenn ein ROM oder das UC-RAM sichtbar sind. Die einzige Ausnahme ist, wenn der C64 sich im Ultimax Modus befindet. Nur im Ultimax Modus kann man den UC RAM beschreiben, ohne gleichzeitig einen C64 eigenen RAM zu beschreiben. Die Methode ist also, in den Ultimax Modus zu wechseln (/GAME = 0 und /EXROM = 1), ein oder mehrere Bytes zu schreiben und wieder in den normalen Zustand zurück zu kehren.
  
 
Das UC-Ram ist zusätzlich '''sichtbar im IO Adress-Bereich''' (IO-1 und IO-2). Damit hat man bis zu 512 Byte zusätzlichen Speicher zur Verfügung. Der Speicher kann auch mit Schreibschutz betrieben werden, wodurch man quasi ein ROM im IO Bereich sieht. Lesend sind immer die ganzen 512 Byte verfügbar. Schreibend sind nur 256 Bytes des IO-2 verfügbar. Der IO-1 Bereich kann schreibend zugegriffen werden, wenn das UC Register ausgeblendet ist (IO Register disable). Der Schreibzugriff ins UC RAM über den IO Bereich funktioniert nur, wenn schreiben erlaubt ist (SRAM write enable Bit) und das EPROM selektiert ist (SRAM select Bit = 0).
 
Das UC-Ram ist zusätzlich '''sichtbar im IO Adress-Bereich''' (IO-1 und IO-2). Damit hat man bis zu 512 Byte zusätzlichen Speicher zur Verfügung. Der Speicher kann auch mit Schreibschutz betrieben werden, wodurch man quasi ein ROM im IO Bereich sieht. Lesend sind immer die ganzen 512 Byte verfügbar. Schreibend sind nur 256 Bytes des IO-2 verfügbar. Der IO-1 Bereich kann schreibend zugegriffen werden, wenn das UC Register ausgeblendet ist (IO Register disable). Der Schreibzugriff ins UC RAM über den IO Bereich funktioniert nur, wenn schreiben erlaubt ist (SRAM write enable Bit) und das EPROM selektiert ist (SRAM select Bit = 0).
Zeile 456: Zeile 333:
 
<br />
 
<br />
  
== Entwicklung und erste Prototypen ==
+
== Entwicklung und Prototypen ==
 
 
Erste Versuche mit EPROM und SRAM am C64 Erweiterungsport erfolgten mit Replica Platinen der MagicDesk und der Expert Cartridge.
 
 
 
Erste Versuche mit einem GAL 16v8 am C64 Erweiterungsport erfolgten auf einer Lochraster Prototype Platine.
 
 
 
Die ersten Versuche waren Erfolg versprechend. Die Überlegung war nun, einen Prototyp zu fädeln oder gleich eine Platine zu machen.
 
Mit Platinen Layout habe ich mich noch nie beschäftigt, ich entschied mich für das Programm SPRINT LAYOUT, weil ich schon das Produkt SPLAN von derselben Firma kennen und schätzen gelernt habe.
 
  
Also meine erste Platine ...
+
Der Nachbau der [[UC2|UC2]] ist wegen des CPLD Baustein etwas schwieriger. Der Wunsch nach einem größeren EPROM kombiniert mit dem einfachen Design der UC1 führte zur Entwicklung der UC-1.5 Platin. Der erste Versuchsaufbau mit einem UC1 Modul plus einem Steckbrett Aufbau funktionierte auf Anhieb. Bei dem ersten Entwurf der Platine zeigte aber, dass der Platz sehr knapp ist, speziell wenn man auch die beiden Taster der UC2 integrieren möchte. Deshalb kam es zu der Entscheidung, auf SMD Technik zu setzen. Die verwendeten Bauteile haben einen Pin Abstand von 1,27mm (SOIC-20), wodurch es nicht sehr schwer zu löten ist.
Zum Glück habe ich großartige Hilfe bekommen aus dem [https://forum.classic-computing.de/forum/ '''VzEkC e.V.'''] (Verein zur Erhaltung klassischer Computer e.V.).
 
  
'''Nochmals an diesem Punkt vielen Dank für die zahlreichen Tipps und die Hilfe bei der Layout Erstellung!!'''
+
Das GAL 16v8 in SMD Bauweise kann mit einem normalen EPROM Programmiergerät (zB. TL866) programmiert werden. Allerdings benötigt man eine SOIC-20 Adapter Platine.
  
  
<u>Prototypen</u>:  
+
'''UC-1.5 SMD:'''
  
 
<gallery mode="traditional" widths=90px heights=90px perrow=9 caption="">
 
<gallery mode="traditional" widths=90px heights=90px perrow=9 caption="">
Image:C64-GAL-Test.jpg
+
Image:UC15-Lay-OB.GIF
Image:C64 GAL Test.jpg
+
Image:UC15-Lay UB.GIF
Image:UC1-Proto-Lay-O.GIF
+
Image:UC15-Foto-blau.GIF
Image:UC1-Proto-Lay U.GIF
+
Image:UC15-SMD-final-01.jpg
Image:UC1-Proto-Lay-B.GIF
 
Image:UC1 Proto 01.jpg
 
Image:UC1 Proto 02c.jpg
 
Image:UC1 Proto 02.jpg
 
 
</gallery>
 
</gallery>
 
Leider haben sich bei dem Platinen Prototyp noch zwei kleine Fehler eingeschlichen. Die Probleme wurden mit Fädel-Draht behoben und das Layout wurde überarbeitet.
 
  
  
<u>Im neuen Layout wurde noch das LED Board Interface hinzu gefügt</u>:
+
'''UC-1.5 THT:'''
  
 
<gallery mode="traditional" widths=90px heights=90px perrow=9 caption="">
 
<gallery mode="traditional" widths=90px heights=90px perrow=9 caption="">
Image:UC1-Lay-OB.GIF
+
Image:UC15-TFT-Lay-OB.GIF
Image:UC1-Lay U.GIF
+
Image:UC15-TFT-Lay UB.GIF
Image:UC1-Foto-blau.GIF
+
Image:UC15-TFT-Foto-blau.GIF
Image:UC1-final-01.jpg
+
Image:UC15-THT-final-01.jpg.jpg
Image:UC1-final-02.jpg
 
Image:UC1-final-03.jpg
 
 
</gallery>
 
</gallery>
  
Zeile 502: Zeile 363:
 
== News ==
 
== News ==
  
* 14.9.2021 -- Gerber Dateien überarbeitet
+
* 29.10.2021 - UC-1.5 THT Rev.4
 +
* 21.10.2021 - UC-1.5 THT Rev.3 (Achtung: Rev.3 hat einen Bug, Leiterbahn D0!!)
 +
* 17.10.2021 - UC-1.5 SMD Rev.5
  
 
<br />
 
<br />
 +
 
== Downloads ==
 
== Downloads ==
  
* [[Media:UC1-Gerber.zip|Gerber Dateien]]
+
* [[Media:UC15-SMD-Gerber.zip|Gerber Dateien Rev.5a  (SMD Version)]]
* [[Media:UC1-Jedec-B.zip|Jedec für das GAL]] - Version B für maximale Kompatibilität des UC-Loader (IO Bereich ohne Speicherzugriff)
+
* [[Media:UC15-THT-Gerber.zip|Gerber Dateien Rev.4a  (THT Version)]]
* Jedec für das GAL - Version C mit Speicherzugriff im IO1 und IO2 Bereich
+
* [[Media:UC15-Jedec-SMD.zip|Jedec für das GAL (für die SMD Version)]] - Speicherzugriff im IO Bereich
* [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:UC15-Jedec-THT.zip|Jedec für das GAL (für die THT Version)]] - Speicherzugriff im IO Bereich
 +
* [[Media:UC15-Jedec-B.zip|Jedec für das GAL (für die SMD Version)]] - kleine Version B für maximale Kompatibilität des UC-Loader (IO Bereich ohne Speicherzugriff)
 +
* [[Media:UC15-Jedec-B-THT.zip|Jedec für das GAL (für die THT Version)]] - kleine Version B für maximale Kompatibilität des UC-Loader (IO Bereich ohne Speicherzugriff)
 +
* [[Media:Multimax-UC2-UC1.5.zip|MultiMax Image für die UC-1.5 und UC-2]]
 +
* [[Media:Proto-case-UC15.zip|STL Dateien von Proto für die UC-1.5]]
  
 
<br />
 
<br />
  
== WEB Links ==
+
== Links ==
 +
 
 +
* [[Universal_Cartridge|Allgemeines zu C64 Universal Cartridge]]
 +
* [[Universal_Cartridge_1|Details zur UC-1]]
 +
* [[Universal_Cartridge_2|Details zur UC-2]]
 +
* [[UC-Builder]]
  
* [https://forum.classic-computing.de/forum/index.php?thread/25026-entwicklung-platine-mit-sprint-layout-c64-cartridge-ram-rom/ Entwicklung des Platinen Layout im VzEkC e.V. Forum]
 
* [https://restore-store.de/ die UC1 ist demnächst erhältlich im '''Restore-Store''']
 
* [https://www.pcbway.com/project/shareproject/UC1___Ultimate_Cartridge_1.html UC1 als 'Shared Project' bei PCBWay]
 
* [https://de.aliexpress.com/item/32274780013.html? LED Modul Board (Ali-Express)]
 
 
* [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]
 
* [http://www.harries.dk/files/C64MemoryMaps.pdf C64 Banking (PDF)]
 
* [http://www.harries.dk/files/C64MemoryMaps.pdf C64 Banking (PDF)]

Aktuelle Version vom 17. August 2024, 17:14 Uhr

Universal Cartridge 1.5 THT
Universal Cartridge 1.5 SMD
Universal Cartridge 1.5 SMD


Die Universal Cartridge 1.5 (UC1-SMD)

Die Universal Cartridge (UC Modul) ist ein Modul für den C64 Homecomputer. Mit dem UC Modul kann sich jeder eine eigene Sammlung von Programmen erstellen, und diese bequem per Knopfdruck starten.


Weitere Infos auf der Seite: C64 Universal Cartridge


Die Version UC-1.5 gibt es in zwei Arten:

  • UC-1.5 SMD
  • UC-1.5 THT


Die SMD Bauweise ist elegant, braucht weniger Platz und die Bauteile sind preislich günstiger, - aber leider sind die SMD IC auch etwas schwieriger zu löten.


Die THT Bauweise ist leichter zu löten und eignet sich besser für Hobbyisten. Aber auch die THT Version ist aus Platzgründen nicht vollständig "THT", die zwei poligen Bauteile sind SMD der Bauart 0805. Mit einer guten Pinzette sollte das aber für jeden machbar sein.


Aufbau und Inbetriebnahme

Der Aufbau des UC1.5 Modul ist sehr simpel. Ein GAL 16v8 und zwei TTL Bausteine steuern die beiden Speicherbausteine. Das Modul kann selbst nachgebaut werden. Die Bauteile sind günstig und gut erhältlich. Die beiden TTL und der GAL sind bei der SMD Version in SMD Bauweise. Das erfordert fortgeschrittene Löt Kenntnisse, aber der Schwierigkeitsgrad ist nicht sehr hoch. Bei der TFT Version sind nur die zwei poligen Bauteile (Kondensatoren, der Widerstand und die Diode) in SMD Bauweise.


Technische Spezifikation

Es gibt nur wenige Bauteile auf der UC1.5 Platine:

  • ein EPROM mit 128, 256 oder 512K (zB. W27C010 oder W27E040)
  • bei der TFT Version kann auch ein FLASH Speicher AM29F040 verwendet werden
  • ein SRAM mit 32KB
  • zwei TTL Bausteine 74LS273
  • ein GAL 16v8
  • 6 Stück Kondensatoren (100nF)
  • 1 Widerstand (10K Ohm)
  • optional eine Diode
  • optional zwei Reset Taster


Für die Programmierung des EPROM und des GAL wird ein Programmiergerät benötigt (zb. der gängige TL866). Für den GAL wird zusätzlich ein SOIC-20 Adapter benötigt.


Aufbau

Notwendige Werkzeuge für den Aufbau des UC Modul sind:

  • Lötkolben oder Lötstation + Zinn
  • Seitenschneider


Die IC sollten gesockelt werden, zumindest das EPROM. Wenn man alle Bauteile direkt einlötet, sollte man das EPROM und den GAL vorher programmieren, in der Schaltung ist das ziemlich kompliziert.

Am besten man fängt mit den 4 IC Sockel an (niedere Bauteile zuerst). Danach kommen die vier Kondensatoren. mit dem Seitenschneider werden die überstehenden Drähte gekürzt nach dem einlöten. Dann kann man den TTL (74LS273) in den Sockel setzen, die Nase des IC muss nach links gerichtet sein. Als nächstes kommt der RAM Chip in den Sockel, Vorsicht dass kein Pin verbogen wird beim rein drücken in den Sockel.

Nun wird der GAL programmiert (falls der nicht schon programmiert kommt). Es eignen sich alle 16v8 von Lattice und Atmel (möglicherweise auch 16v8 GAL anderer Hersteller). Der "D" Typ von Lattice ist besonders Strom sparend, die ATF Typen sind alle von modernerer Bauart und gut geeignet. Für die Programmierung benötigt man ein geeignetes Programmiergerät, zum Beispiel den TL866. Im Programm stellt man den verwendeten GAL ein. Danach lädt man das Jedec File und drückt den "Prog" Button. Wenn der Programmiervorgang erfolgreich abschließt kann man den GAL in seinem Sockel einsetzen.

Als letztes erfolgt die Programmierung des EPROM (bzw. des EEPROM). Dieser Schritt kann ggf. öfters wiederholt werden, wenn man andere Image Dateien probieren will.


Inbetriebnahme

Wenn das Board fertig gelötet, der GAL geflashed und eingesetzt ist, dann steht einer Inbetriebnahme nichts mehr im Wege.

Der Inhalt des EPROM sollte eine garantiert funktionierende Image Datei sein. Ich verwende dazu die Datei 'MENU.BIN' aus dem ZIP Archiv mit den 'Beispiel Images'. Das Image enthält alle Arten von Programmen und auch den UC-FB, der mit der Taste <F1> gestartet werden kann. Wenn nun das UC-Menü erscheint, dann kann es schon mal nicht mehr allzu weit fehlen. Man kann kurz alle Programme starten und damit prüfen, ob das UC Modul einwandfrei arbeitet.


Wenn das UC-Menü nach dem einschalten nicht erscheint, dann bitte sofort abschalten. Ich teste dann den C64 ohne Modul, ggf. den EPROM Inhalt und auch den Inhalt des GAL.

Falls EPROM und GAL alles in Ordnung sind, kann man mal ganz ohne jeden IC am UC Modul starten. Der C64 sollte normal starten, als wenn kein Modul angesteckt wäre. Man kann auch den GAL in den Sockel stecken und der C64 sollte normal starten. Der 74LS273 darf NICHT gesteckt werden, denn dann ist das UC im 16K Modus, der C64 meldet sich mit blauem Schirm ohne Cursor (weil kein BASIC da ist). Wenn also der 74LS273 auf der Platine gesteckt ist, dann muss auch der EPROM mit einem funktionierenden UC-Image gesteckt sein!

Der SRAM hingegen muss nicht gesteckt sein. Das UC-Menü sollte trotzdem kommen, auch wenn das SRAM nicht vorhanden ist. Man kann auch alle PRG (OneFiler) starten, nur für die CRT Dateien die im Cartridge Modus laufen, benötigt man den SRAM Baustein. Der UC-Filebrowser ist auch eine 8KB CRT Datei, deswegen benötigt der auch ein funktionierendes SRAM.


Wenn das UC-Menü nicht kommt, obwohl EPROM, GAL und 74LS273 in Ordnung sind, dann liegt es wohl an der Platine selbst. In diesem Fall empfehle ich eine optische Kontrolle der Lötstellen und den Einsatz eines Ohmmeter. Bitte kontrollieren Sie mit dem Ohmmeter folgende Dinge:

  • liegt der Anschluss GND an den IC Pins an
  • liegt der Anschluss 5V an den IC Pins an
  • gibt es einen Kurzschluss zwischen GND und 5V
  • liegt GND an einem PIN am C64 Port an
  • liegt GND an einem IC PIN wo kein Ground sein sollte
  • zuletzt mit dem Schaltbild alle Leitungen kontrollieren (Adressbus, Datenbus, Steuerleitungen, Verbindungen vom GAL zu den Chips, Verbindungen vom TTL zu den Chips)


Technik der UC1.5

Die Technik des Modul besteht aus einem GAL, zweier Speicherbausteine und einem 16 Bit D-Latch (zwei Register).


GAL 16v8

Dank dieses praktischen GAL Chip (ATF 16v8) ist das Design der UC1.5 extrem reduziert und einfach. Der GAL ersetzt etliche TTL Bausteine und erhöht gleichzeitig die Flexibilität, weil man bei Bedarf die Logik sehr einfach und schnell ändern und anpassen kann.

Getestet ist die Schaltung mit folgenden GAL Bausteinen:

  • Microchip ATF 16v8
  • Lattice GAL 16v8B
  • Lattice GAL 16v8D


Mit einem Lattice GAL 16v8A hatte ich Probleme, es läuft zwar prinzipiell schon, aber nicht 100% stabil. Da ich nur ein einziges GAL 16v8A besitze, kann ich nicht sagen, ob es ein generelles Problem ist oder ob nur mein IC eine Macke hat.


UPDATE:

Auch ein weiterer GAL 16v8A läuft definitiv NICHT im UC Modul. Ich rate also explizit ab von dieser GAL Type.


Speicher

Die beiden Speicherbausteine (EPROM und SRAM) sind am Adressbus (A0 bis A13) und am Datenbus des C64 angeschlossen. Die Steuerung (Chip-Select und Write-Enable) wird vom GAL gesteuert. Der GAL entscheidet ob und welcher der beiden Speicher im Adressraum des C64 eingeblendet wird. Beim SRAM gibt es zusätzlich die Möglichkeit, es schreibend zuzugreifen.

Mögliche Adressräume im C64:

  • LoROM ($8000 bis $9FFF)
  • HiROM ($A000 bis $BFFF oder $E000 bis $FFFF im Ultimax Mode)
  • IO1 Bereich ($DE00 bis $DEFF)
  • IO2 Bereich ($DF00 bis $DFFF)
  • der SRAM kann im Bereich $4000 bis $BFFF zugegriffen werden (nur schreibend!)


Der EPROM in dem UC Modul wird nur als 'Massenspeicher' benutzt.

Im Falle, der Benutzer startet ein Programm vom Typ PRG (One-Filer), wird das Programm ab $0801 in den Speicher des C64 geladen. Danach schaltet sich das UC1 ab und es wird das Programm mit RUN gestartet. Das SRAM im UC Modul ist da nie involviert.

Alle anderen Programmtypen (8K, 16K und Ultimax) benötigen das SRAM der UC1.5. Das Programm wird in den UC RAM geladen und die Signale /GAME und /EXROM werden je nach Modul Typ gesetzt. Danach wird der RAM schreib-geschützt und ein Reset des C64 ausgelöst. Das UC1.5 Modul verhält sich dann exakt wie ein einfaches 8K oder 16K Modul.

Im Ultimax Modus können nur bestimmte Paket Größen verwendet werden: 1K, 2K, 4K, 8K und 16K
Das Paket wird gespiegelt, sodass immer 16K zur Gänze ausgefüllt sind.


Eine Stärke des UC Modul ist, dass der UC RAM schreib geschützt werden kann. Dadurch erscheint das flexible RAM wie ein EPROM, das nicht überschrieben werden kann. Dadurch kann man beliebige Module (8K, 16k und Ultimax) auch von Diskette oder SD-Karte laden. Für diesen Zweck gibt es den modifizierten FB (file browser). Man kann damit direkt auf CRT Dateien zugreifen und diese 'starten'.


Mögliche Speichertypen in der UC-1.5 SMD

Der SRAM ist ein 32Kx8, es können beliebige Typen verwendet werden, solange die PIN Belegung passt.

Das 'ROM' kann ein FLASH Speicher, ein EPROM oder ein EEPROM sein. Es funktionieren alle PIN kompatible Typen mit der Größe 128K, 256K oder 512K. Bei EPROM können auch 1MB Typen (27C080, 27C801 ...) verwendet werden.


Getestet sind folgende Typen:

  • Flash AM29F040 (512K)
  • EPROM 27C080 (1MB)
  • EPROM 27C020 (256K)
  • EEPROM W27E040 (512K)
  • EEPROM W27E020 (256K)
  • EEPROM W27E010 (128K)


Eine neue, unveränderte Platine ist standardmäßig konfiguriert für (E)EPROM Speicher bis 512K (zb. W27E040). Für den Einsatz andere Speichertypen muss das Modul vorbereitet werden, siehe dazu das Kapitel Hardware Konfiguration.


Mögliche Speichertypen in der UC-1.5 THT

Der SRAM ist ein 32Kx8, es können beliebige Typen verwendet werden, solange die PIN Belegung passt.

Das 'ROM' kann ein FLASH Speicher, ein EPROM oder ein EEPROM sein. Es funktionieren alle PIN kompatible Typen mit der Größe 128K, 256K oder 512K. Bei der THT Platine können KEINE 1MB EPROM Typen verwendet werden.


Getestet sind folgende Typen:

  • Flash AM29F040 (512K)
  • EPROM 27C020 (256K)
  • EEPROM W27E040 (512K)
  • EEPROM W27E020 (256K)
  • EEPROM W27E010 (128K)


Eine neue, unveränderte Platine ist standardmäßig konfiguriert für einen Flash Speicher (AM29F040). Für den Einsatz andere Speichertypen muss das Modul vorbereitet werden, siehe dazu das Kapitel Hardware Konfiguration.


D-Latch als Register

Die beiden achtfach D-Latch (74LS273) werden als Register zur Konfiguration der UC1.5 verwendet.

Die Register können vom C64 aus nur schreibend zugegriffen werden. Die Register können nicht ausgelesen werden. Der Schreibzugriff kann im ganzen IO1 Adressbereich erfolgen (Adresse $DExx). Der Zugriff auf die Register kann aber auch abgeschaltet werden, sodass die Einstellungen der UC1.5 nicht mehr versehentlich verändert werden können.


Das Register A hat 8 Ausgänge zur Steuerung der UC1 Hardware:

  • fünf Pins dienen dem Banking und selektieren einer 16K Bank
  • der Rest ist Reserve


Das Register B hat 8 Ausgänge zur Steuerung der UC Hardware:

  • zwei Pins steuern Signale zum C64 (/EXROM und /GAME)
  • drei Pins steuern Funktionen im GAL (EPROM <--> RAM, RAM write access, Register enable/disable)
  • der Rest ist Reserve


Nach dem Einschalten des C64 (oder einem Hard Reset) sind alle Ausgänge des D-Latch auf low (Grundzustand). Das schaltet die Speicher auf Bank 0, selektiert das EPROM und schaltet den C64 in den Cartridge Modus '16K'. Im EPROM auf Bank null ist der UC-Loader gespeichert der nun das UC-Menü anzeigt ...


Hardware Konfiguration

Auf der Platine gibt es Verbinder die mit Jx (zb. J1) gekennzeichnet sind. Diese Verbinder sind für die Hardware Konfiguration zuständig und erhöhen die Flexibilität der Platine. Man kann eine Verbindung herstellen und wieder trennen. Manche Verbindungen sind standardmäßig vorhanden, diese Verbindungen kann man optional zB. mit einem Teppichmesser trennen. Offene Stellen kann man optional mit Hilfe eines Lötkolben und etwas Zinn schlissen und ggf. auch wieder trennen.


Hardware Optionen auf der UC-1.5 SMD

Standardmäßig ist die UC-1.5 gedacht für den Einsatz in einem C64 (UC Modus). Optional kann das Modul aber auch in einer Commodore MAX Machine betrieben werden (experimentell). Dazu kann man optional Stiftleisten für einen Jumper einlöten oder einfach eine Drahtbrücke verwenden. Vorher muss man die standard Verbindung C64 trennen. Wenn das Modul im MAX Machine Modus ist, dann laufen keine UC Image Dateien mehr. Der Grund ist, der C64 befindet sich nun dauerhaft im sogenannten Ultimax Modus und kann nur noch Ultimax Module ausführen.


Die Verbinder J1 bis J4 sind für die Konfiguration des ROM Speicher. Eine neue, unveränderte Platine ist standardmäßig konfiguriert für (E)EPROM Speicher bis 512K (zb. W27E040). Die Adressleitung A18 liegt über den Verbinder J1 am Pin 31 des ROM Sockel. Kleinere Typen (256K und 128K) funktionieren auch unverändert.


Für den Einsatz eines 1MB EPROM Chip (27C080) muss A19 auf Pin 1 gelegt werden. Dazu dient J4 und J3. Der Verbinder J4 ist standardmäßig auf VPP verbunden. Diese Leitung muss getrennt werden, danach wird am J4 die Verbindung zu A18/A19 (oben) hergestellt. Der Verbinder J3 muss auf A19 (unten) verbunden werden.


Für den Einsatz eines FLASH Speicher (AM29F040) muss A18 mit auf Pin 1 gelegt werden. Dazu dient J4 und J3. Der Verbinder J4 ist standardmäßig auf VPP verbunden. Diese Leitung muss aufgekratzt werden. Danach wird am J4 die Verbindung zu A18/A19 (oben) hergestellt. Der Verbinder J3 muss auf A18 (oben) verbunden werden.

Wenn der FLASH Speicher vom C64 aus programmiert werden soll, dann müssen zusätzlich J1 und J2 verändert werden. Der Verbinder J1 muss getrennt, der Verbinder J2 muss verbunden werden.


Hardware Optionen auf der UC-1.5 THT

Standardmäßig ist die UC-1.5 gedacht für den Einsatz in einem C64 (UC Modus). Optional kann das Modul aber auch in einer Commodore MAX Machine betrieben werden (experimentell). Dazu kann man optional Stiftleisten für einen Jumper einlöten oder einfach eine Drahtbrücke verwenden. Vorher muss man die standard Verbindung C64 trennen. Wenn das Modul im MAX Machine Modus ist, dann laufen keine UC Image Dateien mehr. Der Grund ist, der C64 befindet sich nun dauerhaft im sogenannten Ultimax Modus und kann nur noch Ultimax Module ausführen.


Die Verbinder J1 und J2 sind für die Konfiguration des ROM Speicher. Eine neue, unveränderte Platine ist standardmäßig konfiguriert für einen Flash Speicher (AM29F040). Die Adressleitung A18 liegt am Pin 1 des ROM Sockel. Kleinere Typen (256K und 128K) sollten auch unverändert funktionieren.


Für den Einsatz eines EPROM oder EEPROM Speicher muss A18 auf Pin 31 gelegt werden, dazu dienen die Verbinder J1 und J2. Der Verbinder J2 ist standardmäßig auf /WE verbunden. Diese Leitung muss getrennt werden, dazu wird die Verbindung J2 aufgekratzt. Danach wird am J1 die Verbindung hergestellt, damit liegt Pin 31 auf A18.


Programmierung der UC1.5

Für die UC1.5 gibt es fertige Software:

  • UC-Builder --- ein Tool für die Windows Kommandozeile für die Erstellung eigener Image Dateien
  • UC-Loader --- dieser Code ist in jeder UC Image Datei als Startcode und zur Programm Auswahl (UC Menü)
  • UC-FB --------- ein optionaler Datei Browser auf Basis des bewährten Tool FB


Eigener Startcode

Der Startcode (UC-Loader) kann durch eigenen Code ersetzt werden.

Der eigene Code kann mit einem Assembler wie zB. dem DASM erstellt werden. Der UC-Builder schreibt den Startcode immer ganz am Anfang der UC Image Datei. Normalerweise verwendet der UC-Builder immer automatisch den internen Startcode (UC-Loader). Wenn der UC-Builder aber eine Datei namens UC15-loader.prg findet, dann verwendet er diese Datei als Startcode und schreibt es an den Anfang der Image Datei.


Wenn man eigene Software für das UC Modul entwickeln möchte, sind folgende Infos nützlich:

  • das UC1.5 Modul startet immer im 16K Cartridge Modus (passende Initialisierung!)
  • die UC1.5 Register liegen im gesamten Bereich IO-1 ($DExx)
  • die selektierte Bank hat immer eine Größe von 16KB (auch wenn nur 8KB sichtbar sind)
  • je nach Modus 'sieht' der C64 8KB ab $8000, 16KB ab $8000 oder 8KB ab $8000 und 8KB ab $E000
  • es ist möglich, ein eigenes Menü Programm zu verwenden das vom UC-Builder in eine Image Datei geschrieben wird
  • der UC RAM hat 2 Banks und hat pro Bank auch immer eine Größe von 16KB
  • zum LESEN kann nur entweder EPROM oder RAM eingeblendet sein
  • das SCHREIBEN in den UC RAM funktioniert immer, wenn Schreiben erlaubt ist (UC Register -- write enable)
  • das Schreibfenster ist gespiegelt und liegt von $4000 bis $8000 und von $8000 bis $C000
  • der IO Bereich (IO-1 und IO-2) enthält beim LESENDEN Zugriff die obersten 512 Bytes des UC RAM (selektierte Bank)
  • über den IO Bereich IO-2 kann der UC RAM geschrieben werden, wenn Schreiben erlaubt und das EPROM selektiert ist (UC Register -- write enable)
  • über den IO Bereich IO-1 kann der UC RAM geschrieben werden, wenn Schreiben erlaubt und das EPROM selektiert und das IO Register ausgeschaltet ist


Eigener File Browser Code

Der File Browser (UC-FB) kann durch eigenen Code ersetzt werden.

Der eigene Code kann mit einem Assembler wie zB. dem DASM erstellt werden. Der UC-Builder schreibt den FB Code in eine UC Image Datei, wenn in der CSV Datei ein Menü Eintrag 'F1' existiert. Normalerweise verwendet der UC-Builder immer automatisch den internen File Browser (UC-FB). Wenn der UC-Builder aber eine Datei namens UC15-FB.prg findet, dann verwendet er diese Datei als File Browser. Der eigene File Browser kann dann vom UC-Menü mit der Taste <F1> gestartet werden.

Durch die bloße Existenz der Datei UC15-FB.prg wird also generell ein eigener Code verwendet. Alternativ dazu kann ein eigener File Browser Code auch ganz einfach in der CSV Datei eingebunden werden. Dazu benötigt man nur eine ganz normale Zeile in der CSV Datei, wobei der Menüeintrag "F1" heißen muss.


Wenn man einen eigenen FB Code entwickeln möchte sind folgende Infos nützlich:

  • der Code kann wie bei jedem Menü Eintrag vom Typ PRG, 8K, 16K, Ultimax oder CRT sein
  • nach dem Start durch die Taste <F1> ist das IO Register sichtbar, das Modul kann also noch konfiguriert werden


Die Register

Die beiden UC Register liegen im IO-1 Block an Adresse $DE02 und $DE03. Die Register können nur geschrieben werden. Die UC Register können 'versteckt' werden (UC Register B -- IO disable). Nachdem das Bit gesetzt wird kann das UC Modul nicht mehr konfiguriert werden. Die UC Register sind erst nach einem Hard Reset wieder sichtbar.


UC2 Register A
  • Bit 0 --- Banking A14
  • Bit 1 --- Banking A15
  • Bit 2 --- Banking A16
  • Bit 3 --- Banking A17
  • Bit 4 --- Banking A18


UC2 Register B
  • Bit 3 --- IO Register disable (1 - Register sind unsichtbar)
  • Bit 4 --- SRAM write enable (1 - SRAM kann beschrieben werden)
  • Bit 5 --- SRAM select (1 - RAM, 0 - FLASH)
  • Bit 6 --- Signal /GAME (GAME und EXROM bestimmen den C64 Cartridge Modus)
  • Bit 7 --- Signal /EXROM (GAME und EXROM bestimmen den C64 Cartridge Modus)



Der Modul RAM

Der RAM des UC Modul ist gedacht als "EPROM Ersatz", den man sehr schnell und einfach beschreiben kann. Dadurch kann man ROM Module einfach als CRT Datei laden und ausführen.

Will man den RAM aber als 32K Speichererweiterung benutzen, dann muss man folgende Dinge beachten. Beim C64 liegt RAM im gesamten 64K Adressraum. Dieser C64 eigene RAM wird immer beschrieben, auch wenn ein ROM oder das UC-RAM sichtbar sind. Die einzige Ausnahme ist, wenn der C64 sich im Ultimax Modus befindet. Nur im Ultimax Modus kann man den UC RAM beschreiben, ohne gleichzeitig einen C64 eigenen RAM zu beschreiben. Die Methode ist also, in den Ultimax Modus zu wechseln (/GAME = 0 und /EXROM = 1), ein oder mehrere Bytes zu schreiben und wieder in den normalen Zustand zurück zu kehren.

Das UC-Ram ist zusätzlich sichtbar im IO Adress-Bereich (IO-1 und IO-2). Damit hat man bis zu 512 Byte zusätzlichen Speicher zur Verfügung. Der Speicher kann auch mit Schreibschutz betrieben werden, wodurch man quasi ein ROM im IO Bereich sieht. Lesend sind immer die ganzen 512 Byte verfügbar. Schreibend sind nur 256 Bytes des IO-2 verfügbar. Der IO-1 Bereich kann schreibend zugegriffen werden, wenn das UC Register ausgeblendet ist (IO Register disable). Der Schreibzugriff ins UC RAM über den IO Bereich funktioniert nur, wenn schreiben erlaubt ist (SRAM write enable Bit) und das EPROM selektiert ist (SRAM select Bit = 0).

Das RAM im IO Bereich ist nutzbar, selbst wenn der C64 im Modus "kein Modul" läuft (/EXROM =1 und /GAME = 1). Das bietet eine ideale Sprungleiste für eine "unsichtbare" Modul Software. Man denke zB. an eine BASIC Erweiterung, zusätzliche Befehle für das BASIC. Normalerweise kostet ein Modul immer 8KB Speicher, der C64 meldet sich mit 30KB frei statt wie sonst 38KB. Mit einem "unsichtbaren Modul" kann man wie gewohnt 38KB freien Speicher haben, und doch auch glz. die Befehlserweiterung. Dazu verbiegt man die Vektoren für BASIC Erweiterung auf den IO Bereich (IO-2). Da liegt nun ein Code, der das Modul einschaltet, den gewünschten Code ausführt und danach das Modul wieder deaktiviert.


Entwicklung und Prototypen

Der Nachbau der UC2 ist wegen des CPLD Baustein etwas schwieriger. Der Wunsch nach einem größeren EPROM kombiniert mit dem einfachen Design der UC1 führte zur Entwicklung der UC-1.5 Platin. Der erste Versuchsaufbau mit einem UC1 Modul plus einem Steckbrett Aufbau funktionierte auf Anhieb. Bei dem ersten Entwurf der Platine zeigte aber, dass der Platz sehr knapp ist, speziell wenn man auch die beiden Taster der UC2 integrieren möchte. Deshalb kam es zu der Entscheidung, auf SMD Technik zu setzen. Die verwendeten Bauteile haben einen Pin Abstand von 1,27mm (SOIC-20), wodurch es nicht sehr schwer zu löten ist.

Das GAL 16v8 in SMD Bauweise kann mit einem normalen EPROM Programmiergerät (zB. TL866) programmiert werden. Allerdings benötigt man eine SOIC-20 Adapter Platine.


UC-1.5 SMD:


UC-1.5 THT:


News

  • 29.10.2021 - UC-1.5 THT Rev.4
  • 21.10.2021 - UC-1.5 THT Rev.3 (Achtung: Rev.3 hat einen Bug, Leiterbahn D0!!)
  • 17.10.2021 - UC-1.5 SMD Rev.5


Downloads


Links