Skip to content

Instantly share code, notes, and snippets.

@Ismael-VC
Created December 2, 2025 18:12
Show Gist options
  • Select an option

  • Save Ismael-VC/518b3d0d0fa520457c5c302c861253b5 to your computer and use it in GitHub Desktop.

Select an option

Save Ismael-VC/518b3d0d0fa520457c5c302c861253b5 to your computer and use it in GitHub Desktop.
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 "% =&macros ] $1
+ "[ =&ignore "] =&ignore
+ "* =&immedi "% =&macros ] $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