SX-64 - Wartung und kleinere Reparaturen
- bigby
- Thread is marked as Resolved.
-
-
GeTE hatte das HIER erwähnt (und vorher auch schonmal irgendwo) ...
Der selbe Kollege erwähnt HIER aber RAL 8019 für den Plus/4...
... um weiter unten noch mal beide RAL-Töne mit dem plus/4 zu vergleichen: RAL Code vom Brotkasten
-
-
tokablnC64 Baumarkt ist nicht nötig, einen RAL-Fächer bringt mir meine Frau heute Abend aus dem Büro mit, wenn sie daran denkt. Dann weiß ich zumindest, ob die Farbe des Lacks oder die des SX-64 falsch ist.
-
Ich habe ein paar unspektakuläre Updates zum Thema Farben. (Spoiler: Es gibt viel zu viele davon!)
Als erstes muss ich feststellen, dass ich mich über den Lack, den ich in der Bucht als RAL-7022 bestellt habe, wirklich nicht beschweren kann. Für mein Wahrnehmungsvermögen ist das super getroffen, hier der Vergleich mit dem RAL-Fächer:
Die zweite Erkenntnis: Wenn man auf die klassischen RAL-Farben beschränkt ist, ist RAL-7022 tatsächlich am dichtesten dran an der Farbe des SX-64. "Dicht dran" heißt aber eben auch "dicht vorbei". (Die Büroklammer markiert die 7022.)
Wenn man eine Punktlandung will (und den Ehrgeiz habe ich nicht), muss man - wie ja schon angemerkt wurde - die RAL-Palette verlassen. Erschwerend kommt hinzu, dass sich auch die dunkle Farbe eines SX-64 über die Jahrzehnte vermutlich leicht verändert, quasi vergilbt. Vielleicht sollte ich es mit H2O2 versuchen...
Abschließend habe ich dann noch die Blende meines einen SX-64 auf das Gehäuse meines einen Plus/4 gelegt. Die Farben sind sehr dicht beieinander, aber nicht identisch. Zumindest bei diesen beiden Exemplaren:
Damit habe ich vom Thema Farben erst einmal genug. Es gibt, wie gesagt, viel zu viele davon. In dem Sinne, diese Palette ist ja vermutlich bekannt:
-
Der Source Code war ein ziemliches Durcheinander. Ich hab mal grob durchgekehrt und hier angehängt (hoffe mal das es so noch funktioniert). Das Ganze läuft auf Arduino Basis.
Ich hab mir mal erlaubt das auf Ein-Button-Bedienung umzustellen und zu entschlacken:
Die Pins sind Arduino Pins, meine ATtiny sind im Zulauf.C- #include <EEPROM.h>
- int Reset_BTN = 8; // PB0 Reset Taster 8
- int SXReset_OUT = 9; // PB1 SX64 Reset auf dem Seriellen Bus (Pin 6) (über FET Q1) 9
- int EXReset_OUT = 11; // PB3 EXRom Reset auf dem Expansionsport (Pin 9) (über FET Q2) 11
- int Drive_OUT = 10; // PB2 Drive ID signal (über FET Q3) 10
- int Kernal_OUT = 13; // PB5 Kernal ROM select signal 13
- bool currentKernal;
- bool currentDrive;
- #define IDLE 1 // state for state variable
- #define COUNTING 2 // state for state variable
- uint8_t state;
- double duration_reset = 500; // counting to 1 will surely be in the region
- double duration_kernal = 4000; // counting to 5 will surely be in the region
- double duration_id = 8000; // counting to 10 will surely be in the region
- int Reset_Time = 100; // overall reset duration
- int EX_Reset_Time_Original = 20; // delay till EXrom returns to high after reset end (origial Kernal) 20ms
- int EX_Reset_Time_Fast = 10; // delay till EXrom returns to high after reset end (floppy speeder kernal) 10ms
- uint32_t counter = 0;
- void setup() {
- if (EEPROM.read(2) != 42) // never ran before, checksum invalid
- {
- EEPROM.write(0, 0); // SX Kernal (low)
- EEPROM.write(1, 1); // Drive #8 (inverted via FET)
- EEPROM.write(2, 42); // save checksum
- }
- currentKernal = EEPROM.read(0);
- currentDrive = EEPROM.read(1);
- pinMode(Kernal_OUT, OUTPUT);
- pinMode(Drive_OUT, OUTPUT);
- pinMode(SXReset_OUT, OUTPUT);
- pinMode(EXReset_OUT, OUTPUT);
- digitalWrite(Kernal_OUT, currentKernal);
- digitalWrite(Drive_OUT, currentDrive);
- digitalWrite(SXReset_OUT, LOW);
- digitalWrite(EXReset_OUT,LOW);
- pinMode(Reset_BTN, INPUT);
- state=IDLE;
- }
- void loop() {
- if (state==IDLE) {
- if (digitalRead(Reset_BTN) == LOW){
- counter = millis();
- state = COUNTING;
- }
- }
- if (state==COUNTING) {
- if (digitalRead(Reset_BTN) == HIGH){
- if (millis() - counter < duration_reset){} // drive reset, no action needed
- else if (millis() - counter < duration_kernal){resetSX();}
- else if (millis() - counter < duration_id){switchKernal();}
- else {switchID();}
- state = IDLE;
- }
- }
- }
- void resetSX() {
- digitalWrite(SXReset_OUT, HIGH);
- digitalWrite(EXReset_OUT, HIGH);
- delay(Reset_Time);
- digitalWrite(SXReset_OUT, LOW);
- if (currentKernal == 0){
- delay(EX_Reset_Time_Original);
- }
- else{
- delay(EX_Reset_Time_Fast);
- }
- digitalWrite(EXReset_OUT, LOW);
- }
- void switchKernal() {
- currentKernal = !(EEPROM.read(0));
- digitalWrite(Kernal_OUT, currentKernal);
- EEPROM.write(0, currentKernal);
- resetSX();
- }
- void switchID() {
- currentDrive = !(EEPROM.read(1));
- digitalWrite(Drive_OUT, currentDrive);
- EEPROM.write(1, currentDrive);
- resetSX();
- }
Dazu mal ne Platine hingerotzt:
-
Zitruskeks Danke für Deine Mühe! Sei mit aber bitte nicht böse, falls ich Deinen Vorschlag am Ende höchstens auszugsweise verwende, meine eigene Version ist ja schon in Arbeit.
Ansonsten: Bevor ich den RAL-Fächer wieder abgeben muss, habe ich noch mal einen Blick auf den anderen Grauton des SX-64 geworfen. Das ist kaum weniger kompliziert. RAL 9007 "Graualuminium", welches häufiger Erwähnung findet, passt schon recht gut. Aber zumindest bei meinem Gerät gibt es einen minimalen Farbunterschied zwischen dem Lack des Metallgehäuses und dem Tastaturboden. Zu letzteren würde u.U. RAL 7048 "Perlmausgrau" besser passen:
-
Ich hab mir mal erlaubt das auf Ein-Button-Bedienung umzustellen und zu entschlacken:
Die Pins sind Arduino Pins, meine ATtiny sind im Zulauf.Jeder wie er mag. Dafür ist der Quelltext ja da.
Ob ich eine one Button Bedienung besser finde weiß ich nicht. Ich fand das so wie ich es gemacht habe am handlichsten. Außerdem wurden so alle nutzbaren Löcher in der SX Front sinnvoll genutzt.
Aber das schöne am Microcontrollern ist ja dass man damit machen kann was man will.
-
Ob ich eine one Button Bedienung besser finde weiß ich nicht. Ich fand das so wie ich es gemacht habe am handlichsten.
Um "besser" geht es ja gar nicht. Wenn man eh die Gelegenheit hat, wie bei dem TFT-Bedienpanel, würde eine Steuerung über 2 Buttons auch besser finden. Aber ich will die Front des SX-64 ja unverändert lassen, und da muss ich dann wohl mit einem Button auskommen.
-
Genau darum gings.
-
Nachdem ich weiter oben gelernt habe, wie gut der von TurboMicha empfohlene UV-Kleber von UHU funktioniert, habe ich mich für eine etwas andere Vorgehensweise bei der Reparatur des Schiebe-Clips an der Tastatur entschieden.
Ich habe den "Stumpf" des abgebrochenen Hakens auf dem Schieber vollständig entfernt:
... einen passenden Haken gezeichnet, gedruckt und lackiert:
... und dann mit reichlich Fingerspitzengefühl an der richtigen Stelle festgeklebt:
Passt ganz gut soweit:
Auf diese Weise bleibt noch mehr vom Original-Character des (geschlossenen) SX-64 erhalten.
-
. und dann mit reichlich Fingerspitzengefühl an der richtigen Stelle festgeklebt:
wau... klasse Arbeit...
den "Haken" am Rahmen hast du angeklebt, während der Rahmen noch fest geschraubt war ?
(Gerät dafür auf den Kopf gelegt ?) ich hätte ihn wahrscheinlich ausgebaut..
(Wenn du eh den Henkel ab hast.. war der Schritt glaublich nicht mehr viel mehr..
Jetzt muss der Vorbesitzer nur mal endlich das "Handschuhfach" suchen gehen...
-
den "Haken" am Rahmen hast du angeklebt, während der Rahmen noch fest geschraubt war ?
(Gerät dafür auf den Kopf gelegt ?) ich hätte ihn wahrscheinlich ausgebaut..
(Wenn du eh den Henkel ab hast.. war der Schritt glaublich nicht mehr viel mehr..
Nein, den Rahmen habe ich vorher natürlich abgeschraubt. Ist auch auf den Bilder weiter oben zu erkennen.
-
Nur langsam geht es voran, ständig kommt irgendwas dazwischen. Mittlerweile habe ich nun auch eine Platine für meine "SX-64 Tiny Reset" getaufte Variante der Reset-Schaltung entworfen:
Zwischendrin hatte ich noch ganz enthusiastisch einen ISP-Anschluss mit auf der Platine untergebracht. Anschließend wurde mir dann klar, dass der nix bringt, wenn ich die Reset-Leitung als Ausgang verwenden möchte, und habe ihn wieder aus dem Layout entfernt.
Auch die Firmware ist schon recht weit gediehen, braucht aber vielleicht noch ein wenig Feinschliff. Abweichend von den bestehenden Varianten, möchte ich die verschiedenen Reset-Funktionen nicht durch langes, genau abgepasstes Gedrückthalten auswählen, sondern durch die Anzahl der "Klicks" auf den Button. Also:
1x drücken - Reset Floppy
2x drücken - Reset SX-64
3x drücken - Wechsel der Laufwerks-Id
4x drücken - Umschalten des Kernals
Weil ich neugierig war, ob das in der Praxis auch funktioniert, und dafür nicht auf Platinen aus China warten wollte, habe ich quasi mit Retro-Mitteln einen Prototypen gebastelt.
Erst Maß genommen für die Platine im Gehäuse und die Bauteile auf der Platine:
Dann die Platine quick-and-dirty verdrahtet:
Mit der Firmware bespielt und "trocken" getestet, wobei auffiel, dass ich den externen Pull-up Widerstand auf der Platine vergessen hatte, der im Schaltplan vorgesehen war:
Anschließend die Schaltung im SX-64 verdrahtet:
Aber leider funktionierte zunächst nix so richtig. Nach einiger Zeit der Fehlersuche fiel mir dann ein, dass ich den Pull-up noch immer vergessen hatte.
Also die Platine wieder ausgebaut, diesmal wirklich den Widerstand ergänzt...
... und wieder eingebaut:
Damit funktioniert die Auswahl der vier oben genannten Funktionen nun tatsächlich!
Die EXROM-Leitung für den "Reset-Verstärker" habe ich bisher noch nicht verdrahtet, das muss ich nachholen. Hat jemand spontan einen Vorschlag, mit welchem Programm ich das dann testen könnte?
Ansonsten warte ich nun auf die Platinen, um die finale Version aufzubauen, und die Firmware muss ich auch noch ein wenig aufräumen. Anschließend werde ich das ganze Projekt natürlich wie üblich teilen.
-
Nachdem die Platinen für den SX-64 Tiny Reset angekommen sind:
... habe ich eine davon aufgebaut:
... den ATtiny25 aus dem Prototypen und die Verkabelung umgesteckt:
Funktioniert prima! Wie oben schon angedeutet, zählt meine Firmware, wie oft der Reset-Button in kurzer Folge gedrückt wurde. Die Anzahl der "Klicks" bestimmt die ausgelöste Aktion. Derzeit ist folgendes implementiert:
Anzahl Aktion 1 Reset der Floppy (Original-Funktion des Buttons) 2 Reset des SX-64 3 Reset des SX-64 mit kurzem Halten von EXROM, um Reset-Schutz zu umgehen 4 Wechsel der internen Laufwerksnummer 5 Wechsel des Kernals 7 Zurücksetzen auf "Werkseinstellungen" Weitere Bilder und Infos gibt es im zugehörigen Blog-Post:
https://www.hackup.net/2023/10…unt-reset-button-presses/
Derzeit überlege ich noch, in welcher Form ich die Projektdateien veröffentlichen werde. Ich sehe keine rechtlichen Probleme, aber ich möchte auch JimDrew weder schaden noch auf die Füße treten. Die kommerzielle Nutzung dieses Projektes hier bleibt in jedem Fall ausgeschlossen.
-
aber ich möchte auch JimDrew weder schaden noch auf die Füße treten. Die kommerzielle Nutzung dieses Projektes hier bleibt in jedem Fall ausgeschlossen.
Das finde ich sehr fair und verdient Beachtung.
Ich kenne es aus anderen Bereichen, wo ein Hobby-Mensch etwas entwickelt und sich etwas Knete dazuverdient, und andere kackdreist kopieren und selbst verticken.
-
Derzeit überlege ich noch, in welcher Form ich die Projektdateien veröffentlichen werde. Ich sehe keine rechtlichen Probleme, aber ich möchte auch JimDrew weder schaden noch auf die Füße treten. Die kommerzielle Nutzung dieses Projektes hier bleibt in jedem Fall ausgeschlossen.
Aus dem Grund habe ich meines mittlerweile in einen Parallel-Breakout für interne Floppyspeeder integriert
-
Allerdings nur auf der Hauptplatine, nicht in der 1541. Zunächst hatte ich überlegt, den Switch einfach auszubauen, aber ich denke, ich werde das Setup lieber vervollständigen. Dafür habe ich schon mal zwei "Kernal Quattro" aufgebaut, die die ROMs ersetzen sollen:
Ich habe eine paar Kernal Quattro von dir gelötet....
Ich kann es mit 4x 8Ko benutzen ud zwichen 4 Roms umshalten ...
Ich mochte gern es für 2X 16ko rom für eine 1541 benutzen.
Wie geht es ? Ich krieg das nicht hin....
Danke
-
Ich kann es mit 4x 8Ko benutzen ud zwichen 4 Roms umshalten ...
Ich mochte gern es für 2X 16ko rom für eine 1541 benutzen.
Wie geht es ? Ich krieg das nicht hin....Das ist hier wohl ein wenig off-topic; auch wenn ich mir nicht sicher bin, ob ich die Frage richtig verstehe.
In der 1541 gibt es meines Wissens zwei 2364 ROMs, die haben jeweils 8k und nicht 16k. Beide ROMs könntest Du jeweils durch einen Kernal Quattro ersetzen, wenn Du möchtest.
Falls Du die 1541-II meinst, die hat wohl in der Tat ein 16k ROM (glaube ich). Bei dem handelt es sich jedoch (offensichtlich) nicht um ein 2364, und es dürfte 28 Pins haben statt 24. Das lässt nicht durch einen Kernal Quattro ersetzen. Es sei denn, man baut einen Adapter, aber das erscheint mir nicht sinnvoll.
-
Die müssten passen, 28C256 (32Kx8), der selbe EEPROM wie auf dem Quattro-Kernal und seinem Vorläufer (2364 Ersatz).
Nur hier organisiert aks 2x16K, zum Ersatz der beiden C128 Kernal.
Bislang, mangels Nachfrage, kein öffentliches Projekt.
MFG Jood