2024-04-22 00:00:40 Man, I want to reduce the RAM usage further 2024-04-22 00:00:49 but I dont think it's worth it 2024-04-22 00:01:06 I know I can put h0-7 elsewhere, and a-h as well 2024-04-22 00:01:09 as long as you don't skip factoring because of that is fine 2024-04-22 00:01:38 So I'm thinking I might implement an ethereum or bitcoin wallet since I'm already somewhat ways there 2024-04-22 00:01:42 the main point of forth for me is that it encourages abusing colon words because they're cheap 2024-04-22 00:01:55 are they cheap though? 2024-04-22 00:02:00 seems yes and no 2024-04-22 00:02:03 cheaper than a function call 2024-04-22 00:02:09 each is a `call` instruction no? 2024-04-22 00:02:18 well, except the built-in 2024-04-22 00:02:19 they're usually just a jump table 2024-04-22 00:02:33 well depends on the implementation 2024-04-22 00:02:38 hm 2024-04-22 00:02:40 yea 2024-04-22 00:02:43 some of them trade compactness for performance for example 2024-04-22 00:03:31 but usually you are encouraged to factor your code in very little words that do one thing, then combine them 2024-04-22 00:04:21 the colon words of my toy lang are not cheap and they make it much slower, which is quite sad, because it's what i like the most from forth 2024-04-22 00:05:38 but i decided to not give a fuck about performance, i want to deal with it by making some sort of transpiler 2024-04-22 00:05:55 in a transpiler colon words will have 0 cost at runtime 2024-04-22 00:06:31 what do you guys like the most of forth? 2024-04-22 00:06:45 i guess for me is colon words and the encouragement of factoring your code 2024-04-22 00:06:46 simple, easy to implement, clean 2024-04-22 00:07:02 and its history is in controlling telescopes. 2024-04-22 00:07:04 also the freedom, which is important for me 2024-04-22 00:07:26 your on track. Read TIL and also Thinking Forth, both online. 2024-04-22 00:07:29 vms14: what I like about Forth is its bootstrapability 2024-04-22 00:07:40 the "build your own stuff" philosophy too 2024-04-22 00:07:57 Zarutian_iPad that also is very interesting for me 2024-04-22 00:08:00 you go from a bootable image (or make one) to your world. 2024-04-22 00:08:02 metacompilers 2024-04-22 00:08:29 vms14 have fun with forth, the concept and whatever implementation you choose, or make. 2024-04-22 00:08:35 well not the same thing i guess 2024-04-22 00:08:55 Al2O3 i wanted to have a forth able to use stuff a general programming language has 2024-04-22 00:09:02 no, I mean I can go from a say mcu datasheet and having a forth or its inner interpreter running in about of a week of stolen moments 2024-04-22 00:09:13 like sockets, gui, db, etc 2024-04-22 00:09:26 Zarutian_iPad yeah, write a few primitives and the rest is colon words 2024-04-22 00:09:46 you can build libraries to do that, but honestly if you want those features you may just want to do C 2024-04-22 00:09:56 and stuff layered on top of it. 2024-04-22 00:10:12 another thing I like about Forth is to refactor your ideas and whittle away stuff that does not need to be core of the thing 2024-04-22 00:10:22 like smalltalk :) 2024-04-22 00:10:25 Al2O3 i made an abomination in perl able to do all of that, but it's not forth 2024-04-22 00:10:38 is a mix of forth and lisp, more similar to lisp than forth 2024-04-22 00:10:46 a reversed lisp 2024-04-22 00:10:50 :) 2024-04-22 00:11:00 is that a lispsil 2024-04-22 00:11:16 yet when i see forth code i would like to have a real forth instead 2024-04-22 00:11:16 by the way, great name for a project in lisp. 2024-04-22 00:11:19 AI2O3: I have written and described an object system for Forth with garbage collection and such 2024-04-22 00:11:29 Zarutian_iPad, neat. 2024-04-22 00:11:36 do you have a link? 2024-04-22 00:11:52 none of the class crap 2024-04-22 00:11:54 or publication paper, or the description in pdf? 2024-04-22 00:12:04 :0 2024-04-22 00:12:12 love to read it 2024-04-22 00:12:13 eh, the description is in back logs of this channel 2024-04-22 00:12:21 what syntax do you use for object definitions and for method calls? 2024-04-22 00:12:25 oh, thought it was a formal description. 2024-04-22 00:12:39 vms14 I think he said non of that 'class crap' :) 2024-04-22 00:12:49 gnit - gnissecorp tsil 2024-04-22 00:13:06 yeah, but you have to create objects somehow 2024-04-22 00:13:07 vms14: I use object constructing words and invoke 2024-04-22 00:13:09 anyway, long day, great to see so many enjoying FORTH 2024-04-22 00:13:18 in my case the class is a colon word 2024-04-22 00:13:32 the inner words of that colon word will be the methods 2024-04-22 00:13:54 the object constructing words use obj_here obj_, and such 2024-04-22 00:14:37 each object is made of four parts, header, xt, refs section, and data section 2024-04-22 00:15:06 the xt points to the 'script' of the object 2024-04-22 00:16:10 the thing that excutes when any method is invoked on that object. the stack is ( ... argn method_selector object_pointer ) 2024-04-22 00:16:33 oh you give the number of arguments on the stack? 2024-04-22 00:16:39 hmm 2024-04-22 00:17:27 the 'script' does the dispatching to the revelant 'method' or does anything it wants with it 2024-04-22 00:17:29 i was trying to find a way to specify the number of args a method has and whether it returns a value or not and ended with a weird syntax 2024-04-22 00:18:09 since my oop just creates objects on the host language and method calls are host method call translations i have to specify the arguments and the return somehow 2024-04-22 00:18:33 but what i had sucked a lot 2024-04-22 00:18:44 note this system is object based and _not_ oop 2024-04-22 00:19:01 1 2 3 -method:3 for example the :3 means take 3 elements xD 2024-04-22 00:19:23 well the object is missing, but we'll assume it's the 3 2024-04-22 00:19:52 ~method for the same but without returning a result 2024-04-22 00:20:09 and -method assumes one argument while -method* expects a list 2024-04-22 00:20:16 i have to find a better way 2024-04-22 00:21:34 in some of the code that uses this object system I had the equiv of : putInvoke put_methodsel swap obj_invoke ; for my convience 2024-04-22 00:25:37 Zarutian_iPad what about the gc? 2024-04-22 00:25:56 and the 'script' what is it really? 2024-04-22 00:26:15 you aren't using some sort of hash table to dispatch or alike 2024-04-22 00:26:55 i assume refs section is where the object variables go? 2024-04-22 00:27:22 and the header specifies the type of object it is, so the script looks at that in order to dispatch 2024-04-22 00:28:54 if i were to make an object system i would try to go for CLOS 2024-04-22 00:29:20 i already have the art of the metaobject protocol book, which teaches you how to implement CLOS 2024-04-22 00:29:35 using hash tables at the end 2024-04-22 00:36:53 now that i think it, the script does not need to look at the header unless it's a general dispatch method, which also makes no sense then to have it inside the object 2024-04-22 01:32:27 the reason why I wanted the object system is/was that I want/wanted to do graphics and gui stuff in Forth without relieing on any external code like Gtk Ttk or such 2024-04-22 01:33:26 the refs section of an object is just references that this object has to other objects 2024-04-22 01:33:52 the data section is just any kind of other data 2024-04-22 01:34:26 the 'script' is what responds to invocations to the object 2024-04-22 01:35:07 its pretty much akin to what comes after DOES> in word defining words 2024-04-22 01:36:50 often it involves a jump table indexed by the method_selector but it can be structured in other ways 2024-04-22 01:41:54 oh, so you are going to make an object based gui library from scratch 2024-04-22 01:42:09 that's cool 2024-04-22 01:42:29 also considering the whole object stuff is also made by you from scratch 2024-04-22 01:42:51 that's one of the things i like from forth and lisp, you are supposed to do your own stuff 2024-04-22 01:43:19 yeah but its going to be a while until then as I am quite deep in another open source project 2024-04-22 01:44:03 I am not supposed to do anything in that sense, it is more of Not Implemented Here thing ;) 2024-04-22 01:44:16 I dont get why Im getting a call error 2024-04-22 01:44:51 If94: "the number you are trying to reach is not connected" 2024-04-22 01:45:18 oh, not that kind of call error 2024-04-22 01:45:25 https://gist.github.com/lf94/7197ccf7b4c1cceef15e816251b23781 2024-04-22 01:45:30 go to temp1 2024-04-22 01:45:40 the call error is at r@ k[] 2024-04-22 01:45:44 it makes zero sense to me 2024-04-22 01:48:40 Is this some weird gforth bug? 2024-04-22 02:25:17 help :D 2024-04-22 02:28:38 gforth is plenty of rope 2024-04-22 02:30:12 Ive just never seen this error and it also it makes no sense because my other h[] works 2024-04-22 02:36:57 lf94: "k* $42 c!+ $8a c!+ $2f c!+ $98 c!+" this would be overwriting memory starting at k*, if I'm reading it correctly 2024-04-22 02:37:19 oh, yes! 2024-04-22 02:37:25 yes yes, wow 2024-04-22 02:37:33 it's messing with the dictionary... nice catch 2024-04-22 03:31:10 is there a trick i'm not seeing for writing CASE/OF and getting good code without making an entry on the stack for each OF? 2024-04-22 10:59:15 To me ROT just 'gets' the 3rd item on stack 2024-04-22 10:59:20 -ROT puts it back 2024-04-22 10:59:46 The names are appropriate given how it shuffles things 2024-04-22 11:08:34 I'm kind of surprised -rot isn't in the standard 2024-04-22 11:08:57 I'm not, the standard isn't good! 2024-04-22 11:09:36 It's been what 30 years and it never even made it into core extensions words 2024-04-22 11:10:16 It's in https://forth.sourceforge.net/mirror/comus/index.html 2024-04-22 11:10:55 That's a good page 2024-04-22 11:12:05 Bookmarked! 2024-04-22 11:12:55 There's also http://www.wilbaden.com/neil_bawd/ 2024-04-22 12:28:56 does -rot belong in the standard when it's so easy to type : -rot rot rot ; ? 2024-04-22 12:44:08 Yeah, but then you have to do `defined -rot 0= [if] : -rot rot rot ; [then]` everywhere. 2024-04-22 12:44:16 Which is just annoying 2024-04-22 12:48:00 Might as well say 2dup doesn't belong because you can write : 2dup over over ; 2024-04-22 12:48:22 I just find in practice -rot gets used a lot 2024-04-22 12:51:26 Also we expect -rot to have a CODE definition, as hello-operator implies 2024-04-22 12:55:02 usage stats from my largest program: -rot: 10 rot: 11 2024-04-22 13:04:21 For me: -rot: 25, rot: 45. `-rot` confirmed useless, no need to standardize it. 2024-04-22 13:06:33 I would like `+order`, `-order` and `(order)` to be standardized. I find myself using them a lot, I do not like to dump everything in the main vocab 2024-04-22 13:07:19 What do they do? 2024-04-22 14:37:15 I have one source file with these defined: http://forth.works/temp/order.txt (original source is from https://github.com/howerj/embed) 2024-04-22 14:48:55 veltas: i would argue 2dup doesn't belong in the standard 2024-04-22 16:15:38 why's that 2024-04-22 16:15:44 because it's over over? 2024-04-22 16:23:56 IIRC, it wasn't in the 1979 or 1983 standards, and wasn't in FIG either 2024-04-22 16:24:22 noted 2024-04-22 16:24:52 yeah, forth is not supposed to be a kitchen sink language. the portability should come from there being a bare minimum kernel that's easy for me to bootstrap. 2024-04-22 16:25:24 I find it interesting, in gbforth, you have to use ROM or RAM word to switch between ROM or RAM storage 2024-04-22 16:25:46 Why can't this be just if "create c, " is outside a definition, it's in ROM? 2024-04-22 16:26:20 There's no way to do RAM initialized variables 2024-04-22 16:26:31 what is "outside a definition" ? 2024-04-22 16:26:35 out of : ; 2024-04-22 16:27:35 so create counters 5 cells allot ( counters may never be incremented?) 2024-04-22 16:27:43 This leads me to my other question: how should you typically embed data in a forth program? create x thing , other , thing , ok , ? 2024-04-22 16:27:57 yeah, in gbforth, you can do that 2024-04-22 16:28:12 but you can't do create x data , data , data , 2024-04-22 16:30:09 but your proposale would put my counters in rom 2024-04-22 16:30:31 http://forth.works/temp/compare.pdf is an old reference of the core vocabularies from a few standards, as well as eforth & retroforth 2024-04-22 16:31:02 i don't know what gbforth is, but from what you've shared, i assume it's a cross compiler that wants to support harvard architecture targets 2024-04-22 16:34:13 zelgomer: you can't write to rom at run time 2024-04-22 16:34:32 i think that would allocate 5 cells worth of space in the rom 2024-04-22 16:34:47 nevermind, im confusing myself. 2024-04-22 16:34:49 tough morning 2024-04-22 16:43:26 anxiety calling for a dumb root canal 2024-04-22 16:43:34 gah, i hate phone calls 2024-04-22 16:50:32 agree 2024-04-22 17:01:47 how do you embed data in a forth binary 2024-04-22 17:01:52 is it forth system specific 2024-04-22 17:02:06 like ive done it a few ways no 2024-04-22 17:02:08 now 2024-04-22 17:03:09 /everything/ is system specific 2024-04-22 17:06:19 after this little experiment ive done im starting to really feel you on that statement 2024-04-22 17:06:46 ive had to do sha256-8bit-cpu.f and then i forked that to sha256-gb.f because of gbforth specific stuff 2024-04-22 17:06:53 i think we've been telling you that all along 2024-04-22 17:07:07 you have, but it's more effective for me to experience it 2024-04-22 17:07:10 internalize 2024-04-22 17:07:40 im starting to see that having core words is useful to "Get to work" on any forth system 2024-04-22 17:08:03 but even then, the core words should be seen as ... "vague" 2024-04-22 17:08:10 since each will operate different on any system 2024-04-22 17:15:11 lf94: i would look at this way: what is your end goal, and how many systems does it need to support? 2024-04-22 17:15:54 all the systems forth is available on 2024-04-22 17:15:56 :D 2024-04-22 17:16:03 that's just not realistic 2024-04-22 17:16:11 that's not even realistic for c 2024-04-22 17:16:14 what if i said all 8-bit cpu forth systems 2024-04-22 17:16:24 durexforth, gbforth 2024-04-22 17:16:39 then i would ask, /why/? 2024-04-22 17:16:49 do you actually have a requirement to support both of thoes? 2024-04-22 17:16:54 one implementation that is verified to work 2024-04-22 17:34:18 It's realistic to support ANS Forths, of which there are many 2024-04-22 17:35:47 But there are lots of interesting forths that aren't ANS 2024-04-22 17:35:49 I never thought about it, but I guess forth has a macro system in a sense 2024-04-22 17:35:55 Yeah definitely 2024-04-22 17:35:58 the interpreter level 2024-04-22 17:36:18 can you do: condition if : word-thing ; then ? 2024-04-22 17:36:26 Sometimes Forth to me feels like an assembler on steroids 2024-04-22 17:36:31 Yes 2024-04-22 17:36:35 fucking dope 2024-04-22 17:36:37 It's just not very efficient 2024-04-22 17:36:54 it's on the interpreter level, it'd only run once 2024-04-22 17:37:06 to pick a word definition :) 2024-04-22 17:37:23 i think it's best to think of forth as a macro assembler 2024-04-22 17:37:26 is-8bit-system if : word1 ; else : word1 ; then 2024-04-22 17:37:47 that was the light bulb that finally got me out of the trap that imo lf94 is stuck in now 2024-04-22 17:37:49 yes I partially do 2024-04-22 17:37:52 [IF] [ELSE] [THEN] is the standard words fore that 2024-04-22 17:38:01 oh nice 2024-04-22 17:38:08 why not if else then? 2024-04-22 17:38:19 Because they're not the same 2024-04-22 17:38:19 i guess you need parse words 2024-04-22 17:38:37 It's like asking why #if instead of if() in C 2024-04-22 17:38:57 why not #IF instead of [IF] :) 2024-04-22 17:39:28 There's already a convention in Forth standard for bracketed words meaning "do some different immediate thing" 2024-04-22 17:39:33 Like CHAR vs [CHAR] 2024-04-22 17:39:44 yea yea 2024-04-22 17:39:46 parse words 2024-04-22 17:39:59 veltas: ah 2024-04-22 17:40:13 i thought to forth, it'd just move onto the next ... input character 2024-04-22 17:40:18 yeah but the history behind those names is because you want an immediate form of another word e.g., [char] is analogous to [ char ] ( but you can't do that because then char would parse the ]) 2024-04-22 17:40:18 Well [IF] parses until it gets to an [ELSE] or [THEN], and it parses nested [IF]..[THEN]s as well 2024-04-22 17:40:26 but it makes sense, you need [if] and [else] to skip parts of the input stream! 2024-04-22 17:40:30 using [ ] at the interpreter level always struck me as odd 2024-04-22 17:40:36 Yeah you're right zelgomer 2024-04-22 17:41:03 > t me out of the trap that imo lf94 is stuck in now 2024-04-22 17:41:25 i still believe my sha256 implementation the way it is now is pretty forthy 2024-04-22 17:41:39 ive read other forth code and it doesn't seem too off 2024-04-22 17:41:47 could it be more forthy? yes 2024-04-22 17:41:50 Honestly I think the forthy way to write SHA256 is in straight up assembly 2024-04-22 17:42:04 Ive done it; you end up implementing a shitty forth 2024-04-22 17:42:06 As soon as you write portable forth code it's less forthy 2024-04-22 17:42:12 I literally did this in 100% gb assembly already 2024-04-22 17:42:24 lf94: i meant the trap of approaching forth the way you'd approach high level languages like c or python 2024-04-22 17:42:34 thinking you're going to write code that's going to run in someone else's environment 2024-04-22 17:42:46 lf94: Well was it easier in assembly? 2024-04-22 17:42:48 and download and share packages and libraries, etc. 2024-04-22 17:42:49 ah. no, I 100% see cpu instructions when writing even basic things like r>, over, swap, etc 2024-04-22 17:43:01 veltas: no. it was MUCH easier in forth 2024-04-22 17:43:30 this is because you have to implement 32 bit operations on a 8 bit cpu. 2024-04-22 17:44:01 Funny because I think I'd find it easier in assembly 2024-04-22 17:45:27 I don't know about 8-bit but certainly if I had a modern arch I'd probably find it easier to write in assembly 2024-04-22 17:45:41 That would be a problem for me if Forth wasn 2024-04-22 17:45:45 't an assembler 2024-04-22 17:45:58 Sorry just got a US keyboard, getting used to the Enter key layout 2024-04-22 17:46:24 don' 2024-04-22 17:46:27 t worry 2024-04-22 17:46:31 :) 2024-04-22 17:53:13 I'm getting there but IRC is not the most forgiving playground 2024-04-22 17:53:27 veltas: on a modern arch, writing sha256 in assembly would be very easy, yes. 2024-04-22 17:53:33 sha256 was practically designed for it 2024-04-22 17:53:39 Exactly 2024-04-22 17:53:41 (for x86) 2024-04-22 17:53:48 but that's not the case for me here :) 2024-04-22 17:53:51 What 32-bit ops need to be implemented? 2024-04-22 17:54:01 Any arithmetic? I thought it was all bitwise stuff 2024-04-22 17:54:06 Yep 2024-04-22 17:54:08 Arithmetic too 2024-04-22 17:54:13 Like what, multiplication? 2024-04-22 17:54:14 32 bit add specifically 2024-04-22 17:54:18 nope 2024-04-22 17:54:25 32-bit add is absolutely trivial to implement in 8-bit archs 2024-04-22 17:54:28 With carry 2024-04-22 17:54:43 Of course might not be trivial to someone new to assembly, not trying to knock you down 2024-04-22 17:54:57 Im not particularly experienced, no offense taken :2 2024-04-22 17:54:59 :) 2024-04-22 17:54:59 But it is something that's quite easy to chain into larger sizes 2024-04-22 17:55:08 I mean Ive dabbled in assembly many times since I was 14 2024-04-22 17:56:06 But that's it: assembly has never been my daily focus 2024-04-22 17:56:27 anyway ive implemented 32-bit add in both forth and gb asm, im pretty familiar with n-bit adding by now )x 2024-04-22 17:56:29 x) 2024-04-22 17:56:40 32-bit add in standard forth is just D+ 2024-04-22 17:56:53 https://github.com/Veltas/zenv/blob/master/src/zenv.asm#L740 2024-04-22 17:56:55 not all forths are standard forths :2 2024-04-22 17:56:57 :) 2024-04-22 17:57:09 (as you guys have hammered into me lol) 2024-04-22 17:57:11 The hardest part about writing that D+ code was juggling the stack 2024-04-22 17:57:34 I think D+ is something that you can expect to exist in some form for any forth with double words 2024-04-22 17:57:44 And usually forths without double words are at least 32-bit anyway 2024-04-22 17:57:47 now what about 64 bit forth 2024-04-22 17:57:49 er 2024-04-22 17:57:51 64 bit add 2024-04-22 17:57:53 :V 2024-04-22 17:57:55 128 bit add 2024-04-22 17:57:57 etc 2024-04-22 17:57:59 Yep 2024-04-22 17:58:01 > juggling the stack 2024-04-22 17:58:07 forths strong suit! 2024-04-22 17:58:09 :) 2024-04-22 17:58:23 This is what really made it easier. I was already using stack a lot in my 8bit implementation 2024-04-22 17:58:24 Well getting the right registers in the right places and leaving everything in the right place 2024-04-22 17:58:39 It's a little counter-intuitive that the high part of a double is the top of the stack 2024-04-22 17:58:48 But it does make most work with doubles easier 2024-04-22 17:59:03 The result is that your stored representation of a double has a mixed endianness which is a bit gross 2024-04-22 17:59:11 On little endian systems 2024-04-22 17:59:23 Which Z80 is 2024-04-22 17:59:37 https://gist.github.com/lf94/12a59242281d9b86679550e184a0c065#file-sha256-lf94-f-L238 2024-04-22 17:59:43 the 32 bit add in forth 2024-04-22 18:00:53 the way it's written is trivial to up it to 64 bits, or higher 2024-04-22 18:03:40 I think my issue _here_ is that I wanted this to work on gforth too 2024-04-22 18:03:44 as well as gbforth 2024-04-22 18:03:46 and it does :2 2024-04-22 18:03:48 :) 2024-04-22 18:03:52 that's why I need the overflow detection 2024-04-22 18:03:57 and have a variable to story carry 2024-04-22 18:03:59 store 2024-04-22 18:04:03 instead of using hardware carry flag 2024-04-22 18:04:26 oh my god that would be DOPE, if I could tell gforth, "use 16bit cells" 2024-04-22 18:05:14 you can. override @, !, ,, and so on 2024-04-22 18:05:33 : + + ffff and ; 2024-04-22 18:09:34 lf94: It should have c, w, l, and so on 2024-04-22 18:10:07 zelgomer: will that set carry bit? 2024-04-22 18:10:18 user51: ? 2024-04-22 18:10:24 character, word, long? 2024-04-22 18:10:26 https://gforth.org/manual/Dictionary-allocation.html#index-w_002c-_0028-w-_002d_002d-_0029-gforth_002d1_002e0 2024-04-22 18:10:53 ahaha, wow, epiphany moment 2024-04-22 18:11:09 i know why a 16-bit value is called a word now 2024-04-22 18:11:17 because a word is made of characters 2024-04-22 18:11:19 :V 2024-04-22 18:11:25 and char is usually 8 bits 2024-04-22 18:11:37 and 16 bytes is called a paragraph 2024-04-22 18:11:42 What's a dictionary made of, then? :P 2024-04-22 18:11:45 and several more a page 2024-04-22 18:12:03 a dictionary is a bag of characters you allocate and write on no? 2024-04-22 18:12:28 man, how am I just realizing this now 2024-04-22 18:12:29 I thought it meant like a 'word' for the processor 2024-04-22 18:12:35 On powerPC a word is 32 bits 2024-04-22 18:12:45 yea yea, but a word is composed of char 2024-04-22 18:12:55 usually it's 16 bits but you're right it can be 32, 64, etc 2024-04-22 18:13:08 and long is usually 2 words 2024-04-22 18:14:17 i don't know the history because i wasn't around then, but i took it that "word" originally referred to 16 bits (maybe around the same time 16-bit processors were coming onto the scene), and when CPUs grew to 32, people started misusing the term to refer to the native bus width 2024-04-22 18:15:05 Originally "word" meant the native register / bus width but it became more fixed later 2024-04-22 18:15:23 E.g. Intel word was 16 bit then dword, qword, etc. 2024-04-22 18:16:28 that's a surprise to me since the terms paragraph and, like you mentioned, double-word and quad-word exist. 2024-04-22 18:17:43 I always thought double-word etc is an intel thing to make backwards compatibility with 16-bit x86 easier 2024-04-22 18:18:05 You see PPC ARM etc refer to 64-bit as double words 2024-04-22 18:18:37 Calling something a 'word' causes trouble eventually 2024-04-22 18:19:41 ARM words are 32 bit and they use halfword for 16 bits 2024-04-22 18:19:48 word, yo 2024-04-22 18:25:17 Don't even get me started on the microsoft word 2024-04-22 18:28:10 ahahha 2024-04-22 18:35:55 NetBSD has tempted me recently 2024-04-22 18:40:49 I see NetBSD and I raise that you should just make your own OS in forth :p 2024-04-22 18:40:54 otherwise just use Linux 2024-04-22 18:54:49 Forth's already an OS though 2024-04-22 18:55:17 Just need to implement a disk, keyboard and monitor driver and connect to your block words, key, type etc 2024-04-22 18:58:02 I've moved from using linux to trying to support it in production to not 2024-04-22 19:10:37 veltas: exactly B) 2024-04-22 19:35:26 I'm torn between OpenBSD and NetBSD for my next install experiment 2024-04-22 19:38:01 NetBSD 2024-04-22 20:02:06 https://kolibrios.org/en/index.htm 2024-04-22 20:02:32 veltas: might be of interest 2024-04-22 20:04:07 we need forthmachines like lispmachines and turn the computing industry upside down B) 2024-04-22 20:05:17 ACTION needs to get a netbsd machine running 2024-04-22 20:06:20 I seem to remember there was something on Jeff Fox's page about a Forth computer built into a mouse 2024-04-22 20:07:31 lf94: I think that can't ever happen because as soon as a forth system becomes useful for more than three developers, it is no longer a true forth and has to be reimplemented from scratch 2024-04-22 20:07:45 lispmacs[work]: That's interesting yeah thanks 2024-04-22 20:07:50 There was also the Jupiter Ace and the Canon Cat 2024-04-22 20:07:58 I've never really looked at fasm before, might have to look up 2024-04-22 20:08:33 veltas: I ran it from a floppy disk on an an old Pentium 4 here at work 2024-04-22 20:09:27 lispmacs[work]: I don't think that's right but funny :P 2024-04-22 20:09:51 for sure you can offer a forth-as-os and be useful to millions 2024-04-22 20:10:05 a necessary feature would be to able to load your on forth ;) 2024-04-22 20:10:08 on / own 2024-04-22 20:10:20 ... until some lawyer emails a PDF with wacky DRM in it, then what ... 2024-04-22 20:11:57 lispmacs[work]: The thing is, I think it would be possible to write something almost as lightweight and fast and self-building in C 2024-04-22 20:12:00 Or a subset of C 2024-04-22 20:12:08 And much easier to maintain 2024-04-22 20:12:18 Although that fasm source I've seen so far looks deceivingly simple 2024-04-22 20:12:26 I'm sure they are making it look easier than it is 2024-04-22 20:12:43 It's very forthy in the forth-is-a-macro-assembler sense 2024-04-22 20:14:24 It's quite visually appealing as well 2024-04-22 20:15:27 I only played around with it for a few minutes, but did seem snappy, and the documentation looked good 2024-04-22 20:15:56 I just booted kolibrios in qemu, looks OK 2024-04-22 20:16:26 someone asked a while ago if I thought it could be used for a daily driver. It seemed well rounded to me. The main obstacle is that it doesn't run one of the major Web browser 2024-04-22 20:16:52 I.e., required for running the usual Web bloatware crap most of us have use at some point or nother during our day 2024-04-22 20:17:36 It has a package for one nice Web browser I think, but with only experimental JS support, IIRC 2024-04-22 20:18:08 I couldn't get my work Web sites to run on it 2024-04-22 20:18:41 but it has disk support, network support, and such like 2024-04-22 20:19:22 I just tried getting to reddit using its Webview browser but reddit doesn't like it for some reason 2024-04-22 20:19:34 Not even old.reddit.com? 2024-04-22 20:19:47 It was old.reddit.com I tried 2024-04-22 20:20:07 Apparently my request has been blocked "due to a network policy" 2024-04-22 20:20:18 The OS is interesting but I'm actually more interested by fasm 2024-04-22 20:20:18 It has a fancier browser available as a package, IIRC, but I don't remember the name of it 2024-04-22 20:25:00 lf94: https://www.ultratechnology.com/scope.htm 2024-04-22 20:26:50 jesus christ. 2024-04-22 20:26:55 that guy is a boss 2024-04-22 20:27:00 of the highest order 2024-04-22 20:28:31 Was, sadly 2024-04-22 20:29:09 What'd they pass away from? 2024-04-22 20:30:07 Heart attack https://www.forth.org/svfig/memory.html 2024-04-22 20:32:17 Jeff Fox? 2024-04-22 20:32:25 Yeah 2024-04-22 20:32:31 Love the density of that page, every sentence is interesting, novel, informative 2024-04-22 20:32:38 The mouse computer page 2024-04-22 20:32:41 i was about to say i hate it LOL 2024-04-22 20:32:58 So sick of chit-chatty stuff even though I do it myself 2024-04-22 20:32:59 you can tell jeff fox was a massive wealth of knowledge and experience, but i hate his writing style 2024-04-22 20:33:19 He's harder to read I'll admit but I just find it appealing 2024-04-22 20:33:26 It's like reading forth code in english 2024-04-22 20:52:42 yep 2024-04-22 20:52:58 some programmers aren't really writers? 2024-04-22 20:56:02 jeff died doing what he loved 2024-04-22 20:56:12 all these geniuses 2024-04-22 20:56:14 amazing 2024-04-22 20:58:58 Damn, Ting too. I thought this was someone working in a nice little forth corner of the world still. 2024-04-22 23:30:25 okay, i'm getting lost in the weeds here and need a sanity check. first question: what does "latest @" produce? a header or an xt? 2024-04-22 23:32:20 and then what does this print? : foo [: [ latest @ . ] ;] ; ? foo's header, a temporary header for the quotation, or the quotation's xt? 2024-04-22 23:41:32 zelgomer: for which forth? 2024-04-22 23:48:37 for gforth: 2024-04-22 23:48:38 "latest – nt 2024-04-22 23:49:32 sounds overly complicated 2024-04-22 23:49:45 the first field in the nt appears to be a link to the previous header, so in m6 testing "latest @ name>string" displays the name of the second newest word 2024-04-22 23:53:04 I'd expect the example zelgomer posted to display the nt for foo. (my gforth predates the inclusion of quotations, so I can't test this to be certain) 2024-04-22 23:55:44 crc: not any in particular. just looking for inspiration to implement this. tbh, i'm so many tangents deep now i can't even remember the original problem i was trying to solve. 2024-04-22 23:57:54 latest isn't standardized, so it'll be dependent on the forth being the used