summaryrefslogtreecommitdiff
path: root/sanctuary.s
diff options
context:
space:
mode:
authorkitty <nepeta@canaglie.net>2026-04-10 23:05:14 +1000
committerkitty <nepeta@canaglie.net>2026-04-10 23:05:14 +1000
commit09ef5055fd41b0e7383708ed939e4f49e354da83 (patch)
treebc9924c4f30d0d1861eb607d76a65c0c24c7a0b0 /sanctuary.s
parent9ac53463c56dd57a84036a6944e6b4e5d3829e9c (diff)
input stuff, fix parse{,-name} skipping last char of tib
Diffstat (limited to 'sanctuary.s')
-rw-r--r--sanctuary.s37
1 files changed, 29 insertions, 8 deletions
diff --git a/sanctuary.s b/sanctuary.s
index 80b0cbc..b1544a9 100644
--- a/sanctuary.s
+++ b/sanctuary.s
@@ -190,7 +190,7 @@ defcode "parse-name", parse_name, 0
je .wsloop
cmp rsi, r10
- jge .empty
+ jg .empty
mov r11, 1
dec rsi ; bring down by one to point to the start
push rsi ; will become `a`
@@ -204,7 +204,7 @@ defcode "parse-name", parse_name, 0
je .wordloop_e
cmp rsi, r10
- jge .wordloop_e
+ jg .wordloop_e
inc r11
lodsb
jmp .wordloop
@@ -216,6 +216,8 @@ defcode "parse-name", parse_name, 0
pop rsi
pspush rsi
pspush r11
+ ; call twodup
+ ; call intrpdump
ret
.empty:
@@ -237,7 +239,7 @@ defcode "parse", parse, 0
.wsloop:
cmp rsi, r10
- jge .empty
+ jg .empty
lodsb
cmp al, bl
je .wsloop
@@ -245,7 +247,7 @@ defcode "parse", parse, 0
je .wsloop
cmp rsi, r10
- jge .empty
+ jg .empty
mov r11, 1
dec rsi ; bring down by one to point to the start
push rsi ; will become `a`
@@ -257,7 +259,7 @@ defcode "parse", parse, 0
je .wordloop_e
cmp rsi, r10
- jge .wordloop_e
+ jg .wordloop_e
inc r11
lodsb
jmp .wordloop
@@ -323,11 +325,26 @@ defdefer "find", find, 0
pspush r13
ret
+; ; tmp dbg
+; defcode "INTRPDUMP", intrpdump, 0
+; pspop rdx ; u
+; pspop rsi ; a
+; mov rdi, 1
+; mov rax, __NR_write
+; syscall
+;
+; mov rdx, 1
+; mov rsi, .spc
+; mov rdi, 1
+; mov rax, __NR_write
+; syscall
+;
+; ret
+; .spc: db " "
+
; interpret {{{
; r11: word found flag
; r12: state
-; TODO respect comp-only flag (do this once error handling is impld)
-; TODO it doesnt work right
defcode "interpret", interpret, 0
.loop:
call parse_name
@@ -355,7 +372,7 @@ defcode "interpret", interpret, 0
jmp .loop
.componly:
- call q_notfound
+ call q_componly
jmp .loop
.intrpnum:
@@ -1143,6 +1160,10 @@ defdefer "?overflow?", q_overflow, 0
defdefer "?notfound?", q_notfound, 0
call abort
ret
+
+defdefer "?componly?", q_componly, 0
+ call abort
+ ret
; }}}
; these words are called from `create`d words,