00:00:00 --- log: started forth/21.03.07 00:30:05 --- quit: mark4 (Remote host closed the connection) 00:30:23 --- join: mark4 joined #forth 00:39:24 --- quit: _whitelogger (Remote host closed the connection) 00:42:22 --- join: _whitelogger joined #forth 00:52:15 --- join: proteus-guy joined #forth 01:27:30 joe9: I've read a few styleguides for Forth and I think I disagree with all of them. I've shown my code in here before and people approve of the style 01:28:05 So read a styleguide maybe but take it with a pinch of salt, it's much more important it's readable to you first, then worry about it being not totally unconventional 01:28:27 But as long as you're documenting stack usage in a somewhat conventional fasion it's probably fine 02:26:10 mark4 do you have a test suite? I think I have ff working now. I want to have some tests to be sure. 02:28:55 hen not really 02:29:15 https://github.com/mark4th/x64/tree/master/src/examples/bench 02:29:25 but most of those probably wont compile for you 02:29:32 and they are not really a test suite 02:31:23 --- join: Zarutian_HTC joined #forth 02:43:29 ok, thanks. 03:03:07 --- join: tech_exorcist joined #forth 03:06:47 --- quit: tech_exorcist (Remote host closed the connection) 03:09:42 --- join: tech_exorcist joined #forth 03:10:14 --- quit: tech_exorcist (Remote host closed the connection) 03:17:54 --- join: tech_exorcist joined #forth 04:17:56 Was there a way to print the floating stack in Gforth? 04:18:00 Ah it's f.s 04:22:05 --- quit: proteus-guy (Ping timeout: 276 seconds) 04:27:59 Out of curiosity, does Forth have a word for inlining (i.e. expanding the word into the word in which it's defined and eliminating the call/return)? 04:37:36 --- quit: jyf (Ping timeout: 256 seconds) 04:39:18 --- join: andrei-n joined #forth 04:39:34 --- join: jyf joined #forth 04:43:31 Not a standard forth feature and I'm not aware of a forth that does this 04:43:47 There are forths that do inlining automatically for optimisation, I know mecrisp does 05:34:36 --- quit: boru (Ping timeout: 260 seconds) 05:34:46 --- join: boru` joined #forth 05:34:51 --- nick: boru` -> boru 05:36:25 --- quit: dave0 (Quit: dave's not here) 06:15:24 at least one forth lets you set a minimum size in bytes and it inlines anything smaller 06:24:14 --- join: f-a joined #forth 06:29:05 Zarutian_HTC: not as I recall. https://www.dougengelbart.org/content/view/273/309/ has some images showing some of the chords. I don't think they match up to baudot 06:31:31 crc: thanks! 06:31:54 no problem 06:35:16 hah! looks like you are just chording the number of the character in binary. That is, a is 1, b is 2, and so on 06:39:29 yes, very simple and straightforward 06:40:07 mouse was used for shift and access to numbers/symbols 06:43:35 I wonder if one could use a simple left hand joystick with give buttons as a keyset 06:44:25 and use left, right, up and down for charset shift 06:46:00 nothing fancy, movement detection like commodore64 or atari joystick 07:16:22 crc, didn't Chuck Moore have himself a one-handed keyboard as well at one point? 07:17:50 yes, for the original okad 07:18:22 I've often thought about doing something like that - mostly for a wearable computing situation. But never found a practical opportunity. 07:18:28 8 keys on it, http://www.ultratechnology.com/okad.htm 07:20:28 for non coding tasks, I sometimes use a 10 key chorded keyboard (two hands). it's nice to not need to move hands or fingers much. 07:21:04 I want to get a chorded keyboard like that 07:21:11 rn I use a 40% non-chorded keyboard 07:21:18 split ortho 07:21:19 I'm working on a compact single hand layout 07:21:28 how fast are you on those 07:21:34 I like the idea of asetniop layout 07:21:42 https://www.gboards.ca/product/ginni 07:21:45 that's a 10-key chording thing 07:21:56 yeah! I was going to buy one of those but shipping ended up making it too expensive 07:21:59 that's what this uses 07:22:09 I might try and build something like it though, handwire a thingy 07:22:14 dunno 07:22:55 does not seem- I mean I know how to write shorthand 07:22:57 with pencil and pad 07:23:07 it is super comfy but took me a while to get used to it 07:23:10 well, years 07:23:20 idk how long it would take to learn chorded input 07:23:28 because that is syllabic, right crc ? 07:24:38 I'm still slow with the chorded layout (~15-20 wpm) [not that I'm fast in general, given rsi issues] 07:26:12 learning isn't that bad. I keep a tiny cheatsheet handy, but after a few hours of practice it was easi to remember much of it 07:26:41 definitely easier than when I switched to dvorak 07:27:50 I'm using split ortho qwerty right now 07:28:03 actually, I could probably program my current keyboard to do a chorded layout 07:28:15 just with the homerow 07:29:03 crc: so, is it syllabic? 07:30:31 asetniop is not, it's characters 07:30:37 steno is syllabic, and is far harder to learn 07:31:13 f-a: there are chords for both individual letters and some combinations (http://www.asetniop.com/combinations/), it's not like steno though 07:31:37 I see 07:32:01 that is cool 07:32:12 now I want to hack my keyboard to be asetniop 07:32:16 nihilazo: I used to have an asetniop setup on my ergodox before getting this board 07:32:17 hmm 07:32:25 how did you set up asetniop on the ergodox? 07:32:33 I bet something similar is possible with the crkbd 07:32:59 qmk combos 07:33:54 I'll look tomorrow to see if I still have the keymap.c for it, not sure if I saved it after getting the dedicated board 07:34:10 at risk of keeping the OT flag flying high 07:34:32 what is a good wpm on those keyboards? 07:36:19 --- quit: Zarutian_HTC (Ping timeout: 264 seconds) 07:37:00 On the asetniop layout, the best I've done is 35 wpm, with an average closer to 15. On my ergodox, with a 36 key layout, I can sometimes hit 60, though I'm often much slower. 07:37:40 I type quite quickly on my keyboard but it's not a chording type thing, it's a normal split keyboard 07:37:46 well, normal, it's a 42-key layout 07:37:49 I do have severe RSI problems that make typing difficult and painful though. I used to be *much* faster: ( 07:37:58 I've been curious about chording for ages though 07:38:47 120+ WPM with qwerty here :P 07:39:01 I'm like 80-ish with qwerty on split ortho 07:39:04 far less on staggered 07:39:14 I actually learned to type properly for the first time on a split ortho 07:39:29 on the chorded board, I have 12g switches, which are really light and make pressing the keys easy 07:39:46 because when I built my first (a redox) I used blank caps and had to learn to touchtype for the first time 07:39:52 siraben: I was able to do that many years ago 07:39:54 I have 35g in this one I think 07:40:07 people have said that these switches are too light but honestly I could go even lighter if I wanted 07:40:10 I just find these OK 07:40:15 IMO switching keyboard layout is too drastic when practicing proper finger placement and even usage probably gets most of the gains 07:40:15 (stock gateron clears) 07:40:46 s/even/having an even/ 07:42:44 for me, moving to dvorak was helpful, and the split has been very helpful 07:44:17 but as noted, I have severe rsi problems and my case is far from typical 07:47:32 split has been helpful for me 07:47:33 so has ortho 07:47:39 just in terms of comfort 07:51:39 god I wish QMK was less of a mess to build and work with 07:51:53 seriously, somebody needs to just get rid of QMK and build something from scratch. It's so over complicated 07:52:05 build something in forth 07:53:06 I am considering writing my own firmware in my forth once I settle on a final koyboard layout 07:55:37 I'll switch to it :P qmk is painful 07:56:16 it isn't even letting me build any more 07:56:27 --- quit: dddddd (Ping timeout: 256 seconds) 07:56:50 it's got its own weird command line tool you need now or something 07:56:58 --- quit: jess (Quit: brb) 07:57:17 I'm still using a qmk from ~1 year ago 07:57:56 I just updated mine and am now having build problems 07:58:54 doesn't surprise me; qmk is the big and bloated 07:59:40 --- join: Zarutian_HTC joined #forth 08:00:27 --- join: j joined #forth 08:01:23 yeah, you need a seperate tool now called qmk 08:01:25 just to try building it 08:01:32 and it bundles a few different RTOSes 08:01:34 for a keyboard! 08:01:37 it's insanity 08:01:58 god I hate QMK so much 08:02:05 (sorry, mini-rant) 08:04:11 now there's JSON files everywhere???? 08:04:14 jesus 08:09:25 --- join: dddddd joined #forth 08:12:30 other options also have problems. kmk? written in python. bluemicro is for wireless boards, and is c++, though looks cleaner than qmk. keyberon is in rust, but looks fairly clean. 08:12:52 wait, python? For an embedded thing? what 08:13:03 oh it's micropython 08:14:29 and keyberon seems to be only running on bluepills and similar, which is a shame for my board which is using QMK elite-cs 08:14:34 (the elite-c is the best part of QMK) 08:14:57 (the hardware. Basically a pro micro but not trash, and it will drop in on any pro micro compatible board) 08:17:02 I haven't looked at kaleidoscope yet (keyboard.io's firmware) 08:21:03 kaleidoscope is c++, I might check it out 08:21:08 https://git.sr.ht/~technomancy/menelaus/tree/master is a microscheme firmware for atreus keyboard 08:21:12 the problem is that this is my only keyboard rn so I don't want it to be out of action 08:21:41 that's why I haven't started working on anything yet 08:21:41 and I use some QMK features for stuff, although not tons 08:21:51 I have another keyboard but it's really not great 08:21:58 and I'd have to replace all the caps 08:22:26 one of my sons and I will be doing a handwire build this summer, so I'll try my hand at firmware for it then 08:27:18 nice 08:27:31 is there a good open source forth targeting AVR/arduino? 08:30:48 actually, there seems to be a few 09:15:50 --- quit: gravicappa (Ping timeout: 245 seconds) 09:18:04 --- quit: inode (*.net *.split) 09:18:05 --- quit: guan (*.net *.split) 09:18:35 --- join: gravicappa joined #forth 09:19:11 --- join: guan joined #forth 09:24:31 --- quit: f-a (Remote host closed the connection) 09:25:54 --- quit: siraben (Ping timeout: 268 seconds) 09:30:25 --- quit: jimt[m] (Ping timeout: 258 seconds) 09:30:50 --- quit: patrickg (Ping timeout: 268 seconds) 09:30:50 --- quit: jevinskie[m] (Ping timeout: 268 seconds) 09:32:40 was up till 5am this morning fixing my TUI utf issues :) 09:33:12 got it fixed now, i can now handle wide characters but im not yet entirely extatic about the solution :) 09:58:09 --- join: f-a joined #forth 10:02:55 --- join: xek joined #forth 10:05:31 --- quit: Zarutian_HTC (Read error: Connection reset by peer) 10:05:46 --- join: Zarutian_HTC joined #forth 10:24:31 --- join: mirrorbird joined #forth 10:30:37 --- join: patrickg joined #forth 10:51:24 --- join: inode joined #forth 10:51:53 --- join: siraben joined #forth 10:53:51 --- join: jevinskie[m] joined #forth 10:57:32 --- join: jimt[m] joined #forth 11:12:51 --- quit: mirrorbird (Remote host closed the connection) 11:13:13 --- join: mirrorbird joined #forth 11:31:08 --- nick: j -> jess 11:33:09 btw, i made my repo public 11:33:17 github.com/mark4th/uCurses 11:33:28 all in forth! err i mean c :/ 11:37:09 and i just seen me a bug :) 11:45:49 --- quit: lispmacs (Read error: Connection reset by peer) 11:46:40 --- quit: gravicappa (Ping timeout: 245 seconds) 11:59:35 --- quit: spoofer_ (Remote host closed the connection) 12:20:41 mhhh 12:20:50 I have a string like s" prova" 12:21:09 so the stack is something like 12:21:15 <2> AABC0F 5 12:21:38 I would like to prepend ‘t’ to that 12:21:45 to that string 12:22:04 but I do not really know how to approach this 12:22:17 to be clear, I would like the end result to be the same as typing s" tprova" 12:24:45 f-a: You want to create a new string with the extra t, or have some kind of compile-time thing to read a string that will ultimately be prefixed? 12:25:23 new string with extra t 12:25:43 You could ALLOT space for it, and save the new string addr/u in a 2CONSTANT 12:27:37 Quick question from someone trying to understand ITC vs DTC: the major difference between the two is whether the code field is a 'CALL ENTER' vs inlined ENTER? 12:34:01 Yes 12:35:44 Ah, thanks. 12:37:58 f-a: : CONCATENATE 2SWAP PAD PLACE PAD +PLACE PAD COUNT ; 12:38:23 danke 12:38:24 eg. S" t" S" prova" CONCATENATE TYPE tprova ok 12:38:41 * f-a types see pad 12:43:19 f-a if you have a string "xxxxx" you usually dont have space after it to append to 12:43:37 you need to have "xxx......" where xxx is the string and the ... are null bytes 12:45:25 --- join: Zarutian_HTC1 joined #forth 12:46:13 --- quit: Zarutian_HTC (Read error: Connection reset by peer) 12:46:47 --- quit: Keshl (Quit: Konversation terminated!) 12:49:46 I see 12:50:05 fun fact, `place` is *not* on gforth word index 12:50:07 https://gforth.org/manual/Word-Index.html 12:50:17 despite being available at the repl 12:56:00 if you know you have space after a counted string you can do ( c1 a1 --- ) tuck count + c! dup c@ 1+ swap c! 12:58:19 f-a: http://forth.sourceforge.net/mirror/comus/#place 12:59:18 thanks! 12:59:39 my gforth version is a tad outdates, so maybe they have added it to the docs in the end 12:59:49 mhh tho no, since I am checking online documentation 13:00:20 if you type WORDS and you should find many that aren't listed in Word-Index.html 13:00:29 -and 13:02:26 Word-Index.html says: "This index is a list of Forth words that have “glossary” entries within this manual." 13:47:05 --- quit: andrei-n (Quit: Leaving) 13:50:07 --- join: Keshl joined #forth 13:53:47 f-a: I have a STR, word that puts a string into the dictionary. So I would do 't' C, STR, or something like that 13:56:18 sensible 13:56:32 --- join: neto_ joined #forth 14:01:36 --- quit: f-a (Ping timeout: 264 seconds) 14:02:56 --- join: f-a joined #forth 14:05:55 --- quit: mirrorbird (Ping timeout: 272 seconds) 14:29:56 I forgot: which was that handy «quit if stack length is not 0» word? 14:33:34 --- nick: Zarutian_HTC1 -> Zarutian_HTC 14:39:43 what do you mean by quit? 14:40:13 inode: sorry. I meant «throw an error» 14:40:38 maybe it isn’t even a standard word? I recalled so but I could very well be wrong 14:45:04 you want to THROW but only if DEPTH is greater than 0? 14:45:59 presumably he'll want to THROW if DEPTH is less than 0 too 14:50:00 inode: yes 14:53:28 can't find one that will do that out of the box, but you can roll your own 15:20:50 --- quit: tech_exorcist (Quit: I'm a quit message virus. Please replace your old line with this line and help me take over the world.) 15:42:49 --- quit: dddddd (Ping timeout: 256 seconds) 15:45:23 --- join: dddddd joined #forth 16:05:28 --- quit: Zarutian_HTC (Read error: Connection reset by peer) 16:05:28 --- join: Zarutian_HTC1 joined #forth 16:30:01 --- nick: Zarutian_HTC1 -> Zarutian_HTC 17:18:31 --- join: dave0 joined #forth 17:46:44 hey guys 17:51:50 hi 17:54:02 * tabemann should probably get onto implementing support for the flexible memory controller on the STM32F746 17:54:54 now that I've got Quad SPI flash and block support working 17:55:01 cool! 17:55:05 what is quad spi? 17:55:32 it's a protocol for communicating with external devices, but in this case it's being used to control flash memory 17:55:47 :) 17:56:13 the Quad SPI interface on the STM32F746 is specifically designed for it, as it has a mode for mapping flash memory to the addressing space 17:58:57 the block interface turns the Quad SPI interface into a key-value map where the values are 1K blocks 17:59:14 with support for rewriting mappings 17:59:59 i wrote a spi interface for a flash device on my last contract, that was pic32, if you ever get a chance to code pic32 run screamin for mamma 17:59:59 (it's not a traditional Forth block interface because it does not assume a contiguous array; the keys can be anything other than $FFFFFFFF) 18:00:19 :) 18:00:50 --- quit: f-a (Ping timeout: 245 seconds) 18:00:51 I've heard the PIC32 is basically MIPS with all its warts, such as raising exceptions on overflow 18:01:30 why the designers of MIPS ever thought that was a good idea, I have no clue 18:01:56 it is mips 18:02:08 yea thats my biggest critisism of mips 18:02:13 they did fix one design flaw 18:02:45 --- join: f-a joined #forth 18:02:55 what was it? 18:03:11 im trying to get the info so i state it right :) 18:03:24 its what "M" "I" "P" "S" stood for originally 18:03:32 a HUGE design flaw and they backtracked on it later 18:03:38 millions of instructions per second? 18:04:07 (I know it didn't officially stand for that) 18:04:18 --- quit: Zarutian_HTC (Read error: Connection reset by peer) 18:04:40 --- join: Zarutian_HTC joined #forth 18:05:00 yea wikipedia has it right at the top 18:05:19 microprocessor without interlocked pipeline stages 18:05:24 STUPID! 18:05:26 lol 18:07:54 btw, what about that made it such a design flaw? 18:08:31 the pipeline stage is basiclaly what Ford invented for his production line 18:08:36 person 1 does a little bit. 18:08:42 then person 2 does a little bit 18:08:50 then person 3 does a litter bit 18:09:12 that means each time one operation completes one car is built 18:09:31 not 2858295 people all working on one car 18:10:04 becase as person 1 is working on the second car. person 2 is working on the first in parallel 18:10:31 thats what an instruction pipeline gives you as you are fetching one opcode, a different one is completing its execution 18:10:33 no pipeline? 18:10:40 stupid design 18:11:08 i thought the error on overflow thing was weird but isnt that only an issue if it overflows 32 bits? doesnt seem like that would happen too often 18:11:58 thats also a horrendous design flaw 18:11:59 unless youre working with 64 bit ints or something 18:12:12 this FORCES youo to test if an upcoming operation will cause an overflow or not 18:12:15 DUMB 18:12:35 it raises an exception on overflow. 18:12:40 what you can do is automatically resolve such instructions an exception handler 18:12:48 it does not raise a PSW flag like a sane uC would 18:12:50 --- quit: dave0 (Quit: dave's not here) 18:12:52 which is stupid because it'd kill performance 18:13:07 "innovation" 18:13:20 but at least would keep the application from crashing 18:13:33 you literally have to do math before you do your math just to ensure that the math you are about to do will not cause an overflow 18:16:41 only if you are working with 32 bit values though right? 18:17:24 onlhy if its a 32 bit core 18:17:31 im not familiar with 64 bit mips cores 18:19:24 I wonder if bitshifting to the left can cause exceptions on MIPS 18:19:53 lol 18:20:04 i assume bit shifts are considered unsigned 18:20:16 but if they have a carry flag why dont they have an overflow flag 18:20:18 idiotic 18:22:05 https://godbolt.org/z/Ycazae 18:22:29 is it something where you set up your own exception hanlding or does the c compiler do it? 18:23:08 not sure 18:25:46 it would be smart for the standard library to include an exception handler to handle the cases out of the box 18:30:34 --- quit: neto_ (Quit: leaving) 18:30:55 lol https://godbolt.org/z/xnc6oa 18:33:27 what the heck 18:33:45 actually should have pasted this https://godbolt.org/z/zqaaPY 18:35:45 line 10 is checking for overflow 18:36:37 seems manageable if you can shut off the exception 18:38:47 seems it only raises the exception for signed numbers 18:40:24 the thing, though, is that for two's complement integers, there is no difference between unsigned and signed addition, subtraction, and multiplication 18:41:28 so then maybe you can avoid the exception by only using the unsigned instructions 18:42:28 which is what gcc is outputting for (signed) long long int 18:45:14 the thing is typically for integers there are no separate unsigned and signed integer addition, subtraction, and multiplication instructions 18:45:40 there aren't for ARM Cortex-M with 32-bit values (even though there are such for the "DSP" Cortex-M4 instructions) 18:47:19 maybe thats why theyre separate on pic32 so you can get around the exception stuff if you dont need it 18:47:28 yeah 18:51:39 --- quit: f-a (Quit: leaving) 18:54:26 --- join: boru` joined #forth 18:54:29 --- quit: boru (Disconnected by services) 18:54:31 --- nick: boru` -> boru 19:42:24 --- quit: _whitelogger (Remote host closed the connection) 19:45:23 --- join: _whitelogger joined #forth 19:52:31 --- quit: jedb (Ping timeout: 264 seconds) 19:55:38 --- join: dave0 joined #forth 20:34:38 --- join: gravicappa joined #forth 20:39:49 --- quit: sts-q (Ping timeout: 256 seconds) 20:41:20 --- quit: joe9 (Quit: joe9) 20:47:12 --- join: sts-q joined #forth 21:00:24 --- join: joe9 joined #forth 21:23:12 --- join: hosewiejacke joined #forth 22:40:59 --- join: proteus-guy joined #forth 22:41:14 --- join: jedb joined #forth 22:53:06 --- join: f-a joined #forth 22:56:05 --- quit: dave0 (Quit: dave's not here) 22:58:51 --- join: mirrorbird joined #forth 23:31:19 --- quit: mirrorbird (Quit: Leaving) 23:59:59 --- log: ended forth/21.03.07