00:00:00 --- log: started forth/18.06.06 00:15:00 --- quit: proteusguy (Remote host closed the connection) 00:27:48 --- quit: smokeink (Remote host closed the connection) 00:30:33 i just wrote EXECUTE in machine code! it builds an interpreted word on the return stack to call the address! 00:31:14 make my head spin 00:36:41 --- join: Keshl (~Purple@24.115.185.149.res-cmts.gld.ptd.net) joined #forth 00:37:11 --- nick: Keshl -> Keshi 00:37:17 --- nick: Keshi -> Keshl 00:42:28 --- join: proteusguy (~proteus-g@180.183.133.242) joined #forth 00:42:28 --- mode: ChanServ set +v proteusguy 00:44:58 damn forth is small... the longest bits of code is calling the host's i/o functions (i used 2 C functions getchar and putchar to interface with UNIX) 00:45:44 so i had to set up the registers to call the C function 01:00:33 --- quit: dys (Ping timeout: 256 seconds) 02:13:19 --- join: karswell_ (~user@cust125-dsl91-135-5.idnet.net) joined #forth 02:15:12 --- quit: karswell_ (Remote host closed the connection) 02:16:34 --- join: karswell_ (~user@cust125-dsl91-135-5.idnet.net) joined #forth 02:26:43 --- quit: mnemnion (Remote host closed the connection) 02:39:15 --- quit: nighty- (Quit: Disappears in a puff of smoke) 02:59:13 --- join: mnemnion (~mnemnion@2601:643:8102:7c95:2079:4824:7221:5cbc) joined #forth 03:04:38 --- quit: karswell_ (Read error: No route to host) 03:06:01 --- join: karswell_ (~user@cust125-dsl91-135-5.idnet.net) joined #forth 03:16:11 --- join: TCZ (~Johnny@ip-91.189.219.200.skyware.pl) joined #forth 03:21:24 dave0: It's fun watching someone in the phase of discovery you're in right now. It's like "young love." :-) 03:22:49 --- quit: karswell_ (Read error: No route to host) 03:22:57 haha 03:23:40 i've been using C so long it makes Forth seem weird and powerful 03:24:24 and i also love assembly 03:24:41 --- join: karswell_ (~user@cust125-dsl91-135-5.idnet.net) joined #forth 03:24:49 Yes, assembly is a neglected art these days. 03:25:02 They almost don't teach the fun low-level stuff any more. 03:25:18 "Let the tools / libraries do that for you." 03:25:39 i'm self taught 03:28:20 --- quit: ThirtyOne32nds (Remote host closed the connection) 03:44:16 --- nick: karswell_ -> karswell 03:49:19 --- quit: proteusguy (Remote host closed the connection) 04:19:33 --- quit: karswell (Read error: Connection reset by peer) 04:20:24 --- join: karswell (~user@cust125-dsl91-135-5.idnet.net) joined #forth 04:33:03 --- quit: mnemnion (Remote host closed the connection) 04:39:29 --- quit: TCZ (Quit: Leaving) 04:58:10 --- quit: karswell (Remote host closed the connection) 04:59:00 --- join: TCZ (~Johnny@ip-91.189.219.200.skyware.pl) joined #forth 04:59:26 --- join: karswell (~user@cust125-dsl91-135-5.idnet.net) joined #forth 05:00:47 --- quit: FatalNIX (Max SendQ exceeded) 05:01:06 --- join: FatalNIX (~FatalNIX@caligula.lobsternetworks.com) joined #forth 05:06:30 --- join: mnemnion (~mnemnion@2601:643:8102:7c95:2079:4824:7221:5cbc) joined #forth 05:10:28 --- quit: mnemnion (Remote host closed the connection) 05:10:39 --- join: mnemnion (~mnemnion@2601:643:8102:7c95:2079:4824:7221:5cbc) joined #forth 05:19:08 --- quit: pierpal (Quit: Poof) 05:19:29 --- join: pierpal (~pierpal@host23-9-dynamic.16-87-r.retail.telecomitalia.it) joined #forth 05:20:48 --- join: nighty- (~nighty@s229123.ppp.asahi-net.or.jp) joined #forth 05:20:51 --- join: ncv (~neceve@unaffiliated/neceve) joined #forth 05:37:30 --- quit: TCZ (Quit: Leaving) 05:43:57 --- quit: pierpal (Quit: Poof) 05:44:18 --- join: pierpal (~pierpal@host23-9-dynamic.16-87-r.retail.telecomitalia.it) joined #forth 05:54:59 --- join: proteusguy (~proteus-g@cm-134-196-84-107.revip18.asianet.co.th) joined #forth 05:54:59 --- mode: ChanServ set +v proteusguy 05:56:26 KipIngram, if you do not now how big thing are ahead of time you kind of need null termination or some other marker 05:58:03 of course that is better to always know how the exact size of things ahead of time but it is not always the case 05:58:43 even if you know the maximum size of something 05:59:00 that something could be less than MAXSIZE sometimes 05:59:05 just ranting alone 05:59:07 please ignore me 06:01:30 Sure, if you face an externally supplied data item and all you know is how to recognize the end of it, then you do have to search. 06:01:42 But you could convert it to some form of your own design and add a count. 06:01:57 The original person on that was developing an arbitrary precision arithmetic package. 06:02:07 He certainly could maintain a count field for each number. 06:02:15 He has control over his data structures. 06:12:18 --- quit: mnemnion (Remote host closed the connection) 06:12:57 --- quit: karswell (Read error: Connection reset by peer) 06:13:00 --- join: mnemnion (~mnemnion@2601:643:8102:7c95:2079:4824:7221:5cbc) joined #forth 06:17:51 --- quit: mnemnion (Ping timeout: 260 seconds) 06:19:07 --- join: smokeink (~smokeink@59-125-28-152.HINET-IP.hinet.net) joined #forth 06:48:55 --- join: mnemnion (~mnemnion@2601:643:8102:7c95:81ce:6056:3841:efac) joined #forth 07:12:25 --- join: TCZ (~Johnny@ip-91.189.219.200.skyware.pl) joined #forth 07:20:12 --- quit: smokeink (Remote host closed the connection) 07:33:59 --- join: smokeink (~smokeink@59-125-75-78.HINET-IP.hinet.net) joined #forth 07:49:50 --- quit: pierpal (Quit: Poof) 07:50:08 --- join: pierpal (~pierpal@host23-9-dynamic.16-87-r.retail.telecomitalia.it) joined #forth 08:00:59 --- quit: smokeink (Ping timeout: 260 seconds) 08:05:12 --- quit: TCZ (Quit: Leaving) 08:20:31 --- quit: tadni_ (Ping timeout: 264 seconds) 08:26:33 --- join: tadni_ (~tadni@24-182-175-184.dhcp.stls.mo.charter.com) joined #forth 08:27:34 --- quit: pierpal (Quit: Poof) 08:27:54 --- join: pierpal (~pierpal@host23-9-dynamic.16-87-r.retail.telecomitalia.it) joined #forth 08:38:23 --- join: karswell (~user@cust125-dsl91-135-5.idnet.net) joined #forth 08:45:32 --- quit: ncv (Ping timeout: 276 seconds) 08:45:48 --- quit: tadni_ (Remote host closed the connection) 08:46:33 --- join: ncv (~neceve@79.114.7.58) joined #forth 08:46:33 --- quit: ncv (Changing host) 08:46:33 --- join: ncv (~neceve@unaffiliated/neceve) joined #forth 08:49:53 --- join: tadni_ (~tadni@24-182-175-184.dhcp.stls.mo.charter.com) joined #forth 08:52:16 --- quit: ncv (Ping timeout: 256 seconds) 09:03:30 --- join: ncv (~neceve@79.114.7.58) joined #forth 09:03:30 --- quit: ncv (Changing host) 09:03:30 --- join: ncv (~neceve@unaffiliated/neceve) joined #forth 09:12:49 --- quit: ncv (Ping timeout: 240 seconds) 09:22:56 --- quit: amuck (Ping timeout: 240 seconds) 09:24:26 --- join: amuck (~amuck@152.243.185.35.bc.googleusercontent.com) joined #forth 09:42:00 --- quit: tadni_ (Ping timeout: 276 seconds) 09:42:35 --- join: tadni_ (~tadni@71-11-142-172.dhcp.stls.mo.charter.com) joined #forth 09:49:04 --- join: Labu (~Labu@labu.pck.nerim.net) joined #forth 09:58:57 --- join: dys (~dys@tmo-123-169.customers.d1-online.com) joined #forth 10:06:26 --- quit: mnemnion (Ping timeout: 245 seconds) 10:11:10 --- join: rixard (~rixard@host-95-199-152-81.mobileonline.telia.com) joined #forth 10:12:31 --- quit: rixard (Client Quit) 10:23:34 --- quit: proteusguy (Ping timeout: 268 seconds) 10:36:41 --- join: mnemnion (~mnemnion@2601:643:8102:7c95:2079:4824:7221:5cbc) joined #forth 11:20:24 --- join: proteusguy (~proteus-g@cm-134-196-84-8.revip18.asianet.co.th) joined #forth 11:20:24 --- mode: ChanServ set +v proteusguy 11:57:35 --- quit: pierpal (Quit: Poof) 11:57:56 --- join: pierpal (~pierpal@host23-9-dynamic.16-87-r.retail.telecomitalia.it) joined #forth 12:16:16 --- quit: karswell (Ping timeout: 256 seconds) 15:29:31 --- quit: pierpal (Quit: Poof) 15:29:49 --- join: pierpal (~pierpal@host23-9-dynamic.16-87-r.retail.telecomitalia.it) joined #forth 15:33:59 hi 15:34:11 Hi dave0. 15:34:15 wb 15:34:33 hi KipIngram 15:41:41 --- join: pierpa (57100917@gateway/web/freenode/ip.87.16.9.23) joined #forth 16:15:34 is it allowed that >CFA equals >DFA for a word? i found that there is no need for a codeword in machine language words (you can just start executing at >CFA) ? 16:16:36 it's no trouble to have an extra word in machine language, it's just a NOP 16:17:00 (direct threading) 16:17:51 er sorry i'm mixing up terms.. s/extra word/extra cell/ 16:18:32 --- join: TCZ (~Johnny@ip-91.189.219.200.skyware.pl) joined #forth 16:23:18 what is dfa 16:37:03 --- quit: nighty- (Quit: Disappears in a puff of smoke) 16:37:44 Right, dave0. That's fine. 16:37:55 For primitives you can "return" directly to the first instruction of the primitive. 16:38:06 No need to have a jump that just jumps right past the jump. 16:38:10 --- quit: TCZ (Quit: Leaving) 16:38:39 That's one of the "perks" of direct threading. 16:51:15 --- join: TCZ (~Johnny@ip-91.189.219.200.skyware.pl) joined #forth 16:55:19 --- quit: dys (Ping timeout: 240 seconds) 16:57:29 --- part: Teckla left #forth 17:02:16 --- quit: TCZ (Quit: Leaving) 17:04:03 --- quit: mnemnion (Remote host closed the connection) 17:04:29 --- join: mnemnion (~mnemnion@2601:643:8102:7c95:2079:4824:7221:5cbc) joined #forth 17:25:07 I'm confused about how his direct-threaded vm worked if he wasn't already doing this 17:39:03 I think he was putting a nop in where the jump would have gone for non-primitive words. 17:39:13 And then wondered why he had to do that. And of course he doesn't have to do that. 17:39:38 That's just me trying interpret several unrelated remarks he made over the past couple of days. 17:40:26 KipIngram: yep that's exactly what i was doing 17:40:30 The "purist" way to write that would be to have a jmp at the CFA address, but it would just jump to the immediately following byte. 17:40:37 And of course is thus unnecessary. 17:40:46 --- join: nighty- (~nighty@kyotolabs.asahinet.com) joined #forth 17:41:04 --- quit: dddddd (Remote host closed the connection) 17:41:16 But then *all* of your CFA locations would have a jump. 17:41:31 dave0, you said you have docol's address in a register, so nested definitions can jmp . 17:41:36 oh I see 17:41:42 But you're not doing that with dovar, and so on, right? 17:41:44 Just docol? 17:41:48 Since it gets used a lot? 17:42:21 KipIngram: i don't know the terminology :-( 17:42:44 docol: the little routine that saves your ip on the return stack and reloads it with the new definition. 17:42:59 sometimes called enter or nest 17:43:01 dovar: the bit of code that handles variables by pushing the parameter field address onto your datastack. 17:43:22 : ---> docol (like docolon or do:) 17:43:25 KipIngram: yep, that's a jmp *%ebp 17:43:34 variable ---> dovar (like dovariable) 17:43:35 etc. 17:43:54 KipIngram: i haven't written dovar yet :-p 17:44:30 I don't think you need to register any of them except for the colon definitions. Nothing else really gets used terribly frequently. 17:45:13 Are you planning to keep your top-of-stack in a register? 17:45:19 That's usually a win. 17:45:39 IP PSP RSP TOS are in registers 17:45:41 There are some papers out there where people have studied keeping zero, one, two, etc. stack elements in registers. 17:46:02 One almost always is good - more than one usually doesn't help much at all, and can hurt. Depends on the CPU. 17:46:16 hold i'll post the code 17:46:59 http://termbin.com/l8dj 17:47:07 Keeping more than one in registers can pay off if you also have a smart compiler that can "dynamically reassign" which register has what. 17:47:30 http://termbin.com/lqzu 17:47:40 That can let you eliminate stack diddling. But you then have to have "versions" of primitives to handle any of the different assignments - the compiler will choose which one to use at any given time. 17:47:49 Quite a bit of bookkeeping, but it does buy some performance. 17:47:54 Costs some space. 17:49:27 I've always thought at that point you'd just invoke an assembler. 17:49:44 If you really need that last little ooch of performance. 17:50:04 KipIngram: what OS are you running? 17:50:12 MacOS. 17:50:24 ah 17:50:33 The C Forth that I have mostly working I've also run on a 32-bit Linux box. 17:50:39 And now the 64-bit Mac. 17:50:58 I'd tried to keep it cell-size independent, but I'd missed a couple of places, and man THAT was some hairy debugging. 17:51:02 i'm on an i386 linux for my dektop, and ive got amd64 NetBSD on the laptop, i was going to port what i've written so far to amd64 17:51:03 Those were hard to chase down. 17:51:29 KipIngram: i don't know the low level details of macos (on amd64?) 17:51:37 Port early and check often, because if you let a couple of word size gotchas lie fallow in there for a long time finding them can be a nightmare. 17:51:50 ah okay! 17:51:51 This box has an Intel processor. 17:52:28 is you check the top of http://termbin.com/l8dj i wrote some comments about the implementation 17:52:31 *if 17:58:19 I like the idea of two local variables kept in registers. 17:58:37 a nd b 17:58:40 *and 17:58:44 *a and b 18:01:12 --- nick: WilhelmV1nWeiner -> WilhelmVonWeiner 18:01:42 --- nick: WilhelmVonWeiner -> Guest61072 18:01:49 --- join: TCZ (~Johnny@ip-91.189.219.200.skyware.pl) joined #forth 18:07:28 --- quit: Guest61072 (Quit: leaving) 18:07:43 --- join: WilhelmV1nWeiner (dch@ny1.hashbang.sh) joined #forth 18:07:59 --- quit: WilhelmV1nWeiner (Client Quit) 18:08:44 i'm going for a walk... bbl 18:09:25 --- join: WilhelmV1nWeiner (dch@ny1.hashbang.sh) joined #forth 18:10:16 For some reason Freenode won't give me my nick what the hell 18:11:28 --- nick: WilhelmV1nWeiner -> WilhelmVonWeiner 18:17:09 --- quit: TCZ (Quit: Leaving) 18:24:05 --- join: TCZ (~Johnny@ip-91.189.219.200.skyware.pl) joined #forth 18:44:17 --- quit: TCZ (Quit: Leaving) 19:04:23 So I see further problems with this ColorForth fast compile stuff. Maybe CM dropped some features, but it seems hard to make this work with multiple vocabularies. 19:04:35 Let's say I'm about to load a block of source that contains symbol ALPHA. 19:04:44 ALPHA could be defined in several different vocabularies. 19:05:19 At edit time, I don't know which of those will be first found in the search context at compile time, so I can't put a token to any specific one of them in the source. 19:05:28 Did he drop vocabularies in ColorForth? 19:05:53 It looks to me right now like the whole scheme only works well if each symbol has one unique definition point in the source body. 19:06:43 I could certainly see that he might have decided vocabularies weren't needed for chip design, and that he was more interested in instant compile. 19:07:06 But vocabularies will be very useful in the sort of situations I envision using this for. 19:08:28 If that's the case, it would have been useful if Fox had mentioned that in his write ups. 19:08:42 But I have the sense that those guys never mention anything negative or compromising. 19:08:54 About their chosen design path, I mean. 19:09:08 Plenty of negative/compromising commentary on design paths they DIDN'T choose. :-) 19:14:42 KipIngram: I'm not very familiar with ColorForth's dictionary format except that it's some kind of huffman-token threading, but have you considered using BIND instead of vocabularies? https://hub.darcs.net/pointfree/forth-bind 19:20:11 Reading... 19:20:22 And no - I haven't - never heard of it before now. 19:23:52 Hmmm. Well, that's going to take more than a quick perusal, but it looks like it's moving the binding decision from compile time to run time? 19:24:11 Or is it better to say that it *runs something* at compile time to establish the context, rather than having it dependent on source structure? 19:24:44 I guess that second thing I said isn't really crisp enough - we already do that when we store something in CONTEXT. 19:25:31 Does it push CONTEXT down into individual word bodies? 19:30:21 KipIngram: More reddit threads: https://old.reddit.com/r/Forth/comments/695oik/advances_in_forth_language_design/ https://old.reddit.com/r/Forth/comments/5aas7t/i_have_udlyunds_bind_word_implemented_in_a_number/ 19:31:06 KipIngram: With BIND you store one word's scope into another to get its scoping. In my examples for various forths I just fetched the >body pointer of a word and stored it into another to get that word's dictionary scope. afaik, dlyund is compiling a new word when he does that (to preserve the hyperstatic scoping). 19:32:34 *fetch one word's scope and store it to another word's scope. 19:50:57 --- quit: tadni_ (Remote host closed the connection) 19:57:06 --- quit: pierpa (Quit: Page closed) 20:19:52 --- quit: sigjuice_ (Quit: ZNC - http://znc.in) 20:26:48 --- quit: reepca (Ping timeout: 276 seconds) 20:31:12 --- quit: tadni- (Read error: Connection reset by peer) 20:32:31 --- join: tadni_ (~tadni@71-11-142-172.dhcp.stls.mo.charter.com) joined #forth 20:50:33 --- join: sigjuice (~sigjuice@2604:a880:1:20::83:6001) joined #forth 20:51:23 --- quit: pierpal (Quit: Poof) 20:51:40 --- join: pierpal (~pierpal@host23-9-dynamic.16-87-r.retail.telecomitalia.it) joined #forth 21:00:30 --- quit: tadni_ (Quit: ZNC 1.7.0 - https://znc.in) 21:21:45 --- quit: proteusguy (Remote host closed the connection) 21:23:18 --- join: proteusguy (~proteus-g@cm-134-196-84-8.revip18.asianet.co.th) joined #forth 21:23:18 --- mode: ChanServ set +v proteusguy 22:17:43 --- quit: epony (Read error: Connection reset by peer) 22:22:59 --- join: dys (~dys@tmo-081-9.customers.d1-online.com) joined #forth 22:34:48 --- join: epony (~nym@77-85-143-102.ip.btc-net.bg) joined #forth 22:52:33 --- join: karswell (~user@cust125-dsl91-135-5.idnet.net) joined #forth 23:05:17 --- quit: mnemnion (Remote host closed the connection) 23:06:14 --- join: mnemnion (~mnemnion@2601:643:8102:7c95:81ce:6056:3841:efac) joined #forth 23:19:11 diggity 23:19:30 it is ported to amd64 and tested! 23:59:59 --- log: ended forth/18.06.06