diff options
| author | kitty <nepeta@canaglie.net> | 2026-02-21 01:30:51 +1100 |
|---|---|---|
| committer | kitty <nepeta@canaglie.net> | 2026-02-21 01:30:51 +1100 |
| commit | 8ea14c863401f19e602132192e2b8d776669ce5d (patch) | |
| tree | 2604f3bcafd0db17f11bea84d565cedc3a905a17 | |
| parent | 734c5c4430d488fc78dca791643ac6f1431c24c1 (diff) | |
hex dpy words, .s in forth!
| -rw-r--r-- | jefs.fs | 14 | ||||
| -rw-r--r-- | jefs.s | 73 |
2 files changed, 49 insertions, 38 deletions
@@ -56,7 +56,6 @@ decimal \ PNO \ mostly from pforth - 255 allot variable pad drop variable hld : <# pad hld ! ; @@ -69,9 +68,20 @@ variable hld : (u.) <# #s #> ; : u. (u.) say space ; : u.r >r (u.) r> over - spaces say ; + : (.) dup abs <# #s swap sign #> ; : . (.) say space ; : .r >r (.) r> over - spaces say ; -\ TODO something is leaking its stack (a word address i think) +: (.byte) hex <# # # #> decimal ; +: .byte (.byte) say space ; +: (.word) hex <# # # # # #> decimal ; +: .word (.word) say space ; +: (.dword) hex <# # # # # # # # # #> decimal ; +: .dword (.dword) say space ; +: (.qword) hex <# # # # # # # # # # # # # # # # # #> decimal ; +: .qword (.qword) say space ; + +: .s sp 8 + ( skip sp itself ) begin dup s0 @ >= while dup @ .qword 8 + repeat drop cr ; + bye @@ -1002,42 +1002,42 @@ defword "0branch", zerobranch, 0 ; debugging word; outputs raw bytes so needs to be piped through `x(x)d` ; terrible and awful ; W = r14; W <= wstack_b; W+=8 -defword ".s", dots, 0 - push r11 - push r12 - - mov r12, r14 -.loop: - cmp r12, wstack - jge .done - - mov [.space], r12 - mov rdx, 8 ; qword - mov rsi, .space - mov rdi, 1 - mov rax, __NR_write - syscall - - mov rdx, 8 ; qword - mov rsi, r12 - mov rdi, 1 - mov rax, __NR_write - syscall - lea r12, [r12+8] - jmp .loop - -.done: - mov rdx, 16 ; 2 qword - mov rsi, .dmsg - mov rdi, 1 - mov rax, __NR_write - syscall - - pop r12 - pop r11 - ret -.space: resq 1 -.dmsg: db "DONEDONEYIPPEEEE" +; defword ".s", dots, 0 +; push r11 +; push r12 +; +; mov r12, r14 +; .loop: +; cmp r12, wstack +; jge .done +; +; mov [.space], r12 +; mov rdx, 8 ; qword +; mov rsi, .space +; mov rdi, 1 +; mov rax, __NR_write +; syscall +; +; mov rdx, 8 ; qword +; mov rsi, r12 +; mov rdi, 1 +; mov rax, __NR_write +; syscall +; lea r12, [r12+8] +; jmp .loop +; +; .done: +; mov rdx, 16 ; 2 qword +; mov rsi, .dmsg +; mov rdi, 1 +; mov rax, __NR_write +; syscall +; +; pop r12 +; pop r11 +; ret +; .space: resq 1 +; .dmsg: db "DONEDONEYIPPEEEE" defword "HEREDUMP", heredump, 0 mov rdx, [here] @@ -1055,6 +1055,7 @@ defvar "#tib", num_tib, 0, initlen defvar ">in", to_in, 0, 0 defvar "state", state, 0, interpreting defvar "here", here, 0, umem +defvar "s0", s0, 0, wstack - 8 defvar "h0", h0, 0, umem ; beginning of user memory area defvar "hend", hend, 0, umem_e ; ending of user memory area defvar "base", base, 0, 10 |
