<tabemann> it only works if the calling word has put nothing on the return stack aside from its caller
<tp> but wont that happen anyway when case completes ?
<tp> as is usual for Forth
<tabemann> as a result I wouldn't recommend it as a control structure
<tabemann> no
<tabemann> because it's for returning not to the calling function but the caller of the calling function
<tp> oh yeah it will just go to the next word in the program!
<tp> obviously I've never done anything like this so far
iyzsong has joined #forth
<tp> there is way too much programer-fu in this for me
<tabemann> I've never used rdrop exit and think it's a bad idea
* Zarutian_HTC keeps his silence on jump tables and such
<tp> tabemann, does every CASE fallthru value require a SWAP ?
<tp> ill never use it myself, it's obviously hard to debug as this guy cant work out why his program above fails
<tp> Zarutian_HTC, LOOKOUT!!! HORIZONTAL FANG!
<tabemann> all catch-all code requires SWAP or like to be able to return values
<tp> tabemann, wow, Ive learnt something MAJOR today then
<tabemann> okay, I'm gonna have dinner in a moment
<tp> tabemann, thanks for the advice :)
<tabemann> bbl
<tp> tabemann, I'll pass it on to the user
* Zarutian_HTC doesnt see any stalicites
<tp> hahah
<tabemann> back
<tp> welcome back!
* tabemann doesn't know why zeptoforth is so huge...
<tp> only 20kb ?
<tabemann> yeah
<tp> thats not huge
<tabemann> the extras are even more huge
<tabemann> with the extras it takes up about 64K
<tp> does your Forth have anorexia ?
<tp> aha
<tp> well your extras are all in Forth so theyre going be 3x the size of the utils in Mecrisp-Stellaris ?
<tabemann> there is space wasted in there, though, as zeptoforth is designed to have its dictionary start on a flash erase page boundary
<tp> ok.
<tp> see min
<tp> 000016E8: DC00 bgt 000016EC
<tp> 000016E6: 42B0 cmp r0 r6
<tp> 000016E4: CF01 ldmia r7 { r0 }
<tp> 000016EA: 0006 lsls r6 r0 #0
<tp> 000016EC: 4770 bx lr
<tp> Bytes: 10 ok.
<tp> yeah, same problem with Mecrisp-Stellaris
<tp> start and end on a page boundary iirc
<tp> I had to increase the flash size of Mecrisp-Stellaris for STM32F103 as the release too tight to add anything
<tp> so I had to waste a whole page
<tabemann> okay, the extras take up 24K
<tp> thats a little smaller ;-)
<tabemann> but mind you, there is no disassembler in there
<tp> all the utils for Mecrisp-Stellaris are written is assembler only the user contribs and larger programs are written in Forth but a fair few of those use inline machine code for speed when needed
<tabemann> whereas all the utils for zeptoforth are in forth
<tp> and a dissembler is fairly large
<tp> yeah, hence a lot bigger, so unless you start rewriting them in assembler, you wont able to reduce them a lot
<tp> I guess thats what you should do next ? start rewriting what you can in assembler ?
<tp> your binary is probably larger because it's in thumb2 ?
<tabemann> thumb2 is actually more efficient in ways
<tabemann> I've tried to use 16 bit instructions as much as I can
<tabemann> but some things, like literals andcalls, are oftentimes best expressed with 32 bit instructions
<tabemann> literals can be 16 bit in one 32 bit instruction, and 32 bit in two
<tabemann> and calls are always 32 bit in zeptoforth but that allows quite a bit more range before a literal with blx is needed
<tp> but efficient how, speed or size ?
<tp> or programmer friendly ?
<tabemann> speed because oftentimes a single 32-bit instruction can replace two 16-bit instructions
<tabemann> size because literals are more compact than big chains of 16-bit movs, lsls, and orrs instructions
<tp> arent speed and size usually opposite in terms of advantages ?
<tp> i guess one proof is that the size of Mecrisp-Stellaris for cortex-mo is small with everything ?
<tp> yet it's not that fast
<tp> cortex-m3 is on average 3x - 5.8x faster at the same clock speed in my simple tests
<tabemann> how does it not create big movs, lsls, and orrs chains
<tp> it does, and at times it will refuse to jump
<tp> with a 'jump too far' message
<tp> but splitting off another word always fixes it
<tp> i guess it's a statistical thing ?
<tp> how many times does a user app jump far ?
<tabemann> like a 32 bit literal is four movs instructions, three lsls instructions, and three orrs instructions
<tp> yes
<tabemann> that's 20 bytes
<tp> yes
<tp> but only for 32 bit literals
<tp> most short words are fine
<tabemann> whereas a 32 bit literal in thumb-2 is a movw and a movt instruction, comprising just 8 bytes
<tp> it's statistical, you could make a code analyser ???
<tp> print out the summary ?
<tp> that would be cool and as a user app it doesnt need to be small
* tabemann doesn't feel like writing code to parse compiled code though; e.g. I could write a disassembler, but am of the opinion that someone can always dump the code and feed it into radare
<tp> i use the dissambler all the time
<tp> it's a massive pain to feed machine code into radare2
<tp> I did start writing a word to dump single words to the screen
<tp> my plan was to add the mcu startup code to the word contents to make standalone binaries I could test
<tp> and also study in RA2
<tabemann> I wrote a basic DUMP word, and could also extend ihex to be more general
dave0 has quit [Quit: dave's not here]
<tp> but frankly a "see' word is infinetly more useful and far easier
<tabemann> my issue is that zeptoforth is already 64K in size
<tp> if your users cant 'see' their words I'd expect a lot less users
<tabemann> it's big and it's bloated
<tp> why does that matter when you have 1MB of flash ?
<tabemann> because I expect I might want to port it to smaller platforms someday
<tp> what is the binary size of a mucropython ? 250kB ?
<tabemann> tis true
<tp> or a lot more
* tabemann amused by calling micropython "mucropython"
<tp> tabemann, I recommend you relax about the size, after all one day you might modify hashforth to be a 'tethered Forth for cortex-mo :)
<tabemann> lolol
<tp> no one cases if a pc Forth is 500kb
<tp> or more
jedb_ is now known as jedb
<tabemann> okay next thing then - write a disassembler for zeptoforth
<tp> thats a great plan
<tabemann> that'll take me a while, and will justify another minor version bump
<tp> definitely
<tp> youre up to what now 0.00001274 ?
<tp> ;-)
<tabemann> I'm at 0.4.1
<tp> hehe
<tp> I'm just not a semantic versioner I find
<tp> I dont have what it takes!
<tp> FAILED!!
<tp> oh the shame, the inequity
* crc uses date based versions for releases, but may change this to just use the fossil commit hash as a version number
<tp> i reached right down into my tin of 'programmer skillz' as well but all I found was a rusty old nail
<tp> crc, which is what I started doing after you kindly told me how to shorten the hash
<tp> f103-test-128kb/imageclones% tree
<tp> .
<tp> ├── 8e7ceaf09ca64ff090b4147e3ab3727f.DELETE.sh
<tp> ├── 8e7ceaf09ca64ff090b4147e3ab3727f.README.md
<tp> ├── 8e7ceaf09ca64ff090b4147e3ab3727f.bin
<tp> ├── 8e7ceaf09ca64ff090b4147e3ab3727f.flashme
<tp> ├── 8e7ceaf09ca64ff090b4147e3ab3727f.words4.txt
<tp> oops
<tp> thats my horrible old version
<tp> f0-touch/imageclones% tree
<tp> ├── f0-touch.acfddf92d7.DELETE.sh
<tp> ├── f0-touch.acfddf92d7.README.html
<tp> .
<tp> ├── f0-touch.acfddf92d7.bin
<tp> ├── f0-touch.acfddf92d7.flashme
<tp> ├── f0-touch.acfddf92d7.source+.fs
<tp> ├── f0-touch.acfddf92d7.source-.fs
<tp> ├── f0-touch.acfddf92d7.words4.txt
<tp> there, thats the latest crc assisted contents of my automated tarball releases
<tp> thats the complete project details for a cortex-m touch pad system
<tp> a non forther can flash the binary and it starts reading the value of a connected touch pad so they can make up and evaluate different sizes of pad
<tp> a forther can load the binary, execute 'eraseflash' and strip everything but the base Mecrisp-Stellaris kernel then edit the f0-touch.acfddf92d7.source+.fs as desired and upload it to the target
<crc> Nice
<tp> this system is IDE independent and works like any traditional forth, tho Id hate to use a 200ms EOL'd serial upload on the large source file, even the f0-touch.acfddf92d7.source-.fs with all comments stripped
<tp> crc, it means I can appeal to the non Forth world and the Forth world at the same time
<tp> crc, I find startup menues are really popular with non Forth windows users
<tp> they dont care that it's Forth as long as all they have to do is select a menu ( 1 - x) to make stuff happen
<tp> naturally there is a menu that says "learn about forth" in every one :)
<crc> How many look at that item? ;)
jsoft has joined #forth
<tp> I've no way of knowing
<tp> but I'm tempted to reply "the inquisitive ones?"
<tp> most are windows users and I supect not many, but it's there at least and they see the word "forth" even if they dont look
<crc> true
boru` has joined #forth
boru has quit [Disconnected by services]
boru` is now known as boru
<tp> and I'm only trying to reach those like myself who are inquisitive, I couldnt care less about those who arent, in fact I hope theyt dont look
<tp> from time to time I'll get a desperate cry for Forth help, some emails are quite sad, they want me to do everything to solve a simple Forth problem that they could solve eventually if they learned any Forth
<tp> I dont even bother to reply, my time like everyone else on here is limited, users have to make a decent effort first or I wont help them
<tp> in a way, the price of Forth entry is pretty steep, and I think that's good, it weans out those who arent prepared to learn anything
<crc> I used to reply to every request for help with Forth and assembly that I received, but I had a lot more energy and free time back then. (And my rsi issues were much less troublesome)
<tp> you have my every sympathy, Ive had RSI and it rates on my 99% most painfull things
<tp> and I've had 8 broken bones, a shattered femur and lots more
<crc> :(
<tp> I'm still kicking!
<tp> i also was pretty keen helping new Forth users, but some once you help just keep asking one simple question after another
<crc> The only bone I've broken was in my right foot; that's still giving me some issues 16 years later. Hope to never break another...
<tp> all they want is to get their project done, once it's finished, I never hear from them again
<tp> well a foot injury is very painful
<crc> This is why I try to write good documentation; it's best if I can just point to that or existing examples and let them work through things until they understand
<tp> I've never had one luckily, probably my choice of strong boots'
<tp> crc, agreed 100%
<crc> I fell off a ladder two nights before Christmas and landed all my weight on my right foot. Got a broken bone and a mild concussion from that.
<tp> of course for every 10 lame user emails I'll get one from some smart dude that *really* impresses, and I'm "wow!"
<tp> ouch, that can cause serious injuries especially if you land on your head
<tp> older people tend to smash their hip, and go to hospital for ages, not something you want to do atm with Coronavirus
<crc> I don't get many support requests now. My Forth is far enough from traditional ones to not attract too much attention and close enough for anyone familiar with forth to pickup without too much hassle
<tp> my ex father in law fell over and broke his hip at about 78 years old, he spent about 6 months in hospital while they thought about ways to fix it, and he caught the flu while there and died
<tp> his bones were fragile etc
<crc> :(
<tp> crc, and you do have outstanding doc
<tp> that was just the common old flu, and he was a smoker
<tp> I stay away from ladders now
rdrop-exit has joined #forth
<rdrop-exit> good morning Forthwrights c[]
<crc> good evening rdrop-exit
<rdrop-exit> :)
<tp> goot morgen Zem Forth Guru!
<tp> -m+n
<rdrop-exit> bonjour Maitre Technicien du Forth :)
<tp> :)
<rdrop-exit> (tm)
<tp> sadly no palour view fron say here
<rdrop-exit> :))
<tp> I can only speak ozzie
<tp> g'daymateowsitgoin ?
<rdrop-exit> meatpie?
<tp> we just call them 'pies'
<tp> saying 'meat pie' risks our mouth being open so long a fly may buzz in for a butchershook (look)
<rdrop-exit> haven't been in Australia for at least 20 years
<tp> it hasnt changed much, still hot and arid
<tp> where did you visit ?
<rdrop-exit> Perth
<tp> where i was born
<tp> lovely little town to spend ones senility in the later years
<rdrop-exit> attended a DEC conference, I can't remember if it was just before or after they got acquired by Compaq
<tp> the good old days
<tp> I remember the DEC building
<tp> I remember the Burroughs building ...
<rdrop-exit> cool
<tp> I remember when Captain Cook sailed up the swan river taking pot shots at the Aboriginies in 1793
<tp> ok, one of those was a blatant lie
<rdrop-exit> found a bunch of DEC related stuff in a box the other day
<tp> they were legends once
<rdrop-exit> a brand new Lacoste-style DEC shirt, doen't fit me unfortunately
<rdrop-exit> will give it to one of the boys
<tp> probably end up as a rag
<tp> kids dont care
<rdrop-exit> a nice DEC cross pen, I'll keep that
<tp> gold ?
<rdrop-exit> no, but cool nonetheless
<tp> ;-)
<tp> dec developed stuff that people couldnt imagine now
<tp> I once had to upgrade the firmware in a DEC VMS host at a clients office
<tp> it was on a polled multi drop network and Id already done all the other machines on that network
<tp> I get to the client office (stockbroker) and ask for access to the box but I'm met with responses of "what box?"
<tp> I can see all the Reuters financial terminals in the office, theyre all working and I know the box is online as I can see it's "ACKS"
<tp> but sure enough, NO BOX
<tp> we search high and low, nope no very large box that takes two men to carry
<tp> so we get the building mananager up to the floor, he tells us they had renovations about 3 years ago and of course all the staff in this office had changed in that time
<tp> turns out that the VMS box is there all right, sealed into a closet behind a new wall that went up 3 years before
<rdrop-exit> LOL
<tp> like the Cantebury Ghost, that VMS box has performed perfectly the last 3 years sealed up behind a wall
<tp> try that with a windows box sometime
<rdrop-exit> wow
<tp> DEC knew how to build stuff, they were legends to me
<rdrop-exit> cool story
<tp> and true, i was there, it's my story
yunfan has joined #forth
<yunfan> back, any news?
<tp> now those stockbrokers on take on average 5 seconds to harass me if a terminal is down as thats their live stockmarket access
<tp> on average
<rdrop-exit> hi yunfan
<tp> g'day yunfan
<rdrop-exit> yunfan, yes, I think the Forth community has grown from 42 to 44
<tp> so 3 years+ utterly unattended sealed behind a wall, zero issues, VMS
<tp> explosive growth!
<yunfan> rdrop-exit: haha
<rdrop-exit> VMS was a major influence on Windows-NT
<tp> so I heard
<rdrop-exit> Dave Cutler
<tp> yes
<tp> but thats ancient history
<tp> all the good die young
<yunfan> ms had focus on linux ecosystem now
<rdrop-exit> I have no dog in that fight
<tp> yunfan, I think everyone does
<tp> but I also have no dog in that fight as I dont use Linux
<rdrop-exit> me neither
<rdrop-exit> or MS for that matter
<tp> ditto
<tp> I'm a unix user (freebsd) atm
<tabemann> back
<tp> welcome back!
<rdrop-exit> wb
<tabemann> don't expect to see a disassembler for zeptoforth any time soon
<rdrop-exit> ok
<tabemann> it's going to take a while before it's ready
<tabemann> and I expect it to be big
<tp> tabemann, what, I was expecting it already!
<tabemann> lol
<tabemann> I'm also not going to include it in the full binaries
<tp> tabemann, I mean really, youve had 1.5 hrs already!
<tabemann> lol
<tp> tabemann, your boss told me it should only take 10 minutes!
<rdrop-exit> and he was right!
<yunfan> tp: including win32forth team? :]
<tp> tabemann, it's not in the Mecrisp-Stellaris kernel, but there is a version that gets built in the release tarball that includes it (using thumbulator)
<tp> yunfan, winwhat who ?
<yunfan> tp: win32forth? or winforth?
<tp> yunfan, I havent used windows since 1997, I have no idea what that is, but dont tell me, I'd rather not know :)
<tabemann> I installed emacs on my windows box for work yesterday
<rdrop-exit> LMI had a Windows Forth
<tabemann> I wanted to use emacs macros, and none of the other editors compared, except for notepad++ (but I've never used their macros)
<tabemann> *allegedly
<rdrop-exit> just use Forth :)
<tabemann> I had been writing python scripts to automate things, but those are much slower and more painful to write than a simple emacs macro that does the same thing
* tp is still lurking on the outskirts of LISP
<tp> it's hard to teach a old tp new tricks
<tabemann> if I need to write a big project for Linux I'd probably go back to Haskell
<tabemann> the other alternative would be to use hashforth, but I'd be forced to write interfaces for everything necessary, which may be a bit much (e.g. full socket interface or GTK+ interface)
<tp> yeah, a lot of work
<tabemann> hashforth is much more mature, though, in ways than zeptoforth - it has much more complete multitasking support, it has a full line editor, it has extensive data structure libraries, etc.
<tabemann> you can have a processor exception occur at it will catch it
<tabemann> and it will print out a backtrace for you
<tp> it has full cappuccino making facilities ...
<rdrop-exit> and a shiny aluminum kitchen sink
<tabemann> it even has a heap allocator
<tabemann> (written in forth!)
<tabemann> (not using malloc()!)
<tp> tabemann, Mecrisp-Stellaris also has calltrace
<tp> Unhandled Interrupt 00000003 !
<tp> 00000000 0000C0DD calltrace-handler
<tp> [1 ] 0000006E 00100000
<tp> Calltrace:
<tp> 00000001 FFFFFFF9
<tp> 00000002 00001824 @
<tp> 00000003 00000220 --- MS RA 2.5.1 tpmod ---
<tp> 00000004 00001824 @
<tp> 00000005 00000020
<tp> 00000006 FEFBAFF7
<tp> 00000007 00004683 interpret
<tp> 00000008 00001824 @
<tp> 00000009 01000000 init.calltrace
<tp> 0000000A 0000BF2D redstack.prompt
<tp> 0000000B 000046DD quit
<tabemann> hashforth also allows you to continue executing even after a processor exception
<tp> but the halt isnt a Mecrisp-Stellaris issue, cortex-m0 is halted in hardware after a #3 exception
<tp> notso in cortex-m4
<tp> #3 is a 'hardfault'
<tp> but it's no biggie, just a reset button push to fix
<tp> *.DELETE.sh : Deletes all the release files, used in testing, ignore.
<tp> *.README.html
<tp> Project notes and guide
<tp> hey, which format looks better ?
<tp> the top or bottom ?
<tp> the top is file name and description on one line
<tp> bottom theyre on two lines
<tabemann> depends on how lengthy the descriptions and file names tend to be
<tp> yeah, and they vary
<tp> it's a hard call
<tabemann> the lengthier they tend to be, the more likely one should put them on separate lines
<tabemann> that said, what matters most is to be consistent
<tp> tabemann, veltas now has received his L476 Disco, so I imagine he well be trying Zeptoforth at some point :)
<tabemann> cool
<tabemann> I should hit the sack, so I'll call it a night
<tabemann> g'night guys
<tp> night tabemann
<rdrop-exit> back
<rdrop-exit> goodnight tabemann, stay healthy
<tp> welcome back!
<rdrop-exit> thanks
<tp> rdrop-exit, thats a big ask thesedys!
<rdrop-exit> yup
reepca` has quit [Read error: Connection reset by peer]
reepca` has joined #forth
reepca` has quit [Read error: Connection reset by peer]
reepca` has joined #forth
Blue_flame has joined #forth
reepca` has quit [Ping timeout: 244 seconds]
Blue_flame has quit [Quit: Blue_flame]
gravicappa has joined #forth
reepca has joined #forth
proteus-guy has quit [Ping timeout: 256 seconds]
WickedShell has quit [Remote host closed the connection]
mtsd has joined #forth
jsoft has quit [Remote host closed the connection]
mtsd has quit [Quit: mtsd]
mtsd has joined #forth
dys has joined #forth
reepca has quit [Read error: Connection reset by peer]
reepca has joined #forth
reepca has quit [Read error: Connection reset by peer]
reepca has joined #forth
mtsd1 has joined #forth
mtsd1 has quit [Client Quit]
reepca has quit [Read error: Connection reset by peer]
reepca has joined #forth
mtsd has quit [Quit: Leaving]
mtsd has joined #forth
mtsd has quit [Client Quit]
xek has joined #forth
mtsd has joined #forth
mtsd has left #forth [#forth]
mtsd has joined #forth
<veltas> tabemann: I've read that a good way to write a forth is to solve a problem and only write words as soon as they are needed
<veltas> And that is roughly what I have been doing, my first aim is to write a game, but I know at least I want a good portion of standard forth's core, so that is probably a bit of bloat in there
<veltas> Still not sure if I'll trim it later or go full standard so I can advertise it under that trademark
C-Keen has quit [Ping timeout: 250 seconds]
C-Keen has joined #forth
C-Keen is now known as Guest18165
Guest18165 has quit [Changing host]
Guest18165 has joined #forth
Guest18165 is now known as C-Keen
dave0 has joined #forth
dddddd has joined #forth
rdrop-exit has quit [Read error: Connection reset by peer]
rdrop-exit has joined #forth
TCZ has joined #forth
mtsd_ has joined #forth
mtsd_ has quit [Remote host closed the connection]
mtsd has quit [Ping timeout: 246 seconds]
rdrop-exit has quit [Ping timeout: 260 seconds]
TCZ has quit [Quit: Leaving]
iyzsong has quit [Ping timeout: 244 seconds]
Zarutian_HTC has quit [Ping timeout: 260 seconds]
Zarutian_HTC has joined #forth
TCZ has joined #forth
proteus-guy has joined #forth
Zarutian_HTC has quit [Ping timeout: 256 seconds]
Zarutian_HTC has joined #forth
Zarutian_HTC has quit [Remote host closed the connection]
TCZ has quit [Quit: Leaving]
TCZ has joined #forth
TCZ has quit [Remote host closed the connection]
mtsd has joined #forth
mtsd has quit [Client Quit]
mtsd has joined #forth
cheater has quit [Ping timeout: 260 seconds]
dys has quit [Ping timeout: 256 seconds]
cheater has joined #forth
xek has quit [Ping timeout: 260 seconds]
mtsd_ has joined #forth
mtsd has quit [Ping timeout: 264 seconds]
TCZ has joined #forth
mtsd_ has quit [Quit: mtsd_]
xek has joined #forth
xek has quit [Ping timeout: 265 seconds]
gravicappa has quit [Ping timeout: 240 seconds]
TCZ has quit [Quit: Leaving]
X-Scale has quit [Ping timeout: 258 seconds]
X-Scale` has joined #forth
X-Scale` is now known as X-Scale
jn___ has joined #forth
jn__ has quit [Ping timeout: 265 seconds]
X-Scale has quit [Ping timeout: 265 seconds]
X-Scale` has joined #forth
X-Scale` is now known as X-Scale
tabemann has quit [Remote host closed the connection]
tabemann has joined #forth