00:00:00 --- log: started forth/19.04.28 00:04:18 --- quit: dave0 (Quit: dave's not here) 01:23:47 --- quit: rain1 (Ping timeout: 250 seconds) 02:02:54 --- quit: ashirase (Ping timeout: 245 seconds) 02:07:24 --- join: ashirase (~ashirase@modemcable098.166-22-96.mc.videotron.ca) joined #forth 02:33:31 --- join: rain1 (~My_user_n@unaffiliated/rain1) joined #forth 03:50:03 --- join: dddddd (~dddddd@unaffiliated/dddddd) joined #forth 04:08:50 --- join: rdrop-exit (~markwilli@112.201.166.63) joined #forth 04:19:51 been playing with graph databases this morning 04:20:06 really cool stuff 04:22:32 I'm watching today's SVFIG meeting on Youtube 04:22:48 what are the talks about today 04:23:34 Right now it's Intel 4004 related 04:23:42 the only real actual forth thing was pointfree 's chat about Forth unikernels which actually is something I'm quite interested in. 04:24:20 Haven't gotten that far in the video. 04:24:49 rdrop-exit, I skipped ahead and now went back to the Intel 4004 stuff. 04:29:01 SVFIG? 04:29:18 presiden, yep https://www.youtube.com/watch?v=4I74wNEDMEY 04:30:53 I'm mostly listening rather than watching, have it running in the background 04:34:19 interesting 06:43:39 --- quit: rdrop-exit (Quit: Lost terminal) 07:13:52 proteusguy: forth unikernels? 07:14:07 I'm not familiar with the concept. 07:16:00 effectively you create a combined executable and OS all in one that doesn't have the overhead and complexity of something like linux or windows just to run your forth app. sorta like self-hosted forth except you are using existing device drivers and such. 07:16:51 https://en.wikipedia.org/wiki/Rump_kernel http://rumpkernel.org/ 07:16:58 cp/m - dos 07:17:10 Interesting. That is definitely achievable with zkeme80 07:17:28 I think you're already there with zkeme80. :-) 07:18:11 I'm trying to weigh in the upsides and downsides of adding threads with a round-robin interrupt scheduler 07:18:16 Isolating Forth "processes" with their own stacks is quite difficult 07:18:26 I mean their own heaps 07:18:39 The stacks are somewhat easy because Z80 allows direct manipulation of the stack pointer 07:18:59 classically I think systems just divided up the memory in a fixed manner. 07:20:58 But realistically I think that full-blown "concurrency" isn't really needed (especially on embedded, calculator-like systems) 07:21:17 Persistence I guess is more important, I should be able to restore an application's state fully, for instance 07:21:30 Doesn't require the complexity of threads and so on 07:22:10 eventually we got chips that provided memory management and you could map local "virtual" memory to different physical allocations. Later z80s and 68881 (as I recall from memory) started offering this in hardware as the 64k limit was blown thru. 07:22:32 Yep. The TI-84+ uses such a scheme 07:22:36 Talking to flash chips 07:22:44 IIRC 24 bit virtual memory space 07:23:36 Without all the bloat of the default operating system it's actually an incredible amount of space one can play with, I've barely scratched the surface of it. 07:24:34 I think the next big leap would be when I figure out how to send/receive via the USB port, so the entire operating system doesn't need to be reflashed every time I want to make a change to a single Forth module 07:28:17 siraben, how does the 24bit pointer work? 07:28:34 is it like three byte wide registers? 07:31:09 MrMobius: details here: http://wikiti.brandonw.net/index.php?title=83Plus:Memory_Mapping 07:31:10 I'm guessing two overlapping 16-bit segmented registers. 07:31:48 Essentially, I write to a port to set which memory bank is reflected in ram 07:31:56 http://wikiti.brandonw.net/index.php?title=83Plus:Ports:06 07:32:02 Port 6, for instance, swaps pages into memory bank A 07:32:08 4000-7FFF hex 07:32:57 There's a bunch of raw flash routines: http://wikiti.brandonw.net/index.php?title=83Plus:OS:Raw_Flash_Commands 07:33:01 ah worse than I thought... haha intel wasn't so bad after all. 07:33:20 As usual with flash, writing is easy, can be done at random, erasing is an all-or-nothing operation 07:33:32 siraben, ah ok so not virtualmemory then just page banking 07:33:42 Right 07:34:02 You could set up a Forth system to hide this implementation detail 07:34:11 Something like !! and @@ for 24-bit reads/writes 07:34:30 Except that !! would only change a 1 to a 0 07:35:43 The only forth word I have that exposes this bank switching thing is https://github.com/siraben/zkeme80/blob/fbc09809196fd4f21dccafcd859943fc3a87b674/src/forth.scm#L1986 07:36:16 Oh there's a CMOVE-FLASH too, although I haven't tested it 07:36:44 interesting 07:37:49 Still amazed that this assembler works, 07:38:01 Didn't do anything too fancy, hasn't warranted a rewrite at all 07:38:23 And I get extremely powerful macros for free, because it's Scheme 07:38:27 I was thinking about how to implement that kind of system where you have objects spread out over different pages and combine them into a third object 07:38:49 like when you do math on the calculator 07:38:49 MrMobius: define "combine" 07:38:56 z=x+y 07:39:23 the easiest thing is to reset the bank once for each source and once for the dest 07:39:38 even though that is unnecessarily slow if they all happen to be in the same bank 07:39:44 Right 07:39:58 So it would work if I had larger functions that needed to be on different blocks 07:40:22 And the kernel would figure out to do its swapping etc, and compile that word so that subsequent calls are fast 07:40:43 The system would have to be really large by then to warrant such complexity 07:42:02 you mean optimize so that it doesnt set the bank if its already pointing to the right bank? 07:42:18 That could be a possibility 07:42:29 So predefine the word headers in the first bank, say 07:42:38 With pointers to their actual location 07:42:44 i.e. what byte of what bank 07:43:05 So initially the system could be slow, with a lot of swapping, but this only happens on the first invocation of each function 07:43:41 so if I wrote ln(sec(x)), the system would go and compile SEC and LN and run them 07:43:57 Next time you call LN or SEC it's just found like a normal forth word 08:17:22 At svfig, John Rible mentioned a nifty forth spreadsheet software where you could open a spreadsheet cell and put forth code in it. 08:19:40 I really want something like that using the octopart api for optimizing pcb bill of materials. 08:22:31 Then I found https://en.m.wikipedia.org/wiki/Logical_spreadsheet 08:23:13 --- quit: X-Scale (Ping timeout: 246 seconds) 08:25:19 --- part: PoppaVic left #forth 09:02:48 --- join: X-Scale (~ARM@31.22.201.96) joined #forth 09:55:01 pointfree: Heh, reminds me a bit of emacs, where you can make speadsheets in org-mode syntax and fill the cells with (elisp?) logic. 10:01:25 Cool! 10:19:29 pointfree: Is there a link to that talk? I couldn't really find it. 10:21:49 john_cephalopoda: https://www.youtube.com/watch?v=4I74wNEDMEY&t=8970s 10:23:48 Thanks 10:24:59 Ow, google hangouts... 10:25:58 :) 10:27:48 The German Forth club uploads their videos after the conference, with pretty good audio and video quality. 10:31:57 Forth-Gesellschaft is enviable in a lot of ways. They even have their own magazine, a good way to improve my German skills. 10:33:01 They also recently updated their website from a early-2000-ish site to a modern one. 10:33:18 SVFIG and forth.org, in comparison, look horrible. 10:33:49 Why do the Germans like Forth so much?!? 10:34:29 Oh, wow, their latest magazine is practically all about fixed point numbers and calculations <3 10:40:27 Some of the articles are even in English 10:40:55 http://forth-ev.de/wiki/res/lib/exe/fetch.php/vd-archiv:4d2018-02.pdf#page=13 "Sechs Pixel gehen in eine Bar und bestellen ein Sixel . . ." 10:42:21 link for the lazy http://forth-ev.de/wiki/vd-archiv 12:19:34 --- quit: gravicappa (Ping timeout: 245 seconds) 12:25:46 Heh, I am using OSS emulation to play beeps with forth :D 12:39:57 --- join: gravicappa (~gravicapp@h109-187-32-71.dyn.bashtel.ru) joined #forth 13:06:13 --- quit: gravicappa (Ping timeout: 250 seconds) 13:35:48 --- join: tabemann_ (~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) joined #forth 13:38:41 --- quit: tabemann (Ping timeout: 276 seconds) 16:05:52 --- join: ullbeking (sid5364@gateway/web/irccloud.com/x-zwmtaikpysdfbclw) joined #forth 16:06:02 good evening all 16:23:03 --- join: dave0 (~dave0@108.060.dsl.syd.iprimus.net.au) joined #forth 16:24:40 hi 16:32:20 Hello ullbeking and dave 16:32:43 hi john_cephalopoda 16:38:11 hello john_cephalopoda 16:38:29 wow it has been a long long time since i used forth 17:01:29 --- quit: john_cephalopoda (Ping timeout: 276 seconds) 17:15:09 --- join: john_cephalopoda (~john@unaffiliated/john-cephalopoda/x-6407167) joined #forth 18:52:24 Hello ullbeking 19:13:42 --- join: PoppaVic (~PoppaVic@unaffiliated/poppavic) joined #forth 19:13:52 hi pointfree 19:15:49 i initially popped in here because i've started trying to build up a library of open firnware based documentation, but then i remebered how much job i had using forth in the 1990's, and i'm wondering, escpially, what are some apps it's used in now..? 19:15:56 i know it's used a lot in embedded stuff 19:16:20 and i am taking a new interest in embedded computing, which is a nice coincidendence 19:17:40 p.s. why is there one compiler for arm and one for x32 at https://github.com/mark4th? 19:18:45 i'm coming from a ppc/power8+9 background, so will any forth tooling avaiable to my require ]changing? 19:26:24 yes 19:50:59 --- quit: MrMobius (Read error: Connection reset by peer) 20:04:54 --- join: MrMobius (~default@c-73-134-82-217.hsd1.va.comcast.net) joined #forth 20:05:02 --- quit: dddddd (Remote host closed the connection) 21:02:50 --- join: gravicappa (~gravicapp@h109-187-32-71.dyn.bashtel.ru) joined #forth 21:55:33 --- quit: chunkypuffs (Quit: ZNC 1.7.1 - https://znc.in) 21:56:11 --- join: chunkypuffs (~chunkypuf@2a01:4f9:2b:16d5::1) joined #forth 22:52:57 --- quit: proteusguy (Ping timeout: 250 seconds) 22:55:23 nap time 22:55:42 --- quit: dave0 (Quit: dave's not here) 23:59:59 --- log: ended forth/19.04.28