<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