Universal Cartridge: Unterschied zwischen den Versionen

Aus
Wechseln zu: Navigation, Suche
 
K (Modul Gehäuse selbst gedruckt)
 
(194 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
[[File:UC15-final-01.jpg|right|thumb|200px|Universal Cartridge 1.5 (UC1-SMD)]]
+
[[File:UC1-UC2-final-01.jpg|right|thumb|200px|Universal Cartridge (UC1/UC1.5/UC2)]]
[[File:UC15-final-02.jpg|right|thumb|200px|Universal Cartridge 1.5 (UC1-SMD)]]
+
[[File:UC1-UC15-final.jpg|right|thumb|200px|Universal Cartridge 1 (UC1/UC1.5)]]
[[File:UC15-Foto-blau.GIF|right|thumb|200px|Universal Cartridge 1.5 (UC1-SMD)]]
+
[[File:UC-Cover-01.jpg|right|thumb|200px|Modul Gehäuse (UC2)]]
 
__TOC__
 
__TOC__
 
<br />
 
<br />
== Die Universal Cartridge 1.5 (UC1-SMD) ==
+
== Die Universal Cartridge ==
  
 +
Die '''Universal Cartridge''' (UC Modul) ist ein Modul für den [[wiki64:C64|'''C64 Homecomputer''']]. Mit dem '''UC Modul''' kann sich jeder seine eigene Sammlung von Programmen erstellen, und diese bequem per Knopfdruck starten.
 +
 +
 +
Alle UC Module können 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
 +
 +
 +
Das [[UC1|UC-1 Modul]] läuft nur ein einem C64. Das [[UC2|UC-2 Modul]] und das [[UC1.5|UC-1.5 Modul]] können auch in einer [[wiki64:Max_Machine|'''MAX Machine''']] verwendet werden. Dazu muss bei der UC-1.5 eine Steckbrücke gesetzt werden. Bei der UC-2 kann der '''MAX Machine Modus''' per Software eingestellt werden.
 +
 +
 +
Wenn die UC-1.5 im MAX Machine Modus ist, dann laufen die normalen UC Images nicht mehr. Es muss eine eigene Software verwendet werden für diese Betriebsart. Das ist zum Beispiel das [http://www.multimax.co/ '''MultiMAX Image'''].
  
 
<br />
 
<br />
=== C64 Module ===
+
=== Arten von UC Module ===
 +
 
 +
Es gibt drei Arten von UC Module:
 +
 
 +
* die UC-1  ([[UC1|Details]])
 +
* die UC-2  ([[UC2|Details]])
 +
* die UC-1.5 ([[UC1.5|Details]])
  
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.5]] ist ein Modul für den C64. In dem Modul kann man ein oder mehrere Programme und Spiele speichern und am C64 ausführen.
 
  
 +
{| class="wikitable" style="text-align: center; padding: 10px; "
 +
|-
 +
! scope="col" style="text-align: center; padding: 10px; " |
 +
! scope="col" style="text-align: center; padding: 10px; " | [[UC1|UC-1]]
 +
! scope="col" style="text-align: center; padding: 10px; " | [[UC1.5|UC-1.5]]
 +
! scope="col" style="text-align: center; padding: 10px; " | [[UC2|UC-2]]
 +
|-
 +
! scope="row" style="text-align: center; padding: 10px; " | EPROM
 +
| 128K
 +
| 512K
 +
| 512K
 +
|-
 +
! scope="row" style="text-align: center; padding: 10px; " | SRAM
 +
| 32K
 +
| 32K
 +
| 512K
 +
|-
 +
! scope="row" style="text-align: center; padding: 10px; " | Register
 +
| 1
 +
| 2
 +
| 2
 +
|-
 +
! scope="row" style="text-align: center; padding: 10px; " | Technik
 +
| GAL / TTL
 +
| GAL / TTL
 +
| CPLD
 +
|}
  
Beim C64 werden drei Arten von Module unterstützt:
 
  
* 8K Modul
+
Das UC-1 ist das kleinste UC Modul. Es unterstützt ein EPROM oder EEPROM mit einer Größe von 64KB (zB. W27C512) oder 128KB (zB. W27C010). Zusätzlich hat es ein 32K SRAM, mit dem man die C64 Standard Module (8K, 16K, Ultimax) emulieren kann. Alle Bauteile sind in THT Technik (keine SMD Bauteile), daher kann dieses Modul auch von einem Löt-Anfänger selbst hergestellt werden.
* 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 UC-2 ist der große Bruder des UC1 Modul. Es unterstützt FLASH Speicher (zB. AM29F040) bis zu 512KB (128K, 256K und 512K Speicher). Das SRAM hat ebenfalls eine Größe von 512KB.
  
Das UC1.5 Modul kann folgende Programme starten:
 
  
* Software für ein 8K Modul
+
Das UC-1.5 ist ein Modul zwischen UC-1 und UC-2. Es unterstützt EPROM, EEPROM und FLASH Speicher mit einer Größe von 512K. Das Modul hat zwei Register wie die UC2 und ist Software kompatibel zur UC-2. Der SRAM Speicher hat 32K (wie bei der UC1). Es existiert je eine Version in SMD und THT Technik.
* 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 />
 
<br />
  
=== UC Image Datei ===
+
=== C64 Module ganz allgemein ===
 +
 
 +
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 ...).
 +
 
 +
 
 +
Wir unterscheiden zwei grundsätzliche Arten:
 +
 
 +
* Software Modul (Software für den C64)
 +
* Hardware Modul (bringt neue Hardware)
  
Die Software auf dem UC1.5 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 programmiert werden.
 
  
 +
Die Informationen auf dieser Seite beziehen sich nur auf Software Module.
 +
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.
  
Die Größe der UC Image Datei darf den verfügbaren Platz im EPROM 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.
 
  
<br />
+
Beim C64 werden in Bezug auf Software Module grundsätzlich drei Modi unterstützt:
=== Der UC-Loader ===
 
  
In dem UC1.5 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.
+
* 8K Modus
 +
* 16K Modus
 +
* 16K UltiMax Modus
  
  
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.  
+
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.  
  
 +
Der Banking Mechanismus ist aber nicht genormt. Deswegen ist die Software auf dem Modul beschränkt auf genau eine bestimmte '''Modul Type'''.
  
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.
 
  
 +
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 (8K, 16K, Ultimax) per Software einstellen.
  
Mit den Tasten <F7> oder <F8> kommt man in den normalen C64 Eingabemodus (C64 BASIC). Die Taste <F7> schaltet dabei das ROM der UC1.5 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 Hard Reset des C64 wieder aktiviert werden.
 
  
 
<br />
 
<br />
  
=== Der UC-Builder ===
+
== Erstellen einer eigenen Programmsammlung ==
  
In das EPROM des UC1.5 Modul kann man fertige Image Dateien programmieren.
+
Die Erstellung einer persönlichen Programm Sammlung für ein UC Modul macht man mit Hilfe eines PC Programm: '''UC-Builder'''  
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 UC Image Datei zu erstellen.
+
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 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.  
 
  
 +
<br />
 +
=== UC Image Datei ===
  
Für die Erstellung des UC-Menü benötigt das UC-Builder folgende Informationen zu jedem C64 Programm:
+
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.
  
* Name des Programm
 
* Art des Programm
 
* Den Dateinamen des Programm
 
  
Der ''Name des Programm'' wird dann beim Start vom UC-Loader angezeigt.
+
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.
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.  
 
  
 +
<br />
 +
=== Der UC-Loader ===
  
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.
+
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.
  
  
<u>Optionen</u>:
+
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.
  
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|UC1 Modul]] zu erstellen.<br />
+
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 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 '-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 />
+
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.
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.
+
<br />
  
 +
=== Der UC-Builder ===
  
Am Ende wirft der UC-Builder zwei Dateien aus. Die BIN Datei 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.
+
Der UC-Builder ist ein Werkzeug (ein Programm), um eine Image Datei für ein C64 Modul zu erstellen. Die Image Datei kann dann direkt in den ROM Speicher (Flash oder EPROM) gespeichert werden.
  
