00:00:00 --- log: started forth/20.05.23 00:00:28 jsoft, the G series looks to have the speed of the F and the low power of the L 00:08:13 --- join: xek joined #forth 00:19:26 --- quit: xek (Ping timeout: 265 seconds) 00:23:42 tp, hmm 00:23:55 I have an L already, in an easy to use dev board setup already tho 00:25:23 ahh 00:25:31 me too 00:26:05 but the newly released 'G' model looks to combine the best parts of the F and L 00:26:16 the L is slow, 32MHz max 00:26:33 the G takes it back up to 48MHz 00:26:57 the 48Mhz does not really bother me 00:27:09 I have never come close to needing 48Mhz for anything 00:27:19 not in low power devices anyway 00:27:34 jsoft, it bothers me, I actually run my 48MHz STM32F051 at 72 MHz 00:28:02 Why tho? 00:28:10 i used to run it at 96Mhz but couldnt write to the Flash at that speed 00:28:14 What do you need that many Mhz for? 00:28:16 SPEED 00:28:21 To do what? 00:28:30 develop 00:28:33 lol 00:28:52 seriously 00:29:11 how does Forth load programs ? 00:29:31 serially as it compiles them 00:29:41 the faster the cpu, the faster that can happen 00:30:16 my projects run at 48MHz or less, but I *develop* at 72MHz 00:30:21 Ok yes, but back after all this 'development' is done, it does not need 72 or 96 Mhz 00:30:24 or 48 Mhz 00:30:34 true 00:30:35 Well at least in my case 00:31:19 and because all the timing is via the systick, I only change that with the clock for the actual standalone project 00:36:03 Hmmm 00:36:39 and I agree totally, I dont need the speed in the real world, even 8mhz is planty 00:36:53 --- quit: dys (Ping timeout: 246 seconds) 00:37:03 I only require 72Mhz for development 00:41:24 Yeah I think I need to get into some L0 business 00:41:35 Fuck the complications, it can lick my dick 00:41:39 I will win 00:42:04 what complications, it's all extra FUN! 00:42:34 I dunno, I seem to remember you saying Lx series are a nightmare 00:43:07 no, I may have said that they have a lot of extra low power stuff to configure tho 00:43:23 Yeah, and doing such is a nightmare 00:43:23 I sure hope I didnt use the word 'nightmare' 00:43:33 Well I dunno the exact words 00:43:46 But that was the gist of it 00:44:00 like anything new, once one assimilates the knowledge and experience it's easy 00:44:18 I'm going to make then l0 my bitch :P 00:44:36 for instance, I'm a bit bored with the F0 series as I know it well enough now, there isnt a lot I have to learn with it 00:44:54 in no time at all youll be bored with the Lo 00:44:57 I don't know dick about the f0 either.. I guess it computes the things 00:45:01 then it's time for a "M" 00:45:44 jsoft, hows your 'clocl' project going ? 00:45:47 clock 00:46:02 Yeah i've done the pcb up, I just need money to go produce it 00:46:24 I've been paying out the ass for other things lately 00:47:17 tyres and chains, child support, beer ? 00:47:29 speeding fines ? 00:47:47 tyres, yep 00:47:52 wofs, brakes 00:47:57 child support as usual 00:48:01 beer 00:48:05 well, bourbon 00:48:14 and obviously, meat 00:48:54 ah yes, gone cannibal yet due to the shortage of beef ? 00:49:59 our local beef processor employed 1500 most on furlough now, plant shut down 00:50:06 due to Coronavirus 00:53:08 There is no shortage of beef 00:54:24 What is furlough? 00:54:47 it's like a unpaid holiday 00:54:51 oh 00:54:56 Fark 00:55:11 Well there does not seem to be a bump in the beef over here anyway 00:55:13 Thankfully 00:55:15 youre still employed, still have a job, just not working and no money 00:55:39 it's an American term I think 00:56:27 Not sure I get ya 00:56:54 jsoft, move this chat to #mecrisp ? 00:57:09 apologies for our off topic chat folks 00:58:48 It's tp's fault 01:59:52 glocal 01:59:59 lobal 02:00:30 veltas, having a bad dyslexia day ? 02:00:49 Is this channel actually strict about being on-topic? 02:01:07 veltas, it is but in a non obvious way 02:01:35 I understand if you come in here and just blogpost but if a conversation naturally evolves from forth-related discussion then I would generally not expect complaints 02:01:51 for instance no one will stop you if you rant endlessly off topic, but anyone who does will wind up in a lot of ignore lists 02:02:38 I've noticed people tend to talk about ignore lists more than they apply them 02:03:07 people here are very friendly and wont stop you, but the forthers who are only interested in Forth will prevent you filling up their logs with extranious off topic content by ignoring you 02:03:28 If you say so 02:03:37 it's only my theory 02:05:05 My theory is people only react to stuff that annoys them, not stuff that bores them 02:05:44 if you say so :P 02:06:03 It's only my theory 02:06:20 touche 02:06:29 Actually it's a hypothesis since I have not tested it 02:07:33 Talking of Forth, I have input working and am now working on pictured numerical output 02:07:58 nice work! 02:08:09 Another year and I'll be able to add numbers together interactively 02:08:14 at this rate 02:09:08 RAD! 02:09:13 At 4407 bytes so far 02:09:43 on a z80 ? 02:09:46 Yes 02:14:18 tp: https://pastebin.com/8NukERN0 02:15:49 veltas, what is that ? 02:16:02 soesnt look like assembly ? 02:16:05 doesnt 02:16:21 it's been 30 years since I did Z80 assembly 02:16:23 It's forth colon code written in assembly directives 02:17:13 ill take your word for it :) 02:34:46 --- quit: rdrop-exit (Read error: Connection reset by peer) 02:45:04 --- join: rdrop-exit joined #forth 03:04:33 tp: https://pastebin.com/7MkXDNad that look more familiar? 03:05:48 all except OR A 03:07:08 --- quit: rdrop-exit (Ping timeout: 265 seconds) 03:07:28 --- join: rdrop-exit joined #forth 03:07:48 veltas, yes, that looks familiar 03:08:16 dave0: Clears the carry flag 03:12:22 z80 has more features than 6502 :-) 03:12:43 veltas: are you english? 03:12:45 6502 barely has more than 1 register 03:12:45 Yes 03:13:42 veltas: i read on wikipedia that zx spectrum was popular in europe and it had z80... but commodore 64 was popular in america and it had 6502 03:13:52 Yes that's right 03:13:58 C64 was popular here too though 03:14:07 ah 03:14:21 We never had a video game crash like America either 03:14:33 my friend had a C64 and it had boulderdash, the best game ever :-) 03:15:33 The 6502 was popular here too, we had a 2MHz 6502 in the BBC Micro, which was pretty fast 03:15:46 A lot of schools had one 03:16:58 3.5MHz (which the ZX Spectrum came with) will outpace a 1MHz 6502 easily, but the video on the Spectrum is much more limited and inherently slow to access, so C64 games tend to have better/faster graphics 03:17:55 2MHz 6502 is more comparable. Spectrum could have made pretty good spreadsheet platform or something but all anyone remembers/owned is the games. 03:18:44 --- quit: rdrop-exit (Ping timeout: 265 seconds) 03:19:04 --- join: rdrop-exit joined #forth 03:21:10 What would you call a word that does BASE @ HEX . BASE ! 03:21:29 HEX. I suppose 03:21:58 There should be some stack manipulation in there sorry 03:22:08 BASE @ SWAP HEX . BASE ! 03:43:23 --- join: TCZ joined #forth 04:04:18 although I don't have a BASE variable, I name my equivalent $. 04:04:22 : u. ( u -- ) 10 x. ; 04:04:23 : $. ( u -- ) 16 x. ; 04:04:23 : %. ( u -- ) 2 x. ; 04:05:43 That's a much better name! 04:05:52 Thanks rdrop-exit 04:06:05 my pleasure 04:06:31 I think for my version I would use #. to print a decimal explicitly 04:06:40 I am using BASE since I'm still aiming for Forth 2012 04:07:38 #. is used in some Forths and OpenFirmware IIRC 04:07:55 For something else or for what I just said? 04:08:48 for decimals (although I don't remember if they use it for signed or unsigned decimal) 04:10:58 I suppose unsigned, we already have . for signed, I'm confusing with # being used as a prefix 04:11:33 (I just woke up from a nap) c[] 04:12:31 u. for unsigned decimal, . for signed decimal for printing 04:13:12 # 123 is used for decimal input in Open Firmware 04:13:47 Interesting 04:14:11 I use % 101110 for binary input 04:14:20 $ ffff for hex input 04:14:27 That syntax makes more 'sense' than adding the complexity into the number interpreter 04:14:37 Oh well 04:15:32 Would just entering a number get interpreted correctly? 04:16:26 # 123 is more cluttered then plain 123 but it means you don't have to do number interpretation after searching the entire dictionary which is very slow 04:16:37 Yeah I was just thinking that 04:18:14 in my Forths I don't have BASE, but I only check for decimal after a failed dictionary lookup 04:18:53 It would make the interpreter logic simpler to just remove numbers, and require # $ et al 04:19:03 But not much simpler 04:19:27 I'll consider it though if I ever make my own flavour 04:20:19 I compromised, decimal input doesn't need a prefix and therefore is slow (but uncluttered) while other bases require a prefix, $ for hex, % for binary 04:20:56 : $ ( -- u ) word 16 unsigned ; interpreted 04:20:57 : % ( -- u ) word 2 unsigned ; interpreted 04:20:57 : $ { -- }( -- u ) &' $ lit, ; directive 04:20:57 : % { -- }( -- u ) &' % lit, ; directive 04:22:26 (all unstandard of course) 04:23:47 (directive is a compilation only immediate) 04:24:47 (interepreted is an interpretation only word) 04:26:12 unstandard like the uncola :) 04:27:25 & is my name for POSTPONE 04:28:27 &' is a variant of POSTPONE that "postpones" the normal interpretation behavior of a word (instead of the normal compilation behavior) 04:29:47 As you can see from the above my dictionary lookup is non-standard as well 04:30:39 I use the word LOOKUP which takes a parameter, e.g. interpretation lookup 04:30:50 and e.g. compilation lookup 04:31:23 Nice 04:32:05 I explain the concept in an old reddit post (although I've changed some of the word names since that post) 04:32:16 just a sec, I'll find the link 04:32:50 All makes sense so far 04:33:07 https://www.reddit.com/r/Forth/comments/9izdtq/a_simple_approach_to_dual_words/ 04:34:10 I use the above instead of having a STATE variable 04:38:32 number base prefix words such as $ % (and your #) are prime candidates for dual behavior 04:41:28 since normally you want them to do one thing during interpretation and another during compilation, unless you're willing to give the compilation version another name, e.g. [#] [$] etc... 04:43:15 in normal Forth, such things would require words that change their behavior depending on the value of the STATE variable which opens up a whole can of worms 04:45:12 --- quit: TCZ (Quit: Leaving) 04:45:20 I'd rather not bother with having the STATE variable in the first place, or a BASE variable for that matter 04:47:19 (all the above is unstandard of course) 04:50:06 Of course 04:51:05 I don't have a problem with non-standard at all, I just want to produce a standard forth as a lowest-common-denominator approach. 04:53:15 I understand we're you're coming from, I sorta of gave up on standard Forth a long time ago since I have no need to run any of my Forth code on other than my own Forths 04:53:25 * where you're coming from 04:54:58 Okay I think I understand your writeup, I do like that approach 04:56:13 I find it leads to a better factoring of the outer interpreter, the compiler, and the interpreter than the STATE-based approach. 04:56:55 Just a sec, I'll dig up a related Chuck quote. 04:58:59 "Don't set a flag, set the function!" -- Chuck Moore, Thinking Forth 05:00:44 there's another, just a sec 05:02:14 "Choose the control structure that most closely matches the control-flow problem" -- Chuck Moore, Thinking Forth 05:04:18 : ] ( -- ) [^] dispatcher invokes compiler ; 05:04:26 : [ { -- } [^] dispatcher invokes interpreter ; directive 05:05:00 : interpreter ( -- ? ) 05:05:00 interpretation lookup if >code execute then; 05:05:00 decimal ; compiled 05:05:12 : compiler ( -- ? ) 05:05:12 compilation lookup 0= if decimal lit, then; 05:05:12 dup immediate? if >code execute then; 05:05:12 >code compile, ; compiled 05:07:24 If I were to always use a # prefix for decimal input, I could get rid of the decimal conversion attempt on unsuccessful lookup as you mentioned earlier 05:09:48 But I eventually decided to compromise on decimals to avoid clutter 05:10:24 IIRC Open Firmware always use base prefixes, even for decimals 05:11:51 My outer interpreter on my current host Forth looks like this: 05:11:59 : outer ( -- n/a ) 05:12:00 word try dispatcher intercept refresh recur ; compiled 05:14:58 Dinner's on the table, catch you later, keep on Forthin' and stay healthy :) 05:15:30 --- join: TCZ joined #forth 05:15:56 --- quit: rdrop-exit (Quit: Lost terminal) 05:23:23 --- quit: tolja (Ping timeout: 264 seconds) 05:23:55 go forth and multiply? 05:36:25 word 05:48:58 Is it weird I am adding double integer division before any kind of multiplication or regular integer multiplication/division 05:49:14 Well it's not weird because I am doing this in a 'as needed' basis, and this is the first thing that came up 05:59:10 it's a little weird that you needed double divide before you ever needed single anything, i guess 06:01:44 --- quit: TCZ (Quit: Leaving) 06:08:00 --- quit: dave0 (Quit: dave's not here) 06:10:44 cmtptr: Unfortunately this comes out of the definition of # 06:11:15 why doubke though? 06:11:37 https://forth-standard.org/standard/core/num 06:11:49 # uses double numbers 06:13:16 oh, this is pictured output stuff 06:14:33 i was thinking of the # numeric literal prefix you guys were talking about earlier 06:16:43 Ahhh 06:36:52 --- join: X-Scale` joined #forth 06:37:47 --- quit: X-Scale (Ping timeout: 264 seconds) 06:37:47 --- nick: X-Scale` -> X-Scale 06:45:26 --- quit: X-Scale (Ping timeout: 246 seconds) 06:45:57 --- join: X-Scale` joined #forth 06:46:34 --- nick: X-Scale` -> X-Scale 06:47:41 --- join: dddddd joined #forth 08:16:41 --- join: Zarutian_HTC joined #forth 08:45:31 --- join: TCZ joined #forth 08:48:56 --- quit: TCZ (Client Quit) 10:04:53 --- join: TCZ joined #forth 10:09:40 --- quit: TCZ (Client Quit) 10:25:56 --- quit: Zarutian_HTC (Ping timeout: 256 seconds) 10:33:27 --- quit: jsoft (Ping timeout: 256 seconds) 10:44:45 --- join: Zarutian_HTC joined #forth 10:48:44 --- quit: Zarutian_HTC (Read error: Connection reset by peer) 10:49:00 --- join: Zarutian_HTC joined #forth 10:53:16 --- quit: Zarutian_HTC (Ping timeout: 240 seconds) 11:04:38 --- join: Zarutian_HTC joined #forth 11:22:01 --- quit: kori (Read error: Connection reset by peer) 11:23:01 --- join: kori joined #forth 11:31:21 --- join: TCZ joined #forth 11:45:37 --- join: neuro_sys joined #forth 12:01:15 --- quit: TCZ (Quit: Leaving) 13:09:11 --- quit: Vedran (Quit: The Lounge - https://thelounge.github.io) 13:10:27 --- join: Vedran joined #forth 13:33:44 Hello. How are structures usually done in Forth? For example an array of structures or a binary tree? I don't find any info in the books... 13:34:06 --- join: TCZ joined #forth 13:49:30 andrei-n: Okay you are asking a lot of things, maybe start with one? 13:50:37 I assume you mean for standard forths, there is support for structures https://forth-standard.org/standard/facility/BEGIN-STRUCTURE 13:53:19 One typical way of doing an array of structures is with CREATE, i.e. CREATE TEST my-struct 80 * ALLOT 13:55:43 One way of doing a binary tree would be having a structure with left and right cells containing address of child node struct, or 0. This could be all located in an array like above, or each created with ALLOCATE 13:56:12 --- quit: Zarutian_HTC (Ping timeout: 260 seconds) 13:58:07 So to get a value in a structure you just count cells? 13:59:44 Do you understand how BEGIN-STRUCTURE works? 14:01:20 This is what e.g. C does as well, it knows the offset of everything in the struct. BEGIN-STRUCTURE gives you words that will add that offset to a given address 14:01:43 The name of the structure itself just gives you the total size of the structure 14:02:05 Is it standard? 14:02:37 I see it only in the gforth book... 14:04:08 andrei-n I just posted a link to the web standard 14:06:09 I understand, but it's something that doesn't seem to be mentioned in the books from forth.com, which I usually use. So, yeah, it's like named fields. 14:07:38 It's an optional section of the standard, and not all forths are standard or try to be. gforth does try though, and has its own older words for the same stuff as well 14:08:30 I would recommend reading gforth's manual as you are, because it does a good job explaining a lot of this stuff. 14:09:24 --- join: Zarutian_HTC joined #forth 14:10:18 Lads, I have been sabotaged by C 14:10:38 veltas, C is like that ;-) 14:11:09 Yeah, thanks. I think I'll use the gforth method, I won't test it on every system anyway. 14:11:43 andrei-n, interestingly one of the first things C users ask about here is structures 14:11:58 I just caught myself using CHARS while doing address arithmetic, which is totally pointless in Forth 2012, the addresses are just addresses and bytes are 1. So even Forth 2012 doesn't need that. 14:12:27 C doesn't even have 'addresses', as ##C will tell you 14:13:15 veltas, no, the C way seems to be to make all difficult embedded things into structures 14:13:31 I have the same problem with assembly, not only forth. I don't think counting bytes is the best method. 14:13:39 --- quit: TCZ (Quit: Leaving) 14:13:46 and combine all bitfields into a cell so as to write them all at once 14:14:35 There's no "best method", it's situational, and using assembly (probably forth too) helps C programmers realise they were viewing their software through a filter of "what works in C" 14:14:48 veltas, well put! 14:16:01 When I was starting with Z80 I would talk to other 8-bit programmers who would blow my mind about 8-bit performance programming 14:16:14 So what do forth people use instead of structures? Accessor functions? 14:16:30 and C isn't the low level, on the baremetal OS that C users believe, it's more high level for systems, and it has difficulties with low level, mainly bitfields etc\ 14:17:07 I would have a variable somewhere to store something needed in a critical routine, they would just use literals in their machine code and then *modify the literals in place* so the code could run faster 14:17:10 andrei-n, whats your main reason for wanting structures, is it to deal with low level stuff like bitfields ? 14:18:12 tp, to implement binary trees, asts, and other complex data structures. 14:19:42 andrei-n: I think structures are a good fit for that 14:20:29 But... are complex data structures a good fit for the problem? 14:21:29 Sometimes it can be. If I need something like this I'd like to be sure that it's something that I can do. 14:22:04 I know exactly the feeling and I wish I could say more about using this in practice 14:22:37 I have not done 'serious' programming in Forth yet, so I will not pretend to answer with integrity on whether it can be approached 'nicely', although I believe it can 14:23:26 Certainly it's possible, you and I could both agree you could do this kind of programming in almost any language and Forth would not prevent it, but whether it's reasonable is another thing 14:24:43 andrei-n, Im an embedded guy, veltas is the best to answer your query, so I'll just sit in the background now 14:25:50 andrei-n: http://www.figuk.plus.com/articles/jb/struct.htm might be interesting 14:26:19 rdrop-exit has given me the most useful indications that this works, although their environment might be quite different to gforth 14:26:29 Definitely good to ask them when they're around 14:28:03 I know I will do a 'serious' project in Forth at some point and have better answers, I am still very new to Forth really. :) 14:29:10 thanks. I also would like to do a serious project... 14:31:31 There are a lot of good candidates 14:31:44 Forth tiling window manager anybody? 14:32:13 I wanted to some kind of text editor, like emacs. 14:32:20 --- quit: gravicappa (Ping timeout: 246 seconds) 14:32:36 Forth numpy port 14:32:56 andrei-n: Text editor is definitely on my list 14:33:17 tiling window manager also would be awesome. After all there are already lisp-based wms. 14:33:31 why not a forth-based one. 14:33:53 Well if anybody writes anything like these suggestions and it's not bloated garbage or nasty keybindings I will use it 14:34:00 WM, editor, etc 14:34:09 In forth I mean 14:34:17 What's great about text editors is that you can extend them with programming languages, another one of my hobby subjects. 14:36:02 That's why I got interested in Forth. Languages use the stack. Forth also. And you can manipulate the stack. This way you can do cool and interesting things. 15:22:43 --- quit: andrei-n (Quit: Leaving) 15:45:23 * klys recently picked up a copy of F83 15:45:47 it works on dos in pcem, and I made a list of all the words 15:46:16 I'm sure it's a much shorter list than comes with more modern forths 15:47:03 now I would like to classify the words into seven categories: app dat net sys etc doc src. 15:47:24 troube being that I don't know hardly any of them nor what they do. 15:47:32 trouble being that I don't know hardly any of them nor what they do. 15:52:22 --- join: jsoft joined #forth 15:53:50 so I am reading here: http://forth.sourceforge.net/std/fst83/fst83-12.htm 16:26:13 hey guys 17:29:39 hi tabemann 17:30:01 hi forthers 17:31:00 veltas, interesting that you said 3.5mhz z80 is like 2mhz 6592. Ive only ever heard 3-4x difference 17:31:14 hey guys 17:32:54 hey tabemann how goes Zeptoforth ? 17:33:00 --- join: dave0 joined #forth 17:33:11 busy working on my emit capture code 17:33:48 "emit capture code" sound interesting 17:34:25 what it does is allow the user to specify output data to compare against, with it signaling a failure if it does not match properly 17:35:01 and it, well, has some bugs itself that I need to fix 17:37:35 tabemann, aha part of your unit test stuff ? 17:38:11 yes 18:19:05 --- join: boru` joined #forth 18:19:08 --- quit: boru (Disconnected by services) 18:19:10 --- nick: boru` -> boru 18:22:12 --- quit: reepca (Read error: Connection reset by peer) 18:24:20 --- join: reepca joined #forth 18:24:23 --- join: iyzsong joined #forth 18:24:57 tabemann: capturing output for automated testing sounds useful; I'll borrow the idea for my testing system 18:28:15 --- join: rdrop-exit joined #forth 18:29:34 i bought a copy of Test Driven Development in Embedded C 18:30:24 hopefully the concepts apply to other languages 18:43:03 --- join: Zarutian_HTC| joined #forth 18:43:31 --- quit: Zarutian_HTC (Read error: Connection reset by peer) 18:50:51 good morning Forthwrights c[] 18:51:13 goodnight! 18:51:23 sleep tight 18:51:54 i will sleep as tight or as loose as i want thanks 18:52:29 :)) 19:26:40 --- quit: kori (Read error: Connection reset by peer) 19:49:26 back 19:59:43 --- quit: rdrop-exit (Ping timeout: 265 seconds) 20:04:11 --- join: rdrop-exit joined #forth 20:30:24 --- quit: _whitelogger (Remote host closed the connection) 20:33:28 --- join: _whitelogger joined #forth 20:39:24 --- quit: _whitelogger (Remote host closed the connection) 20:42:18 veltas, I just checked, Open Firmware uses d# ( -- n ) for decimal number input 20:42:27 --- join: _whitelogger joined #forth 20:57:40 --- quit: reepca (Read error: Connection reset by peer) 20:57:56 --- join: reepca joined #forth 21:01:30 --- quit: jedb (Remote host closed the connection) 21:08:17 --- join: jedb joined #forth 21:27:07 --- join: tabemann_ joined #forth 21:29:49 --- quit: tabemann (Ping timeout: 260 seconds) 21:31:56 rdrop-exit: reminds me. Was FCode of Open Firmware a splendid idea? 21:35:29 Seemed great to me, but anything Forthy is a hard sell to the general computing world no matter how good 21:54:10 --- quit: dddddd (Ping timeout: 272 seconds) 23:01:21 --- nick: tabemann_ -> travisb 23:01:30 --- nick: travisb -> tabemann 23:04:43 for some reason people cannot wrap their brains around something being both A) low level and B) dynamic, interactive, and reflective at the same time 23:08:49 they're too used to relying on libraries for any heavy lifting 23:12:24 --- quit: _whitelogger (Remote host closed the connection) 23:14:51 I blame the Russians 23:15:27 --- join: _whitelogger joined #forth 23:15:41 --- join: andrei-n joined #forth 23:28:39 most programmers today have too much to unlearn to get anything out of Forth, they're too busy trying to contort Forth to conform to they're biases thereby killing the goose without ever grokking its true nature 23:28:51 * their biases 23:31:44 What would you recommend if someone wants to learn Forth? 23:32:12 write lots of Forth ? 23:32:56 rdrop-exit says that it's not enough... 23:33:24 ignore the standard, focus on semantics not syntax 23:34:18 What does it mean? Can you give an example? 23:35:34 When trying to understand a word, focus on understanding the code that gets layed down when it is compiled 23:36:16 Forth has no syntax to speak of 23:37:38 This is why syntactical specifications of Forth seem convoluted 23:41:02 Start with an understanding of the various threading models 23:41:40 Indirect Threaded, Token Threaded, Subroutine Threaded, Bytecoded VM, etc... 23:41:48 Direct Threaded 23:42:41 Pick a Forth, understand which threading model you're dealing with 23:43:25 For any word that confuses you, look at its source, then look at its object code (or intermedate code) 23:43:41 * intermediate 23:44:01 Sounds complicated... 23:44:26 Understand the subtleties of the different "times", interpret time, compile time, execution time 23:45:08 It really isn't complicated, although it may seem so at first 23:46:50 The threading model has a major impact, it "colors" the entire Forth 23:47:42 There's a good article from Brad Rodriguez (IIRC) that explains the different threading models 23:49:15 The book Interpretation and Instruction Patch Coprocessing covers all the threading models (even including LISP's) in the first couple chapters 23:49:55 Forth is easiest to understand from the bottom up 23:50:44 https://www.bradrodriguez.com/papers/moving1.htm 23:54:19 Thanks. 23:54:32 my pleasure, hope that helps 23:59:59 --- log: ended forth/20.05.23