mark4 changed the topic of #forth to: Forth Programming | do drop >in | logged by clog at http://bit.ly/91toWN backup at http://forthworks.com/forth/irc-logs/ | If you have two (or more) stacks and speak RPN then you're welcome here! | https://github.com/mark4th
<crc> mark4: at home, so connection is more troublesome, but I get a segfault with the latest code from github. GDB shows: http://forth.works/share/2639635ccb8f28f36284994b9058bf2e
<crc> mark4: at home, so connection is more troublesome, but I get a segfault with the latest code from github. GDB shows: http://forth.works/share/2639635ccb8f28f36284994b9058bf2e
<mark4> console or virtual terminal?
<mark4> console or virtual terminal?
<crc> SSH to remote server (prompt, on iOS), I can try a different ssh client
<crc> SSH to remote server (prompt, on iOS), I can try a different ssh client
<mark4> ya
<mark4> ya
<mark4> i know im not handling all terminal types well
<mark4> i know im not handling all terminal types well
<crc> Ok, it works under the Blink ssh client
<crc> Ok, it works under the Blink ssh client
<mark4> phew lol
<mark4> phew lol
<mark4> ssh back in with the other and tell me what TERM is set to?
<mark4> ssh back in with the other and tell me what TERM is set to?
<mark4> also see with this one
<mark4> also see with this one
<mark4> what is TERM set to on the working terminal
<mark4> what is TERM set to on the working terminal
<mark4> export TERM=workking-term in the broken one
<mark4> export TERM=workking-term in the broken one
<crc> Term is xterm-256color on both
<crc> Term is xterm-256color on both
<mark4> hrm
<mark4> hrm
<mark4> weird
<mark4> weird
f-a has left #forth [#forth]
f-a has left #forth [#forth]
<mark4> then its not a terminfo problem
<mark4> then its not a terminfo problem
<mark4> so that makes it more onfuzing :)
<mark4> so that makes it more onfuzing :)
<mark4> i found a bug in GCC's static analysis tool :)
<mark4> i found a bug in GCC's static analysis tool :)
<mark4> have to file a bug report. tho its probably one they caught and fixed already
<mark4> have to file a bug report. tho its probably one they caught and fixed already
<crc> Not a big problem; it's part of why I have multiple ssh clients :)
<crc> Not a big problem; it's part of why I have multiple ssh clients :)
<mark4> you know of other apps that break depending on ssh client used?
<mark4> you know of other apps that break depending on ssh client used?
<crc> Not off the top of my head, but I've run into others occasionally over the years
<crc> Not off the top of my head, but I've run into others occasionally over the years
<mark4> kk
<mark4> kk
<mark4> escape should quit you now
<mark4> escape should quit you now
<mark4> and f10 should activate the meny bar if i checked that code in yet
<mark4> and f10 should activate the meny bar if i checked that code in yet
<mark4> i ferget
<mark4> i ferget
<mark4> cursor left and right should move the selected pulldown menu (that does not yet pull down)
<mark4> cursor left and right should move the selected pulldown menu (that does not yet pull down)
<mark4> and any disabled menu items (in gray) should be skipped
<mark4> and any disabled menu items (in gray) should be skipped
<mark4> when you do this the moving windows seem to occasionally bleed characters
<mark4> when you do this the moving windows seem to occasionally bleed characters
<mark4> or put them where they dont belong
<mark4> or put them where they dont belong
<mark4> need to investigate that
<mark4> need to investigate that
<crc> Esc does work, f10 pauses the moving windows; hitting left or right resumes the windows moving. (This may be due to the fact that I'm using a virtual keyboard as my physical one is currently not usable)
<crc> Esc does work, f10 pauses the moving windows; hitting left or right resumes the windows moving. (This may be due to the fact that I'm using a virtual keyboard as my physical one is currently not usable)
<mark4> aha
<mark4> aha
<mark4> you brokeded it? :)
<mark4> you brokeded it? :)
<crc> I need to flash a new firmware; the old layout is faulty (was working on some experimental stuff, but it's now unusable and I can't flash a new firmware until I get to work Monday)
<crc> I need to flash a new firmware; the old layout is faulty (was working on some experimental stuff, but it's now unusable and I can't flash a new firmware until I get to work Monday)
<mark4> aha
<mark4> aha
<mark4> what keyboard is it that you can flash fw to it?
<mark4> what keyboard is it that you can flash fw to it?
<crc> Ergodox EZ
<crc> Ergodox EZ
<mark4> i have the MX keys
<mark4> i have the MX keys
<mark4> but i dont use it because its over there wth my desktop collecting dust lol
<mark4> but i dont use it because its over there wth my desktop collecting dust lol
<mark4> it goes with me when i go on a contract
<mark4> it goes with me when i go on a contract
<crc> It's nice, but has too many keys and the thumb clusters aren't quite right (I only use one of them to minimize stretching my thumbs outward)
<crc> It's nice, but has too many keys and the thumb clusters aren't quite right (I only use one of them to minimize stretching my thumbs outward)
<mark4> learn to move your hand instead of stretching your thumb out
<mark4> learn to move your hand instead of stretching your thumb out
<mark4> not easy to UNlearn lol
<mark4> not easy to UNlearn lol
<mark4> start typing with one finger on each hand :p
<mark4> start typing with one finger on each hand :p
<mark4> dont use thumbs :)
<mark4> dont use thumbs :)
<mark4> so i added -Wextra to my CFLAGS and that uncovered a couple more problems in my code but nits really
<mark4> so i added -Wextra to my CFLAGS and that uncovered a couple more problems in my code but nits really
<mark4> i now have -Wall -Wextra -Werror :)
<mark4> i now have -Wall -Wextra -Werror :)
<mark4> 45864 file size when compiling with gcc.
<mark4> 45864 file size when compiling with gcc.
<mark4> 37440 file size when compiling with clang
<mark4> 37440 file size when compiling with clang
<mark4> gcc sux :P
<mark4> gcc sux :P
<MrMobius> mark4, are you sure that ratio holds as the program grows?
<MrMobius> mark4, are you sure that ratio holds as the program grows?
<mark4> pretty much yes
<mark4> pretty much yes
<mark4> its held so far at least
<mark4> its held so far at least
<mark4> and i really should not be growing too much more yet
<mark4> and i really should not be growing too much more yet
<mark4> i have some snafu;s to fix, glitches that im not one with at the moment
<mark4> i have some snafu;s to fix, glitches that im not one with at the moment
<mark4> and then i need to implement the PULLDOWN part of the pulldown menus lol
<mark4> and then i need to implement the PULLDOWN part of the pulldown menus lol
<crc> mark4: better to just remap keys to comfortable positions; I can ignore keys locations that are uncomfortable to reach
<crc> mark4: better to just remap keys to comfortable positions; I can ignore keys locations that are uncomfortable to reach
<mark4> :)
<mark4> :)
<mark4> if i ever win that w846523658432 billion dollar lottery ill help you get taht fixed :/
<mark4> if i ever win that w846523658432 billion dollar lottery ill help you get taht fixed :/
cartwright has quit [Quit: WeeChat 2.5]
cartwright has quit [Quit: WeeChat 2.5]
<crc> :)
<crc> :)
cantstanya has joined #forth
cantstanya has joined #forth
dave0 has joined #forth
dave0 has joined #forth
boru` has joined #forth
boru` has joined #forth
boru has quit [Disconnected by services]
boru has quit [Disconnected by services]
boru` is now known as boru
boru` is now known as boru
sts-q has quit [Ping timeout: 256 seconds]
sts-q has quit [Ping timeout: 256 seconds]
really3 has quit [Remote host closed the connection]
really3 has quit [Remote host closed the connection]
sts-q has joined #forth
sts-q has joined #forth
Zarutian_HTC has joined #forth
Zarutian_HTC has joined #forth
gravicappa has joined #forth
gravicappa has joined #forth
_whitelogger_ has quit [Remote host closed the connection]
_whitelogger_ has joined #forth
_whitelogger_ has joined #forth
_whitelogger_ has quit [Remote host closed the connection]
_whitelogger_ has joined #forth
_whitelogger_ has joined #forth
f-a has joined #forth
f-a has joined #forth
_whitelogger_ has quit [Remote host closed the connection]
_whitelogger_ has joined #forth
_whitelogger_ has joined #forth
f-a has quit [Read error: Connection reset by peer]
f-a has quit [Read error: Connection reset by peer]
f-a has joined #forth
f-a has joined #forth
tech_exorcist has joined #forth
tech_exorcist has joined #forth
f-a has quit [Read error: Connection reset by peer]
f-a has quit [Read error: Connection reset by peer]
f-a has joined #forth
f-a has joined #forth
dave0 has quit [Quit: dave's not here]
dave0 has quit [Quit: dave's not here]
batflu has left #forth ["Leaving"]
batflu has left #forth ["Leaving"]
andrei-n has joined #forth
andrei-n has joined #forth
Keshl has quit [Ping timeout: 240 seconds]
Keshl has quit [Ping timeout: 240 seconds]
andrei-n has quit [Quit: Leaving]
andrei-n has quit [Quit: Leaving]
lispmacs has quit [Read error: Connection reset by peer]
lispmacs has quit [Read error: Connection reset by peer]
lispmacs has joined #forth
lispmacs has joined #forth
Zarutian_HTC has quit [Ping timeout: 256 seconds]
Zarutian_HTC has quit [Ping timeout: 256 seconds]
Zarutian_HTC has joined #forth
Zarutian_HTC has joined #forth
Zarutian_HTC has quit [Remote host closed the connection]
Zarutian_HTC has quit [Remote host closed the connection]
f-a has quit [Read error: Connection reset by peer]
f-a has quit [Read error: Connection reset by peer]
f-a has joined #forth
f-a has joined #forth
<nihilazo> is there a non-awkward way to encode multiline strings in a forth program?
<nihilazo> is there a non-awkward way to encode multiline strings in a forth program?
<nihilazo> using \n in an S" adds a literal \n
<nihilazo> using \n in an S" adds a literal \n
<f-a> mhhh
<f-a> mhhh
<f-a> I mean
<f-a> I mean
<f-a> I thought it was possible
<f-a> I thought it was possible
<f-a> but apparently it is not
<f-a> but apparently it is not
<f-a> (to just go to a newline)
<f-a> (to just go to a newline)
<nihilazo> I'm not going to be storing these strings, just priting them. maybe I could just define words with ." and cr
<nihilazo> I'm not going to be storing these strings, just priting them. maybe I could just define words with ." and cr
<nihilazo> s/storing/operating on/, whatever
<nihilazo> s/storing/operating on/, whatever
f-a has quit [Quit: leaving]
f-a has quit [Quit: leaving]
<inode> S\" this line\nthat line\n"
<inode> S\" this line\nthat line\n"
<inode> non-standard/gforth-specific probably
<inode> non-standard/gforth-specific probably
<mark4> in x4 you can do string concat of sub strings
<mark4> in x4 you can do string concat of sub strings
<mark4> not sure about ans forth
<mark4> not sure about ans forth
<tabemann> hey guys
<tabemann> hey guys
tech_exorcist has quit [Remote host closed the connection]
tech_exorcist has quit [Remote host closed the connection]
tech_exorcist has joined #forth
tech_exorcist has joined #forth
<mark4> hi
<mark4> hi
<tabemann> for some reason I'm surprised eLua doesn't support the newer STM32 MCU's
<tabemann> for some reason I'm surprised eLua doesn't support the newer STM32 MCU's
<tabemann> only more reason to use Forth!
<tabemann> only more reason to use Forth!
<mark4> heh
<mark4> heh
gravicappa has quit [Ping timeout: 240 seconds]
gravicappa has quit [Ping timeout: 240 seconds]
gravicappa has joined #forth
gravicappa has joined #forth
* tabemann does wish more people'd try out zeptoforth
* tabemann does wish more people'd try out zeptoforth
xek has quit [Remote host closed the connection]
xek has quit [Remote host closed the connection]
xek has joined #forth
xek has joined #forth
gravicappa has quit [Ping timeout: 246 seconds]
gravicappa has quit [Ping timeout: 246 seconds]
dave0 has joined #forth
dave0 has joined #forth
<veltas> tabemann: I'd try it out if I had that CPU
<veltas> tabemann: I'd try it out if I had that CPU
tech_exorcist has quit [Quit: tech_exorcist]
tech_exorcist has quit [Quit: tech_exorcist]
* tabemann is frustrated that zeptoforth spontaneously started working while loading on the STM32F746 DISCO
* tabemann is frustrated that zeptoforth spontaneously started working while loading on the STM32F746 DISCO
Keshl has joined #forth
Keshl has joined #forth
<veltas> inode: S\" is standard
<veltas> inode: S\" is standard
<tabemann> yeah, zeptoforth currently only supports the STM32F407 DISCO, the STM32L476 DISCO, and the STM32F746 DISCO
<tabemann> yeah, zeptoforth currently only supports the STM32F407 DISCO, the STM32L476 DISCO, and the STM32F746 DISCO
<tabemann> but I am open to ports from users!
<tabemann> but I am open to ports from users!
<veltas> If you port it to x86 32 or 64-bit I will try it
<veltas> If you port it to x86 32 or 64-bit I will try it
<tabemann> it's specifically for Cortex-M
<tabemann> it's specifically for Cortex-M
<tabemann> and it will never support Cortex-M0 or Cortex-M0+ because those require using Thumb-1, which would require at least a partial rewrite
<tabemann> and it will never support Cortex-M0 or Cortex-M0+ because those require using Thumb-1, which would require at least a partial rewrite
<mark4> M0 is not thumb2?
<mark4> M0 is not thumb2?
<mark4> then its no better than arm 9
<mark4> then its no better than arm 9
<mark4> or arm 7 tdmi
<mark4> or arm 7 tdmi
<tabemann> the problem with Thumb-1 is that it's very hard to define numeric constants inline
<tabemann> the problem with Thumb-1 is that it's very hard to define numeric constants inline
<tabemann> either you have to do complex or and shift chains
<tabemann> either you have to do complex or and shift chains
<mark4> or use literal pools blech
<mark4> or use literal pools blech
<tabemann> or you have to allocate space ahead of time to store constants in
<tabemann> or you have to allocate space ahead of time to store constants in
<mark4> =0x12345678 will work in thumb 1 because the assembler will generate a literal pool
<mark4> =0x12345678 will work in thumb 1 because the assembler will generate a literal pool
<tabemann> I don't even know how Mecrisp-Stellaris does it, since it targets Thumb-1, which is just too much trouble for me
<tabemann> I don't even know how Mecrisp-Stellaris does it, since it targets Thumb-1, which is just too much trouble for me
<mark4> and assemble the actual constant after your ret
<mark4> and assemble the actual constant after your ret
<mark4> the assembler will generate a PC relative ldm for the immediate
<mark4> the assembler will generate a PC relative ldm for the immediate
<tabemann> the problem with literal pools in Forth is that you have no way of knowing ahead of time how long your word is or how many constants it will need
<tabemann> the problem with literal pools in Forth is that you have no way of knowing ahead of time how long your word is or how many constants it will need
<tabemann> so you have to guess
<tabemann> so you have to guess
<mark4> is your forth sub threaded?
<mark4> is your forth sub threaded?
<mark4> indirect or direct?
<mark4> indirect or direct?
<tabemann> mine is SRT/NCI
<tabemann> mine is SRT/NCI
<mark4> then call (lit) and have (lit) pull its return address of the stack, fetch the contents of that cell and push an updated return address back onto the stack
<mark4> then call (lit) and have (lit) pull its return address of the stack, fetch the contents of that cell and push an updated return address back onto the stack
<mark4> look at how t4 does it on my github
<mark4> look at how t4 does it on my github
<mark4> tho i use thumb2 code
<mark4> tho i use thumb2 code
<mark4> thumb1 is dead
<mark4> thumb1 is dead
<tabemann> I'm targeting more capable Cortex-M processors anyways, like the M4 and M7, anyways
<tabemann> I'm targeting more capable Cortex-M processors anyways, like the M4 and M7, anyways
<mark4> t4 is sub threaded too
<mark4> t4 is sub threaded too
<tabemann> a standard install of zeptoforth takes up 128K, which is more than what many M0 processors have
<tabemann> a standard install of zeptoforth takes up 128K, which is more than what many M0 processors have
<tabemann> in internal flash
<tabemann> in internal flash
<mark4> thats huge!
<mark4> thats huge!
<mark4> -rwxr-xr-x 1 mark4 mark4 73K Aug 2 2020 t4
<mark4> -rwxr-xr-x 1 mark4 mark4 73K Aug 2 2020 t4
<tabemann> well that also includes a multitasker, an event scheduler, a disassembler, numeric routines, and like
<tabemann> well that also includes a multitasker, an event scheduler, a disassembler, numeric routines, and like
<mark4> thats the extended forth
<mark4> thats the extended forth
<mark4> oh i dont have a disassembler or a tasker :)
<mark4> oh i dont have a disassembler or a tasker :)
<mark4> but it does have my memory manager and my curses lib stuff
<mark4> but it does have my memory manager and my curses lib stuff
<tabemann> a big install is even bigger, but it includes things like a heap allocator, a pool allocator, task pools, various multitasking support functionalities such as locks and channels, basic support for ANSI terminals, a line editor - and on the F7 it includes a QSPI interface, a block interface, and a block editor
<tabemann> a big install is even bigger, but it includes things like a heap allocator, a pool allocator, task pools, various multitasking support functionalities such as locks and channels, basic support for ANSI terminals, a line editor - and on the F7 it includes a QSPI interface, a block interface, and a block editor
<tabemann> I think that zeptoforth code tends to be larger because it inlines a lot, and a lot of the inlined code is bigger than if it were purely subroutine threaded
<tabemann> I think that zeptoforth code tends to be larger because it inlines a lot, and a lot of the inlined code is bigger than if it were purely subroutine threaded
<tabemann> but it is probably faster
<tabemann> but it is probably faster
<veltas> "probably faster" maybe you should test that!
<veltas> "probably faster" maybe you should test that!
<tabemann> well, it's simple - for each inlined word, a bl instruction, an push instruction, and a pop instruction is not executed
<tabemann> well, it's simple - for each inlined word, a bl instruction, an push instruction, and a pop instruction is not executed
<veltas> Personally I think raw performance is not my first concern, I just require it's not dogshit slow
<veltas> Personally I think raw performance is not my first concern, I just require it's not dogshit slow
<veltas> So don't be Python
<veltas> So don't be Python
<mark4> and dont USE it either :)
<mark4> and dont USE it either :)
* tabemann is a proud owner of a calculator that runs MicroPython lol
* tabemann is a proud owner of a calculator that runs MicroPython lol
<mark4> lol
<mark4> lol
<veltas> To be fair I have no idea how fast micropython is
<veltas> To be fair I have no idea how fast micropython is
<mark4> i would rather have the old HP rpn calc
<mark4> i would rather have the old HP rpn calc
<veltas> I'm assuming it's significantly better performance than full python
<veltas> I'm assuming it's significantly better performance than full python
<tabemann> veltas: let's just say you don't use MicroPython if you care about realtime performance
<tabemann> veltas: let's just say you don't use MicroPython if you care about realtime performance
<tabemann> because of its garbage collector
<tabemann> because of its garbage collector
<tabemann> one thing to note is that IIRC the base MicroPython takes up ~256K, whereas the big installs of zeptoforth do too... except most of that space is wasted in order to align the image with an erase sector boundary
<tabemann> one thing to note is that IIRC the base MicroPython takes up ~256K, whereas the big installs of zeptoforth do too... except most of that space is wasted in order to align the image with an erase sector boundary
<tabemann> and that is a big zeptoforth installation
<tabemann> and that is a big zeptoforth installation
<tabemann> (the zeptoforth kernel takes up 27K)
<tabemann> (the zeptoforth kernel takes up 27K)
<mark4> t4's kernel takes up 18k so thats pretty close
<mark4> t4's kernel takes up 18k so thats pretty close
<mark4> not that much in it
<mark4> not that much in it
<tabemann> the zeptoforth kernel lacks important things like VARIABLE
<tabemann> the zeptoforth kernel lacks important things like VARIABLE
<mark4> i assume it has the do part of that yes?
<mark4> i assume it has the do part of that yes?
<mark4> and the extensions add the ability to create them?
<mark4> and the extensions add the ability to create them?
<mark4> : variable create ;
<mark4> : variable create ;
<tabemann> it does have CONSTANT
<tabemann> it does have CONSTANT
<tabemann> it doesn't have CREATE even though
<tabemann> it doesn't have CREATE even though
<mark4> i have variable, constant, var and const
<mark4> i have variable, constant, var and const
<mark4> how can the kernel NOT have create?
<mark4> how can the kernel NOT have create?
<tabemann> mark4: CREATE is implemented in Forth
<tabemann> mark4: CREATE is implemented in Forth
<mark4> using what primitves?
<mark4> using what primitves?
<tabemann> : create ( "name" -- )
<tabemann> : create ( "name" -- )
<tabemann> token
<tabemann> compiling-to-flash? if
<tabemann> dup 0= triggers token-expected
<tabemann> dup 0= triggers token-expected
<tabemann> start-compile-no-push
<tabemann> compiling-to-flash? if
<tabemann> token
<tabemann> start-compile-no-push
<tabemann> here 28 + ( 28 bytes ) flash-block-size align
<tabemann> here 28 + ( 28 bytes ) flash-block-size align
<tabemann> else
<tabemann> else
<tabemann> here 16 + ( 16 bytes ) 4 align
<tabemann> here 16 + ( 16 bytes ) 4 align
<tabemann> then
<tabemann> then
<tabemann> tos push,
<tabemann> tos push,
<tabemann> dup tos literal,
<tabemann> dup tos literal,
<tabemann> 14 bx,
<tabemann> 14 bx,
<tabemann> $003F h,
<tabemann> $003F h,
<tabemann> visible
<tabemann> visible
<tabemann> inlined
<tabemann> inlined
<tabemann> finalize-no-align,
<tabemann> finalize-no-align,
<tabemann> advance-here
<tabemann> advance-here
<tabemann> ;
<tabemann> ;
<mark4> advance-here is "allot" ?
<mark4> advance-here is "allot" ?
<tabemann> \ Fill memory with zeros up until a given address
<tabemann> \ Fill memory with zeros up until a given address
<tabemann> : advance-here ( a -- )
<tabemann> begin
<tabemann> while
<tabemann> dup here >
<tabemann> begin
<tabemann> while
<tabemann> dup here >
<tabemann> : advance-here ( a -- )
<tabemann> 0 b,
<tabemann> 0 b,
<tabemann> repeat
<tabemann> repeat
<tabemann> drop
<tabemann> drop
<tabemann> ;
<tabemann> ;
<mark4> ok not allot :)
<mark4> ok not allot :)
<tabemann> it's necessary because on the L4 flash has write blocks of 16 bytes
<tabemann> it's necessary because on the L4 flash has write blocks of 16 bytes
<tabemann> that's to fill up the remainder of the write blocks
<tabemann> that's to fill up the remainder of the write blocks
<tabemann> filling them with zero's ensures that the flash is written to, because there's code that assumes that sequences of $FF are unwritten flash
<tabemann> filling them with zero's ensures that the flash is written to, because there's code that assumes that sequences of $FF are unwritten flash
<tabemann> one thing about my MicroPython-running calculator is that it takes a (short) while to generate a Mandelbrot set
<tabemann> one thing about my MicroPython-running calculator is that it takes a (short) while to generate a Mandelbrot set
<veltas> nihilazo: It is possible to define something like this https://pastebin.com/raw/Yyrpv8Dz
<veltas> nihilazo: It is possible to define something like this https://pastebin.com/raw/Yyrpv8Dz
<veltas> But yes, if you are just printing then I personally use ." blah" CR
<veltas> But yes, if you are just printing then I personally use ." blah" CR
<veltas> The reason I use S\" \n" there is because as far as I know that's the only way to get a new-line string in standard forth
<veltas> The reason I use S\" \n" there is because as far as I know that's the only way to get a new-line string in standard forth
<veltas> I don't think the standard would let you create a normal inline compiled string, it's trivial to do so on Forths where R@ is the saved IP
<veltas> I don't think the standard would let you create a normal inline compiled string, it's trivial to do so on Forths where R@ is the saved IP
<veltas> Left as an exercise to the reader
<veltas> Left as an exercise to the reader
<veltas> "saved IP" I mean the *return IP*
<veltas> "saved IP" I mean the *return IP*