Actually, self-modification is possible but...

This commit is contained in:
Luxferre
2026-06-13 22:54:39 +03:00
parent e3680fb78e
commit 692018ec4f
2 changed files with 3 additions and 0 deletions
+1
View File
@@ -12,6 +12,7 @@ The LTTB specification expands upon the original Design Notes in the following m
- Any invalid statement (including `REM`) can be used for comments. - Any invalid statement (including `REM`) can be used for comments.
- No command can be abbreviated inside `IF` statements. - No command can be abbreviated inside `IF` statements.
- `LET` and `THEN` keywords are optional. - `LET` and `THEN` keywords are optional.
- `IF` statements also allow inserting line numbers after `THEN`, making it possible to write self-modifying programs.
- A special `RND(n)` function is introduced that generates a random number from 0 to `n-1`. - A special `RND(n)` function is introduced that generates a random number from 0 to `n-1`.
- The `NEW` command is synonym to `CLEAR`. - The `NEW` command is synonym to `CLEAR`.
- The `BYE` command can be used to exit the interpreter. - The `BYE` command can be used to exit the interpreter.
+2
View File
@@ -62,6 +62,8 @@ Execute a statement `[stmt]` if the relation denoted by `relop` holds between `[
Examples: `IF A > B THEN LET C = A-B`, `IF X<1000 THEN GOTO 400` Examples: `IF A > B THEN LET C = A-B`, `IF X<1000 THEN GOTO 400`
Non-standard extension: if the `[stmt]` statement starts with a line number, LTTB doesn't execute it immediately but instead overwrites the original line with the number it starts with. This allows writing self-modifying programs in LTTB.
### `GOTO [expr]` ### `GOTO [expr]`
Direct jump. Evaluates `[expr]` to a line number and continues execution of the program from that line number. If the computed line number is outside the valid range (1 to 32767), the program halts. Direct jump. Evaluates `[expr]` to a line number and continues execution of the program from that line number. If the computed line number is outside the valid range (1 to 32767), the program halts.