<gallery mode="traditional" widths=90px heights=90px perrow=9 caption="">
+
Die Beschreibung zum UC-Builder findet man hier: [[UC-Builder]]
Image:UC-Builder_00.png
 
Image:UC1-Tool_01.png
 
Image:UC1-Tool_02.png
 
Image:UC1-Tool_04.png
 
Image:UC1-Tool_05.png
 
</gallery>
 
  
 
<br />
 
<br />
Zeile 127: Zeile 161:
 
  TSB;                BIN;      BIN\tsb.obj.prg;                  RESET
 
  TSB;                BIN;      BIN\tsb.obj.prg;                  RESET
 
  Help+;              !$8000;  BIN\Help+-C64.bin;                RESET
 
  Help+;              !$8000;  BIN\Help+-C64.bin;                RESET
 +
-;                  UCF;      UCF\Exass.ucf
  
  
 
+
Aus der CSV Datei entsteht eine UC-Image Datei mit einem Menü und vier C64 Programmen.
 
 
 
 
 
 
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.  
 
Die zweite Spalte enthält den ''Typ'' des C64 Programm.  
Diese Information benötigt der UC-Loader damit das Programm richtig gestartet werden kann.
+
Diese Information benötigt der UC-Loader, damit das Programm richtig gestartet werden kann (Ausnahmen sind CRT und UCF).
  
  
Zeile 145: Zeile 176:
  
 
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.
 
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.
 +
 +
Bei UCF Dateien muss man keinen Namen angeben, es genügt ein Bindestrich. Der Name steht in der UCF Datei. Natürlich kann man einen eigenen Namen wählen und hier angeben. Der Name in der UCF Datei wird in diesem Fall ignoriert.
 +
 +
 +
<b>Sonderfall 1 -- Hilfetext Zeile:</b>
 +
 +
Wenn der Text in Spalte 1 mit einem Fragezeichen (?) beginnt, dann handelt es sich um eine Hilfetext Zeile.
 +
 +
Zu jedem Menü Eintrag kann man bis zu drei Hilfetext Zeilen definieren.
 +
Wenn Hilfetext Zeilen definiert werden, dann sind die untersten drei Zeilen reserviert für den Hilfetext.
 +
Der Hilfetext erscheint, wenn man den Menüeintrag selektiert.
 +
Um das Programm zu starten, muss der Menüeintrag ein zweites mal selektiert werden.
 +
 +
Bei einem Menüeintrag ohne Hilfetext wird das Programm sofort gestartet (nur einmal selektieren).
 +
 +
Hilfezeilen in der CSV Datei haben nur eine Spalte. Außer dem Hilfetext gibt es keine weiteren Parameter.
 +
Hilfezeilen in der CSV Datei müssen mit einem Fragezeichen (?) beginnen.
 +
 +
 +
<b>Sonderfall 2 -- Textzeilen (ab v1.13):</b>
 +
 +
Wenn der Text in Spalte 1 mit einem Ausrufzeichen (!) beginnt, dann handelt es sich um eine Textzeile.
 +
 +
Anstatt einem Menüeintrag kann man optional einen Text ausgeben.
 +
Die Textzeile kann bis zu 127 Zeichen lang sein. In der Textzeile können auch Steuerzeichen enthalten sein (Cursor Steuerung, Farbcodes ...).
 +
Damit lässt sich der UC Startschirm relativ frei gestalten.
 +
 +
Textzeilen erscheinen da, wo normal der Menüeintrag stehen würde. Im Unterschied zu einem Menü Eintrag fehlt der Buchstabe
 +
um das Programm zu starten.
 +
 +
Textzeilen in der CSV Datei müssen mit einem Ausrufzeichen (!) beginnen.
 +
 +
 +
<b>Sonderfall 3 -- Kein Menüeintrag Name (ab v1.13):</b>
 +
 +
Bei Verwendung von UCF Dateien, kann man auf den Namen des Menüeintrag verzichten. Dazu wird in der CSV Datei als Name nur ein '-' (Bindestrich) verwendet. Im UC Menü wird dann der Name verwendet, der in der UCF Datei gespeichert ist.
 +
 +
 +
<b>Sonderfall 4 -- Datei ohne Menüeintrag (ab v1.14):</b>
 +
 +
