MixSID

flexibles Stereo-SID-Board mit integrierter Audio-Mischung

Der MixSID ist ein Stereo-SID-Board für den C64 das mit jeder beliebigen Kombination aus SID-Modellen bestückt und auf allen gängigen C64-Hauptplatinen betrieben werden kann.

Der MixSID bietet unter anderem einen integrierten Stereo-Kanal-Mischer, einen einfachen Stereo-Adressierungs-Modus, flexible Handhabung von IO-Bereichen, Audio-Eingangs-, Ausgangs- und Digiboost Schaltungen, einen dedizierten Stereo-Ausgang, vollständige Kompatibilität mit Paddles und Mäusen und umfangreiche digitale Steuerungsmöglichkeiten.

Einen schnellen Überblick über die vorhandenen Funktionen, die Hardware-Optionen und das Zusammenspiel der verschiedenen Steuersignale bietet das interaktive Konfigurationstool.

Eine einfache Schritt-für-Schritt Aufbauanleitung hilft beim Bestücken der Platine. In jedem Schritt werden die benötigten Bauteile, deren Position und Wert übersichtlich dargestellt.

Die Dokumentation ist auf deutsch und englisch verfügbar.

Übersicht

Das Board passt auf die am weitesten verbreiteten Hauptplatinen 250407, 250425, 250466 (Brotkasten) und 250469 (flaches Gehäuse).

Es passt nach einigen Anpassungen auch in einen SX64.

Es wird wahrscheinlich nicht auf den frühen Platinen 326298 and KU14194HB passen.

Die Abmessungen des Boards und der Bauteile wurden so gewählt, dass der Einbau sowohl in Brotkästen als auch in flachen Gehäusen möglich ist.

Sowohl +12V als auch +9V werden direkt auf dem Board erzeugt und machen so die Wahl der SID-Modelle unabhängig vom Modell der verwendeten Hauptplatine.

Auf älteren Hauptplatinen werden die +9V für den 8580 aus den vorhandenen +12V erzeugt. Auf der späteren 250469 werden beide Spannungen aus den an der Kathode von CR3 angliegenden +20V erzeugt.

Zur Konfiguration der SID-Modelle und des Hauptplatinen-Modells werden Jumper verwendet, sodass die Verwendung derselben Karte auf unterschiedlichen Hauptplatinen und mit unterschiedlichen SID-Modellen möglich bleibt. So muss man sich nicht bereits beim Aufbau für eine bestimmte Konfiguration entscheiden.

Mit Hilfe des integrierten Kanalmischers kann gesteuert werden, ob und wenn ja auf welchen Stereo-Kanälen die Ausgaben der beiden SIDs erscheinen sollen. So kann entweder ein einzelner SID in Mono oder auch beide SIDs zusammen in Stereo gehört werden.

Vier verschiedene Mischungen stehen dabei zur Auswahl:

  • SID1 auf beiden Kanälen (Mono)
  • SID2 auf beiden Kanälen (Mono)
  • SID1 auf dem linken, SID2 auf dem rechten Kanal (Stereo)
  • SID1 auf dem rechten, SID2 auf dem linken Kanal (Stereo)

Die Adressierung des zweiten SIDs erfolgt lediglich in zwei Hauptbetriebsarten.

Im Parallelbetrieb erscheinen beide SIDs gleichzeitig im üblichen Adressraum bei $D400. Wird ein Mono-Stück gespielt, spielen beide SIDs dasselbe.

Im Stereobetrieb erscheint der zweite SID auf den gängigsten Stereo-Adressen $D420 und $D500 gleichzeitig. Optional kann der zweite SID zusätzlich bei $DE00 und/oder $DF00 mit erscheinen.

Dies macht die Auswahl der tatsächlich von einem bestimmten Stereo-Stück erwarteten Adresse überflüssig. Es muss lediglich in den Stereo-Modus geschaltet werden.

Die Rollen der beiden SIDs können im Stereo-Modus vertauscht werden, d.h. es kann gesteuert werden, welcher SID bei $D400 bleiben soll (der primäre SID) und welcher SID auf die Stereo-Adressen gelegt werden soll (der sekundäre SID).

Stereo-Stücke, die für zwei verschiedene SID-Modelle geschrieben wurden, erwarten mal das eine, mal das andere Modell bei $D400. Dieses feature macht es möglich, diese Stücke entsprechend abzuspielen, ohne das dazu die SIDs tatsächlich in ihren Sockeln getauscht werden müssten.

Es kann gesteuert werden, welcher SID auf Lesezugriffe antwortet, selbst wenn beide SIDs parallel bei $D400 adressiert werden. Nur der als primärer SID eingestellte SID antwortet auf Lesezugriffe und damit auf die Erkennung durch auf dem C64 laufende Software.

Die Leitungen I/O1 und I/O2 können dauerhaft angeschlossen werden. Im Betrieb kann jedoch jederzeit gesteuert werden, ob der sekundäre SID im Stereo-Modus an den entsprechenden Adressen $DE00 und/oder $DF00 erscheinen soll oder nicht.

Dadurch können eventuell auftretende Konflikte mit Expansionsportmodulen in diesen Adressbereichen auf einfache Art und Weise vermieden werden.

Paddles und Maus funktionieren unabhängig von der aktuell gewählten Betriebsart.

Werden beide SIDs parallel bei $D400 adressiert, so antwortet nur der primäre SID auf Lesezugriffe, während der sekundäre SID diese vollständig ignoriert.

