Moin,
ich hab in der letzten Woche eine elektronische Schreibmaschine (Commodore/Samsung SQ-1000) zum Terminal/Fernschreiber umgerüstet:
2 Mikrocontroller übernehmen jetzt jeweils die Kommunikation zum originalen Mikrocontroller (emulieren eine Tastatur) sowie zur echten Tastatur (und scannt diese).
Ich hoffe, die Schreibmaschinensammler nehmen mir diese Aktion nicht übel, aber die Maschine ist noch völlig intakt, kann eigenständig genutzt werden und auch die zusätzlichen Platinen können einfach wieder ausgebaut werden
Mit einem Linux-Rechner verbunden wird die Schreibmaschine so zum Terminal:
Über ein RTTY<->RS232 Interface kann man damit dann Wetterberichte per Langwelle empfangen:
und mit einem Modem kann man sich dann direkt zu einer BBS verbinden:
Mein schöner Akustikkoppler hat leider gerade diese Woche den Dienst quittiert und die Ursache ist bisher noch nicht zu finden gewesen. Das wäre natürlich eigentlich passender/zeitgemäßer als ein Modem
Das Interfacing mit dem Matrixscanning des Original-MCUs war ein wenig nervig, weil der Controller bidirektional durch die Matrix arbeitet und ohne Tastendrücke gar nicht scannt.
Die Matrixeingänge (!) sind leicht hochgezogen und ein Drücken einer Taste verbindet diese Spannung mit dem Matrixausgang (welcher standardmäßig selbst auch ein Eingang ist). Erst dann fängt der MCU an, zu scannen und gibt die Pulse auf der Matrix aus. Das habe ich mittels Tri-State-Pins in meinem AVR Mikrocontroller gelöst, der Code ist _wirklich_ nicht hübsch, aber es funktioniert gut
Flusskontrolle ist auch so ein wunder Punkt, weil natürlich alle Aktionen unterschiedlich lange dauern und die Druckmechanik nicht mit einer konstanten Rate druckt.
Der AVR hat einen ziemlich großen seriellen Puffer und er ist an den Piezo-GPIO des Original-MCUs angeschlossen. Über diesen Piezo beschwert sich die Schreibmaschine, falls man ihr zu schnell tippt. Der AVR achtet beim Emulieren von Tastendrücken auf dieses Signal und verzögert dann die restliche Ausgabe.
Den Quelltext für diese Aktion habe ich auf GitHub hochgeladen, ist wirklich nicht schön und sehr hastig geschrieben, aber glaub ich relativ lesbar und funktionieren tut's gut
Drucker-Interface: https://github.com/Manawyrm/sq…nal/tree/main/printer/src
Keyboard-Interface: https://github.com/Manawyrm/sq…ain/keyboard/src/main.cpp
Fehlt jetzt eigentlich nur noch ein Modus, um die Schreibmaschine als Drucker (z.B. per Centronics oder IEC) zu nutzen
Viele Grüße
Tobias