00:00:00 --- log: started forth/03.07.19 00:49:41 --- quit: whee ("Leaving") 03:09:42 --- quit: flyfly (Remote closed the connection) 03:31:42 --- join: flyfly (~marekb@ip164.ktvprerov.cz) joined #forth 04:44:49 --- join: mur (murr@baana-62-165-189-64.phnet.fi) joined #forth 04:50:58 --- join: draq (ident@203-219-179-14-nsw.tpgi.com.au) joined #forth 05:20:58 --- join: crc (~crc@ACA7528D.ipt.aol.com) joined #forth 05:28:01 --- join: RO|_ (~RO|@pD9E59674.dip.t-dialin.net) joined #forth 05:29:17 Hi 05:30:07 --- part: flyfly left #forth 05:30:54 --- join: flyfly (~marekb@ip164.ktvprerov.cz) joined #forth 05:48:04 --- quit: rO| (Read error: 110 (Connection timed out)) 05:57:14 Robert 07:03:55 mur 09:12:22 --- quit: draq ("crash time.....without a blue screen") 09:12:29 --- quit: crc (Read error: 104 (Connection reset by peer)) 10:07:05 --- join: kc5tja (~kc5tja@ip68-8-206-137.sd.sd.cox.net) joined #forth 10:07:05 --- mode: ChanServ set +o kc5tja 10:11:01 Hi 10:12:33 Greetings 11:14:13 Hmmm.... It's looking like I should support three address registers in my Machine Forth implementation for FS/Forth -- two source registers (one of which is read/write, the other is read-only), and one destination (write-only) register. 11:16:30 So, if I have three registers A, B, and D, then the words to work with them would be: A@ B@ D@ A! B! D! !A @A !A+ @A+ @B @B+ !D !D+ 11:16:56 (where the D register is implicitly assumed to be the "destination" vector pointer, while A and B registers are used for data source pointers) 11:17:30 I use an addressing stack. 11:17:49 You can still only address one object with that construct though. 11:18:00 * kc5tja needs to address multiple vectors. 11:18:33 c@ aswap c@ + 11:18:48 A@+ B@+ + D!+ 11:18:48 Things like that makes it quite comfortable to use. 11:19:17 Sure, but you've got tons of instructions :) 11:19:30 So do you. :) 11:19:38 >A A> ASWAP ADUP ADROP, etc. 11:20:49 : sum ( v1 v2 vd lenght -- ) >R D! B! A! R> sumvec ; 11:21:14 : sumvec if @a+ @b+ + !d+ then 1- sumvec ; 11:21:23 oops, missing a drop: 11:21:34 : sum >r d! b! a! r> sumvec drop ; 11:24:40 The neat thing about this technique is that it makes manipulating and iterating over array elements fairly easy. 11:25:04 I can start to get some of the advantages of languages like K or APL, though it won't necessarily be as fast. 11:25:19 But if I needed vector-processing speed, I'd hand-assemble stuff anyway. 11:26:50 Bah :) 11:27:01 Bah? 11:27:03 Why Bah? 11:41:22 --- join: CrowKilr (~cacaboudi@Ottawa-HSE-ppp3654538.sympatico.ca) joined #forth 11:41:27 --- quit: CrowKilr (Client Quit) 11:41:51 --- join: CrowKilr (CrowKilr@Ottawa-HSE-ppp3654538.sympatico.ca) joined #forth 11:42:35 re 11:44:57 I solved my 4, 1, 5, problem: I define 4, (17 bytes), i use it to define 1, and i use the two of em to define 5, 11:45:19 * kc5tja nods 11:45:34 im tackling conditionals now 11:46:54 * kc5tja did a careful examination of conditionals and looping constructs. I've decided to follow in the footsteps of Chuck Moore here. IF and THEN are the only two conditional words I have. Looping is done via tail-call optimized recursion. 11:47:10 My next problem is getting used to non-destructive IF. :) 11:47:18 i want one word 11:47:52 How do you do two-way conditional behavior then? 11:48:22 i was thinking of a ? suffix for conditionals, like 0? or c? 11:48:34 i would like to have these two 11:49:02 Good idea. I was going to have IF always compile an OR EAX,EAX in front of the JZ. 11:50:06 But a word like 0? can be used to expose the Z-flag for IF. 0? IF ..blah... THEN 11:50:24 or, in my case, 0<> IF ..blah.. THEN 11:51:02 I don't know. I don't feel comfortable making the Forth environment so heavily CPU bound. I don't like the idea of exposing flags. :) 11:51:08 i thought of a different behavior: ?0 enable the skip of the following token only 11:51:32 bah 11:51:33 lol 11:51:46 just realized its conditional compiling 11:52:57 the easiest solution that comes to mind is to do force a certain syntax ala "?0 Testword ; code if condition false ; 11:53:27 ?0 would compile a static "jnz $+2+5 jump 11:53:41 --- join: a7r (~a7r@206.72.82.135) joined #forth 11:53:47 You cannot guarantee that the Z flag will be set correctly though. 11:53:48 the ; would transform the call into a jump and everyone is happy 11:53:48 sup 11:54:05 hmmm 11:54:07 That's the crux of my problem. 11:54:32 IF already compiles a static JZ in ColorForth, but Chuck has to resort to using the ? word to test bits in the top of stack to set the Z flag. 11:54:41 re a7r 11:54:54 sup kc5tja 11:55:17 I don't like having to constantly remember when to test flags and when not to. I shouldn't have to -- I'm programming in Forth, not x86 assembly language. :) 11:55:31 a7r: Nothing much. Just pondering some things about FS/Forth. 11:55:36 kc5tja: yah, I'm not hip to that either. 11:56:26 Oh, and the other idiom that really gets me thoroughly confused is this: ...blah... DROP IF 11:56:55 blah is setting the flags, and DROP is discarding the result that created those flags -- DROP must be designed to not change the flags (easy to do on x86, but still). 11:57:29 DROP IF would *not* work on a 68000, 6502, or 65816, for example, since all moves affect flags. 11:57:54 hmmm never programmed those, glad you tell me ;o) 11:58:16 And, of course, it certainly won't work on any of the x21-series of CPUs, since IF tests the very contents of the TOS itself. :-) 11:58:19 just do the if before and code the drop after 11:58:45 CrowKilr: Then I need to do two drops. blah IF DROP blort ; THEN DROP foobar ; 11:58:58 yep ;p 11:59:11 * kc5tja is thinking of making IF destructive in his Forth environment. 11:59:19 It's easier to read and comprehend what's going on, I think. 12:00:11 destructive with a special word, undrop 12:00:21 since we use array for our stacks 12:00:30 wonder if its useful 12:00:58 Not sure, but I do know that, so far, I've never had a real use for a non-destructive IF. 12:01:15 Chuck claims that 50% of his IF usage is non-destructive, and 50% is destructive. 12:01:26 So it seems equally valid to go either way. 12:01:46 in my detoken routine I "left-shift" an then test for carry, so non destructive is great 12:01:58 It's much, much easier to implement a non-destructive IF on x86 if you compile only one or two instructions for it. 12:02:01 thats one clear use for nondestructive for me ;p 12:02:53 movs affecting flags is a big agrument why portability isnt a issue: its impossible ;p 12:03:23 CrowKilr: Yes, it is impossible. But I don't want to have to rewrite 18 blocks of code all because of a different CPU architecture. 12:04:04 If I have to do it, I will, but I sure as hell won't like it. :) 12:04:12 hmmm i thought the other day (long ago) about a no-conditional architecture, using tables, or scratch space for tables with special routines in the beginning of the program 12:05:21 At some level, there will be conditionals, even if not explicit in the programming language. MIN and MAX are impossible to write without them, for example. 12:05:37 what do they do? 12:05:49 MIN takes the minimum of two numbers, and MAX takes the maximum of two numbers. 12:05:53 *excuse my ignorance here* 12:06:07 kk 12:06:34 So you can enforce bounds on a variable with them (I do this in VIBE): x @ 0 MAX 63 MIN will always guarantee the X coordinate on the stack is between 0 and 63, inclusive. 12:08:14 * kc5tja does intend on exposing the x86's architecture, but I'm just hesitating on the flags in particular. It seems like a dangerous pit to expose them, since the programmer will rarely know which Forth words affect which CPU flags. I think it's best if IF compiled "OR EAX,EAX JZ ..." instead of just a raw JZ. 12:09:15 Then -IF, if you really needed it, could be written "TEST EAX,$80000000 JZ ..." 12:10:24 i like this, since or eax, eax is 09C0, so i could use my 4, word ;p 12:11:36 or do the job, no? 12:11:56 Or do what job? 12:12:09 if theres a -, or will set the sf 12:12:42 ha if -if is the carry 12:12:45 Ahh, I see what you're talking about. The sentence was written as an imperative question, so I was confused. 12:12:51 Yes, OR will set the sign flag. 12:15:01 for the carry, better to use add eax, 0 12:15:08 since 0 can be encoded as byte 12:15:23 The carry flag isn't set by add eax,0 -- it'll be clear every time. 12:15:32 It also won't be set by OR. 12:15:44 doh 12:15:46 ;p 12:16:22 The only reliable way to set the carry flag I know of is with the shift and rotate instructions. 12:16:48 like rotate eax, 32 12:16:50 Oh, and the STC and CLC instructions... :) 12:16:52 ? 12:16:58 I don't think that works. 12:17:15 I don't have the IA-32 instruction reference in front of me, but the carry bit is set only for single-bit shifts/rotates. 12:21:50 anyway for me the best conditionals are the "skip next instruction" ones 12:22:10 i would like this feature to appear in my forth 12:22:31 since on x86 instructions are not always the same length its problematic 12:23:09 If building your own hardware, that sort of thing would be relatively easy to put in, too. :) 12:23:41 Although, maybe not so with MISC chips. 12:23:47 Definitely with RISC though. 12:23:57 the calls are longuer... i have a solution 12:24:15 have a hardware instruction for my "define" mechanism 12:24:39 MISC instruction packets also tend to be variable length -- 1 word for the packed instructions, and N words (where 0 <= N <= X, where X is the maximum number of instruction slots per instruction word) of immediate data. 12:25:11 for litterals its trickier 12:25:22 but at least i have a trick for calls ;p 12:25:35 Well, on x86, a call is just 5 bytes long. 12:27:30 That much is pretty much a constant in 32-bit protected-mode software. :) 12:27:48 that why i wanted my 0? to skip 5 bytes if the condition is false 12:27:49 Unless you are making a far call, in which case it is 7 bytes long. But that'll never happen in Forth code. 12:27:55 * kc5tja knows 12:28:47 in pmode, i use flat memory allocation so no need for far call, except to enter pmode 12:29:31 For Dolphin, I was considering using a far call to invoke system services, because it's faster than using INT. 12:29:58 Unfortunately, it makes writing interrupt management software more difficult than it needs to be then. 12:30:06 I ended up going back to using INT. 12:36:31 conditionals are now defined inmy system as: 4, "09C07505" 12:36:58 would be easy though to make that 05 be dynamic.. 12:37:18 * kc5tja nods 12:43:30 Right now, though, I'm busy trying to get FS/Forth to compile a simple hello world application under Linux. I was going to go with a simple console environment, but that's looking to be awfully harder than necessary. 12:43:51 I'm probably going to switch to using SDL -- it's more up-front work, but the input/output model is substantially easier to get working right. 12:45:01 It's a pity that I would have to resort to this kind of devilry with Forth -- Linux makes input and output so abominally horrible and god-awful complicated that it's not funny (well, for the case of input at least; output is usually pretty easy, as long as you talk directly to the kernel, or call some libc function). 12:45:35 I would even argue that it'd be easier to just skip the Linux step and go straight to raw hardware from the get-go. 12:45:58 But the problem with that solution is I'd be constantly dual-booting between Forth and Linux. 12:46:01 =) 12:46:13 why not rewrite linux in forth? 12:46:15 ;pp 12:46:24 Going native hardware is something I want to do eventually, but having a business to run, I do need certain supporting applications which Linux provides right now. 12:46:42 CrowKilr: Because (a) it wouldn't work, and (b) it'd be slower, and (c) why??? 12:46:50 It wouldn't solve a thing. 12:47:38 i knew its stupid newbish thing to say 12:47:53 but I thought maybe 12:48:35 simplificating things could be achieved 12:48:43 like that i/o portion 12:48:51 No it wouldn't. 12:48:56 but i never programmed in linux so i dont know what im talking about 12:48:58 ;p 12:49:02 Linux depends on its console architecture's complexity to function. 12:49:34 Applications for Linux expect to see a nice, cooked, ASCII stream that is line-oriented instead of interactive. 12:49:46 They expect to ioctl() and tcsetattr() when they want to go into RAW mode. 12:50:35 Then there's the issue with X Window System -- XFree86 is horribly non-trivial. 12:50:46 one of the things that makes me laugh about linux is in the 2.6 they're gonna implement finally a 0(1) scheduler... why not from the start? because linux wanted to imitate his elders ;o) 12:51:15 Like that makes a big deal anyway. 12:51:25 if linux wpould be leaner, cleaner and simpler, the world would be a way better place to code in 12:51:27 AmigaOS used an O(1) scheduler using only ordinary linked lists. 12:52:01 And heaps are even faster. 13:02:08 --- quit: TreyB (Read error: 113 (No route to host)) 13:43:17 Hmm ... I think I've finally decided on how I want to structure the dictionary. 13:44:46 how? 13:44:49 * kc5tja is going to use a set of three parallel arrays. 13:45:10 Each element of the first array will contain the word length and the first three characters of the word's name. 13:45:37 Each element of the second array will contain characters 4 through 19 of the word's name. 13:45:56 Each element of the third array will contain the CFA for the word. 13:46:41 * CrowKilr dont understand clearly the second array's implementation 13:47:11 typedef unsigned long uint32; 13:47:20 uint32 length[1024]; 13:47:26 to get word x, youll have to add each preceding word length bytes? 13:47:39 huh? 13:47:46 characters 4 to 19 13:47:58 I'm trying to explain, and you're second-guessing me as I try. 13:48:06 kk 13:48:11 sorry for interrupting 13:48:15 uint32 length[1024]; 13:48:34 uint32 name[3][1024]; 13:48:37 uint32 cfa[1024]; 13:49:13 Each entry in length[] contains the length and the first three characters of the word's name. 13:49:24 So comparing the length and the first three characters takes a single 32-bit compare. 13:49:59 Each element of the name array consists of 4 (I typed 3 above; that's a typo) 32-bit words. 13:50:12 Comparing the last 16 characters of the word's name takes only 4 32-bit compares. 13:50:44 The idea is to scan the dictionary using the length array first, because 1 compare is obviously much faster than 4. 13:51:07 More importantly, the elements of the length array are so close together that it makes substantially better use of the CPU's data cache too. So dictionary searches should be quite speedy. 13:51:56 However, it's possible to have words like, say, DROP and DROT -- both words would have (4,'D','R','O') appear in the length array. 13:52:24 In the event that a word's prefix and length matches, THEN the time is spent to compare the rest of the word's name in the second array. 13:54:00 I chose to make the second array's width 16 bytes because it makes better use of the data cache, I think. Having a non-power-of-two array width would create weird alignments in RAM, where some words might require two cache line fetches instead of just one. 13:54:48 Does it make more sense now? 13:54:54 yep 13:54:56 If not, I'll have to pseudo-code it for you. :) 13:55:49 I've considered using an 8-byte wide name array, which would give me 11 significant characters (8+3) instead of 19 significant characters. I'm not sure if that would cause problems for some people or not. 13:56:10 i find my 16 chars toplength ok 13:56:26 and those are ascii chars too 13:56:35 * kc5tja is using pure ASCII too. 13:57:02 If I wanted to fit more characters, I could switch to a 6-bit encoding like Chuck uses. But, I consider that more trouble than it's worth. 13:57:10 im using ascii so one can edit my code in an hex viewer 13:57:19 It's actually easier and probably a bit faster to just use more memory for a wider table. 13:58:28 See, now if I used true Huffman encoding, and I used a 19-byte space for storing the word's name, I could fit a maximum word length of 152 characters. :-) 13:58:50 Since 'e' would be the most frequently used letter in the English language, it'd have an encoding only one bit long. :D 13:59:21 But I'm not that sadistic. :) 13:59:34 ang qu could have a common encoding 13:59:37 and* 14:00:04 g, if the following byte is one then a u goes in automatically 14:00:10 bit* 14:00:11 lol 14:01:25 for editor design 14:01:25 That's called adaptive encoding, and even a second order adaptive Huffman encoding would take so long to create that it'd not be worthwhile at all. The software is big, complicated, and horrifically slow, even for our modern processors. 14:01:38 kk 14:01:50 for editor design, i had an idea 14:02:07 if one would take words, and order them in zigzag fashion 14:02:20 like one's eyes dont do a carriage return to read 14:02:47 i tried to read with letters inverted, there's a program for that on sourceforge 14:02:48 Bidirectional support? I tried that once. I got severe headaches from it. 14:02:52 lol 14:03:09 Seriously. 14:03:22 I got a migrane attack after trying it for a brief time. 14:03:32 I won't be doing that again. 14:03:37 I read words, not letters most of the time, so just inverting words could work 14:03:50 I read words too. 14:03:59 You have to with English. 14:04:33 For example, the word have can be pronounced have or haff, depending on context (and both have the same meaning). 14:04:47 In the case above, it's pronounced "haff two". 14:05:07 But in I have the book, it's pronounced have. 14:05:41 haff two? why? 14:06:07 Because that's how you'd say it in everday language. You could use the proper "v"-sound, but it just sounds awkward. 14:06:17 like in linking ssss between words 14:06:18 ? 14:06:23 * kc5tja nods 14:06:27 ha k ;p 14:06:54 But this raises the question of, how do you pronounce 'haff?' In English, the letter A has over 16 different identifiable sounds!! 14:07:23 All are related, of course, and all sound kinda sorta the same, but they are quite different. 14:07:36 And of course, they -- a clear case of an "A" sound without "A" ever appearing in the word. 14:07:54 * kc5tja sighs 14:07:58 I hate English. :D 14:08:04 lol ;p 14:08:43 WHo doesn't? 14:08:56 The British. :) 14:09:48 Here in Quebec, it's THE place to hate english people lol youll find lot of drunken buddies to beat the crap out of english speaking persons after a night at the bar ;p 14:09:51 Not the kids trying to learn how to spell it, heh. 14:09:57 Heh. 14:09:59 those hits happen all the time along the border ontario-quebec 14:10:18 If I even go to Canada, I'll stay well out of the French part! 14:10:33 especillay at St-Jean Baptiste, Quebec's "birthday" party 14:10:43 CrowKilr: It's a pity, too, because Quebec used to be very accomodating of English speakers, before someone in its government got a stick up their ass. 14:11:12 here, almost everyone got bilingual habilities 14:11:22 those who dont get somewhat angry i guess ;p 14:11:31 What's a hability? 14:11:38 You mean ability? 14:11:51 in french its habileté ;p 14:12:01 it was a concealed joke 14:12:14 (by my unconscious that is ) 14:12:15 ;p 14:12:16 Well, I saw it as a conjoining of two words: habit and ability. 14:13:32 * kc5tja remembers dealing with people from Quebec back when I was going to Clarkson University. 14:13:45 They were the meanest, rudest people I've ever dealt with at the time. 14:14:05 They thought they ruled the store -- they kept throwing things on the floor because they didn't like our prices. 14:14:28 ... 14:14:38 Eventually, our manager told them off, "We don't know proper store etiquette in Quebec, but this is America, and if you don't like it, leave." 14:14:41 They left. :) 14:15:08 I almost had the urge to punch their lights out myself. 14:16:36 ever since then, I've been highly, highly, highly suspicious of anyone who spoke French. This includes the Cajun-folk down in New Orleans in our country. I just don't trust them upon first meeting them. 14:16:59 That was my first time dealing with anyone from another country who didn't also speak English. 14:17:34 I wish I could say it was a positive one. 14:18:46 But, anyway, this is getting pretty wildly off the subject. :) 14:18:53 ;p 14:20:12 since I'll search words at edit time, I wont use anything fancy for a dictionary 14:20:17 probably linked list 14:29:28 --- quit: a7r (Read error: 104 (Connection reset by peer)) 14:30:30 * kc5tja nods 14:31:18 Hmmm, I came up with an incredibly elegant set of words for creating a new dictionary entry. Searching it remains to be seen though. 14:34:45 OK, I have to shower. 14:34:47 back in a bit. 14:48:49 --- quit: CrowKilr (""I'll be back"") 15:00:33 back for now. 15:03:00 :) 15:03:42 Well, we have a D&D game at 4 to go do, so I'll probably leave in about 30 minutes, I'm guessing. 15:03:47 Depends on my roommate, since he's driving. :) 15:05:39 I wonder if I show my dictionary scheme to Chuck Moore, if he'll get all nostalgiac(sp?) about the count/three-letter technique for storing dictionary entries. :) 15:06:09 --- join: TheBlueWizard (TheBlueWiz@ip-207-198-223-198.nyc.ny.fcc.net) joined #forth 15:06:09 --- mode: ChanServ set +o TheBlueWizard 15:06:12 hiya all 15:06:30 re TheBlueWizard 15:06:52 hiya kc5tja :) 15:06:52 Hi 15:06:57 hiya Robert 15:09:32 * kc5tja made an "executive decision" with FS/Forth today -- I figured out how I'm going to structure each vocabulary. 15:10:04 * TheBlueWizard gasps ;) 15:10:19 Each vocabulary will consume a fixed chunk of 24K of memory. 15:10:30 It is broken up into three parallel arrays. 15:10:49 The first array is the called the "length" array, and contains 1024 32-bit elements. 15:11:02 The second array is called the "name" array, and contains 1024 128-bit elements. 15:11:13 The third array is called the "cfa" array, and contains 1024 32-bit pointers. 15:11:54 The length array contains two subfields: an 8-bit name length, and the first three characters of the word's name. 15:12:07 The name array is all name. 15:12:20 So, all total, that amounts to 3 + 16 bytes dedicated to the name of a word, or 19 bytes. 15:12:34 So, the first 19 characters are significant in a word's name. 15:13:16 The reason for the relatively weird layout is I'm optimizing for cache locality. 15:13:37 hmm....is that designed to allow for fast hashing? 15:13:48 Since the length array is going to be accessed much more heavily than the name array will be, it's optimized to maximize the utility of a single 32-bit compare, and to pack as much data in a cache line as possible. 15:14:41 If and only if there is a potential match in the length of a word and the first three characters is the second array compared. The second array takes 4 32-bit compares, and since each 32-bit chunk is contiguous, it is optimized for cache locality too. :) 15:14:55 There is no hashing in filling or searching the dictionary. 15:15:38 Dictionary management is kept dead simple. 15:16:58 hmm...it would be nice to compare the performance against the traditional way...but that may require some work.... 15:17:12 What traditional way? 15:17:33 Using linked lists? 15:17:41 This is going to be several orders of magnitude faster. 15:18:06 All comparisons are done using full-sized word comparison instructions. 15:18:20 And scanning the dictionary table for a potential match will be extremely fast. 15:18:34 yeah, linked listing...or more popular hashing ones 15:18:58 It might be slower than hashing if I ever accumulate more than several hundred words. 15:19:26 But if that ever occurs, I have a wonderful solution: re-order the table entries so that the most frequently accessed words are at the top of the table. 15:19:39 ah...I see :) 15:19:59 But that will never be necessary in my system. 15:20:44 terve TheBlueWizard! 15:21:31 moi mur! :) 15:21:39 In fact, reordering the table elements ruins one of the greatest simplicities this system allows: recycling dictionary space by just updating a couple of pointers. 15:22:17 Otherwise, everytime I "forget" something in the dictionary, I have to walk the tables (in their entirety) and flush all the elements that have been forgotten. Still reasonably fast, and not hard to do. But it IS extra work. 15:23:09 hmm 15:24:36 Anyway, that's my daily innovation for FS/Forth today. :) 15:25:21 * kc5tja will have two such vocabularies, though not necessarily the same size (24K permits 1024 dictionary entires; I might go 6K for the COMPILER vocabulary). 15:25:22 :) 15:26:00 Also, implementing FS/Forth for Linux is not going to be easy. Indeed, it's going to be exhorbitantly hard. 15:26:26 * kc5tja is considering just writing FS/Forth using SDL, like XcolorForth, and treating it as if I were writing directly to the framebuffer of the video card. 15:26:47 Otherwise, if I wanted to do a console application, I'd have to set console parameters, which wouldn't work if I were writing for X11, etc. 15:30:38 I'd like to be able to support a native Linux interface if I could, so I'm still researching how exactly to do this. 15:42:13 --- quit: clog (^C) 15:42:13 --- log: stopped forth/03.07.19 15:42:22 --- log: started forth/03.07.19 15:42:22 --- join: clog (nef@bespin.org) joined #forth 15:42:22 --- topic: '#Forth site: http://forth.bespin.org || 'pure' linux forth coded in asm: http://isforth.clss.net || Also remember to check out Jeff Fox's articles, located at http://www.ultratechnology.com/dindex.htm' 15:42:22 --- topic: set by thin on [Sun Jun 08 10:42:15 2003] 15:42:22 --- names: list (clog @TheBlueWizard @kc5tja flyfly RO|_ mur Fractal XeF4 ianni skylan Robert onetom @ChanServ) 15:44:06 I440r may have some knowledge regarding this "native" Linux interface... 15:46:49 gotta go...bye! 15:47:09 --- part: TheBlueWizard left #forth 15:47:30 Ditto -- tiem for the game. 73 15:47:38 --- quit: kc5tja ("THX QSO ES 73 DE KC5TJA/6 CL ES QRT AR SK") 17:31:02 --- quit: mur ("MURR! save the http://rainforest.care2.com/ (click url there)") 17:54:08 --- join: CrowKilr (CrowKilr@HSE-Windsor-ppp251169.sympatico.ca) joined #forth 18:10:16 --- quit: CrowKilr () 18:33:43 --- join: TreyB (~trey@cpe-66-87-192-27.tx.sprintbbd.net) joined #forth 21:30:00 --- join: a7r (~a7r@206.72.82.135) joined #forth 21:30:40 what up 22:11:26 --- quit: a7r ("Client exiting") 22:12:01 --- join: a7r (~a7r@206.72.82.135) joined #forth 22:31:21 so I got Ficl working with SDL today 22:37:53 --- quit: RO|_ (leguin.freenode.net irc.freenode.net) 22:37:53 --- quit: onetom (leguin.freenode.net irc.freenode.net) 22:38:05 --- join: RO|_ (~RO|@pD9E59674.dip.t-dialin.net) joined #forth 22:38:05 --- join: onetom (~root@cab.bio.u-szeged.hu) joined #forth 23:59:59 --- log: ended forth/03.07.19