00:00:00 --- log: started retro/10.01.30 00:33:57 --- log: started retro/10.01.30 00:33:57 --- join: clog (~nef@bespin.org) joined #retro 00:33:57 --- topic: 'Retro Forth | Logs @ http://tr.im/Kept | http://retroforth.org | Stable Release 10.3.1 - January 2010' 00:33:57 --- topic: set by crc on [Tue Jan 12 18:14:13 2010] 00:33:57 --- names: list (clog @ChanServ) 00:34:34 --- join: virl (~virl__@chello062178085149.1.12.vie.surfer.at) joined #retro 00:35:26 --- join: SimonRC (~sc@fof.durge.org) joined #retro 00:43:43 --- join: yiyus (1242712427@je.je.je) joined #retro 01:01:45 --- join: docl (~luke@97-120-80-164.ptld.qwest.net) joined #retro 02:02:53 --- join: Mat2 (~5b40e9a7@gateway/web/freenode/x-guhkbyrmymqppfru) joined #retro 02:03:33 god morning 02:04:14 good 02:04:26 --- quit: Mat2 (Client Quit) 05:33:54 --- join: crc2 (~charlesch@c-68-80-139-0.hsd1.pa.comcast.net) joined #retro 05:34:16 --- mode: ChanServ set +o crc2 05:34:20 --- nick: crc2 -> crc 05:37:13 --- join: crcx (~Karere@bespin.org) joined #retro 05:37:49 going to be afk today, but will try to be availble as needed using my blackberry. 05:41:52 --- quit: crcx (Ping timeout: 276 seconds) 05:45:47 --- join: crcx (~Karere@bespin.org) joined #retro 05:50:58 --- quit: crcx (Ping timeout: 276 seconds) 05:51:34 --- join: crcx (~Karere@bespin.org) joined #retro 05:52:17 --- quit: crcx (Read error: Connection reset by peer) 05:52:35 not working. I'll have to change the script to match the new ircd :( 05:53:59 --- join: crcz (~crc@bespin.org) joined #retro 05:54:18 we'll try it this way (using ssh + screen) 05:57:08 Looks ok so far 05:57:59 looks like this will work 06:03:07 --- join: erider (~chatzilla@pool-173-69-160-231.bltmmd.fios.verizon.net) joined #retro 06:03:54 --- quit: erider (Changing host) 06:03:54 --- join: erider (~chatzilla@unaffiliated/erider) joined #retro 06:07:26 erider: retro is subroutine threaded 06:07:33 hi 06:08:14 crc is that different 06:08:37 it compiles to native code (for ngaro) 06:08:52 direct threaded is a list of addresses, not native code 06:10:59 hmm 06:11:45 so each instruction is compiled into machine code (ngaro vm) 06:13:19 yes 06:16:22 so when we are talking about compiler mode we are talking about when the forth system is building the dictionary. ie link----nameOfWord----definition 06:16:36 basically, yes 06:18:26 interpreter mode the forth system is going to execute or interpret the word or word list in the definition and execute them immediately as it interprets them? 06:19:34 yes 06:19:51 crc basically that is where subroutine threaded or direct threaded comes in 06:20:10 the way compiled code is handled differs 06:20:18 1) direct threaded code is a list of addresses 06:20:26 each is called, in order, until the end of the definition 06:20:34 2) subroutine threaded 06:20:43 native instructions handled by the cpu 06:21:07 direct threaded is more space efficient, but has less opportunitites for performance tweaks 06:21:12 bbiab; call coming in 06:23:40 so this is compiler mode builds---> foo(){ dup; drop; drop; } interpreter mode ----> call foo -->call dup--->call drop--->call drop return to listener state 06:31:03 --- join: Mat2 (~5b42fd06@gateway/web/freenode/x-iunkokcwrydgwxsi) joined #retro 06:31:08 hello 06:33:46 waht's going on ? 06:33:48 hi Mat2 06:33:55 hi erider 06:34:07 NOTHING MUCH AND YOU 06:34:28 I begin port retro to AVM 06:35:10 *Mat2 thinks, your keyboard is in caps lock mode* 06:35:13 a port to OPENVMS would be nice 06:35:34 yea it was 06:36:14 sadly I have no experience with VMS at all but know an cpu emulator on which it runs 06:39:42 just take a quick look at the wiki page about OpenVMS, seems this is a typical mainframe OS 06:40:08 so porting woulnd't be an easy think (without an ANSI C compiler) 06:40:57 most have c compilers 06:42:15 http://labs.hoffmanlabs.com/node/273 06:42:43 ok, I must correct me, it shoud be straight forward 06:44:08 not bad 06:44:21 crcz: crc, ist that you ? 06:44:55 erider: that is how direct threaded code works. In Retro, the listener calls 'foo' and the CPU takes care of executing the code. 06:45:11 hi crc 06:45:31 Mat2: yes. I'm on a blackberry, so have a bit of lag at my end. 06:46:07 ah ok, i'm begin porting retro over to AVM 06:46:29 we'll try it this way (using ssh + screen) 06:46:31 ok 06:46:42 Cool. 06:46:57 AVM looks nice from your docs. 06:48:04 look at the first benchmark, I'm very pleased with the performance 06:48:45 still no real use benchmark but a good test on threading performance (this loop thing) 06:51:45 A first question: why begins all colon definations with two nops ? 06:52:55 Vectored execution. 06:53:38 The nops are replaced by a jump if the word is revectored. 06:54:02 I see. 06:57:17 hmm, much colon definations in the image seems compiling to 2-3 AVM instructions, so I think about make inlining the standard compiler behaviour 06:57:42 It's not the most efficient thing, but it works pretty well. 06:58:02 Inlining is good. 06:58:24 yes but i'm now a bit pussled about the vector feature 06:59:09 I've thought about doing a VM that would skip the two nops, but haven't actually done so yet. 07:00:27 In my Retro, every colon word can be replaced at any time. 07:00:34 what about adding a vector pointer for dictionary entrys ? 07:01:42 That would require a different threading model 07:03:07 That'd be one advantage to indirect threading 07:04:20 not a real choice for both vm's, would be very ineffective 07:07:07 what's the common behavior ? I mean most vectored words would be only called after revectoring so the compiler can just ignore the vector field in the dictionary if emty and otherwhile compile a call 07:07:45 empty 07:08:27 hmm 07:09:59 this looses flexibility but the compiler can now inline every colon defination without problems 07:13:00 crc. what's with the inline class ? 07:13:47 There's no inline class in current Retro 07:14:33 In recent builds it was replaced by .primitive class while I consider how to best build a real inline class. 07:15:45 ok, I will attempt a static approach, inline everything if possible and revector if needed 07:15:47 crcz: so in compiler mode the building is happening immediately a word at a time 07:16:21 Erider: yes 07:17:21 after : the forth is interpreter each word up to a space char: 32 then appending it into the dictionary to the word being defined 07:20:46 Retro parses word by word. It pushes the xt of the word and the xt of the class to the stack. Then it calls with-class which executes the class handler. 07:21:24 The class handlers decide what to do with the xt, based on various bits of system state. 07:24:17 erider: my approach is non standard 07:24:23 * erider is starting to see that literal has a very important role 07:39:26 crc: is there some documentation on new features such as the vocab related words ? 07:41:41 Ask docl about vocab 07:41:51 ok 07:48:37 thanks for the answers, must working now 07:48:38 ciao 07:48:41 thanks 07:48:50 --- quit: Mat2 (Quit: Page closed) 08:14:17 --- quit: ChanServ (shutting down) 08:16:27 erider: my approach is non standard 08:16:44 I see 08:16:58 but I still want to understand it 08:17:00 It does work well though 08:17:56 Most forths have two loops: one for the interpreter and one for the compiler 08:18:14 Retro has one, which is called 'listen' 08:19:29 --- join: ChanServ (ChanServ@services.) joined #retro 08:19:30 --- mode: jordan.freenode.net set +o ChanServ 08:19:35 Retro has one, which is called 'listen'The behavior is always the same. Parse, lookup, push xt and class xt to stack, call 'with-class' 08:21:54 If a wod isn't found Retro tries to convert it a number. If this succeeds, the number is pushed to the stack and .data class is called 08:22:29 If the conversion to a number also fails, 'notfound' is called to report the error 08:23:28 The magic that makes it work is all in the class handlers 08:24:17 They are responsible for calling the wqord during interpretation, laying down the proper code when compiling, and so on 08:25:26 understood 08:31:02 I took the class based approach from Helmar qho used it in HelFORTH (now called 4p) 08:35:28 It made things much cleaner than before 08:35:59 Reva also uses a classes 08:38:51 In implementing the current Retro, I wrote implementatns of each word with the metacompiler's predecessor. 08:39:40 I wrote simple tests for them. 08:40:24 Once the pieces were done, I wrote the interpreter. 08:40:50 This was easy with the apprpoach I use. Parse, lookup, execute 08:48:09 The compiler was little trouble. Add a 'compiler' variable, have ] set it to true and [ set it yo false 08:48:27 Add create to make headers 08:49:15 Then extend the classes to lay down the proper code when compiler is true 08:49:30 And a simple forth system was working 08:50:10 Expanding it to the current level took more time, but the basic implementation can be done quickly. 09:08:38 --- quit: virl (Remote host closed the connection) 09:19:36 crcz: does retro have immediate word 09:26:47 Yes. : foo 1 . ; immediate 09:26:57 Class would be .macro 09:34:33 crcz how is you immediate defined 09:40:25 : immedIate ['] .macro reclass ; 09:40:46 crcz ah ok 09:45:50 crcz: how do you make retro drop the last image loaded with the usages of --with 09:49:17 You can use 'forget' to remove defined words 09:50:02 There's no other way to roll back changes to an image 09:50:11 the maze is holding the listener hostage 09:50:40 Kill the retro process 09:51:04 killall -9 retro 09:51:42 Then 'reset' the terminal if necessary 09:51:56 crcz everything I load retro the game is loaded 09:52:18 every time* 09:54:35 It made things much cleaner than beforecd image 09:54:48 cp pristine retroImage 09:55:04 cd .. 09:55:14 make 09:55:39 That should dop it, if you're using the 10.4 snapshot 09:55:48 *do 10:32:39 I thought that the maze demo had been fixed to no longer take over the image... I'll have to check this out. 10:39:27 crcz all I needed to do is cp pristine retroImage and retro is working again 10:39:31 Yeah, the current version of maze can be exited with 'q' key 10:57:14 The 'screen' tool is pretty handy 11:51:56 crcz why would we need to hide the last word in the dictionary 11:58:44 Hide it? 12:01:23 We wouldn't normally hide a word outside of a { } or {{ }} scope 12:06:26 ok 12:20:01 crcz hey when something is defined to be immediate is the whole definition immediate meaning are all the words gong to execute or be called once the interpreter reaches them? 12:35:18 hey crcz last if you are in a definition is last the first word in the definition example : foo dup drop drop ; dup is the last pointer 12:37:44 No 12:38:21 Last would point to the start of the header for foo 12:39:09 immediate means that the word will. Be called when its encountered 12:39:20 crcz so immediate would toggle dup to execute immediately 12:39:47 : foo dup drop drop ;immediate 12:40:16 or the entire definition 12:40:58 Under no. Circumstances will. A immediate word be compiled into a definition, unless ['] or ` is used 12:41:40 Immediate changes the class field in the dictionary header 12:43:21 on the current word if you call it in the middle of a definition 12:45:11 because you want ' to execute to return the xt of the word 12:47:53 crcz I need to understand this point I am on the verge 13:18:59 immediate should only be called after the word is defined 13:19:54 if used in a definition, it'll be called when the word is called, and will alter the header for the most recently created word, not the word calling it 13:26:25 home again 14:19:42 --- join: Mat2 (~5b42fd06@gateway/web/freenode/x-jgdyzvshqlmcuxvq) joined #retro 14:19:56 nabend 14:25:38 --- quit: Mat2 (Quit: Page closed) 14:38:07 howdy folks 14:43:03 hi docl 14:43:06 crc: I like the idea page 14:43:17 thanks 14:43:27 looks like it would fit well on a mobile phone or other small display 14:43:31 it does 14:43:49 I've been testing with various browsers on my blackberry 14:43:53 did you want to include a link to the forum? or do we still use the forum? 14:43:56 http://retroforth.org/idea/past.html 14:44:17 the forum is locked; no new discussion will take place on it, at least in the near future 14:44:25 ok 14:45:00 I'm considering opening a general forum for forth. 14:45:03 I spent a week cleaning up thousands of spam messages and junk accounts on it, and haven't had time to look into upgrading/migrating to newer, more secure forum software 14:45:09 docl: that would be useful 14:46:21 I'll see if I can get a phpbb going today. I already bought the domains. 14:50:33 I don't currently have links to the wiki, pastebin, or forum 14:51:19 wiki is going to be redone. I'm going to use something a bit more flexible and hopefully easier to maintain 14:55:45 --- quit: ChanServ (*.net *.split) 14:55:54 --- quit: erider (*.net *.split) 14:55:54 --- quit: crcz (*.net *.split) 14:55:57 --- quit: docl (*.net *.split) 14:56:16 --- quit: crc (*.net *.split) 14:56:40 --- quit: yiyus (*.net *.split) 14:56:45 --- quit: SimonRC (*.net *.split) 15:00:22 --- join: crcz (~crc@bespin.org) joined #retro 15:00:23 --- join: crc2 (~charlesch@c-68-80-139-0.hsd1.pa.comcast.net) joined #retro 15:00:23 --- join: SimonRC (~sc@fof.durge.org) joined #retro 15:00:23 --- join: yiyus (1242712427@je.je.je) joined #retro 15:00:56 still missing docl and erider... 15:01:05 --- join: docl (~luke@97-120-80-164.ptld.qwest.net) joined #retro 15:05:05 --- join: ChanServ (ChanServ@services.) joined #retro 15:05:05 --- join: erider (~chatzilla@pool-173-69-160-231.bltmmd.fios.verizon.net) joined #retro 15:05:05 --- mode: jordan.freenode.net set +o ChanServ 15:05:22 now everyone is back :) 15:06:29 --- mode: ChanServ set +o crc2 15:06:31 --- nick: crc2 -> crc 15:09:53 yup 15:35:38 cool 15:36:07 docl: I added a link to the new wiki (currently empty) 15:36:08 http://retroforth.org/pages/ 15:36:17 * docl is playing with htaccess for the forth forum 15:36:24 editing key is d98t~3 15:37:02 --- topic: set to 'Retro Forth | Logs @ http://tr.im/Kept | http://retroforth.org | Stable Release 10.3.1 | Wiki Key: d98t~3' by crc 15:38:56 --- join: virl (~virl__@chello062178085149.1.12.vie.surfer.at) joined #retro 17:19:40 : input 17:19:42 hex key ffff0000 xor 17:19:44 decimal 17:19:45 char: A = if 17:19:47 ." HELLO" cr 17:19:49 then 17:19:50 ; 17:20:49 crc this doesn't work can you give me a hand 17:20:51 you don't need to mask off the bits before comparing 17:20:53 : input key char: A =if ." HELLO" cr then ; 17:21:09 key will return the ascii code for the keypress 17:21:42 also, hex values must be capitalized 17:21:51 and hex and decimal aren't immediate, so: 17:21:53 hex 17:21:57 : input 17:22:04 I defined char: like this : char: parsews drop c@ ; 17:22:04 key FFFF0000 xor 17:22:18 erider: which forth? 17:22:25 reva 17:22:29 ok 17:22:32 one second... 17:23:09 so I would need to use hex like this [ hex ] 17:23:23 yes 17:23:35 char: isn't a macro there, you'd have to change it a bit 17:23:37 one second... 17:25:12 * erider wonders if the way he define char: is the problem 17:25:47 macro 17:25:59 : char: parsews drop @ literal, ; 17:26:01 forth 17:26:17 : input key $ffff0000 xor char: A =if ." HELLO" cr then ; 17:26:31 I dump the cell and I need c@ right 17:28:03 that still doesn't work 17:29:05 : char: parsews drop 1+ c@ literal, ; 17:29:09 try this one 17:29:48 nah 17:29:59 its is returning 0 17:30:00 use prefixes 17:30:15 : input key $ffff0000 xor 'A =if ." HELLO" cr then ; 17:30:25 I think Reva supports ' for ASCII symbols 17:30:54 it does but I was trying to implement char: 17:32:49 the parsews drop c@ should work 17:33:25 crc I need to mask with xor to get the first nibble because the key in reva is strange 17:33:37 ok> macro 17:33:37 ok> : char: parsews drop c@ literal, ; 17:33:37 ok> forth 17:33:43 this works, inside definitions 17:34:18 erider: on my mac, key returns ascii values 17:34:55 why is this not right : char: parsews drop c@ ; 17:35:30 that just leaves the value on the stack 17:35:38 you need to compile it into the defintion 17:37:44 I want it left on the stack 17:37:57 then what are you comparing to? 17:38:46 the return from key and whats is push on the stack by the return of char: 17:39:38 you don't want the ascii value to be compiled into the definition? 17:40:38 this works for me: 17:40:40 macro 17:40:40 : char: parsews drop c@ ~sys.compiling? if literal, then ; 17:40:40 forth 17:40:41 : input key char: A =if ." HELLO" cr then ; 17:40:51 : char: parsews drop c@ literal, ; 17:41:05 this doesn't work 17:42:01 ok> : input key $ffff0000 xor char: A =if ." HELLO" cr then ; 17:42:03 A? 17:42:12 char: has to be a macro 17:43:35 so I need to put it in [ ] 17:43:49 erider: just use mine, from above 17:43:50 ok> : input key $ffff0000 xor [ char: A ] =if ." HELLO" cr then ; A? 17:44:08 char: won't parse until the line is evaluated 17:44:21 macro : char: parsews drop c@ ~sys.compiling? if literal, then ; forth 17:44:32 use this instead, and drop the [ ] 17:44:55 ok 17:45:31 I haven't learned those words 17:45:53 macro - switch reva's compiler to use the macro class (immediate words) 17:46:04 forth - switch the compiler back to generating normal words 17:46:09 ~sys.compiling? 17:46:20 references the compiling? function in the ~sys context 17:46:27 literal, compiles a literal 17:47:11 compiles a literal and stores it in the data section of the definition 17:47:31 yes. 17:47:51 ok 17:48:00 * erider keeps going 17:48:34 crc what is retro from for create ... does> 17:48:56 retro has create/does> 17:49:34 : foo ( n"- ) create , does> @ . cr ; 17:49:36 10 foo bar 17:49:38 bar 17:49:39 10 17:52:57 : foo create , , does> @ >r cell+ @ r> * ; 17:53:28 : foo create , , does> dup @ push 1+ @ pop * ; 17:53:56 you only get one reference, the fetch/push wouldn't leave anything for cell+ @ on the stack 17:54:00 yeah I missing the dup 17:57:26 crc the thing I don't like about create does> in stage 2 it only return the starting address of the data section and you would need to scale the cells if you use more , , , , , 17:58:13 it's only intended for strict data sizes 17:58:27 you'd use separate words for more flexible handling of things 17:58:31 (ideally) 17:59:20 but I thought you had to use that pointer to pass data to the words after does> 17:59:45 you do 18:00:20 difficult to handle a lot of data 18:00:46 so write and use words that aren't tied to a named data element 18:01:05 or I can I need to me something better to handle cells scaling 18:01:25 huh 18:01:40 I need to make something better to handle cells scaling 18:04:11 * crc just changed the metacompiler to drop the use of does> 18:04:22 does> is no longer used by any code in retro 18:06:15 I like does> 18:06:40 I just figure out how to use it will sort of :) 18:06:52 it's useful, but I can do without it 18:07:17 (in retro, it adds another layer of indirection, due to the approach I used in implementing it.) 18:10:01 crc so what are you using instead 18:10:18 : vm: ` : .data `; ; 18:10:42 generates more efficient code for the one place I was using does> 18:10:46 (the metacompiler_ 18:15:09 crc I figure that m, is a modified definition for , because you are using different memory space and not user memory space like the normal one is using 18:15:17 yup 18:15:32 actually that was wrong: 18:15:39 : vm: ` : .data ` m, ` ; ; 18:15:41 there :) 18:17:21 vm: is like variable 18:17:33 no 18:17:52 vm: is basically a wrapper generating words with a specific action 18:17:57 0 vm: nop, 18:18:01 compiles to: 18:18:04 : nop, 0 ; 18:18:06 err 18:18:11 : nop, 0 m, ; 18:18:17 * crc is starting to get tired 18:18:38 so like constant then :) 18:18:44 yes 18:19:26 nop, returns 0 18:19:45 nop, compiles 0 into the target memory 18:19:58 it leaves nothing on the stack 18:20:06 : nop, ( - ) 0 m, ; 18:20:10 it is literally zero :) 18:20:33 each opcode word just copies its value into the target memory 18:21:21 but it is in the memory of ths data section of the word in the dictionary 18:21:41 ? 18:21:54 so if you did this ' nop, 1 cells dump 18:22:00 you we see 0 18:23:57 0 0 1 0 7 .... 9 18:24:05 where .... is the address of m, 18:24:24 the first two 0's are NOP instructions used by the vector functionality in retro 18:24:28 1 0 18:24:40 1 is the opcode for LIT, which pushes a value to the stack 18:24:42 7 .... 18:24:50 7 is a CALL opcode, so calls .... 18:24:56 9 is the RETURN opcode 18:25:09 that'd be the machine code 18:26:07 you should see 00 00 00 00 18:26:17 not in retro 18:26:34 1) we don't deal in 8 bit bytes at all 18:26:43 so you'd just see 0 if you dumped one address unit 18:26:54 which would be the first of the two NOP instructions 18:27:05 you would only see opcode if it was a function 18:27:41 if you dumped the full machine code, you'd see what I pasted: 0 0 1 0 7 .... 9 18:27:50 5 instructions 18:28:40 if we were still using does> you'd just see 0 18:28:55 and have to look at the class handler for more 18:29:06 but that was less efficient 18:30:51 I have been using dump to figure out how create does> work 18:31:23 dump is a poor tool unless you know the binary encodings of the instruction set 18:31:28 'see' :) 18:33:03 dump shows me where the data lives and see shows me the code 18:34:09 retro has no dump word at present 18:36:34 you don't have a inline word either 18:37:41 inlining code can be problematic 18:38:04 you have to make sure that the copied code doesn't contain any jumps (in retro at least) 18:39:30 crc I can figure out how to use accept in reva 18:40:16 create buffer 100 allot 18:40:26 buffer 100 accept 18:40:36 accept returns the number of characters that were read 18:42:07 it puts the decimal of the chars on stack 18:42:49 ok> create foo 100 allot 18:42:50 ok> foo 100 accept 18:42:50 hello 18:42:50 ok> .s 18:42:51 (1) 5 18:42:58 crc how can I put it into a pad or tib 18:43:00 that's what I get, which is what the docs specifiy 18:43:08 pad 100 allot 18:43:12 err. 18:43:15 pad 100 accept 18:43:22 would read up to 100 keys into pad 18:46:27 what is the code for forget 18:46:44 in retro? 18:46:59 sure 18:47:01 : forget ( "- ) ' 0; drop which @ dup heap ! @ last ! ; 18:47:06 it'll be different for reva 18:47:22 but that's what retro uses for forget 18:47:42 what is which 18:47:51 what is it a pointer to 18:47:52 which is a metavariable :) 18:48:09 it always points to the most recently found dictionary header 18:48:22 that is not last 18:48:26 e.g., it's updated whenever a word looks up another word 18:48:27 no 18:48:44 : foo ' drop which @ ; 18:48:46 foo words 18:48:58 which would point to the header for words 18:49:00 foo cr 18:49:07 which would point to the header for cr 18:49:08 and so on 18:49:21 it's a special variable updated by the listener 18:51:12 I like it 18:51:34 you can clean your dictionary up for time to time 18:52:47 yup 18:54:07 I should be able to use last and reset the pointer 18:54:48 I may need to manually count the bytes 18:55:38 can use here it is in different memory space 18:55:45 can't* 19:01:56 reva has a lot of design choices that make things like forget more difficult 19:03:49 reva has 'mark' to do something similar to forget: 19:03:51 mark foo 19:03:54 : bar ... ; 19:03:57 : biz ... ; 19:04:00 ..... 19:04:02 foo 19:04:17 now foo, and everything after it, are removed 19:04:30 you'll have to include the file with it though 19:04:54 needs util/misc 19:05:03 code is in lib/util/misc 19:05:47 hmm ok 19:06:29 what is a good why use use ' and , together in a definition 19:10:42 in retro, you could use them to build a direct threaded word: 19:10:44 .direct ( a- ) dup 1+ swap @ for push r @ execute pop 1+ next drop ; 19:10:45 : dtc: ( n""- ) create dup , for ' , next ['] .direct reclass ; 19:10:54 3 dtc: foo words cr cr 19:12:25 whew I have some more learning and testing to go 19:19:12 what is the mess suppose to do 19:19:40 direct threaded code consists of a series of addresses 19:19:52 this is part of a direct threaded compiler addon for retro 19:20:11 .direct is a class, it walks through the list of addresses, calling them each in turn 19:20:12 oh 19:20:23 dtc: builds the direct threaded definition 19:20:35 i known what dtc is then 19:24:45 --- quit: erider (Ping timeout: 246 seconds) 19:41:44 --- quit: SimonRC (Ping timeout: 256 seconds) 19:50:35 --- join: SimonRC (~sc@fof.durge.org) joined #retro 20:19:38 ok, forthcommunity.com is up for a test run 20:23:38 I'm registered 20:24:48 now you are an administrator 20:34:18 thanks 20:34:29 I posted links to my collection of standards documents 20:37:13 nice! 20:38:37 --- topic: set to 'Retro Forth | Logs @ http://tr.im/Kept | http://retroforth.org | Stable Release 10.3.1 | Wiki Key: d98t~3 | http://www.forthcommunity.com' by crc 20:44:29 I may add a wiki and other such features as well. 20:45:16 you'd be competeing with the existing forthfreak wiki 20:45:26 that's a good point 20:47:05 might be better to stick to the forum niche 20:48:12 perhaps a blog? 20:48:48 blog is good 20:51:44 I could also put in a chat interface for #retro 21:14:35 I should look into whatever social networking software I can find, and try to integrate it with the forum 23:59:59 --- log: ended retro/10.01.30