00:00:00 --- log: started forth/05.10.09 00:10:48 --- join: Jim7J1AJH (n=jim@221x115x224x2.ap221.ftth.ucom.ne.jp) joined #forth 01:35:16 ping 01:51:33 --- join: saon (n=saon@c-24-129-89-116.hsd1.fl.comcast.net) joined #forth 03:57:58 Pong. 04:01:18 * virl looked at the .net specification and now he is temporarily blind 04:12:41 it's a complex mess 04:46:17 --- join: tathi (n=josh@pdpc/supporter/bronze/tathi) joined #forth 04:46:47 Don't use it, then. 04:46:49 Hi, tathi. 04:48:09 Hi 06:06:26 --- quit: aum () 06:25:01 --- join: PoppaVic (n=pete@0-1pool74-78.nas24.chicago4.il.us.da.qwest.net) joined #forth 06:25:26 Mornin' 06:26:11 Morning. 06:36:21 --- quit: tathi ("leaving") 07:40:33 --- join: I440r (n=foo@adsl-70-243-97-161.dsl.lgvwtx.swbell.net) joined #forth 08:17:26 Hey all 08:20:35 Quartus, have you used .net? 08:27:17 good morning 08:27:32 morning crc 08:27:33 * crc has eliminated the macro dictionary in retroforth now 08:30:06 oh? why? 08:30:41 It lets me have a cleaner internal design, and also more flexibility in terms of how words are handled 08:30:57 virl, not much. A bit on Pocket PC devices. 08:31:00 hmm, interesting - what is your alternative? 08:31:12 crc, I'm glad to hear that. I found it kind of confusing. What's your new approach? 08:31:18 I added a field to the dictionary that points to a handler function for a given class of words 08:31:26 ahhhhhh 08:31:32 interesting. 08:31:52 crc -- that sounds complex also. How many classes of words do you anticipate? I've found that normal, immediate, and inline are sufficient. 08:32:08 I have three currently, plus an optional inline class 08:32:08 sort of a 'does>' lower than usual. I like it. 08:32:09 hmm.. reminds me on DNS with it's super gens which moves on the DNS string. 08:32:12 forth (normal words) 08:32:21 macro (only called at compile time) 08:32:31 self (always called, assumed to be state-smart) 08:32:40 you call the func at both times? 08:32:46 with self, yes 08:33:15 Ah. I blend macro and self. 08:33:17 no, I mean: you call upon the vector to check if it should run? Or add more flag-bits? 08:33:46 Quartus, how is it? for me it looks like a mess. 08:33:49 when the interpreter finds a word, it calls the handler specified in the dictionary entry, passing the xt on the stack 08:33:55 .net? Yes, it's a mess. 08:34:30 cool.. I've been toying similar ideas 08:35:02 By keeping it under four classes, I can use two flag bits in the length byte -- a minor savings, admittely, but important (especially historically) on the Palm. 08:35:07 --- join: tathi (n=josh@pdpc/supporter/bronze/tathi) joined #forth 08:35:13 Well, four-or-under. 08:35:16 good point 08:37:35 In fact with a 5-bit word length, you've got 3 spare bits. I use the third to denote words like R> that have no interpretation semantics, to defend against user error. 08:39:55 There's a camp, typified in my mind by Anton Ertl, who hate STATE-smart words, I think because they make it hard to competely map out the data flow of an algorithm automatically, for optimization purposes. In practice they present no worries, though, and they don't keep me up at night. :) 08:40:46 :) 08:42:57 One user wrote me upset that I hadn't flagged R@ to protect it from use at the console -- but although I can't think of any use for it at the console, it's not dangerous, so I don't see why it needs to be protected. 08:43:07 --- quit: _saon ("Lost terminal") 08:50:43 crc, under what circumstances would you create a macro word, as opposed to an immediate or inline one? 08:51:14 things like conditionals or loops, which only get run at compile time 08:51:39 inline only works for definitions that don't involve calls to other words currently 08:52:07 crc -- ah. Well, a conditional or loop word wouldn't be inlined in Quartus Forth -- it'd be immediate. Why not simply do that? 08:52:36 I don't want to have to wrap it with additional code to avoid it being run in the interpreter 08:52:59 You could add a bit that prevents that. 08:53:37 I achieve inlining via code-copying -- I'm guessing rf doesn't generate position-independent code right now? 08:53:42 nope 08:53:49 all calls are relative 08:54:22 That makes it tougher. 08:54:22 a more complex inline class could adjust the values without too much hassle though 08:54:40 One benefit of PIC is easier turnkeying. 08:56:23 And simpler inlining, obviously. 08:56:41 Quartus: so when you say PIC, you actually mean you're using absolute addresses for calls? 08:57:06 tathi, no. PIC means any given subroutine can be relocated without affecting it. The calls are relative to a base address. 08:57:50 oh, ok. 08:57:56 So, well, "sort of", I guess. Semi-absolute. :) 08:59:33 The only complexity in the Quartus Forth inliner is the part that reverses tail-call elimination. 09:00:45 PIC is "position independent code" - relocatable 09:01:05 how do you code that though...? I thought 68K only had PC-relative branches? 09:01:18 No, calls can be relative to any address pointer. 09:03:00 Oh, so they can. Very nice. 09:03:20 btw, got yer email tathi - thanks! 09:26:07 crc, the other thing Quartus Forth keeps track of is the size of each definition. Very handy for inlining, and for turnkeying. 09:29:53 I'm still debating whether or not to do that 09:32:40 which "that"? 09:33:08 keeping track of the size of a definition 09:33:19 the pcode? 09:33:43 the asm? 09:34:06 the compiled assembly code 09:34:13 Ohh.. yer thinking about extraction to a new file/object 09:35:13 It's amazing the things might be suitable for heads 09:36:26 crc, I tried alteratives -- sentinels, watching for RTS -- both had troubles. 09:37:46 does your turnkey discard unused definitions? 09:38:11 I would think it should 09:38:31 crc, yes, and headers. 09:38:36 ok 09:38:40 mine doesn't yet 09:39:06 Recursively extracts all relevant code, leaves everything else behind. 09:40:18 cool 09:40:44 I should download a copy of Quartus Forth sometime 09:46:36 brb 09:46:38 --- quit: PoppaVic ("Pulls the pin...") 09:47:34 --- join: OrngeTide (i=orange@rm-f.net) joined #forth 09:47:58 crc, please do. 09:48:18 --- join: PoppaVic (n=pete@0-1pool67-151.nas22.chicago4.il.us.da.qwest.net) joined #forth 09:51:24 ok, I'll install it once I find the right USB cable again... 09:54:44 There's always IR. :) 09:55:07 And of course the emulator. 09:56:32 I have a Tungsten E, I'll use the device ;) 09:57:50 Why would anyone name a miniature computer "tungsten"? I get two mental pictures: that of something very heavy, and that of a primitive light bulb. 09:59:37 Who knows? They named the OS "Garnet" and "Cobalt", which makes just as much sense. 10:00:25 installing Quartus Forth... 10:03:39 Using the web-based installer? 10:04:05 no, I downloaded the executable one and ran that 10:04:11 Fair enough. 10:04:48 There's a manual step wherein you need to import the library memos. 10:08:07 ok, importing now 10:09:01 Then you're set up. If you also import the sample app, you can do 'include duco' from the console, and then 'go' and it'll run. 10:09:36 Quartus RsrcEdit is bundled in there too, you'll want to install that. 10:10:31 ok 10:10:40 * crc goes afk, lunch time 10:34:47 --- join: snoopy_17 (i=snoopy_1@84.58.172.57) joined #forth 10:35:21 --- quit: Snoopy42 (Nick collision from services.) 10:35:24 --- nick: snoopy_17 -> snoopy42 10:35:59 back 10:36:06 Hi. 10:47:25 hmm.. I think I need chow and a nap: I'm seeing a pattern that would trim about 30 opcodes. 11:01:58 --- quit: PoppaVic ("Pulls the pin...") 11:13:01 As he slowly re-invents assembler opcodes. 11:13:45 * Robert pokes clog. 11:13:57 ? 11:15:09 Why the poke, Robert? 11:15:53 Oh, just wanted to point out the public logs of the channel. 11:16:05 * virl looked at glypher and hopes that rabbitwhite does a good documentation for it. 11:16:14 rabbitwhite? 11:16:31 * Robert just played Surrealistic Pillow earlier today. 11:18:07 * virl now understands it why rabbitwhite took for it's glypher under construction webpage the rabbit out of alice. 11:20:13 Robert, I fail to see why there's reason for concern. PoppaVic does seem to be slowly re-inventing the CPU. 11:20:32 True. 11:20:55 * Robert likes reinventing things himself though, it can be fun and educational. 11:24:30 Perhaps, though I question the value of simply deciding everything that came before is wrong without actually investigating the rationales behind it. Doing that means you've got a long road ahead to reach the same point. It is of tremendous value to know the reasons for past failure and successes both, to avoid repeating history needlessly. 11:28:52 "Those who ignore history", etc. 11:30:09 Yes... 11:31:35 ok, those who ignore history, ehm in which context now? I can't follow. 11:32:10 In any context. 11:38:54 ok, ehm, what happened in history so that you could say Pop ignores it, reinventing the wheel hundreds of times? 12:06:13 --- join: thinfu (i=thin@bespin.org) joined #forth 12:06:13 --- mode: ChanServ set +o thinfu 12:06:15 --- part: thinfu left #forth 14:26:36 --- join: TheBlueWizard (i=TheBlueW@ts001d0562.wdc-dc.xod.concentric.net) joined #forth 14:29:50 Hi, Wizard. 14:30:33 hiya Robert 14:36:05 anything new? 14:36:52 Hmm.... 14:37:19 I think not. :) 14:37:47 heh...kinda sad, methinks 14:38:01 Not really. 14:38:12 no? why is that? 14:38:13 I've been looking some at Smalltalk. 14:39:21 ah...it's a nice and interesting language 14:41:40 one language which is more sensfully than other OOP languages. 14:44:32 I've been thinking a bit how to make sensible optimisations without losing the power of fully dynamic typing. 14:44:41 well, (classic) Smalltalk has its limitations...so is true of many other languages. Still, nice...it lets me think in terms of (almost organic) actions between objects rather than procedural "orders" to objects some OOP languages are designed 14:46:55 and it's probably not such a mess like .net 14:47:23 or Java 14:47:50 Smalltalk is typeless, which proves beneficial in many cases 14:48:31 But on the other hand, calculating 1+1 in the most general way is very time-consuming. 14:48:43 So I was trying to thing of good optimisation schemes. 14:49:39 there are Smalltalk systems that do various optimizations...but it is a rather nontrivial problem :) 14:53:33 Wasn't thinking about excellent performance, just something more acceptable than interpreting a "+" message and passing "1" objects around. 14:53:40 heh, that's a big problem. 14:54:34 problem is that it has to recognizes which type it is before it can do something with it. 14:54:53 I was thinking about compiling several versions of the method. 14:55:11 One using general message passing, and one for each data type that's know to be used with it. 14:55:52 --- quit: Raystm2 (Read error: 104 (Connection reset by peer)) 14:56:05 I prefer the way of setting a type and then doing some operation. 14:56:43 What do you mean? Introducing static typing? 14:58:00 --- join: Raystm2 (n=Raystm2@adsl-69-149-55-17.dsl.rcsntx.swbell.net) joined #forth 14:58:01 eh? I meant generally not smalltalk specific. 14:59:07 I don't really understand what you meant, still. 15:00:20 ok, I meant that I prefer to set a type of an operation before the operation. 15:03:42 Ah, as I thought. 15:05:00 forth is good because it works after that principle... 15:07:21 RPN is cool :) 15:08:02 for me RPN is much more logically than PN 15:14:18 yeah...PN basically requires you to "plan ahead"...ugh 15:15:49 PN, being..? 15:20:01 Polist Notation 15:20:07 Polish* 15:20:20 I don't know how the non-reversed version looks like. 15:22:26 easy...think Lisp...example: (add 3 4) 15:22:33 Ah. 15:23:26 * virl thinks that is ugly 15:24:17 it can be elegant...or ugly...depending on point of view 15:24:54 I like it in general. 15:25:08 But for some sorts of expressions infix of rpn is better. 15:25:26 rpn feels more natural for inputing mathematical expressions. 16:03:13 bye all 16:04:18 --- part: TheBlueWizard left #forth 17:02:35 --- quit: virl (Remote closed the connection) 17:16:39 --- join: YoyoFreeBSD_ (n=yoyofree@219.144.190.126) joined #forth 17:38:26 --- quit: tathi ("leaving") 17:51:21 hey all 17:51:56 Hi again, Quartus. 17:54:38 --- quit: I440r (Read error: 104 (Connection reset by peer)) 17:55:10 --- join: I440r (n=foo@adsl-70-243-97-161.dsl.lgvwtx.swbell.net) joined #forth 17:59:32 Hi again, Robert. 18:02:38 * Robert will go to bed soon. 18:30:27 --- join: sproingie (i=foobar@64-121-2-59.c3-0.sfrn-ubr8.sfrn.ca.cable.rcn.com) joined #forth 18:34:17 --- quit: YoyoFreeBSD_ (Read error: 110 (Connection timed out)) 18:36:37 hi sproingie 18:55:09 --- quit: sproingie ("using sirc version 2.211+KSIRC/1.3.12") 19:39:30 --- join: Downix (n=nate@6532222hfc209.tampabay.res.rr.com) joined #forth 19:42:38 you know it stinks when you can't recall your password 19:43:18 True. 19:43:37 I'm trying to im kc5tja to ask which channel he's on 19:45:11 Downix the kc5tja unit is reachable in #c4th-ot, the off-off topic channel for forth and fringe. 19:48:38 that works 19:48:41 thank you 20:27:01 --- quit: Downix (Read error: 104 (Connection reset by peer)) 22:21:18 yah. i got a cz52 today 22:21:26 * OrngeTide dances 23:20:34 * Robert yawns. What's a cz52? 23:59:59 --- log: ended forth/05.10.09