Projekt:ct100

Version vom 12. November 2016, 11:59 Uhr von MaesterK (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Crystal Clear app error.png
CT 100

Status: unstable

Windows Phone 20160831 013.jpg
Beschreibung Computer / Terminal auf 70er Niveau
Ansprechpartner Karsten


Übersicht

CT 100 (Computer / Terminal 100) soll ein arduinobasierendes Terminal werden, das man per usb an eine linuxmaschine, wie z.b. einen raspberry pi hängen kann. Derweil bin ich aber etwas abgedriftet und dabei einen primitiven Basic-Interpreter zu basteln, um daraus einen Homecomputer etwa dem Level von Mitte der 70er zu machen. Der Name ist eine Anspielung auf DECs VT 100.

Verantwortlicher

Karsten

Details

  • Entstand ursprünglich aus der Frage "Kann man mit einem 8Mhz Microcontroller ein Display direkt betreiben, das erwartet, mit etwa 2Mhz per ttl (transistor-transistor-logik) mit Daten gefüttert zu werden?"
  • Folgende Einschränkungen wurden aus Sportsgeist festgelegt:
    • als Basis Arduino Mega mit möglichst wenig zusätzlichen Komponenten
    • insbesondere kein Grafik-Controller!
    • kein Übertakten (ja, der 2560 ist eigentlich mehr als 8Mhz "freigegeben", was also noch kein Übertakten wär, aber auch das Hochtakten in den Grenzen soll vermieden werden)
    • Verwenden der Arduino IDE, kein AVR-Studio o.Ä....Code nur in einer Datei
    • damit Assembler auch nur max als Inline Code
  • bei dem Display handelt es sich um ein Monochrom LCD mit VGA-Aufslösung (640x480), das ich aus einem 93er Canon Laptop ausgebaut habe
  • Dazu konnte ich zwar kein Datenblatt finden, aber zu einem ähnlichen Model..die dortigen Angaben konnte ich an dem noch lauffähigen Schwestermodel des zerlegten Notebooks erfolgreich verifzieren
  • Die defekte Hintergrundbeleuchtung habe ich durch einen RGB-LED-Streifen ersetzt, der inzwischen vom System aus kontrolliert werden kann
  • auch die Tastatur stammt aus besagtem Gerät und wird ganz klassisch gescannt (Interrupts sind während der Bildausgabe nicht drin)
  • das RAM reicht bei weitem nicht um 640x480 Pixel vorzuhalten, daher
    • habe ich die Auflösung effektiv halbiert, indem ich eine 8x8 Schrift auf eine Breite von 16px gezogen habe und bei der Ausgabe jede zweite Zeile schwarz lasse (wg Scanline effekt, damit effektiv auch 16px hoch)
    • wird der Text dynamisch während der Ausgabe aus einer Zeichentabelle zusammengesetzt, da das RAM selbst mit der halbierten Auflösung nicht reichen würde
  • Der Code für die Ausgabe ist in Assembler geschrieben - entsprechend der obigen Vorgaben inline
  • Ursprünglich hatte ich den "Scanline-look" hauptsächlich aus optischen Gründen eingebaut - der Plan geht jetzt aber dahin das Latch-Signal an das Display per Hardwaretimer zu betreiben und die freiwerdende Zeit für andere Aufgaben zu nutzen*
  • derzeit wird nur "zwischen den Zeilen" gearbeitet
  • aktuell werden etwa 30fps erreicht..durch Schwankungen im Timing und Unterschiede zwischen "richtigen" und schwarzen Zeilen ist aber noch ein recht deutliches Flimmern sichtbar