Zusätzlich werden die Leitungen POTX und POTY stets nur an den gerade als primären SID konfigurierten SID weitergeleitet, sodass auch die Wahl der SID-Priorität keinen Einfluss auf die Paddle-Funktion hat.

Originalgetreue Ausgangsschaltungen für jeden SID vermeiden die Abhängigkeit von der jeweils auf der Hauptplatine verwendeten Ausgangsschaltung. Die Schaltungen sind identisch mit der auf der Hauptplatine 250469 verbauten Schaltung, wobei den im Schaltplan vorgeschlagenen Variationen für unterschiedliche SID-Modelle Rechnung getragen wird.

Beide Ausgangssignale werden nach der Mischung an einen dedizierten Stereo-Ausgang geführt.

Die Karte enthält alle nötigen Schaltungen um die gängigen Methoden zur Anpassung der Samplelautstärke beim 8580 und zur Verringerung von Störgeräuschen umsetzen zu können. Ebenso sind Eingangsschaltungen für beide SIDs vorhanden.

Da verschiedene Modelle und auch einzelne SIDs des gleichen Modells unterschiedlich laut klingen können wurde für jeden SID eine eigene Lautstärkeregelung verbaut. So kann die Stereo-Balance für jedes verwendete Paar perfekt eingestellt werden.

Die Audio-Ausgabe kann auf Wunsch auch an die vorhandene Ausgangsschaltung der Hauptplatine weitergeleitet werden, so dass auch an der Video-Buchse und am Composite-Ausgang eine zusätzliche Ausgabe möglich ist. Dabei kann zwischen einem der beiden SIDs gewählt werden oder aber beide Signale zuvor auf Mono gemischt werden (wobei letzteres zu einem gewissen Übersprechen führt).

Abgesehen von Spannungsversorgung und Modell-Einstellungen sind alle Funktionen optional und auf sinnvolle Art und Weise vorbelegt.

Werden beispielsweise keine anderen Steuer- oder Hauptplatinensignale verbunden, wird der zweite SID stets parallel zum ersten adressiert und beide auf unterschiedlichen Kanälen in Stereo ausgegeben.

Nur wenn man auch Stereo-Stücke hören möchte müssen A5 und A8 verbunden werden und die jeweilige Betriebsart über die MODE SELECT Steuerleitung eingestellt werden.

Möchte man nun auch mal einen SID einzeln hören können, müssen entsprechend die Steuerleitungen für den Kanalmixer angeschlossen werden.

So kann der MixSID nach individuellen Bedürfnissen und Vorlieben betrieben werden.

Alle zur Laufzeit steuerbaren Funktionen werden mit 5V-kompatiblen digitalen Signalen geschaltet. Sind diese Signale nicht verbunden werden sie als HIGH interpretiert. So kann das Signal durch das Verbinden mit GND auf LOW geschaltet werden, es können also im einfachsten Fall Steckbrücken oder einpolige Schalter verwendet werden. Die Signale können jedoch genauso gut durch externe ICs oder Microcontroller geschaltet werden.

Dadurch werden einfache Formen der Steuerung ebenso unterstützt wie die Steuerung durch komplexere Erweiterungen wie zum Beispiel durch den Keyman64.

Es wurde kein Versuch unternommen den Benutzer von der Verantwortung für die korrekte Konfiguration seiner SIDs zu befreien. Der Benutzer, und nur er selbst, konfiguriert die Versorgungsspannung, die Filterkondensatoren und Ausgangswiderstände mit Hilfe von Jumpern.

Um dem Benutzer hierbei bestmöglich zu unterstützen wurde auf umfangreiche und erschöpfende Dokumentation Wert gelegt.

Der MixSID ist auf einfache Produzierbarkeit und manuellen Aufbau hin entworfen. Es wurde einfache Technik frei von SMD-Bauteilen verwendet. Die hier bereitgestellten Fertigungsdateien im Gerber-Format können bei jedem Platinenhersteller in Produktion gegeben werden.

Alle Quelltexte und Design-Dateien sind veröffentlicht und können unter den Bedingungen der GNU General Public License 2 frei verwendet und modifiziert werden.

Pull requests sind willkommen.

Dokumentation

Dateien

Quellen

Die Distribution enthält den Quellcode für die 16V8GAL Logik, den Schaltplan und die Design-Dateien im KiCad-Format.

Aktuelle Version MixSID-1.0.tar.gz

Alle veröffentlichten Versionen unter /download/MixSID/

Letzte Entwicklungen auf github:

$ git clone https://github.com/hbekel/MixSID

Fertigung

Bestellung von Bausätzen

Ich biete Bausätze zum Preis von 25€ pro Stück an. Der Bausatz enthält die Platine, einen vorprogrammierten GAL und alle weiteren benötigten Teile (ausgenommen Verbindungskabel und SID-Chips). Weltweiter Versand per Post ist kostenlos.

Bestellungen könnt Ihr per Mail an henning.liebenau@protonmail.com tätigen.

Bitte verwendet das Wort “MixSID” im Betreff. Gebt in der Mail euren vollen Namen, Eure Lieferadresse und die Anzahl der gewünschten Bausätze an. Bitte beachtet, dass die Anzahl der Bausätze pro Person auf zwei Stück beschränkt ist. Ihr bekommt dann von mir per Mail weitere Informationen zur Bezahlung per Überweisung. Bitte beachtet, dass im voraus gezahlt werden muss, um die Bestellung verbindlich zu bestätigen.