Wenn der Text in Spalte 1 mit einem Doppelkreuz (#) beginnt, dann handelt es sich um eine Datei ohne Menüeintrag.
 +
 +
Nicht jede Zeile in der CSV Datei wird zu einem Menü Eintrag. Diese Zeilen erzeugen keinen Menüeintrag und dienen nur dazu, eine Datei in das UC Image File zu schreiben. Diese Datei kann dann geladen werden über ein oder mehrere Menü Einträge.
 +
 +
Für 'Datei ohne Menüeintrag' muss die erste Spalte mit einem '#' beginnen. Die Zeichen nach dem '#' ist der Referenzname. Die Datei kann dann in jedem Menüeintrag durch den Referenznamen (zum Beispiel '#ABC') adressiert werden. In einem Menüeintrag kann man dann in Spalte 3 anstatt des Dateinamen einen oder mehrere Referenznamen verwenden.
 +
 +
 +
Das hat folgende Vorteile:
 +
 +
* ein Menüeintrag kann mehrere Dateien laden
 +
* eine Datei kann von mehr als einem Menüeintrag geladen werden
 +
* die Reihenfolge der Menüeinträge muss nicht mit der Anordnung der Dateien im Image übereinstimmen
  
  
Zeile 155: Zeile 238:
  
 
;PRG
 
;PRG
: normales BASIC Programm, das an der Adresse $801 geladen und mit RUN gestartet wird
+
: normales BASIC Programm oder OneFiler, das an der Adresse $801 (C64) oder $1C01 (c128) geladen und mit RUN gestartet wird
 +
;BAS2
 +
: ein BASIC Programm (zumindest ein SYS xxx) für den c64, das an der Adresse $0801 geladen und mit RUN gestartet wird
 +
;BAS7
 +
: ein BASIC Programm (zumindest ein SYS xxx) für den c128, das an der Adresse $1C01 geladen und mit RUN gestartet wird
 
;BIN
 
;BIN
 
:  ein Programm mit Ladeadresse, das an beliebiger Adresse geladen und mit SYS oder RESET gestartet wird
 
:  ein Programm mit Ladeadresse, das an beliebiger Adresse geladen und mit SYS oder RESET gestartet wird
Zeile 167: Zeile 254:
 
;16KB'''
 
;16KB'''
 
: das Programm wird als 16KB Modul gestartet
 
: das Programm wird als 16KB Modul gestartet
 +
;32KB'''
 +
: das Programm wird als 32KB Modul gestartet (c128)
 
;UltiMax
 
;UltiMax
 
:  das Programm wird als Ultimax Modul gestartet
 
:  das Programm wird als Ultimax Modul gestartet
 
;CRT
 
;CRT
 
:  der Modul Typ wird selbsttätig erkannt, - nur bei CRT Dateien
 
:  der Modul Typ wird selbsttätig erkannt, - nur bei CRT Dateien
 +
;UCF
 +
:  die UCF Datei enthält alle Informationen, die der UC-Builder benötigt
 
;"---"
 
;"---"
: Sonderfall für die Verwendung des internen UC-FB, wenn der '''Programm Name''' exakt 'F1' ist
+
: Sonderfall für die Verwendung des internen UC-FB, wenn der '''Programm Name''' exakt 'F1' ist.
 +
: es kann aber auch verwendet werden für CRT und UCF Dateien, weil der UC Builder diese Dateien automatisch erkennt.
 +
 
 +
 
 +
<b>Spezial Steuerzeichen</b>
 +
 
 +
;"|"
 +
: Wenn das erste Zeichen ein senkrechter Strich (|) ist, dann wird für diesen Menü Eintrag das IO Register des UC Modul NICHT deaktiviert. Das bedeutet, man kann nach dem Start des Programm weiterhin auf die Konfiguration des UC Modul zugreifen. Zum Beispiel ist das so bei dem internen File Browser FB.
  
  
Zeile 183: Zeile 281:
  
 
; CRT
 
; 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.
+
: Diese Dateien sind 'Modul Dateien' für den Emulator. Sofern es CRT Dateien vom Typ 0 (8K, 16K, 32K, Ultimax oder MagicDesk128) sind, werden sie vom UC Builder und vom UC-FB richtig interpretiert.
 +
 
 +
; UCF
 +
: Diese Dateien sind 'UCF Dateien' für den UC-Builder. Die Datei enthält alle relevanten Informationen, die für den Ladevorgang (LOAD) und dem Programmstart (RUN) nötig sind. Die Informationen in der Datei werden sowohl vom UC Builder als auch vom UC-FB interpretiert.
  
  
Zeile 196: Zeile 297:
  
 
; RESET
 
; RESET
 +
: Nach dem laden des Programmes wird ein Soft RESET ausgeführt. Der c128 wechselt vorher in den C64 Modus.<br />
 +
: (Das ist Standard bei Programm Typ 8KB, 16KB, UltiMax und CRT für den C64)
 +
 +
; RESET128
 
: Nach dem laden des Programmes wird ein Soft RESET ausgeführt.<br />
 
: Nach dem laden des Programmes wird ein Soft RESET ausgeführt.<br />
: (Das ist Standard bei Programm Typ 8KB, 16KB, UltiMax und CRT)
+
: (Das ist Standard bei Programm Typ 32KB und CRT für den c128)
  
 
; SYS nnn
 
; 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.
+
: 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. Der Commodore c128 wechselt in den C64 Modus.
 +
 
 +
; SYS128 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. Die Banknummer ist wie beim internen c128 Monitor die fünfte Hexziffer der Adresse.
  
 
; RUN
 
; RUN
Zeile 210: Zeile 318:
 
: (Das ist Standard bei Programm Typ BIN und BLK)
 
: (Das ist Standard bei Programm Typ BIN und BLK)
  
<br />
+
; 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.
  
=== Der File Browser (UC-FB) ===
+
; ROMX
 
+
: 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 werden direkt an der oberen Grenze (ROMH) einer 16K Bank angeordnet. Die Option ROMX ist gedacht für 8KB Ultimax Module. In Kombination mit einem 8KB Modul mit Option ROM wird die 16K Bank optimal genutzt und man verliert keinen Speicher wegen der Blockgrenzen.
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.
+
: <b>Hinweis</b>: für die optimale Nutzung der 16K Bank sollte abwechselnd die Option ROM (8K Modul) und ROMX (Ultimax) verwendet werden. Andernfalls entstehen Lücken wegen der Bank Grenze.
 
 
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 />
 
<br />
  
== Aufbau und Inbetriebnahme ==
+
=== Textzeilen im UC Menü ===
  
Der Aufbau des UC1.5 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.
+
Das UC-Menü enthält '''Menü Einträge''', das sind startbare Programme. Am Bildschirm können bis zu 36 Menü Einträge stehen, 18 auf der linken Seite und 18 auf der rechten Seite. Jeder der 36 Menüeinträge hat eine feste Position am Bildschirm und für den Programm Start ist jedem Menüeintrag ein fester Buchstabe zugeordnet.
  
<br />
+
Seit der Version 1.13 des UC-Builder kann man anstatt eines Menü Eintrag eine '''Textzeile''' definieren.
=== Technische Spezifikation ===
+
Die Textzeile ersetzt den Menü Eintrag, es ist also kein Programm zugeordnet für den zugehörigen Buchstaben.
  
Es gibt nur wenige Bauteile auf der UC1.5 Platine:
 
  
* ein EPROM mit 64. 128, 256 oder 512K  (zB. W27C010 oder W27E040)
+
Die Textzeilen dienen dazu, dass man den Bildschirm Aufbau etwas freier gestalten kann.
* ein SRAM mit 32KB
+
Jede Textzeile belegt den Platz eines Menü Eintrag, der Text erscheint an derselben Cursor Position die dem Menü Eintrag zugeordnet ist.
* zwei TTL Bausteine 74LS273
+
Mit einer leeren Textzeile kann den Menü Eintrag blockieren, dh. alle Programme rutschen eine Position nach unten.
* ein GAL 16v8
 
* 5 Stück Kondensatoren (100nF)
 
* optional eine Diode
 
* optional ein Reset Taster
 
  
 +
Jede Textzeile kann bis zu 200 Zeichen enthalten.
 +
Die Zeichen in der Textzeile können normale Zeichen sein oder '''Steuerzeichen'''.
 +
Steuerzeichen belegen keine Cursor Position, man verwendet sie um die Farbe einzustellen und um die Position des Cursors zu verändern.
 +
Mit den Cursor Steuerzeichen kann man zum Beispiel auch die Kopf- oder die Fußzeile erreichen und manipulieren.
 +
Insgesamt erlauben die Textzeilen eine große Freiheit bei der Gestaltung des Bildschirm.
  
Für die Programmierung des EPROM und des GAL wird ein Programmiergerät benötigt (zb. der gängige TL866).
+
Jedes Zeichen in der Textzeile kann in der gewünschten Farbe ausgegeben werden.
 +
Die eingestellte Farbe beeinflusst aber auch alle weiteren Menü Einträge.
 +
Wenn man die Menü Einträge im standard Grün erhalten will, dann muss man am Ende der Textzeile das Farbcode Steuerzeichen für Grün setzen.
  
<br />
+
Um die Eingabe der Steuerzeichen zu erleichtern, sind Token implementiert worden für jedes Steuerzeichen.
=== Aufbau ===
+
Anbei ist eine Liste der unterstützen Steuerzeichen Token.
  
Notwendige Werkzeuge für den Aufbau des UC Modul sind:
 
  
* Lötkolben oder Lötstation + Zinn
+
<b><u>Steuerzeichen</u>:</b>
* Seitenschneider
 
  
 +
{| class="wikitable" style="text-align: center; padding: 10px; "
 +
|-
 +
! scope="col" style="text-align: center; padding: 10px; " | PETSCII
 +
! scope="col" style="text-align: center; padding: 10px; " | Token
 +
! scope="col" style="text-align: center; padding: 10px; " | Short
 +
! scope="col" style="text-align: center; padding: 10px; " | Beschreibung
 +
|-
 +
! scope="row" style="text-align: center; padding: 10px; " | 147   
 +
| {clear}       
 +
| {clr}
 +
| löscht den Bildschirm
 +
|-
 +
! scope="row" style="text-align: center; padding: 10px; " | 19
 +
| {home}
 +
|
 +
| Cursor in die Zeile 1 Spalte 1
 +
|-
 +
! scope="row" style="text-align: center; padding: 10px; " | 29     
 +
| {right}       
 +
| {rgt}
 +
| Cursor nach rechts
 +
|-
 +
! scope="row" style="text-align: center; padding: 10px; " | 157   
 +
| {left}
 +
|
 +
| Cursor nach links
 +
|-
 +
! scope="row" style="text-align: center; padding: 10px; " | 17     
 +
| {down}
 +
|
 +
| Cursor nach unten
 +
|-
 +
! scope="row" style="text-align: center; padding: 10px; " | 145   
 +
| {up}
 +
|
 +
| Cursor nach oben
 +
|-
 +
! scope="row" style="text-align: center; padding: 10px; " | 144   
 +
| {black}       
 +
| {blk}
 +
| Farbe Schwarz
 +
|-
 +
! scope="row" style="text-align: center; padding: 10px; " | 5     
 +
| {white}       
 +
| {wht}
 +
| Farbe Weiß
 +
|-
 +
! scope="row" style="text-align: center; padding: 10px; " | 28     
 +
| {red}
 +
|
 +
| Farbe Rot
 +
|-
 +
! scope="row" style="text-align: center; padding: 10px; " | 159   
 +
| {cyan}         
 +
| {cyn}
 +
| Farbe Cyanblau
 +
|-
 +
! scope="row" style="text-align: center; padding: 10px; " | 156   
 +
| {purple}       
 +
| {pur}
 +
| Farbe Violett
 +
|-
 +
! scope="row" style="text-align: center; padding: 10px; " | 30     
 +
| {green}       
 +
| {grn}
 +
| Farbe Grün
 +
|-
 +
! scope="row" style="text-align: center; padding: 10px; " | 31     
 +
| {blue}         
 +
| {blu}
 +
| Farbe Blau
 +
|-
 +
! scope="row" style="text-align: center; padding: 10px; " | 158   
 +
| {yellow}       
 +
| {yel}
 +
| Farbe Gelb
 +
|-
 +
! scope="row" style="text-align: center; padding: 10px; " | 129   
 +
| {orange}       
 +
| {ora}
 +
| Farbe Orange
 +
|-
 +
! scope="row" style="text-align: center; padding: 10px; " | 149   
 +
| {brown}       
 +
| {brn}
 +
| Farbe Braun
 +
|-
 +
! scope="row" style="text-align: center; padding: 10px; " | 150   
 +
| {lred}
 +
|
 +
| Farbe Hellrot
 +
|-
 +
! scope="row" style="text-align: center; padding: 10px; " | 151   
 +
| {gray1}
 +
| {gr1}
 +
| Farbe Grau 1
 +
|-
 +
! scope="row" style="text-align: center; padding: 10px; " | 152   
 +
| {gray2}
 +
| {gr2}
 +
| Farbe Grau 2
 +
|-
 +
! scope="row" style="text-align: center; padding: 10px; " | 153   
 +
| {lgreen}       
 +
| {lgr}
 +
| Farbe Hellgrün
 +
|-
 +
! scope="row" style="text-align: center; padding: 10px; " | 154   
 +
| {lblue}       
 +
| {lbl}
 +
| Farbe Hellblau
 +
|-
 +
! scope="row" style="text-align: center; padding: 10px; " | 155   
 +
| {gray3}
 +
| {gr3}
 +
| Farbe Grau 3
 +
|-
 +
! scope="row" style="text-align: center; padding: 10px; " | 18     
 +
| {rvson}
 +
|
 +
| Invertierte Schrift EIN
 +
|-
 +
! scope="row" style="text-align: center; padding: 10px; " | 146   
 +
| {rvsoff}
 +
|
 +
| Invertierte Schrift AUS
 +
|-
 +
! scope="row" style="text-align: center; padding: 10px; " | 13
 +
| {return}
 +
| {rtn}
 +
| Zeilenschaltung (Cursor in die nächste Zeile erste Spalte)
 +
|-
 +
! scope="row" style="text-align: center; padding: 10px; " | 14     
 +
| {letter}
 +
|
 +
| Wählt den Zeichensatz Groß-/Kleinbuchstaben
 +
|-
 +
! scope="row" style="text-align: center; padding: 10px; " | 142   
 +
| {grafic}
 +
|
 +
| Wählt den Zeichensatz Grafikzeichen
 +
|}
  
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.
 
  
 
<br />
 
<br />
=== Inbetriebnahme ===
+
=== Mehrere Menü Seiten ===
  
Wenn das Board fertig gelötet, der GAL geflashed und eingesetzt ist, dann steht einer Inbetriebnahme nichts mehr im Wege.
+
Ab Version 1.14 werden mehrseitige Menüs unterstützt. Eine Menü Seite hat bis zu 42 Menü Einträge. Speziell bei 1 MB Module kann man da leicht an die Grenzen kommen. Wenn man viele kleine Programme hat, oder wenn man viele Textzeilen benutzt, dann reichen die 42 Menü Einträge nicht aus.  
  
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.
+
Der UC-Builder bildet automatisch eine neue Menü Seite, sobald man mehr als 42 Einträge hat.
  
 +
Das UC-Menü zeigt in der Kopfzeile die aktuelle Seite (in hellgrau) an, alle anderen Seiten werden in dunklem Grau angezeigt. Der Wechsel zur nächsten bzw. vorherigen Seite erfolgt über die Cursortasten (<Cursor links>, <Cursor rechts>). Die Zeichen '<' und '>' symbolisieren die Cursortasten für den Seiten Wechsel. Wie immer im UC-Menü symbolisiert die Farbe weiß, dass der Seitenwechsel möglich ist. So ist '<' in grau dargestellt, wenn man sich auf der ersten Seite befindet. Und '>' ist in grau dargestellt, wenn man sich auf der letzten Seite befindet.
  
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.
+
Bei bis zu 5 Menü Seiten ist das Format '<1..n>'. Bei mehr als 5 Menü Seiten wird nur noch die aktuelle Seite angezeigt im Format '<n>'.
  
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!
+
<br />
  
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 File Browser (UC-FB) ===
  
 +
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.
  
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:
+
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.
* 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)
 
  
<br />
+
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.
 
 
== Technik der UC1.5 ==
 
 
 
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-UC15-Map.gif
+
Image:UC1-FB-01.png
Image:C64-UC15-BlkSch.GIF
 
Image:C64-UC15-Sch.gif
 
 
</gallery>
 
</gallery>
  
 
<br />
 
<br />
=== 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:
+
=== MAX Machine ===
  
* Microchip ATF 16v8
+
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. Die 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.
* Lattice GAL 16v8B
 
* Lattice GAL 16v8D
 
  
 +
Ein UC Modul im Max Machine Modus läuft auch in einem C64.
  
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.
 
  
 +
Der MAX Machine Modus unterliegt den Beschränkungen dieser Ziel Plattform:
 +
* 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)
  
<u>UPDATE</u>:
 
  
Auch ein weiterer GAL 16v8A läuft definitiv '''NICHT''' im UC Modul.
+
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.
Ich rate also explizit ab von dieser GAL Type.
 
  
 
<br />
 
<br />
  
=== Speicher ===
+
== Modul Gehäuse selbst gedruckt ==
  
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.
+
Vielen Dank an [https://www.forum64.de/wcf/index.php?user/32884-proto/ '''Goodwell''' vom Forum-64], er hat wunderschöne Gehäuse konstruiert für das UC-2 und das UC-1.5 ([https://www.forum64.de/index.php?thread/118061-uc1-universal-cartridge-1-universell-verwendbares-c64-modul/&postID=1819848#post1819848 siehe F64 Beitrag]). Mit seiner Erlaubnis verlinke ich die STL Dateien im 'Links' Bereich.
  
Mögliche Adressräume im C64:
+
<gallery mode="traditional" widths=90px heights=90px perrow=9 caption="">
 +
Image:UC-Cover-01.jpg
 +
Image:UC-Cover-02.jpg
 +
Image:UC-Cover-03.jpg
 +
</gallery>
  
* 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.  
+
Vielen Dank an [https://www.forum64.de/wcf/index.php?user/27832-goodwell/ '''Proto''' vom Forum-64] für seine UC-1.5 STL:
  
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.
+
<gallery mode="traditional" widths=200px heights=90px perrow=9 caption="">
 +
Image:Case_Top_v1_Proto.jpg
 +
Image:Proto-case.jpg
 +
</gallery>
  
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.
+
* [[Media:Proto-case-UC15.zip|STL Dateien von Proto für die UC-1.5]]
  
Im Ultimax Modus können nur bestimmte Paket Größen verwendet werden: 1K, 2K, 4K, 8K und 16K <br />
 
Das Paket wird gespiegelt, sodass immer 16K zur Gänze ausgefüllt sind.
 
  
 +
<br />
  
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.
+
== Support für andere Modul Typen ==
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 />
 
<br />
 +
=== MagicDesk ===
  
=== D-Latch als Register ===
+
Das MagicDesk Modul ist eine EPROM Cartridge mit bis zu einem MB. Das Banking wird über ein Register an der Adresse $DE00 (IO-1) gesteuert. Das Modul startet im 8KB Modus des C64. Die Bits 0 bis 5 dienen zur Auswahl der 8K Bank.
  
Die beiden achtfach D-Latch (74LS273) werden als Register zur Konfiguration der UC1.5 verwendet.
+
Das Bit 7 des Register steuert das Signal /EXROM. Nach einem Reset wird Low ausgegeben, wodurch der C64 im 8K Modul Modus startet. Durch schreiben von $80 an die Adresse IO-1 wird das Modul deaktiviert.  
  
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 Bit 6 des Register steuert die Sichtbarkeit des IO Register. Damit kann man verhindern, dass ein deaktiviertes Modul wieder eingeschaltet wird. Die 1MB Module verwenden Bit 6 für das Banking. Manche Module unterstützen das Bit 6 gar nicht, andere schalten die Funktion von Bit 6 per Jumper Brücken.
  
  
Das Register A hat 8 Ausgänge zur Steuerung der UC1 Hardware:
+
Beim UC-2 Modul kann man ein MagicDesk Modul emulieren über ein passendes Jedec File für den CPLD.
  
* fünf Pins dienen dem Banking und selektieren einer 16K Bank
+
<br />
* der Rest ist Reserve
+
=== EasyFlash ===
  
 +
Das EasyFlash Modul ist eine FLASH Cartridge mit einer Größe von einem MB. Es unterstützt alle Modul Typen des C64 (8K, 16K, UltiMax). Die beiden Flash Bausteine können vom C64 aus beschrieben werden. Das EasyFlash hat SRAM, von dem 256 Bytes eingeblendet werden an der Adresse $DFxx (IO-2). Für das EasyFlash gibt es ein BIOS, das die Funktionalität des Modul unterstützt. Das Modul startet im UltiMax Modus des C64 oder optional deaktiviert (per Jumper steuerbar).
  
Das Register B hat 8 Ausgänge zur Steuerung der UC Hardware:
+
Das Banking wird über ein Register an der Adresse $DE00 (IO-1) gesteuert. Ein zweites Register an der Adresse $DE02 steuert die Funktionen es Modul.
  
* 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
 
  
 
+
Beim UC-2 Modul kann man ein EasyFlash Modul teilweise emulieren über ein passendes Jedec File für den CPLD. Dadurch laufen auf dem UC-2 Modul viele Programme, die für das EasyFlash gemacht worden sind, wie zB. das Spiel 'Prince of Persia'.  
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 ...
 
  
 
<br />
 
<br />
 +
=== MultiMax ===
  
== Programmierung der UC1.5 ==
+
Das MultiMax Modul ist eine Speicher Cartridge, die alle klassischen UltiMax Spiele beinhaltet die es gibt. Dazu gibt es ein nett gemachtes Menü, über das die Spiele ausgewählt und gestartet werden.
  
Für die UC1.5 gibt es fertige Software:
+
Für das UC-2 und das UC-1.5 Modul existiert ein modifiziertes MultiMax Image. Damit kann man das MultiMax Modul emulieren auf dem UC Modul.
 
 
* 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
 
  
 
<br />
 
<br />
==== Eigener Startcode ====
+
=== COMAL-80 ===
  
Der Startcode (UC-Loader) kann durch eigenen Code ersetzt werden.  
+
Das Comal-80 Modul ist eine EPROM Cartridge mit bis zu 96KB (drei EPROM zu je 32K). Die EPROM's U1 und U2 beinhalten das eigentliche COMAL. Der dritte Sockel U3 ist normalerweise frei. Man kann da COMAL Erweiterungen installieren (ZB. die Super Chip Erweiterung). Mit einer kleinen Hardware Modifikation unterstützt das Modul sogar 4 EPROM's (insgesamt 128KB), zB. die PAKMA Erweiterung nützt die ganzen 128KB.
  
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.
+
Das Banking wird über ein Register an IO-1 (Adresse $DE00) gesteuert. Das Bit 0 steuert A14 von allen EPROM und wählt damit die unteren 16K oder die oberen 16K. Die Bits 1 und 2 wählen eines der EPROM aus (00=U1, 01=U2, 02=U3). Mit 11 würde man das optionale vierte EPROM selektieren, allerdings ist im Modul kein vierter Sockel vorhanden. Der Hardware Umbau erfordert zwei Dioden und ein 64K EPROM. Mit den zwei Dioden kombiniert man die Selektion von U3 und U4.
  
 +
Das Bit 6 des Register steuert die Signale /EXROM und /GAME. Nach einem Reset wird Low ausgegeben, wodurch der C64 im 16K Modul Modus startet. Durch schreiben von $40 an die Adresse IO-1 wird das Modul deaktiviert. Spätere COMAL Module können /EXROM und /GAME separat steuern über Bit 5 und 6. Damit könnte man auch in den 8K und in den UltiMax Modus wechseln, das wird aber von keiner COMAL Version unterstützt. Um sicher zu stellen, dass die Modul Abschaltung funktioniert, sollte man daher zum abschalten des Modul den Wert $60 in das Register schreiben. Das funktioniert mit allen COMAL Modulen.
  
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!)
+
Beim UC-2 Modul kann man eine Comal Modul emulieren über ein passendes Jedec File für den CPLD.
* 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
 
  
<br />
+
Beim UC-1 ist es nicht ganz so einfach, da der GAL die Signale EXROM und GAME nicht direkt kontrolliert.
==== Eigener File Browser Code ====
+
Es braucht eine minimale Modifikation der Hardware:
  
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.
+
;COMAL Anpassung beim UC-1 ab Rev. 5d
  
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.
+
* Brücke J1 auftrennen (trennt /EXROM vom Register Ausgang 7)
 +
* Brücke J3 verbinden (verbindet /EXROM und /GAME)
 +
* Brücke statt der Diode, wenn man die Reset Logik nicht bestückt
  
 +
<gallery mode="traditional" widths=90px heights=90px perrow=9 caption="">
 +
Image:UC1-r5d-Foto-O.GIF
 +
Image:UC1-r5d-Foto-U.GIF
 +
Image:UC1-r5d.JPG
 +
</gallery>
  
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
+
;COMAL Anpassung beim alten UC-1
* nach dem Start durch die Taste <F1> ist das IO Register sichtbar, das Modul kann also noch konfiguriert werden
 
 
 
<br />
 
==== 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)
 
  
 +
* eine Brücke einlöten beim Modul ganz oben (/EXROM und /GAME verbinden)
 +
* Pin 19 am 74LS273 heraus biegen (oder abschneiden)
  
 +
<gallery mode="traditional" widths=90px heights=90px perrow=9 caption="">
 +
Image:UC1-COMAL-01.jpg
 +
Image:UC1-COMAL-01.png
 +
</gallery>
 
<br />
 
<br />
==== 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).
+
Es funktionieren alle Comal-80 Images die ich so gefunden habe, auch das 128K große [https://www.forum64.de/index.php?thread/82798-pakma-erweitertes-comal80-modul/ PAKMA Comal-80]. Und selbstverständlich auch die hausgemachte [https://www.forum64.de/index.php?thread/139801-comal-80-super-chip-package-eigene-implementierung/ '''Super Chip II Erweiterung'''].<br />
  
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.  
+
Das SRAM ist unnötig für COMAL-80, man kann es einfach weg lassen.
  
 
<br />
 
<br />
  
== Entwicklung und erste Prototypen ==
+
== News ==
 
 
Der erste Versuchsaufbau erfolgte mit einem UC1 Modul + einem Steckbrett Aufbau.
 
 
 
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.
 
 
 
  
<gallery mode="traditional" widths=90px heights=90px perrow=9 caption="">
+
* 11.06.2021 -- Prototyp der UC1
Image:UC15-Lay-OB.GIF
+
* 14.07.2021 -- Release der UC1
Image:UC15-Lay UB.GIF
+
* 20.09.2021 -- UC-2 voll funktionsfähig
Image:UC15-Foto-blau.GIF
+
* 23.09.2021 -- UC-1.5 Prototyp
Image:UC15-final-01.jpg
+
* 08.10.2021 -- Release der UC2
Image:UC15-final-02.jpg
+
* 28.10.2021 -- Release der UC-1.5
Image:UC15-final-03.jpg
+
* 20.08.2023 -- UC-1 Rev.5d
</gallery>
 
  
 
<br />
 
<br />
  
== News ==
+
== Downloads ==
  
* ---  
+
* [[Media:Multimax-UC2-UC1.5.zip|MultiMax Image für die UC-1.5 und UC-2]]
 +
* [[Media:Pop512.zip|'Prince of Persia' Image für UC2 (dazu benötigt wird das EF Jedec)]]
 +
* [[Media:Proto-case-UC15.zip|STL Dateien von Proto für die UC-1.5]]
  
 
<br />
 
<br />
== Downloads ==
 
  
* [[Media:UC15-Gerber.zip|Gerber Dateien]]
+
== Links ==
* [[Media:UC15-Jedec-B.zip|Jedec für das GAL]] - Version B für maximale Kompatibilität des UC-Loader (IO Bereich ohne Speicherzugriff)
 
* Jedec für das GAL - Version C mit Speicherzugriff im IO1 und IO2 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]
 
  
<br />
+
* [[Universal_Cartridge_1|Handbuch zur UC-1]]
 +
* [[Universal_Cartridge_1.5|Handbuch zur UC-1.5]]
 +
* [[Universal_Cartridge_2|Handbuch zur UC-2]]
 +
* [[UC-Builder]]
 +
* [[Universal_Cartridge_264|UC Modul für die Commodore 264 Serie ]]
  
== WEB Links ==
+
* [https://www.youtube.com/watch?v=qGbBArzOOa4 erstes YouTube Video zur UC-2 von '''RetroStuffRocks''']
 +
* [https://www.youtube.com/watch?v=FORub4gcVZk zweites YouTube Video zum neuen Windows GUI '''RetroStuffRocks''']
  
 
* [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]
 +
* [https://www.microchip.com/en-us/development-tool/ATF15XX-DK3-U Microchip DK3 Dev Board (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]]
 
* [http://www.harries.dk/files/C64MemoryMaps.pdf C64 Banking (PDF)]
 
* [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]
 +
* [https://huckys-bastelbude.de/startseite/commodore-c64/64k-karte/ Hucky's Bastelbude - Hucky 64K Cartridge]
 +
 +
* [https://www.printables.com/de/model/168706-universal-cartridge-15-rev5 STL Datei - UC-1.5 Rev.5 (Danke an Goodwell vom F64)]
 +
* [https://www.printables.com/de/model/168127-universal-cartridge-2-rev4 STL Datei - UC-2 Rev.4 (Danke an Goodwell vom F64)]

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

Universal Cartridge (UC1/UC1.5/UC2)
Universal Cartridge 1 (UC1/UC1.5)
Modul Gehäuse (UC2)


Die Universal Cartridge

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


Alle UC Module können 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


Das UC-1 Modul läuft nur ein einem C64. Das UC-2 Modul und das UC-1.5 Modul können auch in einer MAX Machine verwendet werden. Dazu muss bei der UC-1.5 eine Steckbrücke gesetzt werden. Bei der UC-2 kann der MAX Machine Modus per Software eingestellt werden.


Wenn die UC-1.5 im MAX Machine Modus ist, dann laufen die normalen UC Images nicht mehr. Es muss eine eigene Software verwendet werden für diese Betriebsart. Das ist zum Beispiel das MultiMAX Image.


Arten von UC Module

Es gibt drei Arten von UC Module:


UC-1 UC-1.5 UC-2
EPROM 128K 512K 512K
SRAM 32K 32K 512K
Register 1 2 2
Technik GAL / TTL GAL / TTL CPLD


Das UC-1 ist das kleinste UC Modul. Es unterstützt ein EPROM oder EEPROM mit einer Größe von 64KB (zB. W27C512) oder 128KB (zB. W27C010). Zusätzlich hat es ein 32K SRAM, mit dem man die C64 Standard Module (8K, 16K, Ultimax) emulieren kann. Alle Bauteile sind in THT Technik (keine SMD Bauteile), daher kann dieses Modul auch von einem Löt-Anfänger selbst hergestellt werden.


Das UC-2 ist der große Bruder des UC1 Modul. Es unterstützt FLASH Speicher (zB. AM29F040) bis zu 512KB (128K, 256K und 512K Speicher). Das SRAM hat ebenfalls eine Größe von 512KB.


Das UC-1.5 ist ein Modul zwischen UC-1 und UC-2. Es unterstützt EPROM, EEPROM und FLASH Speicher mit einer Größe von 512K. Das Modul hat zwei Register wie die UC2 und ist Software kompatibel zur UC-2. Der SRAM Speicher hat 32K (wie bei der UC1). Es existiert je eine Version in SMD und THT Technik.


C64 Module ganz allgemein

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 ...).


Wir unterscheiden zwei grundsätzliche Arten:

  • Software Modul (Software für den C64)
  • Hardware Modul (bringt neue Hardware)


Die Informationen auf dieser Seite beziehen sich nur auf Software Module. 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:

  • 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.

Der Banking Mechanismus ist aber nicht genormt. Deswegen ist die Software auf dem Modul beschränkt auf genau eine bestimmte Modul Type.


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 (8K, 16K, Ultimax) per Software einstellen.



Erstellen einer eigenen Programmsammlung

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.


UC Image Datei

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 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.


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 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.


Der UC-Builder

Der UC-Builder ist ein Werkzeug (ein Programm), um eine Image Datei für ein C64 Modul zu erstellen. Die Image Datei kann dann direkt in den ROM Speicher (Flash oder EPROM) gespeichert werden.

Die Beschreibung zum UC-Builder findet man hier: UC-Builder


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.


Beispiel einer CSV Datei:

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
-;                  UCF;      UCF\Exass.ucf


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 (Ausnahmen sind CRT und UCF).


Spalte 1 -- Programm Name:

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 UC 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.

Bei UCF Dateien muss man keinen Namen angeben, es genügt ein Bindestrich. Der Name steht in der UCF Datei. Natürlich kann man einen eigenen Namen wählen und hier angeben. Der Name in der UCF Datei wird in diesem Fall ignoriert.


Sonderfall 1 -- Hilfetext Zeile:

Wenn der Text in Spalte 1 mit einem Fragezeichen (?) beginnt, dann handelt es sich um eine Hilfetext Zeile.

Zu jedem Menü Eintrag kann man bis zu drei Hilfetext Zeilen definieren. Wenn Hilfetext Zeilen definiert werden, dann sind die untersten drei Zeilen reserviert für den Hilfetext. Der Hilfetext erscheint, wenn man den Menüeintrag selektiert. Um das Programm zu starten, muss der Menüeintrag ein zweites mal selektiert werden.

Bei einem Menüeintrag ohne Hilfetext wird das Programm sofort gestartet (nur einmal selektieren).

Hilfezeilen in der CSV Datei haben nur eine Spalte. Außer dem Hilfetext gibt es keine weiteren Parameter. Hilfezeilen in der CSV Datei müssen mit einem Fragezeichen (?) beginnen.


Sonderfall 2 -- Textzeilen (ab v1.13):

Wenn der Text in Spalte 1 mit einem Ausrufzeichen (!) beginnt, dann handelt es sich um eine Textzeile.

Anstatt einem Menüeintrag kann man optional einen Text ausgeben. Die Textzeile kann bis zu 127 Zeichen lang sein. In der Textzeile können auch Steuerzeichen enthalten sein (Cursor Steuerung, Farbcodes ...). Damit lässt sich der UC Startschirm relativ frei gestalten.

Textzeilen erscheinen da, wo normal der Menüeintrag stehen würde. Im Unterschied zu einem Menü Eintrag fehlt der Buchstabe um das Programm zu starten.

Textzeilen in der CSV Datei müssen mit einem Ausrufzeichen (!) beginnen.


Sonderfall 3 -- Kein Menüeintrag Name (ab v1.13):

Bei Verwendung von UCF Dateien, kann man auf den Namen des Menüeintrag verzichten. Dazu wird in der CSV Datei als Name nur ein '-' (Bindestrich) verwendet. Im UC Menü wird dann der Name verwendet, der in der UCF Datei gespeichert ist.


Sonderfall 4 -- Datei ohne Menüeintrag (ab v1.14):

Wenn der Text in Spalte 1 mit einem Doppelkreuz (#) beginnt, dann handelt es sich um eine Datei ohne Menüeintrag.

Nicht jede Zeile in der CSV Datei wird zu einem Menü Eintrag. Diese Zeilen erzeugen keinen Menüeintrag und dienen nur dazu, eine Datei in das UC Image File zu schreiben. Diese Datei kann dann geladen werden über ein oder mehrere Menü Einträge.

Für 'Datei ohne Menüeintrag' muss die erste Spalte mit einem '#' beginnen. Die Zeichen nach dem '#' ist der Referenzname. Die Datei kann dann in jedem Menüeintrag durch den Referenznamen (zum Beispiel '#ABC') adressiert werden. In einem Menüeintrag kann man dann in Spalte 3 anstatt des Dateinamen einen oder mehrere Referenznamen verwenden.


Das hat folgende Vorteile:

  • ein Menüeintrag kann mehrere Dateien laden
  • eine Datei kann von mehr als einem Menüeintrag geladen werden
  • die Reihenfolge der Menüeinträge muss nicht mit der Anordnung der Dateien im Image übereinstimmen


Spalte 2 -- Programm Typ:

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 oder OneFiler, das an der Adresse $801 (C64) oder $1C01 (c128) geladen und mit RUN gestartet wird
BAS2
ein BASIC Programm (zumindest ein SYS xxx) für den c64, das an der Adresse $0801 geladen und mit RUN gestartet wird
BAS7
ein BASIC Programm (zumindest ein SYS xxx) für den c128, das an der Adresse $1C01 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
32KB
das Programm wird als 32KB Modul gestartet (c128)
UltiMax
das Programm wird als Ultimax Modul gestartet
CRT
der Modul Typ wird selbsttätig erkannt, - nur bei CRT Dateien
UCF
die UCF Datei enthält alle Informationen, die der UC-Builder benötigt
"---"
Sonderfall für die Verwendung des internen UC-FB, wenn der Programm Name exakt 'F1' ist.
es kann aber auch verwendet werden für CRT und UCF Dateien, weil der UC Builder diese Dateien automatisch erkennt.


Spezial Steuerzeichen

"|"
Wenn das erste Zeichen ein senkrechter Strich (|) ist, dann wird für diesen Menü Eintrag das IO Register des UC Modul NICHT deaktiviert. Das bedeutet, man kann nach dem Start des Programm weiterhin auf die Konfiguration des UC Modul zugreifen. Zum Beispiel ist das so bei dem internen File Browser FB.


Spalte 3 -- Dateiname:

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, 32K, Ultimax oder MagicDesk128) sind, werden sie vom UC Builder und vom UC-FB richtig interpretiert.
UCF
Diese Dateien sind 'UCF Dateien' für den UC-Builder. Die Datei enthält alle relevanten Informationen, die für den Ladevorgang (LOAD) und dem Programmstart (RUN) nötig sind. Die Informationen in der Datei werden sowohl vom UC Builder als auch vom UC-FB interpretiert.


Spalte 4 -- Start Optionen: (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. Der c128 wechselt vorher in den C64 Modus.
(Das ist Standard bei Programm Typ 8KB, 16KB, UltiMax und CRT für den C64)
RESET128
Nach dem laden des Programmes wird ein Soft RESET ausgeführt.
(Das ist Standard bei Programm Typ 32KB und CRT für den c128)
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. Der Commodore c128 wechselt in den C64 Modus.
SYS128 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. Die Banknummer ist wie beim internen c128 Monitor die fünfte Hexziffer der Adresse.
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.
(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).
(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.
ROMX
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 werden direkt an der oberen Grenze (ROMH) einer 16K Bank angeordnet. Die Option ROMX ist gedacht für 8KB Ultimax Module. In Kombination mit einem 8KB Modul mit Option ROM wird die 16K Bank optimal genutzt und man verliert keinen Speicher wegen der Blockgrenzen.
Hinweis: für die optimale Nutzung der 16K Bank sollte abwechselnd die Option ROM (8K Modul) und ROMX (Ultimax) verwendet werden. Andernfalls entstehen Lücken wegen der Bank Grenze.


Textzeilen im UC Menü

Das UC-Menü enthält Menü Einträge, das sind startbare Programme. Am Bildschirm können bis zu 36 Menü Einträge stehen, 18 auf der linken Seite und 18 auf der rechten Seite. Jeder der 36 Menüeinträge hat eine feste Position am Bildschirm und für den Programm Start ist jedem Menüeintrag ein fester Buchstabe zugeordnet.

Seit der Version 1.13 des UC-Builder kann man anstatt eines Menü Eintrag eine Textzeile definieren. Die Textzeile ersetzt den Menü Eintrag, es ist also kein Programm zugeordnet für den zugehörigen Buchstaben.


Die Textzeilen dienen dazu, dass man den Bildschirm Aufbau etwas freier gestalten kann. Jede Textzeile belegt den Platz eines Menü Eintrag, der Text erscheint an derselben Cursor Position die dem Menü Eintrag zugeordnet ist. Mit einer leeren Textzeile kann den Menü Eintrag blockieren, dh. alle Programme rutschen eine Position nach unten.

Jede Textzeile kann bis zu 200 Zeichen enthalten. Die Zeichen in der Textzeile können normale Zeichen sein oder Steuerzeichen. Steuerzeichen belegen keine Cursor Position, man verwendet sie um die Farbe einzustellen und um die Position des Cursors zu verändern. Mit den Cursor Steuerzeichen kann man zum Beispiel auch die Kopf- oder die Fußzeile erreichen und manipulieren. Insgesamt erlauben die Textzeilen eine große Freiheit bei der Gestaltung des Bildschirm.

Jedes Zeichen in der Textzeile kann in der gewünschten Farbe ausgegeben werden. Die eingestellte Farbe beeinflusst aber auch alle weiteren Menü Einträge. Wenn man die Menü Einträge im standard Grün erhalten will, dann muss man am Ende der Textzeile das Farbcode Steuerzeichen für Grün setzen.

Um die Eingabe der Steuerzeichen zu erleichtern, sind Token implementiert worden für jedes Steuerzeichen. Anbei ist eine Liste der unterstützen Steuerzeichen Token.


Steuerzeichen:

PETSCII Token Short Beschreibung
147 {clear} {clr} löscht den Bildschirm
19 {home} Cursor in die Zeile 1 Spalte 1
29 {right} {rgt} Cursor nach rechts
157 {left} Cursor nach links
17 {down} Cursor nach unten
145 {up} Cursor nach oben
144 {black} {blk} Farbe Schwarz
5 {white} {wht} Farbe Weiß
28 {red} Farbe Rot
159 {cyan} {cyn} Farbe Cyanblau
156 {purple} {pur} Farbe Violett
30 {green} {grn} Farbe Grün
31 {blue} {blu} Farbe Blau
158 {yellow} {yel} Farbe Gelb
129 {orange} {ora} Farbe Orange
149 {brown} {brn} Farbe Braun
150 {lred} Farbe Hellrot
151 {gray1} {gr1} Farbe Grau 1
152 {gray2} {gr2} Farbe Grau 2
153 {lgreen} {lgr} Farbe Hellgrün
154 {lblue} {lbl} Farbe Hellblau
155 {gray3} {gr3} Farbe Grau 3
18 {rvson} Invertierte Schrift EIN
146 {rvsoff} Invertierte Schrift AUS
13 {return} {rtn} Zeilenschaltung (Cursor in die nächste Zeile erste Spalte)
14 {letter} Wählt den Zeichensatz Groß-/Kleinbuchstaben
142 {grafic} Wählt den Zeichensatz Grafikzeichen



Mehrere Menü Seiten

Ab Version 1.14 werden mehrseitige Menüs unterstützt. Eine Menü Seite hat bis zu 42 Menü Einträge. Speziell bei 1 MB Module kann man da leicht an die Grenzen kommen. Wenn man viele kleine Programme hat, oder wenn man viele Textzeilen benutzt, dann reichen die 42 Menü Einträge nicht aus.

Der UC-Builder bildet automatisch eine neue Menü Seite, sobald man mehr als 42 Einträge hat.

Das UC-Menü zeigt in der Kopfzeile die aktuelle Seite (in hellgrau) an, alle anderen Seiten werden in dunklem Grau angezeigt. Der Wechsel zur nächsten bzw. vorherigen Seite erfolgt über die Cursortasten (<Cursor links>, <Cursor rechts>). Die Zeichen '<' und '>' symbolisieren die Cursortasten für den Seiten Wechsel. Wie immer im UC-Menü symbolisiert die Farbe weiß, dass der Seitenwechsel möglich ist. So ist '<' in grau dargestellt, wenn man sich auf der ersten Seite befindet. Und '>' ist in grau dargestellt, wenn man sich auf der letzten Seite befindet.

Bei bis zu 5 Menü Seiten ist das Format '<1..n>'. Bei mehr als 5 Menü Seiten wird nur noch die aktuelle Seite angezeigt im Format '<n>'.


Der File Browser (UC-FB)

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.


MAX Machine

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. Die 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.


Der MAX Machine Modus unterliegt den Beschränkungen dieser Ziel Plattform:

  • 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)


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.


Modul Gehäuse selbst gedruckt

Vielen Dank an Goodwell vom Forum-64, er hat wunderschöne Gehäuse konstruiert für das UC-2 und das UC-1.5 (siehe F64 Beitrag). Mit seiner Erlaubnis verlinke ich die STL Dateien im 'Links' Bereich.


Vielen Dank an Proto vom Forum-64 für seine UC-1.5 STL:



Support für andere Modul Typen


MagicDesk

Das MagicDesk Modul ist eine EPROM Cartridge mit bis zu einem MB. Das Banking wird über ein Register an der Adresse $DE00 (IO-1) gesteuert. Das Modul startet im 8KB Modus des C64. Die Bits 0 bis 5 dienen zur Auswahl der 8K Bank.

Das Bit 7 des Register steuert das Signal /EXROM. Nach einem Reset wird Low ausgegeben, wodurch der C64 im 8K Modul Modus startet. Durch schreiben von $80 an die Adresse IO-1 wird das Modul deaktiviert.

Das Bit 6 des Register steuert die Sichtbarkeit des IO Register. Damit kann man verhindern, dass ein deaktiviertes Modul wieder eingeschaltet wird. Die 1MB Module verwenden Bit 6 für das Banking. Manche Module unterstützen das Bit 6 gar nicht, andere schalten die Funktion von Bit 6 per Jumper Brücken.


Beim UC-2 Modul kann man ein MagicDesk Modul emulieren über ein passendes Jedec File für den CPLD.


EasyFlash

Das EasyFlash Modul ist eine FLASH Cartridge mit einer Größe von einem MB. Es unterstützt alle Modul Typen des C64 (8K, 16K, UltiMax). Die beiden Flash Bausteine können vom C64 aus beschrieben werden. Das EasyFlash hat SRAM, von dem 256 Bytes eingeblendet werden an der Adresse $DFxx (IO-2). Für das EasyFlash gibt es ein BIOS, das die Funktionalität des Modul unterstützt. Das Modul startet im UltiMax Modus des C64 oder optional deaktiviert (per Jumper steuerbar).

Das Banking wird über ein Register an der Adresse $DE00 (IO-1) gesteuert. Ein zweites Register an der Adresse $DE02 steuert die Funktionen es Modul.


Beim UC-2 Modul kann man ein EasyFlash Modul teilweise emulieren über ein passendes Jedec File für den CPLD. Dadurch laufen auf dem UC-2 Modul viele Programme, die für das EasyFlash gemacht worden sind, wie zB. das Spiel 'Prince of Persia'.


MultiMax

Das MultiMax Modul ist eine Speicher Cartridge, die alle klassischen UltiMax Spiele beinhaltet die es gibt. Dazu gibt es ein nett gemachtes Menü, über das die Spiele ausgewählt und gestartet werden.

Für das UC-2 und das UC-1.5 Modul existiert ein modifiziertes MultiMax Image. Damit kann man das MultiMax Modul emulieren auf dem UC Modul.


COMAL-80

Das Comal-80 Modul ist eine EPROM Cartridge mit bis zu 96KB (drei EPROM zu je 32K). Die EPROM's U1 und U2 beinhalten das eigentliche COMAL. Der dritte Sockel U3 ist normalerweise frei. Man kann da COMAL Erweiterungen installieren (ZB. die Super Chip Erweiterung). Mit einer kleinen Hardware Modifikation unterstützt das Modul sogar 4 EPROM's (insgesamt 128KB), zB. die PAKMA Erweiterung nützt die ganzen 128KB.

Das Banking wird über ein Register an IO-1 (Adresse $DE00) gesteuert. Das Bit 0 steuert A14 von allen EPROM und wählt damit die unteren 16K oder die oberen 16K. Die Bits 1 und 2 wählen eines der EPROM aus (00=U1, 01=U2, 02=U3). Mit 11 würde man das optionale vierte EPROM selektieren, allerdings ist im Modul kein vierter Sockel vorhanden. Der Hardware Umbau erfordert zwei Dioden und ein 64K EPROM. Mit den zwei Dioden kombiniert man die Selektion von U3 und U4.

Das Bit 6 des Register steuert die Signale /EXROM und /GAME. Nach einem Reset wird Low ausgegeben, wodurch der C64 im 16K Modul Modus startet. Durch schreiben von $40 an die Adresse IO-1 wird das Modul deaktiviert. Spätere COMAL Module können /EXROM und /GAME separat steuern über Bit 5 und 6. Damit könnte man auch in den 8K und in den UltiMax Modus wechseln, das wird aber von keiner COMAL Version unterstützt. Um sicher zu stellen, dass die Modul Abschaltung funktioniert, sollte man daher zum abschalten des Modul den Wert $60 in das Register schreiben. Das funktioniert mit allen COMAL Modulen.


Beim UC-2 Modul kann man eine Comal Modul emulieren über ein passendes Jedec File für den CPLD.

Beim UC-1 ist es nicht ganz so einfach, da der GAL die Signale EXROM und GAME nicht direkt kontrolliert. Es braucht eine minimale Modifikation der Hardware:


COMAL Anpassung beim UC-1 ab Rev. 5d
  • Brücke J1 auftrennen (trennt /EXROM vom Register Ausgang 7)
  • Brücke J3 verbinden (verbindet /EXROM und /GAME)
  • Brücke statt der Diode, wenn man die Reset Logik nicht bestückt


COMAL Anpassung beim alten UC-1
  • eine Brücke einlöten beim Modul ganz oben (/EXROM und /GAME verbinden)
  • Pin 19 am 74LS273 heraus biegen (oder abschneiden)


Es funktionieren alle Comal-80 Images die ich so gefunden habe, auch das 128K große PAKMA Comal-80. Und selbstverständlich auch die hausgemachte Super Chip II Erweiterung.

Das SRAM ist unnötig für COMAL-80, man kann es einfach weg lassen.


News

  • 11.06.2021 -- Prototyp der UC1
  • 14.07.2021 -- Release der UC1
  • 20.09.2021 -- UC-2 voll funktionsfähig
  • 23.09.2021 -- UC-1.5 Prototyp
  • 08.10.2021 -- Release der UC2
  • 28.10.2021 -- Release der UC-1.5
  • 20.08.2023 -- UC-1 Rev.5d


Downloads


Links