00:00:00 --- log: started forth/03.09.03 00:28:50 --- join: uuter (~uuter@ajhg40uqy57xe.bc.hsia.telus.net) joined #forth 01:17:04 heya uutron 03:13:11 --- join: Serg_Penguin (Serg_Pengu@212.34.52.140) joined #forth 03:13:17 --- quit: Serg_Penguin (Client Quit) 07:14:30 --- quit: XeF4 (Remote closed the connection) 07:17:36 --- quit: onetom (Read error: 104 (Connection reset by peer)) 07:22:19 --- join: onetom (~tom@cab.bio.u-szeged.hu) joined #forth 07:23:57 --- join: hovil (~matt@CommSecureAustPtyLtd.sb1.optus.net.au) joined #forth 07:27:51 --- join: mmanning2 (~x@saturn.vcsd.com) joined #forth 07:27:51 --- nick: mmanning2 -> I440r-work 07:30:41 --- join: onetom_ (~tom@cab.bio.u-szeged.hu) joined #forth 07:35:51 --- quit: onetom_ (Read error: 104 (Connection reset by peer)) 07:35:52 --- join: onetom_ (~tom@cab.bio.u-szeged.hu) joined #forth 07:36:23 --- quit: onetom (Read error: 60 (Operation timed out)) 08:29:55 --- join: Herkamire (~jason@h000094d30ba2.ne.client2.attbi.com) joined #forth 08:29:56 --- quit: onetom_ (Read error: 104 (Connection reset by peer)) 08:30:13 --- join: onetom (~tom@cab.bio.u-szeged.hu) joined #forth 08:30:46 wb onetom 08:30:49 how's school? 08:31:04 (or was that just thin that is back at school?) 08:36:10 --- join: kc5tja (~kc5tja@66-91-231-74.san.rr.com) joined #forth 08:36:10 --- mode: ChanServ set +o kc5tja 08:37:20 wb kc5tja 08:37:45 Hello 08:37:53 * kc5tja put his sundew and pitcher plants outside. 08:38:02 I hope they'll get a decent meal sometime today. 08:47:19 hello 08:52:57 hi ianP 08:57:29 * kc5tja thinks he might, possibly, potentially, actually get some useful work done on FS/Forth for Linux today. 08:58:00 * kc5tja has a few errands to run today, and I'm done with homework for this week early, so I actually have some time (I think) to work on it. 09:30:14 Herkamire: no, that was thin 09:30:46 Herkamire: and robert also learning at a school 09:31:40 Yep! 09:35:19 --- quit: onetom ("leaving") 09:37:47 --- join: onetom (~tom@cab.bio.u-szeged.hu) joined #forth 10:31:26 Are the arguments for ANSI Forth's MOVE word ( src dst u -- ) or ( dst src u -- )? 10:32:49 Oops. Never mind. I know what the problem is. 10:34:40 whooooohoooooooo 10:35:01 don't ask me how, but i fixed my strange lock-up problem :P 10:35:09 I did ( src u dst ) :) 10:35:51 I knew that wasn't ansi, but I don't care much about ansii. I do what makes sense to me, and change it if it sucks later :) 10:36:26 herkamire, given that your way is poped in the same order to memcpy, it makes sense 10:36:26 Well, I'm writing a program in ANSI Forth at the moment, so ANSI matters to me. 10:36:51 kc5tja: :) 10:36:56 Well, the first thing my implementation of MOVE does is check 'u' to see if it's zero; if it is, abort. 10:37:05 Hence, src dst u ordering makes more sense for me. 10:37:54 Suzanne: I actually put it in that order because I think ( addr u ) is something you often have on the stack. then you can do DEST MOVE to copy it somewhere 10:37:56 kc, i imagine there is someone that can justify all of the possible orderings :) 10:38:16 herk, *nod* another good justification 10:38:28 to me the length is associated with the data that you have already. if your DEST isn't that big then you're in trouble. 10:39:12 i'm not sure 'move' is the right word for it tho :P 10:39:22 because surely you're just copying data, the original stays untouched :) 10:39:24 kc5tja: cool :) 10:39:38 I must admit to a certain amount of doing it my way because of being easier to implement. 10:39:59 herk, i think thats the main problem with a huge standard like ANS 10:40:27 I prefer the length of data to be associated with the destination buffer -- it helps prevent overruns. 10:40:37 something like: : move >a for dup c@ c+! 1+ next drop ; 10:42:13 I can use ?for if you want it to support 0 length 10:43:39 Am I missing a better way to do ?for than this: 10:44:44 : ?for if for ; : ?next next then ; 10:45:13 oops 10:45:32 herk, don't you need a dup in there ? 10:45:38 no that's right. except hacked so "if" doesn't eat TOS if it's true. 10:46:03 * kc5tja has two variants of if: if and if.. if. will eat the TOS, while if doesn't. 10:46:38 kc5tja: does your if eat TOS when it's zero? 10:47:00 I'm playing around with my flow control words quite a bit 10:47:03 : move if >r cpy r> move ; then 3drop ; 10:47:14 Herkamire: No. 10:47:16 I have two variations of if. 10:47:27 if. will always eat the TOS. if never eats the TOS. 10:47:39 I want one that eats it if false. 10:47:55 Vaguely like this : if. postpone if postpone drop ; immediate 10:48:06 I don't like doing: dup if ... else drop then (especially since I didn't implement ELSE) 10:48:55 herk, lol 10:49:15 Yeah, I can sympathize. 10:49:28 I usually get around it by doing this: 0; ... ; 10:49:33 but that only works at the end of a definition. 10:49:41 * Suzanne carefully pushes her conditional-execution-less forth implementation aside :P 10:49:51 0; exits (and eats TOS) if TOS is zery 10:52:01 I'm curious if there's any situation when you'd want to: if ... then and then have a zero left on the stack if ... wasn't executed. 10:52:15 I have this a few places in my code: dup if ... ___ ; then drop ___ ; 10:52:38 where the two ___ are the same. I could drop the "___ ;" and the dup and drop if I had an "if" that would drop TOS if it was zero. 10:52:57 (drop the first "___ ;" that is.) 10:54:08 * kc5tja uses the 'leave 0 on stack' when I'm writing resource allocators a lot. 10:55:09 cool 10:55:29 kc5tja: can you give an example of a resource allocator? not sure what you mean. 10:55:58 I haven't played with an if that doesn't drop. so maybe I should do that before I make on that just drops zeros. 10:56:42 I'm afraid if I do more of this stuff I'm going to end up with 40 flow control words. 10:58:01 I already have 17 just with if and conditional exits 10:58:43 malloc() is a resource allocator -- it allocates memory; if none is available, it returns NULL (0). 10:58:48 but that's just because it includes the compairs. (I have =if and Yes, as do I. 10:59:34 It makes sense to optimize the control-flow words for the target architecture, I feel. 11:00:26 yeah. I felt realy bad about doing a compair, then a conditional branch to either put true or false on hte stack, and then have if do a compaire to the top of the stack to see if it's true, and then conditionally branch on that. 11:00:37 * kc5tja nods 11:00:43 My thoughts exactly. 11:00:49 I came to that conclusion while writing FS/Forth for DOS. 11:00:55 * kc5tja is going to keep it for the Linux version. 11:00:57 plus I think my code is cleaner as a result 11:01:57 That's one nice thing about a classical Forth -- CREATE and DOES>. :D 11:02:00 I just added AND this past week, haven't needed it until now (checking a bit) 11:02:13 I describe all my IF variants on a single block. 11:03:11 I don't think create/does> would shorten my code much. 11:03:37 here's all 17: 11:03:38 : ,= 0 _2toreg 0 r-tos 0 _cmp ,2drop ; : ,0= 0 r-tos 0 _cmpi ,drop ; : ,_=if ,= here 0 ; : ,<>if ,_=if _beq ; : ,=if ,_=if _bne ; : ,if ,_=if _bnl ; : ,>=if ,_=if _blt ; : ,0if ,0= here 0 _bne ; : ,if ,0= here 0 _beq ; : ,0; r-tos 0 _cmpwi 28 _bne ,drop ,; ; : ,<>; ,= 20 _beq ,; ; : ,=; ,= 20 _bne ,; ; : ,<; ,= 20 _bng ,; ; : ,<=; ,= 20 _bgt ,; ; : ,>; ,= 20 _bnl ,; ; : ,>=; ,= 20 _blt ,; ; : ,0= 11:03:40 For my IF statements, it does mine. :) 11:04:36 ,= might be a bad name. might want to use that for something else later 11:04:50 I have my IF statements laid out this way: 11:05:47 I often make words that compile something. instead of a create/does thing, I just define the word, and then call my word to compile stuff. 11:05:56 : makeIF COMPILER CREATE , FORTH DOES> test, @ C, HERE 0 C, ; 11:06:02 $70 makeIF =IF 11:06:07 $71 makeIF <>IF 11:06:12 etc. 11:06:18 (I forget precise opcodes, but you get the idea) 11:06:20 in colorforth, I don't think it's anything extra on the screen, and I get the new word showing in red :) 11:07:11 right. 11:07:40 I just created a word ,= which compiles the code to do the compair, and I just call that. 11:08:46 I think the above demonstration is the very first time I've ever used CREATE to create a compiler-word in Pygmy Forth. 11:08:58 :) 11:09:02 In GForth, it'd look like this: : makeIF create immediate , does> test, @ c, here 0 c, ; 11:10:19 OK, now I get it 11:10:57 COMPILER switches Pygmy to the compiler/macro dictionary, and FORTH switches it back. 11:11:07 $71 is the opcode for the compair, and test, compiles in more of the instruction(s) 11:11:13 Nope. 11:11:17 It's the opcode for the branch. 11:11:24 The comparison is always the same. 11:11:32 cmp eax,(whatever) 11:12:06 Note the @ C, phrase in the does> part. :) 11:12:57 right. 11:13:19 so then you can't use makeIF to create IF because that only takes one item off the stack? 11:13:32 but it should work for all the rest 11:15:21 Huh? 11:15:39 The DOES> part executes at compile-time (remember the word is created as an immediate word) 11:15:58 test, lays down the code to do the register comparison (which is the same regardless of what you're testing for) 11:16:04 @ C, lays down the opcode. 11:16:29 HERE 0 C, lays down the target offset for the opcode (+/- 127 bytes only), and leaves a back-reference to the offset for fix-up by THEN. 11:18:19 Note that this variant is for the if word, not if.. if. is similarly defined, but with code to drop the TOS after the comparison, but before the branch. 11:34:27 --- join: Speuler (~Speuler@mnch-d9ba4cda.pool.mediaWays.net) joined #forth 11:34:52 oooooh right. your not droping the operands. 11:35:08 only +=127 bytes? weird 11:35:17 +-127 11:35:33 'morning 11:35:50 PPC is +-32K I think 11:35:56 morning Speuler :) 11:36:10 --- join: gilbertdeb (gilbert@fl-nked-ubr2-c3a-142.miamfl.adelphia.net) joined #forth 11:36:11 hello herkamire! 11:36:15 hi Speuler! 11:36:30 Hi Speuler :) 11:36:31 And gilbertdeb 11:36:54 god dag the_rob 11:37:06 gilbert too :) 11:37:19 i've just put a wiki on my web server 11:37:24 Neat. 11:37:29 Herkamire: x86 has 8-bit opcode space, remember? 11:37:29 just about to start to put some info on 11:38:09 Herkamire: It has 32-bit long branches too, but I have absolutely no need for them. 11:38:42 kc5tja go look at this if you already haven't seen it, I think you might really like it: http://pragprog.com/pragdave/Practices/Kata/Index.rdoc,v 11:38:57 It peripherally has to do with IT being a craft .... 11:40:15 --- join: jma (~jma@h-64-105-21-62.DNVTCO56.covad.net) joined #forth 11:40:35 'lo all -- got some nice improvements on "leaf" :) 11:40:41 it ties in with a number of things on richard gabriel's site about a MFA in software etc. 11:40:48 is leaf your forth? 11:40:53 holding the mouse over a known word will show its stack notation in a tooltip 11:40:56 an editor 11:41:05 the url of the wiki-to-come is http://www.forthfreak.net/wiki 11:41:07 ah cool. 11:41:14 * kc5tja nods 11:41:41 gilbertdeb: Yeah, he raises some good points. 11:41:46 need to fix "wiji" on that page 11:42:27 :) 11:42:33 go ahead 11:42:33 Done 11:42:38 kc5tja I'm really happy about that particular point of view. 11:42:42 That's the beauty of wiki -- no content ownership. 11:42:51 You find something you know to be erroneous? Fix it. 11:42:54 I have a book called Programming Etudes, which also promotes that very idea. 11:43:05 * kc5tja nods 11:43:15 I'm glad to see that its gaining (slowly) popularity in the industry. 11:44:57 Anyway, I'm going to run my errands now. I'll be back sooner or later. 11:45:03 --- nick: kc5tja -> kc-afk 11:45:17 Speuler forthfreak.net cannot be found! 11:45:36 gilbertdeb: Do not forget the 'www.' prefix. 11:45:45 * kc-afk is amazed at how many people still omit that like it's somehow optional. 11:45:55 Anyway, I'm out 11:45:59 gilbertdeb, strange ... 11:46:17 works here ... 11:46:49 heheh. 11:46:55 I copied and pasted it from the room. 11:46:59 gilbertdeb, what are you trying to do ? 11:47:44 getting to the wiki 11:48:30 i've set up rcs for the pages. 11:48:42 the there's nothing to damage 11:50:55 www usually is optional 11:51:03 many web browsers put it on for you 11:51:17 most webservers will redirect you if you don't putit on 11:51:49 Speuler: you set up a wiki with version control? 11:51:50 cooool_ 11:51:53 the www should be optional, forthfreak.net should do too 11:52:22 Herkamire, i didn't have to do much for it. just tweak the config a bit, and install rcs 11:52:43 cool 11:52:50 if you modify a page, you'll see the version log in the drop-down menu at the bottom 11:52:56 Speuler: forthfreak.net won't resolve for me. 11:53:06 me too. 11:53:18 neither would forthfreak.de (if its still there) 11:53:19 Herkamire, maybe cached. i only changed the dns entry a bit earlier 11:53:29 yes, both are there 11:53:47 try www for the moment, and without www tomorrow 11:53:52 cache time is 24 h 11:55:27 heh :) now it resolves :) 11:55:55 you are explicitly not supposed to cache failed dns lookups 11:56:08 i don't. your provider might 11:56:17 although I think Windoze 98 does. *&#&*^$@# thing 11:56:26 i noticed some do 11:56:27 I don't use my provider's DNS servers 11:58:10 well, I gotta go do some errands too 11:59:24 --- join: jdrake (jdrake@CPE00045afdd0e8-CM014410113717.cpe.net.cable.rogers.com) joined #forth 12:03:04 --- quit: skylan (".") 12:03:49 --- join: skylan (sjh@vickesh01-4698.tbaytel.net) joined #forth 12:36:58 --- quit: jdrake ("Oops. This machine just fell asleep") 12:45:00 --- quit: I440r-work (Read error: 54 (Connection reset by peer)) 12:49:03 --- quit: jma () 13:06:34 --- nick: kc-afk -> kc5tja 13:07:32 kc5tja you outta start a forth guild :) 13:08:15 Heheh 13:08:31 Guilds generally produce things for people though. What would we produce? 13:09:00 people capable of producing 'Forth solutions' :) 13:09:12 No, that's the talent pool. 13:09:31 Guilds used to produce hard products -- things people bought and used in their daily lives. 13:10:00 but software (and computers) are hard products -- things people find hard to use :D 13:10:18 --- join: jdrake (jdrake@CPE00045afdd0e8-CM014410113717.cpe.net.cable.rogers.com) joined #forth 13:10:48 I like the idea. Either get a forth inspired solution or wait for company X to create a shrink wrapped version for you. 13:11:01 --- join: I440r-work (~x@saturn.vcsd.com) joined #forth 13:11:02 Yeah. But the computers they purchase are made by someone else, who can make them 100% cheaper than I or my guild ever could. 13:11:15 and the software? 13:11:29 That would be the only thing I could potentially market. 13:12:15 I'm really happy about the codeKata article I read. I really think (even though some call it software engineering) that it IS very much like writing ... 13:12:26 an art! 13:12:32 Yes. 13:12:46 Engineering itself is an art. But software engineering is much more so -- it's like painting or music. 13:13:26 * kc5tja remembers the articlette he wrote on the colorForth mailing list about how Forth programmers are the jazz musicians of the computer industry. 13:13:27 so you'd say TAOCP is promoting an art of software engineering? 13:13:43 i need some insight into gforth and strings, I can't seem to get it to work last night. 13:13:48 kc5tja I once made a similar point in here ... 13:13:56 sometime in february. 13:14:15 but you might find it interesting that there IS a jazz musician who codes as well and equates the two. 13:14:18 TAOCP documents various methods and algorithms for getting things done in computer science. It's like reading a compendium of jazz music and how they're played. 13:14:27 his name is Stanley Jordan, and he is an APLer. 13:14:36 kc5tja EXACTLY!!!! 13:14:36 As CHuck says, "Look over the existing literature for ideas. Then formulate your own creation based on it." It's exactly how music is made today. 13:15:02 wow! thats also precisely what Richard Gabriel says!!!! 13:15:17 Code re-use begins in your head, not in the linker. 13:15:23 hehehe. 13:15:50 but no CS program I know of (as yet) teaches it as an ART :( 13:15:59 Because they still think it's a science. 13:16:05 unfortunately that is true until about 15 years ago. 13:16:08 And there are scientific components to it. 13:16:14 science and art are pretty linked 13:16:21 I had a GREAT CS/E professor that taugh us as it was art and science. 13:16:25 Things CAN be measured. Things CAN be optimized. Hypotheses can be made and tested. 13:16:26 jdrake shhhh. don't tell the scientists that! 13:16:34 But all this exists in music to some degree or another too. 13:16:40 beapp really? where is this prof? 13:17:05 gilbertdeb, he is retired now, but was the Abbel Chair at CSU in Colorado, Gerald Johnson, amazing man and amazing teacher! 13:17:11 kc5tja yeah! Music theory has been around for eons, but musicians know that it is an art and requires significant amounts of practice. 13:17:44 they do study the 'math/science/theory' aspect as well of course. 13:18:27 I know. I live with two professional musicians. :) 13:18:41 heheheh. 13:19:31 I guess it is no coincidence that Knuth insists that much of it is art given that he himself is an Organist. 13:19:45 Yep. 13:19:49 ... and a writer 13:19:55 but damn, could he make the math any HARDER? 13:20:09 Computing theory isn't easy. 13:20:28 Now this is funny, just found some question about Gerry and the fokelore that surrounds him... :) 13:20:29 Computers represents some of the most sophisticated advancements in discrete math and linear algebra systems. 13:20:33 --- quit: I440r-work (Read error: 54 (Connection reset by peer)) 13:20:35 http://catless.ncl.ac.uk/Risks/17.39.html 13:20:54 kc5tja linear algebra? 13:20:57 --- join: I440r-work (~x@saturn.vcsd.com) joined #forth 13:20:59 grep for Gerry and read how he brought down the ENTIRE IBM network at an expo, LOL, that is funny, not hte idea, but that folks idolize him like tat. 13:22:58 I think the idea is damn funny too. 13:23:12 gilbertdeb: Study of matrix math, basically. 13:23:27 hahaha thats a funny story. 13:24:21 kc5tja I've never considered studying linear algebra because I always thought it was more for the graphics guys. 13:24:49 My current working list is Discrete Math, Concrete math and abstract algebra. 13:24:59 I"m chipping very slowly away at the discrete math. 13:26:53 gilbertdeb: Well, that's where it's had its greatest impact, to be sure. 13:27:23 but if you need tools and techniques for solving a complex set of simultaneous equations (which occurs in all non-trivial fields, not just graphics), linear algebra is the only way to go. 13:27:33 Linear Algebra + Calculus = too powerful to mention. 13:27:51 ah yes ... thats APL's strong suite 13:27:57 And, yes, I lump "differential equations" under Calculus, regardless of what the school instructors tell me. 13:28:03 hehehhe. 13:28:30 :) that's where I learned diff eq 13:28:41 If there is a (partial) differential in the equation, you're going to have to integrate it over some (partial) variable at some point, so it is calculus. 13:29:02 They're trying to tell me that diff-eq is something "more." 13:29:16 Sure, it's more involved, and yes it's harder than, say, Calc II or Calc III -- but it's still calculus! :) 13:29:16 more than calculus? 13:29:22 I wonder whether there is a book that portrays calculus from a historical perspective 13:29:54 the majority of my calculus textbook was differential equations 13:29:58 they had to invent the various methods they came up with because they were missing some tools ... 13:30:07 that I think would be very interesting . 13:30:21 Yeah -- The History Of Calculus or something like that. 13:30:26 * kc5tja would be interested in reading that. 13:30:32 s/that/something like that/ 13:31:18 eg: Sir John could not solve such and such a problem very easily, so he invented this technique based on that and now your text book is a little larger thanks to him. 13:31:20 or something ... 13:33:37 does my favicon.ico thing showup at http://jason.herkamire.com:5000/ ? 13:34:08 lynx, dillo and firebird doen't show favicons... 13:34:38 whats a favicon? 13:34:46 it says Not a Public Server etc ... 13:35:01 is there a little smiley or something in the address bar? 13:35:14 No, not in mozilla. 13:35:23 do your bookmarks have icons? 13:36:20 some do. 13:36:27 see if mine gets one 13:36:41 eg the Risks Digest link beapp posted had one. 13:36:54 Herkamire: Firebird most certainly does show favicons. 13:37:02 :) 13:37:23 And yes, it shows up. 13:38:11 As it does with mozilla 1.0 too. 13:38:15 Herkamire opera shows it. 13:38:19 humph. my firebird just displays the stupid blue page icon everywhere 13:38:49 Herkamire so does my mozilla for most of the pages including the bookmarks (just noticed now) 13:39:42 --- join: cduce (~duce@stu04157.cariboo.bc.ca) joined #forth 13:40:48 --- quit: hovil (Read error: 110 (Connection timed out)) 13:40:50 I mean, mozilla shows the blue thing. 13:41:01 --- quit: beapp ("Vision[0.9.6-0203]: i've been blurred!") 13:41:09 My installations are right out of the box 13:41:14 They both show the favicon. 13:41:31 Check your settings; I'm sure there is a checkbox somewhere pertaining to favicons. 13:42:07 found it in the config file. I must have turned it off. 13:42:13 --- join: SDO (~SDO@co-trinidad1a-42.clspco.adelphia.net) joined #forth 13:44:29 ahhh :) got it. I turned it off in that about:config thing 13:44:40 well, that was stupid. 13:44:43 thanks guys :) 13:44:52 Hehe :D 13:46:45 konqueror displays it as well ... incase you were wondering 13:52:03 nice 13:52:08 I feel really dorky now 13:52:37 at least I don't have a mascot to put in the icon 13:53:27 I like the smiley. 13:55:35 --- join: crc (~crc@AC8D3C8E.ipt.aol.com) joined #forth 14:06:04 cool :) 14:09:48 I put it on herkamire.com 14:09:52 * kc5tja updates VIBE to use my ANSI Forth implementation of EMPTY and MARK. 14:10:37 YAY! It works! 14:12:19 ooo transparency! gotta gave transparency in my favicon ;) 14:12:28 --- join: SDO_AMD (~SDO_AMD@co-trinidad1a-42.clspco.adelphia.net) joined #forth 14:14:01 favicon is a PNG or ICO format file? 14:14:12 that's so weird. in firebird (on linux, and on windoze) the icon doesn't get into the bookmarks menu or toolbar until you go to the site again. 14:14:21 kc5tja: ico 14:14:38 search for "png2ico" on freshmeat 14:14:44 that's how I made mine 14:16:16 OK, just wondering. 14:16:51 Damn concession to Windows. :) 14:20:36 * kc5tja really admits to liking using Forth using tons of overlays. 14:20:46 Even with GForth, it's so much nicer to use. 14:21:17 crc: thanks :) 14:21:40 For? 14:21:47 contribution 14:21:56 No problem :) 14:22:32 Speuler you're taking donations? 14:22:47 i would be a fool to say "no" 14:22:51 heheheh 14:23:10 So am I. 14:23:12 :) 14:35:53 --- quit: crc ("I was using TinyIRC! Visit http://www.tinyirc.net/ for more information.") 14:44:18 --- join: rO| (~rO|@pD9E595A7.dip.t-dialin.net) joined #forth 14:45:42 lo 14:48:51 kc5tja: what do you mean overlays? 14:49:41 Most Forth environments will compile their "handy utilities" to be instantly available at boot-time. 14:49:54 I have mine set up to compile the programs I use when I use them. 14:50:22 E.g., vibe will EMPTY the dictionary and compile into memory that was formerly used by, say, INDEX. 14:50:43 If I want to exchange two blocks, I use EXCHANGE, which also EMPTY's the dictionary, and thus, overwrites VIBE. 14:52:07 What is sweet about this system is every time I use a tool, it recompiles from source -- hence, any changes I make to the program becomes readily available -- the edit/compile/run cycle (however short it is in Forth) becomes edit/run (as compilation is inherent in the invokation of the command) 14:56:23 In FS/Forth, even the command-line shell itself will be implemented as an overlay. 15:08:30 --- quit: I440r-work ("going home - brb :)") 15:09:57 --- join: jamc (~user@as3-6-8.asp.s.bonet.se) joined #forth 15:22:06 God kväll :) 15:25:06 gokväll 15:26:38 worshipers 15:34:11 Yes 15:35:47 Remember: worship is just one letter away from warship! 15:36:52 and warship is one letter away from peace! 15:37:00 :P 15:38:47 It is? 15:39:03 nah 15:39:15 it's a double negative statement 15:40:12 OK, just making sure I wasn't missing something terribly important. 15:40:13 :) 15:40:21 * kc5tja needs to wash his gi for tomorrow. 15:46:43 --- quit: rO| (".") 15:46:53 uh, how do i accept a dcc file in ircii ? 15:47:10 I don't know. 15:47:24 * kc5tja hasn't used ircii. 15:47:47 what about bitchx? 15:48:13 With BX, you just type /dcc accept, I think. I'm not 100% positive on that. 15:48:27 * kc5tja hasn't used BX in quite a few years. 15:49:29 well i'm getting the file but it gets downloaded with 0 bytes.. 15:49:32 bah 15:49:50 If you're behind a firewall, that can sometimes affect things. 15:50:14 * kc5tja cannot receive DCC sent files or chats, for example. 15:50:19 yeah 16:21:18 19:22 /DCC GET [ []] 16:21:19 19:22 - Gets the file offered by remote client. The file is downloaded and 16:21:19 19:22 saved into the current working directory. 16:21:41 i already tried that 16:21:57 --- join: arke (~rk@ca-cmrilo-docsis-cmtsj-b-36.vnnyca.adelphia.net) joined #forth 16:23:07 probably a firewall. or buggy client :) 16:23:41 y0 16:34:30 hi arke :) 16:44:37 --- join: lopedevega (~chat@r200-40-165-27.adsl.anteldata.net.uy) joined #forth 16:45:16 hi lopedevega 16:47:49 lopedevega, Uraguay? 17:05:42 --- join: Sonarman (~matt@adsl-64-160-164-67.dsl.snfc21.pacbell.net) joined #forth 17:08:10 --- quit: jamc ("Is something VIOLENT going to happen to a GARBAGE CAN?") 17:27:31 --- part: jdrake left #forth 17:47:38 uuter yes, and you? 17:47:50 hi Herkamire 17:49:30 Canada 17:49:44 the first .uy host i have seen 17:50:59 uuter: where in canada? 17:51:47 BC 17:51:58 same 17:52:15 Cariboo College? 17:52:20 kamloops 17:52:21 you? 17:52:30 Kelowna 17:52:38 wow 17:52:48 i thought you were russian or something because of your nick 17:53:38 heh, no 17:53:47 it would be Dutch if anything 18:00:13 Hehe 18:02:13 --- quit: gilbertdeb (Read error: 110 (Connection timed out)) 18:03:24 --- part: Speuler left #forth 18:08:35 --- quit: cduce ("gtg") 18:25:40 --- join: i440r (~mark4@sdn-ap-009txhousP0339.dialsprint.net) joined #forth 18:40:03 --- join: jma (jma@dialup-67.31.180.209.Dial1.Denver1.Level3.net) joined #forth 18:40:36 --- part: lopedevega left #forth 18:42:13 Back 18:48:09 brb 18:48:12 --- quit: i440r ("Client exiting") 19:06:47 me thinks my timer isn't too acurate. $ time echo "Q" | ./forth1 19:06:48 real 0m0.009s 19:06:48 user 0m0.000s 19:06:48 sys 0m0.020s 19:08:01 What exactly are you trying to do? 19:08:40 ? 19:09:51 Hmm. I don't think I can go much farther until I manage to implement the two vocabularies in FS/Forth. 19:09:57 get some general estimate of how long my bootstrap takes 19:10:12 OK, but what does "echo 'Q'" for? 19:10:23 It's basically timing the echo. 19:10:28 pressing Q makes it quit 19:10:30 You're sending the output of time to ./forth1 19:10:52 time is bash syntax 19:10:56 not real command 19:10:59 Oh. 19:11:08 * kc5tja seems to recall tiem being a real command. 19:11:17 But if it is internal, then it's a moot point. 19:11:19 well, maybe my system is screwy. 19:11:24 You are correct. 19:11:28 * kc5tja does not have time in his search path. 19:11:43 Try this instead, just in case: 19:11:48 yeah. at first I did: echo "Q" | time ./forth1 19:11:51 time (echo "Q" | ./forth1) 19:12:32 Wow. 19:12:44 * kc5tja did time (echo "Q" | ls) just to test, and it didn't work. 19:12:49 It ran "ls", and that's it. 19:13:53 anyway, I found that when you press S to save (which compiles a completely fresh ELF file, writes it out, coppies it to the begining of it's memory space, and then runs it) (which compiles the assembler, core, editor etc. and opens the editor to display the current block) takes approximately 8ms on my dual G4 450MHz 19:14:29 --- join: gilbertdeb (~knoppix@fl-nken-u2-c3b-178.miamfl.adelphia.net) joined #forth 19:14:39 Go Forth!! :D 19:14:57 * kc5tja loves one-pass compilers coupled with drop-dead-simple languages. 19:15:01 shit, and like half of that is the output to the terminal. I redirected output of my forth to /dev/null and it cut the time in half :) 19:15:17 Heheh 19:15:26 that makes it damn near 4ms 19:15:57 I've been pretty good about _not_ optomizing too :) 19:16:18 I only inlined words that compiled only one or two instructions. 19:16:24 This is why I've been so happy with overlays in gforth for my tools -- compilation occurs so fast that it is inconsequential. 19:16:34 yes :) 19:16:53 It'll be even faster under FS/Forth when it becomes self-hosting. 19:17:00 you hit S and the only noticable thing is that the cursor moves back to it's original position (which I will fix) 19:17:38 --- join: I440r-work (mark4@sdn-ap-019txhousP0204.dialsprint.net) joined #forth 19:17:52 time echo "SSSSSSSSSSSSSSSSSSSSQ" | ./forth1 > /dev/null 19:17:57 --- nick: I440r-work -> I440r 19:18:02 real 0m0.086s 19:18:02 user 0m0.040s 19:18:02 sys 0m0.050s 19:18:34 context herkamire? 19:18:52 S means bootstrap and save. Q means quit 19:19:05 is that herkamireForth? 19:19:11 I'm timing how long it takes my forth to bootstrap 20 times (and save an elf file of each version) 19:19:21 ah okay. 19:19:27 yes. herkforth. jwoof.com/programming.html 19:20:09 anybody know why theres 50ms system? is that from calling write for each character the editor displays? 19:22:22 that would be a lot of context switches. I call write 684 times to display a block with the editor. 19:22:42 I suspect that's how long the system takes in the kernel to handle *all* kernel functions, not just console I/O. 19:23:25 hmmm. I could test it without writing the file pretty easily 19:23:27 However, I'd suspect that the 40ms is spent doing per-character I/O instead of per-buffer I/O. 19:23:48 OK, gforth gleefully made my block file 1.6GB in size. 19:24:00 Without provocation on my part, to boot. 19:24:06 lol 19:24:07 * kc5tja sighs -- I can't wait to finish FS/Forth. 19:24:19 that should aughta be ennuff if your not greedy! 19:24:35 Heh 19:24:51 Is there any Unix command to truncate a file to a specified length? 19:25:31 erm there prolly is but i wouldnt know it 19:25:46 you could dd if=/dev/zero of= blah etc etc etc 19:25:49 recreate it 19:26:04 tho the block file is prolly filled with blanks not nulls 19:27:09 No, it's filled with NULLs. 19:27:19 gforth is not friendly to block users. 19:28:35 then the dd should work 19:29:07 I just did it from within Forth. 19:30:07 Thankfully, ANSI Forth has a "RESIZE-FILE" word. :) 19:30:44 heh 19:31:32 go forth :) 19:33:35 hmmmm. when I time 60 bootstraps instead of 20, the system time still stays at around 40-50ms 19:34:05 perhaps it's too little to measure accurately. 19:34:11 Could be. 19:34:30 4ms for a reboot isn't bad :) especially one that saves to disk :) 19:35:51 Don't forget that it's writing to a RAM cache first and foremost. :) 19:36:44 I think I need to implement a Forth dictionary now that I have the target image buffer established. 19:37:27 I can't think of anything else I could need at this point in time. 19:40:45 lol go to www.fbsd.com and its a fscking spam site selling a LINUX anti virus progie 19:40:46 lol 19:43:23 kc5tja: yeah. I removed the writing the elf bit, and it only took the time down to 3.75ms. 19:47:17 Interesting. 19:51:35 Wonderful. My Forth will have 15 significant characters in a Forth word, plus its length (max of 255). 19:52:55 I did 16 with no length byte 19:53:04 don't know if that's possible with yours 19:54:20 if dictionary lookups ever become slow enough to notice, I'm going to do them with the vector unit, and compair all 16 bytes at once. 19:54:28 It's possible, but it then limits the potential use of using long names (e.g., as when thunking to C library routines) 19:54:55 * kc5tja breaks the wordlist into two tables: one that is 32-bits wide, and one that is 128-bits wide. 19:55:05 huh? so you allow longer names, but they don't count to FIND or something? 19:55:10 The 32-bit wide table stores word length + the first 3 characters of each word. 19:55:39 The second table stores (in the first 12 bytes) the remaining 12 characters of the name, and in the last 4 bytes, the word's code field address. 19:55:41 Correct. 19:56:00 ok, that's what you mean by "significant digits" 19:56:12 where would you put more digits? 19:56:34 If you wanted more significant characters, you'd widen each element in the wide table. 19:56:40 The narrow table is optimized for scanning. 19:56:46 cool. 19:56:47 The wide table is optimized for record access. 19:56:59 that's neat :) 19:57:03 The idea is you don't even bother looking at the wide table until you have a potential match in the narrow table first. 19:57:38 This way, I maximize the use of the CPU's caches (note the wide table's record length is an even power of two, and hence, makes efficient use of cache lines) 19:58:03 nice :) 19:58:30 Likewise, the narrow table's elements are only 32-bits wide; on my Athlon, that lets me compare up to 16 potential words per cache line fetch. 19:58:59 If I rewrite the scanning code to use the Athlon's PREFETCH instruction, I can actually have the CPU prefetch the next cache line while still scanning the current set of 16 words. 19:59:15 But I don't particularly see any need for that kind of optimization at this time. 19:59:24 my interpreter only uses the dictionary for the CFA, if I wanted to get a simular speed boost, I could make a table with just the CFAs 19:59:43 What do you mean by using the dictionary for the CFA? 19:59:57 the pointer to the definition is called CFA right? 20:00:05 Yes 20:01:36 my dictionary entries are 32 bytes. CFA, flags, unused, then 16 bytes for the string 20:02:16 Right. 20:02:19 my source tokens for words (green, red and yellow) have an offset into the dictionary in them. 20:02:34 Right. 20:02:39 so the only part of the dictionary that the compiler uses is the CFA field 20:02:55 the rest is only used by the editor 20:02:57 * kc5tja is doing vaguely the same thing with his wordlist, but I'm splitting the single record into two parallel arrays to optimize for cache locality. 20:03:07 right 20:03:23 What threw me was you said that you were using "your dictionary" for the CFA. 20:03:24 I was saying that I could split my dictionary into two tables: 1) CFA 2) all the other stuff 20:03:37 Dictionary in Forth is an overloaded word -- I didn't know what you meant by dictionary. 20:04:08 oh. 20:04:15 what's the other definition of it again? 20:04:44 Herkamire: I don't think so. CFA tables in a native-code Forth are rarely accessed, while names are much more frequently accessed (by the editor, compiler, whatever). 20:05:09 Well, a word-list (a table mapping a name to a value) is sometimes called a dictionary in the computer industry, and many times in Forth. 20:05:17 The dictionary is also the buffer of memory used to hold compiled code. 20:05:41 The ambiguity came because the original Forths (especially for the 8-bit CPUs) used the same buffer for both. 20:05:46 both purposes. 20:06:07 However, I have a distinct region of memory for the Forth and Compiler wordlists, and the dictionary. 20:06:14 "dictionary" I should say. :) 20:06:16 ahh. this one: "The dictionary is also the buffer of memory used to hold compiled code." is the one I never use and keep forgetting about 20:06:40 perhaps I should say "wordlist" instead of dictionary? 20:06:51 I don't think there are any standards. 20:06:56 it's more of a table of contents than a dictionary 20:07:03 I just arbitrarily chose wordlist because it's already established in ANSI-speak. 20:07:27 Well, the CFA dictates a word's "meaning"; hence a dictionary is an appropriate name. 20:07:37 I hesitate to say wordlist because I don't want people to think I have multiple ones that they can switch between 20:07:38 Vocabulary is another name for it too. 20:07:50 * kc5tja nods 20:08:15 CFA is a pointer to the definition 20:08:36 like the page numbers you see in a table of contents, or the index of a book. 20:09:38 --- quit: gilbertdeb (Remote closed the connection) 20:10:21 I only search the dictionary when you type a word into the editor. 20:10:49 Right. 20:11:14 (and that searches just once or twice) 20:11:21 But the CFA points right at the definition. When compiling code, you compile a subroutine to a word's code field, for example. It directly dictates the meaning fo the word, therefore. 20:11:47 Anyway, this is all pretty moot, as it's all philosophical in nature. 20:11:53 The end results are pretty much the same. 20:12:00 I see what you're saying. 20:13:11 when I call that word, I don't look at what I think of as the "definition" of that word (the compiled code for it) I just use the CFA to create a branch. so in a sense the CFA is the data I'm looking for, not just a reference to it. 20:14:08 I was thinking I might get a speed benifit for when I'm compiling lots of code by splitting the dictionary into two seperate tables. 20:15:07 but I don't know if I will ever need extra speed. 4ms to compile almost every bit of code I've written so far and display some of it. 20:15:19 It all depends on your processor's available features, and how it best accesses memory. 20:15:33 That's really what determines where you partition your tables. 20:15:48 You don't need to partition nearly as much as I do though -- you tokenize everything. 20:16:02 I don't -- I'm using a classical Forth environment, pure ASCII everywhere you look. :) 20:16:15 So search times are much more important for me, as I search extensively at compile-time. 20:16:15 I think I've gotten the compiling process fast enough that it will never be an issue already. 20:16:29 kc5tja: exactly. 20:16:49 I never search the dictionary more than twice in a row. 20:18:35 well, I gotta take a break. see you later, or maybe tomorrow 20:23:43 OKies 20:23:57 * kc5tja is working on getting the Forth vocabulary working from within gforth. 20:24:45 deosnt gforth have vocabs ? 20:29:22 Yes, but I'm talking about FS/Forth here. 20:29:37 FS/Forth's target compiler is written in GForth. 20:29:50 So when I start compiling FS/Forth code, I want it to appear inside FS/Forth's environment, not in GForth's. 20:44:01 aha 20:44:11 target compiling 20:44:27 Yep. 21:00:33 YEEHAA! IT WORKS! 21:00:35 First shot! 21:00:37 woooooo! 21:08:32 can i do graphics stuff with gforth? 21:09:22 even if its crappy term colors and stuff ... ??? 21:09:34 * arke needs to practice forth badly. 21:10:17 Unless you are concerned only with text-mode ASCII art stuff, no. 21:10:48 gforth supposedly has a method of accessing C libraries from within it, but the mechanism changed with 0.6.2 (not sure why). 21:11:01 However, according to Anton Ertl, "It still remains to be documented." 21:11:38 So, in short, if you can reverse engineer how GForth accesses C libraries, you can probably use something like SDL or some simple widget toolkit. 21:12:02 I don't know if 0.6.2's C linkage system supports callbacks or not. 21:12:03 well, term stuff is fine, really 21:12:04 :) 21:12:26 erm, ' is for function pointer, right? 21:12:35 erm, word pointer i mean :) 21:14:08 * arke is trying to figure out forth callbacks :P 21:14:28 hey, arke! 21:15:04 Sonarman: hello :) 21:16:17 kc5tja: anyway, how do i do that? :P 21:17:50 --- quit: skylan (Read error: 104 (Connection reset by peer)) 21:17:57 --- join: _arke_ (~rk@ca-cmrilo-docsis-cmtsj-b-36.vnnyca.adelphia.net) joined #forth 21:20:08 --- part: _arke_ left #forth 21:21:31 Yes, you would use ' to get the address of a word. 21:21:55 arke: The AT-XY ( x y -- ) word is used to position the text cursor on the screen. 21:21:55 then how do i jump to an address? 21:22:03 arke: THen just use EMIT or TYPE as you normally would. 21:22:15 arke: You don't jump to an address, but you can call it with EXECUTE. 21:22:37 If a jump is truely desired, then the code you EXECUTE should start with R> DROP (e.g., dropping the return address) 21:23:55 --- join: skylan (sjh@vickesh01-4740.tbaytel.net) joined #forth 21:24:02 kc5tja: thanks :) 21:24:09 kc5tja: how do i change colors etc.? 21:24:18 * arke doesnt remember anything .... gah! 21:24:33 arke, ESC[ ... m ? 21:24:55 Suzanne: oh, theres no handy word for that .... :( 21:25:04 arke: Unfortunately, not. 21:25:07 arke, so define some :P 21:25:45 how do i do it with DOS? just like in linux? 21:26:04 arke, as long as ansi.sys is loaded, yes 21:27:07 * arke doesnt know if it is 21:28:01 If it's running under a version of Windows, ANSI.SYS is usually "automatic." 21:28:10 indeed 21:28:22 However, some people have reported bizarre problems with Windows XP. 21:28:28 So I can't really guarantee anything. 21:28:38 ack ... 21:28:44 Try it, and you will see if it works for you. 21:28:48 * arke doesnt want to fire up linux right now :) 21:28:53 So don't. 21:28:55 It doesn't hurt. 21:28:56 ok thanks for the help. 21:28:58 :) 21:29:08 : esc 27 emit ; 21:29:34 : white esc ." [7mThis is a test. You should NOT see [7m." cr ; 21:29:35 white 21:29:47 Sorry, that should read: 21:29:53 kc, umm 21:29:59 : white esc ." [37mThis is a test. You should NOT see [37m." cr ; 21:30:16 that isn't a good idea either :P 21:30:27 you want to reset the color at the end, surely ;) 21:30:43 Suzanne: [37m is the DOS default color. 21:30:46 : esc 27 emit ; ok 21:30:46 : white esc ." [37mThis is a test. You should NOT see [37m." cr ; ok 21:30:46 white This is a test. You should NOT see [37m. 21:30:46 ok 21:30:58 kc, then you don't want the [37m at the start ;) 21:31:07 Suzanne: The idea is to see if ANSI.SYS is consuming commands without disturbing the actual visuals. 21:31:16 Suzanne: Yes, I do. 21:31:22 oh ok, i see what you're doing 21:31:34 * arke doesnt get it baah! 21:31:55 arke: ANSI escape sequences are "out of band" communications to the terminal emulator to set colors and cursor position and the like. 21:32:11 now, the question is, do you want 32 words, or 16+1 words ? ;) 21:32:16 arke: ESC (ASCII 27) is the byte it watches out for. When it sees it, it knows that a terminal command follows, not text to display. 21:32:39 kc, thats a gross oversimplification :) 21:32:51 arke: The structure of an ANSI escape sequence is ESC (parameters) (command-character) 21:32:56 SOME esc sequences DO display text, but thats another story :) 21:33:09 Suzanne: I've never used them, and it's irrelavent for arke's problem. 21:33:15 So I'm glossing over them. 21:33:22 fair enough 21:33:32 --- quit: jma () 21:33:36 i doubt ANSI.SYS emulates them anyway 21:33:40 arke: Understand that much? :) 21:33:51 Suzanne: It does in non-Windows DOS installations. 21:34:01 i'm learning a lot from this :) 21:34:12 kc, i mean 'the ones that do display text' 21:34:14 kc5tja: yeah, i kinda knew that stuff, never go into it, havent done it in years, forgot it all :) 21:34:15 Windows has ANSI.SYS functionality built-in, though. 21:34:29 kc, ansi.sys is somewhat simplistic, and doesn't emulate a large amount of the esc sequences 21:34:34 Suzanne: So do I. MS-DOS 6.22 and earlier do *not* do ANSI or VT terminal emulation. 21:34:46 Suzanne: I know this. 21:34:58 Suzanne: It does "enough" to work for our needs though. 21:35:03 kc, yeah 21:35:12 all i need (want, actually) is color :) 21:35:16 there are some weird things you can do with escape sequences in linux ;) 21:35:26 you can get to the mouse via GPM or xterm, for example 21:35:29 arke: Your best bet is to read up on the ANSI control codes. 21:35:54 arke: Ignore the codes you don't need; all the codes are pretty independent of each other. 21:36:15 ESC[..m is probably the most useful 21:36:23 arke: In particular, you want to look for the ESC[4xm and ESC[3xm codes -- the former sets background color, the latter foreground. 21:36:26 it sets colors, bold, underline, reverse text, etc 21:36:39 where x is the ANSI color code (0..7 inclusive) 21:36:45 * kc5tja nods 21:36:57 thats an sgr and alot of terminfo's dont contain a format string for it 21:37:07 even when the term itself supports the sgr 21:37:13 they all have sgr0 tho 21:37:15 sgr? 21:37:29 i440, what is a sgr ? 21:37:30 yes. thats the name of that particular escape sequence 21:37:33 in terminfo 21:37:47 I don't think terminfo uses ANSI nomenclature, last I checked. :D 21:38:01 I could be wrong though. 21:38:05 kc, it does 21:38:07 it shows both the terminfo name and the termcap name 21:38:20 Damn, I'm hungry, and all the stores are closing up around here. Bahh... 21:38:37 any handy function in gforth for converting a number to a string and/or printing a number to screen? 21:38:46 * arke must seem like a n00b here :) 21:39:26 yes 21:39:31 very important 21:40:01 heh 21:40:05 what is it :) 21:42:59 arke: <# #s #> will convert a double number into a string. 21:43:14 So to convert a normal number to a string, you need to S>D <# #S #> 21:43:22 To display a number, you can just use . to print it. 21:43:28 Or, if it's unsigned U. 21:43:33 U. rather 21:44:40 aah, thanks :) 21:44:59 n/p 21:45:38 erm, how does that S>D thing work? 21:45:43 :D 21:45:49 Ironically, : s>d 0 ; 21:45:59 It converts a single-precision integer into a double-precision integer. 21:46:31 just pushes the blank 0 to form the upper part of the word 21:46:32 on gforth, its defined as : s>d dup 0< ; 21:46:40 cell i mean 21:47:08 see S>D 21:47:08 : s>d 21:47:08 dup 0< ; ok 21:47:09 Oh, OK. gforth's version of S>D sign-extends the number 21:47:17 That's more correct, technically. 21:47:32 by single-precision do you mean 8-bit, and by doouble precision 16? 21:47:58 Sonarman: Single-precision integers are one cell wide in Forth. So if you have a 16-bit Forth, it'll be 16-bits wide. If you have a 32-bit Forth, it'll be 32-bits wide, etc. 21:48:19 oh ok, thanks. 21:48:25 : itoa s>d <# #S #> ; \ ???? 21:48:27 Sonarman: A double-precision integer is just two single-precision integers (one containing the low cell, and one containing the high cell). 21:48:28 :P 21:48:36 arke: Correct. 21:48:41 aah, ok thanks :) 21:49:13 * kc5tja isn't sure if #S handles sign or not, so it might be unsigned. If so, then this is the proper definition: 21:49:25 : unsigned s>d <# #S #> ; 21:50:04 : signed negate s>d <# #S [char] - hold #> ; 21:50:45 : itoa DUP 0< IF signed ELSE unsigned THEN ; 21:50:56 -23 itoa type 18446744073709551593 ok 21:51:02 Yeah, definitely unsigned. :) 21:52:25 Also note: #> uses the same buffer for all of its numbers. So: 1 itoa 2 itoa type type will produce "2 2" on the screen. 21:53:10 SO if you want to convert a number of numbers (no pun intended), you need to be careful to either use the results right away (happens more often than most would admit), or to cache it in a temporary buffer somewhere. 21:54:18 :) 21:54:20 thanks alot!! 21:55:36 * arke is away: sl33p ... forth is great ... i am glad to have (re)discovered it. 21:55:57 :) 21:56:21 * kc5tja swears he's going to write an introductory text on programming using Forth. 21:56:24 Someday. 21:56:43 Chapter one won't be "Hello World" either. 21:57:02 it'll be a garbage collector :) 21:57:06 Heh 21:57:16 It'll be an introduction to how computers actually work under the hood. 21:57:24 How memory is looked at by the computer, etc. 21:57:53 Understanding memory and memory addresses are vitally important to learning Forth, because VARIABLEs are just address constants. Hence, @ and ! work with generic pointers, not just with VARIABLEs. 21:58:36 that sounds really good 21:59:13 The old programming books of 20 years ago all started that way. 21:59:30 The newer programming books of today assume the reader is too fscking stupid to understand the concept of a pigeon hole. 22:00:02 (which is the opposite attitude to take: indeed, the reader is too stupid to understand what the writer is writing about most of the time.) 22:00:46 Ah well -- when I get more time, I guess. 22:02:29 if you do, don't forget a bit of humor :) 22:02:44 Well, I'm no Leo Brodie. 22:03:10 But the text would be targetted towards people like my mom, who knows *nothing* about computer programming at all. 22:04:21 --- join: I440r-work (mark4@sdn-ap-007txhousP0280.dialsprint.net) joined #forth 22:04:40 --- quit: I440r-work (Client Quit) 22:05:47 --- quit: I440r (Read error: 60 (Operation timed out)) 22:28:15 --- join: Serg_Penguin (Serg_Pengu@212.34.52.140) joined #forth 22:28:25 hi ! 22:29:46 re 22:33:18 what's a pigeon hole? 22:33:45 A little box that you stuff things in -- usually around 6 inches deep, and about 4 inches square at the opening. 22:33:56 In short, a little box about the size of a pigeon -- hence its name. 22:34:23 * Serg_Penguin dislikes pigeons, they are flying rats of a city 22:34:43 and crows too 22:35:30 can't think what I'd use such a box for 22:35:30 Pigeons and crows are living creatures that are trying to survive in this man-encrusted world. 22:35:45 Herkamire: Most companies use them for intra-office and employee mailboxes. 22:35:52 kc5tja: yeah, but they aren't as cool as squirrels 22:36:00 probably because they crap everywhere :) 22:36:14 Herkamire: Squirrels are rodents as much as mice are. And just as much an annoyance. 22:36:33 My mom constantly got squirrels and chipmunks running around in her house. 22:36:43 but I think a lot of people like squirrels 22:36:48 chipmunks ? 22:37:03 our neighbor had a squirrel fall down her chimbney 22:37:35 i like pet rats ;)) but not the wild ones 22:37:39 Serg_Penguin: A cute rodent, much less annoying and destructive than a squirrel. 22:37:45 ok, now I know what pigeon holes are. it's on cell of those grids of little mail slots they have in big offices. 22:37:59 Herkamire: Yep. 22:38:13 Herkamire: And what better analogy to use for RAM than a corporate mail office? 22:38:22 :) 22:38:35 is pigeon hole used as a verb? 22:38:46 or am I getting it mixed up with something else? 22:38:47 kc5tja: bags store in a mall 22:38:57 Herkamire: This is the English language; almost anything can be used as a verb. :) 22:39:12 brb 22:39:16 bathroom 22:39:27 grid of little boxes, in wich you lock your bag be4 you enter 'self-service' mall area 22:48:02 Serg_Penguin: We don't have those in this country. 22:48:16 Especially when a single small mall can have millions and millions of people go through it. 22:48:51 but I get the idea. I'll just have to find a way to rationalize it in a more universal context. 22:49:29 Perhaps the coat hangers you often use when attending public events (e.g., you walk into a building, and there is someone near the door accepting coats, and placing them on hangers for people). 22:49:40 Anyway, I think I'm going to get some sleep. 22:49:45 I have college in the morning. 22:49:53 --- quit: kc5tja ("THX QSO ES 73 DE KC5TJA/6 CL ES QRT AR SK") 22:59:49 --- quit: Herkamire ("goodnight") 23:02:39 --- quit: Serg_Penguin () 23:09:41 --- quit: Sonarman ("leaving") 23:59:59 --- log: ended forth/03.09.03