Hinweise zur Verfügbarkeit

Ich versuche stets eine ausreichende Menge an Bausätzen auf Lager zu halten. Bitte beachtet jedoch, dass dies mit geringem Budget und bei minimaler Gewinnmarge in meiner Freizeit passiert. Mein Ziel ist es primär, der Community meine Hardware zugänglich zu machen, und nicht etwa ein profitables Geschäft zu betreiben.

Sollte ich also momentan keine Bausätze auf Lager haben kann es durchaus einige Wochen dauern, bis ich eine neue Serie von Bausätzen produzieren und somit eurer Bestellung nachkommen kann. Unter Umständen muss ich auch warten, bis eine ausreichende Anzahl an Vorbestellungen eingeht, bevor ich selbst die nötigen Bauteile zu einem ausreichend günstigen Preis bestellen kann. In diesen Fällen werde ich Euch natürlich regelmäßig über den Status Eurer Bestellung informieren. Es bedarf also unter Umständen ein wenig Geduld und auch Vertrauen von Eurer Seite.

Voraussetzungen

Unterstützte Hauptplatinen

Das MixSID-Board wurde bisher auf den Hauptplatinen 250407, 250425, 250466, und 250469 erfolgreich eingebaut und getestet.

Der Forum64-User Goethe hat einen MixSID erfolgreich in einem SX64 verbaut und freundlicherweise seine Ergebnisse zur Verfügung gestellt.
Da die Komponenten um den SID-Sockel herum relativ hoch sind, wurde zunächst ein zweiter Sockel eingesetzt:
Die MixSID-Platine berührt allerdings immer noch einige der umliegenden Bauteile:
Um keine Instabilität zu riskieren, wurde anstelle eines weiteren Sockels etwas Isolationsmaterial zwischen dem MixSID und den darunterliegenden Bauteilen hinzugefügt:
Der MixSID sitzt nun ohne Kontakt zu anderen Bauteilen stabil im Sockel:
Schließlich passt alles gut zusammen, selbst wenn Kühlkörper verwendet werden:
Goethe hat die von ihm gebrauchten Addressierungs-Signale an den folgenden Stellen abgegriffen:
  • A5 von UD1 Pin 3
  • A8 von UD1 Pin 23
  • IO1 von UC1 Pin 10

Das Board wird wahrscheinlich nicht auf den frühen Platinen 326298 and KU14194HB passen.

Der MixSID wurde noch nicht auf diesen Hauptplatinen getestet. Falls Ihr den Einbau dort vornehmt, teilt mir bitte Eure Ergebnisse mit.

Abmessungen

Höhenbeschränkungen

Gesockelte CPU

Wird der MixSID auf einer Hauptplatine verbaut, auf der sich der SID-Sockel nahe der oberen Kante befindet, wird die Platine über der CPU schweben. Falls die CPU selbst gesockelt ist, wird ein weiterer Zwischensockel benötigt, um die Platine über der CPU halten zu können.

Kühlkörper

Falls Kühlkörper auf die SIDs gesetzt werden sollen und auf einer Hauptplatine installiert werden soll, auf der sich der SID-Sockel nahe des unteren Randes befindet, werden die Kühlkörper mit dem Rahmen der Tastatur kollidieren, es sei den, es wird dort eine Aussparung vorgenommen. Diese Beschränkung betrifft im Grunde alle Stereo-SID-Platinen.

Stiftleiste für Steuersignale

Es sollte zuvor entschieden werden welche Art von Stiftleiste für die Steuersignale am oberen rechten Rand der Platine verwendet werden soll. Dies ist abhängig von der/den zu verwendenden Hauptplatine/n und Gehäusen sowie der geplanten Art und Weise der Ansteuerung.

Falls Steckbrücken oder einfache Schalter verwendet werden sollen ist eine zweireihige Stiftleiste zu empfehlen, da die untere Reihe für diesen Zweck durchgehend Masse zur Verfügung stellt.

Falls zur Ansteuerung ein anderer IC oder ein Microcontroller verwendet werden soll reicht hier auch eine einreihige Stiftleiste, da die Steuersignale ausschließlich in der oberen Reihe zu finden sind.

Falls nur auf einer Hauptplatine installiert werden soll, auf der sich der SID-Sockel nahe dem unteren Rand befindet (250407 oder 250469) und ein flaches Gehäuse verwendet werden soll, so bietet sich aufgrund der geringeren Höhe eine gewinkelte Stiftleiste an. Allerdings ist zu beachten, dass eine gewinkelte Stiftleiste den späteren Einbau auf einer 250425 oder 250466 verhindert, da die Platine dort sehr nahe an der seriellen Buchse platziert wird.

Aufbau

Sind alle Vorraussetzungen erfüllt sollte der Aufbau relativ problemlos vorgenommen werden können. Jedoch ist etwas Vorsicht beim Einbau der Bauteile innerhalb der SID-Sockel geboten, da eine falsche Reihenfolge hier dazu führen kann, dass andere Bauteile nicht mehr ohne Probleme verlötet werden können.

Daher sollte zumindest für den Anfang diese Schritt-für-Schritt Aufbauanleitung verwendet werden, um Fehler in diesem Bereich zu vermeiden.

Es folgt zusätzlich zur Aufbauanleitung eine Liste der benötigten Bauteile und ein Bestückungsplan.

