Benutzer-Werkzeuge

Webseiten-Werkzeuge


projects:gforth-android:start

Gforth — GNU Forth für Android

Ziel ist es, Gforth als Programmierumgebung für Android zu verwenden.

Pfad

Wenn im folgenden von `/sdcard` die Rede ist, dann ist das je nach Gerät und Android-Version ein anderern Pfad.

  s" HOME" getenv type

würde `/sdcard/gforth/home` ergeben; alles vor `gforth/home` ist der gerätespezifische Präfix.

Stand der Dinge

  • Es gibt Gforth im Play Store das man direkt ab Android 4.0 installieren kann, Android 2.3-Support wurde am 31.3.2018 aufgegeben, weil es zu alt ist für diverse Features.
  • Das kann über OpenGL eine Terminal-Emulation zeigen oder einen Terminal-Server bedienen (in der Datei /sdcard/gforth/site-forth/starta.fs festgelegt). Den Terminal-Server kann man mit einem einfachen t und Return schnell vom Terminal starten, und sich dann mit telnet adresse 4444 einloggen. Für das Gerät in der .telnetrc im Home-Verzeichnis hostname mode character eintragen.
  • Touchs werden auch schon erkannt, und der Menü-Button/Softkey togglet die Softwaretastatur

Beim ersten Mal Starten packt die App die Gforth-Dateien auf die SD-Karte aus. Das sind ein paar Megabyte, und dauert deshalb. Gforths Loader zeigt in dem Zustand einen Spinner, der am Ende kurz die Message „done; restart Gforth“ anzeigt. Falls diese länger sichtbar bleibt, sollte man Gforth killen und neustarten.

Das Terminal verwendet einen Fragment Shader, der weitgehend selbständig ein farbiges ASCII-Terminal realisiert - es bekommt dazu zwei Texturen, eine mit dem Zeichensatz, die andere mit Zeichen und Farbinformationen. Da dauert dann das Update des Terminal-Screens nur einige Millisekunden - so wie früher auch. Das Terminal ist auf einigen billigen Handys mit lausigen OpenGL-Implementierungen getestet, sollte also überall funktionieren.

Als Tastaturen empfehle ich:

Da Android-Apps nicht über die Kommandozeile gestartet werden, kann man Optionen für den Start in die Datei /sdcard/gforth/home/.options eintragen. Jede Option eine Zeile. -d64k setzt z.B. den Stack auf 64kB, -m16M das Dictionary auf 16MB, siehe http://www.complang.tuwien.ac.at/forth/gforth/Docs-html/Invoking-Gforth.html

Beispiele

Alle Android-Beispiele finden sich in /sdcard/gforth/<version>/minos2. Es gibt

  • minos2/gl-sample.fs: Eine einfache OpenGL-Demo
  • minos2/omx-example.fs: Spielt Videos ab. Lade mein Beispielvideo Jingle Bells als Test-Stream nach /storage/extSdCard/Filme, dann kann man es mit jb abspielen, oder jede andere Datei mit „<filename>“ play-ts für MPEG Transport Streams, oder play-mkv für Matroska.
  • minos2/gl-slideshow.fs: Zeigt eine Slideshow. Lege Bilder in ein Verzeichnis, und füge eine Liste der Dateinamen (mit Pfad). Lade diese Liste mit „<slidelist>“ slide-show.
  • minos2/android-recorder.fs: Zeichnet ein Video auf, wenn man camera-test aufruft. Das aufgezeichnete Video wird in /storage/extSdCard/Filme/test.mp4 abgelegt.
  • unix/sensors.fs: Liest die Sensoren aus.

Troubleshooting

Gforth schreibt ein Log in die Dateien /sdcard/gfortherr.log und /sdcard/gforthout.log. Falls etwas schief geht, erst mal hier nachsehen, ob eine Fehlermeldung zu finden ist. Sollte eine Quelldatei fehlen oder kaputt sein, hilft es, /sdcard/gforth/ zu löschen, wobei es eigentlich reicht, im Unterordner mit der aktuellen Versionsnummer die Datei sha256sum zu löschen. Manchmal verschieben sich Dateien nach einem Update, dann sollte man /sdcard/gforth/ löschen, damit die alten Dateien auch wirklich verschwinden.

Dokumentation

Gforth hat ein dickes Manual, das es hier auch als eBook PDF gibt (einige nicht umbrechbare Texte sind in der eBook-Version rechts abgeschnitten).

projects/gforth-android/start.txt · Zuletzt geändert: 2021-11-26 21:16 von bernd