f-a has quit [Read error: Connection reset by peer]
f-a has joined #forth
boru` has joined #forth
boru has quit [Disconnected by services]
boru` is now known as boru
f-a has quit [Quit: leaving]
lispmacs[work] has quit [Ping timeout: 240 seconds]
gravicappa has joined #forth
Zarutian_HTC has quit [Ping timeout: 276 seconds]
Zarutian_HTC has joined #forth
cartwright has quit [Remote host closed the connection]
cartwright has joined #forth
dave0 has joined #forth
sts-q has quit [Ping timeout: 260 seconds]
proteus-guy has quit [Remote host closed the connection]
sts-q has joined #forth
cartwright has quit [Remote host closed the connection]
cartwright has joined #forth
dave0 has quit [Quit: dave's not here]
<mark4>
well i have a utf8 decode thats now working. i parse a string of bytes compiled by "俪俨俩俪俭修俯", convert those to codepoints then use my existing codepoint emitter to emit them and i get the right stuff displayed
<mark4>
those were just cut and paste from a dump of utf8 codepoints in my forth :)
<mark4>
they are not as far as i know a valid chinese word/sentence :)
hosewiejacke has quit [Remote host closed the connection]
hosewiejacke has joined #forth
<veltas>
mark4 is not here now but that's basically how I put UTF-8 into C code, I just enter hex into a string
hosewiejacke has quit [Ping timeout: 245 seconds]
<veltas>
It's the most compatible way because not every compiler will handle a UTF-8 encoding
<veltas>
Now onto Forth....
<veltas>
I have a complaint, 42 here is *not* a magic number: : STAR 42 EMIT ;
<veltas>
Because everyone keeps using this as an example of magic numbers, and saying magic numbers are bad, but here 42 is indeed documented because what else would this word do?
<veltas>
It's a word called "STAR" that emits the character with code 42, does it need more work to clarify 42 is the star?
<veltas>
I would personally prefer : STAR [CHAR] * EMIT ; (actually I would prefer : STAR ." *" ; because it's shorter and the same compiled length on my forth), but you can't really say the 42 is 'magic'
<veltas>
Or : STAR '*' EMIT ;
<veltas>
Notice that Leo Brodie's version is shorter than all of these and unambiguous, sometimes people think magic numbers mean any number at all that's not in a CONSTANT....
<veltas>
I disagree
<veltas>
In Forth Programmer's Handbook section on style, they say about Brodie's version "forces the reader to know that ASCII 42 means * (although this could be remedied by a comment)".
<veltas>
So what should the def be? \ Emit a star \n : STAR 42 EMIT ;
<veltas>
That's akin to comments that just say what the code states, totally useless
_whitelogger has joined #forth
inode has joined #forth
<inode>
veltas: think were they hoping for an : ASCII-STAR 42 EMIT ; to contrast with something like : EBCDIC-STAR 92 EMIT ; ?
<veltas>
inode: I don't know but I'd consider that unnecessary in forth where you're assuming the encoding in your application usually
<inode>
i agree with : STAR 42 EMIT; being the best of the lot, but there're way better examples of why magic numbers can be a nuisance though
<nihilazo>
I prefer : STAR [CHAR] * EMIT ;
<inode>
at least when referring to IO pins by number instead of name, getting the number wrong is more tedious than replacing just a single constant, and might make the logic less obvious at face value depending on how much is going on in that definition
mirrorbird has joined #forth
<mirrorbird>
hi .
<veltas>
nihilazo: When the original was written, I don't think [CHAR] existed. Today it would be weird, but the point is more about whether it needs further documentation that 42 is * in a word defined like it is
<veltas>
mirrorbird: Hello
<veltas>
inode: Yep, definitely. And the advice in the handbook is bad there too, it says using comments are fine.
<veltas>
And comments stop them being 'magic', but the result is code has less locality so is harder to maintain, more error prone
<inode>
did they discuss comments outliving the code they once described? :)
<veltas>
I don't remember but it's such a common problem, especially in embedded code
<mirrorbird>
do forth implementations typically allocate the dictionary on the stack?
<veltas>
On modern systems, almost certainly not
<veltas>
Usually stacks are protected against execution
<veltas>
mirrorbird: ^
<mirrorbird>
hm. then i need to allocate my dictionary somewhere
<veltas>
mirrorbird: mmap
<veltas>
If you are not using C standard library then you could use brk()/sbrk()
<mirrorbird>
yes i saw that
<mirrorbird>
i could just set a bit old resb 10000
<mirrorbird>
veltas, oh actually i was going to interpret the code from the dict
<mirrorbird>
usually the code it executes is compiled?
j has joined #forth
f-a has joined #forth
Zarutian_HTC has quit [Read error: Connection reset by peer]
Zarutian_HTC has joined #forth
mirrorbird has quit [Remote host closed the connection]
mirrorbird has joined #forth
Zarutian_HTC has quit [Remote host closed the connection]
<cmtptr>
here's why i wasn't in this channel! on feb 25th, following a netsplit: "04:58 -!- Cannot join to channel #forth (Channel is full)"
<cmtptr>
it was full??
<mirrorbird>
yes, elon musk posted about it and tens of thousands of people wanted to learn forth
<mirrorbird>
tweeted*
<f-a>
mhhh weird cmtptr
<f-a>
of the many things I can say about #forth, being «full» is not one of those
<mirrorbird>
stack overflow?
<f-a>
e.g.: Irssi: #haskell: Total of 1049 nicks [2 ops, 0 halfops, 0 voices, 1047 normal]
<cmtptr>
yeah
<f-a>
maybe freenode was under attack by the usual suspects
j has quit [Quit: K-Lined]
j has joined #forth
<mirrorbird>
who are they?
<cmtptr>
could be, there were notices about spammers sent a couple of days prior
<f-a>
↑ mirrorbird
<mirrorbird>
?
<f-a>
I meant: «what cmtptr said, mirrorbird»
jess has quit [Quit: K-Lined]
<f-a>
not that you were one of those unsavory people xD
<mirrorbird>
wow. i never noticed haskell has > 1000 people
<mirrorbird>
f-a, i am unsavoury, but i did not raid forth lol
mark4 has joined #forth
hosewiejacke has joined #forth
<mirrorbird>
i finished my 45 minute arithmetic forth interpreter :P
<mark4>
it takes 45 minuts to do anything or it took you 45 minutes to create it? :)
<mark4>
gotta be specific!
<f-a>
to finish it!
<cmtptr>
i think it's arithmetic optimized for 45-minute time units
<mark4>
:)
mark4 has quit [Remote host closed the connection]
mark4 has joined #forth
<mirrorbird>
nah it's a numbers + arithmetic operator forth subset interpreter
<mirrorbird>
i gave up on the assembly version
mirrorbird has quit [Ping timeout: 258 seconds]
mirrorbird has joined #forth
hosewiejacke2 has joined #forth
hosewiejacke has quit [Ping timeout: 245 seconds]
f-a has quit [Ping timeout: 265 seconds]
f-a has joined #forth
<mark4>
so my TUI demo code now has two windows moving all the way right, down, left then up in the opposite direction, one blue, one magenta, and on each pass they flipflop who overlaps who lol
<mark4>
need to change the way thats done internally so i can also puke out lorem ipsum in chinese in one window and english in the other :P
<mark4>
lol well. the chinese wont be lorem ipsum tho :P
gravicappa has quit [Ping timeout: 246 seconds]
dave0 has quit [Quit: dave's not here]
gravicappa has joined #forth
j is now known as jess
<mark4>
hi jess. still no response from chuck moore :/
<jess>
who's chuck moore
<mark4>
the inventor of the forth programming language
<jess>
you'll want him to do a group registration probs
<jess>
though we've been over this topic ad infinitum
<mark4>
my intent is to RESOLVE the issue per freenode policy. just giving you an update
<mark4>
i thought maybe you were hanging in here to monitor us or something
<mark4>
which is fine of course lol
<mark4>
or you can learn forth :)
<jess>
i'm in something stupid like 250 channels
<mark4>
aha :)
<jess>
but also i was interested in what goes on in the forth world
<jess>
and also some of my mates are here so why not
<jess>
lookin @ u astrid
<mark4>
:)
<mark4>
forth is not a very well accepted language in the industry because its 99.99% different from modern CS thinking
<mark4>
no data types for example :)
<mark4>
RPN also scares the skript kiddiez away
<mark4>
how can you manage being in so many channels at once?
<boru>
Have you recently been made a chanop here? Why the sudden urge to forward to ##forth or get Chuck Moore involved?
<jess>
i've got adhd
<boru>
The access lists the flags as being modified two days ago.
<jess>
mark4 claims they used to own the channel and are looking to regain ownership
<mirrorbird>
the forth world lol
<mark4>
jess actually i am just looking to get ownership on ANY current oper, crc would be a good choise, i never really claimed ownership, just stuardship :)
<mirrorbird>
where ten people live in one stack
<jess>
mirrorbird: is your account name an anagram
<mark4>
the channel is kind of in limbo till we have a real founder again :)
<mark4>
i dont actually care if it is me or someone else :)
<mirrorbird>
jess, what is my account name
<jess>
jewsdid911
<jess>
but a bit scrambled
<mirrorbird>
i wasn't aware of that
<boru>
Ah, I just see the +F founder flag on the placeholder account.
<jess>
i think you've had other choice account names haven't you
<mirrorbird>
such as?
<boru>
What happened? Was the nick purged in that recent DB cleanup?
<jess>
i'd have to check my logs
<mark4>
boru probably :)
<jess>
boru: april 2020
<boru>
Aha.
<mirrorbird>
i think you have a conspiratorial mind
<mirrorbird>
it's funny. i haven't used this account for at least a year, and i didn't notice anything weird about it
<boru>
I guess the +f users on the access list could vote.
<boru>
At least two are active, I think.
<mirrorbird>
jess, you have adhd or just kiddin?
<mark4>
boru who else has +f and how to i see that list?
<boru>
/msg chanserv access #forth list
<mark4>
and their vote wont actually count
<boru>
Why not?
<mark4>
because freenode policy
<jess>
i have adhd :)
<boru>
I'd say the spirit of the channel is more important.
<mirrorbird>
me too
<mark4>
it would take someone who defines what forth is (i.e. chuck moore) to register
<mirrorbird>
in other words, the channel needs more chuck
<boru>
It seems like a minute detail to make a song and dance over, imho.
<mark4>
jess so do i but i can write my own forth compiler for any processor you put in front of me thats not insane like microchip processors :P
<jess>
yeah mood
<veltas>
Somehow I doubt Chuck Moore would care to do anything other than send an email of endorsement
<veltas>
If you can even get that
<mark4>
boru i WOULD agree but this is not my server so when in rome...
<veltas>
That's the situation with a lot of semi-official Freenode channels, really. IRC is not top of most important tech peoples' minds
<mirrorbird>
mark4, help me with my forth interpreter :P
<mark4>
i got a verbal endorsement from him when he visited here 20 ish years ago. it was never made official with freenode but prior to his death lilo gave up arguing with me lol
<jess>
well you can just register ##forth, set a forward on here and call it a day
<jess>
but whatevs
<mark4>
actually crc did
<mark4>
i like #forth, im kind of attached to the name lol.
<jess>
i hate people invoking the name and death of lilo
<mark4>
crc already regged ##fortgh
<jess>
we don't take primary namespace channels away from non-official channels but we don't help people regain ownership of lost access in the primary namespace without a group registration
<jess>
so i don't know what lilo was arguing with you about
<mark4>
probably does not happen much any more
<boru>
Anyway, it's Saturday, and it's whiskey o'clock.
* boru
absconds.
<mark4>
what kind of whiskey
<veltas>
Agreed
<mark4>
and what other than whiskey do you put in it?
<boru>
Irish, and no, I'm Irish. That's a sin.
<mirrorbird>
i almost bought beer. almost :(
<boru>
Specifically Redbreast 12.
<mark4>
and its only 2pm here and im out of whiskey
<boru>
Really absconding now.
<veltas>
My paternal line is Irish ... probably
<mark4>
i like evan williams tennessee whiskey too
<mirrorbird>
isn't everyone in the us like 1/2,1/4,1/8,1/16,1/32 irish?
<mark4>
not a fan of scoth or irish whiskey tho
<veltas>
I'm not in the US but who knows mirrorbird
<mark4>
SPECIALLY not with water in it, that actually makes me puke. i can drink it straight, the water makes it pissy
<mark4>
actually you dont DRINK whiskey, its for sippin :)
<veltas>
I struggle to drink whiskey of any sort
<veltas>
Or sip
<mirrorbird>
for each american there exists an x such that 1 out of their 1/2^x most recent ancestors were irish
<inode>
sippin from the lid of a mason jar?
<mirrorbird>
wait. 2^x*
<veltas>
mirrorbird: cool story bro
<crc>
iirc, I registered ##forth and set it to redirect here at some point
<mirrorbird>
can you slurp when you sip whiskey?
<mark4>
can someone that has +f give +f to someone else? i literally have NO idea how the people i gave +o to also got +f
<mark4>
no objection to it but confused lol
<crc>
mark4: yes
<mark4>
and fore the life of me i cant remember who foucist is lol
<mark4>
but he was the only one i knew with +f
<crc>
You, me, and foucist should all have +f now
<mark4>
i dont seem to have it
<mark4>
but thats fine
<mark4>
kc5 still has +f tho lol
<mark4>
oooh. i DO have +f i was just at the bottom of the list below view :)
<mirrorbird>
what is +f
<boru>
Looks like foucist deserves the +F according to the access list.
<boru>
mirrorbird; /msg chanserv help flags
<mark4>
i dont care if i get founder status, just that SOMEONE does eventually, if we can get Cm to help
<mirrorbird>
this channel has been around for 20 years and you're still talking about it? :P
<mirrorbird>
i mean, who's a founder
<mark4>
i created it 20 years ago with I440r nick which died :)
<mark4>
i literally sat in this channel ALONE for over a year before anyone noticed it, then for about a year i got a few fly by's and then after a year i had a few regulars stay in... then i got 284598254 bots lol
<mark4>
i wonder what kc5 is up to these days. if he ever finished his OS he was writing
<mirrorbird>
i wonder if the bots were written in forth and tried to find their home
<crc>
He's still working on his kestrel computer project (now named "forthbox")
<crc>
Yes, he's still active on mastodon and Twitter
<mark4>
i dont use either :)
<mark4>
i never even heared of mastodon :)
<mark4>
wac considering joining parler but to do that you have to give them your phone number. you cannot register without giving them your phone number.
<crc>
Mastodon is a decentralized social network
<mark4>
a student of two martial arts (don't worry; he's still rather poor at them, so you're still safe around him. Or not, depending on your point of view).
<mark4>
lol
<mark4>
you can tell him he is welcome to come fly by or stay here :)
<crc>
He's not really interested at this point. He's left both this channel and comp.Lang.forth over past issues with others :(
<mirrorbird>
he sounds like a bit of a forth extremist
<crc>
He's fine; we're all opinionated here
<crc>
And we did have some stretches with really negative people here that were a turnoff to people
<mark4>
i would defend, do the death if need be, YOUR right to hear MY opinion!
<mark4>
he is a certifiable nutcase... in the good way
<crc>
Options are fine; actively trolling and discouraging any use of forth is not
<mark4>
agreed
<mark4>
who was that that did that again? i forget. err nvm dont remind me lol
<mark4>
he was the only person i agreed should get the +b here
<crc>
ASau/DGASAU was a big one
<crc>
There were a few others who received +q or a temporary ban
<mark4>
hea he was the one lol
<mark4>
probably went back to trolling CLF, not sure you can be banned from CLF
hosewiejacke2 has quit [Ping timeout: 245 seconds]
<patrickg>
you can't. people can just add you to their killfile one by one, so that eventually you have nobody who reacts to you (which seems important to that kind of people)
<joe9>
it is part of this routine it is called while searching the dictionary by interpret http://ix.io/2RVf
<mark4>
looks liek its initializing a loop maybe? hi/lo for DO loops?
<mark4>
usually not done quite that way but that can work
<mark4>
in forth you can do begin while repeat loops or begin again loops
<inode>
i think it's moving the top 2 cells of the data stack to the return stack, if the commentary at the top of ff-i386.s is applicable about "TOS: eax" and "RP: ebp"
<crc>
I think it's moving two values to the return stack
<mark4>
begin again is literally an unconditional branch from the again to the begin
<mark4>
with begin while repeat there is a test between begin and while and if it fails it branches past the repeat, the repat is an unconditional branch back to the begin
<mark4>
heretics like me have been nown to do begin while until else then loops :)
<inode>
joe9: compare doinit to rpush, it does something similar with just the TOS by the looks of it
<joe9>
thanks.
<mark4>
think of the WHILE as a IF so its begin do this if do this and repeat and loop here else alternate end of loop then
* crc
dislikes the complete lack of any useful comments or documentation in this
<KipIngram>
Boo. MacPorts won't install the gEDA electronics tool suite.
<mark4>
correction: think of the WHILE as a IF so its begin do this if do this and repeat END loop here else alternate end of loop then
<KipIngram>
I suspect it's a 32-bit/64-bit thing; I've recently been forced to upgrade to Big Sur, and it's dropped 32-bit support.
<KipIngram>
So I've got a nice PCB layout tool installed with no way to make schematics. :-(
<joe9>
I think I got it. Thanks guys.
hosewiejacke2 has joined #forth
<KipIngram>
I'm half-tempted to try to write my own text-based schematic editor. The PCB tool eats human readable netlist files.
<joe9>
crc, what are you talking about ? ff? I find it easy to understand.
<crc>
joe9: just personal preference
<mark4>
kip if you help me with my text user interfae that might be of use to you ;)
<joe9>
crc, oh, ok. but i am a noob so my opinion does not count.
<joe9>
crc, is there a forth you prefer that is easy to port. I do not want to go the c route.
<crc>
No, all opinions count
<mark4>
joe9: your opinion is as invalid as everyone elses :)
<crc>
I just personally prefer sources with more commentary :)
<crc>
How do you define easy to port?
<mark4>
what crc said
hosewiejacke2 has quit [Client Quit]
<mark4>
NO source, no matter how well written is "Self commenting"
<mark4>
period
<crc>
forth builds up from ~30 primitives
<crc>
Eforth
<mark4>
thats literally my ONLY real critisism of the Linux Kernel sources
<joe9>
i have heard a lot about eforth.
<mark4>
and why you wont catch me dead looking at them hhe
<mark4>
eforth is ultra simple!
<joe9>
oh, really. I found this forth simple. I have not explored eforth at all. any good reading material to understand it.
<mark4>
this forth is will baden?
<joe9>
s/this forth/felix forth/
<joe9>
the ff
<mark4>
oh
* crc
doesn't know much about portability in a forth sense; my Forth is written in assembly and Forth; I achieve portability by implementing my underlying architecture on different systems
<inode>
joe9: try "eForth and Zen"
<crc>
(My prior systems were in x86 assembly, with support for different OSes, but that'd a different kind of portability)
<mark4>
portability in any language is a myth anyway
<mark4>
ftp://ftp.taygeta.com/pub/Forth/Compilers/native/unix/Linux/linux-eforth-1.0e.tar.gz <-- thats a linux port of eforth
<mark4>
i notice my forths dont make the list on that site lol
<mark4>
maybe if i was slightly less anti ans for th :P~
<joe9>
thanks.
<crc>
The majority of forths aren't listed on forth.org
<mark4>
true
<mark4>
so in a custom prinf do you thin it would be ok for some %? character to eat more than one parameter ?
<mark4>
for example i might want to change my foreground color to some RGB values so "... %R ... ", RED, GREEN, BLUE);
<mark4>
i might need to make it something like %Rf or %Rb for foreground and background
<inode>
most users would expect just one to be consumed for each format string introducer, but if you're going through a va_list and consuming arguments via va_arg, nothing really stops you from taking as many as you like
<mark4>
yea
<inode>
were you thinking of something like a composite %Rf;b?
<mark4>
yes
<mark4>
also need to add ability to set gray scale values for fg and bg and also normal color values from 0 to 15
<mark4>
question: should i abort printf if vlaues are out of range or mask them into range :)
f-a has quit [Ping timeout: 276 seconds]
<inode>
i guess trippy user interface colour schemes become a visual indicator of possible stack corruption? :)
<mark4>
lol
<mark4>
or malformatted printfs :P
<inode>
what are you expecting to be passed?
<mark4>
3 values in the range from 0x00 to 0xff. one for red, one for green, one for blue
<mark4>
for normal colors and gray scales im thinking %fc for colors and %fs for gray scales (foreground). and %bc %bs for background
<mark4>
for colors thr range is 0 to 15, for gray scales its 0 to 20
<veltas>
joe9: My REPEAT is literally : REPEAT POSTPONE AGAIN POSTPONE THEN ; IMMEDIATE
<inode>
chars usually get promoted ints for variadics, so if you access each channel argument as an int and cast it to an unsigned char, no need for any error checking if you're fine with just taking the least significant byte as the channel value/shade?
<veltas>
And I think a lot of them are
<inode>
ie. (unsigned char)va_arg(list, int)
<mark4>
what is the then for?
<inode>
then modulo to the respective range if necessary
<mark4>
ya
<mark4>
or halt and catch fire
<veltas>
Yeah the variadics get the old K&R style argument promotions, because there is no prototype info for the additional args so it has to 'guess' like in the old days
<veltas>
And we have to do the annoying extra casting
f-a has joined #forth
<inode>
i thought i smelt a toner cartridge burning somewhere
<mark4>
normally i avoid division but this is i/o so already relativly slow
<veltas>
Meanwhile the standard is still adding functions that take an int in the prototype that's meant to be a character, and requires you cast it to unsigned char, even though they could have made the type unsigned char thus requiring no cast
<veltas>
I know it would be less consistent but why be consistent with broken
<joe9>
what is the usual forth word to print the whole stack?
<boru>
I'd not call that broken, but I agree that it's silly; the promotion of char to int was to allow getchar and friends to present errors. That said, signedness should not matter (not be relied on) for char.
<mark4>
.sa
<mark4>
erm .s
<joe9>
ok, thanks.
<mark4>
its non destructive, everything is still on the stack after
<boru>
char isn't meant to be signed or unsigned. It's just supposed to be a type to hold a human-readable character.
<mark4>
i also implement an unsigned version
<boru>
And its signedness differs from implementation to implementation.
<joe9>
mark4, thanks.
<mark4>
i never use char or int or any of those. ill use uint8_t, uint16_t or uing32_t or int8_t... . . .
<veltas>
boru: "the promotion of char to int was to allow getchar and friends to present errors". It was used for this, but it's due to the K&R rules for parameter passing. It's a common source of errors, that C standard library functions typically require a cast to unsigned char.
<boru>
Don't get me wrong, I'm not defending it. I've been writing C for a long time, and I'll be the first to air my grievances with it's utterly bonkers design deicisions.
<veltas>
And yes char can be either signedness, but given it's often signed and you typically aim to write mostly portable C code anyway
<boru>
s/it's/its
<veltas>
It's not bonkers design, it was quite sensible with K&R C and became redundant with prototypes
<boru>
I don't agree, but I'm also too tired to argue my position.
<veltas>
You're right though that the signedness *shouldn't* matter
<veltas>
Forth standard efforts have a far greater sin of making characters not necessarily 1 byte
<patrickg>
C also defines char to be at least 8 bits
<veltas>
FYI I'm not talking about it being 8 bits, I don't consider a byte to be necessarily 8 bits, I mean what the standard refers to as an "addressible unit"
mirrorbird has joined #forth
<veltas>
boru: Please don't tell dad I complained about C again
<mark4>
char is always 8 bits. word is always 16 bits, dword is always 32 bit and qword is always 64 bits. PERIOD
<mark4>
grrr
<mark4>
a WORD is not always equal to CELL size or else word and char would have both been 8 bits on 8 bit forths
<mark4>
byte/char same diff
<veltas>
Tell that to powerpc
<veltas>
mark4: If you think char not being 8 bits is bad, then imagine ans/f200x where it's not even guaranteed to be 1 address unit
f-a has quit [Ping timeout: 256 seconds]
f-a has joined #forth
<mark4>
lol
<mark4>
char can be multiple bytes in utf8, i can accept that
<mark4>
utf8 is a necessary evil
<mark4>
so BYTE is 8 bits, char might be
andrei-n has quit [Quit: Leaving]
Croran has quit [Quit: Croran]
tech_exorcist has joined #forth
mirrorbird has left #forth ["Leaving"]
<joe9>
normally ." string" -- prints string at the repl,correct?
<joe9>
or, is it only used within definitions?
<f-a>
yeah
<f-a>
but I would use \ instead of -- :P
<joe9>
oh, ok. for comments, makes sense.
<f-a>
where are those used bar from Haskell and SQL?
<joe9>
I used to use haskell a lot. old habit, I guess.
<inode>
: -- POSTPONE \ ; -- here!
<f-a>
nice to find a fellow haskeller
<joe9>
not anymore. I got sick of it's lazy handling.
<joe9>
C was better for something that I wanted to work reliably.
<joe9>
more stable once the initial development was done and the programs kept to a certain size.
<joe9>
I find that there are different forth coding styles especially with stack comments. Any recommendations for a good reference?