Alle Widerstände müssen mindesten 1/4W vertragen. Metall- oder Präzisionswiderstände werden empfohlen.

Die Keramik- bzw Filmkondenstatoren sollten so klein wie möglich ausfallen.

Es gibt auch einen Reichelt-Warenkorb (ohne GAL16V8D) für weiterführende Informationen zu den zu verwendenden Bauteilen.

Anzahl Typ Wert Paket/RM
1 GAL16V8D 15ns DIP20 7.62mm
1 74HC4052   DIP16 7.62mm
1 74HC4053   DIP16 7.62mm
1 ICL7760   DIP8 7.62mm
2 Widerstand 100k 6.5mm, ∅ 2.5mm
2 Widerstand 220k 6.5mm, ∅ 2.5mm
4 Widerstand 1k 6.5mm, ∅ 2.5mm
2 Widerstand 10k 6.5mm, ∅ 2.5mm
2 Widerstand 4.7k 6.5mm, ∅ 2.5mm
9 Keramik/Film Kondensator 100nF 2.5mm
4 Keramik/Film Kondensator 22nF 2.5mm
8 Keramik/Film Kondensator 470pF 2.5mm
2 Keramik/Film Kondensator 1n 2.5mm
4 Elektrolytkondensator 10uF/16V Subminiatur, Höhe 7mm,
∅ 4mm, RM 1.5mm
2 BC547A NPN TO-92
1 LM7812 12V TO-220
1 LM7809 9V TO-220
2 1N4002 100V/1A DO-41
2 Trimmer 1M Suntan 3296, Länge 10mm, Breite 5mm, Höhe 10mm, RM 2.54/5mm
2 Trimmer 10k Vishay T7YA/Bourns 3339P ∅ 7mm, Höhe 6mm, RM 2.54mm
1 Präzisionssockel   DIP8, 7.62mm
1 Präzisionssockel   DIP16, 7.62mm
2 Präzisionssockel   DIP28, 15.24mm
2 IC Adapterleiste   SIL14, 2.54mm
10 Stiftleiste, gerade 3x1 2.00mm
2 Stiftleiste, gerade 2x1 2.54mm
2 Stiftleiste, gewinkelt 3x1 2.54mm
1 Stiftleiste, gewinkelt 5x1 2.54mm
1 Stiftleiste, gerade oder gewinkelt, siehe Stiftleiste für Steuersignale 6x2 oder 6x1 2.54mm
10 Jumper   2.00mm
3 Jumper   2.54mm

Die folgenden Bauteile sind optional, siehe Weiterleitung der Ausgabe an die Hauptplatine.

Anzahl Typ Wert Paket/RM
2 Widerstand 1k 6.5mm, ∅ 2.5mm
1 Präzisionssockel   SIL4, 2.54mm

Mit der Maus über ein Bauteil fahren oder
Alle Werte für Bauteile anzeigen

Einbau

Versorgungsspannungen prüfen

SIDs dürfen nicht eingesetzt werden, bevor nicht sichergestellt ist, dass die Versorgungsspannungen korrekt sind. Zu hohe oder fehlende Spannungen können schnell zu dauerhaften Beschädigungen an den SIDs führen!

Zunächst muss sichergestellt sein, dass die korrekten Spannungen tatsächlich an den SID-Sockeln anliegen. Der SID wird durch zwei getrennte Spannungen versorgt: VCC (Pin 25) und VDD (Pin 28). VCC muss bei beiden Modellen +5V betragen, während VDD für den 8580 bei +9V und für den 6581 bei +12V liegen muss.

Fehlen entweder VCC oder VDD oder überschreiten die Spannung die oben genannten Werte kann es zu dauerhafter Beschädigung des SIDs kommen. Daher muss überprüft werden, ob die korrekten Spannungen für jedes Modell and beiden Sockeln anliegen, bevor tatsächlich SIDs eingesetzt werden.

Vorbereitungen

  • Zunächst müssen alle Jumper vom Board entfernt werden.

  • Dann wird das Hauptplatinen-Modell konfiguriert.

  • Der C64 muss ausgeschaltet sein.

  • Nun wird der MixSID in den SID-Sockel der Hauptplatine gesteckt. Dazu müssen unter Umständen einige Bauteile auf der Hauptplatine vorsichtig umgebogen werden. Es muss sichergestellt werden, dass keine Kurzschlüsse zwischen den Bauteilen der Hauptplatine und dem MixSID entstehen.

  • Wird eine Hautplatine des Typs 250469 verwendet muss auch die Spannungsversorgung angeschlossen werden.

  • Den C64 einschalten.

Messungen

Das folgende Bild zeigt die Pins GND, VCC und VDD an den SID-Sockeln:

Die folgenden Schritte müssen an beiden Sockel durchgeführt werden:

  • An VCC müssen +5V anliegen

  • Der VDD-Jumper des entsprechenden Konfigurationsblocks wird in die obere Position gesetzt (6581). Es müssen nun +12V am VDD-Pin des Sockels anliegen.

  • Danach wird der VDD-Jumper in die untere Position gesetzt (8580). Es müssen nun +9V am VDD-Pin des Sockels anliegen.

Fehlt eine dieser Spannung oder weicht um mehr als 0.5V nach oben oder unten ab sollten keine SIDs eingesetzt werden. Das Board muss auf Fehler überprüft werden.

