Created
December 2, 2025 18:12
-
-
Save Ismael-VC/518b3d0d0fa520457c5c302c861253b5 to your computer and use it in GitHub Desktop.
This file contains hidden or 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
| diff --git a/src/core.tal b/src/core.tal | |
| index ceba94e..e2c8d9b 100644 | |
| --- a/src/core.tal | |
| +++ b/src/core.tal | |
| @@ -206,6 +206,10 @@ | |
| &rawstr ( t* -- ) | |
| /req-name !rom/<write-str> | |
| + &immedi ( t* -- ) | |
| + { "Immediate 20 "rune 20 "detected. 0a00 } STH2r err/<print> | |
| + /req-name syms/immediate !refs/get-immediate | |
| + | |
| @runes/req-name ( str* -- str1* ) | |
| INC2 LDAk #20 GTH ?{ ;dict/invalid ;dict/Name !err/<token> } | |
| JMP2r | |
| @@ -220,7 +224,8 @@ | |
| "# =&lithex "" =&rawstr | |
| "} =&lambda "~ =&concat | |
| "( =&coment ") =&ignore | |
| - "[ =&ignore "] =&ignore "% =¯os ] $1 | |
| + "[ =&ignore "] =&ignore | |
| + "* =&immedi "% =¯os ] $1 | |
| ( | |
| @|Opcodes ) | |
| @@ -386,6 +391,17 @@ | |
| INC2 INC2 STH2k LDA .SymType/declared ORA STH2r STA | |
| JMP2r | |
| +@syms/is-immediate ( sym* -- sym* t ) | |
| + { "Is 20 "immediate? 0a00 } STH2r err/<print> | |
| + INC2k INC2 LDA .SymType/immediate AND JMP2r | |
| + | |
| +@syms/immediate ( sym* -- sym* ) | |
| + { "Marking 20 "as 20 "immediate 0a00 } STH2r err/<print> | |
| + name/unpack /find-name /is-defined ?{ | |
| + ( ! ) ;dict/invalid ;dict/Symbol err/<token> } | |
| + INC2k INC2 STH2k LDA .SymType/immediate ORA STH2r STA | |
| + JMP2r | |
| + | |
| ( | |
| @|References ) | |
| @@ -400,7 +416,14 @@ | |
| ( line* ) ;token/line LDA2 /<push-short> | |
| ,&ptr LDR2 #000a SUB2 ,&ptr STR2 } | |
| ( | mark as used ) | |
| - syms/use LDA2 JMP2r | |
| + syms/use | |
| + syms/is-immediate #010e DEO ?{ | |
| + LDA JMP2r } | |
| + ( | execute immediatly ) | |
| + { "Executing! 0a00 } STH2r err/<print> | |
| + | |
| + #010e DEO | |
| + #ffff JMP2r | |
| @refs/<push-short> ( value* -- ) | |
| SWP /<push-byte> | |
| @@ -421,6 +444,10 @@ | |
| @refs/get-abs2 ( label* -- addr* ) | |
| ;&handle-abs2 !/get-type | |
| +@refs/get-immediate ( label* -- addr* ) | |
| + { "Getting 20 "immediate. 0a00 } STH2r err/<print> | |
| + ;/handle-immediate !/get-type | |
| + | |
| @refs/get-rel ( label* -- distance ) | |
| ;&handle-rel /get-type INC2k ORA ?{ | |
| ( undefined ) POP2 #00 JMP2r } | |
| @@ -455,6 +482,10 @@ | |
| @refs/handle-abs2 ( ref* -- ) | |
| /resolve-sym NIP2 !rom/<write-short> | |
| +@refs/handle-immediate ( ref* -- ) | |
| + { "Handling 20 "immediate! 0a00 } STH2r err/<print> | |
| + /resolve-sym NIP2 JSR2 | |
| + | |
| @refs/handle-rel ( ref* -- ) | |
| /resolve-sym SWP2 LDA2 /get-distance /byte-distance NIP !rom/<write-byte> | |
| @@ -662,7 +693,8 @@ | |
| @macros/mem ( name\0, value\0 ) | |
| $1000 &memend | |
| -@syms/mem ( addr*, SymType, name\0 ) | |
| +( Bits[7 6 5 4 3 2 1 0 ] ) | |
| +@syms/mem ( addr*, SymType[immediate, profile ] , name\0 ) | |
| $7000 &memend | |
| |syms/mem @refs/mem ( addr*, symbol*, type-fn*, scope*, line* ) | |
| $7000 &memend | |
| @@ -674,5 +706,4 @@ | |
| @|Enums ) | |
| -|00 @SymType/empty $1 &used $1 &declared | |
| - | |
| +|00 @SymType/empty $1 &used $1 &declared $1 |80 &immediate $1 | |
| diff --git a/tests.sh b/tests.sh | |
| old mode 100755 | |
| new mode 100644 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment