Universal Cartridge 1

Aus
Version vom 24. August 2021, 17:31 Uhr von Tw (Diskussion | Beiträge) (Programmierung der UC1)
Wechseln zu: Navigation, Suche
Universal Cartridge 1 (UC1)
Universal Cartridge 1 (UC1)


Universal Cartridge 1 (UC1)


C64 Modul

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)



Aufbau / Technische Spezifikation

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.


Bauteile auf der UC1 Platine:

  • ein EPROM mit 64 oder 128K (zB. W27C512 oder W27C010)
  • ein SRAM mit 32KB
  • ein TTL Baustein 74LS272
  • ein GAL 16v8
  • 4 Stück Kondensatoren (100nF)


Für die Programmierung des EPROM und des GAL wird ein Programmiergerät benötigt (zb. der gängige TL866).


UC1 Image Datei

Die Software auf dem UC1 Modul kann man frei zusammen stellen. Dazu dient ein kleines Programm (UC-Tool) 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 UC1 Loader. Der UC1 Loader ist ein C64 Programm, das für die Bedienung des Modul (UC Menü) notwendig ist.


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 Datei Loader in der Image Datei befindet, dann kann man das Programm über die Taste <F1> starten. Der Datei Loader 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 Datei Loader 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.


Das UC Tool

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


Das UC Tool benötigt man, um eine UC1 Image Datei zu erstellen. Die Image Datei enthält den UC Loader, das UC Menü (die Programmauswahl) und alle C64 Programme die in dem Modul sind. Der UC Loader ist in dem UC Tool bereits enthalten und wird immer automatisch in die Image Datei geschrieben. Das UC Menü wird vom UC Tool erzeugt und in die Image Datei geschrieben.


Für die Erstellung des UC Menü benötigt das UC Tool 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 CSV Datei für die Menü Erstellung

Das UC Tool 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 Tool den Namen der CSV Datei (-m menuFile.csv). Wenn das UC Tool 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


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.


Folgende Kürzel sind in der Spalte Typ erlaubt:

  • PRG ------- (normales Programm das mit RUN gestartet werden kann)
  • 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)



Entwicklung und erste 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 ... Zum Glück habe ich großartige Hilfe bekommen aus dem 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!!



Leider haben sich bei dem Platinen Prototyp noch zwei kleine Fehler eingeschlichen. Die Probleme wurden mit Fädeldraht behoben und das Layout wurde überarbeitet.



Technik der UC1

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.

Übrig bleiben nur die beiden Speicherbausteine (EPROM und SRAM) und ein achtfach D-Latch (74LS273) als Register zur Konfiguration der UC1.



Das Register kann vom C64 aus beschrieben werden und liegt an der Adresse $DE00 (IO-1). Der Zugriff auf das Register kann aber auch abgeschaltet werden, sodass die Einstellungen der UC1 nicht mehr versehentlich verändert werden können.


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

  • drei Pins dienen dem Banking und selektieren eine 16K Bank
  • zwei Pins steuern Signale zum C64 (EXROM und GAME)
  • der Rest steuert Funktionen im GAL (EPROM <--> RAM, RAM write access, Register enable/disable)


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


Der EPROM in dem UC1 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.

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.

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


Programmierung der UC1

Für die UC1 gibt es fertige Software:

  • UC Tool ----- 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 Datei Browser auf Basis des bewährten Tool FB


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

  • das UC1 Modul startet immer im 16K Cartridge Modus (passende Initialisierung!)
  • 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 Tool 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 konfiguriert ist (UC Register -- write enable)
  • das Schreibfenster ist gespiegelt und liegt von $4000 bis $8000 und von $8000 bis $C000


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.


UC Register:

  • Bit 0 --- Banking A14
  • Bit 1 --- Banking A15
  • Bit 2 --- Banking A16
  • Bit 3 --- IO Register disable (1 - Register ist unsichtbar)
  • Bit 4 --- SRAM write enable (1 - SRAM kann beschrieben werden)
  • Bit 5 --- SRAM select (1 - RAM, 0 - EPROM)
  • Bit 6 --- Signal /GAME (GAME und EXROM bestimmen den C64 Cartridge Mode)
  • Bit 7 --- Signal /EXROM (GAME und EXROM bestimmen den C64 Cartridge Mode)




WEB Links