Sind alle Spannungen korrekt werden die VDD-Jumper zunächst wieder entfernt.

Externe Signale und Spannungsversorgung

Der MixSID benötigt für den vollen Funktionsumfang einige externe Signale von der C64-Hauptplatine. Diese werden an der Stiftleiste unten links angeschlossen:

Es gibt verschiedene Möglichkeiten, die externen Signale von der C64-Hauptplatine abzugreifen.

Die einfachste, wenn auch am wenigsten elegante Methode besteht darin, einfach ein Kabel direkt an die IC-Beinchen zu löten, an denen das Signal anliegt. Hierbei muss allerdings darauf geachtet werden, dem IC beim Löten nicht zuviel Hitze zuzumuten.

Eine weniger auffällige Methode besteht darin, die Kabel von der Unterseite an die entsprechenden IC-Beine zu löten und das Kabel dann um die Kante der Hauptplatine herum zum MixSID zu führen. Hierbei ist natürlich auch in Bezug auf Hitze die nötige Vorsicht geboten.

Schließlich kann man das Signal auch zu einer günstig gelegenen Durchkontaktierung auf der Hauptplatine verfolgen und dort eine einzelne Stiftleiste einlöten. Dort kann dann einfach ein geeignetes Kabel gesteckt werden.

Die Addressbus-Signale A5 and A8

Um den MixSID im Stereobetrieb verwenden zu können müssen die Adressbus-Signale A5 und A8 verbunden werden. Man findet sie unter anderem am Kernal-ROM:

Die Expansionsport-Signale I/O1 und I/O2

Diese Signale werden nur benötigt, wenn der sekundäre SID im Stereobetrieb optional auch bei $DE00 und/oder $DF00 erscheinen können soll. Siehe auch hierzu auch den Abschnitt IO Enable.

Die Signale finden sich unter anderem an Pin 7 und Pin10 des Expansionsports:

Signale auf der Hauptplatine 250469

Auf der 250469 lassen sich alle vier Signale an einer günstig gelegenen Stelle links vom HF-Modulator abgreifen. Die Durchkontaktierungen sind hier im 2.54mm-Raster platziert, sodass auch gut eine entsprechende Stiftleiste eingelötet werden kann.

Spannungsversorgung auf der Hauptplatine 250469

Auf einer Hauptplatine des Typs 250469 muss der VEXT-Pin des MixSID mit einer Spannungsquelle von mindestens +15VDC verbunden werden.

Ungefähr +20VDC finden sich an der Kathode der Gleichrichterdiode CR3 auf der Hauptplatine. Diese Spannung kann gefahrlos für diesen Zweck verwendet werden.

Es kann entweder ein Kabel von der Oberseite direkt an den Draht der Kathode von CR3 gelötet werden, oder man verbindet ein Kabel am Lötpunkt auf der Unterseite.

Wird an den Draht der Kathode gelötet, so ist darauf zu achten, dass es sich tatsächlich um die Kathode handelt, also die Seite, auf der die Diode mit einem Ring gekennzeichnet ist:


Oberseite


Unterseite

Audio-Ausgang

Genau wie der Audio-Ausgang der C64-Hauptplatine gibt der Ausgang des MixSID ein normales Line-Out-Signal aus. Dieses Signal muss verstärkt werden, sei es über den Line-In einer Stereoanlage, eines Mischpultes oder eines Kopfhörerverstärkers.

In keinem Fall dürfen Lautsprecher oder Kopfhörer direkt verbunden werden, da diese eine sehr niedrige Impedanz aufweisen und so den Ausgang praktisch kurzschließen, was unter Umständen zur Zerstörung der Ausgangsschaltung oder gar der SIDs führen kann.

Konfiguration

Um die Konfiguration des MixSID zu vereinfachen gibt es ein interaktives Konfigurationstool. Es zeigt, wie die Jumper für das Hauptplatinenmodell, die SID-Modelle und die weiteren Optionen gesetzt werden müssen. Das Zusammenspiel der verschiedenen Steuersignale wird ebenfalls anschaulich demonstriert.

Dennoch werden in den folgenden Abschnitten alle Optionen und Steuersignale detailliert beschrieben.

Hauptplatinen-Modell

Der Jumper mit der Bezeichnung BOARD SELECT muss für die korrekte Hauptplatine konfiguriert werden:

Alte Hauptplatinen
250407, 250425, 250466
(12V, bestückt mit 6581)
Neue Hauptplatine
250469
(9V, bestückt mit 8580)

Auf der 250469 muss eine Spannung von mindestens +15DC an den VEXT pin geführt werden. Siehe Spannungsversorgung auf der Hauptplatine 250469.

SID-Modell

Oberhalb des jeweiligen SID-Sockels befinden sich je fünf Stiftleisten, die zur Konfiguration des dazugehörigen SID-Modells dienen. Die ersten vier sind mit VDD, FC1, FC2 und R8 bezeichnet und konfigurieren jeweils die Versorgungsspannung, die Filterkondensatoren und die Variation der Ausgangsschaltung für das gewünschte Modell:

Alle vier Jumper eines Konfigurationsblocks müssen zusammen entweder in die obere oder untere Position gesetzt werden.

In Kürze: Alle vier Jumper werden

  • für den 6581 in die obere Position gesetzt
  • für den 8580 in die untere Position gesetzt

Der VDD Jumper wählt die Versorgungsspannung VDD für den SID. Die obere Position wählt +12V, die untere Postition wählt +9V.

