Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
skripte [25.01.2019 10:01] martin |
skripte [11.08.2021 10:15] |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== src-Datei ====== | ||
- | |||
- | |||
- | Für ein einfaches MP3 sieht ein Skripteintrag folgendermaßen aus: | ||
- | |||
- | < | ||
- | Precode=15313 | ||
- | TYPE=1 | ||
- | [Note] | ||
- | Ein optionaler | ||
- | mehrzeiliger Kommentar | ||
- | [Content] | ||
- | c: | ||
- | </ | ||
- | |||
- | Die TingID ist in diesem Fall 15313. | ||
- | |||
- | |||
- | Ein richtiger Skrtipteintrag hat die folgende Form: | ||
- | < | ||
- | Precode=16134 | ||
- | TYPE=0 | ||
- | [Note] | ||
- | Kran | ||
- | [Content] | ||
- | cmp v71, 1 | ||
- | je falsch | ||
- | cmp v72, 1 | ||
- | je falsch | ||
- | cmp v73, 1 | ||
- | je falsch | ||
- | cmp v70, 1 | ||
- | je richtig | ||
- | jmp aussage | ||
- | |||
- | :falsch | ||
- | playoid 15306 | ||
- | jmp end | ||
- | |||
- | :aussage | ||
- | playoid 15298 | ||
- | jmp end | ||
- | |||
- | :richtig | ||
- | playoid 15299 | ||
- | clearver | ||
- | jmp end | ||
- | |||
- | :end | ||
- | end | ||
- | </ | ||
- | |||
- | Precode entspricht der TingID. Der TYPE ist 0. Unter [Note] steht der Code. Innerhalb des Quellcodes gelten Zeilen die mit '' | ||
- | |||
- | ====== Binärcode in der ouf-Datei ====== | ||
- | |||
- | Der Binärcode wird zusätzlich zum Befehl '' | ||
- | |||
- | |||
- | ===== Kommando-Referenz ===== | ||
- | ^ Assembler ^ Beschreibung ^ Binärcode ^ | ||
- | | end | Programmende | 0x0000 | | ||
- | | clearver | Löscht alle Variablen (???) | 0x0100 | | ||
- | | set [Register] [Value] | Setzt ein Register auf einen Wert | 0x0201 | | ||
- | | set [Register] [Register] | Kopiert ein Register in ein anderes | 0x0202 | | ||
- | | cmp [Register] [Value] | Vergleich zw. einem Register und einem Wert | 0x0301 | | ||
- | | cmp [Register] [Register] | Vergleich zw. zwei Registern | 0x0302 | | ||
- | | and [Register] [Value] | Binäres-Und eines Registers mit einem Wert | 0x0401 | | ||
- | | and [Register] [Register] | Binäres-Und eines Registers mit einem anderen Register | 0x0402 | | ||
- | | or [Register] [Value] | Binäres-Oder eines Registers mit einem Wert | 0x0501 | | ||
- | | or [Register] [Register] | Binäres-Oder eines Registers mit einem anderen Register | 0x0502 | | ||
- | | not [Register] 0x0000 | Binäre-Verneinung eines Registers (Der zweite Parameter scheint nicht genutzt zu weden) | 0x0602 | | ||
- | | jmp [Label] | Sprung | 0x0800 | | ||
- | | je [Label] | bedingter Sprung bei Gleichheit | 0x0900 | | ||
- | | jne [Label] | bedingter Sprung bei Ungleichheit | 0x0a00 | | ||
- | | jg [Label] | bedingter Sprung wenn größer | 0x0b00 | | ||
- | | jge [Label] | bedingter Sprung wenn größer oder gleich | 0x0c00 | | ||
- | | jb [Label] | bedingter Sprung wenn kleiner | 0x0d00 | | ||
- | | jbe [Label] | bedingter Sprung wenn kleiner oder gleich | 0x0e00 | | ||
- | | add [Register] [Value] | Addiert einen Wert zu einem Register | 0x0f01 | | ||
- | | add [Register] [Register] | Addiert ein Register zu einem anderen | 0x0f02 | | ||
- | | sub [Register] [Value] | Subtrahiert einen Wert von einem Register | 0x1001 | | ||
- | | sub [Register] [Register] | Subtrahiert ein Register von einem anderen Register | 0x1002 | | ||
- | | playoid [Value] | Spielt eine OID, gegeben als Wert, ab (siehe Abschnitt '' | ||
- | | playoid [Register] | Spielt eine OID, gegeben als Register, ab (siehe Abschnitt '' | ||
- | | pause [Value] | Pausiert für x Zehntelsekunden | 0x1701 | | ||
- | | pause [Register] | Pausiert für x Zehntelsekunden | 0x1702 | | ||
- | | call [Value] | siehe: Abschnitt '' | ||
- | | callid [Value] | siehe: Abschnitt '' | ||
- | | return | siehe: Abschnitt '' | ||
- | |||
- | ===== Kommando-Referenz (inoffizielle Befehle) ===== | ||
- | |||
- | ^ Assembler ^ Beschreibung ^ | ||
- | | mul [Register] [Value] | arg1 = arg1 * arg2 | | ||
- | | mul [Register] [Register] | arg1 = arg1 * arg2 | | ||
- | | div [Register] [Value] | arg1 = arg1 / arg2 | | ||
- | | div [Register] [Register] | arg1 = arg1 / arg2 | | ||
- | | mod [Register] [Value] | arg1 = arg1 mod arg2 | | ||
- | | mod [Register] [Register] | arg1 = arg1 mod arg2 | | ||
- | | divmod [Register] [Register] | help = arg1 < | ||
- | | min [Register] [Value] | arg1 = min( arg1, arg2) | | ||
- | | min [Register] [Register] | arg1 = min( arg1, arg2) | | ||
- | | max [Register] [Value] | arg1 = max( arg1, arg2) | | ||
- | | max [Register] [Register] | arg1 = max( arg1, arg2) | | ||
- | | exp2 [Register] | arg1 = 2 < | ||
- | | rnd [Register] [Register] | arg1 = " | ||
- | | rnd [Register] [Value] | arg1 = " | ||
- | | volume [Register] | setzt die Stiftlautstärke (1-20) | | ||
- | | volume [Value] | setzt die Stiftlautstärke (1-20) | | ||
- | | lastid [Register] | arg1 = " | ||
- | | lang [Register] | arg1 = " | ||
- | | setbit [Register] [Register] | setzt das arg2-te Bit im Register arg1 auf 1 | | ||
- | | setbit [Register] [Value] | setzt das arg2-te Bit im Register arg1 auf 1 | | ||
- | | unsetbit [Register] [Register] | setzt das arg2-te Bit im Register arg1 auf 0 | | ||
- | | unsetbit [Register] [Value] | setzt das arg2-te Bit im Register arg1 auf 0 | | ||
- | | getbit [Register] [Register] [Register] | arg1 = 1 wenn das arg3-te Bit von arg2 auf 1 gesetzt ist, ansonsten 0 | | ||
- | | getbit [Register] [Value] [Register] | arg1 = 1 wenn das arg3-te Bit von arg2 auf 1 gesetzt ist, ansonsten 0 | | ||
- | | getbit [Register] [Register] [Value] | arg1 = 1 wenn das arg3-te Bit von arg2 auf 1 gesetzt ist, ansonsten 0 | | ||
- | | getbit [Register] [Value] [Value] | arg1 = 1 wenn das arg3-te Bit von arg2 auf 1 gesetzt ist, ansonsten 0 | | ||
- | | lock | siehe Abschnitt "lock & unlock" | ||
- | | unlock | siehe Abschnitt "lock & unlock" | ||
- | |||
- | |||
- | Als inoffizielle Erweiterung ist es möglich im Skript-Code anstatt Dezimalzahlen auch Hexadiezimalzahlen zu verwenden. Hierzu muss '' | ||
- | |||
- | ===== Register ===== | ||
- | |||
- | Die Register sind jeweils 16 bit unsigned Werte. Es gibt keinen Überlauf, d.h. es gilt: '' | ||
- | |||
- | | <color red>V0 bis V91</ | ||
- | | V92 | lock & unlock (siehe Abschnitt "lock & unlock" | ||
- | | V93 | Sprachcode (siehe Dateisystem für eine Liste der Codes) (read) | | ||
- | | V94 | Volume <color red> | ||
- | | V95 | Lezter mit dem Stift angewählter Code (read) | | ||
- | | V96 | <color red>?</ | ||
- | | V97 | <color red> | ||
- | | V98 | ein zufälliger Wert von 0 bis 32767 (0x7FFF) (read) | | ||
- | | V99 | <color red>?</ | ||
- | | <color red>V100 - ?</ | ||
- | |||
- | |||
- | ===== playoid & callid ===== | ||
- | |||
- | Wenn '' | ||
- | |||
- | '' | ||
- | |||
- | ===== call & return ===== | ||
- | |||
- | In einer Unterroutine wird der Befehl '' | ||
- | In der aufrufenden Routine wird der Befehl '' | ||
- | |||
- | ===== lock & unlock (das Register V92) ===== | ||
- | |||
- | Mit dem Register V92 kann der " |