00:00:00 --- log: started forth/05.08.30 00:26:50 --- join: amca (n=plump@as-bri-4-1-200.ozonline.com.au) joined #forth 00:28:19 Hello 00:28:59 * ayrnieu puts 1 000 000 USD in amca's bank account. 00:30:07 * amca hugs and loves ayrnieu...and hopes instead he didnt just put USD$1 followed by 2 * USD$0 in his account 00:31:38 * amca is geting more used to Forth notation 00:31:45 (getting) 00:32:24 excellent. 00:34:30 amca dup @db/user 1 point karma+ swap !db/user 00:34:48 lol 00:37:23 altghough I would have thought it would have been "1 point swap karma+" 00:39:55 Am I right or do I mis understand? 00:46:17 no, you're right. 00:46:55 amca karma+1 >db \ would also work. 00:48:26 Ive never come across words similar to db/user yet, so I had to guess what it was used for 00:50:54 What I read it as doing is pushing me onto the stack, dup'ing me. Getting the record of me from the user database, pushing 1 point of karma onto the stack, adding the karma field offset to the amca user record, and then storing the point there. 00:52:37 I read "amca karma+1 >db" as pushing me onto the stack, calling the word that increases the karma on me, then pushing me onto the database stack. 00:52:40 How am I going? 00:56:45 well, although !db might be better, again. /me blames sleepiness. 00:57:17 heh :) 01:01:19 : page ESC[ .\" 2J" 0 0 at-xy ; <- that clears the screen by using ansi codes to clear the screen and then repositions the cursor, right? 01:02:49 yes. 01:03:25 : page ESC[ ." 2J" ESC[ ." 1;1H" ; 01:05:06 cool 01:05:21 sweet 01:06:49 if on linux, you should have a 'console_codes' manpage that talks about some of those. 01:07:41 * amca looks 01:08:19 I used to have a ~/bin/dark that cleared the screen, turned off the cursor, and then waited for a keypress/interrupt to reset everything and exit. And a 'light' to do the same with background-white, but that's just silliness :-) 01:08:23 * ayrnieu & sleep 01:09:02 hehe 01:09:07 sweep forth dreams :P 01:09:12 sweep = sweet 01:51:31 --- join: onetom_ (n=tom@ns.dunasoft.com) joined #forth 01:51:44 --- quit: onetom_ (Client Quit) 01:56:54 --- nick: amca -> amca_away 02:16:15 --- quit: virsys (Read error: 113 (No route to host)) 02:16:44 --- join: virsys (n=virsys@or-65-40-177-201.dyn.sprint-hsd.net) joined #forth 02:23:33 --- quit: amca_away ("d34d") 03:38:07 --- join: amca (n=plump@as-bri-3-98.ozonline.com.au) joined #forth 03:38:39 evening 04:08:56 --- join: tathi (n=josh@pdpc/supporter/bronze/tathi) joined #forth 04:15:22 Hello 04:29:57 hi amca 04:30:07 How are you today? 04:30:32 I'm doing pretty well. How's by you? 04:32:41 Not to bad. 04:32:48 Shoulkd be going to bed though >.> 04:33:29 What time is it there? 04:33:43 9:40pm 04:33:59 I usually should be in bed by 9 04:34:05 have to be up early? 04:34:18 7:40am here :) 04:34:40 No. I just need lots of sleep and I am a morning person 04:35:02 ah. yeah, me too. 04:35:08 hehe 04:35:16 Where do you live? 04:36:35 Eastern Pennsylvania (USA) 04:37:02 Queensland, Australia 04:37:48 Anything exciting coming up today? 04:39:18 I was hoping to get a bunch of gardening done, but it looks like it might rain again... 04:40:15 :/ 04:41:23 though... I suppose it's warm enough that I might not mind getting soaked. 04:41:29 lol 04:42:05 been doing the gardening regularly or letting it pile up? 04:42:22 been fairly good about it... 04:42:28 cool 04:42:41 Im letting mine pile up for now >.> 04:43:03 but I need to dig in a new bed -- moving flowers out so I can expand for next year. 04:43:06 :) 04:43:16 cool 04:43:31 Big garden? Or planning to make it a big one? 04:46:47 hmm...comes up to about 68 m^2 04:47:00 Nice 04:48:01 I dont suppose you know where one can download the IBM PC Technical Manual? 04:48:41 no. 04:48:46 ah well 04:48:58 Ive tried googling, but it is not going well 04:49:00 The original one? 04:49:39 yeah 04:49:47 with the BIOS listing etc 04:53:04 You been doing much coding lately? 04:53:40 A fair amount. Been doing this VM for herkforth. 04:54:32 Also trying to put together a small optimizing forth compiler. 04:54:49 Ah. Was you chatting about that yesterday on here? 04:56:05 the VM? Me or JasonWoof 04:56:16 Not sure. That's why I asked :) 04:56:32 I think whoever it was was talking to Quartus - but again I cant remember 04:57:19 Too late at night for my brain to work too well :) 04:58:48 :) 04:59:31 Did you put up a nopaste link to VM defs? 05:00:46 PoppaVic did that, but it was my list, he just organized it a bit. 05:25:33 --- quit: amca (Read error: 113 (No route to host)) 05:43:33 --- nick: Raystm2 -> nanstm 05:46:29 --- join: PoppaVic (n=pete@0-1pool46-142.nas30.chicago4.il.us.da.qwest.net) joined #forth 05:46:45 Howdy 05:47:12 Hi 05:48:40 how goes it? 05:49:58 hello 05:50:14 howdy 05:50:16 Good. 05:50:31 I wrote an assembler for the VM in standard Forth (works under gforth) 05:50:38 And added stack comments to the opcode list 05:50:42 tathi: workin' on some notes and stuff for a replyback to you ;-) 05:50:53 and did another list organized by function 05:51:16 oh, most cool - yer cranking out new stuff faster than I get my head around it ;-) 05:51:48 I'm starting to get my head around asm, little by little 05:52:01 docl: asm for what processor? 05:52:12 x86 05:52:18 ah :) 05:52:28 There I was, crawling along.. Writing a few structs and shit - and you go off and write new files on me ;-) 05:53:15 bah, mostly just documentation-type stuff. 05:53:28 got urls to them? 05:53:32 and I need the assembler so I can finish testing it... 05:53:50 it's all in my svn repository: http://josh.qualdan.com:3/svn/fovium/ 05:54:28 ahh, best yet - I kept trying to back off to an index ;-) 05:55:26 yah, I really like that SVN is web-based 05:56:51 How is BP used, btw? Are you basing the stacks and fixing offset between? 05:58:26 no, that's a base for the address space. 05:58:43 --- quit: onetom (Read error: 113 (No route to host)) 05:58:52 oh... Like a mmap or image-space? 05:58:59 think so. 05:59:52 well, I presume the DP/SP get incremented like normal ptrs, so what "zeroes" them? Or, "How can you tell when you are empty?" 05:59:55 in the C version, whenever you do a memory access, it masks it to 1MB, and adds it to BP before using it. 06:00:13 Oh, I just used guard pages to check for stack over/underflow 06:00:38 ahhhh - that's what all the guard-stuff is for? Damn, I was soo confused about that. 06:00:42 So...I'll need to add a SIGSEGV handler to catch it...haven't done that yet. 06:01:09 yeah, just allocates an extra page on either end with no access priviliges. 06:01:22 I stole that from Factor :) 06:01:34 Is there some advantage to the guarding, versus setting a pair of "base" pointers for DS/RS reset? 06:01:57 --- join: onetom (n=tom@ns.dunasoft.com) joined #forth 06:02:15 oops, there's actually no point to the main memory block being guarded...d'oh 06:02:34 well, if I did base pointers, I'd have to check every time I did a stack access 06:02:42 which would slow things down a bit 06:02:52 this way, we shove the checking off onto the MMU hardware 06:03:44 hmm, I guess I seriously need to read the guard-code 06:05:28 ohhh, wait.. I think I see it... 06:06:19 ahh, yer guards wrap mmap - and you get an image_space+ds_space+rs_space mmapped! 06:06:49 three maps 06:06:56 ahhh sooo, weedhopper 06:07:21 right. except there's no point in image_space being guarded, since you have to check that manually anyway. 06:07:52 hmm, no segfault-sig when you under/overflow it? 06:08:54 well, with the image space, you can give a full 32-bit offset ("address") 06:09:02 so just having a guard page probably wouldn't help too much. 06:09:10 I'm just checking accesses to that space manually. 06:09:36 oh.. OK.. Hmm, I thought mmapped space at least errored on bad access 06:09:56 iow, "out of bounds" 06:10:35 seems like you'd want to insure ptrs are just relative, then 06:11:26 you DO get a segfault if you access memory to which you don't have permissions. 06:11:48 but...given full 32-bit literals, you can address a full 32-bit address space. 06:11:48 ahh, but not while w/i a mmap 06:11:57 --- join: JasonWoof (n=jason@pdpc/supporter/student/Herkamire) joined #forth 06:11:57 --- mode: ChanServ set +o JasonWoof 06:12:01 yeah, I see it 06:12:08 and *some* of that address space is bound to be accessible. 06:12:09 ok 06:15:20 I like your "assembler" idea ;-) 06:15:37 although, it sure looks like the basis of Metacompiling ;-> 06:16:05 tathi: round_up can be implemented like so: 06:16:06 value += unit - 1; 06:16:07 value -= value % unit; 06:16:07 what else would I do? I need some way to generate images for this thing... 06:16:26 damn. I just realized that myself about 30 seconds ago :) 06:17:04 although I did 06:17:24 value = value & ~(unit-1); 06:17:44 instead of the modulo. 06:18:19 --- join: madwork (n=madgarde@derby.metrics.com) joined #forth 06:20:22 ooh :) I like your 'full?' word 06:21:17 do you think the double spaces help readability? 06:21:40 no 06:21:56 darn :) 06:22:15 what file are you speaking of? 06:22:25 asm.f 06:22:42 wait... ~(unit-1) is the same as -unit right? 06:22:47 yes 06:22:51 whee! 06:23:00 but in C, for an unsigned value... 06:23:06 keeps the compiler from complaining 06:23:10 ahh 06:23:22 damn C compilers 06:23:36 yeah. Type systems are dumb :P 06:23:40 oh, stop whining ;-) 06:23:48 tathi: bad type systems are dumb 06:24:23 lscd: I'd imagine any type system would complain if you tried to assign a negative number to an unsigned variable... 06:24:59 tathi: mm, a lot of languages don't have signed/unsigned variables in that sense 06:25:40 then...how do they decide whether to use signed or unsigned operators? 06:26:08 badly 06:26:18 i suppose everything is implicitely signed, or something; but in, say, haskell or smalltalk or python, you don't declare variables signed/unsigned 06:26:46 there tends to be automatic promotion to bigger types when needed too, etc 06:27:07 right. I'm doing bit-manipulation here. 06:27:13 I suppose that's kind of a low-level thing. 06:27:21 runtime typechecking has it's own drawbacks 06:27:39 like speed 06:27:54 and when you're just trying to do something specific with bits, it's downright cumbersome 06:28:05 Anyway, I do realize that you can do a lot better than C does. 06:28:26 tathi: yes, when you're trying to mess with bits, a lot of type systems get in your way, annoyingly 06:29:01 JasonWoof: the speed hit isn't necessarily large, nor always important, heresy as that may be here 06:30:27 lscd: sure 06:30:47 but we're talking about a vm implementation 06:30:53 it's got to be precicely correct and fast 06:30:54 ahh, fair enough 06:31:06 yep 06:33:35 I certainly appreciate a runtime type system with automatic promotion etc when I'm writing certain things 06:35:05 yeah; and for a vm, I appreciate that that's not necessarily what you want at all 06:39:20 * JasonWoof nods 06:39:53 --- join: _I440r (n=foo@rrcs-24-242-160-169.sw.biz.rr.com) joined #forth 06:40:11 Hey all. 06:40:21 Hi Quartus 06:40:37 <_I440r> hi 06:42:10 hi 06:42:35 howdy 06:42:52 <_I440r> its like the inverse waltons in here lol 06:43:30 snotlaw? 06:43:51 that too ;-) 06:44:58 haha 06:45:41 --- nick: _I440r -> I440r 06:46:33 inverse waltons? 06:46:56 yes.. hello xxx, hello yyy instead of goodnight everybody 06:46:57 lol 06:47:47 oh. 06:48:47 Akin to the way Forth says 'ok' after input, instead of before? 06:49:22 hmm... We should switch to "aloha" 06:49:35 That covers both ends ;-) 06:51:42 it sounds better than 'ciao' too 06:52:01 although ciao does use one byte less ^-^ 06:56:32 We could make Forth cooler to the mass market... 06:56:42 2 3 + . 06:56:42 5 yo 06:56:42 > 06:57:22 you misspelled 'ass'. 06:57:47 thank you, I hate gangstas and wiggers *sigh* 06:58:22 I can recall a great debate one day about pants falling off yer ass. 06:58:48 the idiots were unaware why it began, but it was "cool" 06:58:56 Heh 07:07:47 --- join: snowrichard (n=richard@adsl-69-155-177-154.dsl.lgvwtx.swbell.net) joined #forth 07:16:46 --- quit: snowrichard ("Leaving") 07:26:32 What's new out there? 07:29:41 --- join: sproingie (i=foobar@64-121-15-14.c3-0.sfrn-ubr8.sfrn.ca.cable.rcn.com) joined #forth 07:34:06 heh 07:34:30 I'm working up a header to throw tathi.. It prolly is overkill for his porpoises. 07:37:24 ? 07:37:28 whups 07:37:41 hmm? 07:39:38 nevermind 07:39:46 --- join: virl (n=hmpf@chello062178085149.1.12.vie.surfer.at) joined #forth 08:01:24 --- join: snowrichard (n=richard@adsl-69-155-177-154.dsl.lgvwtx.swbell.net) joined #forth 08:03:26 --- quit: snowrichard (Client Quit) 08:07:01 brb... osx wants a reboot. 08:07:03 --- quit: PoppaVic ("Pulls the pin...") 08:07:50 Free or commercial Standard Forths for the Mac: recommendations? 08:12:34 --- join: PoppaVic (n=pete@0-1pool46-180.nas30.chicago4.il.us.da.qwest.net) joined #forth 08:12:48 Dats better 08:13:24 PoppaVic: Free or commercial Standard Forths for the Mac: recommendations? 08:13:42 hmm.. I like gforth for general screw-around. 08:14:03 There are some others, but they try to squeeze clock-cycles/space 08:14:14 No Mac-specific extensions in gforth on OSX, right? 08:14:32 Q: you gotta' remember, I'm mostly a C-user and forth is educational/fun ;-) 08:14:52 Not that I am aware of, no. Gforth may have some extra sources you CAN load. 08:31:40 Thanks. My most recent Mac is a System 7 box. 08:31:47 ahh 08:31:57 Did I even help? ;-) 08:32:09 Yes; I'm asking for general info on OSX. 08:32:14 'Coz I don't have one. 08:32:34 ahh, I try to avoid thinking "macosx" - I _try_ to think of BSD 08:33:13 Are there commercial Forths for OSX? 08:33:41 no idea at all. Should be 08:33:51 I never have money like that to squander 08:38:53 --- quit: I440r (No route to host) 08:49:50 --- quit: ayrnieu (Read error: 110 (Connection timed out)) 09:15:56 --- join: ayrnieu (n=julian@ip68-13-110-105.om.om.cox.net) joined #forth 09:19:27 you up, tathi? 09:23:54 yeah 09:24:34 ok, gonna' post a header I am beating up... 09:25:01 http://rafb.net/paste/results/Zx5JQl54.html 09:26:54 that's quite a header :) 09:26:59 heh. 09:28:51 I held off on proto's and whacky-inlines until I showed you what I think I understand. 09:29:02 yeah. 09:29:14 gotta go for 15-20 mins 09:29:18 looks ok on first reading though 09:29:19 np 09:41:39 --- join: snowrichard (n=richard@adsl-69-155-177-154.dsl.lgvwtx.swbell.net) joined #forth 09:42:18 --- quit: snowrichard (Client Quit) 09:45:19 back 09:45:55 wb 09:46:49 wubba 09:46:52 I am still tinkering.. But, I don't much like the TOS(whatever) slots. 09:47:34 so... leave them out. 09:47:56 only makes sense if you're caching it in a register anyway. 09:48:10 but it has gotten to be kind of a habit for me :) 09:48:13 well, jas got a bit upset with me for mentioning it - I'm just wondering if they are worth the effort and exceptions 09:48:37 Not in C, I don't think. 09:48:46 how can you tell a "stack" is actually empty? 09:49:37 yeah, leads to slightly different semantics. 09:49:58 yah, not sure if it is a win or or draw/loss 09:50:16 As I said, for something written in C it doesn't make any sense. 09:50:38 maybe.. Or maybe asm makes a lot of assumptions? 09:50:43 Several asm Forths do it -- they keep the top element of the data stack in a register all the time. 09:51:01 in which case it simplifies some things, and speeds things up. 09:51:04 how's that work with dcells and such? 09:51:19 don't know. 09:51:25 ahh 09:51:28 I've never had a use for dcells on a 32-bit machine. 09:51:33 hmm 09:51:55 How would you test for empty on , or . ? 09:52:30 * tathi isn't big on error checking either, sorry :) 09:52:35 ahhhhhhh 09:53:01 ok. So, you won't mind if I tinker that a touch? 09:53:16 why would I? 09:53:50 well, just asking first - "assume" issues. And, perhaps this code will be useful to you? 09:55:05 I'm about done coding on this, I think. 09:55:10 But I'm always curious 09:55:14 heh, ok. 09:56:19 I'll drop the top of stack cache though. It's an asm habit that I carried over without thinking about it. 09:56:49 yah, it's useful - but it suggests a load of issues/tests 09:57:49 I suppose... 09:58:24 well, somewhere along the line there has to be some paranoia. 09:59:21 I just don't see the need for anything to do with stack depth. 09:59:34 well, except for implementing .s 09:59:44 umm.. that was my point 09:59:57 underflow/overflow 10:00:10 use guard pages, and push it off onto the MMU 10:00:29 so ok, there's a gray area -- you can't tell if it's empty or if there's one cell there, but so what? 10:00:32 hmm, back to your guard code. 10:01:01 well, it means the engine is careless and prone to errors is all 10:02:21 I don't see why it's a problem if a user program can underflow one cell without the engine catching it. 10:02:23 for example, if yer interactive and you have an empty stack and do ". cr" - I mean, yer back to the guards? 10:03:38 But then, one of the reasons I like Forth so much is it doesn't try and do that kind of hand-holding. 10:04:04 hmm... I just ran a gforth test like that... 10:05:24 cr .s cr dup .s cr . 10:05:24 <0> 10:05:24 <1> 0 10:05:24 0 ok 10:05:58 interesting - they must make yer own assumption. 10:06:27 and...depends on the platform apparently. 10:06:34 here I get a stack underflow on the dup 10:06:46 really? intersting - gforth?? 10:08:02 hrm. Apparently I've got 3 different gforth binaries: gforth gforth-fast gforth-itc 10:08:09 I get an underflow from gforth and gforth-itc 10:08:28 but gforth-fast does the same as yours. 10:09:09 and... this is gforth 0.6.2, fairly standard PPC Linux install, I think. 10:09:51 yeppers 10:09:57 weird. 10:10:21 oh, I use 0.5.0 10:13:44 yeah, they document it as required by ANS (in the gforth info page), but it's pretty vague. 10:17:08 --- quit: tathi ("brb") 10:17:33 --- join: tathi (n=josh@pdpc/supporter/bronze/tathi) joined #forth 10:18:16 grr...I really need to track down and destroy whatever program is fscking with my keyboard repeat rate... 10:19:33 hehe. OK, time to drift off to the range and beat this code more 10:19:38 --- quit: PoppaVic ("Pulls the pin...") 10:38:45 --- quit: virsys ("bah") 10:45:20 --- join: virsys (n=virsys@or-65-40-177-201.dyn.sprint-hsd.net) joined #forth 10:54:51 --- quit: tathi ("leaving") 11:49:38 --- join: skylan_ (n=sjh@dialup-216-211-47-87.tbaytel.net) joined #forth 12:02:18 --- quit: skylan (Connection timed out) 12:41:28 --- join: amca (n=plump@as-bri-4-1-57.ozonline.com.au) joined #forth 12:56:56 --- join: snowrichard (n=richard@adsl-69-155-177-154.dsl.lgvwtx.swbell.net) joined #forth 12:57:44 --- quit: snowrichard (Client Quit) 13:32:45 --- join: snoopy_16 (i=snoopy_1@dsl-084-058-146-223.arcor-ip.net) joined #forth 13:33:41 --- quit: Snoopy42 (Nick collision from services.) 13:34:16 --- nick: snoopy_16 -> Snoopy42 14:36:15 --- nick: amca -> amca_away 14:37:50 --- quit: cmeme ("Client terminated by server") 14:38:34 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 14:39:47 --- quit: cmeme (Client Quit) 14:40:30 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 14:41:43 --- quit: cmeme (Client Quit) 14:42:26 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 14:43:39 --- quit: cmeme (Client Quit) 14:44:22 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 14:45:36 --- quit: cmeme (Client Quit) 14:46:19 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 14:47:32 --- quit: cmeme (Client Quit) 14:48:15 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 14:49:28 --- quit: cmeme (Client Quit) 14:50:11 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 14:50:18 --- join: snowrichard (n=richard@adsl-69-155-177-154.dsl.lgvwtx.swbell.net) joined #forth 14:50:23 hello 14:51:24 --- quit: cmeme (Client Quit) 14:52:07 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 14:53:20 --- quit: cmeme (Connection reset by peer) 14:53:24 --- quit: saon ("brb") 14:54:03 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 14:54:06 --- join: saon (n=saon@c-66-177-224-235.hsd1.fl.comcast.net) joined #forth 14:55:16 --- quit: cmeme (Client Quit) 14:55:59 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 14:57:13 --- quit: cmeme (Read error: 104 (Connection reset by peer)) 14:57:55 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 14:59:09 --- quit: cmeme (Read error: 104 (Connection reset by peer)) 14:59:52 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 15:01:05 --- quit: cmeme (Read error: 104 (Connection reset by peer)) 15:01:48 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 15:03:01 --- quit: cmeme (Client Quit) 15:03:44 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 15:04:58 --- quit: cmeme (Client Quit) 15:05:40 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 15:06:54 --- quit: cmeme (Read error: 104 (Connection reset by peer)) 15:07:37 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 15:08:50 --- quit: cmeme (Client Quit) 15:09:33 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 15:10:23 --- quit: snowrichard ("Leaving") 15:10:46 --- quit: cmeme (Read error: 104 (Connection reset by peer)) 15:11:29 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 15:12:42 --- quit: cmeme (Client Quit) 15:13:25 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 15:14:38 --- quit: cmeme (Read error: 104 (Connection reset by peer)) 15:15:21 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 15:16:35 --- quit: cmeme (Read error: 104 (Connection reset by peer)) 15:17:18 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 15:18:31 --- quit: cmeme (Client Quit) 15:19:15 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 15:20:27 --- quit: cmeme (Client Quit) 15:21:10 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 15:22:23 --- quit: cmeme (Client Quit) 15:23:06 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 15:24:20 --- quit: cmeme (Client Quit) 15:25:02 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 15:26:15 --- quit: cmeme (Read error: 104 (Connection reset by peer)) 15:26:58 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 15:28:12 --- quit: cmeme (Read error: 104 (Connection reset by peer)) 15:28:55 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 15:30:08 --- quit: cmeme (Read error: 104 (Connection reset by peer)) 15:30:51 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 15:32:04 --- quit: cmeme (Client Quit) 15:32:47 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 15:34:00 --- quit: cmeme (Client Quit) 15:34:43 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 15:35:56 --- quit: cmeme (Client Quit) 15:36:39 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 15:37:53 --- quit: cmeme (Client Quit) 15:38:36 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 15:39:49 --- quit: cmeme (Client Quit) 15:40:22 --- nick: amca_away -> amca 15:40:32 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 15:41:45 --- quit: cmeme (Read error: 104 (Connection reset by peer)) 15:42:28 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 15:43:09 --- join: snowrichard (n=richard@adsl-69-155-177-154.dsl.lgvwtx.swbell.net) joined #forth 15:43:17 hello 15:43:41 --- quit: cmeme (Client Quit) 15:44:24 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 15:44:36 Hello 15:45:05 I'm working on a new interpreter for something to do. 15:45:12 hehe 15:45:19 New Forth interpreter? 15:45:24 sort of 15:45:38 --- quit: cmeme (Client Quit) 15:45:52 New lang? 15:46:11 well it has colon defs like forth, compiles to a bytecode. 15:46:20 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 15:46:21 * amca nods 15:46:41 What distinguishes it from Forht? 15:46:42 I am planning to add macros, and you can list a list of source files to read on the command line. 15:46:48 (Forth) 15:46:56 hi all 15:47:12 hey charles 15:47:14 Gday crc 15:47:34 --- quit: cmeme (Client Quit) 15:47:36 I just happen to have a question about macros 15:48:05 macros in retroforth? 15:48:16 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 15:48:36 cmeme are you really here? keep coming and going .... 15:48:42 Yes, and in general. When the words "macros" is referred to in the Forth community, does it refer to "inline native machine code" so to speak? 15:49:14 hmm 15:49:18 not specifically 15:49:30 --- quit: cmeme (Client Quit) 15:49:38 Will Baden likes to use such macros as : endif s" then" evaluate ; immediate 15:49:49 in retro, a macro is a special word that is called at compile time (unlike normal words, which are compiled in) 15:49:56 and Anton thinks that this is a bad way to do things. 15:50:01 I was thinking like C preprocessor or assembly macros i.e. text substitution. then compiled or executed. 15:50:13 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 15:50:30 snowrichard: I see. 15:50:34 crc: I almost see 15:50:38 ayrnieu: I'd code that : endif m: then ; 15:50:48 the compiler always searches the macro dictionary first 15:50:52 crc - I'd say : endif postpone then ; immediate , but nevermind. 15:51:11 * amca ponders 15:51:13 if it finds a macro, it calls it. 15:51:23 if it doesn't, it searches the "forth" dictionary 15:51:26 --- quit: cmeme (Read error: 104 (Connection reset by peer)) 15:51:26 snowrichard - I don't see how 'you can list a list of source files to read on the command line' distinguishes your new lang from forth. 15:51:28 Ah, I see 15:51:31 if it's found there, a call to it is compiled 15:51:45 otherwise, it tries to make it a number and compile it in as a literal 15:51:51 So like a asm macro, it is always "replaced" first 15:51:51 no it doesn't really :) 15:52:00 if none of the above work, the error handler gets called 15:52:09 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 15:52:41 amca - the two examples I gave work in a clean-slate ANSI Forth, although crc's model has many analogues. 15:53:22 --- quit: cmeme (Client Quit) 15:53:47 ayrnieu: Sorry I think I missed the two examples, or didnt realise they were eg's 15:53:59 "eg's" ? 15:54:05 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 15:54:07 e.g. = For example 15:54:11 : endif postpone then ; immediate \ ANSI forth 15:54:22 macro : endif m: then ; | retroforth 15:54:42 i'm thinking of changing factor to remove the 'parsing' flag on words, and have all words in the 'syntax' vocabulary be parsing words by virtue of being in that vocabulary 15:55:00 So does immendiate and macro have the same effect? 15:55:12 essentially, yes 15:55:18 --- quit: cmeme (Client Quit) 15:55:23 ok 15:55:33 It is starting to come together now 15:55:53 Ill have to let my brain ponder it a bit 15:56:01 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 15:56:12 wtf is with cmeme? 15:56:38 * crc has no idea 15:56:53 cmeme is one of the logger bots 15:56:53 amca - IMMEDIATE and MACRO do not, no. MACRO changes the definition dictionary to something outer-interpreter-meaningful to crc's forth; IMMEDIATE flags the previously defined word as 'immediate', meaning that it should be executed instead of compiled. 15:56:56 my system was doing that one day when I had an IP address conflict :) 15:57:14 --- quit: cmeme (Read error: 104 (Connection reset by peer)) 15:57:27 A bot trying unsuccessfully to PM everyone perhaps? 15:57:41 amca - no, not that. 15:57:43 ayrnieu: Thanks 15:57:53 ayrnieu: that's an implementation issue 15:57:57 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 15:57:58 crc - why do you have | as comments in retro? 15:58:00 crc - what is? 15:58:04 * crc has coded "immediate" for retroforth 15:58:29 I use a separate dictionary rather than a flag in the word header 15:58:46 I use | for readability purposes (less breakup of visual flow) 15:58:48 crc - then you didn't code IMMEDIATE. You wrote something else with the same name. 15:59:04 | breaks up visual flow less than \? 15:59:09 although I guess that your seperate dictionary immediate might work similarly. 15:59:10 --- quit: cmeme (Client Quit) 15:59:11 for me at least 15:59:33 ayrnieu: it does. This follows the cmForth model, which is permitted by the ANS standard from what I understand 15:59:48 crc: cause in multiple lines it creates stright lines, not saw-tooth lines? 15:59:53 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 15:59:54 amca: yes 15:59:57 :) 16:01:07 --- quit: cmeme (Read error: 104 (Connection reset by peer)) 16:01:40 Would an IP address conflict be because of NAT? 16:01:50 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 16:02:14 I had accidentally assigned two machines to same address (static) 16:02:30 i've found the : foo ... ; blahblah idiom troublesome 16:02:40 because you have to store the most recently defined word in a global variable for blahblah to pick it up 16:02:53 oops 16:03:03 --- quit: cmeme (Client Quit) 16:03:31 slava - well, you have to define it somewhere. In ANSI Forth this is 'the dictionary' :-) 16:03:46 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 16:03:46 slava: I just access it using "last", which points to the most recently defined entry in the active dictionary 16:04:23 its too hot in here. be back later. 16:04:30 --- quit: snowrichard ("Leaving") 16:04:59 --- quit: cmeme (Client Quit) 16:05:42 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 16:06:34 Is there a standard way of printing the TOS as a hex number without doing the whole "hex . decimal" thing? 16:06:55 --- quit: cmeme (Read error: 104 (Connection reset by peer)) 16:07:38 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 16:08:03 amca - no. 16:08:27 amca - : .hex base @ swap hex . base ! ; 16:08:51 --- quit: cmeme (Client Quit) 16:09:05 amca, I define (and have built-in in Quartus Forth) (hex) (binary) (decimal) and (octal), each of which temporarily sets BASE and evaluates the next word. 16:09:07 So -- 16:09:14 (hex) . would print the TOS in hex. 16:09:28 (hex) ddef evaluates ddef as a hex #. 16:09:34 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 16:09:51 Quartus: Can I ask what the code for it is? 16:10:48 --- quit: cmeme (Client Quit) 16:11:24 Sure, go ahead and ask. ;) 16:11:31 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 16:11:43 : (base): create , does> @ base @ >r base ! . r> base ! ; 16:11:44 What is the code for "(hex) . would print the TOS in hex."? :P 16:11:44 oldie but a goodie :) 16:11:55 Hehehe. Hang on, I'm digging it up. 16:12:02 heh 16:12:03 well, that would create .hex .binary and such, sorry. 16:12:06 --- nick: nanstm -> Raystm2 16:12:13 I first define (radix), which (from memory) takes a stack diagram of ( n "..." -- ) 16:12:15 nanstm: nan = Not A Nick? :) 16:12:39 ./sexchange I am no longer my wife. 16:12:44 --- quit: cmeme (Client Quit) 16:13:03 Ah 16:13:03 she really needs to get her own box, I'm just saying. 16:13:27 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 16:14:37 : real-(base): create , immediate does> @ base dup @ >r ! bl parse evaluate r> base ! ; 16:14:40 --- quit: cmeme (Client Quit) 16:14:47 16 real-(base): (hex) 16:15:23 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 16:15:52 : (radix) ( base "..." -- ) base @ >r parse-word evaulate r> base ! ; 16:15:57 oops 16:16:00 sorry, that's wrong. 16:16:06 : (radix) ( base "..." -- ) base @ >r base ! parse-word evaulate r> base ! ; 16:16:14 then, 16:16:26 : (hex) ( "..." -- ) 16 (radix) ; immediate 16:16:28 and so on. 16:16:36 --- quit: cmeme (Read error: 104 (Connection reset by peer)) 16:16:50 'immediate' means it can be used in or out of a definition, transparently. 16:16:59 cool 16:17:04 I also wrote (float) for the same purpose. 16:17:10 EVALUATE is what makes the magic work here, however :-) 16:17:13 Yes. 16:17:19 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 16:17:30 (hex) and (octal) and (decimal) can be used for numbers, or for other words. 16:17:55 Generally for numbers, mind you. While interpreting, occasionaly useful for things like (hex) . but really that's just a quirk. 16:17:56 thanks 16:18:33 --- quit: cmeme (Client Quit) 16:18:47 Sure. Some Forths allow $ as a hex # prefix, but you can't rely on it. 16:18:50 : craziness base @ 16 <> if ." What? HOW DARE YOU not give me base-16!?" splode-the-world then ; 16:19:15 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 16:19:45 decimal : frobnicate ... (hex) craziness ... ; \ we hate maintainers. 16:20:08 Hate maintainers? 16:20:10 :) 16:20:15 that doesn't actually work, though :-) 16:20:23 when you do s" some string" in a forth, is there a consistant place in memory they put it? 16:20:28 Quartus - a joke, sorry. 16:20:29 --- quit: cmeme (Client Quit) 16:20:34 amca - at compilation time, yes. 16:20:49 er, 'when compiling, yes'. 16:20:58 ayrnieu: I got that :) 16:21:08 ayrnieu: Where, btw? 16:21:11 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 16:21:20 when interpreting, the availability of those strings beyond immediate use depends on the implementation, I think. I don't know how much guarantee you have. 16:21:21 I didn't, explain in enormously great detail. Begin.... 16:21:45 gforth has a circular stack of them, IIRC. 16:22:09 amca, in a definition it's stored where the definition can find it. This could be dataspace, or it could be right in the definition somewhere. 16:22:25 --- quit: cmeme (Client Quit) 16:23:08 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 16:23:27 :noname s" hello" ; xt-see \ in gforth 16:24:00 although I guess that doesn't say much. Quartus puts a branch around the string and then pushes its address onto the stack, yes? 16:24:10 c-addr u, rather. 16:24:21 --- quit: cmeme (Client Quit) 16:24:27 Ah. Just I tried '0 value old.here here to old.here s" my string" old.here u. here u.' and was suprised to see old.here == here 16:25:01 No, amca -- Quartus Forth puts S" data in dataspace. 16:25:04 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 16:25:08 here value old.here 16:25:14 Quartus Forth codespace is not the same as dataspace. 16:25:38 I must remember something else, then. 16:26:09 I think I did what you suggest in PilotFORTH, a hundred years or so ago. Back then dataspace and codespace were the same. 16:26:17 --- quit: cmeme (Read error: 104 (Connection reset by peer)) 16:26:52 ayrnieu: I did 'here value old.here', but it set old.here to here, allocated space for old.here and then increased here to the new pointer after it. 16:27:00 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 16:27:21 amca - duh, sorry. 16:27:31 :) 16:27:42 But I have learnt a lot playing around like this 16:28:04 here s" hello" drop = [if] ." Very eenteresting." [then] 16:28:05 amca, implementation details vary from Forth to Forth. Setting out to learn Forth, the key thing is knowing what the result is. 16:28:14 --- quit: cmeme (Client Quit) 16:28:56 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 16:29:12 Well put, Quartus. 16:29:35 Quartus: True. But I get a better memory of things if I know how it gets there. 16:30:09 --- quit: cmeme (Client Quit) 16:30:10 Im not too good at rote learning out of context 16:30:40 amca - just be sure you also remember what you learn that may only apply to your implementation, then. 16:30:42 It doesn't have to be rote learning... my point is that if you learn how it gets there, what you learn may well only apply to that one Forth. 16:30:52 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 16:30:59 In or out, cmeme :) 16:31:00 The MVP forth stuff, and the Starting Forth and Thinking Forth helped me. 16:31:03 and 'rote learning' is a sneer. 16:31:12 Yes. But the aim for me then is to find out the different ways of implementing it :) 16:31:37 amca, bear in mind that *any* implementation is acceptable if it produces the same result. 16:31:58 * amca nods 16:32:06 --- quit: cmeme (Read error: 104 (Connection reset by peer)) 16:32:21 I kinda go about learning things in a scientific way. I observe something, create a mental model, then try to break the model and then create an improved mental model that is more accurate. 16:32:25 You can get really bogged down in implementation details until you think there's only one right way to do it. That's not helpful. 16:32:41 * amca nods 16:32:49 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 16:32:51 It is a balance of knowing enough, but not knowing too much 16:33:07 In that particular mental trap, you can wind up doing little tricks that depend on a specific implementation, and then your skills break if you have to relocate. 16:33:46 amca have you seen.http://www.fig-uk.org/byof.htm 16:33:55 --- join: snowrichard (n=richard@adsl-69-155-177-154.dsl.lgvwtx.swbell.net) joined #forth 16:34:01 With Forth, I have to have a more detailed mental model than other languages (except perhaps asm) cause of it implicitly using the stack and directly referring to memory locations, instead of having just names/symbols on the stack 16:34:02 --- quit: cmeme (Client Quit) 16:34:04 Like the "r> drop" idiom. Works on some Forths. On others, it might be "2r> 2drop". On still others, it doesn't work at all. 16:34:08 Raystm2: Ill have a look 16:34:38 amca -- I work in Forth all the time, and I don't have to directly refer to memory locations. That's what the names are for! 16:34:45 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 16:35:07 cmeme, going a little crazy with you bouncing in and out of the channel. 16:35:13 Quartus: But you do .s and it shows pointer values on the stack - it doesnt hide anything. Im too curious a person to let that go 16:35:29 Quartus: Yeah, hes been shitting me too 16:35:42 You can display pointer values in C, too, if you like. Easily done, and just as useless. 16:35:56 /ignore cmeme joins quits 16:35:56 What was it in MS-BASIC? varptr()? 16:35:58 Raystm2: Oooh! No! Thank you very much - Ive been wanting to find suck a site 16:35:58 --- quit: cmeme (Read error: 104 (Connection reset by peer)) 16:36:19 Quartus: But I have a mental model of how C allocates the memory :) 16:36:40 I checked out how QBasic implements data in memory too 16:36:47 Thank you for using Ray-find. You still have credits, do you require another search? 16:36:51 Pascal I dont worry about though 16:36:57 Ok. I'm taking issue with your statement that you have to directly refer to memory locations -- you don't. 16:36:58 Raystm2: Yes. Find me a wife 16:37:11 Quartus: True. You are right there 16:37:15 pop quiz! What is a much simpler way to implement this word: : frobnicate ( n -- ) dup 1- >r dup * r@ r> * - ; 16:37:38 ("Implement this word more directly:") 16:37:50 But you do have to directly manipulate them with pointer arithmetic just like in C (even if it does have a thin cover of words) 16:37:51 First I'd fix the stack diagram. 16:37:53 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 16:38:12 --- quit: cmeme (Remote closed the connection) 16:38:18 ( n1 -- n2 ) :-) I threw that on at the last moment. too lastly. 16:38:40 Ray-find has timed-out. Search not performed, Returinging to irritation mode. 16:38:51 amca - and people also need to take care that they write to the standard rather than to the implementation/environment in C. 16:38:55 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 16:39:16 Sure, ayrnieu -- like assuming an int is two bytes. 16:39:18 --- quit: snowrichard ("Leaving") 16:39:38 ayrnieu: I do try to keep to the standard, but knowing what happens beneath the standard is what helps me remember the standard 16:40:04 I understand things analytically, not holistically 16:40:08 --- quit: cmeme (Client Quit) 16:40:42 amca -- is it harder to assume that S" strings are stored somewhere later accessible, than it is to know exactly where, in any given Forth? 16:40:44 there are all kinds of analytic dimensions, but nevermind. 16:40:51 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 16:41:39 (this particularly bias will carry you less comfortably into Erlang or J, say.) 16:41:50 so, nobody interested in simplifying FROBNICATE ? Oh well. 16:42:04 --- quit: cmeme (Client Quit) 16:42:32 ayrnieu, what is it meant for? Is it just an arbitrary calculation? 16:42:35 : frobnicate ( n1 -- n2 ) dup 1- + ; 16:42:41 hehe 16:42:47 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 16:43:17 amca have you met crc yet? 16:43:23 --- join: amca_ (n=plump@as-bri-4-1-163.ozonline.com.au) joined #forth 16:43:27 amca have you met crc yet? 16:43:29 crc :-) 16:43:34 and crc, can you temporarily ban cmeme? He's bouncing in and out at a furious rate. 16:43:41 ok 16:43:47 this is true. 16:43:52 d/c'd 16:43:52 --- mode: crc set +b *!*@boa.b9.com 16:43:53 Raystm2: Yep 16:43:55 --- kick: cmeme was kicked by crc (crc) 16:44:02 Quartus: I dont need to know so much exactly where as in which logical memory section. Is it static? Is it on the stack? On the heap? In the dictionary? 16:44:17 amca - read the standard. 16:44:23 amca, it has to be at a C@ accessible address. In Quartus Forth this means dataspace. 16:44:48 The standard goes into all that? OK. I thought it was an implementation independant standard 16:44:53 It is. 16:45:18 So does it mention possible ways of implementing it? 16:45:23 amca - it is, but you're so enamoured with looking at memory addresses that you're missing the fun of analyzing the standard. For, say, must-be-c@-accessible information. 16:46:13 No, it doesn't mention possible ways of implementing it, just that it must return a c-addr. 16:46:16 amca_ I don't think standards are _for_ that purpose.. 16:46:21 and indeed, 'on the stack?' and 'on the dictionary?' and 'on the heap?' are all standard-answerable questions. 16:46:24 A c-addr is a C@-accessible address. 16:46:26 Raystm2: Thats what I thought 16:46:56 You know how you have the word "forget"? 16:47:25 Quartus Forth doesn't have FORGET; it's antiquated. MARKER is your friend. 16:47:35 why is FORGET antiquated? 16:48:05 There's been discussion of why quite cogently in comp.lang.forth -- let me pull up a decent ref. 16:48:08 hi slava :) 16:48:13 Or marker - I forgot the actual word. I knoew itr was mark*. The way it works seems to imply that the memory allocated on the dictionary is stack memory allocation. 16:48:33 slava - pre-ANSI, and not-ANSI because it implies more of the structure of the dictionary than what they were willing to standardize. Remember your complaint about IMMEDIATE ? :-) 16:48:52 In implementations, is it allocated like that? 16:48:59 Here we go. http://groups.google.com/group/comp.lang.forth/msg/1741e85a21e3a8b5 16:49:25 amca, you've completely confused me. What does 'memory allocated on the dictionary is stack memory allocation' mean? 16:50:23 ya amca_ :) 16:50:34 come on "DONT WAIT FOR THE TRANSLATION. 16:50:35 You can allocate, say a, b and c in memory one after the other. but if you want to deallocate a, b and c gets deallocted too 16:50:51 By deallocate, you mean via MARKER? 16:50:58 yep 16:51:05 Ok, so far, yes. If you do 16:51:07 or forget 16:51:18 marker x variable a variable b variable c x you'll lose a, b, and c. And x. 16:52:05 Ah, I just remembered something that answers my Q: dictionaries are commonly implemented as hash tables, so although it may be logical stack mem deallocation, it is not actual stack deallocation. 16:52:09 'allocate' and 'deallocate' don't really apply here. 16:52:17 oh yes thats right. you set marker that way. I forgot. We only have the one `mark' in colorforth. Bullet proof code on one side, testing code on the other. 16:52:19 But I had to talk about it with you guys to understand it 16:52:21 amca - no, they're not commonly implemented as hash tables. 16:52:34 More often as linked lists? 16:52:34 they should be 16:52:52 amca, I suspect you're standing way too close to the implementation to see the language properly. How the dictionary is implemented does not affect how MARKER works, nor how dataspace is allocated. 16:53:05 amca - yes, with the most recently defined word as the head. But what Quartus said. Have you read what the standard says about MARKER ? 16:53:36 Havent read the standard yet. Been doing Starting Forth first 16:53:51 I take it after I finish SF, I should read the draft ANS? 16:53:58 Starting Forth is badly out of date; a lot of what it says applies to an extremely outdated implementation model. 16:54:03 ( place holder) phone call. 16:54:18 amca - you might familiarize yourself with it. It has some fairly useful concepts. 16:54:35 I was gonna go on to "Thinking Forth", so should I read it or the standard 1st? 16:54:46 it hardly matters what you read 'first'. 16:54:59 tr/'//d 16:55:00 --- quit: OrngeTide (Connection timed out) 16:55:06 Right, you need to consume all this stuff. There isn't a set sequence; you'll go back and forth between references as you learn. 16:55:12 yep 16:55:30 But I strongly suggest you distance yourself from implementation details at this stage. 16:55:36 Well Im working through it. I just have lots of Qs raised in my head as I go about it that I need to try and work out 16:56:30 Quartus: Noted, but my brain doesnt work that way. I wont "get" forth until I understand enough about the implementation 16:56:42 Or possible implementations, rather 16:57:06 Yet you said you learned Pascal without worrying about implementation details. 16:57:39 Well I didnt worry about looking up actual ptr addresses, cause I couldnt 16:57:40 amca_ I'm that way as well. 16:57:47 hehe 16:57:55 and that's what happens 16:58:00 But I still had a mental image in my mind of where the variables and the new'd memory went 16:58:02 worry about 'how to implement useful things' details, lest you end up only able to implement forths. 16:58:03 you end up searching everywhere 16:58:28 * ayrnieu & gym 16:58:42 back 1hour, "Origins" comming on and i'm not missing it this time :) 16:58:49 hehe 16:59:13 --- join: tathi (n=josh@pdpc/supporter/bronze/tathi) joined #forth 16:59:27 hi tathi 16:59:37 hi slava 17:00:23 Hi tathi :) 17:00:35 Gday 17:00:48 hi slava 17:02:01 --- quit: amca (Read error: 113 (No route to host)) 17:02:20 --- nick: amca_ -> amca 17:03:07 hi Raystm2 17:06:03 "The most useful Forths are also the least portable" What is you ppl's opinion on that? 17:06:55 Vague terms. What's 'useful' in that context? 17:07:44 good point 17:07:48 I can't claim colorforth to be "most useful" but it certainly is not portable. Most of the machine Forths are written for a particular usage. 17:08:19 portable software is more useful 17:08:46 gForth is, of all Forths, the most portable. It's very useful. 17:09:03 retroForth is very portable as well. 17:09:25 gforth runs on more cpu's than retroforth 17:09:42 But a forth in a handheld, that's true portability :) 17:09:44 amca: (my 2 bits) might be historically true, but is (fortunately) becoming less so :) 17:10:12 Raystm2 -- heh. Portability in the most real sense. :) 17:10:22 Ray :P 17:10:23 yes :) 17:11:23 --- join: OrngeTide (i=orange@rm-f.net) joined #forth 17:11:34 I see the Tide is rolling in. 17:12:15 And it's Ornge. 17:12:47 "snot-tite bacteria" /me looses lunch 17:12:55 tathi: When do you thnk it started changing? 17:15:50 amca: bah, forget what I said, I think I'm changing my mind. 17:15:51 amca, IMO the Standard turned the tide. 17:16:00 hehe 17:16:08 Quartus: That makes sense 17:16:36 But if 'useful' means being able to write OS-specific code, then by nature an OS-specific Forth is non-portable, so the adage would hold true. 17:16:59 If 'useful' means able to run on the most possible platforms, then it wouldn't hold true. 17:17:06 Is it possible to have both? 17:17:13 By definition, no. 17:17:17 why not? 17:17:41 Because operating systems differ markedly. 17:18:08 in many portable forths, you can write OS-specific code 17:18:15 slava: printing output on one can be incompatible with how another OS does it 17:18:27 I would have thought that the term "OS-specific" would contain the reason why it would not work with another os. 17:18:51 GUI systems differ hugely, for instance. Networking. File systems. Sound. etc. 17:20:24 slava, perhaps the ambiguity is in my phrasing. Yes, some portable Forths allow access to the OS, but the code written for the OS is not often portable to a different OS. 17:20:33 Even device drivers written for say MicroSoft, can differ from device drivers written for another company's OS. 17:20:39 Quartus, of course 17:22:01 Somehow, we need to force a device interface standard. /me ducks and covers. 17:22:14 or an OS standard 17:22:57 Okay, I'll go with that as well, but just being able to be sure that you can interface your devices would allow you to be OS-less. 17:23:07 why would you want to be OS-less? 17:23:17 * Raystm2 having fun being os-less 17:23:35 Quick question: When your Forth can compile your code into an executable ('go compile-to-file' or such), does it include all of the dictionary, or does it weed out the words that your word will not need to operate (either directly or indirectly)? (Yes/No/It depends) 17:23:48 It depends. 17:24:07 Cool 17:24:18 one would hope that the forth would do a little tree-shaking, but it happens that I only know that Quartus Forth does so. 17:24:31 I know in smalltalk you can do it 17:24:39 Well Smalltak V anyway 17:24:44 you can do it all over the place. Lispers call it 'tree-shaking'. 17:24:54 Good name 17:25:23 --- nick: skylan_ -> skylan 17:25:29 amca - belatedly, ANSI C, (ANSI) Common Lisp, and ANSI Forth all fail to define graphical and networking libraries. 17:25:50 amca - C and CL both have fairly portable APIs, however. 17:26:12 well, 'libraries'. 17:26:16 hmmm 17:26:27 Oh sorry slava, I just saw your question. "Why os-less" . 17:26:45 The C you write probably largely depends on the presence of POSIX and BSD sockets and such. 17:26:55 I don't have a "great answer " for that. 17:27:20 Raystm2: pfft. I thought you had a 'great answer' for everything :P 17:27:55 I will say that I can see where sometimes, you might like to do something with a computer and Bill Gates or R Stallman, and the millioins of lines of code they represent, need not be involved. 17:29:02 amca ... shhh!!, I'm not sharing all of my "great answers'" till i'm selfseficiant :) 17:29:16 hehe 17:29:27 then i'm shareing everything :) 17:30:55 well Im off for now 17:30:58 Catch you later ppl 17:31:24 ciao 17:31:29 asta 17:32:11 --- quit: amca ("d34d") 17:37:29 Didn't TCOM recursively extract code when turnkeying? 17:44:22 --- quit: onetom (niven.freenode.net irc.freenode.net) 17:44:31 --- join: onetom (n=tom@ns.dunasoft.com) joined #forth 17:47:53 Just tried it; it appears to. 17:50:29 Any OSX users out there tonight? 17:55:11 --- quit: OrngeTide (Read error: 110 (Connection timed out)) 18:11:12 --- quit: Jim7J1AJH (niven.freenode.net irc.freenode.net) 18:14:49 --- quit: virsys (niven.freenode.net irc.freenode.net) 18:15:11 --- join: virsys (n=virsys@or-65-40-177-201.dyn.sprint-hsd.net) joined #forth 18:16:18 --- join: Jim7J1AJH (n=jim@221x115x224x2.ap221.ftth.ucom.ne.jp) joined #forth 18:21:11 --- quit: virsys (niven.freenode.net irc.freenode.net) 18:21:24 --- join: virsys (n=virsys@or-65-40-177-201.dyn.sprint-hsd.net) joined #forth 18:31:25 --- quit: virl (Remote closed the connection) 18:33:06 --- quit: virsys (Client Quit) 18:35:02 --- join: saon_ (n=saon@c-66-177-224-235.hsd1.fl.comcast.net) joined #forth 18:51:18 --- quit: tathi ("leaving") 19:24:56 --- join: snowrichard (n=richard@adsl-69-155-177-154.dsl.lgvwtx.swbell.net) joined #forth 19:25:00 howdy 19:25:29 --- join: OrngeTide (n=orange@rm-f.net) joined #forth 19:25:44 my little interpreter is coming along nicely now. 19:25:48 cool 19:26:17 SEVENTH. V0.0. This is Free Software. Use at your own risk. 19:26:17 32 const x 19:26:17 x . 19:26:17 32 : y x ; 19:26:17 y . 19:26:18 32 [richard@veteransinaction seventh]$ 19:29:37 I need coffee and a few naproxen for my foot pain. brb 19:32:12 ok 19:33:05 you don't like the word CONSTANT ? 19:33:29 lazy I guess :) 19:35:22 I may not even publish this for a while yet. I have lots more stuff to define. 19:36:25 --- join: ayrnieu_ (n=julian@ip68-13-110-105.om.om.cox.net) joined #forth 19:36:42 your here twice/ 19:36:47 ? 19:36:49 --- quit: ayrnieu (Nick collision from services.) 19:36:56 --- nick: ayrnieu_ -> ayrnieu 19:41:21 --- quit: snowrichard ("Leaving") 20:58:58 --- quit: onetom (niven.freenode.net irc.freenode.net) 20:58:58 --- quit: Snoopy42 (niven.freenode.net irc.freenode.net) 20:58:58 --- quit: JasonWoof (niven.freenode.net irc.freenode.net) 20:58:59 --- quit: lscd (niven.freenode.net irc.freenode.net) 20:58:59 --- quit: slava (niven.freenode.net irc.freenode.net) 20:59:27 --- quit: ccfg (niven.freenode.net irc.freenode.net) 20:59:27 --- quit: crc (niven.freenode.net irc.freenode.net) 20:59:27 --- quit: Raystm2 (niven.freenode.net irc.freenode.net) 20:59:27 --- quit: saon_ (niven.freenode.net irc.freenode.net) 20:59:27 --- quit: saon (niven.freenode.net irc.freenode.net) 20:59:27 --- quit: warpzero (niven.freenode.net irc.freenode.net) 20:59:27 --- quit: Quartus (niven.freenode.net irc.freenode.net) 20:59:27 --- quit: ianp (niven.freenode.net irc.freenode.net) 20:59:27 --- quit: Jim7J1AJH (niven.freenode.net irc.freenode.net) 20:59:27 --- quit: ayrnieu (niven.freenode.net irc.freenode.net) 20:59:27 --- quit: OrngeTide (niven.freenode.net irc.freenode.net) 20:59:34 --- quit: madwork (niven.freenode.net irc.freenode.net) 20:59:34 --- quit: madgarden (niven.freenode.net irc.freenode.net) 20:59:34 --- quit: docl (niven.freenode.net irc.freenode.net) 20:59:37 --- log: started forth/05.08.30 20:59:37 --- join: clog (i=nef@bespin.org) joined #forth 20:59:37 --- topic: 'Forth: One language, many dialects. #forth - general forth discussion. #c4th - ColorForth. #retro - RetroForth. #c4th-ot - social channel. #1xforth - a secret channel for 1xforthers. #concatenative - the category of language that forth belongs to (sorta).' 20:59:37 --- topic: set by crc on [Sat Jul 23 13:29:38 2005] 20:59:37 --- names: list (clog OrngeTide Jim7J1AJH Snoopy42 saon_ saon warpzero Quartus ianp Raystm2) 20:59:37 --- join: crc (i=crc@pool-70-110-194-247.phil.east.verizon.net) joined #forth 20:59:46 --- join: docl (n=docl@67-138-198-36.bras01.mcl.id.frontiernet.net) joined #forth 20:59:52 --- join: lscd (n=lscd@213.180.182.5) joined #forth 20:59:54 --- join: ayrnieu (n=julian@ip68-13-110-105.om.om.cox.net) joined #forth 21:00:08 --- join: skylan_ (n=sjh@dialup-216-211-47-87.tbaytel.net) joined #forth 21:00:25 --- join: sproingie_ (i=foobar@64-121-15-14.c3-0.sfrn-ubr8.sfrn.ca.cable.rcn.com) joined #forth 21:00:45 --- quit: lscd (zelazny.freenode.net irc.freenode.net) 21:00:47 --- quit: Quartus (zelazny.freenode.net irc.freenode.net) 21:00:50 --- quit: saon_ (zelazny.freenode.net irc.freenode.net) 21:00:50 --- quit: saon (zelazny.freenode.net irc.freenode.net) 21:00:50 --- quit: ianp (zelazny.freenode.net irc.freenode.net) 21:00:51 --- quit: warpzero (zelazny.freenode.net irc.freenode.net) 21:00:51 --- quit: Raystm2 (zelazny.freenode.net irc.freenode.net) 21:00:51 --- quit: sproingie_ (Remote closed the connection) 21:00:51 --- join: saon (i=1000@c-66-177-224-235.hsd1.fl.comcast.net) joined #forth 21:00:54 --- join: ianp (n=ian@inpuj.com) joined #forth 21:00:55 --- join: saon_ (i=1000@c-66-177-224-235.hsd1.fl.comcast.net) joined #forth 21:01:04 --- join: lscd (n=lscd@adsl-213-180-182-5.cybernet.ch) joined #forth 21:01:09 --- join: Quartus (n=trailer@ansuz.pair.com) joined #forth 21:01:15 --- join: warpzero (n=warpzero@wza.us) joined #forth 21:01:42 --- join: sproingie_ (i=foobar@64-121-15-14.c3-0.sfrn-ubr8.sfrn.ca.cable.rcn.com) joined #forth 21:01:45 --- quit: sproingie_ (Client Quit) 21:04:11 --- join: ccfg (i=ccfg@dsl-roigw3de0.dial.inet.fi) joined #forth 21:04:20 --- join: onetom (n=tom@ns.dunasoft.com) joined #forth 21:04:45 --- join: JasonWoof (n=jason@c-65-96-120-126.hsd1.ma.comcast.net) joined #forth 21:04:45 --- mode: ChanServ set +o JasonWoof 22:01:36 --- join: amca (n=plump@as-bri-3-28.ozonline.com.au) joined #forth 22:04:48 Hello 22:07:51 Hey. 22:08:24 How are you going? 22:08:43 Forward as always. you? 22:08:55 Im going against Entropy myself. ;) 22:09:32 I remember you saying quite a while ago that you dont have much time to do much coding (or was it playing around with coding?). Is that because most of your time is spent taking care of business? 22:10:04 Me? I'm sure I didn't say that. I do lots of coding. I don't have time to play without purpose, perhaps that was it. 22:11:22 * amca nods 22:11:26 That was probably it 22:11:55 Is the coding mainly for the business? 22:12:28 Or is there another main reason for you coding with purpose? (Taking over the world?) 22:13:13 (Or is that somethingyou would rather not discuss?) 22:14:41 Nothing sinster; I write software for the business, and also work as a contract developer from time to time. 22:15:02 cool 22:15:22 Damn. So I cant get a slice of the action of taking over the world? ;) 22:15:29 The field is wide open. 22:16:28 In the business, is most of the coding adding new features to existing products, creating new products or debugging existing products? 22:18:11 All of the above! 22:18:32 --- join: virsys (n=virsys@or-65-40-181-234.dyn.sprint-hsd.net) joined #forth 22:18:51 So neither of those 3 dominates your time? 22:19:19 Depends on the lifetime of the product. 22:19:45 And the customer base. And everything else. 22:20:05 lol 22:20:08 I'd say that most profit happens when the last dominates in all respects. 22:20:19 So it varies from product to product? 22:20:37 If nobody wants a product, you don't need to add features to it or debug it. You get to create a new product! 22:20:55 I see 22:21:07 If people like the product, but need features before they'll touch it, you don't know about what needs debugging, yet. You get to add features! Or create a new product! 22:21:08 If debugging dominates your time, you're not writing very good code. If you're constantly adding new features, you're creating bloat. Creating new products takes care and time; that's the biggest one. 22:21:08 And what if nobody like your ideas? :) 22:21:46 Guess. 22:21:55 Quartus: i.e. if you take more time with the initial development, the second two are mostly taken care of? 22:21:56 Quartus - well, debugging might be 'your code worked pretty well up to 200,000 users, but now it needs a little tuning' 22:22:23 ayrnieu: Id call that more adding new features 22:22:24 amca, wasn't the second one new product development? 22:22:37 ayrnieu, I should face such problems. :) 22:22:40 * amca scrolls back 22:22:42 amca - I see optimization as debugging. 22:23:23 You have written a program. It does not scale, or it does not perform well enough on X hardware, or it consumes too much memory in these conditions. Sigh, break out the profiler. 22:23:31 Quartus - I should, too :-) 22:23:38 --- quit: virsys ("bah") 22:24:39 ayrnieu: But you may have developed a product for one area and it unexpectedly gets used in a different area. That is not a bug in the program, but an unforseen feature required. As I see it anyway. 22:25:18 You'd have to give me a for-instance on that one, amca. 22:25:28 Quartus: Ill just rephrase what I said for my own clarity: If you take enough care during the creating, adding new features and debugging later need less attention? 22:25:33 amca. OK. I have a 'hello world', here, and it consumes a gig of ram and takes no time at all to start up, do its thing, and terminate... on my machine. 22:25:57 ayrnieu, we should talk, I bet we can get the memory utilization down a bit on that. :) 22:26:18 amca, I suppose so. 22:28:00 Quartus: For instance, DOS wasnt thought to be required in an enviroment of > 640 k. Gates would have thought DOS would have been replaced by a different OS by the time memory amounts got that high. Then it was required to operate in enviroments > 640 k, and so it needed new features like EMS/XMS to utilise the extra memory 22:28:44 It really depends on the requirements of the program at the time of creation. (all IMO of course) 22:28:49 amca, I wouldn't call that an example of DOS being unexpectedly used in a different area. 22:29:47 It was expected to be used in an enviroment of < 640, then was expected to work in an enviroment of > 640 k. Those are different enviroment requirements as I see it. 22:30:26 Im mean Im not saying that the *requirements* were right. But the code (largely) fulfilled the requirements. 22:30:35 Arguably it wasn't DOS that was required to work in a larger-memory environment, it was the applications that ran on it. The EMS/XMS facilities weren't provided by DOS, as such. 22:31:07 Of course if you have set something up so it isnt extensible (again, like DOS), then I would say that is a bug. 22:31:22 meh 22:31:28 it depends where you wanna draw the line 22:32:07 I'd call it a bad choice of example. But at any rate, adding a new capability for an unforseen condition is adding a new feature. 22:32:24 That is what I was trying to say. 22:32:45 I just grabbed the closest (not the best) example near me) 22:35:40 Discovering your app works on only one model of Palm, when you want it to work on all of them -- that's a bug. 22:36:50 Quartus: Yep. Because working on all of them is in the requirements. But I wouldnt say it is a bug that it doesnt work on a PS2 just because someone wants it to 22:37:02 Is there forth for PS2? 22:38:05 I have no idea. I've never owned a game machine. 22:40:19 Can I ask what machines you have? 22:42:07 Right this second? A collection of x86 machines of various ilk, a couple of (old) Apple boxes, and a bunch of Palm gadgets. One or two other PDAs. 22:42:56 * amca nods 22:43:12 Do you ever play games on any of your boxen? 22:43:26 That I don't have time for. Serious gameplay is for students and the unemployed. :) 22:43:51 pffft. You waste time sleeping dont you? ;) 22:44:01 Only as necessary. 22:44:28 Are you old enough that there were no such things as computer games when you first got into computers? 22:45:29 No. I'm guessing from the question that you're quite young, though. 22:46:11 is 30 quite young? 22:46:24 Only in the grand scheme of things. 22:46:44 What about compared to you? 22:47:26 I'm 36. I figured you for your teenage years, asking if I came from a time before games; there were computer games from almost day 0. 22:48:16 That''s what I thought. And you never played games? 22:48:33 amca, I didn't say I never played games. I said I don't have time for them these days. 22:49:31 Ah. I asked 'ever' in my Q, so I thought you meant you had never. 22:50:00 Did the game playing dry up when you got into your business? 22:50:00 Ok. 22:50:25 I was never heavy into gameplay at any point. It just eats time. 22:50:39 * amca nods 22:51:54 Im hopelessly unco in RL and VR, so I tend to go in spurts of gameplaying, then giving up and getting into coding more. Currently Im sick of my feeble game skills, so Im indulging in coding a lot more. 22:53:26 So you were into coding from the start? 22:53:40 Lifelong interest. 22:53:44 * amca nods 22:54:53 I was interested in coding before I (or my family) ever got my own computer. I used to borrow the Usborne BASIC books from the library and read them even though I didnt have a computer to try them out on 22:55:04 I seem to recall those. 22:56:53 You were saying before that rather than getting tied up implementing my own Forth and not end up getting further than that, I should concentrate on writing apps in Forth. Do you have any suggestions of good Forth beginner apps to start coding? 22:57:49 I think any external suggestion is going to pale in comparison to writing something you yourself have an interest in, or a need for. 22:58:27 hmmm. 22:58:53 The thing is my main project I have in my mind is coding a simple stack machine VM 22:59:33 And that is pretty damn close to coding a amputated version of Forth 22:59:56 I suppose it's like writing a book; you may have no apps in you to write. 23:00:25 In Forth currently (apart from one small utility app I have in mind), yes 23:02:16 --- join: Amanita_Virosa (n=jenni@CPE0000e812679b-CM000a7362da55.cpe.net.cable.rogers.com) joined #forth 23:12:57 If one takes a string and manipulates it, is it convention to create a new string, or manipulate it on the spot? 23:17:55 --- quit: amca (zelazny.freenode.net irc.freenode.net) 23:59:59 --- log: ended forth/05.08.30