Die mit FC1 und FC2 bezeichneten Jumper wählen die Filterkondensatoren. In der oberen Position werden 470pF verwendet, in der unteren Position 22nF.

Der R8 Jumper entscheidet, ob die Ausgangsschaltung einen zusätzlichen Widerstand von 1K gegen Masse direkt am SID-Ausgangspin enthält oder nicht. Dieser Widerstand entspricht dem Widerstand R8 im Schaltplan der 250469-Hauptplatine. In der oberen Position ist R8 aktiviert, in der unteren Position ist R8 deaktiviert.

Extin Pin

Die fünfte Stiftleiste mit der Bezeichnung EXIN im jeweiligen Konfigurationsblock verbindet den EXTIN-Pins des SIDs (Pin 26) mit zwei unterschiedlichen Schaltungen.

In der oberen Position wird der EXTIN-Pin mit einer Eingangsschaltung verbunden, die der üblichen Eingangsschaltung auf der Hauptplatine entspricht (100k, 100nF). Diese endet am oberen Pin des entsprechenden NR headers.

In der unteren Position wird der EXTIN-Pin mit der Digiboost-Schaltung verbunden.

Die folgenden Konfigurationen sind möglich:

Audio Eingang

Ist der EXIN-Jumper in die obere Position gesetzt, kann der obere Pin der zugehörigen NR-Stiftleiste als Audio-Eingang analog zum Audio-In Pin der A/V-Buchse verwendet werden.

Rauschunterdrückung

Hierzu wird der EXIN-Jumper in die obere Position gesetzt und die zugehörige NR-Stiftleiste wird dann mit einem Jumper kurzgeschlossen. Dies entspricht der gängisten Methode zur Rauschunterdrückung, nämlich den Audio-In Pin an der A/V-Buchse auf Masse zu legen. Allerdings ist der Effekt hier geringer als auf einer unveränderten Hauptplatine, da die als Antenne fungierende offene Eingangsleitung hier von vorneherein deutlich kürzer ausfällt.

Digiboost

Wird der EXIN-Jumper in die untere Position gesetzt, wird der EXTIN-Pin des SIDs über einen festen Widerstand von 220k und ein 1M-Potentiometer in Serie auf Masse gelegt. So kann für den 8580 die Lautstärke von über $D418 gespielte Samples erhöht werden. Über das Poti kann das Verhältnis zwischen Samples und regulären Stimmen eingestellt werden.

Offener Extin-Pin

Schließlich kann der EXIN-Jumper auch garnicht gesetzt werden. Dies ist gleichbedeutend damit, den EXTIN-Pin des SIDs aus dem Sockel zu biegen, was manchmal als alternative Methode zur Rauschunterdrückung empfohlen wird. Es wird allerdings auch an anderen Stellen von dieser Methode abgeraten. Ich persönlich habe keinen oder nur einen äußerst geringen Effekt feststellen können und erwähne diese Möglichkeit hier auch nur der Vollständigkeit halber.

Weiterleitung der Ausgabe an die Hauptplatine

Optional kann die Ausgabe auch zusätzlich noch an die Ausgangsschaltung der Hauptplatine weitergeleitet werden, so dass auch an der A/V-Buchse und am Composite-Signal etwas zu hören ist.

Auf der MixSID-Platine befinden sich oberhalb der Diode am 7812-Regler zwei zusätzliche Stellen für den Einbau von Widerständen. Auf den Darstellungen auf dieser Seite ist dort ein einreihiger Sockel mit vier Pins eingebaut.

Werden diese Stellen offengelassen, wird kein Signal an die Hauptplatine weitergeleitet.

Wird anstelle des linken Widerstands eine Brücke gesetzt, wird die Ausgabe von SID2 an die Hauptplatine weitergeleitet.

Wird anstelle des rechten Widerstands eine Brücke gesetzt, wird die Ausgabe von SID1 an die Hauptplatine weitergeleitet.

Es dürfen niemals beide Widerstände überbrückt werden, da sonst die Ausgänge der SIDs gegeneinander arbeiten würden, was höchstwahrscheinlich zu Beschädigungen an beiden SIDs führen würde.

Sollen die Ausgaben beider SIDs gemeinsam auf Mono gemischt werden, so können hier zwei gleichwertige Widerstände eingebaut werden. Widerstände von 1k oder höher werden empfohlen. Allerdings ist zu beachten, das es dadurch zu einem Übersprechen zwischen den Signalen kommt, d.h. die Ausgabe des einen SIDs wird immer auch relativ leise in der Ausgabe des anderen SIDs zu hören sein. Dies betrifft auch auch die Ausgabe am Stereo-Ausgang des MixSID. Wer also Wert auf möglichst reine Signale legt sollte auf diese Möglichkeit verzichten.

Hier eine Zusammenfassung der unterschiedlichen Optionen:

keine Ausgabe SID2 SID1 Beide in Mono

Steuerung

Alle Steuerleitungen werden über Pull-Up-Widerstände auf HIGH gezogen, wenn sie nicht anderweitig verbunden sind.

Sie können also entweder unverbunden bleiben (HIGH), mit Masse verbunden werden (LOW) oder auch durch andere Logikbauteile oder einen Microcontroller gesteuert werden.

Alle Signale werden unmittelbar umgesetzt und können problemlos im laufenden Betrieb geschaltet werden.

