00:00:00 --- log: started forth/03.07.15 00:00:54 At any rate, Chuck's method of recycling dictionary space is overwhelmingly superior, I've found (remember, I've used PygmyForth [cmForth clone], gforth [pure ANSI Forth], and ColorForth -- ColorForth wins hands down). 00:01:25 The only thing it lacks is some means of restoring the previous MARK-point when some inner context is no longer needed. 00:02:10 inner context? 00:02:16 While not a problem for Chuck, it is a problem for what I want to do. 00:02:27 XeF4: Overlays within overlays. 00:02:56 kc5tja: : green ." ESC[0;32m" ; 00:02:57 : cyan ." ESC[0;36m" ; 00:03:34 * kc5tja nods to onetom 00:04:43 kc5: so you want to compile some temporary stuff to the dictionary and then forget it without losing other MARK points? I thought you could do that.. I suppose I don't understand what you want to do 00:05:20 XeF4: Consider my text editor. 00:05:43 I want my editor to exist as a self-standing application; hence, the first word its source executes is EMPTY, to reset the dictionary to its default state. 00:06:01 After loading the core definitions, it executes MARK, to set the empty-point for editor-specific overlays. 00:06:30 So when I execute the 'd' key, for example, it loads the delete-key block, which first EMPTYs to unload the previous editor overlay, and compiles its own definitions. 00:06:41 So, through time, what we see is this: 00:06:43 cccc 00:06:45 cccceeeeeee 00:06:49 cccceeeeeeeeddddddd 00:06:56 cccceeeeeeeerrrrrrr 00:07:00 cccceeeeeeeffffff 00:07:06 cccc 00:07:16 where 'd', 'r', and 'f' are different editor overlays. 00:07:32 'c' is the Forth core environment, and 'e' is the editor code. 00:08:05 Ignore the extra 'e' in the middle two examples: I can't count. :) 00:08:49 i was wondering about the very same problem last days 00:09:26 kc5: then I don't see the problem unless you want to do like ccceeerrdddff and then drop r without disturbing d and f 00:09:31 but theres nothin problematic w the above strucure, right? the ans MARKER is just suitable 4 it 00:09:32 The only requirement is that the editor must quit gracefully -- it must execute UNMARK (or whatever) to restore the previous MARK point. 00:09:58 XeF4: ColorForth doesn't support his mode of dictionary use. 00:10:09 kc5tja: flux does 00:10:10 XeF4: ColorForth supports MARK and EMPTY, but not UNMARK. 00:10:44 er, right. 00:11:09 onetom: The problem with MARKER is very simple: it's the same thing as FORGET. 00:11:24 It not only recycles up to the marker word, it also REMOVES the marker word. 00:11:37 but the markers are stored SOMEWHERE, so UNMARK oughtn't be more than a half dozen or so words, yes? 00:11:39 This means you MUST redefine it post-haste. 00:11:57 XeF4: MARK in ColorForth updates a global variable. There is no linked list of marks. 00:12:13 no voi perkele 00:12:22 XeF4: I'm sorry? 00:12:42 kc5: yes, that's silly. 00:13:32 could u define mark unmark empty marker & forget? 00:13:35 just roughly 00:13:48 onetom: I truely don't understand that last question. 00:13:57 : mark dp @ markpoint ! ; 00:14:45 : empty markpoint @ dp ! ; 00:14:46 : marker create lastxt , does> @ dp ! ; 00:15:25 : forget ' dp ! ; 00:15:30 See, marker has that fundamental flaw in it -- you need to know what to call the marker word, and it must be parsed from source, which precludes its use in a colon definition. 00:15:58 That, AND it removes the marker word in the process. 00:15:59 not in colorforth 00:16:01 Not useful. 00:16:13 onetom: marker doesn't exist in ColorForth. 00:16:19 editormarker 00:16:25 kc5tja: how about something like : mark here markpoint dup @ , ! ; assuming you never execute mark inside a definition 00:16:46 that way you can just follow the chain of markers back 00:17:13 XeF4: I'd use that, but I'd augment it with a singly-linked list of marks, just in case the dictionary pointer got weirded out somehow. 00:17:16 roughly in b&w4th : marker dp @ literal postpone dp postpone ! ; 00:17:55 onetom: That makes no sense. You're executing marker at compile-time, but with run-time semantics. 00:18:29 XeF4: That's basically how I was going to do it in FS/Forth, actually. 00:18:49 kc5tja: hmm... let me think... bte why should i compile a forget ? 00:19:32 onetom: You generally don't. But I've had need in PygmyForth for compiling FORGET, because I'm *utterly* sick and tired of having to do this: 00:19:36 s/bte/btw/ 00:19:39 : EMPTY 1000 LOAD ; 00:19:41 ( block 1000 ) 00:19:46 FORGET _EMPTY_ 00:19:51 : _EMPTY_ ; 00:20:26 It's a waste of a perfectly good block, and it requires an extra disk access everytime I execute EMPTY. 00:21:03 And heaven forbid I make the mistake of executing EMPTY before actually defining _EMPTY_ for the first time. Pygmy does NOT like that. 00:21:04 :) 00:21:05 huh... i cant understand. where do u use that empty whats defined as 1000 load? 00:21:30 onetom: One question or sentence at a time, please. I'm having a hard time understanding you. 00:21:36 * XeF4 must vanish now. 00:21:43 laters, XeF4 00:21:51 flux has a very good example of the above mentioned technique, and its absolutely not inconvenient 00:21:59 : editor 7 load ; 00:22:05 (block 7) 00:22:20 colored marker 00:22:22 ... 00:22:26 colored 00:22:48 I use EMPTY in my target compiler. 00:23:10 And I'll start using it in VIBE to implement deeper command hierarchies. 00:24:09 * kc5tja doesn't like that approach. 00:25:33 The flux method just doesn't make logical sense to me. 00:25:39 why? 00:26:20 I expect dictionary recycling to occur at the beginning of a program, not at the bottom. 00:27:14 why? 00:27:32 Because that's where my mind conceptually wipes the slate clean. 00:28:27 hmm.. it doesnt seem a very good practice 2 me 00:28:43 a module should cleanup after itself 00:28:49 * kc5tja points out that the original ColorForth didn't have MARK and EMPTY; it had REMEMBER, which is MARKER in ANSI terms. He switched away from it. :) 00:28:56 its a cleaner concept 00:29:55 Nothing . . . let me repeat this . . . NOTHING in Forth cleans up after itself. 00:30:04 Forth is just too primitive. :D 00:31:43 If I were to write my VIBE code like that, I'd have the following structure: 00:31:49 MARKER vibe 00:31:52 ...blah blah... 00:32:19 scr ! ed vibe 00:32:54 I suppose that works, but I'm just not happy with it. 00:33:58 why? 00:34:08 whats wrong w it? 00:34:48 * kc5tja just isn't happy with it. 00:35:07 It doesn't follow from the way I think. 00:35:39 When I see "EMPTY" in the source code, I know, right than and there, that it's actively resetting the dictionary to a known-good state. 00:35:53 MARKER vibe is just noise to me. 00:37:26 empty could also b considered a noise, coz its the default state when u start ur program... 00:37:41 The other thing is the top-level of the editor is "scr ! ed" -- that's it. That is the true end of the editor. Placing "vibe" after that is ... wrong to me. 00:37:53 onetom: Not always. 00:38:12 & what if its not? 00:38:13 It certainly is if you run the editor from a fresh boot of the system. 00:38:20 EMPTY resets the dictionary state. 00:38:25 Like "NEW" in Basic. 00:38:34 NEW 00:38:39 10 PRINT "HELLO WORLD!" 00:38:42 20 GOTO 10 00:38:47 RUN 00:38:52 In Forth: 00:38:53 EMPTY 00:39:08 : hw BEGIN ." Hello world!" CR AGAIN ; 00:39:09 hw 00:40:39 yes. and? 00:41:11 What do you mean "and?"? You're the one who asked me for my rationale. I gave it. 00:41:20 The ball is in your court now. 00:41:45 u can have empty, but w the modules, its a more convenient 2 make the selfcleaning 00:41:55 But it's *not*. 00:42:07 I would argue that it's different, but it's VASTLY more convenient to use EMPTY. 00:42:31 Consider how ColorForth works: when running a program, it wedges itself into the system state -- it sets up keyboard handlers, display tasks, background tasks, etc. 00:42:47 but empty is a hardwired thing isnt it? it always resets 2 the same position 00:42:51 When dropping to the command-line, these tasks are still running! 00:43:14 onetom: No. You can change where EMPTY empties to by using MARK. 00:44:08 aham. look: 00:44:23 : module mark ; : end empty ; 00:44:30 module ( editor) 00:44:31 ... 00:44:32 end 00:44:49 * kc5tja cries!!!!!!! 00:44:52 You just don't get it. 00:44:52 isnt it clear? 00:44:57 YES, it's clear. 00:45:03 yeah, that must b the problem :) 00:45:04 NO, it's not why I'm objecting to MARKER. 00:45:49 The point is, I can preemptively *terminate* a running program at *ANY* time, and LOAD another program block at a WHIM. 00:45:57 EMPTY is the **ONLY** solution that can gracefully handle that scenario. 00:46:00 btw, im gonna ask u a related question, so u can cry but dont run away plz. not yet @ least ;) 00:46:43 aham... 00:46:52 Please don't "ahem" -- it's very rude. 00:47:11 flux solve this problem w branches, i suppose 00:47:26 All Forths have branches. 00:47:32 I don't see hwo this is at all relavent. 00:47:46 kc5tja: its not ahem, its aham, what means i c i got it 00:48:09 its similar 2 the hungarian ühümm ;) 00:48:30 kc5tja: :) not that branch i was refering 00:48:53 onetom: Well, still, in English, it's rather rude. :) 00:49:06 It's a signal of indignation. 00:49:09 i cant fully explain how does flux branches work, but let me try: 00:49:14 OK 00:49:33 u say sg like : ' forth branch 00:49:57 no. hold on, im gonna chk the sources 00:50:50 It looks like a computed goto to me. 00:51:25 no no no, branch is a dict manipulation word like mark & things like that 00:51:27 hold on 00:53:07 http://sec.dunasoft.com:9673/wiki/forth/source.html 00:53:14 wget & links it! 00:53:27 & find branch 00:53:31 I just googled. 00:53:37 It's basically exactly the same thing as MARKER. 00:54:03 not really 00:54:05 The only difference is it doesn't physically recycle dictionary space. 00:54:12 it accepts an address 00:54:43 and limits searchg 4 word 2 definitions defined before that point 00:55:27 and limits searching 4 words 2 the definitions defined before that address 00:55:44 OK, but that doesn't solve the aforementioned problem. 00:55:46 Consider: 00:55:50 : ENDLESS BEGIN AGAIN ; 00:55:52 ENDLESS 00:55:55 * onetom considers ;) 00:56:00 yup 00:56:09 In nearly every Forth system I've used, ENDLESS will never, ever return. Only a reboot will break the loop. 00:56:16 (or some similar drastic action, like kill -9) 00:56:41 But in my Forth environment, the user interface always has priority over the running application. 00:56:51 F-keys are used to switch between applications at the user's whim. 00:57:19 If the above code was running, hitting F1 would *immediately* terminate the execution of ENDLESS and load a block containing the command-line interface for FS/Forth. 00:57:29 So, if we have: 00:57:32 MARKER endless 00:57:35 : ENDLESS BEGIN AGAIN ; 00:57:39 ENDLESS endless 00:57:50 we'd waste dictionary space -- the marker word never, ever, ever gets executed. 00:57:54 However: 00:58:04 if we precede each program with EMPTY, it is not an issue. 00:58:11 so, u cant continue a stopped task? 00:58:43 I just told the foreground task to switch to another program. The task never stopped -- it's still running -- in a different program. 00:58:43 u just have 2 exit from your commandline interface so u get back 2 ENDLESS 00:58:57 uhhh 00:59:02 uhh 00:59:04 uhhh 00:59:09 second.. 00:59:15 let me understand 01:00:33 i should see the full example 01:00:48 what 4th environment r u talkin about? 01:00:53 Do you understand how a CPU's cache works? 01:00:57 what os does it requires? 01:01:01 Does it matter? 01:01:06 sure 01:01:10 ColorForth is one, FS/Forth will be another when I'm done with it. 01:01:11 id like 2 try it 01:01:23 Chuck Moore's ColorForth is a real-world example. 01:01:36 I use XcolorForth under Linux. 01:01:41 There are variants available for Windows now too. 01:02:48 i use linux 01:04:04 * onetom tries XcolorForth 01:07:14 You're going to be in for some serious culture shock, especially if you're not used to Chuck's 27-key keyboard. :) 01:08:22 really, it knocked me off ColorForth 01:08:34 ayay... 01:08:51 i managed to run Win version, but i was compleetly lost at kbd 01:08:52 it has ruined my X 01:09:25 onetom: ??? 01:09:26 it doesnt runs remotely :) 01:09:30 run 01:09:37 but locally it works 01:09:51 Yes, it uses SDL for frame buffer access. 01:10:04 me c 01:10:08 Serg_Penguin: I like it actually. But then, I love Dvorak keyboard layout. 01:14:41 my thingers stuck to qwerty 01:15:04 now i play w/ speccy emulator, and have to look up the chart all the time 01:16:27 kc5tja: i cant start xcf in fullscreen, so i cant see the commandline 01:16:54 could u give me a kickstart 2 chucks4th? 01:17:32 onetom: Do you have the latest SDL libraries installed? 01:17:39 thinks so 01:17:43 i use woody 01:17:54 What screen resolution are you running at? You may have to edit the source and recompile to get a compatible screen size. 01:18:02 1024 01:18:05 It's set up for 1024x768 by default. 01:18:11 brb - food 01:18:24 but the windowmanagers taskbar.... 01:18:34 OK, I would reduce the size of the framebuffer by a small amount then. 01:18:42 On my system, I use 1000x700, for example. 01:19:01 k 01:19:14 Edit main.c -- there'll be a line that calls SDL_SetVideoMode(). 01:19:30 Change the resolution figures there. 01:19:55 :( it segfaults... :/ 01:20:00 Then, once that's done, edit the color.s file -- there will be two assembler macros called hp and vp, which have similar meaning. 01:20:12 What segfaults?? 01:20:21 ok 01:20:34 i havent changed hp vp yet 01:20:42 Ahh, that might be why. 01:20:59 Try that, and if it segfaults, then I'd talk to the folks on the ColorForth mailing list. 01:22:18 works, thx 01:22:34 * kc5tja wipes sweat off his forehead... *whew* :) 01:22:37 I was worried there for a minute. 01:23:36 gosh, im using hungarian kbd layout :) 01:26:20 It's actually Dvorak layout. 01:28:21 ok, i was just afraid it doesnt handle the keys by "scancode" 01:28:29 but its okay 01:28:42 * kc5tja nods 01:28:52 * onetom is lookin 4 chuck kbd tutorial 01:29:08 Yeah, it takes some getting used to. 01:30:17 but 01:30:27 until i master the layout 01:30:40 how would u solve the following problem 01:31:05 id like 2 build some words programmatically 01:31:22 & after that id like 2 forget the builder program 01:31:35 consider the following example 01:33:26 : cycles ( n-) create [ 4 ] literal compile * compile do-something ; 01:33:33 5 cycles 5c 01:33:40 20 cycles 20c 01:34:05 & id like 2 forget the generator word: cycles 01:34:19 just leaving the generated 5c & 20c words 01:35:55 You can't. 01:36:49 But you can do something similar with compiler words: 01:36:56 (using punctuation instead of colors) 01:36:58 MACRO 01:38:09 : cycles ( n- ) [ 4 ] literal compile * compile do-something ; 01:38:10 FORTH 01:38:19 : 5c [ 5 ] cycles ; 01:38:24 : 20c [ 20 ] cycles ; 01:38:34 But, then, you still have the defining word lying around. 01:38:42 SO, to fulfill your precise requirements, you can't. 01:38:43 yup 01:38:48 The definer word has to be there, always. 01:38:55 hm... 01:39:36 i was thinging of a separate marker 4 the forth & the macro "wordsets" 01:40:07 but probably i dont wanna define just macros 01:41:26 ColorForth imposes some pretty severe word count limitations too. Max: 128 defined macros, and 512 Forth words. :) 01:41:46 You can change that by recompiling of course, but that's how it's configured out of the box. 01:41:50 nice 1 :) 01:46:45 Well, I need to get to bed. 01:46:48 1:49 AM here. 01:46:52 haha! the RX-7 is victorious 01:46:59 a7r: What's up? 01:47:08 just went racing 01:47:16 At this god-awful hour of the night? 01:47:23 beat up on my friend's 2nd-gen eclipse 01:47:37 :) 01:47:48 kc5tja: good night&thx 01:48:54 So you're still not controlling the boost by controller yet -- you're still just collecting data, right? 01:51:20 Anyway, we can chat tomorrow. I have to get to bed. 01:51:27 --- quit: kc5tja ("THX QSO ES 73 DE KC5TJA/6 CL ES QRT AR SK") 01:58:39 --- quit: Serg_Penguin () 03:56:19 --- quit: Robert (Read error: 104 (Connection reset by peer)) 03:58:59 --- join: Robert (~snofs@h126n2fls31o965.telia.com) joined #forth 04:14:40 --- quit: a7r (Read error: 110 (Connection timed out)) 04:19:55 --- join: Serg_Penguin (Serg_Pengu@212.34.52.140) joined #forth 04:45:24 --- quit: Serg_Penguin () 05:11:23 --- join: Serg_Penguin (Serg_Pengu@212.34.52.140) joined #forth 05:27:30 --- join: w1k1_ (~w1k1@pD9EE18AE.dip.t-dialin.net) joined #forth 05:36:02 --- quit: w1k1 (Read error: 60 (Operation timed out)) 05:43:52 --- quit: Serg_Penguin () 05:56:07 --- join: mur (murr@baana-62-165-186-227.phnet.fi) joined #forth 06:02:42 --- join: Robert__ (~snofs@h126n2fls31o965.telia.com) joined #forth 06:03:38 --- quit: Robert (Read error: 60 (Operation timed out)) 06:42:28 --- nick: Robert__ -> Robert 07:09:33 --- join: flyfly (~marekb@ip164.ktvprerov.cz) joined #forth 07:30:00 --- quit: flyfly ("using sirc version 2.211+KSIRC/1.2.4") 07:32:26 --- join: xylzan (~root@bzq-200-115.red.bezeqint.net) joined #forth 07:51:39 --- quit: mur (Read error: 54 (Connection reset by peer)) 09:04:12 --- join: wossname (wossname@HSE-QuebecCity-ppp82077.qc.sympatico.ca) joined #forth 09:11:53 --- quit: xylzan ("xylzan has no reason") 09:24:11 --- join: flyfly (~marekb@ip164.ktvprerov.cz) joined #forth 10:04:24 --- join: mur (jukka@baana-62-165-189-64.phnet.fi) joined #forth 10:18:48 --- join: ASau (~asau@158.250.48.196) joined #forth 10:19:16 Dobryj veczer! 10:19:22 privet aleksei 10:19:45 what's the dorobla name of aleksej, like vanja is for ivan 10:19:45 ? 10:20:11 Ljosha. 10:20:31 sergei -> serjuska? 10:20:34 It's called "umen'shitel'no-laskatel'noje imja" 10:20:48 Serjozha. 10:20:56 near 10:21:04 no wonder i didn't remember the expression :) 10:21:18 Are you studiing Russian? 10:21:26 i was 10:21:31 been 2 years now, though 10:22:08 I remember. I mean, are you recalling your knowledge now? 10:22:47 A week ago I've found Czeck tutorial. 10:23:13 It's very interesting to read. 10:23:13 not really 10:23:17 ahaa 10:23:19 aga 10:23:22 gaf gaf 10:23:30 what was dog? 10:23:41 shto byl "gaf gaf" ? 10:23:42 :) 10:24:01 Especially in case when you're searching for Tatar one. 10:24:07 shto eto gaf gaf? 10:24:15 tatar one? 10:24:18 It's a dog, of course. 10:24:42 what's dog in russian? 10:24:59 i meant to ask po-russkij what's word for dog :) 10:25:06 Recently, I've run into one interesting discussion about Bulgaria (Volga one)... 10:25:08 not who says bark bark 10:25:09 :) 10:25:17 dog is "sobaka" or "pjos" 10:25:27 sobaka! da-da! 10:26:03 da, eto sobaka! sobaka snaju shto eto "gaf gaf"! 10:26:42 Now, when reading Caucasus map, I recall some Malqar words. :) 10:26:51 %) 10:27:40 shto bylo priglasenije? 10:27:46 excelent? 10:27:59 Knowing too many languages is very insteresting, now I see. 10:28:13 priglashenija? 10:28:19 Priglashenie = invitation. 10:28:23 ahhmmm 10:28:29 it just popped to my mind 10:28:41 2 years without russian does its tricks 10:29:17 Yes, you forget language faster than learn it. 10:29:52 what was party in russian? 10:30:04 what's invitation to party? 10:30:11 --- quit: Robert (Remote closed the connection) 10:30:18 knowing russian is actaully a bit useful 10:30:25 I try to find time for reading some german books, but can't. 10:30:33 you can understand quite ok slovak, checz and polish pages too 10:30:43 There's too many variants. 10:30:52 ? 10:31:00 Invitation to party can be: 10:31:31 a) priglashenije na veczer (also "veczjorka", rare word); 10:31:44 b) ... na prazdnik 10:32:23 Other variants are possible. 10:33:04 mur, You're quite a good liguist. 10:33:35 I know many people who can't understand how I read ceska and slovak. 10:35:10 Czech. "Ceska" is "Czech" in Czech. 10:35:55 --- quit: wossname () 10:36:00 Hm... 10:36:25 It seems that we have no straight equivalent of English "party". 10:36:54 veczer, eto harasho 10:37:11 OTOH, there is "sobranije" or "sborishche". 10:37:16 veczer is like "fest" 10:37:42 Fest is like prazdnik. 10:38:12 Veczer is more quite party. 10:38:21 It's like "a cup of tea". 10:38:33 ;) Or 10 cups. :))) 10:39:38 I've recalled one story I was told in train "Saratov--Moskva"... 10:40:04 --- join: wossname (wossname@HSE-QuebecCity-ppp81945.qc.sympatico.ca) joined #forth 10:40:08 saratov is in south right? 10:40:09 caucasia 10:40:13 or? 10:40:19 In Ivanovo region, in village, a man heard a phrase: 10:40:48 "O! Saratovskije prijehali. Sejczas czaj pit' budut." 10:41:03 Saratov is to south-east. 10:42:07 Saratov is just in opposite direction from Moscow than Leningrad. 10:42:17 St.-Petersburg. 10:43:34 what is czaj? 10:43:38 Tea. 10:43:42 yes 10:43:48 --- join: Robert (~snofs@h126n2fls31o965.telia.com) joined #forth 10:43:51 i had idea in brain that it coudl be tea or 7 10:44:05 "oh saratov went and tea came instead" 10:44:05 Privet, Robert! 10:44:27 robjushka! 10:45:54 "Oh. Saratov (men) has come. They are going to drink tea now, of course." 10:46:23 It is unable to omit unnecessary words in English. 10:46:33 saratovians 10:46:41 of course 10:46:41 It's the main difficulty for us. 10:46:46 i shoudl have paid more attention 10:46:53 (Russian accent. :) 10:47:07 Yes. Saratovians. 10:47:10 pit to drink 10:47:17 czaj tsai! 10:47:21 tsai! 10:47:21 yes! 10:47:26 now it makes more sense 10:48:01 It's too hard to transliterate Cyrillic into Latin. 10:48:21 Too little characters :] 10:48:50 how about kanji instead? :) 10:49:07 I can't understand how to transliterate "shch" better. 10:49:17 It's interesting idea. 10:49:31 hmm 10:49:33 Maybe I'll try to learn Kanji. 10:49:34 i have literation 10:49:36 here somewhere 10:49:44 kanji has only 200 characters :) 10:50:18 OTOH, what for do I need so many letters? 10:50:27 kanji has more than that :( 10:50:28 well 10:50:31 240 10:50:32 iirc 10:50:33 I'm pretty well with my 33/ 10:50:37 a few thousand 10:50:41 no 10:50:54 chinese iconograms have tens of thousands 10:51:02 IIRC, Kanji is phonetic. 10:51:02 but the pronounciation marks have only about 200 10:51:04 240 maybe 10:51:20 ah 10:51:23 kanji is but japanese and chinese use also iconographs 10:51:30 didn't know any were phonetic 10:51:41 kanji is used in names 10:51:46 and such 10:52:02 kanji is phonetic, but there are also similar iconographs as in china 10:52:37 IIRC, Japans transliterate 1 Kanji letter in 1-3 Latin ones. 10:54:31 It's a hell, I think. 10:54:38 i have finnish transliteration here 10:54:45 8 bits is not enough. 10:54:51 (pseudo cyrillic) = finnish letter 10:54:54 A = a 10:55:03 agh 10:55:07 nm 10:55:12 to many :) 10:55:49 I know such transliteration :) 10:56:04 "BCE HA MOPE!" 10:56:34 "CKOPO CE3OH..." 10:56:47 :D 10:57:55 :) 10:57:59 but B? 10:59:57 HEKOTOPbIE 6yKBbI HE |~|E4ATA|-OTCR u/\u O4EHb |~|/\OXO. 11:01:26 It's a known problem. Solution exists. 11:06:12 BTW, concerning non-Latin alphabets... 11:06:40 How many graphic Forthes do we have? 11:07:55 How do you think what operations should Forth support for graphics? 11:11:30 And how should we create console control words to be able to enter non-Latin symbols? 11:15:05 :) 11:15:21 OK. 11:15:27 Non-Cyrillic. 11:15:50 This way should be better. 11:17:02 :) 11:17:07 * mur is playing monopoly :) 11:17:26 |~| = j? 11:17:29 P 11:17:34 oh 11:20:58 You could always use UTF8 (or some other UTF encoding) and an appropriate font. 11:21:00 ASau: utf-8 symbols+stateful keyboard? 11:22:08 Do you propose UTF-8 as supplementary encoding or for constant use? 11:22:36 constant use 11:22:37 Constant use. 11:22:46 Then you go away. 11:22:52 what's wrong with it? 11:23:02 I don'y want my library to be 2 times larger. 11:23:13 and why would it be 2 times larger? 11:23:52 Hm. Beacuse you propose that each letter is prefixed with 04H, IIRC. 11:24:15 hmz, each cyrillic letter yes 11:24:27 er not 04h, I forget the prefix 11:24:33 but it is above 127 in any case 11:24:47 High bit set, plus length encoding.] 11:25:22 Maybe. That's for another unicode, IIRC. But this changes practically nothing. 11:25:45 problem with utf8 is that others dont use it iehter 11:25:47 UTF-8 is not a solution. 11:25:51 Period. 11:26:00 Feel free to create your own encoding, but don't expect anyone else to use it. 11:26:15 ASau: then what is a solution? 11:26:31 Ha! That's a problem. ;) 11:26:55 UTF8 works well enough for the Plan-9 folks. It worked well for BeOS, too. 11:27:38 Anyway, I don't think that many people here agree to spend 2 or even 4 times more space for any unicode. 11:27:48 Forth shoudl definately have support for 11:27:50 1. GUI 11:27:54 2. SDL etc 11:27:57 hires graphics 11:29:10 I don't know how many of Plan-9 people used non-Latin. 11:29:33 mur: but there are so many diverse graphics devices around 11:29:42 general interface 11:29:51 with some most common supported 11:29:57 new coders are hard to get 11:30:00 hard to standardize stuff like that unless you do like postscript 11:30:02 ISO or who there invented unicode made one great mistake. 11:30:04 if there are no gui or decent gfx support 11:30:31 why is unicode mistake? 11:30:40 XeF4, maybe ForthScript? ;) 11:30:50 ASau: I don't know what you want to use your system for, but for everything except writing code on (not for) the smallest embeded devices, some version of UTF will work just fine and not cost much in terms of storage. 11:31:46 TreyB, it is better to use KOI-7. 11:32:03 ASCII SI becomes LAT 11:32:14 ASCII SO becomes RUS. 11:32:29 Change LAT to UTF-8 11:32:51 AS: but I want to use other charsets than cyrillic and ascii 11:33:08 SI becomes UTF-8 11:33:14 SO becomes RUS. 11:33:29 Defaults is RUS, of course. It's a standard. 11:33:38 si/so? 11:33:39 ;) 11:33:46 Shift In/Shift Out 11:34:20 How do you like a standard solution? 11:34:23 ;) 11:34:48 trey: that was my immediate guess, but I've not mapped them to bit patterns 11:35:35 Use what you like. Since I've gone through the meat grinder with respect to font encodings on more than one platform already, I'll stick with UTF. 11:36:10 That's because you use Latin as a base. 11:36:52 You can't understand why UTF is not a solution, because UTF is (almost) sufficient for your needs. 11:37:06 No, because dealing with converting between encodings and pulling glyphs out of scalable fonts takes less work. 11:37:32 Why? 11:37:33 Also, I deal with asian devices, so I know about non-Latin stuff. 11:37:49 Cyrillic is almost always, Latin is exception. 11:38:42 russian has too many encodings :) 11:38:55 That's not a problem. 11:39:03 Do you really have such tight memory requirements that you require a primarily single-byte encoding for Cyrillic? 11:39:22 There is one system-wide encoding. Others are converted. 11:39:54 koi-8r is system wide? 11:39:55 Consider 4G library. 11:40:09 4G? 11:40:16 4GB 11:40:39 A library of what? 11:40:47 Books of course. 11:41:25 Or should I compress and decompress it always on the fly? 11:41:40 not evertthing must be changed right the wayt 11:41:46 That depends on your performance and storage requirements. 11:41:53 but unicode woudl be great way to udnerstand between the users 11:42:07 4GB fits, but 8GB does not. 11:42:29 well 11:42:35 Fits where? 11:43:19 E.g. 5GB partition for library. 11:44:00 If you think it is unreal, see http://lib.ru/ 11:44:04 it's not fixed there for ever 11:44:15 Consider a task to make local mirror. 11:44:19 memory capacity grows 11:44:51 I think library grows also. ;) 11:45:34 E.g. see wish-list on lib.ru 11:45:43 warez library? :) 11:45:59 russia is napster2003 11:46:00 That's not warez. :p 11:46:15 Books are public domain. 11:46:51 Or see lib.ru/LUKXQN/ for license :p 11:47:36 Just a joke: 11:48:21 In any case, I recommend UTF for the least pain in the long run. Decide for yourself :-) 11:48:22 "Each cracked program helps to fight capitalism." 11:48:38 :) 11:48:57 that is true 11:49:10 among left-wing anarchist 11:49:10 s 11:49:12 Of course, it's true. 11:49:12 :) 11:49:38 There is aphorism after Marina Cvetaeva: 11:50:15 "I know the truth, all other truthes, go away!" 11:50:36 :) 11:51:43 Just a hint. 11:52:50 Such tendencies are connected to our Russian and Tatar (Qipchak) traditions. 11:53:00 Or maybe connected. 11:53:43 I'll run into such "thoughts" during recent searches on the net. 11:54:23 :) 11:56:04 BTW, also such customs made Chechens not to create state up to 19th century. 11:57:02 All neighbouring nations had their states by this time. 11:58:50 So, your copyright laws, we can say, contradict our nation self-determination law. ;) 11:59:18 BTW, as for UTF-8. 11:59:40 Can anyone show me a Forth that uses it? 11:59:55 Preferrably open source. 12:00:39 It seems that Gforth is traditional 8-bit. 12:13:06 --- quit: TreyB () 12:53:36 --- quit: Robert (Remote closed the connection) 12:54:27 --- join: Robert (~snofs@h126n2fls31o965.telia.com) joined #forth 13:22:20 --- quit: ASau ("Toffee IRC client for DOS v1.0/b535") 13:24:54 --- quit: wossname () 13:58:02 --- join: a7r (~a7r@206.72.82.135) joined #forth 13:58:11 Hi a7r 13:58:19 sup Robert? 13:58:32 * Robert codes.. Forth! 13:58:36 Robert, :) 13:58:48 Hi mur 13:58:56 Have you ever coded anything? 13:59:03 In Forth or some other language... 14:03:22 ] 14:03:22 : x $3 + ; 14:03:22 [ 14:03:22 $2 x . 05 14:03:24 Yay! 14:03:41 That code was compiled and run at a (simulated) AVR microcontroller. :) 14:04:01 elite 14:04:04 what're you simulating with? 14:05:10 A Forth program. :) 14:05:13 dope. 14:05:18 Right. 14:05:31 we should get a Forth AVR toolkit together.. my AVR assembler is starting to work pretty well 14:05:47 .. although I haven't encoded every single opcode yet, but they're trivial to add. 14:05:52 I simulate my Forth VM for AVR with an IsForth program, which in turn runs a Forth system, which compiles and runs this code! 14:05:59 * Robert likes Forth :) 14:06:09 Oh, nice! 14:06:27 I thought about doing something like that but for the PIC. 14:06:34 I need to finish writing forward declarations of branch targets though, it's kind of a stick problem. 14:06:40 Since I think the AVR assembler is OK, but MPASM sucks. 14:07:37 er sticky 14:15:14 Hmm... my amperemeter (with the ground connection not connected at all) showed around 20-30 mA when I put the positive electrode to the antenna of my transmitter. 14:15:38 Does that mean that the average current is somewhere around that? 14:16:59 Hmmn.. and the voltage around 0.2 AC.. bleh. I guess this is a very bad way to measure things. :) 15:28:58 --- join: kc5tja (~kc5tja@ip68-8-206-137.sd.sd.cox.net) joined #forth 15:28:58 --- mode: ChanServ set +o kc5tja 15:29:51 a7r: You at keyboard? My '7 isn't running so hot right now. I am noticing that it idles rather roughly, and at 1000-1200 RPM, I can audibly hear (and feel) rotor misfire. :( :( :( 15:30:01 Not sure what could be the cause. 15:30:10 kc5tja: hmm. 15:30:20 I'll try reseating the igniter cables tonight, but tomorrow it's going in to the shop for free inspection. 15:30:31 I don't know about the misfire, but if it's idling high, my first thought is vacuum leak. 15:30:40 No, it's not idling high. 15:30:47 oh 15:30:49 I misread. 15:30:53 I am just saying that when I gas it to 1000-1200RPM, it really becomes noticable. 15:31:08 It idles around 700, but it occasionally wants to dip to 500 RPM. 15:31:15 does it smell rich? 15:31:22 I can't smell anything. 15:31:43 I'm really hoping it's not a clogged injector. That would suck. 15:31:56 That, combined with new power steering pump, would put me back at least a grand. :/ 15:32:10 haha, just pull the power steering. :) 15:32:23 a7r: I've considered it... I've really considered it... :D 15:32:44 But getting it converted to manual steering is about as expensive as just replacing the pump. 15:32:44 they drive great without it.. I'm thinking of converting my manual rack to a powersteering one, without the power. 15:32:54 no, I mean just pull the power steering belt. 15:33:00 keep the rack in there. 15:33:15 my brother is running it that way in his turbo 2 right now, and it's great. 15:33:23 Isn't the effect the same as if the power steering sump is empty? :) 15:33:32 he pulled the belt 15:33:41 Yes, and I have to keep refilling the sump. :) 15:33:59 then pull the mechanism, and fill the holes in the rack. 15:34:12 that's what the local race teams did. :) 15:34:21 You forget: I have no machining ability, no tools, and no time. :) 15:34:34 but shit.. misfires at 1000-1200.. and you haven't made any changes lately? 15:34:41 Absolutely zero. 15:34:46 what do the plugs look like? 15:35:12 No idea. 15:35:22 I can't reach down in there to pull them. 15:35:40 why not? 15:35:44 Too cramped. 15:36:08 hrm, I pull mine all the time, you got something else in there? 15:36:17 (blocking them) 15:36:27 The engine bay is bone stock -- power steering pump, power brake master cylinder, et. al. 15:36:45 Well, steering pump isn't "in the way," but it is mildly annoying to work around. 15:37:02 The master brake cylinder is smack right where my arm would have to go to pull the plugs though. 15:37:22 * kc5tja misses his '80 -- WIDE OPEN SPACES . . . easy to work on. :) 15:37:37 I do mine with a small 3/8s inch, and just shove my arm down there. 15:37:48 Hmmm 15:37:51 usually just pulling the trailing plugs 15:38:00 Trailing plugs are the ones on top, right? 15:38:02 yah 15:38:08 OK, just making sure I still remembered. 15:38:20 But I'd expect the leading plugs to get the most fowled, since they're the most exposed to the gas mixture. 15:38:59 yah 15:39:17 Oh, I see -- pull the trailings first, then pull the leadings. 15:39:30 See, I'm a complete moron when it comes to under-the-hood work on my car. :( 15:39:41 I know enough to be dangerous and that's it. :D 15:39:44 haha 15:40:03 yah,.. but at least you have a car with cheap parts available. 15:40:29 That's laughable. A power antenna kit for the car costs $200. I said, "Screw that." Now I'm driving around with no power antenna. 15:41:06 Though, I do need to call Mazdatrix and Racing Beat to see what their prices are on power steering pumps. 15:41:25 I've driven the car around without power steering fluid, and it's tougher to drive than a manual steering car. 15:41:37 (and no, I didn't do it on purpose -- it leaked while on the road.) 15:41:38 yah, it has a lot less turns lock to lock. 15:41:45 which is why the racers switch to them. 15:42:00 kc5tja: our parts our cheap.. you should see what I have to pay for Volvo parts. 15:42:23 ... or you could own a BMW 15:42:29 a7r: OK, so the '7 is middle of the road then. GM parts are way, way, way cheaper. (Hmmm...perhaps that says something...) 15:42:38 Porsche is out of this world. 15:42:41 yah 15:42:45 But at least you can still get parts for the earliest of Porsches. :D 15:42:52 Not so for the 1st gen '7s. :( 15:43:36 Even my 2nd gen's exhaust system cost me big bucks, because they just don't make the cats for it anymore. GGRRRR!!! 15:43:44 yah 15:43:45 It's not like the car is *THAT* old.. 15:43:53 I think that trend is going to get worse and worse. 15:43:57 * kc5tja nods 15:44:05 .. especially for cars made in the 90s 15:44:18 BTW, what'd you do about your cats? did you have to go w/ OEM? 15:44:31 See, this is why I want to buy an RX-8, and just *baby* the thing. Purchase it, and mothball it immediately. It'll be a collectors item. 15:46:01 a7r: I believe so. I just told the smog shop, "I don't care what you do, just fix it." It cost me $1200 for installation/labor, two cats, exhaust manifold seal, and a couple of other minor parts. 15:46:15 yah 15:46:29 I'm running a turbo-back exhaust with a straight pipe right now. 15:46:39 80mm all the way through to the mufflers. 15:46:48 Not street legal, I don't think. Since this is my daily-driver car, I need mine to be street legal. 15:46:56 definitely not street legal. 15:47:11 if I had the money, I'd sue CARB 15:47:17 I used to have exhaust headers on it, but I never bothered to replace them after smogging. 15:48:05 Someone told me just replacing the exhaust headers (which also takes out one of the pre-cats) adds 30HP to the engine's power. I find that hard to believe in its entirety. 15:48:21 w/ a rotary, that'd be true. 15:48:23 That'd make driving the car like driving a 3rd generation RX-7 (180HP to 190HP) 15:48:36 the 3rd gen puts down 255 15:48:41 255 *stock* 15:48:44 yah 15:48:57 Take off the turbos, though, and what do you have? 195. :) 15:49:03 something like that. 15:49:26 So, I'd like to put the exhaust headers back on at some point. But I've been using it too much to bother at the moment. 15:49:33 yah 15:49:41 I gained about 60-65 HP just by changing out my exhaust. 15:50:12 I'm just worried if I do that, that it'd burn out the cats quicker. Cats for the car are fucking expensive (excuse my language). 15:50:39 the thing that gets cats are running too lean, and too rich. 15:50:50 if you keep in the middle, they'll hold up. 15:51:16 too rich, because they get hot consuming the fuel.. too lean, and your EGTs skyrocket, and cook them. 15:53:30 * kc5tja nods 15:53:55 You'd think that the computer could be equipped with pyrometers to observe cat temperatures, and adjust air flow into the cats accordingly. 15:54:04 No O2 sensors needed if that's the case. 15:58:31 maybe 16:02:21 --- quit: Robert (Read error: 54 (Connection reset by peer)) 16:06:02 --- join: Robert (~snofs@h126n2fls31o965.telia.com) joined #forth 16:24:51 --- join: crc (~crc@AC8E27A2.ipt.aol.com) joined #forth 16:43:10 --- quit: crc ("I was using TinyIRC! Visit http://www.tinyirc.net/ for more information.") 16:43:17 --- quit: a7r (Read error: 110 (Connection timed out)) 17:00:36 --- join: a7r (~a7r@206.72.82.135) joined #forth 17:08:44 --- quit: flyfly (leguin.freenode.net irc.freenode.net) 17:08:45 --- quit: a7r (leguin.freenode.net irc.freenode.net) 17:08:45 --- quit: onetom (leguin.freenode.net irc.freenode.net) 17:08:45 --- quit: ianni (leguin.freenode.net irc.freenode.net) 17:08:45 --- quit: skylan (leguin.freenode.net irc.freenode.net) 17:09:17 --- join: flyfly (~marekb@ip164.ktvprerov.cz) joined #forth 17:10:24 --- quit: flyfly (leguin.freenode.net irc.freenode.net) 17:10:47 --- join: a7r (~a7r@206.72.82.135) joined #forth 17:10:47 --- join: skylan (sjh@vickesh01-4814.tbaytel.net) joined #forth 17:10:47 --- join: onetom (~root@cab.bio.u-szeged.hu) joined #forth 17:10:47 --- join: ianni (ian@inpuj.net) joined #forth 17:11:13 --- join: flyfly (~marekb@ip164.ktvprerov.cz) joined #forth 17:13:25 --- join: njd (~melons@njd.paradise.net.nz) joined #forth 17:29:17 Just a quick curiosity: Can anyone present please ping falvotech.com? If an IP address is shown, please inform me of what you get? I'm trying to move a domain from one IP to another, and it's taking longer than I expected. I'd like to see some third-party observations of what IP address they get. Thanks. 17:32:09 *** ns6.attbi.com can't find falvotech.com: Non-existent host/domain 17:32:15 alvotech.com. 30M IN SOA ns1.mydyndns.org. zone-admin.dyndns.org. ( 17:32:15 2003052901 ; serial 17:32:48 ianni: Thanks. 17:33:02 Interesting that they still have the zone, but no A record for it. 17:33:05 * kc5tja will contact them. 17:33:17 I probably didn't do something right. 17:37:06 --- quit: njd ("fractal2 mirc script (ver 1.0betar1) · http://fractal2.net") 17:48:32 anytime 17:53:59 --- part: mur left #forth 18:03:54 Neat. Amazingly little difficulty in installing my company's website. 18:04:05 --- part: a7r left #forth 18:04:11 Just some small XML-related noise at the tops of each page, but I'm going to correct that right now. 18:35:57 Hi 18:36:34 http://blades.netnation.com/~falvotec -- my company's public website. 18:50:24 --- join: TheBlueWizard (TheBlueWiz@pc69dn1d.ppp.fcc.net) joined #forth 18:50:24 --- mode: ChanServ set +o TheBlueWizard 18:50:31 hiya all 18:50:37 re TheBlueWizard 18:50:45 hiya kc5tja :) 18:50:54 TheBlueWizard: Got my company's website up, but domain name hasn't propegated yet. 18:52:04 ah :) 18:52:12 a progress...of sorts 18:52:52 As long as I'm making progress, then I know all is not for naught. 18:53:04 Hi TheBlueWizard :) 18:53:53 hiya Robert 18:54:05 kc5tja: :) 18:54:57 ] 18:54:58 : wizard $54 emit $42 emit $57 emit ; 18:54:58 [ 18:54:58 wizard cr TBW 18:55:00 Look! Look! 18:55:06 That's what my Forth can do now :) 18:55:24 That Forth can run on 128 bytes of RAM. 18:55:56 Size of the binary is about 4kB. 18:56:31 Robert: I have you beat -- my DOS version of FS/Forth runs in 6KB of memory, and can do a lot more than that... ;D 18:56:31 Made to run on a 4MHz AVR microcontroller, inside a VM. So it's one of the slowest Forths you've ever seen! ;) 18:56:48 kc5tja: But you're a coder, that's cheating! 18:56:58 Robert: Actually, put on your seatbelts, because it sounds like you just crossed that "critical threshold," where *LOTS* of functionality can be added with very LITTLE code. 18:57:11 * TheBlueWizard chuckles re: Robert's proggie 18:57:22 kc5tja: Such as? 18:57:44 This compiles Forth to 'machine code' for my VM. 18:57:53 ooh...a flamewar! 18:58:02 Where? Where? 18:58:11 Well, I haven't exactly implemented conditionals or looping constructs in my Forth. But I do support compiler and Forth wordlists. I can add ColorForth-esque conditionals and looping in a single screen of code. 18:58:42 Ah.. you have a point there, loops might be good to have, 18:58:54 :) 18:59:28 I would say to add them as you need them, and most importantly, don't go hog-wild with the. 18:59:30 them even 19:01:50 I only use two words for looping in this system, { and } Whatever I put inside them, is looped forever. 19:02:12 Then I use if statements to break out. 19:02:21 Works welll, and is very simple to implement. 19:08:14 Hey, it works. Chuck uses tail-recursion optimization to implement loops. 19:09:08 Yes.. I played with that first, but then I wanted some sort of "nameless" tail recursion. 19:09:08 FS/Forth is going to use AGAIN, and that's it. 19:09:30 : myLoop notDone? IF do-something AGAIN THEN clean-up ; 19:10:40 Or, another way: 19:10:48 : myLoop done? IF EXIT THEN do-something AGAIN ; 19:11:00 interesting....a BEGIN-less AGAIN construct 19:11:08 Of course, the return compiled by ";" is wasted -- it's only a byte, so I'm not going to worry about it. 19:11:17 * kc5tja nods to TheBlueWizard 19:12:02 Although, if I support tail recursion optimization, I probably don't even need AGAIN. 19:12:33 (or EXIT for that matter) 19:13:44 hmmm.... I would use EXIT so often that four letter for EXIT would become a bit of a burden. 19:13:52 I wonder what word name I can use in its place? 19:14:10 ;] makes sense (; for return, ] to re-enter compile-mode, so ;] is the combination of those two things) 19:14:29 : myLoop notDone? IF do-something myLoop ;] THEN cleanup ; 19:14:35 Take every chance to implement smileys to your language... :] 19:14:44 heheh :) 19:15:48 I think the very early MachineForth compilers used -; -- I might use that. 19:16:09 : myloop notDone? IF doSomething myLoop -; THEN cleanup ; 19:18:59 I "solved" this by forcing the user to switch in and out of compilation mode with ] and [ 19:19:22 If I ever implement a color editor, that will make things easier. :) 19:20:59 Well, it's true that I don't need to make any words at all: 19:21:16 : myloop notDone? if doSomething myLoop ; ] then cleanup ; 19:21:33 where ']' just forces the compiler to resume where it left off. 19:21:42 But that's rather inconvenient to have to do, I'd think. 19:23:08 I use ] and [ since I've noticed I don't have to switch to interpretation mode very often. 19:23:20 Except when debugging. 19:23:48 Please show an example of how they're used. 19:26:15 ] : x code code code ; [ 19:26:19 4 5 6 x . 19:26:34 That 19:26:43 That's how it will look when I'm writing and debugging x. 19:27:26 In a source file, I'll just put ] somewhere in the top, and use [ when I need to switch into interpretation mode. Then I don't have to switch all the time, like here. 19:28:17 So : is a compiler word then, and not interpreted like in traditional Forths. 19:28:28 That would permit multiple entry points if done right, a la ColorForth. 19:28:43 ] : 8* 2* : 4* 2* 2* ; [ 19:30:17 I never thought of that. :) 19:31:13 * kc5tja does a copy-test: 19:31:29 [ COMPILER ] 19:31:38 : foo ...blah... ; ...blort... ; 19:31:41 [ FORTH ] 19:31:50 : bar ...blah... ; 19:32:02 : baz ... bar foo bar ... ; blah ... ; 19:32:07 [ 19:32:17 Intriguing -- it doesn't change much. 19:32:23 It is a bit awkward for me to use though. 19:32:30 But it's worth considering in the future. 19:49:33 ] : x $10 { $1 - is0 drop ; then $41 emit } ; [ 19:49:33 x AAAAAAAAAAAAAAA 19:49:39 Yay, now the loops work. 20:06:18 gotta go to bed...bye all 20:06:39 --- part: TheBlueWizard left #forth 20:19:55 Wow, that's hard for me to read. :) 20:23:17 Another guy said it reminded him of brainfuck. 20:24:16 : x ( -- ) 20:24:16 $10 { 20:24:16 is0 drop ; then 20:24:16 $41 emit 20:24:16 } 20:24:22 That's a bit better.. :) 21:01:17 Heheh :) 21:01:39 I'm going out to get some food. Back in an hour or so. 21:01:54 --- nick: kc5tja -> kc-dinner 21:19:52 woah, I missed the one time there was an on-topic discussion in here 21:59:32 Poor XeF4. 21:59:50 --- join: thin (~thin@stu03012.cariboo.bc.ca) joined #forth 21:59:50 --- mode: ChanServ set +o thin 22:00:06 hi kc-dinner 22:00:45 xef4: you didn't miss the one 21 hours ago 22:01:06 i think there's plently of on-topic discussion, and if there aren't any, start your own! 22:01:35 Hi thin. 22:01:46 Long time no see 22:02:13 hi rob_ert 22:02:51 yeah i don't have much access to the internet right now because i'm busy doing various projects 22:03:07 thin: hey! of course that is dependent on whether I have anything to say at the moment 22:03:57 --- nick: kc-dinner -> kc5tja 22:03:59 Back 22:04:02 xef4: what happens when nobody is talking and you feel like talking about forth? do you attempt to start a discussion? 22:04:06 thin! :) 22:04:14 kc5tja: heya :D 22:04:35 thin: sometimes. but there are limits about how long I want to ramble on about things of no interest to anyone else 22:04:44 Hehe. 22:04:48 thin: http://blades.netnation.com/~falvotec 22:05:03 That little project is almost done, at last. :) 22:05:35 xef4: that's why you have to be sneaky in starting a discussion.. maybe throw in some flame to get it going ;) 22:05:56 thin's a moron. 22:05:57 ;) 22:06:11 He thinks he knows Forth, but in reality, he only knows Third. 22:06:17 hey, at least i know how to start a discussion ;) 22:06:25 i never really claimed i know forth 22:06:32 but i'd say the same for half of the ppl in this channel 22:06:37 * kc5tja is poking fun at you, that's all 22:06:47 Playing off your words a bit. 22:06:53 the url you gave doesn't work 22:06:59 oh i see 22:07:01 * kc5tja is currently in a state of digestion-induced euphoria. 22:07:07 i missed that "pun" or whatever it is :P 22:07:17 The URL above does work. :D 22:07:22 Unless NetNation is doing maintenance. 22:07:26 * kc5tja checks 22:07:44 Try it again. Works fine for me. 22:08:11 yeah it works now 22:08:12 Make sure you spell it falvotec, and not falvotech. 22:08:20 i cut'n'pasted 22:08:27 * kc5tja nods 22:08:31 neways, the site seems pretty simple 22:08:52 That's what I was going for. 22:09:02 Simple, fast, minimum numbers of clicks to get to critical information. 22:09:09 Practicing what I preach, basically. 22:09:14 yeah but i'm so used to having a bar of links on the side or on the top :P 22:09:45 * kc5tja nods 22:09:46 even tho you do have a "bar of links on the side" of a sorts 22:12:25 kc5tja: so what's up with the engine stuff? someone else was also talking about it.. 22:12:32 stirling engines and such.. 22:13:11 Yeah, that'd probably be Sergey. (I assume his name is Sergey at least.) 22:13:29 I introduced Serg_Penguin to Stirling engines, as I was briefly talking about it on the channel. 22:13:44 * kc5tja is making another attempt to build one out of commonly found house-hold rubbish/materials 22:14:11 I have a power diaphram "piston" set up and working great (the first time it's done that since the very first engine I tried to make). 22:14:28 I'm now thinking about how to make the displacer cylinder and mechanism. 22:14:35 I have a rough idea of how to do it, but no specifics. 22:15:52 Anyway, when it's done, I'm going to use it to drive a window-mounted fan, so I can get some circulation of air from the outside in my room. 22:17:41 what's going to power it? 22:17:45 Tomorrow, after taking care of some errands, I'm hoping to actually start doing some interesting coding work on FS/Forth for Linux. 22:17:56 thin: Stirling engines run off of a temperature difference. 22:18:28 At night time, since I have a west-facing window, the inside of my room gets quite hot, and tends to stay that way well into the evening. 22:18:47 Meanwhile, outside, the air gets relatively cool after the sun sets. 22:19:06 So, I'm hoping to use the stored heat in my room to power the engine. But I don't expect it to work at first. 22:19:17 So, in the event that it doesn't, I can power it with ice-cubes. 22:20:55 heh 22:21:17 So, as you can see, Stirling engines are "cool." ;D 22:22:03 They are actually virtually ideal for this application too. Very quiet, small number of moving parts, and runs safely unattended. 22:25:53 kc5tja: i like how you've released code on the #forth site :) 22:26:10 that's how ppl should be using it.. others should join it and release their stuff on it.. 22:28:00 in good time 22:30:11 Thanks. :) 22:30:28 I try to keep the site as active as possible. 22:30:36 I keep forgetting to check the forum site though. :) 22:30:41 I'll do that tomorrow. 22:33:41 * kc5tja implemented MARK, EMPTY, and UNMARK in gforth via VIBE. The first step towards a healthy FS/Forth target compiler. :) 22:34:08 kc5tja: how's work these days? 22:34:16 thin: "Work?" 22:34:36 What exactly do you mean by work? 22:34:53 money making :P 22:35:04 how's your business doing? 22:35:04 You do realize I'm unemployed, right? 22:35:07 yep 22:35:17 Well, the site I posted earlier? That's the site for my new company. 22:35:25 yep 22:35:31 So far, I've made a grand total of $0. 22:36:22 Hopefully things will be changing in about a month or two. 22:36:36 Before I'm so broke that I have to move back to NY to live with my parents. :( 22:36:54 ew 22:39:04 Wow, I'm not used to writing software in blocks less than 1000. :) 22:41:31 Rats -- I don't know how I'm going to provide a distinction between code and data spaces though. I think I'm just going to have to have two separate target buffers. 22:41:34 Bugger! 22:43:23 * thin is looking for sites that deal with freelancing/telecommuting/contract jobs done thru the internet.. 22:43:36 i remember finding a good one awhile ago, but i can't remember it's url 22:43:41 s/it's/its 22:43:45 kc5: is that really necessary? 22:45:08 XeF4: Not strictly, but it does measurably improve CPU execution performance -- less cache thrashing. 22:46:18 i think it was elance.com 22:47:31 thin: Hmmm 22:47:43 Perhaps an avenue my company can take. I'll have to look into it. 22:48:01 yeah there's another site i think 22:48:04 but it's pretty interesting 22:48:07 linked list of small code buffers maintained independently from the upward-growing dictionary? 22:48:27 for example, a bunch of companies bid for a website project.. 22:48:41 all the jobs are done by telecommuting i believe.. 22:49:40 kc5: + preparsed source so regenerating native code for a word is instantaneous 22:50:47 Preparsed source is all one would need to get a clean separation of code and data for most applications. 22:51:12 ework.com, freeagent.com 22:51:13 (unless you retrieve preparsed source from disk or disk cache every time, where address of data changes each load) 22:52:15 XeF4: I'm keeping things simple. Though the target compiler is limited to generating 16K of code and 16K of data, the actual Forth environment will support 128KB of each in the dictionary. Beyond that requires the programmer to talk to Linux and malloc it itself. 22:52:55 hm freeagent.com is down 22:53:10 kc5: does that include editable source? 22:53:13 Hmm... freenode.net is re-hubbing; I'll likely get kicked in a bit. 22:53:29 XeF4: No. 22:54:13 FS/Forth for Linux is a pretty "conventional" Forth environment -- pure ASCII source blocks, block cache instead of memory-mapped blocks, etc. 22:54:38 However, it borrows heavily from MachineForth and ColorForth in other areas. 22:54:43 (especially code generation methods) 22:55:32 --- quit: onetom (leguin.freenode.net irc.freenode.net) 22:55:32 --- quit: ianni (leguin.freenode.net irc.freenode.net) 22:55:32 --- quit: skylan (leguin.freenode.net irc.freenode.net) 22:55:37 Here we go... 22:55:40 --- join: skylan (sjh@vickesh01-4814.tbaytel.net) joined #forth 22:55:40 --- join: onetom (~root@cab.bio.u-szeged.hu) joined #forth 22:55:40 --- join: ianni (ian@inpuj.net) joined #forth 22:56:41 --- quit: flyfly (leguin.freenode.net irc.freenode.net) 22:56:48 --- join: flyfly (~marekb@ip164.ktvprerov.cz) joined #forth 23:00:38 kc5: it native-coded I assume? 23:02:37 Yes. 23:02:54 Naive native code with inlined primitives. 23:03:04 argh, a tantalizing project (i only get the first 2 lines before i have to subscribe) 23:03:06 " need a program that does the following: 23:03:08 I have data points in "mm" that need to be plotte ..." 23:03:11 Register allocated native code isn't much faster (less than 3% by my measurements) 23:03:40 * thin is thinking it sounds similar to the postscript job he did.. 23:03:55 altho probably not heh 23:06:32 kc5: then I don't know how one could do that with a traditional forth and still have the dictionary grow upwards 23:07:04 Two physical chunks of memory 23:07:34 yes, but then there is almost guaranteed to be waste 23:07:54 "I hereby declare, as your King and God, that code space shall occupy $00000-$1FFFF, and data space shall occupy $20000-$3FFFF. $40000-$FFFFF is reserved for block buffers, heap allocation, whatever." 23:08:05 XeF4: There is waste no matter what you do. 23:08:58 kc5: unfortunately Linus as your King and God has declared that you shall use the MMU only in certain prescribed ways, so you are really stuck with 2 physical chunks of memory that way :\ 23:09:10 kc5: yes, but there is more waste that way 23:10:29 XeF4: Who says I'm using the MMU? 23:10:44 I malloc two 128KB chunks of RAM -- Linux takes care of mapping it in the process space. 23:10:58 Actually, scratch that. 23:11:55 I malloc *one* 256KB chunk of RAM, and logically split it into two spaces. Load code into the lower half, and data into the upper half. Use a single register to refer to the base of the data portion. Don't usually need a pointer to the code space because most EIP-related 'modes' are EIP-relative by default. 23:13:58 Whether I have two split 128K chunks of a single 192 to 256K chunk doesn't matter. In most cases, software compiles to only 10K or so *anyway* -- even with a 32K combined code and data space, it is going to waste space. 23:14:46 *nod* 23:17:08 There are disadvantages of course: what space does ',' compile to? 23:17:16 So i haven't really decided on how to handle that yet. 23:17:38 But I do know that I would like a distinction between code and data, to avoid thrashing the code cache. 23:17:56 Well, code and data caches. 23:18:20 www.smarterwork.com & elance.com are two of them.. 23:20:38 kc5: sounds like an argument for unified cache to me.. 23:20:52 XeF4: *sigh* Yeah, . . . those were the days. :) 23:21:12 kc5: but how much a performance hit is there using a flat arena on whatever it is you're using? 23:21:17 XeF4: Unfortunately, to get the super-high clock speeds and performances, split caches and Harvard Architectures are used. 23:21:35 am I mistaken to think Athlon still uses unified cache? 23:22:59 Athlons have never used a unified cache. The K6-II and K6-III did. 23:23:10 (to the best of my knowledge) 23:23:19 --- quit: thin ("nite") 23:25:39 *sigh* 23:25:41 I can't find the numbers again. I believe it's a 10 to 15% performance hit if you merge code and data within the same cache line. 23:25:52 But I'd have to find the metric again to be positive of that. 23:26:12 oh? I just imagined it would come from the code cache filling up with irrelevent data and vice-versa 23:26:19 No. 23:26:50 A write to a cache line that is in the code cache will (a) invalidate the code cache (it's built specifically to be read-only), and (b) cause a cache load operation on the data cache. 23:26:52 It's pretty nasty. 23:27:09 (b) occurs only if it's not already in the data cache of course. 23:27:20 So when the code is executed again, the code cache must refetch the relavent cache line. 23:27:57 hmmmm 23:28:12 I suppose one way to handle this is to align data on cache line boundaries within a unified dictionary space. 23:28:16 So that if I have: 23:28:18 : foo .... ; 23:28:21 VARIABLE XYZ 23:28:27 : bar ... XYZ ! ... ; 23:28:44 bar is at least, say, 32 bytes from XYZ, while XYZ is itself 32 bytes away from foo. 23:28:53 I was going to suggest that, but that seems even more wasteful than the split arena 23:28:54 Wasteful, but it does space things out. 23:28:55 --- quit: Klaw (Read error: 110 (Connection timed out)) 23:29:49 Maybe we can just make it explicit: 23:29:52 : foo .... ; 23:29:59 FASTVAR XYZ 23:30:05 : bar ... XYZ ! ... ; 23:30:13 FASTVAR takes care of cache-aligning. 23:30:56 * kc5tja hadn't thought of that solution. I actually kind of like it. 23:31:02 or : fast -1 cache-align ! ; : compact 0 cache-align ! ; (of course the relevant words observe cache-align) 23:31:29 * kc5tja nods 23:31:42 Yeah, I like that solution too. 23:31:51 CACHE-AWARE ON 23:31:54 : foo .... ; 23:31:57 VARIABLE XYZ 23:32:01 : bar ... XYZ ! ... ; 23:32:03 CACHE-AWARE OFF 23:32:32 Or, better yet: 23:32:38 : cache-on 64 cache-line-size ! ; 23:32:43 : cache-off 0 cache-line-size ! ; 23:33:03 This way it can be specifically tuned to your host processor. 23:34:36 cache-line-size could also be relevant to data packing though.. 23:35:10 best imho to separate harvard-parochialism from cache-line-size, but that could be overcomplicating it 23:38:34 Well, if you split things on a cache line boundary like that, then the issue of intermixing code and data in the same cache-line doesn't arise, thus nicely avoiding the problems. 23:47:23 --- join: Serg_Penguin (Serg_Pengu@212.34.52.140) joined #forth 23:47:39 hi 23:47:55 re Serg 23:48:28 yesterday i hooked one more man to Forth ;)) 23:50:28 he had lotsa fun playing w/ create/does ;)) 23:52:08 Ahhh, cool. :) 23:52:20 * kc5tja expanded VIBE a bit today to support VI-like 'dd' command for deleting whole lines. 23:52:38 I'm glad we had the discussion yesterday about how to handle overlays and such. 23:52:46 It was *just* the thing I needed to implement 'dd' too. 23:53:54 I also implemented MARK UNMARK and EMPTY in gforth. MARK and EMPTY work as expected; but UNMARK has a side-effect that I don't like due to ANSI semantics. But, oh well -- such is life (for now) 23:56:21 heh, forth gives plugins capability almost 4 free ;) 23:57:04 i'll redesign my ASCII art editor to support plugins - actually, everything will be plugins 23:57:07 Forth actually encourages you to split programs up into multiple loaded and on-the-fly compiled modules. 23:58:02 heh, your keybindings are easier w/ plugins ;)) 23:58:40 if i loaded plugin, put link to it's word to my keybind table, and then forgot the pluguin... 23:58:51 Serg_Penguin: Yes, I use that to my advantage. 23:59:35 Serg_Penguin: There's a better way for you: keep a global pointer to key-binding table. Then each module can have its own table. To update or restore the key-bindings, just re-point the global pointer 23:59:59 --- log: ended forth/03.07.15