00:00:00 --- log: started forth/03.12.29 01:39:40 --- join: Serg (~z@212.34.52.140) joined #forth 01:39:58 --- join: schihei (~schihei@p5085D89E.dip.t-dialin.net) joined #forth 01:48:47 --- join: aktnot_ (~ident@233.80-202-65.nextgentel.com) joined #forth 01:58:59 --- quit: aktnot (Read error: 110 (Connection timed out)) 02:18:36 --- join: qFox (C00K13S@cp12172-a.roose1.nb.home.nl) joined #forth 03:31:26 --- join: aktnot (~ident@233.80-202-65.nextgentel.com) joined #forth 03:48:33 --- quit: aktnot_ (Read error: 110 (Connection timed out)) 03:59:33 --- quit: OrngeTide (Remote closed the connection) 04:01:33 * warpzero is back (gone 09:26:06) 04:01:49 --- part: MrReach left #forth 04:07:43 --- quit: aktnot (Read error: 110 (Connection timed out)) 04:07:50 --- join: aktnot (~ident@233.80-202-65.nextgentel.com) joined #forth 04:14:53 --- quit: Serg () 04:21:00 --- join: tathi (~josh@pcp02123722pcs.milfrd01.pa.comcast.net) joined #forth 04:57:29 --- join: crc (~crc@ACAFFECF.ipt.aol.com) joined #forth 05:05:16 --- quit: hovil ("Leaving") 06:09:49 --- join: fridge (~fridge@dsl-203-33-163-107.NSW.netspace.net.au) joined #forth 06:22:41 --- quit: chrisrw (Remote closed the connection) 06:27:51 --- quit: crc ("I was using TinyIRC! Visit http://www.tinyirc.net/ for more information.") 06:34:55 --- join: chrisrw (~chris@wbar8.lax1-4-11-099-104.dsl-verizon.net) joined #forth 06:38:58 --- quit: tathi ("leaving") 06:57:56 how do i test 3 values to be either all equal, or all different, with just the stack and without roll/pick... 06:57:57 :) 07:00:26 i now made variables for them... which makes it quite easy 07:00:27 : match-numbers ( -- flag ) \ see if n1 and n2 and n3 are all equal or all different 07:00:27 num1 @ num2 @ = if num2 @ num3 @ = if -1 -1 else 0 then else 0 then \ if (num1 == num2 == num3) { -1 -1 } else { 0 } 07:00:27 inv if \ if !(num1 == num2 == num3) {} 07:00:27 num1 @ num2 @ <> if num2 @ num3 @ <> if num1 @ num3 @ <> if -1 else 0 then else 0 then else 0 then \ if (num1 != num2 != num3 != num1) { -1 } else { 0 } 07:00:29 then 07:00:31 ; 07:08:45 --- quit: aktnot (Remote closed the connection) 07:10:05 --- join: aktnot (ident@233.80-202-65.nextgentel.com) joined #forth 07:20:32 --- quit: fridge (Remote closed the connection) 07:24:02 why is it illegal to use >r if the stack isnt empty? 07:24:32 "1 >r" results in access violation crash.. 07:28:29 is >r causing the crash, or are you forgetting to pop it off before return? 07:28:45 its >r 07:28:51 i made a word to do 3dup 07:29:10 i double checked it and the return stack should be the same as when the word started 07:30:05 "1 >r r> ." does work indeed 07:30:33 ok... which forth? gforth? 07:30:36 winforth 07:31:14 http://www.rafb.net/paste/results/O2722190.html 07:33:38 --- join: tathi (~josh@pcp02123722pcs.milfrd01.pa.comcast.net) joined #forth 07:40:42 --- quit: schihei (Client Quit) 08:21:35 --- join: aktnot_ (ident@233.80-202-65.nextgentel.com) joined #forth 08:27:30 --- join: Herkamire (~jason@h000094d30ba2.ne.client2.attbi.com) joined #forth 08:30:08 --- quit: aktnot (Read error: 60 (Operation timed out)) 08:33:13 how about XOR OVER XOR = 08:35:29 nice :) 08:35:33 for comparing 3 numbers. 08:35:48 yeah, I just checked the logs 08:42:26 nah, no good. 08:42:48 if the second two numbers are the same you get a positive result, even if the first one is different 08:43:26 nxor is = 08:43:30 Yea, hmm. 08:45:31 more fun with SET :) 08:46:24 ^^ 08:46:35 any idea why this crashes? http://www.rafb.net/paste/results/O2722190.html 08:47:37 num1 @ num2 @ = if num2 @ num3 @ = if 1 else 0 then else 0 then 08:47:41 for comparing btw 08:51:45 qFox: it crashes because you left a bunch of crap on the rstack 08:51:49 : 3dup 2dup >r >r rot dup >r rot rot r> r> r> ; 08:52:16 qFox: the last to >R should be R> ? 08:52:19 i did? as far as i can see i'm popping as many items as i'm pushing 08:52:30 yah, your last _two_ >r should be r> 08:52:38 qFox: you're pushing 6 and poping 2 08:52:41 oops 08:52:52 i have a form of dyslexia 08:53:25 i double checked it, counted it, and didnt see it 08:54:13 tathi> i tried to avoid pick roll and rot :) otherwise i'd just do : 3dup 2 pick 2 pick 2 pick ; 08:54:34 well, if you're working with three stack items you might as well use rot 08:55:26 the point of not using rot/pick/roll is to avoid using more than 2 stack items (and when you do have them in order already) 08:55:36 oh 08:55:43 ok i missed that bit :) 08:55:57 but hey i did it without anyways 08:56:00 :) 08:56:05 :) 08:56:31 i dont suppose you can swap the return stack? :) 08:56:37 I get the impression most people avoid pick/roll, but that only the hardcore minimalist people really avoid rot. 08:56:59 I still think it can be done with XORs. :) 08:57:19 well i'm actually on the edge of having an attitude that says screw you all, there's pick and roll so i'll use them if it makes it easier... :) 08:57:27 madgarden: yeah, I'm still trying to figure out a way to do that. 08:57:36 qFox: it's your program, go ahead :) 08:57:44 I almost had it working, but then the case of 1 2 1 failed. 08:57:52 xor to see either x = y = z ? 09:00:48 PASSES MY DRIVING TEST!!! W00T!!! 09:00:55 I sorta think that XOR would only work with base 2 or 4 09:02:14 chrisrw: congrats :) 09:02:27 XOR works easily for even argument count. 09:02:40 I failed my driver's test the first time. 09:02:47 :) 09:02:55 first two for me 09:03:25 tuck xor rot xor = 09:03:26 but from what I can tell, PA almost automatically fails boys the first two times ;) 09:08:02 qFox: Fails for the 2 2 1 case. 09:08:06 ya 09:08:11 xxy 09:08:16 aab 09:08:25 this this that 09:08:26 :P 09:09:03 --- quit: chrisrw (Remote closed the connection) 09:09:18 i dont think you can do it with just xor 09:09:35 --- join: chrisrw (~chris@wbar8.lax1-4-11-099-104.dsl-verizon.net) joined #forth 09:09:41 so i'll agree with Herkamire :) 09:11:47 i made it i made it omg omg omg omg 09:13:29 gtg, more set fun tomorrow :p 09:13:56 set? 09:13:56 laters then 09:14:26 the card game SET, he's writing one in Forth 09:14:54 Oh, neaters. ciao qFox. 09:15:00 cu :) 09:30:00 --- quit: chrisrw (Read error: 110 (Connection timed out)) 09:34:28 grr. sometimes I really dislike make. 09:41:34 --- join: kc5tja (~kc5tja@66-91-231-74.san.rr.com) joined #forth 09:41:34 --- mode: ChanServ set +o kc5tja 09:42:08 * kc5tja has officially met his stated objective, and ahead of schedule too. 09:42:19 FS/Forth can both print text to the Linux console and receive text input from it. 09:43:23 My next milestone is substantially more ambitious unfortunately, and by necessity. 09:44:01 I now need to implement the source code interpreter, which means I must include the Forth wordlist in the ELF executable. 09:44:26 that's always fun :( 09:45:06 Yeah, it'll be a learning experience, for sure. 09:45:07 ahhh...make removes implicit intermediate targets. *that's* what's going on. 09:45:21 At least the cross-compiler can be used to make real Linux applications now, though. :) 09:48:40 * kc5tja made a simple interactive Hello World program that compiled to a grand total of 921 bytes, including ELF header overhead. 09:48:40 : buffer r> ; 09:48:40 : buf buffer [ 80 allot 09:48:40 : name cr ." Please enter your name: " buf 80 accept 1- buf swap ; 09:48:49 : hello ." Hello, " type ." !" cr ; 09:48:59 : main [entry-point] name hello bye ; 09:52:30 --- join: chrisrw (~chris@wbar8.lax1-4-11-099-104.dsl-verizon.net) joined #forth 09:52:45 kc5tja: guess what!? 09:53:01 What? 09:53:06 i got my license. 09:53:10 :D :D :D :D 09:53:20 Drivers license? 09:53:24 yuupy 09:53:29 Cool. 09:53:36 yep :D 09:53:36 :D 09:53:37 :D 09:53:44 * kc5tja met his stated objective this morning. 09:53:53 i can now drive myself as well as people 18+ 09:53:56 (or was it 21+?) 09:54:00 ooh 09:54:02 what was that? 09:54:25 FS/Forth's cross compiler produced an application which was an interactive hello-world program today. 09:54:34 CONGRATULATIONS!! 09:54:45 The total binary size was 921, including ELF header overhead. 09:54:50 like, "whats your name?" "Hello, %s" ?? 09:54:57 Yes, exactly that. 09:55:02 :)( 09:55:03 er 09:55:05 :) 09:55:06 awesome 09:55:11 I already posted the 5-line source here; check the logs to see it. 09:55:18 where are the logs? 09:55:32 http://tunes.org/~nef/logs/forth/ 09:56:47 : buf buffer [ 80 allot <--- ? 09:56:50 Yep. 09:57:04 i mean, i know what all of those do, but !!!??!??!?!?! 09:57:07 My Forth does not have CREATE. 09:57:15 oh 09:57:16 : buffer r> ; 09:57:21 : buf buffer [ 80 allot 09:57:32 does not have create at all? 09:57:36 or just for now? 09:57:44 When buf calls buffer, the return address points to the 80-byte buffer. 09:57:45 At all. 09:57:49 !!! 09:57:51 NO CREATE!!? 09:57:55 WTF!? 09:58:05 It's not needed. 09:58:26 At least, for the things I'll be using FS/Forth for. 09:59:22 ... 09:59:24 dude 09:59:38 at least implement it later on, even if you won't use it. 09:59:53 I have no immediate plans to implement CREATE. 09:59:57 I just don't need it. 10:00:21 a forth without CREATE or DOES> .... 10:00:23 man 10:00:31 that is just .... 10:00:32 ugh 10:00:36 : buf buffer produces exactly the same binary code that create buf would produce, and I don't even have to implement the infrastructure for it. 10:00:50 chrisrw: You are aware taht ColorForth also lacks CREATE and DOES>. 10:00:58 create buf is a bit more readable... ;) 10:01:05 No, not when you think about it. 10:01:06 create buf looks prettier though 10:01:11 piso: bastard, you beat me :P 10:01:12 : makes a new definition. 10:01:21 yep. 10:01:24 I'm defining buf to be a buffer, which is 80 bytes long. 10:01:44 : buf buffer [ 80 allot 10:02:03 theres no ;, I know its not needed, but it just doesnt look right without ; 10:02:08 are you deliberately omitting the ';' at the end of that line? 10:02:14 Very. 10:02:37 Note what buffer is doing: it's popping the return address off the return stack, because that address points to the buffer. 10:02:47 Hence, buffer never 'returns' to the buffer. No need for ;. 10:03:22 so its immediate without being immediate 10:03:23 lol 10:03:27 so why not just : buf r> [ 80 allot 10:03:30 What's immediate? 10:03:33 Nothing here is immediate. 10:03:46 [ <--- makes it immediate 10:03:53 piso: Because r> removes the return address, and then will attempt to execute the contents of the buffer. 10:03:57 chrisrw: No it doesn't. 10:03:58 actually, it goes out of xompile mode. 10:04:01 It just stops the compiler. 10:04:04 yes. 10:04:06 but 10:04:10 the word is immediate in a sense 10:04:14 No. 10:04:18 The word definitely is not immediate. 10:04:24 if you call buf, then it does an immediate action 10:04:27 If I execute buf, it has absolutely zero compile-time semantics. 10:04:34 chrisrw: No, it doesn't. 10:04:39 yes it does. 10:04:41 [ <--- 10:04:43 No, it doesn't. 10:04:50 [ does not make a word immediate. 10:04:55 yes 10:04:57 No 10:05:04 in this case [ is just ending the definition 10:05:05 but anything after a [ is immediate 10:05:07 I don't know where you got that idea from, but it's patently false. 10:05:14 chrisrw: No!! 10:05:32 ... 10:05:36 By that logic, every time I execute 'buf', it'd allocate a new 80 byte buffer in the dictionary. That is NOT what's happening. 10:06:12 kc5tja is right, but I'm not sure it's worth the obscurity 10:06:19 There is no obscurity. 10:06:34 FS/Forth is a native code compiler. 10:06:40 It produces raw x86 machine code. 10:06:52 My code fragment above produces *exactly* the same code that CREATE and DOES> would produce. 10:07:04 But my code actually exposes the operation, not hides it. 10:07:19 yes, but one can't know that without being familiar with your particular implementation 10:07:20 yes 10:07:21 And I don't even need to implement the core logic for CREATE or for DOES>. 10:07:34 however, that would mean they wopuld have to know how it works. 10:07:39 piso: Dude, it even works in direct threaded ANSI Forth. 10:07:41 and forth is all about factoring anyway. 10:07:51 CREATE and DOES> is much more factored than that. 10:07:56 Forth is all about knowing hwo things work. 10:08:29 Factoring is a tool to make that happen, but if you look on comp.lang.forth, there's isn't a month that goes by when someone isn't thoroughly and utterly confounded by how DOES> works. 10:08:38 This makes the whole thing very, very, very explicit. 10:08:51 : array cells r> + ; 10:08:59 : myArray array [ 80 cells allot 10:09:05 : yourArray array [ 160 cells allot 10:09:11 5 myArray @ . 10:09:16 15 yourArray @ . 10:09:41 does> is so easy to get once you do get it. 10:09:49 the thing is that nobody explains it well. 10:10:11 the way i finally understood was when you explained, and even then i was utterly confused 10:10:22 Precisely. 10:10:25 DOES> is a mind-trap. 10:10:26 (at first) 10:10:33 however 10:10:38 It is not easy to understand, and is inherently considered "Advanced Forth." 10:10:41 nobody explains it the way it should. 10:10:47 And nobody will ever. 10:10:47 kc5tja: as a point of information, your code doesn't work under gforth (for example) 10:10:55 well, it is easy to understand if it is explained right. 10:11:09 piso: Well, because : and ; have to be balanced due to enforcing the control stack. 10:11:23 chrisrw: Dude, even Leo Brody couldn't explain DOES> easily. 10:11:29 And he's the author of Starting Forth. 10:11:42 well, you have exceptional talent in explaining forth 10:11:52 because i understood your version, and it took me a while to get his. 10:12:44 i should search the logs for your explanations, and make a book out of it 10:12:45 I find my solution to be much easier to understand. 10:12:46 and make you rich 10:12:47 :) 10:12:59 Even if it does look awkward. 10:12:59 kc5tja: well, yes and no. 10:13:04 so in any case, I don't think your code is guaranteed to work in direct-threaded ANSI Forth 10:13:14 kc5tja: : ..... [ .... <-- is very VERY awkward code 10:13:15 piso: It works fine in Pygmy. 10:13:29 I think it will work sometimes, sometimes not. 10:13:30 yes, but its implementation specific 10:13:30 chrisrw: Hardly!! Chuck Moore does this all the time in his code. 10:13:35 Consider the evaluation fo constants: 10:13:38 : foo [ ... ] literal ; 10:13:41 I mean, what the heck? 10:13:47 This isn't rocket science. :) 10:13:57 :) 10:14:05 : constant create , does> @ ; 10:14:14 easy to understand, produces good code. 10:14:20 chrisrw: No, hardly the same thing. HARDLY the same thing. 10:14:24 Produces HORRIBLE code. 10:14:37 Because the evaluation of a constant involves no less than TWO subroutine calls. 10:14:46 The code it produces depends on the optimizations performed by the compiler. 10:14:56 why no less? 10:14:58 Meanwhile, the use of LITERAL involves at most one, and easily inlined by an optimizing compiler to produce zero subroutine calls. 10:15:00 I see 1 call. 10:15:15 well, actually, you're right, 2. 10:15:25 but for constant, you can do other things 10:15:27 You see 1 call because you're not familiar with how DOES> is implemented. :) 10:15:34 : constant literal ; immediate 10:15:41 No. 10:15:44 That won't work. 10:15:45 well, theres the call to @ :) 10:15:57 well, something along the lines of that. I'd have to mess with it. 10:16:03 DOES> has to be implemented as a double-branch in order to get the body address for the word. 10:16:04 lemme start up pygmy really quick. 10:16:17 er!? 10:16:27 Look at how Pygmy implements DOES>. 10:16:38 You'll find it's not as "clean and efficient" as you make it out to be. 10:17:13 Anyway, I need to get to work. 10:18:05 --- quit: kc5tja ("THX QSO ES 73 DE KC5TJA/6 CL ES QRT AR SK") 10:18:19 --- join: Robert (~snofs@c-7e5a71d5.17-1-64736c10.cust.bredbandsbolaget.se) joined #forth 10:20:55 hi Robert 10:21:06 Hi 10:22:52 where were you the last few days? 10:23:08 No internet.. 10:23:12 * Robert hates his ISP 10:23:21 ugh 10:23:25 even with the new ISP? 10:23:28 that sucks. 10:23:30 poor Robert 10:23:32 :) 10:23:38 * chrisrw got his drivers license today 10:24:09 Congratulatoins 10:24:13 -tions* 10:24:54 thanks 10:24:56 hehe 10:24:59 im driving to work today 10:25:00 yay 10:28:00 FWIW we had somebody in here just yesterday who was very confused about CREATE/DOES> 10:28:17 This time it wasn't me. :) 10:28:40 heh 10:28:48 CREATE DOES> is such an easy concept. 10:28:56 its just blown out of proportion. 10:29:01 thats why n00bs get confused' 10:29:17 chrisrw: why the hell do you keep saying that? you admitted yourself that after it being explained to you very well TWICE you were still confused 10:29:40 because its blown out of proportion, and thats why i was confused 10:29:48 if it confuses everybody, then it's obviously not an easy concept 10:30:05 --- join: snowrichard (~richard@adsl-068-209-159-248.sip.shv.bellsouth.net) joined #forth 10:30:14 took me years to figure out how it worked, a few minutes to figure out how to use it 10:30:15 well, if you explain it like "Sets the compile-time semantics of the word being created" few people are gonna get it. 10:30:52 that chapter in the brodie forth book was very deep 10:30:56 if you say that "the DOES> part is what happens when you use the new word in your code" its much easier to grasp 10:30:57 confusing 10:31:17 chrisrw: that's a little better sorta... 10:31:22 that makes sense somewhat 10:31:31 problem is it's not even that simple, because CREATE also sticks some code into your definition 10:31:45 DOES> is a bastard to implement too 10:31:45 yes, but no. 10:31:46 lol 10:32:01 I don't have those yet in my system 10:32:17 "DOES> is provided (as the top of stack) the item last allocated in the stack in the CREATE part. 10:32:23 I like kc5tja's trick of poping the rstack in ARRAY 10:32:32 I implemented does> on my system, but I've never used it yet 10:32:40 Herkamire: yes, that is neat, but ugly still :) 10:32:41 Robert: :) 10:32:45 Maybe once twice.. But not more. 10:33:02 In many pages of Forth code. 10:33:02 chrisrw: it's not ugly 10:33:18 : buf buffer [ 80 allot 10:33:26 it's perfectly strightforeward and clear 10:33:29 yes, that is not only ugly but also implementation specific 10:33:39 to anybody who understands forth reasonably well. 10:33:49 in michael> 80 VAR buffer 10:33:51 itll work on pygmy and FS/Forth, but not on lets say gforth 10:34:19 : array create allot , does> @ ; 10:34:21 I don't really care about compatibility with different forths, and I doubt kc5tja does 10:34:30 well, he probably doesn't. 10:34:38 but basic concepts are alike in all forths 10:34:38 he's writing his own forth. if he just wanted to be compatible, he'd just use an ANS forth and be done with it. 10:34:48 such as CREATE, DOES>, DUP, SWAP, OVER, etc. 10:34:57 ANS forth sucks tho ... 10:35:01 mine is not compatible and not intended to be 10:35:17 once i get around to mine, it wont be. 10:35:17 many forths do not have DOES> 10:35:25 and a bunch don't have CREATE either 10:35:26 but it will be very much like many others. 10:35:31 Herkamire: name some. 10:35:35 (like say _Chuck Moore's_ forth) 10:35:40 mine 10:35:44 kc5tja's 10:35:47 cmforth doesn't!? 10:36:10 NO 10:36:14 kc said that earlier 10:36:26 let me read my code and see if I can figure out a cleaner way to do it. bbl 10:36:26 DOES> is an ugly hack 10:36:44 I think this ": array create allot , does> @ ;" is ugly 10:37:07 I can't even see that it would work 10:37:28 --- quit: snowrichard ("Leaving") 10:37:40 what's with the comma? 10:38:01 hmmmm. I think it's terribly broken 10:38:24 you mean like this right? : array create allot does> swap cells + @ ; 10:39:06 vs kc's : array cells r> + @ ; 10:40:12 I like: : my-array array [ 80 allot 10:40:22 it doesn't introduce any new syntax 10:41:13 the only thing funny looking is if you just look at the def for my-array you don't see the end of the definition, but if you look into array, you will see that it ends the def 10:42:47 qFox: you still around? I had a fun idea for matching cards in your SET game: 10:43:20 this word checks two attributes (from different cards) and returns what the third should be 10:44:25 : check2 ( card1-attr card2-attr -- correct-card3-attr ) 2dup = if drop exit then 3 swap - swap - ; 10:46:49 then you can do: : check-colors card1 get-color card2 get-color check2 card3 get-color = if ." colors good" exit then ... ; 10:49:18 everybody: what should I name a word which subtracts the stack item under TOS from TOS ( a b -- b-a ) 10:50:21 PPC instruction is subf 10:50:26 (subtract from) 10:50:29 swap- 10:51:33 piso: yeah :) I might just do that 10:51:38 you know what I just thought 10:51:55 rlwinm completely eliminates any shifting, rotating, or ANDing :) 10:52:25 unless the shift/rotate amount is not known until runtime 10:52:37 oh 10:52:38 hrm 10:52:39 :( 10:52:56 well, then make a all-register rlwinm :) 10:53:01 rlwm :P 10:53:13 5 registers :) 10:53:34 there is one that is less constant let me see... 10:55:28 there's rlwnm which uses a register for the rotate. but the mask is still constant 10:58:15 wow, there's also rlwinmi (rotate register left by immediate then insert) 10:59:04 itstead of just sticking the masked bits into the destination register, it just sets those bits in the destination register (leaving the other bits in the destination register (not hit by the mask) alone) 11:01:04 odd. 11:02:24 err, no. 11:02:34 --- join: OrngeTide (orange@rm-f.net) joined #forth 11:03:32 rlwimi takes a bitfield from one register and inserts it into another register. 11:04:35 oh, that's what you were trying to say, never mind. 11:04:44 I was trying :) 11:04:55 im reading logs from a few months back 11:04:57 man 11:04:59 anyone knows how i can remove the frames in Deluxepaint IV (amiga), what keycombination or mouse path? 11:05:00 was i stupid 11:05:01 lol 11:05:30 --- quit: Hipo (Read error: 104 (Connection reset by peer)) 11:05:30 chrisrw: live in the now! ;) 11:05:36 : 11:05:37 :) 11:05:59 lunchtime. bbiab 11:06:09 bye 11:06:34 --- join: rO| (rg@pD95459E6.dip.t-dialin.net) joined #forth 11:11:00 Moo :) 11:11:47 moo yourself 11:12:51 ... 11:12:52 Moo. 11:12:57 Cheese. 11:13:20 bah. go do something useful 11:13:37 yeah 11:13:48 I am. 11:13:52 I'm sowing up my pants. 11:13:53 look up with google how i can remove tool bars in Deluxe paint IV on amiga 11:14:01 because there's a big hole where my crotch is. 11:14:09 mur: I got a link for you. 11:14:33 mur: http://www.google.com/search?q=remove+toolbars+Deluxe+paint+VI 11:15:01 chrisrw: what does that page say, i dont trust urls on irc ;) 11:15:21 chrisrw: learn to spell 11:15:22 its not porn, don't worry. 11:15:39 at least, I assume you don't mean you're planting things in your pants. 11:16:52 :P 11:18:55 like what? 11:18:57 hrm 11:18:59 interesting idea 11:19:03 i could patent that 11:19:12 "Masturbate while you walk --- without ANYONE noticing!" 11:19:27 i would make a shit load of money 11:21:13 * chrisrw is away: work 11:21:25 * chrisrw is away: work --- driving there --- MYSELF!! yay!! :) 11:42:13 --- quit: rO| ("..") 11:51:51 --- join: rO| (rO_@pD95459E6.dip.t-dialin.net) joined #forth 12:06:22 --- quit: rO| ("..") 12:33:44 --- quit: tathi ("leaving") 12:59:45 --- quit: aktnot_ (Read error: 54 (Connection reset by peer)) 13:01:44 --- join: aktnot (ident@233.80-202-65.nextgentel.com) joined #forth 15:16:05 --- log: started forth/03.12.29 15:16:05 --- join: clog_ (nef@bespin.org) joined #forth 15:16:05 --- topic: 'A channel dedicated to the Forth programming language, its implementation, its application, and its philosophy.' 15:16:05 --- topic: set by kc5tja on [Fri Dec 12 07:57:32 2003] 15:16:05 --- names: list (clog_ aktnot OrngeTide Robert chrisrw Herkamire qFox onetom I440r madgarden skylan clog piso chandler warpzero MysticOne oooo__ ianp @ChanServ mur) 15:20:12 --- quit: clog (Read error: 110 (Connection timed out)) 15:20:12 --- nick: clog_ -> clog 15:42:17 Herkamire> how would you get a single digit from a number? this is what i came up with, but i cant really work with numeric output yet because i dont understand it.... 15:42:19 : get-right-digit ( abcd -- d abc ) 15:42:19 dup dup \ abcd abcd abcd 15:42:19 0 15:42:19 <# # char 32 #> \ abcd abcd abc 0 adr x 15:42:19 2drop drop \ abcd abcd abc 15:42:21 10 * \ abcd abcd abc0 15:42:23 - \ abcd d 15:42:25 swap \ d abcd 15:42:27 10 / \ d abc 15:42:29 ; 15:42:31 it works however 15:42:47 plus you can loop the number to get them all seperated on the stack 15:42:54 (which is how i use it atm) 16:06:24 Sup guys? 16:07:22 no not "char 32" use "bl" 16:07:30 bl is a blank and you need do do 16:07:40 <# # bl hold #> 16:09:15 no 3drop ???? heh 16:09:28 havent made it yet 16:09:43 the above is way too complex 16:09:54 you dont need to go through all that just to extract the units 16:09:57 and <# # bl hold #> doesnt have the result i need 16:10:00 just do 10 /mod swap 16:10:18 well the char 32 is wrong 16:10:30 you would need to use [char] anyway 16:10:39 and you cant do that with a space 16:10:43 you should use BL 16:10:45 its comples, but it works, it works the way i need it to, however i cant seem to understand <###> by trial and error, this was the best i could do 16:11:02 i dont know exactly why this gives the result, but it does.. 16:11:29 <# just initializes pointers in a buffer - the number string is constructed backwards of corse.... 16:11:35 now if you can give me an example that returns the right-most digit, great 16:11:40 from the units to the tens to the humdreds etc 16:11:45 Herkamire: ping 16:11:51 yes reversed order, i read that 16:12:09 # divides the number you are converting by the current radix and stores the remainder as an ascii digit in the string (where HLD points to) 16:12:10 but winforth does something odd with numeric output appearantly 16:12:57 not that i saw - its the same in isforth basically 16:12:58 i think 16:12:59 current radix? 16:13:04 yes 16:13:12 the current radix is stored in a variable called BASE 16:13:22 : decimal 10 base ! ; 16:13:27 : hex 16 base ! ; 16:13:43 oh right 16:13:43 ok 16:13:51 i just didnt know the english word radix 16:14:12 aha heh 16:14:17 but 16:14:18 then 16:14:21 ya learned a new word :) 16:14:30 1111 <# # # # #s #> should return 1 1 1 1 16:14:34 or what... 16:14:38 no 16:14:43 (and perhaps an adres and whatever #s produces) 16:14:49 it doesnt return the digits it compiles them into a string 16:15:16 can you explain why this does somewhat work with <# # char 32 #> 16:15:26 im sure it doesnt heh 16:15:53 with a 0 16:16:05 6789 0 <# # char 32 #> . . . 1 1228839 678 ok 16:16:31 hm 16:16:34 :) 16:16:35 ok nm 16:16:50 use /mod 16:16:53 i forgot i multiply the TOS with 10 and subtract it from the number 16:16:58 i dont see how 16:17:04 5653 10 /mod . . 16:17:08 that was suggested yesterday but.. 16:17:24 d'oh 16:17:31 alright.. 16:17:33 :) 16:18:12 thats almost not funny :) 16:21:26 i told you this yesterday :P 16:21:33 or was it the day before :P 16:21:50 yes but i didnt get/see the explanation and at that time i couldnt figure out how 16:40:39 --- quit: I440r ("bbl") 17:01:06 Moo. 17:11:04 can i do a do loop inside a do loop? and what will i be for the second loop? 17:11:10 so do do loop loop 17:11:18 er 17:11:31 it would work. 17:11:32 i was told to ignore you chrisrw :p 17:11:37 (btw) 17:11:44 BY WHO!!! 17:12:00 dunno, several ppl appeared to agree on it though ;) 17:12:29 ugh 17:12:36 hold on, lemme figure out J 17:12:54 and don't ignore me, just assert what I say. Because I'm more likely to be wrong than most. 17:13:01 but that doesnt mean I'm always wrong :) 17:13:04 hehe 17:13:07 well wait before you do 17:13:12 the trouble i mean 17:13:34 3 loops seem to be the easiest way of doing this 17:13:53 but i need to create all the card sets, for 3 cards, out of a possible 12, order-independent 17:14:23 i already calculated that thats 220 possible card-combinations (12 3 binomial, or 12!/(9!*3!) ) 17:14:30 : J r> r> dup rot >r >r ; 17:14:31 but that number wont get me anywhere 17:14:47 note that I is for the inner loop, J for the outer loop 17:14:59 innermost loop, I should say. 17:16:23 so basicly what i need is something like, for (i=0;i<12;++i) { for (j=i;i<12;++j) { for (k=j;i<12;++k) { } } } 17:16:54 well, I'm not sure how to do K ... 17:16:56 where i j and k represent the card in the array, them three making the combination 17:17:00 but it would be the other way around here. 17:17:09 I is the innermost loop, always 17:17:15 J is the second-innermost 17:17:21 well this is just the easiest, but i'm gonna think of another way of doing it 17:17:22 and K the third-innermost 17:17:27 lemme see if i can define K, hold on. 17:17:46 since taking i j and k from do loop will be more work and complicated then i need it to be :) 17:19:27 maybe i'll just use begin until 17:20:07 : K r> r> r> ( 3 2 1 ) dup ( 3 2 1 1 ) >r ( 3 2 1 / 1 ) -rot ( 1 3 2 ) >r >r ; 17:20:35 i'm sorry thats beyond me :\ 17:20:53 : K r> r> r> dup r> -rot >r >r ; 17:20:53 :P 17:21:03 very VERY heavy rstack manipulation. 17:21:08 no shit :p 17:21:16 looks like my 3dup thingie 17:21:24 sorta 17:21:42 i tihnk the best way for you to do it is to have separate words for each loop, and call each with I 17:21:44 so like 17:21:53 i'll just use begin until instead 17:22:00 i think i can easily manage with that 17:22:03 : loop1 do ... I loop2 ... loop ; 17:22:12 : loop2 do ... I loop3 ... loop; 17:22:20 : loop3 do ... loop ; 17:22:23 see what I mean? 17:22:36 aye 17:24:06 : 3dup ( 1 2 3 ) over over ( 1 2 3 2 3 ) >r >r rot dup ( 2 3 1 1 / 3 2 ) r> ( 2 3 1 / 3 2 1 ) -rot r> r> r> ; 17:24:16 oh no 17:24:22 without rot ^^ 17:24:25 : 3dup over over >r >r rot dup r> -rot r> r> r> ; 17:24:29 lol 17:24:34 rot is your friend. 17:24:51 i do remember it was you who told me to avoid rot... wasnt it? 17:24:54 so are nip and tuck 17:25:07 no, i said to avoid pick 17:25:27 hm 17:25:30 well anyways http://www.rafb.net/paste/results/O2722190.html 17:25:53 oh, and avoid roll too 17:25:53 except the bottom two >r should be r> , but those were typo's, not thinking mistakes 17:26:17 (ok not really really typo's, dyslexy typo's if you will) 17:26:36 lol 17:26:42 well, my version is prettier. 17:26:43 anyways, it works 17:26:44 --- join: fridge (~fridge@dsl-203-33-163-107.NSW.netspace.net.au) joined #forth 17:26:54 and has no pick roll or rot :p 17:26:58 actually, it can be implemented very efficiently with pick. 17:27:11 this is one of the few cases where it is good :) 17:27:23 the prettiest version is probably just : 3dup 2 pick 2 pick 2 pick ; 17:27:27 : 3dup 2 pick 2 pick 2 pick ; 17:27:29 yeah 17:27:30 lol 17:27:30 yes exactly 17:27:36 i already had that as alt :0 17:27:44 : dup 0 pick ; 17:27:48 : over 1 pick ; 17:28:10 although you want to implement those as efficiently as possible, without pick :) 17:30:38 well, if you're bored, what would you say is the best way of checking either n1 n2 and n3 are EITHER ALL the same, or ALL different, in : check ( n1 n2 n3 -- flag ) ...... ; 17:30:52 hf :) 17:31:12 . 17:31:17 what if two are the same? 17:31:21 i put the numbers in variables num1 num2 and num3, to avoid difficult and complicated stack switching 17:31:43 whats the flag supposed to be? 17:31:45 either all three the same or not the same, otherwise its false 17:31:51 oooh 17:31:52 ok 17:31:52 true or false 17:31:56 hrm 17:32:03 or well 17:32:06 i have 1 0 -1 17:32:12 wow 17:32:13 ugliness 17:32:14 for equal, false, and non-equal 17:32:25 but its not important why its true 17:32:42 num1 @ num2 @ = num2 @ num3 @ = + -2 = if 1 else 0 then \ if (num1 == num2 == num3) { 1 1 } else { 0 } 17:32:42 dup inv if drop \ if !(num1 == num2 == num3) {} 17:32:42 num1 @ num2 @ <> num2 @ num3 @ <> num1 @ num3 @ <> + + -3 = if -1 else 0 then \ if (num1 != num2 != num3 != num1) { -1 } else { 0 } 17:32:42 then 17:33:20 thats what i got atm, ppl were talking about using xor to check for equal, but i dont think they managed to get that :) 17:34:49 : blah = if = if -1 else 0 then else 0 then ; 17:35:36 yes i had that, but if you add the flags you can check for -2 = 17:35:46 that way you only have to do one if else then 17:36:02 thats why there's the + -2 = there 17:36:24 hrm... 17:37:34 hm, actually, inv can be replaced by 0= 17:37:36 : blah = = ; 17:37:46 lol 17:37:49 : blah = = ; 17:37:51 haha 17:37:53 thats so simple 17:37:59 and thats the solution, my friend. 17:38:03 eh... 17:38:06 no way? 17:38:06 erm 17:38:10 wait. 17:38:13 almost. 17:38:15 hold on. 17:38:16 you wanna compare the flag to the number? :p 17:38:32 anyways its close to what i have 17:38:51 except i call the numbers from the vars right there, instead of having them on the stack already 17:39:23 num1 @ num2 @ = num3 @ = 17:39:24 ? 17:39:28 yes 17:39:41 --- join: tathi (~josh@pcp02123722pcs.milfrd01.pa.comcast.net) joined #forth 17:39:42 leaves two flags on the stack, add them, if they are -2 combined, they are both true 17:39:42 : blah over = -rot = and ; 17:39:52 hows that? 17:40:15 because, num1 @ num2 @ = (if true) leaves -1 17:40:28 num2 @ num3 @ = (if true) leaves -1 17:40:30 why add if you can and? 17:40:42 and is much better than ad 17:40:45 : blah over = -rot = and ; 17:41:00 hmmm ok 17:41:04 good point that 17:41:54 : blah ( 1 2 3 ) over ( 1 2 3 2 ) = ( 1 2 f ) -rot ( f 1 2 ) = ( f f ) and ( f ) ; 17:42:13 you mean tuck... 17:42:20 oh 17:42:22 no you dont 17:42:30 tuck is neat. 17:42:53 : blah num1 @ dup num2 @ = swap num3 @ = and ; 17:43:19 num1 @ num2 @ = num2 @ num3 @ = and = 17:43:33 why = at the end? 17:43:41 hm 17:43:54 padding? :p 17:43:57 (dup is faster than num2 @ btw) 17:44:01 naah 17:44:07 its gonna mess up your stack too. 17:44:14 and is sufficient :) 17:44:14 no it wont 17:44:19 yes it is. 17:44:21 it takes a flag and produces a flag 17:44:22 :) 17:44:25 and ( 1 2 --- 1&2 ) 17:44:33 yes but the = 17:44:38 gah. You're talking about forth too much. 17:44:42 = ( 1 2 --- fag ) 17:44:43 er 17:44:46 flag* 17:44:46 lol 17:44:48 better watch out or you'll get banned :P 17:44:53 lol 17:44:55 lol 17:45:12 * qFox has chanserv immunity :p 17:45:49 : blah num1 @ dup num2 @ = swap num3 @ = and ; <--- the solution to your problem. 17:45:52 next word? 17:46:05 all not-equal 17:46:20 .... 17:46:29 : blah num1 @ dup num2 @ <> swap num3 @ <> and ; <--- the solution to your problem. 17:46:30 n1 != n2 != n3 != n1 17:46:43 next word? 17:46:57 thou art not complete m'lord 17:47:11 n1 != n2 != n3 != n1 17:47:31 num1 @ num2 @ <> num2 @ num3 @ <> num1 @ num3 @ <> and and 17:47:56 no 17:48:01 my word is complete. 17:48:10 it does 2 comparisons 17:48:14 it should do 3 17:48:25 the 3rd one is simplified by the and 17:48:47 num1 can differ from num2, and num2 differ from num3, and still can num1 be same as num3 17:48:52 so you _need_ 3 checks... 17:50:06 hrm 17:50:10 you're right there. 17:50:25 brb' 18:09:51 ha! 18:09:55 qFox: check this out. 18:10:18 assuming you have 3 numbers, they're each 0-2 (or 1-3, doesn't matter) 18:10:25 aye... 18:10:37 : test ( n1 n2 n3 -- flag ) + + 3 mod 0= ; 18:10:48 returns true if they're all the same or all different, false otherwise. 18:11:03 hmmmm damn, lol 18:11:07 * tathi loves discrete math 18:11:46 yep very nice 18:12:37 lol 18:12:41 hrm 18:12:44 in the meantime, why does this loop result in some weird endless loop? even when debugging it suddenly starts running out of control... 18:12:45 12 begin 18:12:45 1 - dup begin 18:12:45 1 - dup begin 18:12:45 1 - 18:12:45 3dup 3verse . . . cr 18:12:47 dup 0= until drop \ counter 18:12:49 dup 0= until drop \ counter 18:12:51 dup 0= until drop \ counter 18:12:57 i made up a really cool RISC CPU design while in teh shower. 18:13:15 you can remove the 3verse, it merely switches TOS with third on stack 18:13:54 it runs wild once the second counter reaches zero for the first time 18:14:17 factor! factor! 18:14:20 factor! factor! 18:14:21 factor! factor! 18:14:21 factor! factor! 18:14:39 once again, put each loop part in a separate word. 18:14:46 if its the same, use RECURSE 18:14:47 your paste key get stuck down chris? 18:14:52 but whatever you do 18:14:54 FACTOR! 18:14:56 actually i removed some factors so it would be a bit more irc friendly 18:14:57 tathi: :) 18:15:23 * chrisrw is back (gone 06:53:59) 18:17:13 qFox: that should be 12 dup begin, right? 18:17:35 hm, no? 18:17:43 i dont see why 18:17:59 hmm, maybe my brain just isn't functioning 18:18:09 --- join: I440r (~mark4@12-160.lctv-a5.cablelynx.com) joined #forth 18:18:11 yeah, definitely 18:18:26 moo I440r 18:18:32 I440r: you like RISC procs? :) 18:19:26 : loop3 ( n1 -- n1 ) dup begin 1 - 3dup 3verse . . . cr dup 0= until drop ; 18:19:26 : loop2 ( n1 -- n1 ) dup begin 1 - loop3 dup 0= until drop ; 18:19:26 : loop1 ( -- ) 12 begin 1 - loop2 dup 0= until drop ; 18:19:28 same problem 18:20:04 looks all right to me... 18:20:20 yep, dont see it either 18:20:23 i like all processors :) 18:20:36 what scares me is that it runs wild even while debugging 18:20:58 so after the second loop runs 0, the code suddenly doesnt step but just keeps on running 18:21:09 hmm, I wonder if my forth has begin/until? 18:21:24 try it :p 18:21:45 : begin here ; immediate 18:22:17 nope. 18:22:19 : until compile ?branch ok >mark and I440r: i just came up with a sweet RISC proc design 18:23:18 64 registers, native 64 bit or 32 bit, little endian. 18:23:22 16 instructions. 18:23:24 no more, no les. 18:23:30 well, maybe less 18:23:35 i might end up with 8 (!) 18:23:55 each instruction being 48bits 18:24:08 = 3 bytes 18:24:37 and here's an interesting feature: 18:25:28 there are only 2 instructions that accept an immediate constant: sethi and setlo 18:25:39 (which set the high and low bytes of a certain reg to something 18:26:01 also, several compound instructions 18:26:14 such as rlwm (rotate left with mask) 18:26:32 if you only have 8/16 instructions why waste code space making them all 3 bytes 18:26:38 make them all 1 or 2 bytes 18:26:39 1 is better 18:26:54 which completely eliminates the need for rotate left/right, shift left/right, or and 18:27:07 because then i'd need more than sethi and setlo 18:27:08 ooooh, i know why my loops fail, if the second is 0, he still tries to loop it, but because he subtracts 1 FIRST, the initial for loop3 counter becomes -1 thus creating an endless loop 18:27:09 well 18:27:12 not that bad. 18:27:22 yeah 18:27:52 make it 2 bytes, then set individual bytes 18:28:12 using just set, which also takes 3 bits worth of byte offset 18:28:34 so creating a 64-bit register from a constant is 8 instructions :( 18:28:50 but that shouldn't be too bad. 18:29:31 ok, and some other features 18:29:44 4-step pipeline 18:29:56 simple lock register dependency algorithm. 18:30:18 register dependent branch prediction logic (ask me about this, I came up with this all by myself) 18:30:52 lock register algorithm works very simply with an internal 'D' register 18:31:07 64-bit, one bit for each register, 1 if locked, 0 if available. 18:31:13 doesn't even need to keep track of it. 18:32:51 also, a 512byte cache 18:32:57 well, actuall 18:33:22 send it to intel :p 18:33:32 the cache is kinda odd lol 18:33:54 its more like a write-out queue 18:34:06 it can write out 128bits at a time. 18:34:18 using a 64-bit address 18:34:28 making it 24 byte per step 18:34:53 and actually more than that 18:34:55 uugh 18:34:56 lol 18:35:24 25 byte per step 18:35:34 well 18:35:52 actually, I'm gonna leave out the cache, because I haven't completely decided on how to do it yet. 18:36:04 however, I am now proceeding to writing an emulator, in forth. 18:51:43 --- quit: I440r (" brb") 19:07:24 --- part: piso left #forth 19:15:44 --- quit: tathi (""laters"") 19:22:50 --- join: I440r (~mark4@12-160.lctv-a5.cablelynx.com) joined #forth 19:26:05 --- quit: qFox ("if at first you dont succeed, quit again") 19:33:42 who wants to laugh? 19:34:42 me! ME! 19:34:51 ok 19:35:08 I am currently implementing a 64-bit integer adding routine --- in a 16-bit forth. 19:35:31 HAHAHAHAHAHAHA! 19:37:12 lol 19:37:21 I'm not too sure on how I should proceed to doing it. 19:38:14 maybe i should start with 32 19:39:42 I have no idea 19:39:44 I barely code at all 19:39:47 just starting on learning forth 19:39:49 but it's still funny :0 19:49:43 --- join: kc5tja (~kc5tja@66-91-231-74.san.rr.com) joined #forth 19:49:43 --- mode: ChanServ set +o kc5tja 19:50:52 hey kc5tja 19:50:54 lol 19:51:01 i think i got somebody converted to forth. 19:51:04 im inviting him 19:51:15 Heh 19:51:38 and also, how can i add 64-bit numbers in a 16-bit environment? 19:51:47 (read the logs please, and comment on my CPU idea) 19:51:48 * kc5tja just read an interesting article. Apparently, there is an exodus by big industry to move away from the Windows platform, towards Linux. 19:51:50 my newest one 19:51:51 lol 19:52:00 kc5tja: oh yes, please! 19:52:03 chrisrw: You can't, not without resorting to assembly language. 19:52:16 kc5tja: well, yeah. 19:52:22 isn't it something with adc or such? 19:52:36 You start with the least significant bytes, and work your way towards the most significant bytes. 19:52:45 mov eax,[esi] 19:52:48 mov ebx, [edi] 19:52:50 add eax,ebx 19:52:53 mov [esi],eax 19:52:57 mov eax,[esi+4] 19:52:59 mov ebx,[edi+4] 19:53:05 adc eax,ebx 19:53:09 mov [esi+4],eax 19:53:09 etc. 19:53:16 but 19:53:19 thats 32 bit code 19:53:19 lol 19:53:28 * MysticOne DCCs kc5tja a hamburger 19:53:30 Dude, whatever. The concept is the same. 19:53:37 * kc5tja can't think for you. 19:54:03 * kc5tja sends it back to MysticOne; already had one, thanks. 19:54:13 lol 19:54:17 in-n-out freemeal? :) 19:54:21 No. 19:54:28 We only get one free meal while working, and that is it. 19:54:36 When off duty, we pay like everyone else. 19:55:11 http://www.theinquirer.net/?article=13350 <-- that's the article my friend forwarded to me. 19:55:49 --- join: sone (~sone@208-42-61-221.dynamic-dsl.visi.com) joined #forth 19:56:21 kc5tja: I made some! 19:56:25 * MysticOne DCCs it again 19:57:27 hiya sone 19:57:36 everybody, meet sone. 19:57:45 ;) 19:57:51 hi sone! 19:57:54 howdy 19:58:30 kc5tja: does the carry flag survive @/calls? 19:58:56 sone: so, you want to learn about forth? :) 19:58:56 chrisrw: For x86, yes. 19:59:05 kc5tja: oh, neatness. 19:59:09 chrisrw: In fact, it has to to supprt multi-precision arithmetic. 19:59:20 So I would go further to say, "Yes" to *all* CPU architectures. 19:59:28 kc5tja: well, then i can just have a +c stub ) 19:59:49 (well, as long as there are no awkward adds in the sub call code and @ code... 20:00:15 kc5tja: I used mine and melinda's new grill tonight 20:01:37 MysticOne: Cool. 20:02:55 Anyway, I think I'm going to get some hacking done on FS/Forth for a bit. 20:02:57 back soon. 20:03:22 kc5tja: pop ax ; adc bx, ax ; next :) 20:03:28 kc5tja: later 20:05:15 sone: neat, eh? 20:05:39 now i gotta write the wrapper for it, and then I can start adding 64-bit numbers. 20:06:54 pssh... doesn't it do 128bit numbers? 20:08:21 (err, no, that'll happen the day after longhorn gets released) 20:08:29 lol 20:08:57 * I440r needs to win the lottery so he can pay someone to write the isforth documentation :/ 20:09:00 Microsoft: Yeah, check out our new 64-bit Longhorn with DB-based Filesystem! 20:09:13 db based ? 20:09:23 User: ...dude, linux has had reiserfs forever now. and did i mention the latest kernel supports 128-bit? 20:09:27 I440r: database 20:09:43 ugh 20:10:08 why they dont just use e2fs or reiserfs ill never know :P 20:10:13 sone: If you want Forth to support 128-bit numbers, you need to write the operators that work on them. Usually via assembly language embedded in the language. 20:10:47 chrisrw: I'm not sure that solution will work or not. 20:11:02 chrisrw: I'd personally just write all new operators for working specifically with 64-bit numbers. 20:11:29 ntfs is a fine fs (although very proprietary) 20:11:37 ntfs sucks 20:11:52 if linux cant write to it - it sucks :P 20:11:55 I440r: Because a true database provides indexing and other extremely useful services that traditional filesystems generally can't provide. 20:11:55 heh 20:11:59 why don't we all just use blocks anymore? 20:12:06 I440r: lol 20:12:17 linux can too write to NTFS 20:12:28 it just likes to fux0r it occasionally. 20:12:30 you're just either extremely limited or can't expect your filesystem to remain intact 20:12:33 NTFS is a perfectly fine filesystem. However, e3fs is better, technically. 20:12:34 because microsoft made it so hackish. 20:12:35 yes. but the built in can only write to existing files without growing 20:13:00 methinks if MS released the ntfs specs it'd be implemented by linux hackers within a month 20:13:02 sone lol 20:13:12 less than that. 20:13:13 let me restate it more accuratly then 20:13:17 i give them a week. 20:13:24 you cant RELIABLY write to ntfs from linux :P 20:13:37 kc5tja: yeah, i will. +64, -64, *64, etc. 20:13:51 sone i agree. they sure would 20:13:55 kc5tja: which reminds me, do you know how to implement multiplies in larger scales? 20:13:59 but why havent they reverse engineered it 20:14:13 because microshit made it purposely hackish 20:14:29 brb 20:14:32 --- quit: I440r ("Leaving") 20:15:05 seriously 20:15:06 its like 20:15:10 NTFS was and still is a very, very well designed filesystem for a general purpose filesystem. It's major flaw is that it isn't resistant to fragmentation, that's all. 20:15:14 char *****************file_datal 20:15:36 the win32 apis suck, eh? 20:15:50 hmm that's odd... xmms stops outputting when a java print dialog opens 20:16:04 chrisrw: And having multiple indices to a file makes it hackish? I *strongly* urge you to study up on ext2fs and ext3fs then, to see how it is implemented, and how many links you have to follow to find a file fragment. 20:17:13 (things get especially interesting with triply-indirect disk blocks. whoo!) 20:17:50 heh 20:17:54 still kinda weird though 20:17:57 why not just ONE!? 20:18:19 char *********filedata ; vs. char *file_data; 20:19:16 --- join: I440r (~mark4@12-160.lctv-a5.cablelynx.com) joined #forth 20:19:58 Moo I440r 20:20:10 the cow is of the bovine ilk 20:20:15 one end is MOO the other milk 20:27:12 #define Moo. ping 20:27:17 #define .ooM pong 20:27:19 sone: Moo. 20:27:25 Moo 20:27:31 noo 20:27:35 you did it wrong 20:27:37 read again 20:27:41 try again 20:27:44 sone: Moo. 20:28:01 * chrisrw sigh 20:28:02 noo 20:28:04 ok 20:28:18 you say "chrisrw: Moo." 20:28:23 chrisrw: Boing 20:28:28 and then I say, "sone: .ooM" 20:28:32 :) 20:29:05 Hmm brings back memories 20:29:15 I used to be addicted to quake. 20:29:22 :) 20:29:30 We'd hang out in our clan's IRC channel and make up silly triggers 20:29:58 some poor schmuck comes into our channel and happens to say a certain trigger word and the channel fills up with bizzare pre-scripted conversations 20:30:31 wish I had some of those logs still :) 20:30:53 hehehe 20:30:54 lol 20:31:33 :) 20:35:31 chrisrw: You can't have just one pointer to data because (a) the filesystem doesn't know how big a file is, so it allocates things in units of 512 bytes (or so), and (b) even if it did, the file can grow or shrink at any time, without predictability. 20:36:31 alright.. 20:36:51 not on my filesystem. 20:37:02 I have a crontab that (predictably) truncates files at 3:00AM 20:37:28 sone: Until then, files can grow to any size, up to the maximum size of the disk. 20:37:35 It needs to hold that data until then. 20:37:37 So my point still stands. 20:38:18 I also (erm) have (um) a thinggy that (hm...) does stuff 20:38:40 a penis? 20:38:47 i have a penis 20:38:48 shh don't tell 20:39:11 my penis is 29.5cm 20:39:15 want me to prove it? 20:39:19 SysInfo: Linux 2.4.21-99-athlon | AMD Athlon(tm) 1200.023 MHz | Bogomips: 2367.48 | Mem: 393/503M [3|||||||4|||] | Diskspace: 13.20G Free: 6.29G | Procs: 81 | Uptime: 10 hrs 50 mins 7 secs | Load: 1.20 1.03 0.93 | Vpenis: 29.5 cm | Screen: ATI Technologies Inc Radeon RV200 QW [Radeon 7500]@1280x1024 (16 bpp) | wlan0: In: 10.13M Out: 1.60M 20:39:20 :P 20:39:50 2.4.21, eh? can I have a local account? 20:39:59 its patched. 20:40:03 :) 20:40:11 heh, i'm not that stupid 20:40:12 :) 20:40:23 I am... I'm running 2.6.0 20:40:30 behind a NAT, but still 20:40:30 wow, cool 20:40:32 i wanna try 20:40:41 im behind a NAT. 20:42:03 --- part: kc5tja left #forth 20:42:42 ipmasq is not truely a nat - nat is i believe patented by cisco systems 20:42:55 well I'm behind a CISCO nat 20:42:59 so there :) 20:43:11 lol 20:43:20 so am i (linksys router :) 20:43:32 linksys == cisco? 20:43:39 yes 20:44:24 why did sam leave without his usual quit message? 20:44:47 he was upset about all the NAT talk 20:46:01 yea weird 20:46:13 maybe he was trying a different client 20:46:19 and hadnt set up the quit message 20:46:43 it was a /part not a /quit 20:52:58 uuh 20:52:59 yeah 20:53:05 he left #forth, not IRC 21:16:29 --- quit: I440r (Remote closed the connection) 21:22:29 --- quit: sone ("using sirc version 2.211+KSIRC/1.2.4") 21:27:04 --- join: hovil (~hovil@CommSecureAustPtyLtd.sb1.optus.net.au) joined #forth 21:28:37 --- join: I440r (~mark4@12-160.lctv-a5.cablelynx.com) joined #forth 21:31:00 --- join: I440r_ (~mark4@12-160.lctv-a5.cablelynx.com) joined #forth 21:51:44 --- quit: hovil ("Leaving") 22:13:01 --- quit: I440r ("Leaving") 22:37:09 --- join: hovil (~hovil@CommSecureAustPtyLtd.sb1.optus.net.au) joined #forth 22:37:31 --- join: Serg (~z@212.34.52.140) joined #forth 22:39:25 maaan, I missed all the fun 22:39:32 had some good lamb though :) 22:39:35 : 3dup >r 2dup r> swap >r tuck r> swap ; 22:44:28 BTW: : 2dup over over ; : tuck swap over ; 22:46:31 --- quit: Herkamire ("godnight") 23:01:41 herk that 3dup looks overly com,plex 23:01:44 complex 23:07:31 --- nick: I440r_ -> I440r 23:14:10 --- join: warp0b00 (~warpzero@216-161-218-25.hlna.qwest.net) joined #forth 23:39:21 * Serg wants another Linus Torvalds to start a Unix in Forth project, so i could participate 23:39:43 regretably, i feel myself not enough talented to start such a project 23:41:38 me 2 23:41:47 linus used to code forth 23:41:59 but he dislikes it cuz its not typed 23:43:46 so why not he write types ? 23:44:17 * Serg feel ok w/o types 23:44:53 ugh 23:45:28 --- quit: Serg () 23:58:45 --- join: Serg (~z@212.34.52.140) joined #forth 23:59:59 --- log: ended forth/03.12.29