00:00:00 --- log: started forth/10.04.05 00:06:10 --- quit: |dinya_| (Ping timeout: 264 seconds) 00:07:48 --- join: ygrek (debian-tor@gateway/tor-sasl/ygrek) joined #forth 00:52:04 --- quit: proteusguy (Ping timeout: 252 seconds) 01:00:25 --- join: proteusguy (~proteusgu@zeppelin.proteus-tech.com) joined #forth 01:24:10 --- quit: proteusguy (Ping timeout: 264 seconds) 01:37:07 --- join: proteusguy (~proteusgu@zeppelin.proteus-tech.com) joined #forth 02:12:09 --- quit: ASau` (Remote host closed the connection) 02:26:01 --- join: ahelon (~ahelon@unaffiliated/ahelon) joined #forth 02:26:31 --- join: ASau` (~user@77.246.230.118) joined #forth 03:19:25 --- quit: proteusguy (Ping timeout: 240 seconds) 03:32:03 --- join: proteusguy (~proteusgu@zeppelin.proteus-tech.com) joined #forth 04:39:32 --- quit: proteusguy (Ping timeout: 246 seconds) 04:46:30 --- nick: KipIngram-zzz -> KipIngram 04:51:37 --- join: proteusguy (~proteusgu@zeppelin.proteus-tech.com) joined #forth 05:50:07 --- join: Guthur (~Michael@host217-42-130-127.range217-42.btcentralplus.com) joined #forth 05:51:05 --- quit: proteusguy (Ping timeout: 240 seconds) 05:58:58 --- quit: Deformative (Ping timeout: 265 seconds) 06:04:03 --- join: proteusguy (~proteusgu@zeppelin.proteus-tech.com) joined #forth 06:10:58 --- quit: mathrick (Read error: Connection reset by peer) 06:11:05 --- join: _mathrick (~mathrick@users177.kollegienet.dk) joined #forth 06:12:18 --- nick: _mathrick -> mathrick 06:43:31 --- quit: proteusguy (Ping timeout: 252 seconds) 06:57:03 --- join: proteusguy (~proteusgu@zeppelin.proteus-tech.com) joined #forth 07:21:50 --- quit: proteusguy (Ping timeout: 260 seconds) 07:34:49 --- join: proteusguy (~proteusgu@zeppelin.proteus-tech.com) joined #forth 07:48:22 --- join: Deformative (~joe@bursley-185022.reshall.umich.edu) joined #forth 07:57:57 --- quit: ASau` (Quit: off) 08:21:37 --- quit: proteusguy (Ping timeout: 248 seconds) 10:26:46 --- join: foucist (~foucist@ps14150.dreamhost.com) joined #forth 10:26:46 --- mode: ChanServ set +o foucist 10:27:13 howdy doody folks 10:44:07 Hi. 10:51:30 Also, for those who have been following, my forth is almost done! I have input/output done, and all that is left really is NUMBER, ., FIND, and :. 10:51:34 Everything else is DONE. :D 10:52:34 Deformative: what are you coding it in? 10:53:05 foucist: e100 (my professor's custom educational instruction set) assembly. 10:53:11 neat 10:53:15 ^^ 10:53:16 congrats :) 10:53:21 Thanks. 10:53:40 It really hit how much progress as been made when we got proggy fonts rendering to the vga. 11:01:14 --- part: foucist left #forth 11:06:07 KipIngram: How is your cpu going? 11:11:46 --- join: alex4nder (~alexander@173-129-253-159.pools.spcsdns.net) joined #forth 11:12:01 hey 11:17:06 Hey! 11:19:17 Brb 11:19:40 --- quit: ygrek (Ping timeout: 245 seconds) 11:23:18 --- join: ygrek (debian-tor@gateway/tor-sasl/ygrek) joined #forth 11:23:49 --- quit: Deformative (Ping timeout: 264 seconds) 11:28:58 --- quit: alex4nder (Ping timeout: 252 seconds) 12:04:01 --- join: alex4nder (~alexander@173-129-253-159.pools.spcsdns.net) joined #forth 12:33:19 --- quit: alex4nder (Ping timeout: 252 seconds) 12:42:03 --- join: forther (~cf2f2264@gateway/web/freenode/x-eceljpwpbwcnkbrh) joined #forth 12:42:14 hi 13:00:15 --- quit: forther (Quit: Page closed) 13:15:33 --- join: Deformative (~joe@bursley-185022.reshall.umich.edu) joined #forth 13:21:12 --- quit: gnomon (Ping timeout: 265 seconds) 13:21:31 --- join: gnomon (~gnomon@CPE0022158a8221-CM000f9f776f96.cpe.net.cable.rogers.com) joined #forth 13:35:34 --- join: alex4nder (~alexander@68-29-44-205.pools.spcsdns.net) joined #forth 13:56:49 --- quit: alex4nder (Ping timeout: 264 seconds) 13:57:01 --- quit: schmx (Read error: Connection reset by peer) 14:02:00 --- join: schmx (~marcus@sxemacs/devel/schme) joined #forth 14:08:54 --- join: alex4nder (~alexander@68-29-44-205.pools.spcsdns.net) joined #forth 14:09:56 --- quit: qFox (Quit: Time for cookies!) 14:18:25 --- quit: alex4nder (Ping timeout: 264 seconds) 14:21:31 --- quit: schmx (Read error: Operation timed out) 14:22:51 --- join: schmx (~marcus@c83-254-196-101.bredband.comhem.se) joined #forth 14:22:51 --- quit: schmx (Changing host) 14:22:51 --- join: schmx (~marcus@sxemacs/devel/schme) joined #forth 14:37:38 Hooray! I just finished FIND. 14:37:49 That just leaves NUMBER, DOT, and COLON 14:44:40 --- quit: ygrek (Ping timeout: 245 seconds) 14:45:44 --- quit: gnomon (Ping timeout: 246 seconds) 14:46:04 --- join: gnomon (~gnomon@CPE0022158a8221-CM000f9f776f96.cpe.net.cable.rogers.com) joined #forth 15:17:15 --- join: crc_ (~charlesch@71.23.210.149) joined #forth 15:17:31 --- quit: crc (Disconnected by services) 15:17:38 --- nick: crc_ -> crc 15:17:48 --- mode: ChanServ set +o crc 15:46:04 --- join: skas (~skas@eth488.act.adsl.internode.on.net) joined #forth 15:51:06 --- quit: segher (Quit: This computer has gone to sleep) 16:42:36 --- join: ahelon_ (~ahelon@194.219.233.77.dsl.dyn.forthnet.gr) joined #forth 16:43:38 --- quit: ahelon (Ping timeout: 240 seconds) 17:00:29 "Done." Ha! 17:04:13 Number is done, but it revieled an error in my EXECUTE, DOCOL, and NEXT, so I am hacking around to make that work properly. 17:59:45 Deformative: It's done, at least in emulation. I've now installed some open source VHDL source to my netbook - I decided I wanted to write it myself. So I'm brushing up my VHDL skills (weak - I'm primarily a schematic guy) and will soon be rebuilding it in VHDL. 18:00:37 But it does everything I want it to do. The only thing I might possibly do is add an opcode to speed up calls that involve bank switching. I have a method that works now, though, so we will see. 18:00:55 I probably ought to wait until I've profiled some code to see if I really need to do that. 18:06:43 Does EXECUTE work properly on both colon defined words and bootstraps? 18:07:00 I just had to overcome a little bug with mine, 18:14:02 Also, I want to thank you for all the help at the beginning and for the book recommendation, it would have been much more difficult without you. 18:16:36 Oh, my pleasure. Yes, EXECUTE should work on anything, I believe. 18:18:14 --- part: skas left #forth 18:19:20 I had trouble with the bootstrap words since NEXT will just increment v_pc and call, so I just have a temporay definition of TMPWORD, EXIT and so there is an extra layer on call stack, but no big deal. 18:20:28 s/temporay/temporary 18:20:50 And I can constantly replace TMPWORD and it's no big deal because EXIT is constant. 18:22:22 Don't hack around to make that work properly. Face your problem :) 18:22:39 WORKSFORME. 18:22:40 :P 18:22:57 ... 18:23:02 Also, I couldn't decide on a clean solution. 18:23:06 This was the cleanest I had. 18:24:07 All our problems are because of such programmers like Deformative and foxes. 18:24:22 It's been a long time since I've delved into that area. "WORKSFORME" is a great solution, in my opinion. 18:24:32 "Worksforthem" and thus they don't care. 18:24:41 Ugh. Paying bills. :-( 18:24:44 ASau, :) 18:24:57 it's always better to fix the root problem than to hack around it 18:25:13 By all means, please suggest a better solution. 18:25:47 Implement it properly. 18:25:57 This takes care of the root as far as I am concerned. 18:26:10 Deformative, The key is often hiding in our questions . 18:27:07 Not seein it. 18:27:12 What threading model did you use, Deformative? 18:27:20 Indirect. 18:27:29 How is EXECUTE done in FF v2? 18:27:50 I don't own v2. 18:28:27 Ah. EXECUTE expects a CFA on the stack? 18:28:31 You can look into FIG Forth sources if you're so fond of FIG Forth. 18:28:45 EXECUTE expects _XT_ on the stack. 18:28:59 Is that what I would call the CFA? 18:29:00 There're no "CFA" for 20 years. 18:29:14 Yeah, well I'm 47 and learned Forth when I was 19, so... 18:29:44 That's not an excuse to live as if it is 1980. 18:29:48 Deformative, hold on one sec while I fetch my book. 18:30:30 http://paste.dprogramming.com/dpbj395u 18:30:54 My forth is fig-ish. 18:32:16 I have CFA 18:32:19 :P 18:32:41 Then it should pop address from the stack and go straight into inner interpreter. 18:32:46 Ok, EXECUITE is a primitive in FIG. It does expect a CFA. Now, the CFA always points to code. So, if the word you're trying to EXECUIE is a primitive, then merely jumping through the CFA should get the job done, right? Whatever word ran just before EXECUTE "NEXT-ed" into EXECUITE. So the word EXECUTE jumps to will NEXT to whatever word EXECUITE would have NEXT-ed to if it hadn't jumped. 18:33:28 Now, if it's a colan definition, then the CFA points to DOCOL. 18:33:59 DOCOL will push the return point (which should be pointing to whatever cell follows the call to EXECUITE). 18:34:17 IOW, you didn't implement FIG model. 18:34:42 My DOCOL is PUSH_PAR(v_pc) v_pc = *v_pc; NEXT 18:36:08 So it won 18:36:10 t work. 18:36:11 ^^ 18:36:16 Without my hack. 18:37:12 I'm not sure I see why yet. So far to me it looks like popping the stack and doing an indirect jump through the popped value would always work. 18:37:27 But I just started thinking about this five minutes ago, so I could be missing something... 18:37:57 KipIngram: If you do an indirect jump to the popped value, DOCOL doesn't know what it's contents are. 18:38:07 Oh, I see. 18:38:09 Right. 18:38:20 My hack gives it the contents. 18:38:21 Deformative: look at FIG Forth source. 18:38:30 ASau: nou 18:38:34 Deformative: your DOCOL isn't FIG's. 18:39:03 ASau: I really don't care, I am not aiming to comply to any standard. 18:39:06 I have it at me right now, and it isn't "just fetch and jump." 18:39:18 And this is your problem. 18:39:39 My hack works. 18:39:42 I am happy with it. 18:39:52 It doesn't work as you can easily see above. 18:39:57 If you'd follow even that archaic way, you wouldn't have your problem with hacks around hacks. 18:40:12 Mine does work. 18:40:23 http://paste.dprogramming.com/dpbj395u 18:40:27 Number is done, but it revieled an error in my EXECUTE, DOCOL, 18:40:27 and NEXT, so I am hacking around to make that work 18:40:27 properly. [04:03] 18:40:30 That fixed everything for me. 18:40:32 It's not hard to test it and see if it works. If he says it works I believe him. 18:40:34 That's your words. 18:42:22 Yeah, then later I said: [21:18] I had trouble with the bootstrap words since NEXT will just increment v_pc and call, so I just have a temporay definition of TMPWORD, EXIT and so there is an extra layer on call stack, but no big deal. 18:42:32 I should have made it more clear when I fixed my problem. 18:43:42 Deformative: Does your DOCOL push the IP to the return stack then thread through IP? 18:44:19 KipIngram: Yes.\ 18:45:13 I could have solved it by having two registers track the IP the way Jonesforth does, but I choose to use only one register. 18:45:31 So I needed to hack EXECUTE a little bit. 18:45:34 Not a huge deal. 18:46:12 Just adds one extra layer on the return stack. 18:46:54 Right. One second, though, I'm trying to get something clear in my head. What if you have EXECUTE push the return address, then pop the CFA from the data stack into IP, then jump to an entry point in DOCOL just after the place where it pushes the return address? 18:47:17 That's off by a level of indirection, isn't it? 18:48:17 * Deformative ponders. 18:48:24 That sounds liek ti would work. 18:48:33 So what if EXECUITE 1) pushes IP to the return stack, 2) transfers the data stack pointer into IP, 3) pops the data stack, and 4) jumps to the aforementioned second entry point in DOCOL? 18:48:47 I think one or the other of those two things would work. 18:49:08 I think the second one, because it has IP pointing to a memory cell that contains a CFA pointer, which is what DOCOL expects. 18:50:04 Yeah, I think it works. 18:50:09 Too bad I didn't think of it before. 18:50:10 D: 18:50:30 Next time. :-) 18:50:54 In the meantime, bask in your success. 18:52:35 Heh. 18:52:46 I will probably change my code to match your suggestion. 18:52:52 No wait. 18:52:58 Your suggestion would not work. 18:53:04 Your suggestion only works on DOCOL words. 18:53:09 Not bootstrap words. 18:53:19 Mine is still my best option. 18:54:42 One part of you problem is that you seem haven't read even Forth books. 18:54:56 It is quite hard to understand you. 18:55:06 Oh, you're right. EXECUTE can only push the return stack when it's supposed to. 18:55:08 You call primitive words "bootstrap". 18:55:10 ASau, you're not helping, dude. 18:55:32 KipIngram: you're not helping either. 18:56:42 Oh right, primative sorry. I am used to calling them bootstrap when I talk to my team. To them, they are the same thing, introducing too much vocabulary wasn't worth it. 18:56:56 KipIngram: it isn't hard to ask to show code for NEXT, DOCOL, DOCON and sample colon-defined word. 18:57:21 I am just about ready to /ignore Asau. 18:57:27 I just did. 18:57:39 Deformative: they have quite different connotations and 18:57:39 thus it isn't helping in communication. 18:58:05 His ratio of helpfulness/annoyance is far too low. 18:59:07 It's you who have problems. 18:59:19 Like I said above, show code for NEXT, DOCOL, DOCON and sample colon-defined word. 18:59:19 I'm liking your hack more and more at the moment. I may actually do what he suggested and go review the FIG source, but I want to think about it some more first, just as an exercise. 18:59:21 Ok, ignored now. 18:59:26 if you want to get help. 18:59:41 I'm going to finish writing my bills and let this cook for a little while - will you be on later tonight (the next 2-3 hours)? 19:00:26 Most likely. 19:00:34 If not, there is always another day. ^^ 19:00:42 I should be getting to my differential equations soon anyway. 19:01:31 Ok, I will look for you in a bit. 19:01:49 What's up in diffeq? 19:02:14 I have a lab due tomorrow. 19:02:39 Matlab shenanigans 19:05:22 Well, I am going to head down to the CSE building and work on that now. 19:05:24 Talk to you later. o/ 19:58:43 --- join: cataska (~cataska@210.64.6.233) joined #forth 21:28:34 --- join: forther (~62d2faca@gateway/web/freenode/x-jaynpivxretbhnmw) joined #forth 21:29:17 hi 21:29:43 Morning. 21:33:15 forther: do you have any experience with H.323? 21:36:12 no 21:36:18 Hi. 21:36:50 Deformative: It really seems much simpler with two registers. Tell me again how you did it with one? How did you define NEXT? 21:39:53 looks like it's not just a codec, but whole stack 21:39:58 I was talking about h.323 21:40:29 Yes, it is. 21:43:03 Peter Sovietov just published the article about multicore programming on his site. best seaforth related article so far, but in russian. 21:43:20 URL? 21:44:03 http://sovietov.com/txt/seaforth/seaforth.html 21:44:16 Thanks. 21:48:24 --- quit: Deformative (Ping timeout: 276 seconds) 22:02:29 --- join: Deformative (~joe@2002:43c2:b722:4:224:8cff:fe67:e2dd) joined #forth 22:02:47 --- quit: Guthur (Quit: Computer says no) 22:04:05 KipIngram: NEXT just increments my IP, dereferences twice, and returns to that. 22:04:10 http://paste.dprogramming.com/dptbp8wh 22:05:23 That paste has NEXT, DOCOL, and EXECUTE 22:06:48 KipIngram: This is a list of opcalls in case they are confusing: http://www.eecs.umich.edu/~pmchen/engr100/lab5/ 22:07:21 "returns"? You use subroutine calls? 22:07:29 At the native level? 22:07:34 Or jumps? 22:07:50 The ret opcall is PC = memory[addr0] 22:08:05 So it jumps to the value at it's argument. 22:08:27 There are no subroutine calls. 22:08:34 It is just a jump to a non-constant. 22:08:43 It needs to be retrieved from memory. 22:09:33 Ok. Reading it now. 22:10:12 Also, EXIT is extremely simple 22:10:14 EXIT .data EXIT_D 22:10:15 EXIT_D POP_RET(v_pc) 22:10:17 NEXT 22:10:44 In your definition of NEXT I see "reg0" and "reg1". Are those physical registers that persist once they're loaded? 22:10:51 So exit just pops from return stack into the virtual program counter, (IP) and does a NEXT 22:11:09 Yes, that's the traditional defintion of EXIT. 22:11:12 KipIngram: reg0 and reg1 are general registers used everywhere. 22:11:25 I use reg0 and reg1 in addition for example. 22:11:45 POP_PAR(reg0) POP_PAR(reg1) add reg0 reg0 reg1 PUSH_PAR(reg0) is how I define + 22:12:18 They are not really registers, just a few words of memory that I treat like registers since this processor doesn't have any true general registers. 22:12:54 Ok. So when you have the CFA you're wanting to EXECUTE on the dstack, and you eventually get around to "executing EXECUTE", the NEXT portion of the word just prior to EXECUITE has loaded reg0 and reg1 with values that have to do with the code for EXECUITE, correct? 22:13:16 And it's the ret reg1 that literally transfers control to the code for EXECUITE. 22:14:16 What does "cpfa" do? 22:14:36 The only place reg0 and reg1 are used in EXECUTE are for NEXT and NEXT sets them. 22:14:45 Just one dereference I suppose. 22:15:13 So you load reg0 with the contents addressed by v_pc, and load reg1 with the contents addressed by reg0. 22:15:34 Reverse. 22:15:38 Wait. 22:15:41 You have it correct. 22:15:45 Yes, that is exactly what I do. 22:16:13 But the values of reg0 and reg1 are useless after the ret is complete, so they are free to be overwritten. 22:16:13 So when you're executing along and come to EXECUTE, v_pc is pointing to the cell just past the EXECUITE cell, reg0 is pointing to the cfa of EXECUITE, and reg1 is pointing to the code associated with EXECUITE. 22:16:51 And the value on the stack points to the CFA of the word you want to EXECUTE. 22:17:14 v_pc points to the cell containing EXECUTE 22:17:22 Other than that, everything you said was correct. 22:17:35 Oh, you're pre-incrementing. Right. 22:17:39 Correct. 22:17:40 That's non-standard. 22:17:52 But I don't know yet if that's relevant. 22:18:12 I think the crux of your need to hack has to do with your definition of DOCOL. 22:18:25 Somehow you should be using reg0 and reg1. 22:18:49 See, DOCOL, is dereferencing v_pc, but you've already done that in the NEXT that executed just prior. 22:19:04 That is a good point. 22:19:12 reg0 has that value, right? 22:19:55 Correct. 22:20:04 But using reg0 only saves me a single dereference. 22:20:04 So I think you need to just push v_pc and then transfer reg0 into v_pc. 22:20:13 I would still need to copy reg0 into v_pc 22:20:31 But if you do that I think EXECUTE becomes easy. 22:20:40 Correct, I could replace the line that says cpfa v_pc 0 v_pc with cp v_pc reg0 22:20:47 I think it's just dpop(reg0). 22:20:52 followed by NEXT. 22:21:31 I'm waving my hands a little bit here and not thinking it through rigorously so I can respond more quickly, but it feels right. What do you think? 22:22:11 I think you can fix this up pretty easily, in a very short amount of time. 22:22:22 You were already really, really close. 22:22:52 --- join: Pusdesris (~joe@bursley-185022.reshall.umich.edu) joined #forth 22:22:55 --- quit: Deformative (Read error: Operation timed out) 22:22:58 [01:20] followed by NEXT. 22:22:59 [01:20] Wait, what? 22:23:01 THat was the last I saw. 22:23:03 --- nick: Pusdesris -> Deformative 22:23:24 Oh, I just commented that I'm only half thinking this all through so I can respond more quickly. 22:23:29 But I think we're onto something here. 22:24:30 See, if DOCOL uses reg0 instead of "re-dereferencing" v_pc, then EXECUTE can simply pop into reg0, which makes things just perfect. 22:24:41 I mean, my hack works fine, it would be better if the extra nest on the return stack wasn't there, but really, EXIT is very cheap. 22:25:12 I don't think your EXIT will change at all. 22:25:37 No, I mean, I have an extra EXIT on my return stack. 22:25:43 And neither will NEXT. 22:25:45 That isn't required. 22:25:55 Only EXECUTE and DOCOL. 22:26:29 ...Oh I think I see what you are suggesting now. 22:26:31 * Deformative ponders. 22:27:37 Very clever.... 22:27:56 Going over it in my head, it seems to work. 22:28:14 It's tradition. FIG called your v_pc "I" and your reg0 "W". This is standard fare, I think. 22:28:50 Ah. 22:29:18 I was quite fond of my hack, but your model is vastly supperior. 22:29:20 It's an invariant thing. Your NEXT results in reg0 pointing to the CFA of the word you're about to execute. The change I've proposed just lets EXECUTE very easily replace its own CFA with the CFA of the word on the data stack. 22:29:44 So the invariant is maintained. 22:30:00 Yes, I understand how it works. 22:30:06 I would have never come up with that on my own. 22:30:15 Neither would I - it's FIG. :-) 22:30:27 I'll go to bed now - have fun. 22:30:50 I see that as much more hackery than my model, the hackery is just strung together so much. 22:31:00 But it really results in more elegance 22:31:01 Heh. 22:31:43 The whole Forth address interpreter is a giant hack. Just an amazingly clever one. 22:31:53 Part of what makes Forth so fun. 22:32:02 Yeah, I don't see how anyone could possibly engineer this. 22:32:13 Just seems like a set of amazing hacks. 22:32:24 I think of it as "crafted." 22:32:29 It's art. 22:32:35 Heh. :D 22:32:45 Ok - night. Talk to you again soon. 22:33:04 Also, I am getting to know the staff here that does research with microprocessor design and such. 22:33:10 I am going to try to get in on that. :) 22:33:14 --- nick: KipIngram -> KipIngram-zzz 22:33:21 Ok, talk to you later. 22:45:50 --- quit: forther (Quit: Page closed) 23:26:42 --- join: ygrek (debian-tor@gateway/tor-sasl/ygrek) joined #forth 23:28:07 --- join: dinya_ (~Denis@188.16.91.221) joined #forth 23:33:22 --- quit: dinya_ (Quit: Smile!.. tommorow will be worse :) (c) Murphy) 23:49:57 --- join: ASau` (~user@77.246.230.191) joined #forth 23:59:59 --- log: ended forth/10.04.05