-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
add: translations and local Register support
- Loading branch information
Showing
21 changed files
with
913 additions
and
49 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
![diver](./assets/diver.png) | ||
## Technical Deep Dive | ||
|
||
|
||
*TP_VIEW* verwendet Kommando-Strings zur Ausführung einer bestimmten Aufgabe. | ||
|
||
Diese Zeichenketten basieren auf einer internen Variable (cmd_list).Der Wert der variableist die Kommando-ID. | ||
|
||
- Einige Befehle erfordern mehrere Parameter oder Argumente. | ||
- Einfache Befehle werden mit einem String aufgerufen oder ausgeführt, der den Befehlsnamen oder die ID enthält. | ||
- :CALL TP_VIEW('HELP') oder :CALL TP_VIEW(11); | ||
- Befehle der gleichen Funktionsgruppe haben den Gruppennamen durch einen Punkt vom Befehlsnamen getrennt. | ||
- :CALL TP_VIEW('FORCE.VIEW'); | ||
|
||
**CMD_LIST Variable:** | ||
|
||
<pre> [TP_VIEW]CMD_LIST Storage: DRAM Access: RW : CMD_LIST_T = | ||
Field: CMD_LIST.HELP Access: RW: INTEGER = 11 | ||
... | ||
Field: CMD_LIST.WIDE_USER Access: RW: INTEGER = 17 | ||
Field: CMD_LIST.SCREEN.SINGLE Access: RW: INTEGER = 21 | ||
Field: CMD_LIST.SCREEN.WIDE Access: RW: INTEGER = 22 | ||
... | ||
</pre> | ||
--- | ||
**Karel-Code:** Ermittelt die Befehls-ID, indem sie aus dem ersten TP-Argument extrahiert wird | ||
|
||
CMD.CURR.ID = getINTByNam('CMD_LIST.'+ GET_TPE_STR(1)) | ||
--- | ||
|
||
Der "Trick" ist, dass wir auf die Variable *cmd_list* **'BYNAME-builtin'** zugreifen. | ||
|
||
Wir benötigen nur eine einfache Stringberechnung, um eine Befehls-ID zu erhalten. | ||
Wenn man versucht, einen "Befehl" mit einer ungültigen Befehlszeichenfolge wie "HELO" statt "HELP" aufzurufen, erhält der Benutzer eine einfache, aber informative (System-)Fehlermeldung. | ||
|
||
Die Verwendung von Befehls-IDs ist weit verbreitet, weil sie schnell(!) und einfach ist (meistens). Der Nachteil ist, dass der (Benutzer/Entwickler) mit Nummern statt mit 'benannten' Befehlen umgehen muss. | ||
|
||
Der Vorteil des Zugriffs auf Befehle mit **'BYNAME-builtin'** ist, dass es schnell UND einfach für | ||
**Entwickler und Benutzer** ist! | ||
|
||
## Hilfe System | ||
|
||
Es gibt eine zweite Variable namens [TP_VIEW]CMD_HELP mit derselben Struktur, aber vom Typ string. | ||
Dieser String enthält eine kleine befehlsspezifische Hilfe. | ||
|
||
<pre> [TP_VIEW]CMD_HELP Speicherung: DRAM Zugriff: RW : CMD_HELP_T = | ||
Feld: CMD_HELP.HELP Zugriff: RW: STRING[64] = 'TP_VIEW('HELP'); zeige Web_Hilfe dieses Programms' | ||
</pre> | ||
|
||
Es ist also immer(!) eine einfache Hilfe im Programm enthalten. | ||
Es ist möglich, über die Web-Ausführung dieses Programms auf die va-Datei zuzugreifen, z.B. | ||
|
||
_hostname_/karel/tp_view | ||
|
||
Die va-Datei und auch eine optionale Befehls-Referenz-Datei werden dynamisch in die Web-Hilfe eingebunden! |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
## Warum TP_Tools? | ||
Entstanden aus der Idee, den internen Befehl 'MESSAGE[..]' zu ersetzen. | ||
Allerdings mit der Möglichkeit, Strings zu parsen, z.B. um Werte von Registern dynamisch anzuzeigen. | ||
Der Umfang wurde jedoch schnell größer und es wurden mehr Funktionen benötigt bzw. gewünscht. | ||
|
||
## FREE? Wirklich? | ||
Ja. Lizenz prüfen. | ||
|
||
## Warum nicht Open Source? | ||
In den letzten Jahren habe ich leider eine Menge Software gesehen, die wirklich "schlecht" war. | ||
Wenn jemand ohne viel Hintergrundwissen (Anfänger, nicht Profi) seine "eigene" Lösung mit dem Karel-Quellcode baut, kommt es of vor, das Funktionen "schlecht implementiert" sind, was zu einer Verbreitung von kleinen Karel-Programmen mit verschiedenen APIs und ohne Dokumentation führt. | ||
Leider habe ich das schon oft gesehen. | ||
|
||
Ich möchte es dem Programmierer so einfach wie möglich machen. So kann er sich auf seine Hauptaufgabe konzentrieren. |
Oops, something went wrong.