[Btx] Open Source BTX Decoder

Michael Steil mist64 at mac.com
Wed Jan 23 00:46:02 UTC 2019


Das Projekt hat jetzt seinen eigenen BTX-Decoder! Das Herumfummeln mit DOS-Software wird bald ein Ende haben!

https://github.com/mist64/btx_decoder

Ich habe mir XCept 2.1 und XCept 3.0 angeschaut. Der Decoder-Kern ist bei beiden identisch. 3.0 macht die GUI über Tcl/Tk, 2.1 über Low-Level X11 calls. Beides heute nicht mehr so schick. Da hab ich mir einfach die Dateien layer6.c (Konvertieren des CEPT-Bytestroms in "Screen RAM"), xfont.c (Konvertieren des "Screen RAM" in Pixel) und rawfont.c (Default-Zeichensatz) geschnappt, modernisiert (das war K&R mit so manchem, was heute nicht mehr erlaubt ist), und ein macOS-Frontend drumrum gebaut.

Startet man den Decoder, verbindet er sich im Moment einfach mit unserem öffentlichen Server (der 1200 baud liefert) über TCP.

Der Decoder tut ansich, aber es gibt noch viel zu tun:
* Bildschirm löschen glitcht manchmal. Der Originalcode tat das direkt über X11 calls. Ich hab's umgeschrieben, aber das tut noch nicht immer richtig.
* Die Schrift ist zum Kotzen, ist wohl eine 8x8-Schrift mit Padding. Ich hab letztens das ROM des Commodore 64 BTX Moduls ausgelesen, da sollten wir eine schöne Schrift rauskriegen.
* Der Code ist an manchen Stellen immer noch antik und kann verschönert werden.
* XCept hat Layer 2, also die Fehlerkorrektur in den "ceptd" Server ausgelagert. Nichts davon habe ich importiert. Unser Server über TCP schickt keine Fehlerkorrektur-Frames, also sollte das so passen?
* Telesoftware kann XCept, die Datei müßte man noch importieren. Der Server kann das aber noch nicht, deswegen kann man es nicht testen.

Und der wichtigste Punkt:
* Der Decoder-Kern muß fürs Web kompiliert werden. Das macOS-Frontend habe ich eigentlich nur geschrieben, damit ich den Code bequem debuggen kann. Das Ziel ist es, daß der Decoder im Web läuft. Kennt sich wer damit aus?

Ob es sinnvoll ist, den Decoder auch nativ auf Linux oder Windows zu portieren, weiß ich nicht... Schwierig wäre es auf jeden Fall nicht. Man muß nur layer2getc() und layer2ungetc() implementieren (also von TCP lesen), Tastendrücke in die TCP-Verbindung schreiben, mit Aufrufen von init_fonts() default_colors() und init_layer6() den Decoder initialisieren, und dann in einer Schleife process_BTX_data() aufrufen. In "memimage" sind dann die Pixel (480x240, 24 bit RGB).

  Michael







-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.hanse.de/pipermail/btx/attachments/20190123/d68ed422/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Screen Shot 2019-01-23 at 01.30.54.png
Type: image/png
Size: 36496 bytes
Desc: not available
URL: <http://lists.hanse.de/pipermail/btx/attachments/20190123/d68ed422/attachment-0001.png>


More information about the Btx mailing list