Es ist schon cool, was man alles aus 5x5 Pixeln zaubern kann, aber für manche Sachen braucht man doch eine größere Auflösung. Und wenn der Calliope beim Programmieren eh schon am PC hängt, warum nicht dessen Bildschirm nutzen?
So genannte Terminals wie das DEC VT100 dienten früher zur Ein-/Ausgabe an Großrechnern, die selbst ja einfach nur eine Art Kleiderschrank waren, der rechnen kann. Daran waren diese Terminals angeschlossen, über die man erst ein Programm eintippen und sich das Ergebnis anzeigen lassen konnte.
Heute gibt es PC-Programme, die so ein Terminal nachbilden und mit denen man sich per Internet immer noch von zu Hause aus auf entfernten Rechnern, z. B. von Universitäten, einloggen kann. Wir tun einfach so, als sei der Calliope ein Großrechner und bauen per USB-Kabel vom Terminal-Programm auf unserem PC aus eine Verbindung zu ihm auf :-)
Der Calliope schickt dann bestimmte Kommandos an das Terminal-Programm, z. B. "gehe zu Position x/y", "wähle Vordergrundfarbe", "schreibe Zeichen", "lösche Bildschirm" etc. Diese Kommandos nennen sich ANSI-Escape-Sequenzen und haben eine Syntax, für die man gut gefrühstückt haben muss (wie etwa "ESC[2J", um den Bildschirm zu löschen).
Mit MakeCode sieht das alles schon sehr viel freundlicher aus:
Dafür muss man nur die folgende Erweiterung importieren, d. h. ganz einfach nachdem man ein neues Projekt angelegt hat auf das Zahnrad oben rechts klicken, "Erweiterungen" auswählen und dann als Projekt-URL:
https://github.com/kimmeskamp/pxt-vt100
eingeben. Dann erscheint unterhalb von "Grundlagen" zusätzlich ein Bereich mit einem Bildschirmsymbol und dem Namen "VT100":
Und so bekommt der Calliope einen farbigen Textbildschirm :-)
Was man noch braucht, ist ein Terminal-Programm, wie das bewährte und kostenlose "PuTTY":
Bei den Einstellungen muss man angeben, dass die serielle Schnittstelle genutzt werden soll, und zwar mit einer Geschwindigkeit von 115200 Baud:
Den richtigen "COM-Port" findet man, indem man der Windows-Taskleiste nach "Gerätemanager" sucht, ihn startet, den Calliope einstöpselt und die Bezeichnung abliest, hier z. B. "COM3" (die Nummer kann abweichen, bleibt dann aber i. d. R. gleich, so dass man das nur einmal machen muss):
Wichtig ist schließlich noch, in PuTTY unter "Window" die gewünschte Bildschirmauflösung einzustellen (Zeilen und Spalten):
Und im Unterabschnitt "Translation" als "Remote character set": CP437 (ohne Abbildung).
Dann nur noch auf "Open" klicken und so die Verbindung zwischen Terminal-Programm und Calliope herstellen!
Ursprünglich waren Terminals ja zur Textausgabe gedacht und natürlich kann man auch einfach nur Texte oder Mess-Werte auf den Bildschirm schreiben. Man kann aber auch "malen", d. h. einzelne (zugegebenermaßen grobe) Pixel setzen, indem man an die gewünschte Position geht, eine Hintergrundfarbe auswählt und ein Leerzeichen ausgibt (hat die Nummer 32 im ASCII-Code):
Damit lässt sich beispielsweise so ein Testbild basteln:
(Anhang "testbild.js", benötigte Auflösung in PuTTY: 80x25, darin sind schon fertige Funktionen für das Zeichnen von farbigen Rechtecken, Linien und Ellipsen enthalten, dafür braucht man den sehr cleveren, aber nicht ganz selbsterklärenden Bresenham-Algorithmus)
Für Vorder- und Hintergrund gibt es zwei Möglichkeiten: So, wie im Beispiel oben, eine von 256 vordefinierten Farben wählen (als Zahl oder aus einer Liste von Farben, letzter Block in MakeCode) oder mit einzelnen Werten für Rot, Grün und Blau (jeweils von 0 bis 255) aus vollen 16, 7 Millionen Farben schöpfen:
Damit lassen sich z. B. schöne Farbverläufe erstellen:
(Anhang "colordemo.js", benötigte Auflösung in PuTTY: 80x25)
Mit einem Trick kann man die vertikale Auflösung sogar verdoppeln: Statt des Leerzeichens nimmt man das Zeichen 220, das aus zwei Teilen besteht, wählt Vordergrund- und Hintergrundfarbe für die obere bzw. untere Hälfte und kann, wenn man die beschränkten Mittel bedenkt, ziemlich ansehnlich etwa die berühmten "Apfelmännchen" zeichnen:
(Anhang "apfel2.js", benötigte Auflösung in PuTTY: 130x46)
Die Möglichkeiten sind jetzt ziemlich unbegrenzt, z. B. kann man einfache Spiele realisieren (wer in den 80ern in Turbo-Pascal programmiert hat, wird sich erinnern ;-)) und nun aber den Calliope als "Game-Controller" nutzen (Tasten A+B, Lagesensor etc.)!
Viel Spaß beim Ausprobieren :-)
Comments