[2021-03-21 00:05:53] → Zarutian_HTC joined (~bj@173-133-17-89.fiber.hringdu.is) [2021-03-21 00:50:09] → gravicappa joined (~gravicapp@h109-187-14-146.dyn.bashtel.ru) [2021-03-21 02:06:02] ⇐ _whitelogger_ quit (~whitelogg@uruz.whitequark.org): Remote host closed the connection [2021-03-21 02:09:03] → _whitelogger_ joined (~whitelogg@uruz.whitequark.org) [2021-03-21 02:24:02] ⇐ _whitelogger_ quit (~whitelogg@uruz.whitequark.org): Remote host closed the connection [2021-03-21 02:27:03] → _whitelogger_ joined (~whitelogg@uruz.whitequark.org) [2021-03-21 03:15:38] → f-a joined (~f-a@151.44.46.42) [2021-03-21 04:21:01] ⇐ _whitelogger_ quit (~whitelogg@uruz.whitequark.org): Remote host closed the connection [2021-03-21 04:24:03] → _whitelogger_ joined (~whitelogg@uruz.whitequark.org) [2021-03-21 04:48:03] ⇐ f-a quit (~f-a@151.44.46.42): Read error: Connection reset by peer [2021-03-21 04:51:57] → f-a joined (~f-a@151.38.169.75) [2021-03-21 05:48:31] → tech_exorcist joined (txrcst@gateway/shell/hashbang/x-gismkvixgcsajxje) [2021-03-21 08:47:46] ⇐ f-a quit (~f-a@151.38.169.75): Read error: Connection reset by peer [2021-03-21 08:51:49] → f-a joined (~f-a@151.36.123.7) [2021-03-21 09:10:56] ⇐ dave0 quit (~davezero@069.d.003.ncl.iprimus.net.au): Quit: dave's not here [2021-03-21 09:42:53] ← batflu left (~stallman@static.252.55.21.65.clients.your-server.de): "Leaving" [2021-03-21 10:14:43] → andrei-n joined (~andrei-n@109.130.156.104) [2021-03-21 11:36:32] ⇐ Keshl quit (~Purple@207.44.70.214.res-cmts.gld.ptd.net): Ping timeout: 240 seconds [2021-03-21 11:49:39] ⇐ andrei-n quit (~andrei-n@109.130.156.104): Quit: Leaving [2021-03-21 12:14:13] ⇐ lispmacs quit (~user@fsf/member/lispmacs): Read error: Connection reset by peer [2021-03-21 12:15:20] → lispmacs joined (~user@fsf/member/lispmacs) [2021-03-21 12:30:26] ⇐ Zarutian_HTC quit (~bj@173-133-17-89.fiber.hringdu.is): Ping timeout: 256 seconds [2021-03-21 12:35:53] → Zarutian_HTC joined (~bj@173-133-17-89.fiber.hringdu.is) [2021-03-21 12:39:01] ⇐ Zarutian_HTC quit (~bj@173-133-17-89.fiber.hringdu.is): Remote host closed the connection [2021-03-21 12:47:35] ⇐ f-a quit (~f-a@151.36.123.7): Read error: Connection reset by peer [2021-03-21 12:49:38] → f-a joined (~f-a@151.34.68.219) [2021-03-21 13:02:38] is there a non-awkward way to encode multiline strings in a forth program? [2021-03-21 13:02:50] using \n in an S" adds a literal \n [2021-03-21 13:03:03] mhhh [2021-03-21 13:03:07] I mean [2021-03-21 13:03:56] I thought it was possible [2021-03-21 13:04:00] but apparently it is not [2021-03-21 13:04:33] (to just go to a newline) [2021-03-21 13:07:40] I'm not going to be storing these strings, just priting them. maybe I could just define words with ." and cr [2021-03-21 13:10:25] s/storing/operating on/, whatever [2021-03-21 13:21:26] ⇐ f-a quit (~f-a@151.34.68.219): Quit: leaving [2021-03-21 13:22:03] S\" this line\nthat line\n" [2021-03-21 13:22:33] non-standard/gforth-specific probably [2021-03-21 13:23:15] in x4 you can do string concat of sub strings [2021-03-21 13:23:18] not sure about ans forth [2021-03-21 14:09:58] hey guys [2021-03-21 14:13:54] ⇐ tech_exorcist quit (txrcst@gateway/shell/hashbang/x-gismkvixgcsajxje): Remote host closed the connection [2021-03-21 14:14:17] → tech_exorcist joined (txrcst@gateway/shell/hashbang/x-xorvszgkhifatcoq) [2021-03-21 14:15:35] hi [2021-03-21 14:17:57] for some reason I'm surprised eLua doesn't support the newer STM32 MCU's [2021-03-21 14:18:28] only more reason to use Forth! [2021-03-21 14:19:26] heh [2021-03-21 14:20:08] ⇐ gravicappa quit (~gravicapp@h109-187-14-146.dyn.bashtel.ru): Ping timeout: 240 seconds [2021-03-21 14:20:41] → gravicappa joined (~gravicapp@h109-187-18-186.dyn.bashtel.ru) [2021-03-21 14:21:46] — tabemann does wish more people'd try out zeptoforth [2021-03-21 14:48:29] ⇐ xek quit (~xek@46.204.48.92.nat.umts.dynamic.t-mobile.pl): Remote host closed the connection [2021-03-21 14:52:58] → xek joined (~xek@46.204.48.92.nat.umts.dynamic.t-mobile.pl) [2021-03-21 16:11:48] ⇐ gravicappa quit (~gravicapp@h109-187-18-186.dyn.bashtel.ru): Ping timeout: 246 seconds [2021-03-21 17:07:35] → dave0 joined (~davezero@069.d.003.ncl.iprimus.net.au) [2021-03-21 18:44:10] tabemann: I'd try it out if I had that CPU [2021-03-21 18:45:39] ⇐ tech_exorcist quit (txrcst@gateway/shell/hashbang/x-xorvszgkhifatcoq): Quit: tech_exorcist [2021-03-21 18:45:59] — tabemann is frustrated that zeptoforth spontaneously started working while loading on the STM32F746 DISCO [2021-03-21 18:46:27] → Keshl joined (~Purple@207.44.70.214.res-cmts.gld.ptd.net) [2021-03-21 18:46:28] inode: S\" is standard [2021-03-21 18:46:34] yeah, zeptoforth currently only supports the STM32F407 DISCO, the STM32L476 DISCO, and the STM32F746 DISCO [2021-03-21 18:46:48] but I am open to ports from users! [2021-03-21 18:47:08] If you port it to x86 32 or 64-bit I will try it [2021-03-21 18:47:29] it's specifically for Cortex-M [2021-03-21 18:49:16] and it will never support Cortex-M0 or Cortex-M0+ because those require using Thumb-1, which would require at least a partial rewrite [2021-03-21 18:52:15] M0 is not thumb2? [2021-03-21 18:52:42] then its no better than arm 9 [2021-03-21 18:52:49] or arm 7 tdmi [2021-03-21 18:53:48] the problem with Thumb-1 is that it's very hard to define numeric constants inline [2021-03-21 18:53:58] either you have to do complex or and shift chains [2021-03-21 18:54:10] or use literal pools blech [2021-03-21 18:54:12] or you have to allocate space ahead of time to store constants in [2021-03-21 18:54:53] =0x12345678 will work in thumb 1 because the assembler will generate a literal pool [2021-03-21 18:55:04] I don't even know how Mecrisp-Stellaris does it, since it targets Thumb-1, which is just too much trouble for me [2021-03-21 18:55:06] and assemble the actual constant after your ret [2021-03-21 18:55:43] the assembler will generate a PC relative ldm for the immediate [2021-03-21 18:55:45] 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 [2021-03-21 18:55:59] so you have to guess [2021-03-21 18:56:01] is your forth sub threaded? [2021-03-21 18:56:07] indirect or direct? [2021-03-21 18:56:10] mine is SRT/NCI [2021-03-21 18:56:43] 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 [2021-03-21 18:56:58] look at how t4 does it on my github [2021-03-21 18:57:17] tho i use thumb2 code [2021-03-21 18:57:22] thumb1 is dead [2021-03-21 18:58:03] I'm targeting more capable Cortex-M processors anyways, like the M4 and M7, anyways [2021-03-21 18:59:40] t4 is sub threaded too [2021-03-21 18:59:55] a standard install of zeptoforth takes up 128K, which is more than what many M0 processors have [2021-03-21 19:00:05] in internal flash [2021-03-21 19:00:13] thats huge! [2021-03-21 19:00:35] -rwxr-xr-x 1 mark4 mark4 73K Aug 2 2020 t4 [2021-03-21 19:00:44] well that also includes a multitasker, an event scheduler, a disassembler, numeric routines, and like [2021-03-21 19:00:46] thats the extended forth [2021-03-21 19:00:57] oh i dont have a disassembler or a tasker :) [2021-03-21 19:01:09] but it does have my memory manager and my curses lib stuff [2021-03-21 19:03:42] 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 [2021-03-21 19:04:37] 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 [2021-03-21 19:04:54] but it is probably faster [2021-03-21 19:06:37] "probably faster" maybe you should test that! [2021-03-21 19:07:35] well, it's simple - for each inlined word, a bl instruction, an push instruction, and a pop instruction is not executed [2021-03-21 19:07:43] Personally I think raw performance is not my first concern, I just require it's not dogshit slow [2021-03-21 19:07:56] So don't be Python [2021-03-21 19:08:11] and dont USE it either :) [2021-03-21 19:08:19] — tabemann is a proud owner of a calculator that runs MicroPython lol [2021-03-21 19:08:26] lol [2021-03-21 19:08:31] To be fair I have no idea how fast micropython is [2021-03-21 19:08:36] i would rather have the old HP rpn calc [2021-03-21 19:08:45] I'm assuming it's significantly better performance than full python [2021-03-21 19:08:56] veltas: let's just say you don't use MicroPython if you care about realtime performance [2021-03-21 19:09:06] because of its garbage collector [2021-03-21 19:13:05] 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 [2021-03-21 19:14:39] and that is a big zeptoforth installation [2021-03-21 19:15:37] (the zeptoforth kernel takes up 27K) [2021-03-21 19:17:05] t4's kernel takes up 18k so thats pretty close [2021-03-21 19:17:11] not that much in it [2021-03-21 19:17:49] the zeptoforth kernel lacks important things like VARIABLE [2021-03-21 19:18:05] i assume it has the do part of that yes? [2021-03-21 19:18:12] and the extensions add the ability to create them? [2021-03-21 19:18:22] : variable create ; [2021-03-21 19:18:34] it does have CONSTANT [2021-03-21 19:18:47] it doesn't have CREATE even though [2021-03-21 19:18:52] i have variable, constant, var and const [2021-03-21 19:19:00] how can the kernel NOT have create? [2021-03-21 19:19:14] mark4: CREATE is implemented in Forth [2021-03-21 19:19:29] using what primitves? [2021-03-21 19:20:46] : create ( "name" -- ) [2021-03-21 19:20:46] token [2021-03-21 19:20:46] dup 0= triggers token-expected [2021-03-21 19:20:46] start-compile-no-push [2021-03-21 19:20:46] compiling-to-flash? if [2021-03-21 19:20:47] here 28 + ( 28 bytes ) flash-block-size align [2021-03-21 19:20:49] else [2021-03-21 19:20:51] here 16 + ( 16 bytes ) 4 align [2021-03-21 19:20:53] then [2021-03-21 19:20:55] tos push, [2021-03-21 19:20:57] dup tos literal, [2021-03-21 19:20:59] 14 bx, [2021-03-21 19:21:01] $003F h, [2021-03-21 19:21:03] visible [2021-03-21 19:21:05] inlined [2021-03-21 19:21:07] finalize-no-align, [2021-03-21 19:21:09] advance-here [2021-03-21 19:21:13] ; [2021-03-21 19:21:29] advance-here is "allot" ? [2021-03-21 19:21:56] \ Fill memory with zeros up until a given address [2021-03-21 19:21:56] : advance-here ( a -- ) [2021-03-21 19:21:56] begin [2021-03-21 19:21:56] dup here > [2021-03-21 19:21:56] while [2021-03-21 19:21:57] 0 b, [2021-03-21 19:21:59] repeat [2021-03-21 19:22:01] drop [2021-03-21 19:22:03] ; [2021-03-21 19:22:12] ok not allot :) [2021-03-21 19:24:18] it's necessary because on the L4 flash has write blocks of 16 bytes [2021-03-21 19:24:27] that's to fill up the remainder of the write blocks [2021-03-21 19:25:32] 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 [2021-03-21 19:34:48] one thing about my MicroPython-running calculator is that it takes a (short) while to generate a Mandelbrot set [2021-03-21 19:54:06] nihilazo: It is possible to define something like this https://pastebin.com/raw/Yyrpv8Dz [2021-03-21 19:55:34] But yes, if you are just printing then I personally use ." blah" CR [2021-03-21 19:56:02] 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 [2021-03-21 19:58:29] 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 [2021-03-21 19:58:45] Left as an exercise to the reader [2021-03-21 19:59:22] "saved IP" I mean the *return IP* [2021-03-21 20:13:38] veltas: its not currently possible to do that in x4 because i dont support conditional compilation :) [2021-03-21 20:22:59] got pulldown menus working almost perfectly!!! err... almost lol [2021-03-21 20:23:29] when i draw the menu items into the pulldown it shows the second item on the first line, the third item on the second line.. . and is not showing the first item at all [2021-03-21 20:23:33] whiskey tango [2021-03-21 20:24:18] there is also a problem with double width chinese characters overwriting single width characters that overlap them [2021-03-21 20:24:26] even though the single width character is on top [2021-03-21 20:24:33] i know how to fix this but... pita [2021-03-21 20:38:41] mark4: You should add conditional compilation, it should be simple enough [2021-03-21 20:39:09] But nothing there requires conditional compilation, I just have it to try and make intelligent decisions, you can just select the definitions that make sense [2021-03-21 20:39:22] For x4 I wouldn't bother with CHAR/ because it wouldn't do anything [2021-03-21 20:39:32] And I'm assuming -rot is provided [2021-03-21 20:39:53] You might have an issue with your case-sensitive lowercase words though [2021-03-21 20:40:58] I dislike that 1 CHARS isn't 1 by definition tbh [2021-03-21 20:43:58] ⇐ dave0 quit (~davezero@069.d.003.ncl.iprimus.net.au): Quit: dave's not here [2021-03-21 20:47:58] veltas i deliberately did not implement it but yes it would be easu to implement [2021-03-21 20:48:15] conditional compilation is something i hate in other languages [2021-03-21 20:48:28] its makes it very very difficult to determine what is and is not included [2021-03-21 20:50:50] Well anyway mark4 the point is that my code is not really reliant on the conditional compilation, that's just there so that I don't replace the builtin -ROT if it exists, and I don't do a divide for CHAR/ because it's usually pointless [2021-03-21 20:51:42] Just a compromise between trying to avoid an "environmental dependency" and quality word definitions [2021-03-21 20:54:07] I just started working on a C project, and I am realising that most of the Forths I like have some level of support for calling C libraries [2021-03-21 20:54:23] So I am very tempted to try and rewrite in C [2021-03-21 20:54:41] I mean in Forth [2021-03-21 20:57:22] putting an FFI in x4 is on the todo list [2021-03-21 20:58:08] so i have a flag i can put on my windows that scroll locks them. err its in the FLAGS field of the structure, NOT the ATTRS field lol. no wonder my menus were not showing the first entry in the window [2021-03-21 20:58:19] writing the last entry was causing the window to scroll lol [2021-03-21 20:58:21] duh [2021-03-21 20:58:52] In ucurses? [2021-03-21 21:03:25] ya [2021-03-21 21:03:59] the pulldown menus are working now other than the current item of a pulldown is not yet highlighted and you cant select any items in the pulldown [2021-03-21 21:04:06] OR execute a selected item... yet [2021-03-21 21:05:26] also, if there is a single wide character overlaying a double wide character things can get glitchy [2021-03-21 21:05:31] i know how to fix, its just a pita [2021-03-21 21:14:43] Yet another self-inflicted issue mark4, terminals are not the forth way :P [2021-03-21 21:16:02] terminals ARE the forth way :) [2021-03-21 21:16:07] anything is the forth way [2021-03-21 21:16:15] including X or ick wayland [2021-03-21 21:52:02] ⇐ cantstanya quit (~chatting@gateway/tor-sasl/cantstanya): Ping timeout: 268 seconds [2021-03-21 21:55:52] → cantstanya joined (~chatting@gateway/tor-sasl/cantstanya) [2021-03-21 22:12:32] back [2021-03-21 22:34:20] → boru` joined (~boru@unaffiliated/boru) [2021-03-21 22:34:23] ⇐ boru quit (~boru@unaffiliated/boru): Disconnected by services [2021-03-21 22:34:25] * boru` → boru [2021-03-21 23:13:07] mark4: ick wayland? wayland is great! [2021-03-21 23:13:55] wayland was vaporware for a long time and KDE plasma REQUIRES i have it installed even though im not using it [2021-03-21 23:14:20] it COULD be great if they ever got it out of pre-beta [2021-03-21 23:16:36] got a really weird bug i dont uderstand in this TUI [2021-03-21 23:17:04] difficult to explain but you can see it when you run with the pull down menus activated [2021-03-21 23:17:32] its like chinese text in a window behind the pulldown menu is overwriting the border of the menu [2021-03-21 23:17:35] which is drawn second [2021-03-21 23:17:49] screen is updated with painters algorithm basically [2021-03-21 23:20:23] I'd imagine that's because the character is fullwidth, so it occupies two cells [2021-03-21 23:21:26] easiest solution I can think of after a lot of gin is that you need to draw a border, or at least some sorta overlay that modifies the characters underneath [2021-03-21 23:21:43] passing through halfwidth characters, replacing fullwidth characters with spaces [2021-03-21 23:22:32] ⇐ sts-q quit (~sts-q@212.53.219.220): Ping timeout: 240 seconds [2021-03-21 23:23:26] drawing of double width chars and normal widths chars works perfectly unless there is overlap between them [2021-03-21 23:24:34] and the border thats being obliterated by the double width character is drawn over the TOP of it [2021-03-21 23:24:41] or should be and i cannot see how it can not be [2021-03-21 23:25:31] without a screenshot I can't tell :) but I assume it's a property of the renderer your terminal uses [2021-03-21 23:25:42] you run linux? [2021-03-21 23:26:01] github.com/mark4th/uCurses [2021-03-21 23:26:58] fyi your build.sh has a typo [2021-03-21 23:27:05] it does? lol [2021-03-21 23:27:07] ./configure is misspelled [2021-03-21 23:27:10] i dont use it [2021-03-21 23:27:14] it should be ../configure [2021-03-21 23:27:22] er yeah [2021-03-21 23:27:23] because you run that inside the build dir [2021-03-21 23:27:30] but the word configure itself is misspelled [2021-03-21 23:27:52] lol oopts [2021-03-21 23:27:58] i knew that! [2021-03-21 23:28:20] i never use that script, its only there as a howto :) [2021-03-21 23:28:30] when you run ./u the space bar will pause the windows [2021-03-21 23:28:31] how do I trigger the bug? everything appears correct on alacritty 80f7adf [2021-03-21 23:28:39] f10 will pull down the menus [2021-03-21 23:28:43] the demo does look quite cool though :) [2021-03-21 23:28:46] pull the menus down and hit cursor right once [2021-03-21 23:29:02] oog [2021-03-21 23:29:04] oof* [2021-03-21 23:29:14] yeah I get that on my machine too [2021-03-21 23:29:16] hm [2021-03-21 23:29:25] so when you see you can hit space when the window with chinese text is at top left [2021-03-21 23:29:39] and you can see the chinese char obliterating the border chars [2021-03-21 23:29:43] yeah... [2021-03-21 23:29:54] but that border char is drawn LAST or... should be [2021-03-21 23:29:57] it makes no sense [2021-03-21 23:30:16] does your "damage detection" algo consider those cells "damaged"? [2021-03-21 23:30:33] what do you mean damage detection? [2021-03-21 23:30:39] modified ? [2021-03-21 23:30:54] yeah like deciding whether a cell gets redrawn [2021-03-21 23:31:47] ok so when the chinese character is written into a cell of the screen we know it takes two chars of the display so we mark the next cell in the scren with a DEADCODE marker [2021-03-21 23:31:59] but we redraw the ENTIRE screen every frame [2021-03-21 23:32:07] but then only output the changes [2021-03-21 23:32:35] so while it would have been [CHINESE][DEADCODE] in the screen itself the DEADCODE character would be overwritten with the | char of the border [2021-03-21 23:32:48] aha i think i know what the problem is [2021-03-21 23:32:49] maybe [2021-03-21 23:33:27] → sts-q joined (~sts-q@91.200.108.227) [2021-03-21 23:34:14] also you might already know this, but you don't handle SIGWINCH [2021-03-21 23:34:55] i do know that :) [2021-03-21 23:46:56] this is going to be very difficult to fix but i know whats causing it now