<veltas> kedit is so bloated but I can't deny having also used it a lot, back in the day
<veltas> Or wait actually I used kate, sorry.
<veltas> They are the same though right? Under the hood?
<rdrop-exit> I don't know kate, kedit was originally a DOS port of IBM's xedit
<veltas> Oh I am thinking of kwrite
<tp> so many editors ...
<veltas> I think I have merged the names of gedit and kwrite, because they are the main gnome and KDE editors
<rdrop-exit> My block editor is wordstar like, but I have a completely revamped editor in the planning stages once I'm done with my X11 port
<veltas> Oooh
<rdrop-exit> I'm planning to base the new block editor on some of the concepts from the Canon Cat (but block oriented)
<rdrop-exit> right now, it's just scribbles on paper
<rdrop-exit> I'll take advantage of X providing me with separate key press/release events to have quasi-modes
<veltas> I want an editor for my forth env, but I am not sure if it will be block based, how that would work if it is block based, etc.
<rdrop-exit> BTW, this is for the Host side of my tethered Forth, the side running on a PC
<rdrop-exit> incremental search quasi-mode and undo/redo
<rdrop-exit> hex editing quasi-mode as well
<rdrop-exit> veltas, if you're putting an editor on an onbard Forth, then block based is the way to go
<veltas> You use a mac?
<veltas> I think it will be block based but not fixed line size
<rdrop-exit> yes, usually Mac
<rdrop-exit> not having fixed dimensions takes away most of the advantages of blocks
<veltas> Well I'm still figuring it out in my head
<rdrop-exit> sure, I'm still working out the details of my Cat-inspired editor on paper
<rdrop-exit> It will be nice to get away from the limitations of a terminal based Forth
<rdrop-exit> even though my current Forth is terminal based, it's still full screen
<rdrop-exit> the main limitation I'm trying to get away from is the lack of key press/release in ECMA-48/ANSI
<rdrop-exit> terminal codes
<rdrop-exit> In fact my plan for today was to reread the Canon Cat docs
<veltas> Do you have a PDF?
<rdrop-exit> yes, there's a site that has all of them, just a sec, I'll try to find the url
<rdrop-exit> even though the canon cat is Forth based, the editor and user interface aren't block based, so my editor will definitely have major differences
<veltas> Cool
<rdrop-exit> Raskin later wrote up many of his ideas from the Cat in the book "The Humane Interface"
<rdrop-exit> Here's a cool video on the Canon Cat
<veltas> I will watch tomorrow, going to sleep
<veltas> I will look, am interested in the subject at the moment
<veltas> Thanks rdrop
<rdrop-exit> np, goodnight veltas
<rdrop-exit> tp, my daughter just put up a new song video on youtube, it's an original song this time, not a cover
<rdrop-exit> (my eldest daughter)
<tp> rdrop-exit, cool, I'll watch it soon :)
<rdrop-exit> thanks! the url is https://www.youtube.com/watch?v=U61EBlRrw_k
dzho has quit [Remote host closed the connection]
dzho has joined #forth
dddddd has quit [Ping timeout: 246 seconds]
<tabemann> hey guys
<rdrop-exit> hi tabemann!
dzho has quit [Client Quit]
<tp> hey tabemann !
* tabemann should test out his output validation code
<tabemann> *test his
<rdrop-exit> Quis custodiet ipsos custodes?
<tabemann> actualy, bbiab
<rdrop-exit> ciao
dzho has joined #forth
dzho has quit [Client Quit]
dzho has joined #forth
dzho has quit [Client Quit]
dzho has joined #forth
<tabemann> back
<rdrop-exit> wb
kori has joined #forth
kori has joined #forth
kori has quit [Changing host]
WickedShell has quit [Remote host closed the connection]
tp has quit [Remote host closed the connection]
tp has joined #forth
jsoft has joined #forth
jsoft has quit [Ping timeout: 256 seconds]
dave0 has quit [Ping timeout: 246 seconds]
gravicappa has joined #forth
dave0 has joined #forth
X-Scale` has joined #forth
cheers has quit [Ping timeout: 260 seconds]
X-Scale has quit [Ping timeout: 264 seconds]
X-Scale` is now known as X-Scale
cheers has joined #forth
Labu has quit [Quit: Leaving.]
xek has joined #forth
X-Scale` has joined #forth
X-Scale has quit [Ping timeout: 256 seconds]
X-Scale` is now known as X-Scale
proteusguy has quit [Ping timeout: 256 seconds]
proteusguy has joined #forth
dave0 has quit [Read error: Connection reset by peer]
iyzsong has joined #forth
dave0 has joined #forth
dddddd has joined #forth
TCZ has joined #forth
dave0 has quit [Quit: dave's not here]
TCZ has quit [Quit: Leaving]
rdrop-exit has quit [Quit: Lost terminal]
iyzsong has quit [Quit: ZNC 1.7.1 - https://znc.in]
xek_ has joined #forth
X-Scale has quit [Ping timeout: 258 seconds]
xek has quit [Ping timeout: 246 seconds]
X-Scale` has joined #forth
X-Scale` is now known as X-Scale
xek__ has joined #forth
TCZ has joined #forth
xek_ has quit [Ping timeout: 256 seconds]
Chobbes has quit [Changing host]
Chobbes has joined #forth
TCZ has quit [Quit: Leaving]
gravicappa has quit [Ping timeout: 240 seconds]
TCZ has joined #forth
Labu has joined #forth
TCZ has quit [Quit: Leaving]
gravicappa has joined #forth
antaoiseach has joined #forth
cantstanya has quit [Remote host closed the connection]
cantstanya has joined #forth
<antaoiseach> Just curious - why does gforth not have "forget"? I tried reading up on markers in the gforth documentation, but couldn't make much sense of it.
<antaoiseach> dzho: Thanks! That actually looks quite promising
<antaoiseach> So basically, wherever we put a marker, that is a point-in-time marker, and when we invoke the given name, it resets to that point-in-time ... is this correct/
<antaoiseach> ?
<veltas> antaoiseach: It can be used for temporary scope, freeing up memory, or before recompiling some source. Since the dictionary is linear it's one of the 'obvious' operations to support.
<veltas> That example on Stack Overflow uses the current, more portable, standard forth version of 'forget'.
<veltas> But it works much the same way
cantstanya is now known as frank
frank is now known as cantstanya
<veltas> The reason it is more portable is because the assumption the dictionary is in a simple linear layout is not always true, some forths have more complicated layouts, so the word MARKER is introduced to give the forth environment an explicit opportunity to save any state that might be needed to 'restore' the dictionary in more involved ways
<antaoiseach> veltas: Thank you very much! I think I get the broad picture now
<antaoiseach> So using this, inside of scripts, I could potentially define some variables, use them, and then discard them - sort of simulating scope as you mentioned?
Labu has quit [Quit: Leaving.]
<veltas> It is one way you can do that, yes
<veltas> Unfortunately this is not a totally flexible method (after all, you might want some scoped variables within words that will be executed during compilation, well obviously that is not possible).
<antaoiseach> veltas: Haha ... I came to that same realisation after I wrote it!
<antaoiseach> yes, you're right
<veltas> That sounds promising antaoiseach
<veltas> Forth is like this, we get a lot of really simple tools and it is kind of our job to understand a bit about how they work and therefore when they won't work
Zarutian_HTC has quit [Ping timeout: 260 seconds]
<antaoiseach> veltas: Indeed! I'm an absolute beginner, but I'm slowly beginning to appreciate it as much more than a barebones RPN calculator (which most tutorials seem to focus on) - I am actually working on "The Complete Forth", and I love the book so far. It's making a whole more sense than "Starting Forth" (which I found a bit tedious)
<veltas> lol it seems there are two kinds of people
<veltas> I will say it's not unique to Forth, all languages have these considerations. Try explaining to a new C programmer why a const variable's value is not considered a 'constant' when the initialisation is already visible and 99% of modern compilers would not have a hard time retrieving it there and then.
<antaoiseach> Hehe ... fair point
<antaoiseach> What do you think of more modern languages like Rust and Zig, which do enforce much stricter constraints?
<veltas> I haven't used either of those but there are always dumb holes in languages, hard to not do.
<antaoiseach> Oh, absolutely.
<veltas> In Forth it's actually less of a "dumb hole" and more like a big walkthrough of how the compiler and interpreter is generally guaranteed to work
<veltas> and then you *know* without being told where the 'holes' are
<veltas> You have to guess a bit with higher level languages because they will present the highest level view they can
<antaoiseach> What actually makes me a bit uneasy is how flexible the system appears to be ... I presume the standard defines some basic words, but then there appear to be many ways of doing I/O, for instance
<antaoiseach> I had been working through "Starting Forth" and the chapters on disk access (?) did not work at all
<antaoiseach> How does one deal with such issues?
<antaoiseach> I mean ... Forth seems to be nothing and everything at the same time ... not sure if I can put it better
<antaoiseach> Right now I'm sticking to gforth and trying to learn by sticking to the standard, but the real benefits of Forth seem to be specific to systems?
<veltas> I 'learned' by reading Starting FORTH, the gforth tutorial, a bit of the gforth manual, and trying stuff out with Forth 2012 to hand.
jsoft has joined #forth
<veltas> I think there is an innate benefit shared by most forths that they have a relatively simple and open approach to interpretation and compilation
<veltas> And generally they can be pretty small too, which is useful in certain applications, but also it means inherently that they are very *factored*
<antaoiseach> Hmmm
<antaoiseach> So, from experience, how much does actually carry forth between systems? Is it mostly the experience of having worked with a Forth? Substantially more? less?
<crc> for me, I don't carry forth code between systems. (this is probably due at least in part to the deviations my forth makes from the standards)
<veltas> You can choose to write standard forth, and then your forth will work on many forth systems, and more with a few shims.
<crc> I can't bring myself to use a standard forth anymore outside of occasional tests
Zarutian_HTC has joined #forth
<antaoiseach> two very different and interesting perspectives!
<antaoiseach> +crc: does that mean though that you have to relearn a substantial part from scratch?
<antaoiseach> (I presume that basic stuff like loops, conditionals are more or less standard across forths?)
<crc> my conditionals, loops, and such are all non-traditional (I use quotations, anonymous nestable code blocks, for them)
<veltas> I do really like those
<antaoiseach> Oh. That's interesting!
<crc> antaoiseach: you can see some of my code at http://forth.works/examples
<crc> antaoiseach: re: relearning, I don't see this as a big issue. I deviate from the standards, but it's not so f
<crc> different that existing skills can't be reused
<crc> my word names are sometimes different, and my string words are completely different, but it's not overly difficult to adapt at least smaller programs to run on my forth
<veltas> I will agree with that assessment of retro, as an '''impartial''' observer, a lot of it seems to just be making things more consistent than what you get in a normal forth
<veltas> And choosing a more consistent naming scheme
<antaoiseach> +crc: whoa ... that looks so very different! Is it your custom Forth?
<antaoiseach> veltas: Thanks for that observation - it can be quite intimidating for a beginner like myself! :-)
<veltas> What is the point of AHEAD?
<antaoiseach> Maybe this is a stupid question, but how fast can you guys read your own Forth code? For my rudimentary programs, I find that composing *some* viable solution seems fast enough, but reading it back, even with meticulous stack notation and comments seems quite a bit slow, especially since I try to mentally keep track of the stack state
<antaoiseach> That, in fact, seems to be my biggest problem right now - feeling like the stack myself :D
<veltas> I am very new, I find it easy to read *my* code because I have conventions for making it a bit easier to track the stack
<antaoiseach> veltas: Hmmm... maybe I need to finish the basics and start writing more code! :-)
<veltas> Every time I change the stack layout, except inside one line, I will put a comment like ( a b c ) to quickly describe what's on the stack
<veltas> On the next line
<antaoiseach> Interesting!
<antaoiseach> I can see how that would help indeed
<veltas> And I don't bother if the word is very short, which words probably should be in general
<veltas> People tend to add extra spaces on a line to indicate grouping
<veltas> i.e. 2 spaces between two distinct logical parts of a calculation
<antaoiseach> veltas: Hmmm... right now I tend to put them on different lines, but that sounds like a good idea as well ..
<antaoiseach> Just curious - which Forth are you using and for which system? I mean, a specific controller?
<veltas> I mostly used gforth
<antaoiseach> +crc: Also, I found this - http://forth.works/retro-unix.c. This your Forth implementation, right? Should be fun studying it
<veltas> Right now I am writing a forth for the ZX Spectrum
<antaoiseach> veltas: Oh, nice! I was also planning on doing some small projects using only gforth till I get settled in! :-)
<antaoiseach> In Forth?
<veltas> I'm writing it in assembly and raw colon definition codes
<antaoiseach> Ah, right...
<antaoiseach> So the bare minimum words would be in assembly, and then build up on those in Forth itself, right?
<veltas> I'm also writing most of the colon defs in Forth alongside the raw code, hopefully I can actually convert most of this code to forth instead
<veltas> Yes bare minimum and anything that requires being fast
<veltas> or anything that works nicer in assembly
<antaoiseach> is it online anywhere?
<veltas> Yes, the current state is at https://github.com/Veltas/zenv
<veltas> words.asm is where the magic happens
<antaoiseach> veltas: Thanks! Will keep an eye on it ... should be useful for me later on
<veltas> Why is that?
<antaoiseach> And I presume this should run fine on an emulator, right?
<veltas> Yes
<veltas> I'm developing it on an emulator right now, I'm lockdowned away from my actual Spectrum :(
<antaoiseach> veltas: I would like to write a Forth from scratch myself! :D .. .maybe not for the same machine exactly, but this should be handy as a reference!
<antaoiseach> veltas: haha... yeah, this whole lockdown has been terrible.
<veltas> Are you familiar with the spectrum?
<antaoiseach> veltas: not much - just as part of some history of the models from that era ..
<veltas> Worth reading this series of papers if you want to write a forth http://www.bradrodriguez.com/papers/moving1.htm
<antaoiseach> The machine I would love to have is the Lisp Machine, but I don't think I can afford that!
<antaoiseach> veltas: Hey, thanks for the link!
<antaoiseach> Very nice ... I never did fully understand what "threading" meant in this context
<antaoiseach> Aha ... some direct and indirect basically refer to the level of indirection ... like single vs double pointers, yeah?
<veltas> I think it is a physical analogy, like how you sew one forth word's definition onto the next one
<veltas> Yes
<antaoiseach> That reference list at the bottom also looks potentially useful...
<antaoiseach> All right, have to go now, but it's been very edificational ... I should come here more often! :-)
<veltas> I don't think a ton of research needs to be done in advance of writing your forth
<antaoiseach> Thanks +crc, and thanks, veltas ... this whole convo taught me more than I expected!
<veltas> No problem
<antaoiseach> veltas: Haha, yes .. but I do like to go deep understanding some topics I find fascinating!
<antaoiseach> Cheers, and see you guys next time!
antaoiseach has left #forth [#forth]
Zarutian_HTC has quit [Ping timeout: 272 seconds]
jsoft has quit [Ping timeout: 272 seconds]
<veltas> What is the point of AHEAD?
reepca` is now known as reepca
cantstanya has quit [Remote host closed the connection]
cantstanya has joined #forth
<cmtptr> veltas, i've been away for a while. can you remind me what it does? i want to say it's a loop control flow word
gravicappa has quit [Ping timeout: 246 seconds]
TCZ has joined #forth
<veltas> It pushes a forward reference to control stack, and runtime behaviour is to unconditionally jump to that reference
<veltas> So it just skips code
<veltas> Hmmm I guess you could use it to fit some data into the colon def, that would make more sense.
<veltas> I think I got it by explaining it to you lol
<veltas> Thank you trusty rubber duck
<cmtptr> also to break from a loop?
<cmtptr> i do think you're right though, i vaguely remember stuff about jumping of inlined data
<cmtptr> s/jumping of/jumping over/
<veltas> cmtptr: It wouldn't let you break from a loop unless you manipulated the control stack, maybe though. It's something gforth supports
proteusguy has quit [Ping timeout: 265 seconds]
<veltas> I could use it to implement quotations in my forth, and really any forth that has a simple linear, non-hashed dictionary
proteusguy has joined #forth
dave0 has joined #forth
TCZ has quit [Quit: Leaving]
Zarutian_HTC has joined #forth
xek__ has quit [Ping timeout: 246 seconds]
xek has joined #forth
tabemann has quit [Remote host closed the connection]
tabemann has joined #forth