diff options
| author | kitty <nepeta@canaglie.net> | 2026-04-10 23:05:14 +1000 |
|---|---|---|
| committer | kitty <nepeta@canaglie.net> | 2026-04-10 23:05:14 +1000 |
| commit | 09ef5055fd41b0e7383708ed939e4f49e354da83 (patch) | |
| tree | bc9924c4f30d0d1861eb607d76a65c0c24c7a0b0 /sanctuary.s | |
| parent | 9ac53463c56dd57a84036a6944e6b4e5d3829e9c (diff) | |
input stuff, fix parse{,-name} skipping last char of tib
Diffstat (limited to 'sanctuary.s')
| -rw-r--r-- | sanctuary.s | 37 |
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, |
