00:00:00 --- log: started forth/02.01.17 00:00:04 (You can MAKE a word change its behaviour if you redefine something ituses if you really want, though) 00:00:37 neither of which are neded 00:00:57 garbage collection is just a "oh... did i leve that useless shit there - let me pcik it up" 00:01:05 bleh 00:01:27 It's nice for some applications, annoying in others. 00:01:29 advocates claim it eliminates system crashes 00:02:13 which system crashes 00:02:23 the onces caused by bad kernel coders ? 00:02:35 who refuse to actually free up memory when teh users discards it ? 00:02:46 its like in basic 00:02:58 when you did print "blah blah" 00:02:58 basic created a string to be printed 00:03:09 later on it would realise that that was now garbage and "collect it" 00:03:17 its a fix on a bad design 00:03:18 yeah 00:03:28 forth doesnt need it 00:04:48 maybe it does 00:04:52 if you have crashes 00:04:59 which I presume is undesirable 00:05:20 if we have crashes its due to porly coded code 00:05:37 either in teh forth kernel 00:05:37 or in the application software 00:05:47 I suppose thats the difference between high level and low level 00:05:49 its nothing to do with garbage being left behind hehe - forth doesnt do that :) 00:06:01 most forth crashes are stack related :P 00:06:10 or sigsegv's heh 00:06:13 whether the responisbility is with the intepreter/compiler or with the programmer 00:06:35 like doing ' myconstant >body ! and forgetting that ur storing to teh wrong segment hehe 00:06:38 I440r: okay...I'll need to find a turorial on forth to play with it some more 00:06:45 assuming 16 bit x86 :) 00:07:14 It depends on the application. For some, you don't really lose anything by giving up access to memory on your own. If you're doing other things, you'd not want it. It all depends on your own idea of what you want the computer to do. 00:07:21 ftp://ftp.forth.org has some 00:07:21 www.forth.org - read there too :) 00:07:34 curious about the typical development environment...do forthers usually just use the interpreter or use an editor like emacs for development? 00:07:53 I'd reccommend looking through Thinking Forth. 00:07:59 erm 00:08:03 And. . . it depends on your style, and what you're doing at the moment. 00:08:11 forth usually has its own editor 00:08:11 thers no.... 00:08:16 edit compile link debug 00:08:23 its just edit debug edit debug 00:08:46 lispers generally use emacs 00:08:57 Most forths come with a block editor, which hearkens back to when it ran as its own DOS and didn't really have files. 00:08:58 so just the gforth interpreter then...okay 00:09:11 block editor? 00:09:14 You can type code into there, edit it, and load the block. 00:09:35 Yes. You have a 'block file' divided up into however-many-k 'blocks' that you type into. It's like any other editor. 00:09:36 so...forth programs are small? 00:09:37 isfoirth wont have a editor i dont think 00:09:46 it will use the EDITOR environment variable 00:09:51 Well, they can span as many blocks as you like. 00:09:58 usually yes 00:10:03 but not always 00:10:28 and any non trivial application written in forth will be 50% the size of teh equiv asm code 00:10:42 oh thats another thing 00:10:47 I have something I cooked up that's very similar to VI that runs inside GForth, and lets you run forth code from inside it, similar to what EMACS lets you do with Lisp. 00:10:52 i dont think isforth will use teh BLOCK system 00:11:01 its archaic 00:11:24 :) 00:11:39 Xuz: interesting 00:11:40 ill use an fpc style method 00:11:50 you say open filename 00:12:02 and forth will run YOUR prefered editor and when you quit and save 00:12:13 forth will then be able to compile your sources by saying 00:12:24 ok [enter] 00:12:36 Which works well for me, since I can be int he editor, type some code, run it, change it, etc. 00:13:32 yea 00:13:49 cept i think of that as more the forth command line thing 00:13:54 : blah blah blah ; 00:14:01 blah 00:14:01 5 blah 00:14:01 forget blah 00:14:10 : blah blah blah ; 00:14:10 etc 00:14:21 open filename 00:14:21 edit edit edit 00:14:30 colon defines values, I guess 00:14:31 quit and save 00:14:31 ok 00:14:31 blah 00:14:31 either way works for me 00:14:55 no 00:15:01 it creates a new word 00:15:08 : new-forth-function ........... ; 00:15:29 5 constant FIVE 00:15:34 that defines a constant 00:15:47 variable A_VARIABLE 00:15:51 that creates a variable 00:18:04 They're all creating words. They're all basically built on the idea of adding an entry to the dictionary, sticking some data in it, and then assigning a bit of code to it to tell you what to do with the data. 00:18:50 that lost me 00:19:01 data in the word to tell what to do with the word? 00:19:01 Okay. You have :. 00:19:13 * Xuz rephrases. 00:19:22 You have a dictionary entry, right? 00:19:25 yes 00:19:41 Think of a closure. 00:20:00 okay 00:20:31 You have some function that calls CREATE. It makes a dictionary entry under some name. It takes some data or calculates some data or does whatever it likes, and chucks it in the body. It then defines a function inside it with DOES> and associates that with the word, too. 00:20:51 SO when you call the word, it calls the function defined inside the CREATEing word with the data it calculated/got passed. 00:21:47 what does CREATE do? 00:21:57 It just creates a dictionary entry. 00:22:05 It gives you a name with no semantics attached to it. 00:22:20 okay...I see now 00:22:31 just like (define foo 'blah) 00:22:40 Yes. 00:23:19 So, when you use variable, it creates a word, grabs the next free chunk of memory, associates that with the word, and associates the bit of code for handling variables with it. 00:23:24 Constants, it does something similar. 00:23:47 bbiam 00:24:05 : creates a word, reads int he definition and compiles it into the threaded code, associates THAT with the word, and then gives it the address of a function that executes threaded code. 00:24:26 * Xuz afks, too. 00:25:56 back 00:26:01 * I440r need to go zzz now 00:26:03 nite all 00:26:19 --- quit: I440r ("Trillian (http://www.ceruleanstudios.com)") 00:31:33 * Xuz comes back 00:31:42 wb 00:32:35 You also get the other lovely bits about being able to treat code as data and vice versa. 00:33:03 oh? hows that? 00:34:33 All words are encoded as a sequence of execution tokens, similar to the way Scheme functions are represented as lists of symbols. 00:35:05 A word called 'SEE' which takes a word and translates it back into a human-readable representation is standard with every Forth. 00:35:53 how do you use it? 00:36:00 . SEE doesn't seem to work 00:36:01 Try typing 'see .' 00:36:24 oh...I thought you put the arguments first 00:36:46 Depends on what it is. 00:37:10 oh...SEE doesn't use the stack? 00:37:49 Nope. What it does is run, tell the interpreter to give it the word right after it, and then it works on that. 00:38:08 SEE could take a string on the stack, but this way's easier. 00:39:32 The capability for a word to gobble up things after it is very nice, incidentally. The string creation words like s" Blahblahblah" use it. 00:40:08 ahh 00:40:22 Basically it lets a word hijack the parser for its own purposes. 00:40:43 But, since there's a well-defined interface to hijacking the parser, words like SEE still. . . work :) 00:40:55 okay :) 00:41:09 I'm taking your word for all this since I really don't get it all yet :) 00:41:22 forth is rather strange... 00:41:26 Oh, it is. 00:41:49 But you end up with strangeness when you get a language for doing low-level things in high-level ways. 00:42:28 * kholmes hasn't actually wrapped his brain around that yet. 00:42:50 * Xuz hmms. 00:42:53 do I need to know assembly to learn forth? 00:42:56 No. 00:44:02 If you want to do things like using hooking interrupts or other CPU-dependant stuff you do, but even then you can tuck those bits away into words where they won't bother you. 00:44:19 What's an example of a task that you'd normally think something like C would be appropriate for? 00:45:02 graphic routines 00:46:26 Perfect example. 00:47:03 You can pretty much fiddle with all the hardware registers, access the display buffer and all that stuff, and STILL be able to abstract it very well this way. 00:47:40 ahh okay 00:48:15 It's pretty popular for robotics and embedded systems for that reason. 00:48:23 I can see that 00:48:26 this tutorial 00:48:40 has specific functions for variables of different sizes 00:49:00 ! and @ 00:49:01 yes, there are. 00:49:07 c! and c@ 00:49:34 However, ifyou decide to use ! on something that should have ! used on it. . . you're in trouble. 00:50:06 sorry...that statement doesn't parse 00:50:16 Err. 00:50:25 If you decide to use ! on something that should have c! used on it. 00:50:38 heh...okay :) 00:50:43 * Xuz needs caffeine :) 00:50:58 what time is it for you? 00:51:31 3:51 00:51:44 yes, you do need caffiene 00:51:54 how long have you been using forth? 00:52:05 About a year and a half. 00:52:17 maybe I should get a book on forth 00:53:00 because I don't have much experience in this low level stuff 00:53:02 I found Thinking Forth to be useful. I just reccommend playing with it, reading C.L.F generally immersing yourself and you'll become Enlightenned one day. 00:53:14 Thinking Forth...is it online? 00:53:28 Nope, unfortunately. Your library might have it, though. 00:53:38 okay...I'll write it down 00:53:45 do you know the author? 00:54:50 Leo Brodie 00:57:29 okay...I'll see if my library has it 00:57:50 You'll just have to try and become enlightenned. 00:58:25 so many paths to enlightenment 00:58:45 Yep :) 00:59:00 It'll expand your mind, at least. Learning any language that makes you go 'merf' at first glance does that. 00:59:13 yep...definitely 00:59:33 i've been browsing through a text on common lisp as well 01:00:10 but lisp seems more studied than forth 01:00:22 so I am interested in what interesting things forth has 01:01:13 maybe this is a strange question but...does forth need an os? 01:01:55 The original Forths were an OS. And TUNES Retro goes back into that vein. 01:02:58 haven't heard of retro yet 01:03:57 Look at retro.tunes.org 01:05:52 hmm...colorforth 01:05:59 I've heard of that somewhere else 01:06:22 It's been talked about amongst Forthers for a while. 01:06:37 It makes Forth weirder :) 01:06:47 It has tail-call-optimization, however. Then again so do some regular forths. 01:06:58 is it a good thing?> 01:07:19 ColorForth in general, or tail-call-optimization? 01:07:30 colorforth 01:07:46 It has alot of interesting ideas. 01:10:21 what is hello world in forth? 01:10:33 "Hello world" . doesn't seem to work 01:10:56 . is for numbers :) 01:11:02 ahh 01:11:14 =) 01:13:05 Try ." Hello, World!" 01:13:49 okay...it works...a little weird looking though =) 01:16:33 You can also do s" Hello, World!" type 01:17:29 s" Takes everything up to the next" and sticks it in a temporary buffer. If you want it in some permanent place, you have to either make a dictionary entry for it and stick it there, or use allocate to get a spot and stick it THERE. 01:17:54 okay 01:20:18 oh...I better sleep now 01:20:21 good night 01:20:23 --- quit: kholmes ("zzz") 01:20:24 Goodnight 01:20:41 --- quit: Xuz ("ircII EPIC4-0.9.16 -- Are we there yet?") 04:09:54 36 base ! world hello u. u. 04:10:49 decimal 08:41:19 --- quit: aaronl (Read error: 110 (Connection timed out)) 10:48:55 --- join: aaronl (aaronl@vitelus.com) joined #forth 12:16:52 --- join: Fare (fare@samaris.tunes.org) joined #forth 12:41:44 --- join: bpt (bpt@bespin.org) joined #forth 12:47:45 ACK? 13:00:19 ACK 13:08:30 Fare: hi 13:11:43 Fare: are you still there? 13:13:07 somehow 13:13:10 should I? 13:13:44 Fare: would a Forth with first-class stacks be useful? or is that unForthis? 13:13:52 s/unForthis/unForthish/ 13:27:47 can't say. 13:27:58 The idea had crossed my mind a long time ago. 13:37:00 --- join: qless (~qless@clgr000977.hs.telusplanet.net) joined #forth 13:37:34 --- quit: qless (Client Quit) 13:37:46 Fare: and also, though this is not very well-thought out, more types of objects would be nice 13:38:04 Fare: e.g. first-class strings, functions^Wwords, and so on 13:38:19 Fare: though that seems a bit too high-level for Forth's minimalist style 13:39:43 Fare: how do you pronounce `Fare'? As `fair', `fare-eh', or something else? 14:10:23 Fahr-ee 14:10:33 Fahr-eh 14:10:42 I've got a MP3 of that somewhere 14:11:23 ftp://Samaris.tunes.org/pub/sound/samples/fare/Fare-2000-11-14.mp3 14:39:21 --- join: qless (~qless@clgr000977.hs.telusplanet.net) joined #forth 14:41:43 --- join: futhin (thin@h24-66-212-245.cg.shawcable.net) joined #forth 14:41:46 wow 14:41:49 lots of people on! 14:41:58 this is already a good day for me :P 14:42:07 heya qless 14:43:03 speuler 14:43:05 anybody here? 14:43:08 hello everyone 14:43:32 Hi 14:44:03 hi fare 14:44:24 would you happen to know how to interface with the libraries from gforth ? :) 14:45:27 What libraries? 14:45:45 linux libraries.. 14:45:48 socket libraries 14:45:51 i want to open a socket 14:46:03 wouldn't the correct response to ACK? be SYN .. ? 14:46:44 maybe if you're a TCP guy 14:47:05 yeah, well i don't know if ACK? is in TCP, but i know SYN is.. 14:48:53 i'm messing with pygmy these days 14:49:26 there's this pygmy tutorial that's combined with pygmy, it's quite neat, and easy to learn pygmy with 14:56:15 --- part: aaronl left #forth 14:59:13 --- join: futhin_ (thin@h24-66-212-245.cg.shawcable.net) joined #forth 14:59:17 --- part: futhin_ left #forth 15:31:43 gonna go, bbl 15:31:47 --- quit: futhin ("bye") 16:39:36 --- quit: oxygene (carter.openprojects.net irc.openprojects.net) 16:39:36 --- quit: Speuler (carter.openprojects.net irc.openprojects.net) 16:39:36 --- quit: qless (carter.openprojects.net irc.openprojects.net) 16:39:36 --- quit: Fare (carter.openprojects.net irc.openprojects.net) 16:40:28 --- join: Speuler (~l@c38038.upc-c.chello.nl) joined #forth 16:40:28 --- join: qless (~qless@clgr000977.hs.telusplanet.net) joined #forth 16:40:28 --- join: Fare (fare@samaris.tunes.org) joined #forth 16:40:28 --- join: oxygene (oxygene@linux-future.de) joined #forth 16:40:28 --- mode: carter.openprojects.net set mode: +oo Speuler oxygene 16:40:28 --- mode: ChanServ set mode: -oo Speuler oxygene 16:40:56 --- quit: oxygene (carter.openprojects.net irc.openprojects.net) 16:40:56 --- quit: Speuler (carter.openprojects.net irc.openprojects.net) 16:45:32 --- join: oxygene (oxygene@linux-future.de) joined #forth 16:45:32 --- mode: carter.openprojects.net set mode: +o oxygene 16:45:32 --- mode: ChanServ set mode: -o oxygene 16:45:56 --- join: Speuler (~l@c38038.upc-c.chello.nl) joined #forth 16:45:56 --- mode: carter.openprojects.net set mode: +o Speuler 16:45:56 --- mode: ChanServ set mode: -o Speuler 16:48:27 --- join: tcn (tcn@65.170.209.12) joined #forth 16:48:43 wow.. there's people here 16:50:53 T C N ! 16:54:31 what's up.. aren't you up late? 16:56:39 either that or I'm up VERY early 17:32:02 --- join: MrReach (~mrreach@209.181.43.190) joined #forth 17:32:22 quite a crowd today 17:41:10 Gakuk! 17:41:23 hows that? 17:41:34 :) 17:41:40 It's not 17:41:57 how are you, fare? 17:43:39 still not 17:43:50 heh 17:43:53 what's wrong? 17:44:31 still not advancing on Tunes 17:44:48 btw, I'm writing an article on a design for the ultimate virus 17:44:55 oh, bet that's fustrating 17:45:34 what makes the "ultimate virus" different from a "run of the mill" virus? 17:45:48 heh, forth would be excellent for that, IMO 17:46:07 --- quit: bpt ("leaving") 17:47:33 sure 17:47:52 although I just say that some threaded code or bytecode has to be used 17:48:06 to make smaller? 17:48:06 --- join: bpt (bpt@user-2ivf6nr.dialup.mindspring.com) joined #forth 17:48:11 wb, bpt 17:48:22 MrReach: `wb'? 17:48:26 MrReach: ah, Welcome back, I suppose 17:48:28 ? 17:48:28 welcome back 17:48:33 MrReach: hello 17:49:10 Fare: other than smaller, I don't see where threaded or bytecode would be an advantage 17:49:55 I've actually thought of doing of building a forth virus, just for kicks ... 17:49:59 difficulty to trace 17:50:13 easiness of polymorphism 17:50:20 it would append itself to .EXEs and load into mem with the meain memory segment 17:50:32 MrReach: why are first-class, multiple stacks not in Forth? (that is, for what reasons are they excluded?) 17:50:39 then copy itself to all the .EXEs it could find 17:50:41 interpreted/threaded/byte-encoded code is easier to polymorph 17:50:54 and it's portable accross architectures, too :-> 17:51:04 you could have a very portable virus 17:51:16 and report back to a specific IP address that the machine was available for whatever processing 17:51:23 ah! ok 17:51:43 bpt: what is "first-class" ??? 17:51:54 bpt: do you mean as a package or extension? 17:51:58 the virus I'm thinking of would be big. 17:52:05 It would have lots of infrastructure 17:52:19 MrReach: first-class means, ahm... 17:52:21 that said, most of it would be gzip-compressed 17:52:24 and encoded 17:52:34 * MrReach nods. 17:52:57 that would be a way around Norton and other scanners 17:53:11 Norton looks for "signature bytes" 17:53:41 forth code that rearranged its dictionary every once in a while wouldn't have those. 17:54:00 Fare: I missed part of this, but the technique of encoding most of the virus sounds somwhat like what was used with the Internet worm 17:54:01 bpt: do you mean hardware stacks? 17:54:23 MrReach: eh? no, Forth stacks 17:54:43 MrReach: e.g., 17:54:49 what's the difference between "first-class" and "regular" stacks? 17:55:01 MrReach: (assuming stacks are identified by numbers) 17:55:16 MrReach: 3 4 .s 17:55:21 MrReach: 3 4 17:55:27 MrReach: 5 switchstack 17:55:30 MrReach: .s 17:55:36 MrReach: 17:55:39 MrReach: 2 .s 17:55:43 MrReach: 2 17:55:49 MrReach: 0 switchstack 17:55:52 MrReach: .s 17:55:53 MrReach: 3 4 17:55:55 ... 17:55:57 ok, gotcha 17:56:15 actually, that *IS* provided in some (most?) forths? 17:56:20 bpt: did the internet worm use particular stealth techniques??? 17:56:32 except that the stack is switched with user tasks 17:56:55 Fare: most of it was encrypted, to make it difficult to detect and read (because most of it didn't look like machine code at all) 17:57:22 MrReach: can you provide an example? I'm new to Forth, so I'm not too good at guessing possible word names yet 17:58:02 ok, when most people think "forth" they think of a terminal that interprets commands interactively 17:58:09 oh, yeah, one encoding could be to encode stuff into seemingly good-looking machine code. 17:58:19 most forths come with built-in multitasking 17:58:48 where words run in the background with terminal task being the one the user sees 17:59:25 so you wouldn't have a suspicious big chunk of higher-density stuff in the code segment 17:59:40 when other tasks are running, they need their own parameter stack, return stack, and often have their own user variables, like BASE etc 18:00:36 bpt: I know this is not exactly the behavior you were describing, but it is similar 18:01:16 MrReach: thanks 18:01:48 I think a more direct answer to your question of "why not ..." 18:02:14 is that most forthers have yet to see a need for dynamically changable parameter stacks 18:02:24 so they haven't bothered to write them 18:02:48 I don't see where you couldn't do that with most forths that I've used 18:03:23 might be a bit difficult in SwiftForth 18:03:47 --- quit: tcn ("Leaving") 18:04:16 I'm feeling a bit ill ... taking a nap 18:04:24 --- nick: MrReach -> MrGone 18:51:11 --- join: I440r (~mark4@1Cust174.tnt3.bloomington.in.da.uu.net) joined #forth 18:54:53 I440r: do you know people at the university of indiana in bloomington? 18:58:40 no 18:58:42 why ? 18:58:51 its about 15 minutes drive from here tho :) 18:59:09 I440r: because your domain is 1Cust174.tnt3.bloomington.in.da.uu.net :) 18:59:54 --- mode: ChanServ set mode: +oo bpt Fare 18:59:55 --- mode: ChanServ set mode: +oo MrGone oxygene 18:59:55 --- mode: ChanServ set mode: +oo qless Speuler 18:59:55 --- mode: ChanServ set mode: +o I440r 19:01:00 aha hehe 19:01:03 yea 19:01:14 my isp is in bloomington 19:02:56 do you knnow ppl there ? 19:03:22 I440r: I don't (except this guy I met in #forth named I440r :)) 19:03:38 Dan Friedman, Doug Hofstadter are famous professors there 19:03:59 Fare: oh! yes, that's right, Hofstadter lives there 19:04:09 for some reason I was imagining Bloomington being in Idaho :) 19:04:38 heh im on a realy shity dialin doing an apt-get upgrade and its laging me all to hell heh 19:04:55 I440r: me, too 19:04:59 :( 19:05:11 who is hofstadter ? 19:05:26 Goedel, Escher, Bach author 19:05:42 I440r: I want to get DSL soon, but right now I don't live in a DSLable area (e.g. not right next to a phone station), and so apt-gets are unbearably slow 19:05:46 Pulitzer prize winner for it 19:05:51 I440r: also Metamagical Themas author 19:06:00 and many other great books 19:06:20 Fare: yes, like Ambigrams and The Mind's I, right? 19:09:01 yup 19:09:14 the latter with Daniel Dennett 19:10:07 i used to run a debian mirror when i had dsl - apt-gets are REALY slow now :) 19:10:57 bpt at elast you run the right distro of linux :) 19:11:43 I440r: Fare is defending M$ Windows XP in #tunes :( 19:12:49 eep! 19:12:54 thats sacralidge !!!! 19:12:55 heh 19:13:07 im gona start working on isforth again 19:13:23 gona print out what tcn did and tidy it up before i continue with new development 19:13:24 also 19:13:30 i want EVERYTHING fully doccumented 19:13:43 I440r: and Fare is the TUNES project leader! 19:13:53 he is? 19:14:03 I440r: yes! absurd! (IMO) 19:14:51 i thunked that was tcn :) 19:14:51 did tcn give up ? 19:15:05 I440r: who's TCN? 19:15:06 abi tcn 19:15:08 ?? tcn 19:18:29 tcn 19:19:40 I440r: who is tcn? are those initials? 19:20:41 no thats his nickname here heh 19:21:01 i might be mistaken but i think tcn originated tunes 19:21:06 he is also the ONLY registered developer i have for isforth hehe 19:21:16 but he is almost permanantly afk these days 19:21:18 heeeeeeelp! this is ABSURD!!!! I'm finding myself defending free software in #tunes!!!!!!!!!!!! of all places 19:21:40 hehe 19:22:21 I440r: this is not a joke. if Fare continues this ABSURD behavior, then I will likely quit TUNES. 19:25:07 he is prolly only doing it to wind u up hehe 19:25:12 and ur always welcome in here :) 19:25:21 most of the ppl that come in here originated in #tunes 19:25:27 I440r: yes, and I find Forthers to be just as original as Lispers 19:25:34 i wont go in there any more - they are too anal about what is talked about :P 19:25:51 I440r: what, #tunes? 19:26:36 --- join: futhin (thin@h24-66-212-245.cg.shawcable.net) joined #forth 19:26:40 hi all 19:26:41 futhin: hello! 19:26:48 heyas bpt :) 19:26:57 how is it going learning forth? 19:28:07 futhin: ok 19:28:17 futhin: no time to talk, arguing with fare 19:28:32 futhin: now I realize that fare is also not unsuspectible to huge mistakes 19:28:50 bpt, i've been playing with pygmy forth tutor, you might find it handy to help you learn forth 19:28:52 :) 19:28:54 heh 19:29:00 futhin: where? 19:29:03 here's a link: http://www.simtel.net/pub/dl/12710.html 19:29:11 * bpt feels rather depressed right now 19:29:21 if you want the desc it's at http://www.simtel.net/pub/pd/12710.html 19:29:26 bpt: why? 19:29:37 futhin: because Fare is adamantly defending MS Windows XP :( 19:29:43 lol 19:29:54 for what reason? what aspect is he defending? 19:29:59 futhin: all of it 19:30:13 bpt: what's so good about xp? 19:30:25 futhin: nothing, IMO 19:30:34 yeah, but what's his? 19:30:44 futhin: i18n 19:30:49 eh? 19:31:05 futhin: he does not realize that Unix allows you to build whole new environments, whole new semantics on top of the smallest layer 19:32:04 which is exactly what FORTH is all about!!! 19:32:10 I440r: right 19:32:14 I440r: and Lisp, for that matter 19:32:31 i dunno lisp 19:34:49 fare said that garbage collection differentiates between a high-level language and a low-level language, but i was reading the forth logs and i440r said garbage collection is unnecessary to forth, because of the paradigm.. 19:35:06 I440r: I think that Forth is just about as good as Lisp... and that is about the highest praise that I can give, considering how much time I have spent studying lisp 19:35:48 hehe 19:35:48 well 19:35:48 forth is sort of difficult to learn at first but 19:36:02 how many c coders or lisp coders do you know who have their verey own c/lisp compiler that they wrote from scratch 19:36:08 once you learn forth 19:36:18 you can write a compiler very easilly 19:36:21 I440r: I've got my own lisp interpreter (easier to write than a compiler) 19:36:31 I440r: took me 1/2 to 1 hour to write 19:36:47 bpt: after reading Starting Forth and messing with the Pygmy Tutor, and listening to forth wisdom on this channel, I have barely scratched the surface of the iceberg.. 19:37:06 of course i'm lazy, but shhh 19:37:26 most real forth coders have either a written from scratch compiler or a heavilly modified version of someone elses 19:37:26 i used fpc for years 19:37:26 MY version of fpc was a hell of alot more opitmized assember in the primatives 19:37:29 was 20k instead of 240k executable 19:37:46 and you won't give me a copy, ;( 19:37:46 and could metacompile itself on my 386 in about 2 seconds 19:38:05 thats meatcompile the kernel and extend 19:38:05 6 seconds max 19:38:14 a copy probably wouldn't be terribly useful to me, i need to hack up fpc myself 19:38:53 fpc is ugly to me, but pygmy is similar to fpc, and now that i understand pygmy i can understand fpc better (specifically, how to use it, how to open files, edit them, save them, etc) 19:39:06 as well as the language itself 19:40:10 fpc is ugly 19:40:23 but once you strip out the word alias and all bullshit aliases 19:40:36 and rework the kernel so that instead of 50 identical definitions 19:40:41 you have one definition 19:40:46 and use THAT throughout 19:40:48 etc 19:41:07 like i said - my version of the extended kernel was about 30 or 40 k instead of 300 or 400 19:41:28 heh 19:41:28 and could compile 20k lines a second 19:41:29 ish 19:41:34 that was on my 306 19:41:38 386 19:41:56 i would hack up pygmy except it's all upper case and i would have to rip out too much just to make it any-case... 19:42:18 thats another thing i didnt like about it 19:42:22 the fucking authore is a lamer 19:42:29 and you can quote me on that 19:42:36 anyone who codes in 100% upper case is LAME 19:42:41 i generally code in 100% LOWER case 19:42:56 i dont even doo labels like FooBar or Foo_Bar 19:43:01 i would just call it foobat 19:43:24 I440r: right, and CL doesn't even allow that kind of junk by default 19:43:34 I440r: e.g. FooBar === FOOBAR 19:44:44 i440r: are you saying that it's upper case in FPC ? 19:45:00 he's probably old skool forth coder, they suck :P 19:45:17 no 19:45:22 fpc mixed case 19:45:26 but ws mostly lowercase 19:45:37 SOME of the source files were all upper tho 19:45:45 i think dasm.seq was all upper case 19:45:59 tahts the x86 disassembler used to "see" coded defintions 19:46:06 part of the built in decompiler 19:46:14 hmm 19:46:30 hey, i'm just checking.. you don't want to give me a copy of your fpc right ? 19:46:50 prolly not :) 19:46:50 he 19:47:00 i might release it some time - but it needs tidying up 19:47:00 heheh 19:47:03 ah 19:47:19 have you released any other code to public? 19:48:32 only some dos demos i wrote a few years back 19:48:51 and my windowmaker dockable app that is based on one :) 19:49:09 i have a complete assembler library that i should tidy up and release too 19:49:09 heh 19:49:14 hmm 19:49:14 needs doccumenting 19:49:20 not comments - but instructions hehe 19:49:25 i'm annoyed, there's no a whole lot of forth code out there 19:49:30 its specific to teh a86 assembler tho 19:49:33 i registered that 19:49:38 who cares about comments if you factored properly .. :P 19:49:43 and gave them good names 19:49:49 and low and behold - eric isaacson who wrote it lives in blomington :) 19:50:15 near you? 19:50:32 yes 20:00:57 --- quit: bpt ("ERC v2.1 $Revision: 1.179 $ (IRC client for Emacs)") 20:05:14 i understand does> now 20:05:21 the pygmy tutor did that for me :) 20:16:08 no 20:16:08 u understand how to USE it 20:16:08 hehe 20:17:38 whut? 20:17:39 :( 20:17:39 heh 20:17:41 the word does> is used in definintg words 20:17:49 yeah i know 20:18:00 i just told you how it works on icq 20:18:04 create foo does> bar 20:18:06 :P 20:18:40 creates a word called foo that when execued will interpret all teh code within the word that defined it following the does> 20:18:40 so 20:19:29 not realy im trying to think how best to explain 20:19:36 does is used in creating words 20:19:49 its an immediate word 20:20:02 whe you have.. 20:20:15 : constant create , does> @ ; 20:20:43 when the compiler sees the does> it execues does> - it doesnt compile it in 20:20:45 argh 20:20:49 i said i undestand it :P 20:21:23 does> compiles some code into the definition for constant that will patch the cfa of all constants created to CALL some machine code that were about to compile INTO constant 20:21:37 then does> creates a call to dodes withing constant 20:21:48 so 20:21:48 when you say 20:21:48 0 constant foo 20:21:58 constant first creates foo 20:22:26 patches the cfa of foo to call the following machine code instead of dovariable 20:22:26 then exitws 20:22:52 when you execute the constant FOO 20:22:52 foo calls that machine code (leaving the body field address of the constant on the stack) 20:23:02 the machine code within foo is itself a call to dodoes 20:23:15 dodoes saves IP onto the stack and pops the return address of the call off the stack and puts taht in IP 20:23:46 so ALL constants will leave their body field address on the stack and then interpret the @ (fetch) within constant itself 20:23:59 which fetchs the contentsz of the body field address 20:24:16 morning 20:24:25 ever word created with a does> word interprets the code following does> 20:24:52 create ....... does> .this code is common to all words created with this creating word .... ; 20:25:01 g'd morning 20:25:17 oxy!! :) 20:25:17 does> is realy complex 20:25:17 but also 20:25:17 REALY simple 20:25:50 it is the bongo! 20:26:01 takatam 20:26:24 begin create ... does> again 20:26:27 hehe 20:26:52 * Speuler loves to confuse matters 20:26:56 but it is alsy realy realy simple :) 20:27:10 it just had me completely tied in knots till i had some help from someone hhe 20:27:33 brb 20:30:11 back 20:30:33 i'm reading the forth log because i was reading it earlier and i think i had a question to ask you but i forget it completely.. 20:30:35 futhin my icq client is the same one im using to chat here on irc 20:30:35 and yahoo 20:30:35 and aol 20:30:47 and if i did msn i could use it to do that too heh 20:31:01 so its not my icq client thats lagged - is me becaues im doing an apt-get upgrade -f on my gateway :) 20:31:14 heh, i know 20:31:18 but at least i don't suffer from it on irc 20:31:36 cause the icq send is annoying and prevents me from keep on typing 20:31:43 it ends up taking a long time 20:33:12 heh 20:35:02 --- quit: qless ("changing dimensions") 20:36:38 --- quit: futhin ("brb") 20:37:34 'll be back 20:38:07 :) 20:40:45 oxy try www.trillian.cc 20:41:48 --- join: [9of7] (~l@c38038.upc-c.chello.nl) joined #forth 20:42:00 <[9of7]> 'oi 20:43:32 hi 9 :) 20:43:32 u a forth coder ? 20:43:41 :) 20:43:47 * [9of7] alias bongo 20:46:31 OHHH hehe 20:46:38 <[9of7]> didn't manage yet to implement 2/ in bf 20:46:40 i gues htat counts then hehe 20:46:58 hehe 20:47:14 <[9of7]> looks easy 20:47:18 <[9of7]> but ain't 20:47:49 :) 20:48:14 <[9of7]> so maybe i drop that 20:48:41 <[9of7]> and code an interpreter with "AND" and "0=" 20:49:10 <[9of7]> at least, i'd know how to build a shift register with nands 20:49:44 <[9of7]> instead of 1+ 1- 1 +! -1 +! 20:50:43 :) 20:50:54 <[9of7]> i was tempted to use an inofficial bf extension ... 20:51:02 <[9of7]> selfmodifying code :) 20:52:17 <[9of7]> or i gonna think a bit more about ValveForth 20:52:38 <[9of7]> a hydraulic forth interpreter ... 20:53:23 --- quit: Fare ("ERC v2.1 $Revision: 1.175 $ (IRC client for Emacs)") 20:53:29 hhe 21:18:51 --- join: aum` (~aum@l76-137.world-net.co.nz) joined #forth 21:21:57 #forth is quite active today :) 21:22:01 well 21:22:08 thers PPL here :) 21:22:08 --- mode: I440r set mode: +o aum` 21:22:17 --- mode: I440r set mode: +o [9of7] 21:22:25 aum` is a forth coder ?? 21:32:23 ok so someone start chatting about something :P 21:32:35 thas an order!!!!!!!!!! 21:32:35 heh 21:39:30 <[9of7]> i got a flip flop working ... 21:40:02 <[9of7]> could call that the beginnings of GateForth 21:40:49 <[9of7]> programming is still somewhaat tedious 21:40:54 <[9of7]> looks like: 21:41:13 <[9of7]> 1 2 in1 connect 2 1 in1 connect ... 21:41:33 <[9of7]> need a macro connector 21:42:00 <[9of7]> and a gate pool management 21:43:26 <[9of7]> 16 lines code. emulated switches included 21:47:25 cool :) 21:47:35 im printing teh sources for isforth 21:47:53 gotta sort out the work that tcn did and get back into it 22:38:31 --- quit: MrGone (Read error: 104 (Connection reset by peer)) 22:50:49 --- quit: I440r (Read error: 54 (Connection reset by peer)) 22:51:09 --- quit: aum` () 22:52:12 --- join: I440r (~mark4@1Cust174.tnt3.bloomington.in.da.uu.net) joined #forth 22:52:14 argh 22:52:19 disconnected me! 22:52:21 bleh 22:53:45 wheres aum ? 23:05:10 <[9of7]> Signoff: I440r (Read error: 54 (Connection reset by peer)) 23:05:10 <[9of7]> Signoff: aum` () 23:08:15 heh 23:08:22 must be contageous :P 23:16:24 --- join: futhin (Havoc36@ab-cal-a52-01-38.look.ca) joined #forth 23:16:29 hello 23:18:48 hi 23:19:00 --- part: I440r left #forth 23:19:57 noo 23:20:18 --- join: I440r (~mark4@1Cust174.tnt3.bloomington.in.da.uu.net) joined #forth 23:20:21 dammit 23:20:22 lol 23:20:27 your client sucks? 23:31:19 i440r 23:32:24 no 23:32:31 my operatin system does and my dial in does 23:32:40 im in windows :P 23:47:11 --- join: kholmes (~kholmes@client514.sedona.net) joined #forth 23:47:35 kholmes 23:47:43 hi 23:49:38 one of my ideas is a collaborative interactive forth online universe :) 23:50:03 if i ever get around to starting it up, it'll be leet, and be very NEW and INTERESTING :P 23:50:15 that sounds *very* interesting 23:50:50 :) 23:50:58 thats what tunes needs, actually 23:51:02 yup, i imagine TUNES could use a collaborative universe, so that instead of all the tuneser people being on irc, they can log into this collaborative universe and design, code, discuss, etc 23:51:05 i wanna be leet! 23:51:58 * futhin pats i440r on the head, "now sonny boy, you can be leet too, after you code your isforth so that nice people like me can ruin it" :P 23:52:00 I440r: ? 23:52:13 doh :P 23:52:28 im a printing out teh source files tcn sent me right now - im going to study them in a min or 2 23:52:31 almost finished printing 23:52:33 then bed 23:52:34 if you code it, i'll code stuff for it, like a leet editor or something 23:52:38 gona start CODING 23:52:43 nooo! 23:52:47 pull a 36 hour marathon 23:52:49 start now! :P 23:53:07 do you need any help coding any parts? :) 23:53:20 you probably don't want me to code anything unless it is trivial :P 23:53:22 cuz i'm new 23:53:22 can you code ? 23:53:24 hehe 23:53:32 i can code a little 23:53:37 ill look at what tcn gave me 23:53:40 i can code a really leet pyramid printing program 23:53:44 tidy it up (he is a messy coder) 23:53:47 : star ." *" ; 23:53:53 : stars for star next ; 23:53:53 then email him - see if i can make contact with him heh 23:54:04 ugh 23:54:27 ugh what? 23:54:33 being until - do loop - no for next <- NEXT is something copmpletely different in forth 23:54:44 so teh for next construct is misplaced in forth 23:55:13 for next is more efficient than a do loop in this program 23:55:22 i would rename next to something like -1zero=until 23:55:24 hehe 23:56:13 : pyramid 2* 0 swap cr for i 2 mod 1 = if i 2/ stars dup spaces 2+ next drop ; 23:56:23 but my other reason is that i coded this in pygmy 23:56:31 while i was figuring out the editor 23:56:34 but NEXT is something different 23:56:38 it has nothign to do with loops 23:56:38 yeah heh 23:56:42 its the threader in forth 23:56:46 yeah i know 23:56:47 next, nest, unnest 23:56:55 and why isn't it just a code fragment ? 23:57:05 i REFUSE to have for/next unless next is renamed here 23:57:27 why'd you have to make it a primitive? next is slower if its a primitive.. 23:58:02 build your own forth says this: 23:58:02 no 23:58:04 NEXT 23:58:05 hands control from one machine code fragment to the next. Because it is used so often, it is vital to optimise it for speed, so it is usually compiled in-line, rather than as a jump to a central routine. 23:58:06 next is a macro 23:58:15 defined to use inline enxt or jump next 23:58:47 ok, lets rename for next 23:58:58 a doed definition called _next is present in teh kernel 23:59:00 FOR SEX ? :P 23:59:08 naw, too crude :) 23:59:11 the next macro either compiles a jmp _next 23:59:40 or compiles the code for next inline with the definition 23:59:59 --- log: ended forth/02.01.17