2023-11-21 02:32:11 i'm stupid :( 2023-11-21 02:33:37 i can't explain what i'm experiencing right now 2023-11-21 02:33:42 it's like some kind of logical dyslexia 2023-11-21 02:34:01 if TOS is 0, then 0<> should produce true, which is not 0 2023-11-21 02:34:44 no wait 2023-11-21 02:35:06 0 0= . -> t 2023-11-21 02:35:24 why is this confusing me so much? i need to call it a night 2023-11-21 03:17:02 i'm finding it a lot more difficult to understand how I would implement forth in C than in assembler 2023-11-21 03:17:06 it has to be indirect threaded code, because I can't generate machine instructions for direct threaded or subroutine threaded code wihout RWX 2023-11-21 03:17:49 and i dont think it can be token threaded because I certainly want more than e.g. 256 words if i represented a token with a char 2023-11-21 03:19:19 is there some sort of resource I could reference to build an intuition about how to implement ITC in C ? 2023-11-21 03:33:01 kws, i have the same problem. i "get" forth in assembler, but when i try to write it in c, it becomes confusing. 2023-11-21 03:35:39 having said that, my attempts in the past have simply allocated arrays of function pointers. IP is just a void (**ip)(void), and you execute a word with a "while (*ip) (*ip++)();" 2023-11-21 03:36:59 hmm, well im glad im not alone. interesting, i see 2023-11-21 07:04:06 hmm.. 74 in forth? Been a long time since I'e seen that. 2023-11-21 07:05:33 only see 2 I seem to recall. 2023-11-21 07:43:12 HEY! 2023-11-21 07:43:16 Oh, he's gone. 2023-11-21 07:43:30 I know that guy pretty well. 2023-11-21 07:44:16 I hate I missed him. He runs a channel called #c-banned that I've hung out on at times. It's been pretty dead there lately though - that's the first I've seen of him for months. 2023-11-21 12:41:31 ACTION https://www.youtube.com/watch?v=eA_XHgyhpRU&list=PLJ6S12Wv_o1L0MHOYKzvTTLC4VYc4eBVS A Brief Introduction to Forth  2023-11-21 12:50:26 Hm way too brief 2023-11-21 14:06:33 I like that they're using SwiftForth though 2023-11-21 14:09:09 olle: Watch this one https://www.youtube.com/watch?v=mvrE2ZGe-rs 2023-11-21 14:09:21 Good little video from ages ago 2023-11-21 14:10:14 By Samuel Falvo II apparently 2023-11-21 14:13:43 I did see that one some time ago 2023-11-21 14:13:48 Worth another watch 2023-11-21 14:20:32 Oh you don't need to watch it again :) 2023-11-21 14:20:34 Although I did 2023-11-21 14:20:47 I've seen it a couple times, some good stuff to absorb in there 2023-11-21 14:20:51 Although quite opinionated 2023-11-21 14:20:55 KipIngram I think you'd like it 2023-11-21 15:44:30 http://www.figuk.plus.com/webforth/En/TutorlT.htm#L17 - spot the html bug 2023-11-21 15:46:26 I don't know how mistakes like that get left 2023-11-21 15:46:55 Also there's more than one mistake in that HTML 2023-11-21 15:47:31 Yea? 2023-11-21 15:48:04 Oh he left the email for bug reports, hehe 2023-11-21 16:46:55 I believe I've seen that - the word "slurp" seems familiar to me. 2023-11-21 17:04:14 I think slurp is from WIl Baden 2023-11-21 17:06:33 Well, I can't see it http://www.wilbaden.com/neil_bawd/ 2023-11-21 17:28:45 I've definitely seen it used in a video a lot like that one, where a guy was just "ad lib coding" and narrating his thought process. 2023-11-21 18:20:40 : wtf 1 . latestxt dup >body 1 th dup @ 1+ over ! drop ; 2023-11-21 18:21:31 Does this word seem hacky and probably non-portable? It prints 1 then increments it, so subsequent calls would print 2 3 4 .. and so on 2023-11-21 18:24:29 which forth is this written in? 2023-11-21 18:25:10 gforth 2023-11-21 18:26:25 a question for you rest: would you say forth is a pointfree programming or is in the tacit programming paradigm? 2023-11-21 18:27:27 I am not familiar enough with gforth to answer. 2023-11-21 18:36:48 user51: Yeah, that strikes me as kind of edgy. Self modifying code? It would have to make assumptions about definition structure, so I wouldn't count on it being portable. 2023-11-21 18:37:14 create/does might be more typical for a closure-thingy 2023-11-21 18:37:42 I'd just increment and print a stack item. 2023-11-21 18:38:41 user51: I'd say that almost anything that modifies an already existing definition would be considered "dangerous and probably non-portable." 2023-11-21 18:39:00 "Bad Juju" 2023-11-21 18:39:54 I wrote a create/does thing that made counters 2023-11-21 18:41:12 : counter: create 0 , does> dup @ tuck 1+ swap ! ; 2023-11-21 18:41:19 Something like that 2023-11-21 18:42:38 You're not compiling the (lit) runtime that needs to precede the literal value. 2023-11-21 18:43:03 Oh, never mind. 2023-11-21 18:43:12 Yeah, that looks like it would work. 2023-11-21 18:43:30 KipIngram: Good to hear. I read a few bits of the standard and my conclusion was that we can assume a dictionary, but can't assume a specific structure. 2023-11-21 18:43:36 Sorry - not enough coffee yet this morning. 2023-11-21 18:43:51 Sounds like the morning hasn't started yet :) 2023-11-21 18:44:02 I just wrote this too http://0x0.st/HwPq.txt 2023-11-21 18:44:08 user51: which is sad, since it's 11:45am here. 2023-11-21 18:45:01 KipIngram: Well, just accept self-modifying code and change the time 2023-11-21 18:45:16 :-) 2023-11-21 18:45:52 I like your fib - nice use of tuck. 2023-11-21 18:46:49 KipIngram: clock time is an illusion, morning doubly so. 2023-11-21 20:18:18 GeDaMo: Any ideas how to reset that counter? I thought of (1) recreating it, which leaks memory (2) looping until it overflows, which might be a good way to relax 2023-11-21 20:20:44 Which? yours or mine? 2023-11-21 20:21:10 With mine, you can tick the name then do >body to get the address of the value 2023-11-21 20:21:21 ACTION chuckles 2023-11-21 20:22:13 GeDaMo: Nice, that works 2023-11-21 20:23:11 find the code to var and const.. they are baseline. However, your word then becomes a ONE-OF.. You can't layer them. Unless you create a creator-word and a reset-word, but then you are definitely creating "internal variables" 2023-11-21 20:24:18 You might be best-off with a creator-word that allocates a unit of RAM for counting and then the reset-word frees it. 2023-11-21 20:38:14 Yeah, that would be the standard way of resetting it. The tick operation gets you the address of the data (or something that leads you to it). 2023-11-21 20:38:31 Same method lets you change the value of a constant, etc. 2023-11-21 20:44:30 or a closure returns a list of things to call, one of them being a reset 2023-11-21 20:50:04 I still struggle a little with the closure idea. I get it more than I used to, but still not completely. 2023-11-21 20:50:20 I have the impression that the idea is straightforward, but is just something I think of in a different way. 2023-11-21 20:50:45 The idea of calling one thing to launch a process and then call something else later to get the result seems simple enough to me. 2023-11-21 20:51:50 In some of his processors Chuck separated @ into two pieces - first piece intiates the RAM read and the second actually acquires the data. It's really the same idea, if you think about it. 2023-11-21 20:52:14 Normally he put them one right after the other - that single cycle of delay was enough. But one wouldn't HAVE to do that. 2023-11-21 20:52:33 useful breakout 2023-11-21 20:52:50 So I really just look at it as a way of staying busy while waiting for something to happen. 2023-11-21 20:54:32 Might be smart to do that with BLOCK too. 2023-11-21 21:08:44 hmm, yeah - unless you go straight to byte-streaming