00:00:00 --- log: started retro/10.01.18 05:39:07 --- join: Mat2 (i=5b42fd43@gateway/web/freenode/x-uxydmhagxzyauwwg) joined #retro 05:39:13 hi ! 05:40:01 --- part: Mat2 left #retro 06:37:10 --- join: erider (n=chatzill@pool-173-69-160-231.bltmmd.fios.verizon.net) joined #retro 06:57:44 --- join: crcx (i=d8012b82@gateway/web/freenode/x-djmucdjjrzyagcqe) joined #retro 06:59:08 --- join: Mat2 (i=5b42fd43@gateway/web/freenode/x-cjapaqdaocebtfpt) joined #retro 06:59:18 hello 06:59:25 hi 06:59:39 what's going on ? 07:00:34 finishing the last bits of inventory stuff at work 07:01:48 crcx: i've seen hou have a assembla repro now 07:01:56 nothing much and you 07:03:01 erider: at current working on these experimental vm 07:04:01 what is it experimental :) You going to try something that has not been tried 07:05:10 http://hg.assembla.com/avm 07:06:02 bundling vm instructions into an 8 bit opcode and reduce memory fetches though an instruction cache 07:09:03 so you have something up and running 07:09:33 not yet, it's not finished 07:10:19 *Mat2 expected to have a usable interpreter this day* 07:10:41 what platform 07:11:28 every Unix alike os 07:11:36 with ANSI C compiler 07:16:37 Mat2: yes, I've setup a repo on assembla 07:16:59 I'll get a mirror of it up on github sometime, and phase out the old repos 07:17:27 crcx: fine, waht's the URL ? 07:17:31 what's 07:18:00 http://code.assembla.com/retro/git/nodes?rev=master 07:19:05 Mat2: what OS are you emulating? 07:20:01 erider: None, the vm is very low-level but should build for every POSIX conform OS 07:21:22 Mat2: what is going to run on top of it 07:21:41 Retroforth 07:22:06 *but for porting it, the vm should be finished first of course* 07:23:22 so you are making another ngaro 07:23:33 cool 07:25:31 hmm, yes and no, Ngaro is very different to this vm. 07:25:52 how so 07:26:43 I will metacompile the retro image to the new vm *think this should not be much of work* 07:27:41 AVM resembles more a microcode interpreter as it features an unencoded opcode format which bundles three instructions 07:28:02 direct accessing of the first stack element 07:29:34 it split instructions and there immediate parameters for fetching multible instructions bundles with one memory access etc. 07:29:35 hmm 07:31:48 all this help me implementing some optimations like replication and static superinsturctions 07:32:30 instructions 07:35:00 Mat2: how are you going to handle input stream 07:36:07 The high 8 bit of the flag register is used for simulating port accesses. So a instruction like this: 07:37:22 ADD TOS,0 | LI #FA00 | ST FL 07:37:40 addresses Port FA 07:37:54 ADD TOS,0 = NOP 07:38:16 please note, this is one vm instruction ! 07:39:12 reading from Port FA: 07:39:58 ok 07:40:13 ADC DS | LI #FA00 | LD FL 07:40:51 ADC DS = DUP 07:41:46 hmm sorry ADD + DUP 07:43:12 ok that is the instruction translation but how is the input going to be handle ie compile mode/interpreter mode/ dictionary header structure 07:44:16 etc... 07:44:56 that's the job of the forth implementation, not part of the vm 07:45:23 the vm operates on the same level as common microprocessors 07:47:35 ok so we are talking opcode and instruction translation 07:47:43 cool that is fun too :) 07:51:41 look, you can metacompile Retro to a specific machine code if you like (with llvm that would be not much effort) but this way you bind the resulting executable to a specific processor platform. 07:53:18 yeah the translation process may be complicated 07:54:19 With an low-level interpreter all you need is a decent C compiler. If the interpreter is fast enough that should be a better approach 07:58:59 so a fast interpreter is essential. With AVM I explore some ways to increase the runtime performance without falling back to native code compilation 08:00:46 my goal is to reduce the dispatch overhead to less than 5 cycles 08:01:03 on X86_64. 08:04:43 crcx: I will create a new assembla repro for my Ngaro vm probably next week. The new sources don't include the native code compiler but offers a better optimation though static instruction replication. 08:06:57 *Mat2 thinks it will be very hard to optimate the vm dispatch even more without native code compilation. The vm is in some tests now faster then gforth 0.7.0 which compiles primitives to dynamic superinstructions * 08:21:27 Mat2: so are you using the C compiler as a backend translator or did I not understand you correctly 08:22:29 no, i'm using C as platform independent assembler and code as hardware near as possible to optimate the interpreter dispatch 08:25:06 I see 08:55:32 --- quit: erider (Read error: 113 (No route to host)) 08:56:31 ciao 08:56:37 --- quit: Mat2 ("Page closed") 11:43:14 I lowered the default image size to 1,000,000 cells 11:53:31 --- quit: crcx ("Page closed") 13:19:21 --- join: erider (n=chatzill@pool-173-69-160-231.bltmmd.fios.verizon.net) joined #retro 13:58:21 --- quit: zbrown (Client Quit) 16:20:26 hi 16:36:19 --- join: crc (i=crc@71.23.200.183) joined #retro 16:55:14 howdy folks 16:55:18 hi docl 16:56:56 hi crc 17:03:56 brb 17:25:11 --- quit: crc (Read error: 113 (No route to host)) 17:40:56 http://retroforth.com/paste/?id=1941 17:41:12 a sort of minimal spaced-repetition flashcard system 18:47:05 --- join: crc (i=crc@71.23.200.183) joined #retro 18:48:19 docl: {{ }} isn't nestable 18:58:09 whats up guys 18:58:32 * crc thinks he has the windows install working properly now :) 18:58:42 coll 18:58:44 cool 19:00:48 really? I thought it was... must have been thinking of { } 19:01:02 { } can be nested, but {{ }} can't 19:02:08 btw it is really messy code. I was half asleep when I wrote it. 19:13:05 http://retroforth.com/paste/?id=1942 19:13:19 works better. has better examples. 19:21:06 --- quit: erider (Read error: 113 (No route to host)) 19:22:23 looks ok to me 19:22:51 in answer, use 1+ 19:24:00 char: 0 19:24:06 instead of 48 in >n 21:50:52 --- quit: crc (Read error: 60 (Operation timed out)) 23:59:59 --- log: ended retro/10.01.18