Die Signale stehen an der Stiftleiste oben rechts zur Verfügung:

Die obere Reihe enthält die Signale selbst, während die untere Reihe durchgängig Masse zu Verfügung stellt.

Mode Select (MS)

Die MODE SELECT Leitung wählt den Adressierungmodus für den sekundären SID:

Parallele Adressierung (HIGH)

Dieser Modus sollte verwendet werden, wenn normale SID-Stücke abgespielt werden, die lediglich für einen einzelnen SID bei $D400 geschrieben worden sind.

Beide SIDs werden parallel bei $D400 addressiert und spielen dasselbe. Die Steuerleitungen des Mischers können verwendet werden, um festzulegen, welche Ausgaben auf welchem Kanal erscheinen sein sollen.

Für den primären SID werden sowohl Schreib- als auch Lesezugriffe zugelassen, während der sekundäre SID nur Schreibzugriffe erlaubt. Lesezugriffe auf die SID-Register POTX, POTY, OSC3 und ENV3 werden also nur vom primären SID beantwortet, so dass Paddles und Maus genauso wie auf OSC3 und ENV3 basierende Klangeffekte wie gewohnt funktionieren.

Werden zwei unterschiedlich klingende SIDs eingesetzt (seien es ein 6581 und ein 8580 oder aber zwei unterschiedlich klingende 6581) und wird dabei jeder SID auf einen eigenen Stereo-Kanal gelegt, kommt es beim Abspielen eines einfachen Stücks zu einer von den Unterschieden im jeweiligen Klang abhängigen, mehr oder weniger zufälligen Stereo-Verteilung. Ob dies nun gut oder schlecht klingt hängt in erster Linie vom Stück selbst ab.

Stereo-Adressierung (LOW)

Dieser Modus sollte verwendet werden, wenn ein ausdrücklich für zwei SIDs geschriebenes Stück abgespielt wird.

Im Stereobetrieb wird der primäre SID bei $D400 adressiert, der sekundäre SID dagegen sowohl bei $D420 als auch bei $D500. Die meisten Stereo-Stücke erwarten einen zweiten SID auf einer dieser beiden Adressen.

Werden die IO Enable Signale verwendet, erscheint der sekundäre SID zusätzlich bei $DE00 und/oder $DF00. Nur wenige Stücke erwarten den zweiten SID an diesen Adressen, allerdings gibt es einige Hardware-Erweiterungen, die diese Adressen verwenden.

Das Priority Select Signal steuert, welcher von beiden SIDs als primärer SID auf $D400 gelegt wird.

Im Stereobetrieb werden die Chip-Select-Signale für die beiden SIDs (CS1 und CS2) aus einer Kombination des von der PLA für den SID generierten Chip-Selects (CS) und den Adressbus-Leitungen A5 und A8 erzeugt.

CS wird durch die PLA aktiviert, wenn die Adresse auf dem Bus zwischen $D400 und $D7FF liegt.

CS1 wird aktiviert, wenn CS aktiv ist und weder A5 noch A8 high sind (NOR).

CS2 wird aktiviert, wenn CS aktiv ist und sowohl A5 als auch A8 high sind (OR).

In boolscher Notation:

CS1 = CS . (A5 + A8)

CS2 = CS . (A5 + A8)

Der sekundäre SID erscheint also nicht nur an den gebräuchlichen Stereo-Adressen $D420 und $D500, sondern zusätzlich auch an einer Reihe anderer Adressen innerhalb des SID-Adressraums:

Primäre Adresse (CS1)Sekundäre Adresse (CS2)
D400 
 D420
D440 
 D460
D480 
 D4A0
D4C0 
 D4E0
 D500
 D520
 D540
 D560
 D580
 D5A0
 D5C0
 D5E0
D600 
 D620
D640 
 D660
D680 
 D6A0
D6C0 
 D6E0
 D700
 D720
 D740
 D760
 D780
 D7A0
 D7C0
 D7E0

Dies ist in der GAL Logik implementiert.

Priority Select (PS)

Das PRIORITY SELECT Signal steuert, welcher SID die Rolle des primären SIDs einnimmt und welcher die des sekundären SIDs.

Der primäre SID wird immer bei $D400 adressiert und erlaubt sowohl Lese- als auch Schreibzugriffe. Der sekundäre SID erlaubt im Parallelbetrieb bei $D400 nur Schreibzugriffe, im Stereobetrieb Schreib- und Lesezugriffe. Siehe Mode Select.

Ist das Signal HIGH geschaltet, ist der SID im rechten Sockel (SID1) der primäre SID.

Ist das Signal LOW geschaltet, ist der SID im linken Sockel (SID2) der primäre SID.

Auswirkungen auf softwareseitige Erkennung

Eine gebräuchliche Methode zur Erkennung des installierten SIDs aus einem C64-Programm heraus beinhaltet das Lesen der Register OSC3 und ENV3.

Da nur der primäre SID auf Lesezugriffe antwortet, steuert das PRIORITY SELECT Signal ebenfalls, welcher der verbauten SIDs bei Mischbestückung erkannt wird.

Auswirkungen auf Genauigkeit der Paddles

Die Leitungen POTX und POTY werden immer dynamisch an den jeweils primären SID weitergeleitet, der den Zustand der Paddles ausmisst und die aktuelle Paddle-Postition über seine Register POTX und POTY bekanntgibt.

