00:00:00 --- log: started forth/19.03.04 00:11:13 i'm working on a robotics/electronics thing too :) 00:20:02 --- quit: fftww (Read error: Connection reset by peer) 00:24:30 --- join: mtsd (~mtsd@94-137-100-130.customers.ownit.se) joined #forth 00:26:09 --- join: fftww (~va@46.211.131.195) joined #forth 00:41:36 --- quit: fftww (Quit: WeeChat 1.9.1) 01:14:19 --- quit: mtsd (Quit: WeeChat 1.6) 01:17:25 --- join: mtsd (~mtsd@94-137-100-130.customers.ownit.se) joined #forth 01:25:48 --- quit: mtsd (Quit: WeeChat 1.6) 01:28:52 --- join: dddddd (~dddddd@unaffiliated/dddddd) joined #forth 01:37:06 --- quit: dddddd (Ping timeout: 245 seconds) 01:37:39 --- join: mtsd (~mtsd@94-137-100-130.customers.ownit.se) joined #forth 01:49:22 --- join: dddddd (~dddddd@unaffiliated/dddddd) joined #forth 02:03:47 --- quit: ashirase (Ping timeout: 268 seconds) 02:08:33 --- join: ashirase (~ashirase@modemcable098.166-22-96.mc.videotron.ca) joined #forth 02:15:04 I think Forth is perfect for robotics. 02:15:24 And yeah, like ttmrichter said, that was essentitally its first application. 02:15:44 My son's robot car is Forth driven. 02:15:50 (Source: I made it. :D) 02:15:55 :-) 02:16:02 Nice! 02:17:12 You know, it occurred to me today that I need to move my header "flags" from the high bits of the link field to the high bits of the symbol index field. 02:18:00 This system can grow definitions across multiple non-adjacent heap pages, and it's at least possible that under heavy use I might try to move to a heap page that's too far away to link from without those bits available for the link distance. 02:18:11 KipIngram: https://i.imgur.com/f7c3CTr.jpg 02:18:16 Early version of it. 02:18:20 It's changed a lot since then. 02:18:28 I'd reserved the top 8 bits of the 32-bit field for such bits, so that means 8 MB or so is as far as I could reach. 02:18:55 Ah, I like it. 02:19:44 KipIngram: perfect for group minds robot net 02:20:55 yunfan: I'm not familiar with that - is it some online group? 02:21:27 KipIngram: This is eventually going to be v2.0. https://imgur.com/ktYbWBS 02:21:49 Though unfortunately the only Forth for the 8266 is ... quirky. 02:21:57 So I'll probably program it in C. :-/ 02:23:05 Write one! 02:23:29 * ttmrichter sighs. 02:23:46 hi 02:23:51 Or port pforth - it ports really easy. 02:23:56 ttmrichter: i wanted to write a forth for the esp 02:24:03 I keep looking at that possibility, but to get access to the WiFi I'd need to make a really fugly bounce layer between the huge blob and the rest of the system. 02:24:07 i started prototyping a forth for x86 02:24:12 It's in C, so if you can use C on your target you can likely use pforth. 02:24:31 * ttmrichter narrows his eyes. "I said a Forth, NOT AN ABOMINATION!" 02:24:34 * ttmrichter ahems. 02:24:38 I've replaced key and emit on it and made them use a network socket - worked real nice. 02:24:51 Well, it isn't the prettiest Forth in the world, that's true. 02:25:02 No, I'm even harder line than that. 02:25:10 ttmrichter: how would you call c functions? 02:25:42 ttmrichter: https://github.com/corecode/forth 02:25:56 Fair enough - we all have our "things." :-) 02:26:05 corecode: Depends on the calling conventions in use, but if it's typical C conventions I'd probably have a C layer written for interrupt handling and use whatever the equivalent of an SVC call is on Xtensa. 02:26:26 ttmrichter: but you'd use the sdk for stuff? 02:26:49 I'd have to use the blob, so maybe tear apart the SDK to find the parts that talk to the WiFi blob. 02:27:08 Calling the SDK proper would be out of scope. Might as well just use C at that point. 02:27:12 sounds like a lot of work 02:27:23 Which is why it didn't happen yet. :) 02:27:27 * ttmrichter is profoundly lazy. 02:27:32 otoh if you use the sdk 02:27:35 Between learning a new ISA and that ... 02:27:47 you can run your forth as a freertos task 02:27:57 ... 02:28:01 That's just sick. 02:28:04 Brilliant! 02:28:06 why? 02:28:16 I'm saying it's a nice hack. 02:28:19 ah 02:28:37 I have to flee for an hour and a bit. 02:28:40 Chat later. 02:28:41 yea and you just need to stub a freertos queue send and queue receive function 02:28:48 and write all the adapters in C 02:28:53 that need to do other stuff 02:37:30 --- quit: the_cuckoo (Ping timeout: 245 seconds) 03:00:04 --- quit: mtsd (Quit: leaving) 03:16:11 --- join: the_cuckoo (~charlie@d51a50ae9.access.telenet.be) joined #forth 03:16:41 heh - the best laid plans of mice and men.... 03:17:15 the demo has been moved forward by half an hour and the universe has decided to screw me over by giving me a power cut 03:17:24 --- quit: Keshl (Read error: Connection reset by peer) 03:17:47 --- join: Keshl (~Purple@207.44.70.214.res-cmts.gld.ptd.net) joined #forth 03:18:18 power back now - nvidia gone funny on the reboot - otherwise seems ok so far, but could have done without this :) 03:31:00 :-( 03:31:07 Murphy doing his thing. 03:32:12 yeah - looks like it - oddly, the name of the machine i'm running it on is actuallyed called murphy 03:36:51 Heh heh - ok, that was almost invoking the entity. 04:27:01 corecode: I've had a chance to think over your idea and it's really quite a nice one. 04:27:20 \o/ i had a nice idea 04:27:27 If I wrap each subsystem up in a task, I can use the ITC primitives to treat each subsystem, in effect, as a smart peripheral. 04:27:39 yea 04:27:47 Send commands via ITC and get results back the same way (or at least via pointers to buffers, etc.). 04:28:08 This would definitely solve the major problem in making an ESP Forth. 04:28:16 All that's left is learning that damned ISA. :D 04:28:22 yea 04:52:23 --- quit: rdrop-exit (Quit: Lost terminal) 05:05:59 demo went fine, though naturally, i forgot to assign an env var :) - and skype took its tole - ended up with only 6 parallel videos (dvd mpeg2) - otherwise, no hitches 06:07:10 the_cuckoo: Glad it went well! 06:10:40 cheers :) - the other demos from my colleagues were great too - one of them is providing a vulkan based extension which gives a whole bunch of stuff (hardware based optimisation, subpixel compositing, injection of 3d objects, proper rotatations and a bunch of other stuff) 06:15:27 Nice nice. 06:16:41 I got my support for nameless words implemented this weekend. 06:16:55 like lambdas? 06:17:10 I was working on my block editor, but I decided it was sprouting a fair number of words that would profit from having, so I detoured and took care of it. 06:17:22 Um, I don't really know the proper CS way to describe it. 06:17:29 got an example of the syntax? 06:17:31 I implemented two words: :: and ::wipe. 06:17:50 :: functions just as :, but puts the name-related information in a temporary buffer. 06:18:03 They can be found by following words that use them. 06:18:30 Then when I'm all done and have my final words (defined with :) in place, I issue ::wipe, and it unlinks the temporary names from the list and discards the buffer. 06:18:57 :: checks to see if the buffer exists yet - if it doesn't it allocates it. 06:19:48 Before I ::wipe, the temp words are linked into the dictionary just like normal, except they have a flag set in their header so the compiler will know not to point to a CFA in those header entries, but rather to a copy that was made in the "real" header region. 06:20:21 My headers are normally 16 bytes each, but these words only use 8. 06:20:46 So it saves a little RAM, too, but the big advantage is that all those names you get from heavy factoring don't clutter up your dictionary. 06:21:08 So a short example would be 06:21:09 yeah - think i see what you're getting at - it's vaguely the same idea i was considering about overlaying dictionaries on top of a shared static dictionary i think 06:21:13 :: alpha ... ; 06:21:16 :: beta ... ; 06:21:28 : delta ... alpha ... beta ... ; 06:21:30 ::wipe 06:21:38 Only delta is in the dictonary now. 06:22:20 I've seen schemes for doing something like this by nesting : definitions - inner ones don't wind up in the dictionary. 06:22:40 What I like about mine, though, is that I could define as many : words as I want that all can use the :: words. 06:22:41 gotcha - and i guess alpha/beta are just inlined? when you see on delta, do you see the contents or alpha/beta? 06:23:02 No, I do put a CFA/PFA pair for these words in permanent header space. 06:23:06 Just no name related info. 06:23:15 And definitions using them point to the CFA just like normal. 06:23:48 ah - right 06:24:15 I build the full header for :: words in the temporary buffer, then copy the CFA/PFA to the permanent header space. 06:24:34 I set that bit in the header, and put a pointer to the permanent CFA right after the word's temporary header. 06:25:07 So when the word gets found later, instead of compiling a pointer to the CFA that got made as part of the header, it compiles the extra pointer, which points to the permanent CFA. 06:26:07 I could optimize it a little - I don't really need to keep the CFA/PFA in the temporary buffer. But the buffer is a 4k page I got from my memory manager, so there's plenty of room - I don't really expect to be using hundreds of these things or anything like that. 06:26:16 If it starts to get crowded I'll tweak it later. 06:26:39 sounds reasonable i think 06:26:47 I've had this in my plans for a long time - I'm happy to have it in the bag. :-) 06:26:58 :) 06:27:26 Next goal is to finish off the editor. It's already usable, but I have some more stuff I want to do to it. 06:28:20 i need to make my iostream object thread safe :( - pita - should be thread safe ootb 06:29:33 Yeah, I'm going to have to do that for my memory manager and my block buffer manager at some point too. 06:30:04 Fortunately the memory manager allocate and free routines are very fast - I'll probably just put a lock around them completely. 06:31:03 when i've fixed the iostream thing, the core of my comms stuff will be complete - the rest will be just convenience stuff - like being able to monitor and log the running server(s) (you can host many servers in the same process, and each can provide their own distinct functionality - anything from a full shell to a locked down one to a simple script) 06:32:55 it's kinda weird, cos a client can also instantiate a server :) 06:35:59 Hmmm. 06:39:29 i guess i can open a few ports to hook up to my raspi - in theory, you won't be able to do any damage to the system (total sandbox - nothing can be accessed - not even files) - though it is possible to screw things up with loops and trying to rewrite a word from within itself causes a seg fault (i just need to track running words in the first instance and implement an overflow in the second) 06:40:06 oops - other way round there, but either way, fairly simple to resolve 06:40:41 I still want to put in some code to catch illegal memory references, so I can handle the situation internally rather than segfaulting. 06:45:03 i use valgrind quite a lot to catch those kinda things - does a very good job 07:32:41 --- quit: tabemann (Ping timeout: 264 seconds) 08:07:17 --- join: proteusguy (~proteusgu@cm-58-10-208-131.revip7.asianet.co.th) joined #forth 08:07:17 --- mode: ChanServ set +v proteusguy 08:35:05 --- quit: PoppaVic (Ping timeout: 264 seconds) 08:35:30 --- join: PoppaVic (~PoppaVic@unaffiliated/poppavic) joined #forth 09:07:29 Rewriting WORD in assembly lead to a massive speed up in my r216-forth 09:13:44 --- quit: jedb (Remote host closed the connection) 09:22:04 isnt that just : WORD PARSE HERE PACK$ ; ? 09:37:07 --- join: mark4 (~mark4@148.80.255.161) joined #forth 10:05:50 --- quit: mark4 (Ping timeout: 240 seconds) 10:06:42 --- quit: nighty- (Quit: Disappears in a puff of smoke) 10:07:52 --- quit: Zarutian (Ping timeout: 268 seconds) 10:08:24 --- join: fftww (~va@quaking-professor.volia.net) joined #forth 10:47:40 --- quit: gravicappa (Ping timeout: 255 seconds) 10:58:17 --- quit: proteusguy (Ping timeout: 250 seconds) 11:16:12 --- join: Zarutian (~zarutian@173-133-17-89.fiber.hringdu.is) joined #forth 12:05:33 --- join: mtsd (~mtsd@94-137-100-130.customers.ownit.se) joined #forth 13:46:06 --- join: Keshl_ (~Purple@207.44.70.214.res-cmts.gld.ptd.net) joined #forth 13:46:08 --- quit: Keshl (Read error: Connection reset by peer) 13:46:51 --- join: proteusguy (~proteusgu@cm-58-10-208-131.revip7.asianet.co.th) joined #forth 13:46:51 --- mode: ChanServ set +v proteusguy 13:52:53 --- quit: Kumool (Ping timeout: 272 seconds) 13:54:33 --- join: Kumool (Elite21911@gateway/shell/elitebnc/x-ykvvvkijnmsxlcqx) joined #forth 14:04:28 --- quit: mtsd (Quit: leaving) 14:13:16 good evening 14:13:21 afternoon 14:14:58 <`presiden> good morning 14:43:35 --- join: dave0 (~dave0@223.072.dsl.syd.iprimus.net.au) joined #forth 14:44:13 hi 14:51:50 --- quit: proteusguy (Ping timeout: 240 seconds) 14:56:59 --- join: jedb (~jedb@199.66.90.113) joined #forth 15:04:04 now i need to write a metacompiler for my forth cpu 15:17:46 <`presiden> corecode, virtual cpu? 15:19:48 no 15:19:50 fpga 15:21:11 <`presiden> nice 15:21:17 i think i should require a special word you define as the entry point 15:21:59 because, what to do with the words called between definitions 16:10:45 --- quit: lonjil (Quit: No Ping reply in 180 seconds.) 16:10:56 --- join: lonjil2 (~quassel@2a02:418:6050:ed15:ed15:ed15:e741:32d6) joined #forth 16:12:05 --- quit: rprimus (Ping timeout: 245 seconds) 16:12:12 --- join: rprimus (~micro@unaffiliated/micro) joined #forth 16:45:20 --- quit: jedb (Remote host closed the connection) 16:45:34 --- join: jedb (~jedb@199.66.90.113) joined #forth 16:50:41 --- quit: john_cephalopoda (Ping timeout: 264 seconds) 16:53:10 --- join: proteusguy (~proteusgu@cm-58-10-208-131.revip7.asianet.co.th) joined #forth 16:53:10 --- mode: ChanServ set +v proteusguy 17:03:49 --- join: john_cephalopoda (~john@unaffiliated/john-cephalopoda/x-6407167) joined #forth 17:13:38 --- join: rdrop-exit (~markwilli@112.201.168.172) joined #forth 17:18:32 Good morning Forth afficionados :) 17:21:50 --- quit: fftww (Quit: WeeChat 1.9.1) 17:24:30 --- quit: dddddd (Remote host closed the connection) 17:27:07 --- join: tabemann (~travisb@rrcs-162-155-170-75.central.biz.rr.com) joined #forth 17:28:12 hi rdrop-exit 17:29:35 Hi crc 17:29:59 <`presiden> morning rdrop-exit 17:30:19 Hi `presiden 17:57:56 --- quit: proteusguy (Ping timeout: 245 seconds) 18:00:05 hey guys 18:18:09 --- quit: dave0 (Quit: dave's not here) 18:29:52 Hi tabemann 18:30:19 lesson to self - if your test code is crashing all over the place, it may be the test code that is buggy, not the code being tested 18:30:56 my damn deque actually had like only one bug in it - but the test kept on crashing for reasons due to the test itself and not the deque code 18:31:57 I kept on looking closely at the deque code and aside from that one little bit it all looked correct, yet for some reason the test always segfaulted 18:32:17 ouch 18:33:12 and it was the stupidest of bugs too - I wrote [CHAR] " SPACE when I meant to write [CHAR] " EMIT SPACE 18:38:45 KipIngram: nope, i mean group minds 18:39:25 KipIngram: like those ant robot, a single unit has not too much computing , but with lots of them, they could build a network which has group minds 18:39:47 sounds like socielism :D cc mechaniputer 18:40:57 are we supposed to read a positive or negative connotation into "socialism" here 18:41:05 lol 18:44:53 --- join: nighty- (~nighty@b157153.ppp.asahi-net.or.jp) joined #forth 18:49:44 bbl 18:49:52 --- quit: rdrop-exit (Quit: Lost terminal) 18:54:11 --- quit: tabemann (Ping timeout: 245 seconds) 19:20:45 --- join: proteusguy (~proteusgu@cm-58-10-208-131.revip7.asianet.co.th) joined #forth 19:20:45 --- mode: ChanServ set +v proteusguy 19:37:11 --- join: gravicappa (~gravicapp@h109-187-217-49.dyn.bashtel.ru) joined #forth 19:42:22 <`presiden> hivemind robot 19:55:18 --- join: tabemann (~travisb@2600:1700:7990:24e0:78df:6a9:450a:b439) joined #forth 20:26:16 --- quit: proteusguy (Ping timeout: 245 seconds) 20:34:27 --- join: rdrop-exit (~markwilli@112.201.168.172) joined #forth 20:34:34 back 20:49:06 wb 20:49:19 thx 20:50:46 I wish these sriracha rice crackers were either cheaper or in larger containers 20:56:36 --- join: proteusguy (~proteusgu@cm-58-10-208-131.revip7.asianet.co.th) joined #forth 20:56:36 --- mode: ChanServ set +v proteusguy 20:57:13 hey 20:57:56 tabemann: rice crackers? 20:58:10 yeah 20:58:22 what do you mean by that? 20:59:11 https://en.wikipedia.org/wiki/Arare_(food) 21:03:38 --- join: dave0 (~dave0@223.072.dsl.syd.iprimus.net.au) joined #forth 21:04:08 re 21:30:35 --- quit: groovy2shoes (Quit: moritura te salutat) 22:01:50 --- quit: proteusguy (Ping timeout: 240 seconds) 22:45:55 --- join: [1]MrMobius (~default@c-73-134-82-217.hsd1.va.comcast.net) joined #forth 22:47:30 --- quit: MrMobius (Ping timeout: 240 seconds) 22:47:30 --- nick: [1]MrMobius -> MrMobius 22:56:33 --- quit: dave0 (Quit: dave's not here) 23:09:26 --- join: proteusguy (~proteusgu@cm-58-10-208-131.revip7.asianet.co.th) joined #forth 23:09:26 --- mode: ChanServ set +v proteusguy 23:45:53 --- join: dddddd (~dddddd@unaffiliated/dddddd) joined #forth 23:59:59 --- log: ended forth/19.03.04