00:00:00 --- log: started forth/04.06.01 02:13:12 --- log: started forth/04.06.01 02:13:12 --- join: clog (nef@bespin.org) joined #forth 02:13:12 --- topic: 'A channel dedicated to the Forth programming language, its implications, its applications, and its philosophy. :NOTICE: Kestrel's microprocessor has changed. For more information, check the weblog and project page for the Kestrel on http://www.falvotech.com .' 02:13:12 --- topic: set by kc5tja on [Mon May 10 07:46:47 2004] 02:13:12 --- names: list (clog warpzero Serg Fractal skylan onetom arke fridge lalalim_ @ChanServ Herkamire madwork Robert @futhin gl mur ianp cmeme) 02:19:09 --- quit: warpzero (Read error: 60 (Operation timed out)) 02:32:03 --- quit: madwork (Read error: 60 (Operation timed out)) 02:59:26 --- join: warpzero (~warpzero@dsl.142.mt.onewest.net) joined #forth 03:05:22 --- quit: warpzero ("Tried to warn you about Chino and Daddy Gee, but I can't seem to get to you through the U.S. Mail.") 03:30:12 --- join: qFox (C00K13S@cp12172-a.roose1.nb.home.nl) joined #forth 03:30:15 --- join: kuvos (C00K13S@cp12172-a.roose1.nb.home.nl) joined #forth 03:30:25 .p 03:30:33 --- part: kuvos left #forth 03:38:50 --- join: ttest (~ttest@212.34.52.140) joined #forth 03:39:09 Serg test from telnet 03:39:53 i se myself in Mirc ;) 03:40:14 backspace 03:40:37 ovarstrike 03:42:14 bye 03:42:16 --- quit: ttest (Client Quit) 03:49:17 --- join: crc (crc@0-1pool88-55.nas48.philadelphia1.pa.us.da.qwest.net) joined #forth 04:12:13 lol :) 04:12:35 qFox: what's funny? 04:15:16 [12:39:06] Serg test from telnet 04:15:17 [12:39:50] i se myself in Mirc ;) 04:15:17 [12:40:11] backspace 04:15:17 [12:40:34] ovarstrike 04:15:17 [12:42:09] bye 04:15:48 (like 5 minutes before you joined) 04:18:09 :-) 04:18:19 * crc always misses the fun things 04:18:25 hehe 04:22:51 * crc heads over to meme.b9.com to check the logs :-) 04:23:51 i actually never read the logs 04:24:10 if there's something i should know, i'm sure someone will tell me, eventually :) 04:25:15 I always read the logs 04:25:53 At least, I've read all of the logs since I started hanging out here 04:26:24 Sometimes I find interesting things in them 04:37:07 i was chatting via telnet from home, asking for help on creating Perl irc client ;)) 04:37:16 actually - filtered telnet 04:40:00 cool 04:40:07 though telnet is insecure 04:40:34 --- join: warpzero (~warpzero@dsl.142.mt.onewest.net) joined #forth 05:00:04 --- join: harm^kuvo (C00K13S@cp12172-a.roose1.nb.home.nl) joined #forth 05:01:35 ever wrote something telnet-like, i.e. async comm ? 05:01:35 --- quit: qFox (Read error: 54 (Connection reset by peer)) 05:05:03 --- nick: harm^kuvo -> kuvos 05:23:10 --- join: qFox (C00K13S@cp12172-a.roose1.nb.home.nl) joined #forth 05:24:16 .nick kuvos 05:24:17 .p 05:24:18 --- part: kuvos left #forth 05:24:40 hm i should change that connect script 06:25:41 http://www.costofwar.com/ 06:25:43 --- quit: crc (Read error: 104 (Connection reset by peer)) 06:31:01 --- join: madwork (~madgarden@derby.metrics.com) joined #forth 06:32:22 --- join: I440r (~FooBlah@168-215-246-243.gen.twtelecom.net) joined #forth 06:32:22 --- mode: ChanServ set +o I440r 06:32:55 --- mode: I440r set +l 83 06:32:57 hehe 06:36:06 why 83? 06:36:35 the 83 standard lol 06:36:47 Serg, i wrote telnet server project manager when in high school 06:36:48 limit to the 83 forth standard lol 06:36:52 its an anti ans joke :P 06:37:16 Serg, java one though, but still from scratch 06:37:24 it was one of the default channel modes when i created #forth 06:37:39 :) 06:41:25 mur: and how did u solve async problem ? 06:41:46 btw, server is not client, i'm unsure does it have the trubble at all 06:42:18 Serg, i can't remember that now, but i guess just fine 06:47:08 i lack the 'non-blocking' mode: if nothing to read, just return 0 08:44:11 --- join: ASau (~asau@158.250.48.204) joined #forth 08:44:18 Dobryjj vecher! 08:51:23 Privet. :) 09:03:10 hi 09:03:24 * Serg is messing arownd w/ M$ crap 09:03:43 of course you are 09:03:57 *cough*lamer*cough* 09:07:12 at least he admits it... ;) 09:07:28 * qFox does too btw. 09:21:45 we are tied to some book-keeping soft ;(( windoze only ^(( 09:22:29 1C? 09:40:29 yeah, 1-ASS !!! 10:18:27 dhamn, it failed - had to roll back ;( 10:19:09 --- quit: Serg () 11:02:17 --- quit: onetom (Read error: 104 (Connection reset by peer)) 11:08:16 --- join: MrReach (~spam@209.181.43.190) joined #forth 11:08:16 --- mode: ChanServ set +o MrReach 11:08:49 heya, I440r, got questions about overlays if you want to talk about it 11:41:31 sure 11:41:36 heh, not much here 11:41:46 ive not implemented them yet but ive been thinking about it 11:42:02 same here, obviously 11:42:08 :) 11:42:25 i'm thinking of a webserver written in forth 11:42:42 how would one dynamically change behavior w/o restarting it? 11:43:27 the only thing i've been able to come up with so far is a vector table to dispatch published functions 11:43:46 hrm 11:44:19 what do you mean by change its behaviour ? 11:44:47 ok ... 11:45:35 let's pretend that http://www.mrreach.net/test/page1.html calls a word that generates a response 11:46:09 * qFox pretends 11:46:28 but I want to change that response ... so I edit sources ... now, how does the server pick up the new behavior without restarting? 11:46:47 it's very similar to your MUD problem 11:47:05 well. web content shouldnt extend the server so i would say just make it re-parse the soruces every time a page is loaded 11:47:27 you would have multiple instances of the server running 11:47:38 multiple threads, rather? 11:47:44 the master would fork and the child would parse the page 11:47:53 and extend itself with the specified file 11:48:09 the next time the server forked on that page it would re-read the data 11:48:11 hmmm ... 11:48:49 well, constantly reparsing would be a no-no ... they could get rather sizable, but it might reparse if filedate changes 11:50:05 is this to run in linux ? 11:50:11 flush them on change 11:50:12 i spose I could allcate some memory, aim H at it, compile the file, store the entry point into a variable 11:50:17 yes 11:50:44 qFox: you're saying to check for changes every X seconds? 11:50:59 linux or windows, it really doesn't matter 11:51:14 theres a mechanism for a process to be notified that a particular file has been modified 11:51:20 i cant remember where i saw it tho 11:51:26 might be a kernel compile option 11:51:29 ah! yes, seen that 11:51:30 i cant remember lol 11:51:45 so does windows 11:51:52 that's ok, i've seen the specs 11:52:16 well theres your answer 11:52:18 my concern isn't really with when to refresh object code 11:52:25 but rather how to store/use it 11:52:40 well you would memory map it 11:52:55 * MrReach raises his eyebrows 11:52:56 MrReach> no, rather have an event that triggers anytime when yo uchange a document thats available by the webserver, or make a check for change every time the document is called (this is a decision that should be made depending on load, and overhead) 11:53:13 I'm not sure why I sit in forth, I rarely write any =P 11:53:47 lol 11:53:54 qFox: i'd check at request time ... it should be too bad an issue if a user gets a slow respnse once as it's called for the first time 11:53:55 fridge because were cool :) 11:54:33 heh, maybe fridge needs a life? 11:54:44 * MrReach ducks 11:55:27 the thing is, I can't just use the fence/empty, forget, or marker interfaces for memory management 11:55:43 well it depends on your load (hits), the timeframe in which you want the update to be occur, and speed... 11:55:52 well, when I do night shift 11:56:03 all the channels with aussie in them are dead 11:56:07 if there are many hits, checking for updates on each hit creates a lot of overhead, so a x second/minute timer would be better 11:56:15 because they are sane, and asleep 11:56:27 heh, probably true, fridge 11:56:31 mrreach empty/forget is complex 11:56:42 luckily this channel has attendants from a number of countries 11:56:56 so there are interesting conversaations happening at most times of the day 11:57:01 because you have to ddiscard all words in all vocabs (in context or not) that are above the forgotten word 11:57:17 so you have to search all threads of all vocabs 11:57:29 yep, they're not the proper tool for the task at hand 11:57:56 you definatly dont want to be forgetting things constantly, forget is kinda dangerous 11:58:23 so a given module needs to go into allocated mem, somehow 11:58:26 err isnt there a law requiring banks to cache payroll checks ? 11:58:40 mrreach a web server HAS to fork for each request! 11:58:42 I don't know 11:58:50 no it doesn't 11:58:54 so just have the fork compile the extensions. 11:59:02 you wont be able to handle more than one connection then 11:59:18 sure you can, in fact in more than one way 11:59:33 method 1: event driven sockets 11:59:50 method 2: hand off request to a thread 12:01:46 A web server need not have multiple threads/instances 12:02:05 it just takes some kind of multitasking to handle multiple connections simultaniously 12:02:19 yep, that's event-driven 12:02:26 cooperative multitasking would work great 12:02:34 well, yes and no 12:03:11 Here's how I imagine it: 12:03:12 it actually turns out to be quite efficient ... but if a request has a lock-up for some reason, the whole server dies brutally 12:03:40 TCL uses that method, actually, so I'm quite familiar with it 12:04:42 the core, manages connections, and reads and writes to them. when it recieves a connection, it openes it and reads the request into memory. when it has the full request (or maybe a significant portion) it calls a word to handle it. This word can read the request, and writes a response (in memory). (this is fast.) then returns to the core 12:05:13 the core continues looping through the open connections, reading available data, and sending responses when they are available 12:05:31 * MrReach nods 12:05:43 what happens if one of the handler words locks up? 12:05:49 bad things 12:06:31 lol 12:06:53 on the other hand, if one uses threads or fork, a crashed word poses a rather large memory leak 12:07:21 at least it doesn't quit altgether, though 12:08:22 it does make things more complicated to protect against crappy code 12:08:55 one solution boing to give it it's own protected memory space. 12:09:07 well, even if the code is excellent, problems can still happen 12:09:30 a db request might take 30 secs to fulfil, for example 12:09:34 another being use an interpreted/emulated language that cannot crash, or exceed it's memory bounds, and can stopped after a given execution time 12:10:25 trying to think of something else that might go wrong and be noone's fault 12:10:56 filesystem might get full on a message posting page 12:11:02 if a db request takes 30 secconds (under GNU/Linux anyway) the whole machine will grind to an almost halt. 12:11:04 or during a file upload 12:11:16 yep, Herkamire 12:11:43 even excellent code can't foresee every possible thing that might go wrong 12:11:56 sure it can 12:12:03 asside from hardware failure 12:12:16 add to that a hostile environment where people "out there" are deliberately trying to crash the software 12:12:25 I don't see any problem with writing software that knows it's limits. 12:12:45 it knows how much ram it has, and how much HD space, and execution time. It then does what it can with those. 12:13:43 i usually work under the assumption "this code will crash eventually" 12:14:06 and try to plan for how to clean up the mess and go on 12:14:11 UNIX programming encourages people to pretend that there is as much RAM/disk/whatever available as you want, and you should just ask for how much you want. 12:14:23 yep 12:15:05 I think that's stupid 12:15:46 it's not generally the way I think 12:16:11 but I no longer try to conserve every byte like when I was writing for a C64 12:16:26 (to make sure I'm clear, when I said 'stupid' I was refering to what I was talking about) 12:16:36 right, I understood 12:17:06 I don't conserve every byte either 12:17:20 I have not made a dynamic memory allocator for herkforth, and I'm very reluctant to do so 12:17:22 i've got lots of faults, but criminal stupidity isn't one of them (unlike Pres. Bush) 12:17:48 12:17:57 in any case ... 12:18:13 the source text eventually ends up as a memory image 12:18:28 a binary memory image 12:18:50 which will get called at the appropriate time 12:19:07 but how does one change that image at runtime? 12:19:18 huh? what source text? 12:19:47 Herkamire: you must have missed the axioms for this convo 12:20:07 I was talking about a web server that was under development 12:20:08 I did not read much backlog before I joined. 12:20:28 and how to change behavior at runtime without rebooting the entire server 12:20:44 (incremental development) 12:21:39 I see. a particular web server? 12:21:47 no 12:21:51 ok cool 12:21:59 one i'm considering writing in forth 12:22:06 very cool 12:22:20 changing it while it runs is an interesting problem 12:22:41 i've been using one written in TCL ... which is an interpretive language, and I *REALLY* like the live editing 12:23:17 but it's not all that effient, or stable 12:23:28 you want to be able to change the core? or just the request handlers? 12:23:50 handlers, mostly, i'd expect a reboot when changing the core 12:24:21 although everything past reading config files could be considered "handlers" 12:24:49 in my mind the core includes managing connections and multitasking 12:24:54 "We got a new connection ... Who ya' gonna call?!" 12:25:07 Ghost Busters! 12:26:03 --- join: tathi (~josh@pcp02123722pcs.milfrd01.pa.comcast.net) joined #forth 12:27:39 I really like the idea of allocated image blocks, although it would be a nightmare to implement 12:27:59 it would fit *SO* elegantly with threading 12:31:02 not so elegantly with fork(), but fork() has large overhead anyway 12:32:39 with herkforth I could just change the source, and call the bootstrapping process 12:32:51 it would recompile it's self, and call the new core 12:33:11 would that be in a new process?? 12:33:12 this should work fine so long as the connections are held as persistant data 12:33:22 everything that's still in the sources 12:34:33 --- join: slava (~slava@CPE00096ba44261-CM000e5cdfda14.cpe.net.cable.rogers.com) joined #forth 12:34:35 howdy 12:34:45 hiya, slava 12:35:27 I440r: how hard would the binary image blocks be to do in IsForth?? 12:35:47 MrReach: what do you mean "binary image blocks"? 12:35:55 --- join: madwork_ (~madgarden@derby.metrics.com) joined #forth 12:36:07 something like ... 12:36:40 --- part: madwork_ left #forth 12:36:48 hmmm well. if you allocate a memory map and specify its address not that difficult 12:36:54 allocating some memory ... pointing H at it, loading sources, saving entry points into a variable, reseting H back to the main dictionary 12:37:05 compiled isforth code isnt exactly relocatable 12:37:21 yes. but the buffer would have to be at a specific address. 12:37:24 right, it has to be compiled where it's going to live 12:37:30 yes 12:37:48 heh, reloading it pretty easy ... 12:37:52 thats how i was planning on doing overlays 12:38:07 just memory map an overlay buffer at a specific address, divide it into overlay list and overlay head 12:38:39 allocate a new block, do the same process, reset the variable that holds the entry point ... FREE the previous block (after waiting for stuff that might be using it) 12:38:52 you would need an overlay vocabulary and IT would need to be saved with the given overlay 12:39:04 it would also restrict you to ONE active overlay at a time 12:39:33 dont need to free - you would do an anonymous mapping at the required address and read the file into that buffer 12:39:42 you can unload the file without unmapping the buffer 12:39:49 right, but what about when you need to recompile? 12:40:08 (source change) 12:40:24 well you would unload the buffer, reset the head and list pointers and erase all threads in the overlay vocabulary 12:40:42 when the overlay is compiled you would save it out with some sort of file format 12:40:50 thers more than just list and head space to save 12:41:12 like i said, you would have to also save the vocabulary itself (i.e. all the threads in the vocab array) 12:41:36 the vocabulary would be in main program space - 12:41:45 erm ... i'm wondering if you envisioning the same thing I am 12:41:55 you wouldnt be allowed to do 'overlay definitions" 12:42:12 because that wouldnt adjust head and list pointers for the overlay 12:42:23 actually, how it's done isn't important ... only that the server picks up source changes automatically 12:42:37 and that a lockup doesn't crash the whole contraption 12:42:39 not sure how that would be accomplished 12:43:09 ok, what segments does isForth have by default? 12:43:22 there's 3 I can think of 12:43:27 --- quit: madwork (Read error: 60 (Operation timed out)) 12:43:33 code, list, and dictionary 12:43:47 are there others? oh! user variables 12:43:52 that's 4 12:43:59 isforth does not have user variables 12:44:26 no, but it needs a place to store info, and that prob seperate from the other three mem segs 12:44:35 define info 12:44:49 VARIABLE blah blah OFF 12:45:15 well the variable body holds its value 12:45:26 the variable would be in overlay list space 12:45:29 so it's in list segment? 12:45:33 yes 12:45:37 ok 12:45:49 the x86 is NOT a freekin harvard architecture 12:45:51 dammit :P 12:46:02 pmode tries to turn it into one tho 12:46:13 isforth unmakes that restriction 12:46:13 well, yes and no 12:46:27 i sysmprotect all memory to +rwx 12:46:30 it *CAN* be harvard arch, but nobody writes OS's like that 12:46:37 linux 12:46:53 you cannot execute out of a memory map defined as DATA 12:47:05 i.e. you cannot normally execute writeable memory 12:47:10 sure you can 12:47:17 not unless you mprotect it 12:47:23 for instance 12:47:25 ok 12:47:26 foo: 12:47:31 mov [foo], 0 12:47:41 assemble that to an elf and gdb it 12:47:44 it will segfault 12:47:49 in linux 12:48:10 yep 12:48:14 because the code is in a code segment (.text) and thats not normally writeable 12:48:43 when isforth runs it breaks its memory out to 1 meg and then mprotects it to +rwx 12:48:47 but you can write code that "MOV EAX , [ some number from variable ] ; JMP EAX 12:49:09 only because on an x86 executable code HAS to be readable 12:49:14 not so on other processors 12:49:29 heh, not writing for other processor 12:49:29 anything thats +x on an x86 is automatically +r 12:49:33 and vice versa 12:49:46 so how does openbsd implement r^x then? 12:49:48 me either :) 12:50:03 no idea 12:50:13 chances are it emulats it on an x86 12:50:13 how hard would it be ... 12:50:40 to compile into a seperate memory segment(s) that can be discarded/replaced later? 12:50:48 you physically cannot prevent reading of a block thats defined as executable on an x86 12:50:56 easy 12:50:58 into allocated memory, rather 12:51:12 look at how i do headerless words 12:51:21 headers> switches back into headerless mode 12:51:45 i think of them as arrows pointing to where the headerfull words are 12:51:56 the only issue I can see is where to store variables in truely threaded applications 12:52:12 you could have ovelay> and THAT would need user variables 12:52:42 would be almost impossible, would be better to use fork :) 12:52:47 i.e. copy on write 12:52:55 naw, don't say impossible 12:53:09 i said "almost" heh 12:53:20 it would need some fundamental changes in isForth, though 12:53:32 such as ??? :) 12:54:02 a pointer to the user variable area, and words like @ and ! would need to use it 12:54:22 how about a "user" extension and u@ u! 12:54:32 uw@ uw! ud@ ud! 12:54:47 erm - would probably need ucmove> etc too 12:54:55 and never touch a variable from within anything but the main thread? 12:55:00 i.e. a complete copy of every word in memory.1 but for user space 12:55:14 yes 12:55:22 but thats anti forth 12:55:34 thats making a distinction between system and user 12:55:42 * MrReach nods 12:55:48 there is no user. there is no system, there is NO SPOON! ther is only forth! 12:55:55 heh 12:56:07 but i can see the need for the spoon in this case :/ 12:56:08 haha 12:56:15 each thread should assume it has all the variables, with deliberate action needed to talk among threads 12:56:38 rather than the other way around 12:56:48 why threads ? 12:56:51 why not fork ? 12:57:09 that scenario lends itself to fork 12:57:14 1. processes can't talk to each other as easily as threads 12:57:29 correct. they would need pipes and those are slow 12:57:30 2. threads generally don't share allocated memory 12:57:30 OR!!!! 12:57:32 shared memory 12:57:39 oops, typo ... 12:57:46 2. processes generally don't share allocated memory 12:57:47 they can in linux i believe 12:57:51 err might be wrong about that 12:57:56 sysv shm! 12:57:59 its really simple 12:58:04 yup 12:58:14 cept thats deprecated now isnt it ? 12:58:18 no 12:58:22 a lot of programs use it 12:58:22 lol so many new fangled ways of doing things 12:58:25 3. task switch among processes has 10x the overhead of thread switching 12:58:26 i ferget :) 12:58:28 its been around for a long time 12:58:37 since SVR4 at least 12:58:45 yeah, SysV dates to the 70s 12:58:45 mrreach not if isforth is the one doing the switching :) 12:58:52 no need to jump into kernel space at all 12:59:14 if there are seperate processes, the kernel needs to switch among them 12:59:39 but you're back to cooperative MT in forth again 12:59:44 maybe not 13:00:02 just need to implement timers and signals in isforth 13:00:06 which i havent done yet 13:00:15 could be preemptive 13:00:31 hrm maybe not 13:00:40 that would still require some kernel interaction 13:00:51 hey, would you have a conniption is someone asked you to move variables into a single variable block that could be easily cloned? 13:01:00 and would mean your still doing user/kernel space switching 13:01:11 lol 13:01:37 tell you what. you implement it and ill look it over and decide then :) 13:01:45 ok 13:01:52 there will be SOME overhead 13:01:53 how about having a variable base register 13:02:18 that's what I'm thinking, but it will reduce the number of available registers by one 13:02:34 err no i dont mean a cpu register 13:02:38 there arent any free 13:02:43 but allow for EXTREMELY fast thread switching 13:02:45 erm well edi is 13:03:00 but some words use edi for scratch 13:03:03 i.e. its not saved 13:03:21 right, I understand I'd have to hunt down all words that used a particular register 13:03:22 it would make the kernel a little more complex 13:03:52 plus you would have to document the whole adventure :) 13:04:07 you know, this would allow the difference between kernel thread changes and forth thread changes to become almost invisible 13:04:19 i was going to do some more documenting last night, got drunk instead lol 13:04:35 ah! wish I'd know ... I'd have joined you 13:04:46 which is why im not having the aforementioned conniption over the added complexity 13:04:51 lol 13:05:17 heh, I have probs predicting which ideas you're gonna like and which you're not 13:05:29 well never be too scared to make suggestions 13:05:36 all i can do is bite your head off :) 13:05:50 i'm not generally, but always prepared to get my ass chewed 13:05:56 lol 13:06:04 wear padding 13:06:07 --- join: wossname (wossname@HSE-MTL-ppp66560.qc.sympatico.ca) joined #forth 13:06:28 this shouldnt add TOO much complexity if done right 13:06:30 now i'm wondering ... 13:06:45 is this change really needed for what I want to accomplish? 13:06:46 and there are some places in the kernel that are quite complex 13:07:48 yes, i'd get to deal with I440r-isms 13:07:57 such as ??? 13:07:58 lol 13:08:02 my ism's are GOOD ones :P 13:08:12 the mix of variables and constants 13:08:25 dont forget var and const too 13:08:27 they're ok, but often unexpected 13:08:35 erm i should tell you my plan for const however 13:08:39 and THIS is very close to it 13:08:47 (reading over sources ... "WTF?") 13:09:04 i want all vocabularies compiled into their own spaces... i.e. one here/hhere per vocaulary 13:09:05 * fridge ponders 13:09:20 and i want to be able to discard an entire vocaulary on demand 13:09:33 oh, good, that would make my dynamic dictionary easy 13:09:45 for instance, when you turnkey there isnt a single definition in the compiler vocab that has any further use 13:09:49 i.e. its ALL deadwood 13:09:57 yep 13:10:04 i just havent figured out how to implement this 13:10:05 zimmer fought with that, too 13:10:11 he did ? 13:10:33 yep, Win32Forth has system/application 13:10:34 i think i need to be metacompiling before i can do this 13:10:50 TURNKEY pitches everything in system 13:10:59 oh... i wasnt finished heh - the compiler vocab would be marked as transient (some flag in the vocab array) 13:11:14 when you fsave it remains but turnkey discards transient vocs 13:11:24 * MrReach nods 13:11:31 ALL consts would be compiled into the compiler vocab no matter what voc is currently current 13:11:31 all vocabs need that flag 13:11:41 some get kept, others don't 13:11:53 no const would need to be kept accross a turnkey 13:12:01 a const is a state smart immediate constant 13:12:11 huh?? 13:12:15 it compiles a literal if in compile mode 13:12:17 0 const foo 13:12:20 foo . 0 ok 13:12:21 oh! ok 13:12:27 : blah ... foo .... ; 13:12:34 foo there compiels as a literal 0 13:12:47 the definition for foo is deadwood on turnkey!!! 13:13:19 you would be able to define 28467529378465927384659 things and the ones you dont use dont take up any space in your turnkey 13:13:30 i.e. take all those c .h files and create forth versions of them 13:13:52 the .h file would define 2985462978467849 consts and you would use ONE of them 13:14:20 i love you mrreach, everytime you're here, there's a lot of forth talk :D 13:14:22 you've redicovered that a constant is not a variable is not a value 13:14:47 theyi have variable, var, const and constant 13:14:53 #forth usually has too little forth talk 13:14:57 erm ... thanks, futhin ... I think 13:15:02 i discourage variable and constant 13:15:21 var and const are better. i think they work the way variable and constant should have from day 1 13:16:08 do any linux forth's have words for putting graphics on a framebuffer? 13:16:08 ok, ESI is the return stack pointer? 13:16:16 the name "var" is MUCH better than "value" <-- someone had a gay moment when he named that 13:16:26 isforth will... eventually 13:16:31 no 13:16:33 esi is IP 13:16:35 I440r: they were trying to avoid breaking existing code 13:16:37 EBP is RP 13:16:42 * slava is about to have a gay moment 13:16:44 * slava grabs I440r's leg 13:16:54 i dont object to the method 13:16:56 just the name 13:17:03 fridge, that would be cool 13:17:09 (camp voice and limp wrist) "value" 13:17:16 fridge, none that i know of but it wouldn't be too hard to implement i guess 13:18:08 mrreach do var and const would need to be in variable space too 13:18:11 heh 13:18:13 and thats a problem 13:18:23 because this means that all vocabs will need their own variable space 13:18:43 actually const wont need to be 13:18:55 my head hurts :P 13:19:00 right, was just about to say that 13:19:08 no reason that lits need to change 13:19:40 anything that writes to or points at list space needs to be changed 13:19:50 except the compiler, of course 13:19:58 right 13:20:11 ooh this will break the decompiler too :) 13:20:25 shouldn't massively break it 13:20:28 no 13:20:34 if it uses @ and ! 13:20:43 i dont think it will massivly break anything 13:20:54 but the decompiler would need to be made user space aware 13:21:26 well actually, it wont need to be if i cansel one LITLE plan :) 13:21:38 i was planning on listing values when i "see" a variable or constant 13:21:47 or a deferred word 13:21:56 no reason that shouldn't work 13:22:00 oh! user deferred words ? 13:22:07 will deferred words need to be userified ? 13:22:13 i think so 13:22:16 not really 13:22:27 oh! yes 13:22:28 y not ? 13:22:35 eek 13:22:38 they are like regular variables, right? 13:22:45 they are like constants 13:22:47 that execute 13:22:58 a_constant: 13:23:02 call doconstant 13:23:04 dd value 13:23:10 a_deferred: 13:23:11 well, that depends if the compiler is the only thing allowed to change them 13:23:12 call dodefer 13:23:18 dd whereto 13:23:30 ' blah is foo 13:23:36 ANYONE can change them 13:23:48 turnkey relies on this 13:23:57 ' my-main is quit (or default) 13:24:00 turnkey my-app 13:24:16 i would object to a drastic modification of isforth into user/system 13:24:21 better move the dd into user space ... then dd on offest into the list space 13:24:47 doubly indiret it 13:25:14 ok, im confuzed again 13:25:34 were talking about a modification that allows a forth tasker 13:25:44 i.e. two instances of the same variable for two different tasks 13:25:46 dodefer might look like "mov eax, [esi]; add esi # 4;jmp eax" 13:26:09 and it might change to ... 13:26:24 you need to look at the code for dodefer 13:26:27 its in exec.1 13:26:29 dodefer might look like "mov eax, [esi]; mov eax, [eax];add esi # 4;jmp eax" 13:26:43 it would be pop eax 13:26:47 mov eax, [eax] 13:26:48 jmp eax 13:26:53 yeah, a detail thanks for mentioning it ... 13:27:41 different threads might defer to different targets ... ergo, there needs to be a place in user space to store the adr 13:27:43 cant do this without fork 13:28:12 how can you store multiple addresses in the same variable/constant/var/const unless your forking 13:28:15 right, the kernel API uses fork to start threads 13:28:23 no it doesnt 13:28:28 it doesnt use fork 13:28:30 it uses clone 13:28:38 no, a new thread copies (or copy on writes) the user variables 13:28:40 and theres no copy on write for a clone 13:28:48 threads dont 13:28:53 only a fork does copy on write 13:29:01 ok 13:29:22 which - if we need to fork totally negates the need for user variables :/ 13:29:32 part of the overhead of starting a new thread would be allocating a new user variable space, and copying the old one into the new one 13:30:05 which can still be fairly effient, 'cause it can be moved as a single block 13:30:14 the variable will contain a different value for each task. it will either be a different indirect target address for the value of the variable or simply the value of the variable for each task 13:30:24 ok 13:30:32 that makes selse 13:30:52 erm. no. that would be one variable space per vocabulary 13:30:55 cant get away from taht 13:31:02 because of my plans for transient vocabs 13:31:09 no, one user variable block per thread 13:31:15 nope 13:31:22 only once thread can compile 13:31:26 one user variable block per thread per vocab 13:31:29 otherwise it's total chaos 13:31:37 ok 13:31:46 how do you block compiles in a different thread 13:32:07 and how do you make variables which are compiled into a transient vocabulary disappear 13:32:09 you don't 13:32:17 forth has never provided safety nets 13:32:23 correct 13:32:41 compile code, spawn thread that uses it 13:32:42 i can accept users shooting themselves in the foot/head :) 13:33:08 do NOT spawn thread that compiles 13:33:24 or ALLOTs or commas 13:33:35 well... you can spawn a thread that asks the master thread to compile something :) 13:33:49 if it needs memory, it has to ALLOCATE it and store the pointer into a previously existing VARIABLE 13:34:15 and what if some other thread is already using that variable ? 13:34:19 oh it wont matter 13:34:26 right, private copy 13:34:27 this thread will have its own variable space 13:34:39 erm variable/constant/const/deferred space 13:34:48 no, can't have master compile for you, either 13:34:49 ALL of those need to be user-ified 13:35:00 because dict variables won't be updated 13:35:04 which brings us back to the "one per thread per vocabulary" 13:35:25 define a deferred word in the foo vocab 13:35:39 it MUST be in the foo vocab 13:35:51 not in some funky magic overlay vocab 13:36:09 right, but the address is stored in variable space 13:36:12 you have to be able to HIDE that item by removing its parent vocab from contex 13:36:20 you dont understand 13:36:24 ok 13:36:31 every vocabulary will HAVE to have its own user space 13:36:52 ok, the part I don't understand is "why" 13:36:55 if i define a variable in the foo vocabulary it will have to go in the foo vocabs user space 13:37:04 foo previous 13:37:08 foo is no longer in context 13:37:13 so neither should any of its variables 13:37:37 otherwise you are making it impossible to make multiple words of the same name 13:37:42 simply because they are of type variable 13:38:00 ok 13:38:10 and hers another problem 13:38:20 this extension will need to be part of the kernel 13:38:32 and it will need to have the memory manager available to it 13:38:35 deleting the vocab might leave holes in variable space ... is this unacceptable? 13:38:38 i.e. isforth memory manager 13:38:59 it wont because deleting the vocab will also delete that vocabs variable space 13:39:18 the kernel will be relying on an extension 13:39:25 i cant see a way out of that one either 13:39:47 we COULD have multiple variable areas, but it would greatly complicate matters, because the value in the cpu register is no longer a constant 13:40:36 you would need one pointer per voc 13:40:46 err 13:40:49 foo @ 13:41:03 search context for foo 13:41:06 find foo 13:41:11 see if its a variable 13:41:27 if so read variabe base register for this vocab 13:41:27 that could turn into insane overhead 13:41:32 then execute variable 13:41:36 way more complex 13:41:44 ya 13:41:56 !!!!!!!! 13:41:58 lol 13:42:35 thers a solution but it will restrict you to a specific number of defineable vocabs 13:42:45 just create an array of "max-vocabs" dwords 13:42:49 ok, a variable allocates a word in user space 13:43:14 all variables in all vocabs allocate in same region 13:43:22 when find searches a given vocab it loads that vocabs user space into edi 13:43:31 if a vocab is deleted, those vars are no longer accessible 13:43:37 weather were searching for a variable or not 13:43:48 the overhead isnt too big but its a restriction to N vocabs 13:43:51 that would be the simplest method 13:44:14 wastefull of space 13:44:22 but acceptable 13:44:28 maybe 13:44:38 * MrReach scratches his head 13:44:44 yea lol 13:44:49 which is better 13:44:57 restricting you to N vocabularies 13:44:59 or wasting space 13:45:14 runtime overhead is to be avoided, no matter the effort needed 13:45:31 the overhead for one user space per vocab is small 13:45:43 i solved that already. but it adds the above restriction 13:45:51 add an entry to each vocab 13:45:52 yeah 13:46:08 when find searches a given vocab simply have IT load that vocs user space base pointer into edi 13:46:25 edi will always be correct when the variable/const/var/constant/deferred executes 13:46:47 but the array has to be pre-allocated 13:46:57 not really 13:47:01 and a forget of a given vocabulary will need to bubble the array 13:47:06 no ? 13:47:08 each vocab could have a base pointer 13:47:18 as part of the vocab def 13:47:24 i think 13:47:35 arg! complicated piece of shit!!! 13:48:41 lol 13:49:57 the vocabs will eventually need this when they are in their own space 13:50:07 C progs never have this problem because they don't suddenly drop large chunks of their object code 13:50:08 but that will definatly not be implemented till im metacompiling 13:50:26 unless you can show me how to get nasm to assemble into multiple .text and .data regeons 13:50:31 i.e. NOT concat them 13:50:38 lol 13:50:45 how about forget forget :P 13:50:51 have you started on the metacomplier? 13:50:55 no 13:50:59 that will need the assembler 13:51:11 when i have the assembler i will be able to do the metacompiler 13:51:14 what level?? 13:51:20 ? 13:51:29 i386? pentium? 13:51:45 386 to p6 including all fpu, mmx, see and sse2 is what i want 13:51:53 but thers another absolute requirement :( 13:52:02 just grab the i486 assembler out of Win32Forth 13:52:18 i will not accept any assembler that requires anything other than SLIGHT modifications to the existing sources 13:52:20 err no. 13:52:21 i cant 13:52:26 it will taint my lisence 13:52:44 :D 13:52:47 its PURE GPL 13:53:00 if i extend then i will have to be PURE GPL 13:53:07 that is absolutely NOT acceptable to me 13:53:12 right 13:53:24 so the only solution is for me to write the assembler myself 13:53:27 oh. 13:53:36 theres anotehr thing i would like 13:53:45 ??? 13:53:47 all opcodes generated in OCTAL 13:53:57 huh? 13:54:01 hex opcodes on an x86 is utter stupidity 13:54:03 in the disassembler? 13:54:06 no 13:54:07 in the assembler 13:54:25 intel opcodes are encoded in octal NOT hex 13:54:28 whatever ... BASE works excellently for that 13:54:42 intel howeve ronly publshes them in hex and totally fucking obfuscates the encodings 13:54:46 it's all bit-stuffing, in any case 13:54:47 you dont understand 13:54:56 hang on 13:59:55 http://www.sunbeem.net/quickforward/forward/qf/src/docs/opcode.html 13:59:58 read that 14:00:05 i want to base my assembler on THAT info 14:00:20 i kinda already started but aborted work till i did the docs 14:01:11 ok 14:01:51 did i ever show you my 8051 assembler ? 14:03:44 i've seen it, don't remember it 14:03:57 i dont think you will have, its unreleased 14:04:11 the disassembler is on the web page and in the bz2 but this isnt released yet 14:04:37 i did it as a proof of concept, i want my x86 assembler to work in a similar fassion 14:04:42 got an email ? 14:04:43 message it 14:04:53 so spam bots dont mine your addy :) 14:06:20 my email is totally messed up right now while setting up domain 14:06:27 doh 14:06:35 not sure if i can dcc or if you can accept lol 14:08:04 one or other is failing 14:08:26 try again, please 14:09:30 see it ? 14:09:45 yep, and accepted 14:09:52 not moving 14:09:58 firewalls are stoping it 14:09:59 doh 14:10:18 ??? 14:10:29 see if can send in icq 14:11:49 ok, nevermind then 14:12:02 later, put it on your webserver 14:12:27 cant from here and have no connection in motel :/ 14:12:37 heh 14:12:59 ok, i've gotta go for now 14:13:08 will try to get back this evening 14:13:14 k 14:13:19 try implement that stuff:) 14:14:03 * MrReach norts through his nose 14:14:07 --- part: MrReach left #forth 14:19:47 --- quit: warpzero ("Tried to warn you about Chino and Daddy Gee, but I can't seem to get to you through the U.S. Mail.") 14:24:12 --- join: lalalim (~lalalim@pD95EA31E.dip.t-dialin.net) joined #forth 14:28:19 --- quit: lalalim_ (Read error: 60 (Operation timed out)) 14:57:26 i'm coding complex trigonometric and hyperbolic functions and going nuts w/ managing the stack 14:59:33 lol 14:59:35 y ? 14:59:45 you using floats ? 15:00:27 just for the hell of it 15:00:33 ick 15:00:35 lol 15:00:35 an excercise, if you will 15:01:15 also to insipire me to do a benchmark and a) see that its incredibly slow b) optimize my compiler for numeric code 15:01:26 hjeh 15:02:50 --- quit: wossname ("woah") 15:03:52 its real ugly, look at this factor for instance 15:03:53 : real-cosh-sinh ( x -- cosh sinh ) 15:03:53 dup exp swap neg exp 2dup + 2 / -rot - 2 / ; 15:04:55 and here is the encore: 15:04:56 : cosh ( z -- cosh ) 15:04:56 #! Complex hyperbolic cosine. 15:04:56 re-im dup real-sin swap real-cos rot real-cosh-sinh dup 2* ; 15:05:35 yes that's all i've achieved so far 15:05:40 heh 15:05:44 well its a start 15:05:52 erm why are you not using table driven sin/cos ? 15:06:08 real-cos/sin is the C library 15:06:17 ick :) 15:06:17 real = real numbers 15:06:23 right 15:18:29 --- join: warpzero (~warpzero@dsl.142.mt.onewest.net) joined #forth 15:49:08 --- quit: tathi ("volleyball") 15:49:56 --- join: madwork_ (~madgarden@derby.metrics.com) joined #forth 15:50:04 --- part: madwork_ left #forth 15:51:21 mmmm... volleyball 16:00:18 slava, 1/x is faster than exp. 16:01:20 And do not write universal functions like "sincos." 16:01:49 That's overcomplexification. 16:02:52 : ch exp dup 1/x + 2/ ; 16:03:03 : sh exp dup 1/x - 2/ ; 16:03:32 Feel difference. 16:06:36 thanks 16:07:26 And for complex functions it's better to write one zexp and use it: 16:08:02 : zch zexp 2dup z1/x z+ z2/ ; 16:08:17 Everything's the same. 16:09:35 mark is opped? 16:09:39 * arke checks buffer 16:11:59 * arke checks logs 16:15:11 oh, autoop 16:15:12 heh 16:21:57 --- join: SDO (~SDO@co-trinidad1a-156.clspco.adelphia.net) joined #forth 16:22:31 looksi, relisted... http://www.jdate.com/Applications/HotList/View.aspx?CategoryID=-1 16:47:25 * arke is away: brb 16:59:03 arke: that's right, all the cool guys get auto-opped 17:11:17 ya know what? 17:11:19 fuck you./ 17:11:19 :) 17:18:51 http://eugeneciurana.com/pastebin/pastebin.php?show=1925 17:20:05 slava: for factor? 17:20:08 yup 17:20:20 cool 17:20:26 looks just like forth 17:20:38 except its typed 17:20:46 bleh. 17:20:58 as i was just pointing out in #hprog.. 17:21:00 typing=bad 17:21:26 depends on what you're coding etc 17:21:38 Slava, what does "recip" mean? 17:21:46 ASau, 1/x 17:21:58 Is it abbrev.? 17:22:14 reciprocal 17:22:18 bad name for a word i guess 17:22:25 there's some stuff i want to rename, and eliminate... 17:22:52 Maybe it should be named "inverse?" 17:23:13 Like "inversion" in geometry. 17:23:15 maybe 1/x -- i never considered that name until you posted code 17:24:15 Though it seems "recip" is good too. 17:24:25 Thanks for an idea. 17:29:12 cos z = ch (iz) 17:29:35 --- quit: Robert (Read error: 54 (Connection reset by peer)) 17:29:36 a few of the arc formulas are wrong. i haven't tested those yet. 17:29:37 sin z = -i sh (iz) 17:30:15 you think i should define sin/cos like that? 17:30:33 Just consider it. 17:30:38 yup. 17:34:32 --- join: Robert (~snofs@c-bf5a71d5.17-1-64736c10.cust.bredbandsbolaget.se) joined #forth 17:35:30 BTW. Why not double and calculate some functions from ch (2z)? 17:35:39 That'd be more effective. 17:36:26 what would you call a Forth word which does nothing but rearrange the stack and then call a few other words? 17:36:56 Stack juggler. 17:37:11 Why not? 17:37:15 i call it a 'shuffle' :) 17:37:27 i like ASau's term too 18:04:14 "bad" 18:13:54 I just sent off a proposal for 44% more than I usually charge. 18:14:23 to someone who is not good to work for 18:24:51 --- join: Sonarman (~matt@adsl-64-169-92-7.dsl.snfc21.pacbell.net) joined #forth 18:26:31 * Herkamire goes off in search of his anaglyph glasses 18:28:52 What for ? 18:30:37 --- join: doublec (~doublec@coretech.co.nz) joined #forth 18:30:55 I wanna play with 3d graphics some more 18:32:03 --- quit: qFox ("this is mirc's last attempt of communication...") 19:18:12 dang 19:31:58 I can't find them 19:32:00 poooey 19:35:51 hniii' 19:36:15 sup guys 19:36:21 you should listen to the radio :) 19:36:27 wza.us/radio.html 19:36:32 ack 19:36:32 ack 19:36:32 ack 19:36:33 ack 19:36:33 ack 19:36:34 ack 19:36:36 ack 19:41:58 --- join: kc5tja (~kc5tja@66-74-218-202.san.rr.com) joined #forth 19:42:05 --- mode: ChanServ set +o kc5tja 19:42:24 arke: nak 19:42:40 hi kc5tja 19:42:43 hi fridge 19:45:50 hey kc5tja you should listen to my radio internet station 19:46:36 warpzero: URL again? 19:46:47 wza.us/radio.html 19:47:41 warpzero: anything of interest playing? Rush? Genesis? Red Hot Chili Peppers? AC/DC? 19:48:48 arke: So far, seems to be techno. 19:49:01 thats fine too. :) 19:49:22 arke: no :( i kicked it off with AC/DC 19:49:26 kc5tja: i do a wide range of stuff 19:49:33 --- join: hefner (~hefner@pool-141-157-60-191.balt.east.verizon.net) joined #forth 19:49:38 I'm just reporting what I'm hearing so far. 19:49:59 yeah, techno right now. 19:50:04 kc5tja: how do you lke lisps? 19:50:25 arke: I like them, but not as much as Forth. But they are very powerful languages. 19:50:59 Scheme is nice, although I haven't done too much with it. 19:51:07 its in my top 3 favorite HLL :) 19:51:23 which is, in order, Forth, Objective C, Scheme 19:52:15 i need to try out Objective C 19:52:22 warpzero: it's AWESOME 19:52:34 warpzero: albeit still C, it does OOP just great. 19:52:41 warpzero: MUCH better than C++, imho 19:52:47 yeah i bet 19:52:52 C++ kinda... uh... sucks 19:52:58 uh huh 19:53:14 C++ has stronger compile time type safety if you make use of templates. 19:53:18 (compared to C). 19:53:30 that is its advantage, IMO. 19:53:42 templates are shit. 19:53:49 well, i shouldn't say that. 19:53:50 its kindof an advantage 19:53:52 they're very nice 19:53:56 but they're horrible 19:54:48 Darn, for a bit that sounded like Santana. 19:54:57 it is 19:55:09 Hmmm..never heard this song from them before. 19:55:13 Not at all like their usual style. 19:55:17 really? 19:55:26 huh 19:56:03 When Santana breaks into a rip-roaring guitar solo, then I'll be re-affirmed. :) 19:56:55 yeah here it is 19:56:58 :) 19:57:01 i like this song :) 19:57:05 It's good. 19:57:10 Santana is an awesome band. 19:57:18 :) 19:57:47 Yup, it's Santana. Obligatory rhythm section solo. :) 19:57:52 Although short. :/ 19:58:06 :/ 19:58:41 This song has an interesting introduction. Almost introspective. But I know that won't last long.. :D 19:58:51 I'm here today to pump up the uplift mofo party plan 19:58:51 a plan based on a band, a band based on a plan 19:58:51 there should be no slaves in the land of lands 19:58:51 it's a hollywood jam 19:59:40 nah it pretty much sticks to its guns kc5tja 20:01:41 this is a cool song... 20:01:45 yeah 20:01:53 Mu-Ziq is pretty fucking good. 20:02:05 It is, amazingly. I don't normally like electronic music like this, but this is pretty good. 20:02:35 Except for the captain insano drumming, the music behind it reminds me much of seascapes (above and below the water). 20:02:53 warpzero: send me mp3s of that! 20:03:00 OGG! 20:03:06 Support your local open source software! 20:03:16 i have them in what i have them in 20:03:29 POLICE!! I haven't heard this song in YEARS!!! 20:03:45 God, I feel so old now... :) 20:03:49 its a good song 20:03:53 :-P~ 20:04:06 do you folks want some more Mu-Ziq 20:04:08 warpzero: well, send me that song and all the other ones like it 20:04:14 warpzero: :) 20:06:40 well see how you like this next one its pretty mellow for the artist that does it 20:08:56 i like 20:09:15 I don't like this song nearly as much as the previous techo song. 20:09:25 oh 20:09:32 same ehre 20:09:35 but I still like it 20:09:43 except that it sounds like a little acid on crack :P 20:10:28 For all the raver music fans out there, y'all should listen to Be Careful With That Axe, Eugene. :D 20:10:35 That is easily the single most evil song I've ever heard. 20:10:40 (by Pink Floyd, of course!) 20:10:59 warpzero: play that song if you have it 20:11:23 for x in Acro*; do 20:11:24 oops 20:11:33 :) 20:11:46 i dont have any pink floyd sorry 20:14:20 skynyrd 20:14:21 :) 20:14:25 HAH! Lynrd Skynnyrd (yr hyw evyr Ys yre ysed.) 20:15:06 :) 20:15:25 I wonder how bad the DrScheme GUI stuff is. 20:17:05 its *usable* but nothing stellar. 20:17:26 after the next song i think ill sign off 20:17:32 :( 20:17:35 im getting tired 20:17:43 warpzero: send me that muziq song though 20:19:04 k 20:19:08 warpzero: Is this bjork? 20:19:26 Bjork and Plaid 20:20:06 kc5tja: btw, do you know about FICL? 20:22:18 arke: I know OF it, but I've never used it. 20:22:59 kc5tja: well, it's VM is pretty horrible 20:23:08 even the new one thats supposed to be so much better. 20:23:26 what's hoirrible about it? 20:23:38 arke: FICL is intended to be a scripting language; not a self-hosted Forth environment. 20:23:45 Sonarman: No direct literals (except -2, -1, 0, 1, 2) 20:23:52 Sonarman: and also, its switch-threaded :) 20:23:59 kc5tja: I know. even for that, it's bad. 20:24:02 kc5tja: well, not bad 20:24:05 kc5tja: just kinda sucky :) 20:24:31 kc5tja: I was thinking of a simple stack-addressing bytecode 20:24:37 you'd rather have DTC/ITC than switch-threaded bytecode? 20:24:51 what do you mean, no direct literals? 20:24:55 Sonarman: definetely 20:25:03 yeah, me too i think 20:25:28 I've used ficl on a cellphone to develop an nntp newsreader. worked well and ran well. 20:25:35 kc5tja: what do you think of this song? 20:25:41 Sonarman: when you want to push, say, 5, you have to compile 2 2 1 + + 20:26:06 doublec: :) 20:26:06 jeezus 20:26:14 doublec: could be faster though :) 20:26:18 Sonarman: :) 20:26:21 we are talking about ficl.sourceforge.net right? 20:26:45 If I want to push 5 I just push 5. No need to do 2 2 1 + + or am I misunderstanding? 20:26:57 warpzero: Better than the other one. But not as good as Enigma. :) 20:27:06 oh pooh 20:27:08 Enigma? 20:27:08 well goodnight 20:27:09 The phone was the Nokia 9210 - it has a keyboard so developing on it wasn't too bad. 20:27:20 Sonarman: A very cool band. 20:27:21 kc5tja: oh, i thought you were talking about a virtual machine 20:27:21 doublec: well, _you_ do 5, but FICL's internal VM executes 2 2 1 + + 20:27:25 :) 20:27:30 doublec: unless I'm missing something. 20:27:32 oh, ok 20:27:40 doublec: but from the code here, that's how it seems like. 20:27:46 warpzero: 'night 20:28:06 night warpzero 20:30:52 Hm. And what is good in ObjC, I wonder? 20:33:11 As for me, I like Scheme more than all Cs. 20:33:30 At least it's very good calculator. 20:45:44 arke: ok, i have found evidence to suggest that ficl's system of handlign literals isn't as stupid as we'd thought 20:46:25 apparently, you were looking in vm.c 20:46:35 in that file PRIMITIVES are handled 20:46:54 but in ficl.h there is: 20:47:08 typedef enum { ... LITERAL, ... } WORDKIND; 20:51:06 it''s just that they made, -2 .. 2 primitives because those numbners are often pushed, so eliminating the overhead of fetching the literal value from IP for those numebrs seemded lieke a good idea 20:53:58 then why isn't that handled in the innerLoop? 20:54:51 Hrm. 20:54:52 Ooh. 20:54:53 I get it. 20:55:03 the innerLoop is separate :P 21:02:32 switch threading is silly 21:03:12 indeed. 21:03:16 Ban byte code! 21:03:20 Ban C! 21:03:31 ASau: sometimes you just gotta go with the flow though :) 21:03:38 slava: a jump table would be better, ey? 21:04:15 arke. Take eForth. 21:04:28 Hm. 21:04:47 Make eforth. 21:06:19 I would make a simple, stack-addressing bytecode with few instrucitons. 21:06:25 I guess 16 might even be enough. 21:06:33 or 32 21:06:39 defininetely so that I can mask though. 21:12:58 arke: what are you programming? 21:16:25 He's advancing Robert's F, AFAIK. 21:17:31 anyone know a free shell account provider off the top of their head? 21:17:38 telnet 21:19:09 http://sdf.lonestar.org/ 21:20:46 heh, we should have a forthswap week 21:21:06 where we each work on somebody else's forth instead of our own for a week 21:23:23 It's interesting idea. 21:23:46 Another week, though. 21:25:49 switch-threading does use a jump-table 21:26:07 unless yoru C compiler really sucks 21:26:58 Sonarman: I put out herkforth-0.6 21:27:14 s/put out/released/ 21:34:43 cool! 21:35:28 i'll check it out soon (can't do it now; homework, which IRC is keeping me from doing efficiently :) ) 21:51:26 --- quit: doublec ("Leaving") 22:13:23 --- join: Serg (~z@212.34.52.140) joined #forth 22:13:34 hi Serg 22:20:18 hi ! 22:20:37 * Serg gonna need new pants - main database was nearly lost 22:21:10 lol :) 22:23:43 Serg is my clock -- when he joins, I know I need to get to bed. :) 22:24:11 teehee :) 22:24:21 kc5tja: can I ask you something tho? 22:24:31 What's up? 22:24:35 kc5tja: what do you think about a stack-addressing bytecode? 22:25:07 You are aware that Java Virtual Machine is a stack-addressing bytecode, right? 22:25:28 (it's not a 100% 0-operand stack engine, but it nonetheless IS a stack machine) 22:25:42 all forthers of the world, move to las vegas! 22:25:43 er 22:25:46 mabe I got this wrong :) 22:26:00 what does stack-adressing mean? 22:26:03 I meant that instructions reference items that are X distance from TOS 22:26:05 like that 22:26:11 kc5tja: you planning on moving to las vegas anytime soon? ;) 22:26:17 xchg 0,1 <-- swap 22:26:18 futhin: No. 22:26:29 arke: Whatever. I have no opinions. 22:26:30 awww 22:26:40 futhin: Why, are you? 22:26:42 kc5tja: ... 22:26:42 ok 22:26:43 :) 22:26:45 yup 22:26:57 futhin: Wow. Big change. What's the occasion? 22:27:00 AND THEN HE MIGHT GET REAL ISP 22:27:05 haha arke 22:27:37 LV is a lot of fun sometimes, but boring a lot of times too. 22:27:43 Lots of shows to see there. 22:27:46 kc5tja: well i'd like to move to las vegas. i'll probably go there towards the end of the summer, and maybe stay there depending on how things develop 22:27:49 But lots of casinos too. 22:28:11 got two IRC friends with plans to move to las vegas 22:28:20 so if i move there that'd be interesting :D 22:28:32 two separate IRC friends 22:28:34 I have no problems with visiting LV now and again. 22:28:38 Maybe next year, I dunno. 22:28:44 But I sure as hell wouldn't want to live there. 22:28:49 OUTSIDE of LV, yes. 22:28:54 But not in LV itself. 22:29:00 how come? 22:29:06 i call our Moscow "Las Figas" - lotsa casinos and "figa" (fuck gesture) in a pocket 22:29:06 Because I like my solitude. 22:29:07 too flashy? noisy? 22:29:09 ah 22:29:24 :) 22:29:25 When the sun sets, I like to see at least a few stars in the sky, you know? 22:29:27 * arke had this cool idea 22:29:30 Being an amateur astronomer and all. 22:29:40 a city comprised of nerds 22:29:45 :P 22:29:58 heh 22:30:11 heh to kc5tja i mean 22:30:23 arke: yeah i want a geek commune 22:30:24 I really think this would work. 22:30:37 (1) We need a cool company. 22:30:42 futhin: I'm shocked. 22:30:52 futhin: Communes imply collectivism!! HEATHEN!! :D 22:30:59 haha 22:31:07 like, for example, IBM. They aren't prefect, but they're cool. For various reasons. 22:31:25 And also, they have teh money. 22:31:35 (2) It needs to be a large dome structure. 22:31:41 no rain, no anything. 22:31:41 kc5tja: is there anyway to avoid collectivism? and what about spouses? 22:31:43 everything is open. 22:32:13 and you move around not using cars, but rather using magneto trains that move up and down. 22:32:23 as needed. 22:32:48 It would look a little like that one star wars city in that one movie 22:32:52 futhin: Listen to the introduction to collectivism seminars that Dr. Peikoff gives (I'd have to find you the URL, but I'm sure Google can find it just as well). He discusses it. 22:33:20 arke: as you grow up you'll realize that your dream is unachievable. then you'll realize the solution is to colonize the asteroid belt! 22:33:29 arke: In case you haven't noticed, that "one" city comprised the whole planet!! Corrascant. 22:33:39 bleh. 22:33:46 kc5tja: well, it wouldn't. 22:33:52 jeez i forget why i'm using firefox and not IE 22:33:54 kc5tja: it'd be about as big as camarillo. 22:34:17 futhin: because IE doesn't allow tabbed browsing, doesn't follow standards, and is in general a big hunk of steamin' shit 22:34:25 kc5tja: with a big dome. 22:34:38 the standards are IE's standards :P 22:34:39 kc5tja: you can walk anywhere, or you can take the magneto train. 22:34:47 kc5tja: its completely socialistic. 22:34:52 * kc5tja refuses to trust magnetic vehicles that hover more than about 4 inches off the ground. 22:35:35 arke: time for you to read "The Fountainhead" and "Atlas Shrugged" and "microeconomics 101" :P 22:35:38 kc5tja: you work for IBM, and your reward is living there and an allowance depending on what you do and how good you do it and all that 22:35:44 arke: I think I'd like to see socialism through objectivism, rather than socialism by fiat. 22:36:02 every computer is shared. 22:36:05 kc5tja: agreed 22:36:12 nobody owns their own computer. 22:36:26 arke: Sorry, that I *patently* disagree with. 22:36:30 you just log into a terminal, and choose what OS> 22:36:40 If I shared the philosophy, I'd be using Windows, what with all their Digital Rights Management bullshit on it. 22:36:43 arke: nobody owns the roads. same set of problems, it requires a government with all the flaws. 22:37:21 thats, of course, just a deram. 22:37:36 Anyway, I'm off to bed. 22:37:41 I really do need to get some sleep. 22:37:43 kc5tja: 'nigh5t 22:37:50 --- quit: kc5tja ("THX QSO ES 73 DE KC5TJA/6 CL ES QRT AR SK") 22:38:15 futhin: so, whaddaya think mi amigo!? 22:38:33 its a good start, its good to be an idealist and to dream :) 22:38:40 i had similar thoughts too 22:39:13 i recommend reading a book on economics particularly microeconomics 22:39:37 ignore any macroeconomics book as its all bullshit 22:47:53 :) 22:48:03 I'm not too much into economics etc. 22:48:32 but I just put all my messaging programs away and installed gaim 22:48:34 much better 22:53:26 i had strong communist/socialist leanings until i learned about economics 22:53:47 actually before i took the class i thought economics was quite boring & weird 22:53:59 but i took a class and lucked out with a very interesting textbook 22:54:06 and read the whole thing 22:54:22 read it twice in fact, again before the final exam 22:55:00 anyways it was quite exciting because now i could actually understand why poverty existed and how to solve it 22:55:12 :) 22:55:41 main reason for poverty is actually the governments and their interference with the local economy 22:55:55 --- quit: Sonarman ("leaving") 22:56:00 as well as the bureaucratic red tape etc 23:07:19 * arke is away: sleep 23:10:10 --- join: arke_ (~Chris@wbar8.lax1-4-11-100-108.dsl-verizon.net) joined #forth 23:10:31 --- quit: arke (Read error: 104 (Connection reset by peer)) 23:13:17 futhin: root of poverty is in minds of poors 23:13:52 i was poor to misery all relatives, changed mind -> above average 23:14:04 AS all relatives, typo 23:14:21 now need to change to another step - business ;)) 23:15:08 * Serg reboots, BRB 23:15:10 --- quit: Serg () 23:58:03 --- join: Serg (~z@212.34.52.140) joined #forth 23:59:59 --- log: ended forth/04.06.01