Die tatsächlich vom SID gemessenen Werte hängen vom Wert der bereits auf der Hauptplatine mit diesen Leitungen verbundenen Kondensatoren ab. Da es sich hier abhängig vom ursprünglich auf der Hauptplatine verbauten SID um unterschiedliche Kapazitäten handelt, werden die Messungen geringfügig abweichen, sofern ein SID als primärer SID verwendet wird, der nicht ursprünglich auch auf der Hauptplatine verbaut war.

Zum Beispiel weichen die von einem auf einer 250407 eingesetzten 8580 gemessenen Werte um ungefähr 5% von den normalerweise gemessenen Werten ab.

Dies spielt in der Praxis jedoch nur eine geringe Rolle, da in jedem Fall der gesamte Wertebereich durch das Drehen des Paddleknopfes abgefahren werden kann. Es ist nur problematisch, wenn darauf Wert gelegt wird, dass die Mittelstellung des Knopfes auch genau den Mittelwert 127 liefert. In diesem Fall muss ein zur Hauptplatine passender SID als primärer SID verwendet werden.

IO Enable (I1E, I2E)

Sind die Expansionsportsignale I/O1 und I/O2 mit dem MixSID verbunden, steuern die Signale I1E und I2E, ob der sekundäre SID im Stereobetrieb an den entsprechenden Adressen $DE00 bzw. $DF00 mit erscheint.

HIGH: Der sekundäre SID erscheint nicht an der entsprechenden Adresse.

LOW: Der sekundäre SID erscheint an der entsprechenden Adresse.

Diese Signale erlauben es dem Benutzer, die I/O-Leitungen dauerhaft mit dem MixSID zu verbinden und dennoch zur Laufzeit steuern zu können, ob die entsprechenden Adressen im Stereobetrieb verwendet werden.

Mixer Control (M0, M1)

Die Steuerleitungen M0 und M1 wählen eine von vier möglichen Mischungen:

M1 M0 Left Right Type
0 0 SID2 SID2 mono
0 1 SID1 SID1 mono
1 0 SID1 SID2 stereo
1 1 SID2 SID1 stereo

Sind beide Signale nicht verbunden, ist dementsprechend der Klang des im linken Sockel eingesetzten SIDs auf dem linken, der Klang des im rechten Sockel eingesetzten SID auf dem rechten Stereokanal zu hören.

Schaltplan

Lizenz

                      MixSID Hardware and Firmware
     Copyright (c) 2016, Henning Bekel <h.bekel@googlemail.com>

                    GNU GENERAL PUBLIC LICENSE
                       Version 2, June 1991

 Copyright (C) 1989, 1991 Free Software Foundation, Inc.
               59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

                            Preamble

  The licenses for most software are designed to take away your
freedom to share and change it.  By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users.  This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it.  (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.)  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.

  To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have.  You must make sure that they, too, receive or can get the
source code.  And you must show them these terms so they know their
rights.

  We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.

  Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software.  If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.

  Finally, any free program is threatened constantly by software
patents.  We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary.  To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.

  The precise terms and conditions for copying, distribution and
modification follow.

                    GNU GENERAL PUBLIC LICENSE
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License.  The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language.  (Hereinafter, translation is included without limitation in
the term "modification".)  Each licensee is addressed as "you".

Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope.  The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.

  1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.

You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.

  2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:

    a) You must cause the modified files to carry prominent notices
    stating that you changed the files and the date of any change.

    b) You must cause any work that you distribute or publish, that in
    whole or in part contains or is derived from the Program or any
    part thereof, to be licensed as a whole at no charge to all third
    parties under the terms of this License.

    c) If the modified program normally reads commands interactively
    when run, you must cause it, when started running for such
    interactive use in the most ordinary way, to print or display an
    announcement including an appropriate copyright notice and a
    notice that there is no warranty (or else, saying that you provide
    a warranty) and that users may redistribute the program under
    these conditions, and telling the user how to view a copy of this
    License.  (Exception: if the Program itself is interactive but
    does not normally print such an announcement, your work based on
    the Program is not required to print an announcement.)

These requirements apply to the modified work as a whole.  If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works.  But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.

In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.

  3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:

    a) Accompany it with the complete corresponding machine-readable
    source code, which must be distributed under the terms of Sections
    1 and 2 above on a medium customarily used for software interchange; or,

    b) Accompany it with a written offer, valid for at least three
    years, to give any third party, for a charge no more than your
    cost of physically performing source distribution, a complete
    machine-readable copy of the corresponding source code, to be
    distributed under the terms of Sections 1 and 2 above on a medium
    customarily used for software interchange; or,

    c) Accompany it with the information you received as to the offer
    to distribute corresponding source code.  (This alternative is
    allowed only for noncommercial distribution and only if you
    received the program in object code or executable form with such
    an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for
making modifications to it.  For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable.  However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.

If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.

  4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License.  Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.

  5. You are not required to accept this License, since you have not
signed it.  However, nothing else grants you permission to modify or
distribute the Program or its derivative works.  These actions are
prohibited by law if you do not accept this License.  Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.

  6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions.  You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.

  7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all.  For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.

If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.

It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices.  Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.

This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.

  8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded.  In such case, this License incorporates
the limitation as if written in the body of this License.

  9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

Each version is given a distinguishing version number.  If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation.  If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.

  10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission.  For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this.  Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.

                            NO WARRANTY

  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.

  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.

                     END OF TERMS AND CONDITIONS