00:00:00 --- log: started forth/19.09.04 00:27:25 --- join: mtsd (~mtsd@77.110.61.100) joined #forth 00:53:13 --- quit: gravicappa (Ping timeout: 264 seconds) 00:54:10 --- join: gravicappa (~gravicapp@h109-187-24-48.dyn.bashtel.ru) joined #forth 01:16:09 anyone here experienced with gforth and can help me with parallel tasks? I'm trying to write a script to exec 2 "threads" at the same time, I can upload my unfinished script if needed 01:27:08 tp: good question 01:27:26 not sure how involved chuck is with greenarrays any longer though? 01:28:01 they moved away from colorForth and he's just making esoteric forths 01:28:23 :S 01:28:59 hope someone can release all of Chuck's source as public domain when he eventually leaves us 01:33:22 pointfree: if you need to organise a group buy or something, count me in 01:36:05 WilhelmVonWeiner, youre young so perhaps in 20 years people can design a chip online and have it made in a fab automatically and then the chip is posted to them 01:36:57 WilhelmVonWeiner, but if not, perhaps the ga144 will be as rare as the transputer and as expensive as a Novix 01:38:02 I'ts possible by then the World will know that Mores law ended 20 years before and only parallelism is the future 01:38:36 perhaps by them Chuck will be hailed as a visionary with the Ga144 01:46:43 I do think Chuck will be rediscovered in the future 01:46:57 when civilisation is endangered by abstraction and complexity 01:47:15 me too 01:47:17 I don't want my NeuraLink brain chip running 30,000,000LOC 01:48:02 Or C 01:48:15 No 'C' programmers allowed near my brain chips 01:48:33 if it has 30,000,000LOC it probably will be C, alomg with 10,000 globals 01:49:18 it'll be a bootloader 01:49:28 which loads a stub kernel 01:49:58 the stub cryptographically verifies the patch for my latest BrainKern GPL Edition operating system 01:50:07 leaving people looking like zombies for 10 minutes while it updates the virus and trojan scanner ? 01:50:13 when the OS boots it lauches SystemB init daemon 01:50:40 the SystemD init you mean ? 01:50:51 SystemB executes the Brain.js daemon and runs a React based web frontend for my brain 01:51:00 java! 01:51:03 SystemB, because it's in the Brain 01:51:12 I'm glad Ill be dead from old age by then 01:51:19 of course! 01:51:30 don't count your chickens yet 01:51:49 the Tesla Alliance will dig up your corpse and jam a chip right into your brain stem 01:52:14 to work on Tesla production lines until your bones disintegrate 01:53:06 perhaps I'll get 'true blood' and alconel bones ? 01:53:16 hey, some very interesting reading 01:53:20 http://www.safetyresearch.net/blog/articles/toyota-unintended-acceleration-and-big-bowl-%E2%80%9Cspaghetti%E2%80%9D-code 01:53:37 http://www.safetyresearch.net/Library/BarrSlides_FINAL_SCRUBBED.pdf 01:53:50 basically it's about why to never buy a Toyota 01:54:27 that's the car that accelerates violently and nothing can stop it, including the brakes 01:55:11 toyota blamed everything but their car when a sued after woman was killed driving one 01:55:44 turned out the EMU was spaghetti code, and the watchdog was patted by the systick 01:56:12 hahaha 01:56:15 that's bad 01:56:25 those articles are scathing 01:56:44 the emu C source also had 10,000 global variables 01:57:46 basically critical processes in the emu could die and nothing new about it, the car just kept going 01:57:49 wow, Koopmana was involved 01:58:06 yeah, hes the author of the scathing article 01:59:28 welcome to abstraction and complexity in critical systems .... 02:01:53 I don't know if 10,000 globals are inherently bad 02:02:17 I mean here it's justified to be weary 02:02:32 but you could have a well architected system with n number of globals 02:03:12 you'd know far more about that than me, Im a electronics technician 02:03:17 --- quit: dys (Ping timeout: 246 seconds) 02:03:31 I mean, the stack is global :^) 02:03:32 Koopman seems to think it's bad 02:04:28 --- join: dys (~dys@tmo-099-44.customers.d1-online.com) joined #forth 02:05:17 in general yeah 02:05:21 I dont know enough computer theory to debate it :) 02:05:24 100% bad in concurrent systems 02:06:01 does a Forth stack have any advantage over random memory storage ? 02:06:12 what do you mean 02:06:32 such as reclaiming non used memory in C ? 02:07:21 and some Forth chips have dedicated stacks in hardware 02:07:44 I don't know if I get the question 02:07:45 sorry 02:07:53 i guess Im trying to say that perhaps Forth stacks arent always the same as ram ? 02:08:11 even tho the Forth stacks are global 02:09:09 the question is no doubt poorly put, so that will be my fault, apologies 02:09:33 how does the GA144 handle globals ? 02:09:33 I use the stacks for getting locals out the way 02:09:44 globals in forth are just cells 02:09:50 yeah I know 02:09:51 same as any lang 02:09:58 ga144 has 512 words of RAM 02:10:09 512 of RAM ad 02:10:16 and 512 of ROM, iirc 02:10:18 but the ga144 has 144 lots of 32 bytes of ram, theyre not global ? 02:11:06 WilhelmVonWeiner, I've been meaning to ask you about your ga144, you have a couple of chips and hand wired one to a protoboard ? 02:11:46 no I've only ever ran it in sim 02:12:04 because the schmartboard sucks and I don't know why I can't get serial working 02:12:32 ohhh 64 words of RAM sorry 02:12:51 512 instructions worth of RAM and ROM 02:13:04 as global memory ? 02:13:09 I knew what I was saying was inaccurate 02:13:13 tp: per chip 02:13:18 per computer 02:13:24 spread out over all the 144 cores ? 02:13:39 oh per core ? 02:13:49 so the 144 has 144 individual RAM slots of 64 (18-bit) words 02:14:42 thats what I thought but "my recollection of 32 bytes" was wrong 02:15:13 and those ram slots are only available to each core ? 02:16:00 i wonder if all the resultant passing of data between cores makes it slow like a mesh network ? 02:16:39 but the sales stuff claims really high instruction execution rates 02:17:29 as usual one can't tell sales lies from reality until one has a real chip and starts coding and observing 02:22:43 yeah 02:24:30 I started learning that back in the 70's when reading the positives in component datasheets only to later find that they just didnt mention the negatives 02:25:07 "accentuate the positive, HIDE the negative" 03:21:48 --- join: dave0 (~davezero@069.d.003.ncl.iprimus.net.au) joined #forth 04:17:30 --- quit: ryke (Ping timeout: 245 seconds) 04:45:23 --- join: xek (~xek@user-5-173-144-254.play-internet.pl) joined #forth 04:48:28 --- quit: rdrop-exit (Quit: Lost terminal) 05:22:02 --- quit: xek (Remote host closed the connection) 06:23:07 --- quit: mtsd (Quit: Leaving) 07:08:44 --- quit: dave0 (Quit: dave's not here) 07:26:34 --- join: dddddd (~dddddd@unaffiliated/dddddd) joined #forth 08:01:06 --- join: inode (~inode@unaffiliated/inode) joined #forth 09:12:52 --- join: wildtrees (~wildtrees@unaffiliated/wildtrees) joined #forth 09:13:43 --- quit: wildtrees (Max SendQ exceeded) 09:14:18 --- join: wildtrees (~wildtrees@unaffiliated/wildtrees) joined #forth 11:27:52 --- join: lchvdlch (~nestr0@pdpc/supporter/active/lchvdlch) joined #forth 13:20:56 --- quit: inode (Quit: ) 13:22:48 --- join: WickedShell (~WickedShe@159-118-128-145.cpe.cableone.net) joined #forth 13:30:33 --- quit: gravicappa (Ping timeout: 244 seconds) 14:08:16 --- quit: dys (Ping timeout: 244 seconds) 16:52:38 --- quit: john_cephalopoda (Ping timeout: 276 seconds) 17:05:38 --- join: rdrop-exit (~markwilli@112.201.162.86) joined #forth 17:06:01 --- join: john_cephalopoda (~john@unaffiliated/john-cephalopoda/x-6407167) joined #forth 17:22:30 --- quit: wildtrees (Quit: Leaving) 17:36:18 --- join: dave0 (~davezero@069.d.003.ncl.iprimus.net.au) joined #forth 17:42:14 --- join: tabemann (~tabemann@rrcs-162-155-170-75.central.biz.rr.com) joined #forth 18:48:04 Good morning Forth cognoscente :) 18:48:18 * cognoscenti 18:51:01 hey rdrop-exit 18:51:28 * tabemann is busy debugging his aligned-address version of hashforth 18:51:44 Hi tabemann 18:51:46 * tabemann was stuck for a while on getting some major bugs out of it 18:53:22 Sounds like fun ;) 18:54:35 I wonder whether this will result in a performance plus or minus on systems that don't require alignment 18:54:54 it's optimized to require realignment as infrequently as possible 18:55:30 e.g. on systems with 16/32-bit tokens it won't use 8-bit literals because they'd require realignment 18:59:09 okay, the coffee shop is closing, will bbl 18:59:38 Even if a system can handle unaligned memory access, there's usually a performance penalty 19:03:17 --- quit: tabemann (Ping timeout: 244 seconds) 19:06:38 good afternoon rdrop-exit, I'm more of a Forth cog myself 19:06:57 Hi tp :) 19:07:21 rdrop-exit, so whats new in your Forth world ? 19:08:58 Taking a break, two of my children that live overseas are in-country for a few weeks 19:09:15 in mine I finally got around to automatically adding a "project.includes.fs" file to my project builder. This file gets uploaded to the Forth chip before the "project.fs" file 19:09:38 cool, it's always great to catch up with ones children 19:10:30 the purpose of the "project.includes.fs" file is to hold all the ugly low level config stuff, much like a C "include" file 19:11:09 Cool 19:11:33 thius leaves the main project file uncluttered, high level and looking like a PDL 19:12:24 unlike C tho, I'll include both files in any projects I release so a programmer can read the contents of the low level stuff 19:12:38 nice 19:13:19 we will see how well it works until I come up with a better idea 19:13:26 Is the Forth you're using file based, or does it also handle source in blocks? 19:13:37 file based on a pc 19:13:42 I see 19:14:12 I've been thinking about blocks with regard to writing some SD card Words 19:14:44 I store source in blocks (i.e. screens) even on a PC 19:15:01 Old habits :) 19:15:11 I do all my design and editing on a PC where I have all my development tools but the source code is still uploaded via a serial terminal (automatically) 19:15:36 because I started learning Forth in 2014 I missed all the block stuff 19:16:12 even tho I did build a floppy based block file system for a Rockwell 65F11 back in 1987 19:16:19 I converted to file-based forth for a while, but eventually when back to blocks 19:16:39 but I only did the hardware back then, which used a floppy controller chip 19:17:18 The file extension I used to use for Forth source was ".4th" 19:17:30 Ive built my Forth development system around unix so I'm happy with files 19:18:09 I only used ".fs" because VIM has a color syntax for Forth .fs files 19:18:14 My host is Posix-based (i.e. Unix) 19:18:20 and I like color syntax highlighting 19:18:29 nice 19:19:12 I see, I wonder why they use ".fs", ".4th" makes more sense to me 19:19:12 my system is built around gnu screen and uses remote connections to do everything 19:19:20 yeah, me too 19:19:38 but I'm a tech, not a Forth purist so I didnt care back then 19:19:45 Mine has a serial terminal task built into the host Forth 19:19:56 personally I much prefer 4th myself 19:20:44 youre mainly Forth on larger hosts like pc's arent you ? 19:21:04 not many here use Forth on small mcu's 19:21:08 like me 19:22:03 The host Forth is an umbilical aka tethered Forth development environment 19:22:51 It's on a unix PC but it's for talking to targets 19:22:51 I recall now :) 19:23:16 one of mt systems is tethered 19:23:21 mt = my 19:24:47 https://mecrisp-across-folkdoc.sourceforge.io/index.html 19:25:11 looking 19:25:31 Cool 19:26:04 of course I only use it, I didnt write any of that system, tho Ive added all the cmsis-svd stuff to it 19:27:17 the host is the ti Tiva (ARM) running mecrisp-stellaris and cross compiling for the target MSP430 19:28:12 The princicple is the same. 19:28:31 makes sense 19:29:15 I really like tethered Forths, especially when the target has only a couple of KB of Flash 19:29:27 My host Forth runs on Unices, it has two tasks, one is a user terminal + block editor, the other is a serial terminal. 19:30:24 On the host I can implement cross-assemblers for targets. 19:30:43 it sounds very versatile 19:32:27 I don't want to have to use a different host for each different target. 19:33:10 I can just put each cross-assembler in its own vocabulary 19:33:40 your design ticks all my boxes, same host, same UI, modular swappable targets 19:33:55 and of course ... unix 19:36:03 The whole thing is one "image" file, everything binary and source is stored in blocks within that one image. 19:37:17 a bootable image ? 19:38:15 No there a unix executable that loads the image. 19:38:26 * there is 19:39:52 I use Fossil for my code management and it has a similar strategy 19:40:33 It's persistent, everything's in one binary image, like what Chuck does. 19:40:42 so you have a 'stm32' image or a 'z80' image etc ? 19:41:34 I'm speaking of the development environment on the host side, i.e. on the Unix PC side. 19:41:53 --- join: tabemann (~tabemann@2600:1700:7990:24e0:69f9:c91f:661c:1ed4) joined #forth 19:43:10 It keeps everything in one binary image, i.e. it's persistent. 19:43:46 understand 19:44:00 There are no source files. 19:44:09 Just blocks 19:44:44 Everything is blocks 19:44:58 within the binary image 19:45:30 interesting 19:46:05 I used blocks on my first ever forth, one made by frank sargeant 19:46:40 The host dictionary is the first so many blocks, after that it's blocks used for storage of source or data. 19:47:00 so is your intention to have a 'image' per project or per mcu type ? 19:48:01 No one image for everything, think of it as a hard disk 19:50:20 I prefer files myself because I can then leverage other file based tools, such as Fossil, Gnuscreen,vim etc. But youre a programmer, I'm a technician 19:50:47 we have different views of our worlds, mine is hardware based 19:51:51 however in typical Forth thinking, you're building something unique, Im just using standard boring OSS tools 19:52:26 I can understand that. 19:53:30 Using external tools would require extra steps for me, dumping blocks to a file to use the external tools. 19:53:56 I work up to my level of competency, which is just connecting tools made by people like you :) 19:54:45 sure, your solution is pretty 100% Forth oriented I think 19:55:23 Yes, it's a little world onto itself. 19:55:46 there are degrees of 'forthiness' tho I think 19:56:23 Right. 19:56:46 in any C discussion group I'm a 'forth fanatic' that uses arcane stuff no one understands 19:57:06 here, I'm just that embedded guy using mecrisp-stellaris Forth 20:00:09 C has it's uses, particularly if you're on Unix, but C for embedded holds no attraction for me. 20:01:40 --- quit: dave0 (Quit: dave's not here) 20:01:45 same here 20:02:03 I used to use C in embedded over a decade ago 20:02:13 Unix on a target also holds no attraction for me 20:02:50 same here as I make small embedded devices for control, instrumentation, automotive etc 20:03:21 my gear doesnt need more than a cortex-m0 with 64K flash and forth 20:04:09 I'm also appalled and frightened by the behemoth support that C on embedded needs 20:04:46 My ideal is just a tethered Forth on a Unix host cross-assembling to targets. 20:04:58 all that stuff to do what I can do in Forth seems crazy 20:05:56 sometimes I like to have terminal access on a machine via my controller for debugging or fault finding, so I dont use a tethered Forth there 20:06:34 I don't necessarily want a Forth on the target, just a target-side monitor for the tether. 20:06:41 where I dont need that and have minuscule memory resources, a tether is the way 20:07:18 sure, a on target Forth can be a issue depending 20:07:28 it's nice to have both options 20:07:36 The tether monitor is all you really need to exercise the target. 20:07:53 which means a pc ? 20:08:05 I can use a android tablet for a terminal on site if needed 20:08:25 Sure 20:08:50 and you can build a terminal for monitoring into your tethered target I guess 20:09:01 that runs standalone without the tether 20:09:32 so may ways to achive a goal 20:09:58 Sure, all options are possible, from a minimal target-side tether monitor, to a full-blown Forth on the target. 20:10:50 one difference I guess is that my tethered system works with a virgin new target, no target side image is needed 20:11:03 and thats kinda cool 20:11:26 but thats because it's using JTAG 20:12:17 Yes, how much you put on the target is not pre-ordained, ultimate flexibility. 20:14:10 The main point of tethered development is that you don't need a fat forth on the target, you can put as much or as little as you want. 20:14:53 the other cool thing is the target 'appears' to have 64KB flash when in fact it only has minimal such as 1KB 20:15:47 yeah, although one can hardly call Forth 'fat' in this day and age when $1 mcus have 384KB flash and 20KB ram ? 20:16:03 Yes, all your headers and other overhead can be on the host, but you still have full interactivity. 20:16:15 and thats what I love 20:16:56 Ive ported all my 'on chip Forth' development environment to the tethered one, I didnt need to make any real changes 20:17:25 just the usual ie add hardware handshaking to the tethered host 20:17:26 I don't buy the "in this day and age" arguments, if you can do the same thing as the competition using less of everything that's a win. 20:17:39 as the tethered host isnt this workstation 20:19:13 thats a complex debate tho, emcompassing development time, time to market and unit costs for a few 20:20:37 I mean, your system would be awesome for a Paduak 10 cent mcu if you could read Chinese and were ok with 8 bits, a timer and a comparitor 20:20:53 and 1k flash 20:21:21 Sure, all other things being equal, doing more with less is a win. 20:21:28 but for another 39 cents you get 394KB, 32 bits, 60 peripherals etc with cortem-M 20:21:46 agreed 20:22:34 but things are rarely equal, especially if youre using Forth and theyre using C ;-) 20:22:57 The problem with many programmers today is that they can't hit more constrained sweetspots, they don't know any other way than the fat way. 20:23:20 just using Unix has given me unimaginable advantages over my windows using competition the last 15 years 20:24:18 A competent programmer with a tethered Forth can hit any sweetspot. 20:24:19 I couldnt agree more, complexity and massive resources have become the norm 20:25:57 my first C 'blinky' generated a 20KB 'blinky' binary 20:26:03 I couldnt believe it 20:26:26 lol 20:26:28 sounds like a compiler problem not a C problem 20:26:49 some embedded compilers would output less than 100 bytes for that 20:27:26 the C fans said 'you need to use -01' as a compiler optimiser so I did, the binary dropped to 300 bytes and didnt blink because it optimised my delay loop away 20:27:39 oops 20:27:50 did you mark the loop variable volatile? 20:28:06 so they said 'dont you know about the 'volatile' keyword? !!" 20:28:15 I replied ... nope 20:28:20 lol 20:28:28 thats the thing with C, it's complex 20:28:56 *sigh* nope 20:29:27 my tethered Forth uses a optimising Forth cross compiler and will produce a standalone blinky in 80 bytes 20:29:58 and no clever programming is needed, no optimising 20:30:52 sure, a programmer who thinks in assembly and knows the MSP430 backwards can do the same in 14 bytes, but he's using every trick in the book 20:31:49 what tricks? i know msp430 pretty well 20:31:57 *msp430 assembly 20:32:03 my 80 byte MSP430 blinky was compiled by a Cortex-M4 running Mecrisp-Stellaris Forth and 20:32:16 haham then youll know the tricks ;-) 20:32:38 :P 20:33:02 ya Ive seen it and its really cool :) 20:33:02 MrMobius, what the smallest blinky you can do for a msp430 ? blinking must be around 1 second and no wierd states left on any of the pins 20:33:39 my best assembly blinky for msp430 in assembly was around 80 bytes 20:34:14 and mecrisp-stellaris cross compiles a boring blinky to the same size, I fell inferior! 20:34:21 feel 20:34:46 ya that is neat. I was just curious what tricks those are. not doubting you 20:35:05 they arent my tricks, no way can I do that stuff 20:35:10 hmm. not sure I could beat you but havent tried 20:35:48 one was that the msp430 boots up with decent defaults and the second was that he used the watchdog as the blinky interval 20:36:08 if youre a programmer I think you could easily beat me, I'm a technician 20:36:22 Matthias Kock wrote the 14 byte msp430 blinky 20:36:25 Koch 20:37:36 he also wrote a 28 byte one for StM32F0 which is insanely small 20:37:49 my best was again about 80 bytes 20:38:33 cortex-m0 needs a bunch of startup config which ruins a small blinky 20:38:55 msp430 by comparison boots with it's watchdog enabled 20:39:56 gah 32C in here at my workbench today 20:40:23 so much for Winter, bye!! it was nice while you were here .... 20:40:49 winter? what's that? 20:43:28 holy moly 20:43:51 I got 24 bytes not counting disabling the watchdog 20:46:34 --- join: gravicappa (~gravicapp@h109-187-24-48.dyn.bashtel.ru) joined #forth 20:48:03 nice! 20:48:20 remember it has to run standalone on the chip and blink the led 20:49:09 the size of the actual binary bootable file is what we use as the size 21:38:15 https://bernd-paysan.de/gforth-manual/Pthreads.html 21:38:41 I found this "stop-ns" for timeout, but not sure how to use it 21:39:19 to run a task for X seconds 21:56:09 --- join: ryke (~Thunderbi@71-9-171-192.dhcp.jcsn.tn.charter.com) joined #forth 22:13:58 From what it says on that page, I guess you have the task that woke it up, put it back to sleep after X seconds using HALT 22:17:33 hmm 22:18:19 btw I tried this "2000 ms task" but not working properly (I think it's the same, like stop-ns) 22:20:55 "tasks neet to be activated or send an xt through initiate" 22:21:28 You're not activating a task, you're just creating one 22:21:39 ok sec I will show you my code 22:22:45 https://pastebin.com/s2N3Fzqf 22:23:06 the timeout there is running before executing the task 22:23:31 yeah I need to activate the task first, but not sure how to make it in the correct order 22:23:54 like for example if i change port to 82 , it should be stuck in timeout connection 22:24:21 but the "ms" timeout should stop after 2000 (2 seconds) to prevent the big timeout there for the connection 22:24:59 if I activate the task first: it will get stuck in timeout i think 22:27:35 I also tried like this: 22:27:38 task 22:27:41 Why are you redefining the word "task"? 22:27:42 1000 ms 1 (bye) 22:28:02 to call a task, like a thread or something, I think 22:28:16 I can call it anything 22:28:46 like calling a function 22:28:51 But task is already a defined word on that Pthreads page you linked to 22:30:06 when I write "task", it says Undefined word 22:31:22 Are these Pthreads words part of the base Gforth or do you have to load them? 22:31:58 I'm not sure mate cuz I didn't include them in "require", sec I will try 22:33:18 Since it's Unix specific maybe it's a loadable option 22:33:47 I have no clue when it comes to Gforth 22:34:56 https://stackoverflow.com/questions/40529171/where-are-pthreads-in-gforth 22:36:50 The GForth maintainers frequently post on comp.lang.forth you'll have better luck there 22:37:13 https://groups.google.com/forum/#!forum/comp.lang.forth 22:38:27 bbl 22:38:43 thanks mate :) I will check 22:45:06 --- quit: dddddd (Remote host closed the connection) 23:15:06 --- join: inode (~inode@unaffiliated/inode) joined #forth 23:59:59 --- log: ended forth/19.09.04