00:00:00 --- log: started forth/02.09.17 00:04:12 --- quit: yeahright (Read error: 110 (Connection timed out)) 00:04:33 --- join: yeahright (~proteusgu@24-197-147-197.charterga.net) joined #forth 00:07:11 --- join: Soap` (~flop@202-0-42-22.cable.paradise.net.nz) joined #forth 00:40:43 --- join: Speuler (~l@p3E9B8EC1.dip.t-dialin.net) joined #forth 01:04:35 --- quit: yeahright (Connection timed out) 01:05:05 --- join: yeahright (~proteusgu@24-197-147-197.charterga.net) joined #forth 01:30:15 --- quit: Speuler (Read error: 110 (Connection timed out)) 02:02:10 --- join: berndp (~berndp@194.139.17.47) joined #forth 02:02:30 --- part: berndp left #forth 02:04:37 --- quit: yeahright (Read error: 110 (Connection timed out)) 02:18:38 --- quit: XeF4 ("pois") 02:19:55 --- quit: thin (Read error: 110 (Connection timed out)) 02:47:40 --- join: yeahright (~proteusgu@24-197-147-197.charterga.net) joined #forth 04:04:34 --- join: proteus (~proteusgu@24-197-147-197.charterga.net) joined #forth 04:11:51 --- quit: yeahright (Read error: 110 (Connection timed out)) 04:14:08 --- join: cleverdra (julianf@0-2pool111-39.nas2.florence1.sc.us.da.qwest.net) joined #forth 05:04:50 --- join: yeahright (~proteusgu@24-197-147-197.charterga.net) joined #forth 05:05:31 --- quit: Soap` () 05:05:57 --- quit: proteus (Read error: 110 (Connection timed out)) 05:28:56 --- join: sif (~sifforth@ip68-9-68-66.ri.ri.cox.net) joined #forth 05:28:56 Type sif: (or /msg sif to play in private) 05:36:46 sif: : Forth ." The Forth is hunting me!" cr ; Forth 05:36:48 Robert: The Forth is hunting me! 05:37:33 --- join: Speuler (~l@p3E9B8EC1.dip.t-dialin.net) joined #forth 05:45:07 Speuler! 05:45:24 How's life in .de today? :) 06:04:19 --- quit: yeahright (Read error: 110 (Connection timed out)) 06:04:37 --- join: yeahright (~proteusgu@24-197-147-197.charterga.net) joined #forth 07:04:02 --- quit: yeahright (Read error: 110 (Connection timed out)) 07:04:32 --- join: yeahright (~proteusgu@24-197-147-197.charterga.net) joined #forth 07:22:35 --- quit: Speuler (SendQ exceeded) 07:23:39 --- join: Speuler (~l@p3E9B8EC1.dip.t-dialin.net) joined #forth 07:58:18 --- join: Serg_penguin (~Z@nat-ch1.nat.comex.ru) joined #forth 07:58:22 hi 08:00:41 Hi. 08:04:22 --- join: proteus (~proteusgu@24-197-147-197.charterga.net) joined #forth 08:04:23 --- quit: yeahright (Read error: 110 (Connection timed out)) 08:04:34 yesterday i wrote unicode decoder for rus :) 08:04:48 8?? bytes com file 08:04:56 --- quit: Speuler (Read error: 110 (Connection timed out)) 08:05:38 now seeking soft to become FIDO point via IP 08:10:22 --- quit: proteus (Remote closed the connection) 08:13:52 --- quit: Serg_penguin () 08:42:40 --- join: thin (~thin@h24-64-175-61.cg.shawcable.net) joined #forth 08:43:31 onetom: crowkiller speaks french, not russian 08:43:55 and i'm confident his ideas will be more comprehensible if he put up a website and detailed them :P 08:44:49 Russkij! 09:15:28 --- join: Speuler (~l@p3E9B8EC1.dip.t-dialin.net) joined #forth 09:15:45 Hi :) 09:17:29 god dag the_rob 09:18:11 * Robert is suprised how good Speuler memory is. You're not that old yet, I guess. 09:18:29 pardon ? 09:18:49 was there anything requiring any recollective effort ? 09:19:15 Yes. 09:19:20 Remembering my old nick ;) 09:19:27 it's hardly been a month or 2 since speuler last called you "the_rob" 09:19:44 I wasn't quite serious anyway. 09:19:53 and, your nick was rob_ert, not the_rob 09:20:15 I remember your old nick, thin! You used to call your self fun_thing! 09:20:22 Speuler: Oh, right. 09:20:25 fuzzy :) 09:20:36 fuzzy logic ain't fuzzy 09:21:00 robert: it is true. i am fun_thing! 09:21:18 why do you think everyone loves me? :D 09:21:35 cause you're rich ? 09:21:40 Because you're the master of your dream world. 09:23:19 rich? 09:23:20 master? 09:23:32 where have the philosophers gone? 09:23:55 my /whois says i'm a terrible man! 09:23:56 they couldn't cope with our twisted world no longer 09:28:13 what twisted world? 09:28:34 if a twisted world saw an untwisted world, it would look twisted to them 09:29:00 the untwisted is twisted to the twisted ones 09:29:23 twisters are a great way to seal a bag to keep the food in it fresh! 09:29:37 ergo, philosophers are twisted ? 09:30:04 the philosophers have never left 09:30:17 they are within all of you 09:30:26 Not in me! 09:30:33 * Robert never thinks anyway. 09:30:46 i gonna exorcise 'em 09:30:57 Does it hurt? 09:31:55 does forth hurt? 09:32:07 Yes. 09:32:11 Teeibly. 09:32:12 if it doesn't hurt for you, exorcising your philosopher doesn't hurt 09:32:15 Terribly even :) 09:32:36 --- quit: thin ("bye") 09:33:21 You scared him. 09:48:21 maybe he couldn't stand your pain. 09:55:51 Something like that. 10:14:19 --- quit: cleverdra (Read error: 104 (Connection reset by peer)) 10:17:23 --- nick: ian[2] -> ian[frameWORK] 10:18:13 --- join: cleverdra (julianf@0-2pool111-39.nas2.florence1.sc.us.da.qwest.net) joined #forth 10:27:26 --- nick: ian[frameWORK] -> xIANx21 10:27:39 --- nick: xIANx21 -> xIANx21mchicago 10:28:13 --- nick: xIANx21mchicago -> ian[notIan] 10:29:28 --- nick: ian[notIan] -> ianni 10:52:15 --- join: I440r (~mark4@1Cust95.tnt3.bloomington.in.da.uu.net) joined #forth 12:14:25 --- quit: Speuler (Read error: 110 (Connection timed out)) 12:15:19 --- join: Speuler (~l@pD950253B.dip.t-dialin.net) joined #forth 13:47:36 --- quit: cleverdra (Read error: 110 (Connection timed out)) 14:13:49 --- quit: Robert (Remote closed the connection) 14:14:17 mrreach will be here in a min 14:17:06 --- join: Kitanin (~clark@SCF61185.ab.hsia.telus.net) joined #forth 14:19:09 --- join: MrReach (~mrreach@209.181.43.190) joined #forth 14:19:25 hihi 14:19:30 :) 14:20:22 it would seem that advertising companies are releasing virii in order to get their ads in front of more eyeballs 14:20:25 * MrReach sighs. 14:20:30 yes 14:20:32 spy-ware 14:20:42 i just got rid of SIX different spyware progies 14:20:50 get ad-aware if your having problems 14:20:56 www.lavasoftusa.com 14:21:21 I'm scanning with avg now, first time since I installed this windows a year ago 14:21:53 30 occurances of "Win32/Magistr.B" 14:21:54 no. anti virus progies tend NOT to list spyware as a virus 14:22:10 get ad-aware 14:22:25 heh, how do I know what it reports?? 14:22:31 anti viral people WANT you infected with spyware, they want that market research data available 14:22:43 * MrReach laughs 14:22:43 what what reports 14:22:56 the spyware detector 14:23:11 oh. it tells you what spyware app the file belongs to 14:23:31 and YOU can chose weather or not to delete 14:23:35 how do I know what ad-aware reports? 14:23:47 err what do you mean. how do you know 14:23:50 it shows it in a window 14:23:59 that would be an outstanding application for Forth, btw 14:24:07 tiny, fast, inobtrusive 14:24:08 theres spyware apps that UNINSTALL ad-aware 14:24:24 spyware agencies HATE ad-aware 14:24:33 therefore i love it :) 14:25:30 you say the assembler is on hold? 14:25:44 yes 14:25:54 im still semi stuck with it 14:26:29 when a mneumonic 4executes its got all the info it needs to generate teh opcode but i have to figure out a way to handle all th einfo 14:26:39 like mod, reg, rm, sib, offset 14:26:58 oh, I know, i86 is TERRIBLE in that regard 14:27:10 and theres cases where someone might enter an opcode with an illegal addressing mode and i have to KNOW its not legal 14:28:16 yep, or quitely substitute a series of instructions to emulate the illegal addressing mode ... but that is contrary to your principles 14:28:16 well i got all the code figured out to set it all up, i just have to write all the code to gather it all together for EACH opcode 14:28:41 how is the source going to look? 14:28:57 well 14:29:08 mov eax, [ebx] 14:29:21 mov eax, [ebx] +2* [edx] 14:29:31 how would a conditional look? 14:29:33 STILL have to figure out immediate and offset issues 14:29:38 how do labels appear? 14:29:47 basically it will be close to nasm syntax 14:29:49 labels would be 14:29:53 labe foo 14:30:01 label foo even 14:30:22 or local labels might be .L0 to .L9 or $1: to $9: 14:30:25 or something 14:30:28 undecided yet 14:30:31 label foo ; ... ; jne foo 14:30:47 yes 14:30:58 problem is with immediates and offsets 14:31:03 move eax, some_address 14:31:20 if THAT is the syntax then the address is going to be on the stack 14:31:25 HOW DO I KNOW its on the stack 14:31:32 ok, we've discussed that one before, except in prefix 14:31:36 check stack depth for each mneumonic ? 14:31:48 ah! that 14:31:53 mrreach seen the way im making it possible to have pre/post ? 14:32:03 not as yet 14:32:32 hang on 14:32:52 you can't check for every possible user error w/o unduly limiting the user 14:33:03 that's the prob with programming languages 14:34:00 ive renamed the following definition to something better but the newer code is on the laptop 14:34:04 but this will give you the idea 14:34:05 0 var ?a; \ address of word to complete last instruction 14:34:05 : a; \ all instruction words start with an a; 14:34:05 ?a; \ get address of word to complete previous 14:34:05 r> !> ?a; \ save address to complete current 14:34:05 dup ?: \ is there a previous instruction to assemble? 14:34:07 >r \ yes - return to code to assemble it 14:34:09 drop ; \ no - discard null 14:34:35 all mneumonics are colon definitions of teh form 14:34:44 : mov a; ..... ; 14:34:51 : xor a; ..... ; 14:34:52 etc 14:34:59 * MrReach nods 14:35:22 a; takes the return address off the stack and replaces it with the previous return address 14:35:24 so if i do 14:35:27 code foo 14:35:29 pop eax 14:35:30 pop ebx 14:35:32 ... 14:35:48 the first POP calls a; which takes teh return address off the stack and stores it away 14:36:04 the second pop takes ITS return address off teh stack and replaces it with the first ones. 14:36:13 oh, an idea ... 14:36:24 we execute teh word POP only after EAX or whatever comes after the mneumonic has already been seen 14:36:31 eax pop 14:36:38 will work if we make a; a noop 14:36:43 you might make CODE an immediate word, so you can drop into assembler in the middle of a colon definition 14:36:50 dont need to 14:37:01 i definatly dont want to have CODE placed inside a : def 14:37:10 heh, why not? 14:37:10 : fooi xxx yyy code blah .... endcode .... ; 14:37:11 bad 14:37:21 because CODE is a defining word 14:37:24 very versatile, though 14:37:24 its a creating word 14:37:37 your creating a new definition before completing the previous one 14:37:51 being able to switch into asm inside a : def maybe but NOT via code 14:37:55 it wont work :) 14:37:58 CANT work :) 14:38:02 not in isforth 14:38:12 that's what I'm saying, make it immediate, if the compiler is already compiling, then have it lay down whatever is needed to execute a bit of machine code, otherwise create a new word 14:38:31 err no, thats like having two different words all with the same name 14:38:33 overloading 14:38:34 no 14:38:39 or use something like INLINE or something 14:38:44 ill have a word called asm> or something 14:38:55 you're right, on principle 14:39:01 : foo xxxx yyy zzz asm> mov eax, # ; 14:39:11 I used INLINE on the forth I wrote 14:39:12 need a way to switch to or from asm inside a : def 14:39:16 and END-INLINE 14:39:23 dislike the name inline heh 14:39:32 asm> mov blah blah the words point to wards where teh asm is 14:39:45 I took it from Borland's Turbo C, in the 90s 14:39:49 --- join: Robert (~Robert@robost86.tsps1.freenet6.net) joined #forth 14:39:52 like my 14:39:55 hiya, Robert 14:40:18 hell, I don't car what you call it 14:40:36 heh 14:40:37 if it's a real thorn, people can alias it to whatever they want 14:40:53 im not planning on putting it in yet, get asm to work before adding features to it... 14:41:03 * MrReach nods 14:41:04 besides, i think inlining asm is a mistake 14:41:21 if you need some asm in the middle of a : def you should factor it out imho 14:41:25 also, that is rather system specific ... the assembler itself should be as generic as possible 14:41:29 the overheads are the same 14:41:44 you still have to switch from interpreting to executing asm and back again inside teh : def 14:42:08 yep, which may be faster than calling a code word ... or may not 14:42:20 probably not in isforth 14:42:26 teh same prolly 14:43:32 heh, in my JSR forth, it was substantially faster 14:43:46 but then it would be, by the nature of the beast 14:43:53 :) 14:44:59 when your text parsing your arguments, it should be relatively easy to check for errors, though 14:45:47 im not parsing a thing 14:45:53 oh, but you're not, you're depending on the next asm mnemonic to asseble the previous one, right? 14:46:01 yes 14:46:10 hmmm 14:46:14 mov mov ax, 1 14:46:22 the assembler should hickup on that 14:46:27 or other fubars 14:46:27 why? 14:46:42 what if the user is working with the interrupt table? 14:46:57 oh! 14:46:58 thers no source or destination specified on teh first mov! 14:47:00 the double mov 14:47:06 rite 14:47:09 I thought that was an IRC typo 14:47:30 isforth will support 8, 16 and 32 bit registers but will only support 32 bit addresses 14:47:39 wont even support the address override 14:48:10 ok, so 32 environment only, which is linux or win32 only 14:48:35 address overrides are incredibly easy to add on later 14:49:10 especially when actual compilation happens at the end of the line 14:50:30 the mneumonic will be there but it will be commented out 14:50:39 how does the assembler actually lay down code? 14:50:49 with c, heeh 14:50:56 * MrReach nods 14:51:44 mine did, too, and TARGET and HOST checked for current state and swapped the contents of H and H' when neccessary 14:52:21 I didn't have the advantages of ALLOCATE and RESIZE then, though 14:52:27 well im not thinking about metacompiler yet heh 14:52:39 btw, isforth 1.09b was relased 14:52:50 it adds alloc and free. still have to do realloc 14:53:05 and i released my text windowing code (but im changing it) 14:53:09 no, but you should be thinking about assembling into an arbitrary address range 14:53:16 i advise not using the tui in 1.09b :) 14:53:53 it will assemble to anywhere :) 14:53:58 usually 'here' 14:54:04 --- quit: I440r (Read error: 104 (Connection reset by peer)) 15:00:09 --- join: I440r (~mark4@1Cust95.tnt3.bloomington.in.da.uu.net) joined #forth 15:00:19 ok its official 15:00:21 windows sucks 15:00:22 :P 15:00:25 brb - fone 15:00:29 I knew that 15:01:12 :) 15:02:05 ad-aware is tiny ... 800k 15:04:56 MrReach! 15:05:04 yes? 15:05:08 * Robert <-- brb, brushing teeth. 15:05:12 Oh, I just wanted to say hello. 15:05:14 Hello :) 15:05:19 heh, ok, you have my blessing 15:05:39 greetings to you, also, also I said as much when you came into channel 15:06:17 Oh, I see that now. 15:06:25 how are you? 15:06:31 irssi doesn't highlight when I'm mentioned, only when I'm spoken to. 15:06:50 I'm OK, but soon I'll have to go to bed. Past midnight, and school at 8.30 tomrrow. 15:07:17 where on Earth are you? 15:07:30 no wonder you're brushing your teeth 15:07:44 heh 15:08:08 are you back, I440r? 15:08:14 yes 15:08:41 is there any way to store an arbitrary address into HERE on your system? 15:08:55 yes 15:08:58 dp ! 15:08:59 heh 15:08:59 good 15:09:17 tho its frowned upon for users 15:09:19 is there anyway to start the assembler w/o creating a header? 15:09:33 I440r : Ah yes. H is the traditional word for that. 15:09:35 there can be 15:09:56 I'm thinking that a user is likely to want to compile some assembly into an ALLOCATEd segment of memory, no header 15:10:23 that would be possible 15:10:38 or he could create a headerless coded definition 15:10:48 yes, in the dictionary 15:11:03 u looked at my headerless/herders code ? 15:11:14 im quite proud of that code actually heh 15:11:30 using , and C, is quite elegant for that, because they can then use HERE to calculate the exact size of the compiled code 15:11:50 no, what's the url? 15:12:10 its in the isforth sources isforth/forthsrc/headers.f 15:14:48 the headerless words are all headerless except the ones you need to create headerless words :) 15:15:08 i can dcc you that file if you dont have isforth :) 15:16:10 sure, go ahead 15:16:24 What does >! do? 15:16:33 "store-to" 15:16:51 !>, I mean... 15:16:56 similar to the ANS TO but doesn't overload a name 15:17:00 !> is store to 15:17:01 What's the difference with !? 15:17:05 teh word "TO" is DUMB 15:17:12 it is totally non descriptive 15:17:25 5 to foo 15:17:25 ugh 15:17:32 Can you show me a colon definition that'd do it? 15:17:34 it doesnt say its STORING something. 15:17:36 it's extremely descritive in context, which is why the word was overloaded 15:17:45 and overloading is evil 15:17:51 * MrReach nods 15:17:52 a colon def for store to ? 15:18:00 : !> ' >body ! ; 15:18:08 123 TO NamedVariable 15:18:17 but that will only work in interactive mode 15:18:27 !> will compile a %!> in compile mode 15:18:38 no, it works in a colon def, too 15:18:51 ? 15:18:58 Oh, I see, I see. It's just another store type thing. 15:19:08 the ANS word TO works in colon defs, too 15:19:09 So, this is how you'd use it? : 15:19:20 it stores TO a constant or a var (value) 15:19:21 variable blah 100 !> blah ? 15:19:32 that will work 15:19:36 I see, I see. 15:19:40 "5 to foo" is non-descriptive? I think it's quite obvious what it means. 15:19:43 but its more for use with defered words or vars 15:19:46 0 var foo 15:19:46 go ahead and dcc it to me, I440r, I don't think I've got the most recent version 15:19:49 5 !> foo 15:19:51 I'm just trying to port the files in your stuff/ directory, I440r. 15:19:57 ' blah is defered-foo 15:20:07 'is' is an alias for !> 15:20:16 Ok. Gotcha. 15:20:21 heh 15:20:41 i wasnt going to include the alias because it smacks of overloading 15:20:43 but its not 15:20:46 I thought ALIAS was completely evil and had no chance of redemption 15:20:51 its just giving a new name so you can retain context 15:20:56 you STORE to a var 15:21:10 by using IS your saying your modifying a defered word 15:21:17 it is 15:21:23 well 15:21:29 its on the same level as GOTO 15:21:46 actually, TO is supposed to be used only with VALUEs 15:21:52 i.e. its been abused so much that it should be aoided 15:22:01 i HATE that name 15:22:06 or... those names 15:22:11 TO is non descriptive 15:22:12 not VARIABLEs or CONSTANTs 15:22:16 value is non descriptive 15:22:24 n is a value 15:22:26 5 is a value 15:22:34 although in most systems, VALUEs and CONSTANTs are identical code 15:22:35 its a GAY name 15:22:47 var and constant are identical in isforth 15:22:57 var says "this is a variable" 15:23:09 value says "im gay" 15:23:13 right, but ANS had to consider the case where CONSTANTs were burned into ROM 15:23:23 no they didnt 15:23:29 the end users might have to 15:23:41 ans shouldnt be conserned with that level of shit 15:23:42 heh, yes they did 15:24:06 they wanted to write the standard in such a way that it wouldn't break ROMed systems 15:25:04 ugh 15:25:12 actually, standards are guaranteed to break something 15:25:23 yep 15:25:23 invent a standard that doesnt break anything and it becomes unuseable 15:25:30 so why worry about it 15:25:34 standards are for lamers :P 15:25:41 but you have to work REALLY hard to break the current Forth standard 15:25:46 "i need mommy to hold my hand cuz i cant cross the road by myself" heheh 15:26:26 F83 and Fig were much easier to break ... and hence much harder to implement 15:26:56 --- join: Klaw` (~chuck@ip68-96-75-80.oc.oc.cox.net) joined #forth 15:26:59 yes, you have to work very hard to make anything in the current forth standard too 15:27:02 its all C-ified 15:27:18 beg parden? 15:27:31 it bores me to tears when i read ans forth code, i give up after the third or fourth line of source 15:27:31 could you rephrase that? I didn't get it 15:27:33 Hello, clog. 15:27:34 er 15:27:37 Hello, Klaw`. 15:27:38 What does '=' do? 15:27:39 about the same place i give up when reading c 15:27:56 --- quit: Klaw (Read error: 104 (Connection reset by peer)) 15:28:02 ? 15:28:07 = ( n1 n2 -- flg ) flg is TRUE if n1 = n2 15:28:32 TRUE is defined as "all bits set" 15:28:48 although IF considers any bit set to be true 15:28:52 hrm there should be a COMP word that returns flg = -1 0 or 1 depending on result :) 15:29:01 true is defined as ANY bit set 15:29:19 No, the word "'=' 15:29:20 " 15:29:20 no, a correct flag has all bits set, suitable for ANDing 15:29:29 The word is 3 chars: '=' 15:29:33 Hrm... is 0= used to invert a boolean value (where TRUE is defined as non-zero)? 15:29:41 '=' is a character literal in isforth 15:29:44 oh! I haven't a clue ... what an odd name for a word 15:29:46 it works for everything except space 15:29:53 Oh I see. 15:29:57 ' ' would be interpreted as tick tick 15:30:04 --- join: Soap` (~flop@202-0-42-22.cable.paradise.net.nz) joined #forth 15:30:05 I440r: Fixed the tab bug, btw? 15:30:11 [CHAR] will not be defined in isforth 15:30:23 its a case of "lets be as verbose as we possibly can" 15:30:30 : blah ..... 'x' ..... ; 15:30:33 or 15:30:35 I like the IsForth solution more, hehe. 15:30:41 : blah ...... [CHAR] x ..... ; 15:30:48 ugh 15:31:00 I440r: no, it's a case where the usually character literal words were already used by conflicting practices 15:31:02 Well, it adds unnecessary complexity to the parser, but that's ok. 15:31:06 robert no not "refixed" the tab bug yet 15:31:14 I440r: Awww... 15:31:14 you're right, though, [CHAR] is extremely verbose 15:31:33 my only objection to char is its verbosity 15:31:40 its like 'offset' in masm 15:31:46 mov eax, offset some-label 15:31:47 ugh 15:32:14 like S" and C" ... [char] is meant to be used to construct more convenient words 15:32:36 er s" and c" wont be defined either 15:32:38 ugh 15:32:47 : .... s" xxxx" .... ; 15:32:56 what did I just say? 15:32:58 your compiling an inline string that does nothing but leave its own address 15:33:10 when you execuite the word you have to BRANCH arround the string 15:33:19 create string ," xxxxx" 15:33:39 : foo ..... [ string literal ] ..... ; 15:34:00 : blah s" xyzzy abc" interpret ; 15:34:03 EVIL!!!!!!!!!!!!!!!!!!!!!! 15:34:14 ok, let's say YOU are on the standards team ... should you define a way to include a string literal? 15:34:25 no 15:34:29 definatly NOT 15:34:38 no standard method of string literals? 15:34:39 you create a headerless string and refer to it in the code 15:34:46 why add featureitis upon featureitis 15:34:50 none what so ever 15:35:01 other than the creation of counted strings 15:35:02 people are not to use string literals in their portable source code? 15:35:19 another non arguement for me. thers NO SUCH THING as portable code 15:35:21 period 15:35:36 --- join: tcn (tcn@tc4-login46.megatrondata.com) joined #forth 15:35:40 you can have 50 different versions of your code all interleaved into the same source files like you have in c 15:35:55 Hello, goodbye. I'm going to bed now, weltrusten! 15:35:55 but you CANNOT have a truely portable source 15:35:56 What does ed do? I thought isforth didn't have an editor? 15:36:02 incidently, the standard does *NOT* dictate that the text of the string literal must be within the colon definition itself, so your previous argument is pointless 15:36:15 ed is erase display. its the terminfo name for the clear screen escape sequence 15:36:23 Gotcha. 15:36:33 be well, Robert 15:36:38 mrreach not realy because thats where everyone PUTS it 15:37:00 ill eventually have a variable holding "current source file name" and the word ED will launch an editor on that file 15:37:15 the erase display ED word will have an alias of cls or something :) 15:37:15 well, you might consider them lame system coders, but ANS didn't do that 15:37:41 im diametrically opposed to 98% of the ans standard 15:37:52 my whole being screams out "its wrong, its just all WRONG" 15:38:20 unfortunately, ANS was also unable to define " (double-quote) w/o seriously breaking LOTS of existing systems ... no mater how they defined it 15:38:49 lol 15:39:03 so they didn't define " at all, they defined S" and C" ... which were the two common practices 15:39:05 i.e. no matter how hard the ans team tried they could not realy come up with a decent standard 15:39:19 there was just way too much out there that would interfear with what ever they tried 15:39:22 well, as an example, made up ... 15:39:29 sounds like a good enough reason to not bother trying 15:40:17 suppose PolyForth defined " as ( -- addr u ) ... and VFX defined it as ( -- addr-counted-string ) 15:40:55 at the same time, ANS felt compelled to include a standard way of defining string literals 15:41:20 i.e. they couldn't just leave it out of the standard 15:41:41 well the could have as far as im concerned heheh 15:41:47 I440r: most of the words you really object to came about in this manner 15:42:08 i know 15:42:25 another example ... 123 TO NamedValue 15:42:31 i.e. were painted into a corner here so lets..... 15:42:58 except that case works just the opposite ... TO was used like that in nearly every system represented 15:43:17 the word !> is more correct 15:43:23 you're exactly right 15:43:27 the word TO is fucked up! 15:43:33 its NON descriptive! 15:43:35 Hey.. What do you expect with a language that's so easy to change? 15:43:54 tcn its the ease of changing the language that makes it so fucking powerful! 15:44:09 agreed, but in the case of ANS, TO was used uniformly, and it was important to codify it before someone published a system that used a different semantic 15:44:10 trying to force everyone into that same painted in corner of a room is bogus 15:44:27 !> was being used long before ans came about 15:44:35 ! is the forth word for STORE 15:44:39 > is the forth word for TO 15:44:52 !> has forth symantics 15:44:54 TO does not 15:44:58 Oh my... You've got case in isforth? 15:44:58 yes, but !> was used differently on different forths, TO was similar but uniform in usage 15:45:09 i do but its non standard 15:45:12 TO is easier to type 15:45:19 ! 15:45:26 lol 15:45:37 lets rename @ to 'fetch' then 15:45:40 and ! ot ' 15:45:41 erm 15:45:43 in any case, ANS chose not to define exactly how !> was to be used 15:45:44 ! to 'store' 15:45:48 they are easier to type too :P 15:46:02 it's really annoying to type all kinds of symbols when you could the alphabet which is at your fingertips 15:46:18 I440r: you betcha ... if various people used @ differently, then ANS would have defined FETCH instead 15:46:25 not realy, those symbols make forth less verbose 15:46:27 a BIG plus 15:46:40 and only a beginner has difficulty seeing FETCH when he looks at @ 15:46:42 etc 15:46:48 What does opt do? 15:46:57 its my version of the word OF 15:46:58 something like @+!> is annoying 15:47:02 luckily, the vast majority of words had pre-defined meanings 15:47:11 or c@+ instead of COUNT 15:47:40 Hey I440r : What's opt? 15:47:42 c@+ is just someone trying to be clever. the word count is the forth way to do it 15:47:55 case x OPT do-this 15:48:06 case y OF dothat endof 15:48:10 thers NO endof in isforth 15:48:15 so i renamed OF to OPT 15:48:22 its the option vector for the given case 15:48:25 I440r has a point, there ... C@+ describes what it does 15:48:42 which is more intuitive than COUNT, though harder to type 15:48:47 mrreach yes but c@+ is ambiguous 15:49:00 dupc@swap1+swap 15:49:01 lol 15:49:22 hehe 15:49:25 COUNT, though, doesn't imply that the string immediate follows the count, or that the count is 8 bits 15:49:31 count is intuative, c@+ isnt good in this case 15:49:43 mrreach i use count to fetch successive bytes :) 15:50:05 heh, a total but elegant misuse! 15:50:15 hehe 15:50:31 its advanced forth technique!!!!!!!!!! 15:50:32 lol 15:50:40 in c that would be *p++ 15:50:59 ' COUNT ALIAS NextChar 15:51:08 or in asm, LODSB :) 15:51:15 i would call it c@++ heh 15:51:52 OK, finally, ms pauses for x milliseconds, right? What's time@? 15:52:09 time@ probably fetches the current time 15:52:19 time@ fetches the current time (sort of) it fetches teh number of seconds since the epoch 15:52:20 in whatever measurement units 15:52:22 Yes, but in what units? 15:52:31 Oh, seconds since epoch. Thanks. 15:52:34 number of seconds since epoch :) 15:52:41 one thing that's annoying in C is reading a byte from in int pointer, or vice-versa 15:52:59 reading an int pointer from a byte??? 15:53:01 *(char*)p 15:53:03 yeah, that would be hard 15:53:25 or is it *((char*)p) ? 15:53:26 lol mrreach :P 15:53:55 fractal is running isforth rite now or browsing teh source ? 15:54:09 I440r : Porting pong.f to my own forth. 15:54:14 I440r: were you going to send me the latest version or not? 15:54:18 hehe thats roberts code :P 15:54:25 Ya. It's pretty good. 15:54:25 isforth.clss.net :) 15:54:33 oh, thanks 15:54:37 i think i'll just write an inline function to fetch a byte from int* because I don't want typecasting in my C 15:54:42 download would be faster from there 15:55:12 ha! tcn! 15:55:12 tcn if you dont have typecasting your going to restrict BYTE access on BYTE data etc 15:55:35 tcn obviously misses PEEK and POKE 15:55:55 imagine, you have a serial recieve buffer of 20 chars 15:56:03 commands come in to that buffer 15:56:19 you get a "send me the data at address xxxxxx" 15:56:35 and you cant convert the 4 bytes xx xx xx xx to a 32 bit address because you cant typecast it 15:56:38 its BYTE data 15:56:57 oh, for god's sake 15:56:58 you cant cast buffer[6] as an int 15:57:05 char getbyte(void *tp, int off) { return *(((char*)tp) + off); } 15:57:09 * MrReach douses I440r with a bucket of cold water. 15:57:18 not if you cant typecast!!!!!!!!!!! 15:57:35 tcn says he wont have typecasting 15:57:36 asm 15:57:36 lol 15:57:39 fetch byte, shift and add 15:57:42 ok :) 15:58:00 this is a simple C compiler for a simple OS! 15:58:03 why not just make a totally UNTYPED c 15:58:32 I saw a c interpreter in the late 80s ... it was pretty cool ... WAY odd, though 15:58:38 I440r: K&R beat them to it? 15:58:46 because types aren't bad, but it's redundant to have the compiler ENFORCE them 15:59:13 i want typedefs and structs 15:59:16 types are very good, IMO, but add complexity 15:59:43 so they should only be used when compiling relatively static source files 15:59:51 its the "Adding complexity" part that puts me off it :) 15:59:53 certainly not with an interpreted language 16:00:22 have you seen an incremental compiling C (like forth)? 16:00:43 you mean a "just in time" c compiler ? 16:00:46 just the interpreter that I mentioned earlier 16:00:54 and it was BIZARRE 16:01:20 typing words well for C 16:01:26 works well 16:01:42 doesn't work so well with forth 16:02:03 lots of people have tried typing forth ... but no notable successes 16:02:10 There is no such thing as a "compiled language" or an "interpreted language". It's all implementation. 16:02:23 tinyMUF is typed forth 16:02:23 that's true 16:02:48 tcn: how complex is the underlying code? 16:02:55 i don't know and it sounds ugly 16:03:10 the guy who did it had no experience writing compilers 16:03:16 Postscript is strongly typed and kinda forthish. 16:03:18 can you imagine the overhead of making sure that the imputs to + are actually integers? 16:03:34 i'm not sure it does :) 16:03:46 or of casting pointers to integers before doing the addition? 16:03:51 it sounds almost like there's a separate stack for every type 16:03:59 and casting the result to something else afterwards? 16:04:13 pointers are integers 16:04:22 not in forth 16:04:27 everything is an integer :) 16:04:32 Woah, I440r : What's tv ? 16:04:36 they are very different animals, and confusing the two will BITE you 16:05:23 well sure, a C compiler has to keep track of whether something is an int or a pointer.. but you don't really need to cast them 16:05:45 something else occured to me.. 16:06:13 --- quit: Kitanin ("Praeterea censeo Carthaginem esse delendam.") 16:06:48 Anyone know what the isforth word 'tv' does? 16:06:52 If you write a program and run it all the time without changing it, in forth you're compiling it every time you run it.. 16:07:19 maybe 16:07:25 but you dont HAVE to 16:07:29 tcn : That's not necessarily true. 16:07:35 thats why we have turnkey 16:07:46 right 16:08:03 I440r : What's tv? 16:08:08 and in isforth compiling something like netscape every time you wanted to use it would take less time than it currently takes netscape to load :P 16:08:17 its a varialbe, time value 16:08:28 its the parameter passed to the gettimeofday syscall 16:08:29 ha! 16:08:30 so in C, everything is turnkey.. 16:08:33 man 2 gettimeofday 16:08:39 that's a dubius statement, I440r 16:08:46 what is ? 16:08:48 Ah. gettimeofday. I see. 16:09:04 and in isforth compiling something like netscape every time you wanted to use it would take less time than it currently takes netscape to load :P 16:09:38 you COULD compile an object file and link it into a running program, instead of incremental compiling 16:09:47 netscape takes ages to load. the soruces for a netscape workalike would be alot smaller than teh current netscape source tree 16:09:47 big apps are much better stored in compiled form 16:10:00 and isforth compiles at about a meg a second on my laptop 16:10:07 and nobody is going to disagree that Netscape is a big app 16:10:20 a big piece of junk :) 16:10:26 yes. heh 16:10:35 big and fucked is netscape :) 16:11:05 I suspect that netscape has lots of initializing for its various and sundry modules ... and forth wouldn't be much faster for the same funtionality 16:11:23 and isforth could comple each of those modules in the blink of an eye 16:11:31 forth would be much more likely to simply not do all the things netscape does 16:11:48 and thats a PLUS not a minus 16:12:01 not because it can't, but because its not worth somebodies effort 16:12:08 * MrReach nods. 16:12:29 because doing them is what makes netscape so fucking DUMB heh 16:12:39 i still think netscape and mozilla are spyware :P 16:12:46 ahem ... netscape is my browser of choice 16:13:01 if opera had a decent news client i would register uit 16:13:02 I like it 16:13:03 netscape IS spyware 16:13:14 im using netscape 7 in windows 16:13:21 although I used a rather dated version of netscape ... 4.75 16:13:25 go read the list of spyware at cexx.org.. netscape 6 & 7 is one it! 16:13:27 ooops, 4.79 16:14:08 yes, I noticed that the newer netscapes make connections that I didn't authorize ... so I uninstalled them 16:14:39 haven't tried NS7 yet, just downloaded it day before yesterday 16:14:51 i could firewall those connections :) 16:14:56 hoping they went back to the old window manager 16:15:03 just firewall ANY ip=address related to AOL.com 16:15:24 that implies that AOL offers no valuable services at all 16:15:41 which I don't think to be a truth 16:16:30 Mozzila, btw, was the original parser written by the W3C ... and included in most browsers for uniform rendering 16:16:31 nobody seems to have aol web pages anymore 16:17:27 interesting that both Netscape and IE use the same block of source code to render a page 16:17:52 but if you were to block everything but port 80 @ aol.com it would still send your data back to their web server via some "extra" http command 16:18:08 mrreach: that's hard to believe 16:18:16 or email 16:18:40 and it probably reports to an IP address that doesn't map within AOL.COM 16:19:50 heh, yeah.. maybe even piggybacks on legitimate packets 16:21:18 Mozilla is an open-source web 16:21:18 browser and toolkit, designed for 16:21:18 standards compliance, performance 16:21:18 and portability. Mozilla.org provides 16:21:18 binaries for testing and feedback. 16:21:33 ooops, sorry, just a sec 16:22:16 Mozilla is an open-source web 16:22:17 browser and toolkit, designed for 16:22:17 standards compliance, performance 16:22:17 and portability. Mozilla.org provides 16:22:17 binaries for testing and feedback. 16:22:22 [end] 16:23:22 * MrReach starts up his web-server to paste request lines 16:35:53 ok, here is the netscape request line to the server ... 16:36:10 10.0.0.3 - - [17/Sep/2002:17:18:15 EDT] "GET /wiki HTTP/1.0" 200 - "[unknown origin]" "Mozilla/4.79 [en] (Win98; U)" - 16:36:29 and here is the Internet explorer request for the same page ... 16:36:40 10.0.0.3 - - [17/Sep/2002:17:20:00 EDT] "GET /wiki HTTP/1.1" 200 - - "Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)" - 16:37:30 they both explicitly identify themselves as "Mozilla" browsers 16:39:17 i dont think spyware will ever be made illegal 16:39:24 i think its a virus problem thats here to stay 16:39:29 no, of course not 16:39:32 are there any spyware progies for linux ? 16:39:43 hmmm ... yes 16:39:46 one more PLUS on linux 16:39:55 that's pretty tongue-in-cheek, though 16:40:13 who ever said you have to run binaries? 16:40:31 lol 16:40:32 it might be possible in Java 16:40:42 another good reason to only run from source :) 16:42:32 I440r: will your assembler be "structured"? or will it require labels and JXX instructions? 16:42:51 no 16:43:02 IF BEGIN etc do not belong in the assembler 16:43:07 ok 16:43:19 structured assembler is NOT assembler heh 16:43:30 you want structure - code it - or use forth :) 16:43:53 heh, of course it is, an assembler is a program that takes text input and produces machine code output 16:43:57 if YOU wanted it in the assembler it wouldnt be too difficult to add tho 16:44:18 I always found it confusing, myself 16:44:27 me 2 16:44:37 when i think assembler, i think ASSEMBLER 16:44:40 begin 16:44:43 but not neccessarily "bad" 16:44:43 mov eax, ... 16:44:47 ... 16:44:50 again 16:44:53 just doesnt LOOK right 16:45:07 90% of the forth code seems confusing to me, also 16:45:17 and you cant use begin blah blah again blah again 16:45:28 and theres NO reason you cant branch back to the same place twice 16:45:35 yep 16:45:41 you have to be verbose and do begin begin begin begin begin blah blah agin ..... 16:45:52 forward branches are hard with "structured" assemblers 16:46:32 they arent easy WITHOUT them heh 16:46:45 i like the a86 mechanism 16:46:52 jne L1 is always a backwards branch 16:46:53 yes, but that's an implementation issue, not an issue for the user 16:47:03 why??? 16:47:03 jne >L1 is a forward branch 16:47:08 ah! 16:47:25 that one would have GOT me 16:48:02 may I suggest .... 16:48:25 that each of the labels has both a valid flag, and an address field 16:48:43 valid flag ? 16:48:44 that way, JNE l1 can work both forward and reverse 16:48:53 ive not implemented local labels yet heh 16:49:22 if the field does not yet contain a valid address, then the current address is added to a chain that needs to be filled in later, when L1 is set 16:49:38 aha. 16:49:46 well local labels will be an array 16:50:07 .L1: thru .L9: will store HERE to the Nth array element 16:50:20 * MrReach nods 16:50:28 how about ... 16:50:45 --- quit: tcn () 16:50:58 if the array already contains an address, then it is used as the pointer to a chain of addresses that need to be filled in 16:51:03 * MrReach shrugs. 16:51:06 eep i dont have an unzipper hehe 16:51:28 heres the problem 16:51:44 every time you REFERENCE a local label the local label needs to knnow its referenced 16:52:05 so we have to set an arbitary MAX number of references to any given local label 16:52:35 so we have an array for L0: thru L9: to say where each label is defined as 16:52:40 have you seen Bradford J. Rodriguez's paper "Build Your Own (Cross-) Assembler...in Forth" ??? 16:52:46 and an array of arrays to say where each label is referenced from 16:52:52 nope 16:53:02 url ? 16:53:04 Build Your Own (Cross-) Assembler...in Forth 16:53:23 and here's the URL of a whole series of papers by him, some quite interesting ... 16:53:30 http://www.zetetics.com/bj/papers/ 16:53:49 bookmarked :) 16:54:05 when I wrote my assembler ... 16:54:28 I made the assumption that all label references were 16 bit (in a 16 bit environ) 16:54:39 then used the storage in the machine code to chain them 16:54:50 in the case of forward references, anyway 16:55:11 now, in your case, you might need to do something different 16:55:26 erm im going to assume 8 bit but allow 16 and 32 bit branches 16:55:35 8 bit for jcc 16:55:37 assumed 16:55:43 32 bit assumed for jmp 16:55:49 jmp xyzzy 16:55:53 jmp short xyzzy 16:55:57 jcc foo 16:56:00 maybe an array of references, each of which had a byte-field of label number and a word-field of address 16:56:01 jcc short foo 16:56:18 that array might be 25-100 elements in size 16:56:23 just need an array of addresses of the instruction referencing a given local label 16:56:53 when a label was defined, it scanned the array looking for references with it's own label identifier and then patching the stored addresses 16:57:20 yes, but I wouldn't do an array of pointers to arrays 16:57:33 I would do a larger array, with two fields 16:57:45 heh u lost me heh 16:58:24 so we have an array for L0: thru L9: to say where each label is defined as 16:58:35 yes 16:58:36 and an array of arrays to say where each label is referenced from 16:58:59 I presume this to mean that each label has its own array of previous usages? 16:59:02 an arrray of arrayas where X is L0 thro L9 and Y is where referenced ? 16:59:29 we have to set Y to some arbitary max number of times u can reference a given label 16:59:32 say 10 times ? 16:59:42 tho... 10 is VERY BIG 16:59:43 ok, instead of that ... 16:59:49 I might suggest ... 17:00:04 a single large array, each element having two fields ... 17:00:19 1. a label identifier (4 bits) 17:00:35 2. an address (32 bits) that needs to be patched 17:00:49 ooops, you need a third field ... 17:01:08 --- quit: Robert (Remote closed the connection) 17:01:09 how do you know how many times a given label is referenced 17:01:13 3. a size field (2 bits) indicating how large a section needs to be patched 17:01:31 --- join: Robert (~Robert@robost86.tsps1.freenet6.net) joined #forth 17:01:37 it doesn't matter how meany times its referenced ... just add it to the table 17:01:38 oh ya 17:02:09 so you will have 17:02:18 then when label 4 is set (for instance), it scans the whole table looking for references to itself 17:02:30 and then patching the associated addresses/sizes 17:02:34 [.L0 address size] [.L1 address size] [.L0 address size] 17:02:42 correct 17:03:08 for backwards branches the assembler can be smart about size 17:03:10 when L4 is finally set, it might have 5 entries already in the table that need to be patched 17:03:20 but has to assume for forward branches 17:03:38 immediatly patch them? - and remove from table ? 17:03:44 sure, why not? 17:03:47 if L4 is referenced before definition add to table 17:03:49 or leave in table 17:03:55 correct 17:04:02 if L4 is referenced after definition just go ahead and assemble instruction 17:04:06 yep 17:04:44 that means an arbitrary limit on the total number of forward references, but a fairly large table doesn't cost much memory 17:05:07 I can't imagine a code word having more than 100 forward references total 17:05:10 well, the tale can be floating at here+8k and then you have no limits :) 17:05:29 and that's only 500 bytes of storage 17:05:32 well im restricting you to 10 local labels 17:06:06 you have a block of code that is big enough to have more than 10 references to ANY of those and you need to be working for mcdonnalds instead cuz ur definatly NOT a coder heh 17:06:22 no, I meant the total number of forward references, not to how many locations referenced 17:06:49 again. you have more than 10 forward refs in a single code word and you need to rethink 17:06:56 more than 3 or 4 and i start rethinking 17:07:15 do you mean "more than 10 labels/referenced locations" ??? 17:07:16 too much if/and/butloop nesting is bad in assembler too! 17:07:24 no 17:07:43 i mean if a block of code needs to forward branch more than 3 or 4 times then it needs to be rethunked 17:07:51 you might only define one label, L1, but jump to it from 30 different places 17:07:54 too much branching within a single definition is BAD 17:08:08 yea - classic case of RETHINK time 17:08:17 agreed, of course, but one one to be careful about the limits they impose 17:08:52 for example, the code being assembled might actually be the output of an optimising compiler 17:09:13 that definatly needs to be retunked :) 17:09:15 or something dissassembled our of a C .o module 17:09:21 but i get your drift 17:10:05 its hard to predict how users will want to use your assembler 17:10:22 i know 17:10:36 my #1 concern is to make it useable for isforth 17:10:49 make it useable as a general purpose assembler is not a concern right now 17:11:12 if i place some arbitary restrictions that simplify my job NOW i can always recode it later 17:11:21 get it to work for my purposes first 17:11:28 see what ppl say, then make changes as needed 17:11:41 agreed 17:12:07 the assembler source as it is now is not in the 1.09b release 17:12:19 but in cases like forward referencing labels, just a tiny bit of though/effort can eliminate the limitations altogether 17:12:23 and i have very little so far 17:13:16 aha but you see, thats what i dont what to have to do!!! 17:13:19 THINK!!!!!!!!!!!! 17:13:21 heh 17:13:35 for example, the table I spoke of can go into ALLOCATEd memory, to be RESIZEd whenever neccessary ... then there would be no limits whatsoever on the number of forward references 17:14:10 or it can freefloat like i said... 17:14:15 if there are no forward references, the table needn't be built at all 17:14:22 code foo 17:14:38 'code' sets a variable stating teh address of the local label array 17:14:46 it sets it to here $8192 + 17:15:00 you can now have an entier 8k of code before you overwrite the array 17:15:09 who writes a single 8k coded def ???? :) 17:15:17 ok, I don't like to assume anything about what might be beyond here 17:15:25 end-code fills in all the blanks on the local labels and dumps the array 17:15:46 I generally ALLOT or ALLOCATE all my memory 17:16:05 and I prefer ALLOCATE because I can grow or shrink it later if needed 17:16:33 but I'm forced to use ALLOT if I need it saved with the miage 17:16:35 image 17:18:06 8k is not hard to exceed if you're storing string literals 17:18:49 not that I can imagine why one would want to do that inside a coded def 17:19:41 but some jerk will try it, and then wonder why his system goes bonkers when there's more than 8k of text 17:20:05 nono u missed the point hehe 17:20:07 code foo 17:20:08 ... 17:20:11 ... 17:20:15 the array exists 17:20:17 ... 17:20:18 ... 17:20:30 8k of code later yor overwriting the table 17:20:31 ... 17:20:32 ... 17:20:35 end-code 17:20:41 code foo 17:20:43 ... 17:20:44 ... 17:20:46 end-code 17:20:54 table no longer exists 17:20:55 end-code ... and the system starts patching random addresses with random data 17:21:17 no. you CANT reference local labels except from within the definition they are defined in 17:21:26 you're right, though, 8 k is a hella big code def 17:21:28 forward jumps to NON local labels are NOT allowed 17:21:35 exactly heh 17:22:01 not impossible, though 17:23:18 Error: code size exceeded (write smaller code words, you dumbass) 17:23:52 hehehe 17:24:08 abort" function growth hormone imbalance detected" 17:24:16 stolen from the L.T. :) 17:24:25 hehe 17:24:29 L.T. ?? 17:24:33 Linus 17:24:37 ah! ok 17:24:49 its from his CodingStyle" doc in /usr/src/linux 17:26:07 well, time for me to go now ... it's been a pleasure 17:26:19 be well, each of you 17:26:24 --- part: MrReach left #forth 17:27:10 :) 17:48:45 --- join: tathi (~josh@ip68-9-59-180.ri.ri.cox.net) joined #forth 17:57:53 --- join: Herkamire (~jason@ip68-9-68-66.ri.ri.cox.net) joined #forth 17:58:04 anybody use jabber? 18:00:30 --- join: tcn (tcn@tc4-login37.megatrondata.com) joined #forth 18:04:53 hey, Opera is pretty cool 18:05:26 it has an advertising window but it doesn't seem to work :) 18:05:43 and it has options to block all kinds of annoying crap 18:15:48 --- quit: Speuler (Remote closed the connection) 18:17:48 correct 18:17:51 Herkamire: i use 18:18:07 and you can google for cracp/patch/keys and disable teh banner :) 18:18:21 its download manager is much better than netscaps too 18:18:24 you can RESUME!!! 18:18:34 and double clicking on the completed file LAUNCHES it 18:18:49 the ONLY thing i dont like about opera is that 18:18:51 under windows... 18:18:56 1) it wont fill in passwords for you 18:19:12 its a feature... 18:19:12 2) opera devel team wouldnt know a decent NEWS client if it fell on them 18:19:25 yeah.. it's cool.. it was really easy to download something to deal w/ the ads.. which hasn't been necessary to use, so far :) 18:19:36 it doesnt even have a mail client in the linux version.. 18:19:59 nope 18:20:02 well, i guess unix has plenty of good mail programs.. i use 'mail' myself 18:20:13 if they had a decent news client i would register 18:20:22 but it would HAVE to be in linux AND windows 18:20:26 not just windows 18:20:38 hmm, yeah.. you should tell them that 18:21:11 I440r: hey, its a browser... and hopefully not too much bloated yet.. 18:21:24 like they care 18:21:25 lol 18:21:45 fine. have a SEPERATE news/email client 18:21:49 I440r why would you want to use the same program to browse the web as to read mail?? 18:22:06 netscape tries to inject all sorts of NON web browsing related shit into their browser 18:22:13 like aim 18:22:13 icq 18:22:19 music/radio etc 18:24:48 and that's supposed to be a good thing? 18:25:10 no 18:25:16 thats my point 18:25:17 --- join: joejoe (joe@65-193-68-4.host.seville-pop.ojai.net) joined #forth 18:25:24 i emailed them about that too 18:25:42 opera 6 is about 3 megs w/o java 18:25:45 netscape by default has a few extra buttons in the button bar. i set them to be OFF in teh preferences but they wouldnyt go away 18:25:52 and ONE of them cant be turned off 18:25:52 even WITH all that extra mail/news/icq crap 18:26:04 the RADIO button is there weather you like it or not 18:26:32 i don't think i'll be using netscape anymore :) 18:26:49 I wish they'd come out with Opera 6 for Linux/PPC... 18:27:43 heh 18:27:51 netscape is a pile of shit for sure 18:27:59 spyware too 18:32:14 only thing, you know how to make text files w/ long lines wrap around in opera? 18:32:39 like these IRC log files, or files written w/ wordwrap in Notepad 18:32:53 err no idea :) 18:33:04 tcn: there is no way 4 that, im afradi 18:33:08 id 18:33:48 damn. all the browsers except Lynx do that 18:34:04 i wonder if there's a lynx for windoze :) 18:34:18 write to opera and ask for them to add it heh 18:36:42 tcn there is lynx for windoze I'm pretty sure. there was a port for Mac 18:37:22 what's a good starting point for learning about forth? Is there a forth compiler/interpreter for unix? 18:37:40 there isnt but im working on that heh 18:37:54 go to library, look for "starting forth by leo brodie" 18:37:58 its a bit dated but still good 18:38:01 and funny :) 18:38:11 hanging in here wouldnt hurt either heh 18:38:12 tcn: yeah, there is a lynx 4 win, tho not the latest version 18:38:22 thanks. no forth for unix? wow. 18:38:27 there is 18:38:30 thers gforth 18:38:33 gnu tile forth 18:38:37 bigforth 18:38:47 http://www.jim.spath.com/lynx_win32 (for 'doze) 18:38:54 not one of those would be classified as a REAL forth imho 18:39:02 then theres isforth (my forth) 18:39:16 isforth will eventually be a REAL forth 18:39:26 joejoe: googles directory about forth is pretty good! 18:40:02 thanks. if you make isforth the best forth, will you call it fifth? ;-) 18:40:15 lol it wont be the best forth 18:40:24 im hoping to make it teh best LINUX forth 18:40:28 but its x86 specific 18:42:26 joejoe: I recommend starting with gforth. I think it's www.gnu.org/directory/gforth.html 18:42:44 joejoe: the manual does not teach you the language though. 18:42:59 * I440r sla[s Herkamire arround with an isforth manual 18:43:04 oh yea i forgot 18:43:09 isforth doesnt have a manual :) 18:43:17 argh and i cant type either 18:43:44 I'm downloading gforth now. 18:52:49 what would the syntax be for looping x times and stuffing a word or number into an array? 18:53:46 say again ? 18:53:52 to loop 10 times you would do 18:54:01 10 0 do something-useful loop 18:54:26 : count-to-ten 10 0 do i . loop ; 18:54:40 count-to-ten 18:54:59 pseudo code: 10 0 do i array.push(i) ? 18:55:19 no heh 18:55:35 you want to fetch the 10 items in the array or store 10 numbers to the array 18:55:47 store 10 items 18:55:59 and then after that fetch them. 18:56:02 8 bit items, 16 bit items or 32 bit items 18:56:08 32 bit 18:56:35 ok well the word ! is pronounced store so 18:56:40 lets define a word to store to an array 18:56:50 : array! useful stuff here ; 18:57:03 well define "usefull stuff shortly" heh 18:57:17 colon creates a new forth word 18:57:22 semi ends it 18:57:45 so :store do the storing; ? 18:57:54 : array! ( n1 a1 n2 --- ) 4 * + ! ; 18:58:03 gak! 18:58:04 the ( .... ) is a stack comment 18:58:14 everything before the -- is on the stack before execution 18:58:24 everything after the --- is whats on teh stack after execution 18:58:34 the comment says we expect three items on the stack 18:58:39 n1 is the data to be stored 18:58:43 a1 is the address of the array 18:58:50 n2 is the element of the array 18:59:04 each item in the array is 32 bits in size which is 4 bytes 18:59:14 so the first thing we do is a 4 * 18:59:29 that multiplies n2 by 4. we then add that to a1 giving the address of the array element 18:59:33 then ! stores the data 18:59:43 get it ? 19:00:09 methunks the RPN scared you away :) 19:00:12 mmmm, not quite, but I'll give it a whirl. 19:00:24 ok. lets create an array 19:00:43 create array 40 allot 19:00:53 that creates a named buffer of 10 dwords 19:00:56 or 40 bytes 19:00:58 or 20 words 19:01:02 however you want to use it 19:01:14 were going to have it as dwords :) 19:01:28 yes, 10 "longs" 19:02:08 : init-array 10 0 do array i array! loop ; 19:02:17 init-array expects 10 items on the stack 19:02:28 you can do 9 8 7 6 5 4 3 2 1 0 init-array 19:02:50 in isforth you could then do 19:02:54 array 40 dump 19:03:01 and SEE the array contents dumped :) 19:03:39 hmmm, it didn't like this: 19:03:40 create array 400000 allot 19:03:40 *the terminal*:1: Dictionary overflow 19:03:40 create array 400000 allot 19:03:40 ^^^^^ 19:03:40 Backtrace: 19:03:42 $2812CE3C throw 19:04:05 4000000 -- that's allot! ;-) 19:05:08 lol 19:05:14 nonono thats WAY too much heh 19:05:26 if you realy wanted that much in isforth you would alloc it 19:06:31 gforth also has ALLOCATE 19:07:13 hmmm 19:07:13 : alittle allot; 19:07:13 *the terminal*:1: Undefined word 19:07:13 : alittle allot; 19:07:13 ^^^^^^ 19:07:31 you need to put spaced between all words 19:07:32 and it also has a cmd line opt 19:07:33 -m SIZE, --dictionary-size=SIZE Specify Forth dictionary size 19:08:05 ahhh 19:08:06 : alittle allot ; ok 19:08:06 create array 40 alittle redefined array ok 19:08:06 and ; is also "just" a word 19:08:10 onetom can gforth create standalone apps ? 19:08:26 I440r: somehow, sure 19:08:26 you just created an aloas for allot :) 19:08:31 10 allot 19:08:35 allocates 10 bytes 19:08:37 10 alittle 19:08:40 allocates 10 bytes 19:08:41 heh 19:08:54 btw alot means many 19:08:58 allot means allocate :) 19:09:05 :) 19:09:11 brb 19:09:15 doggie walking 19:09:47 :)) allittle is the correct spelling then 19:11:17 so what's the draw to forth? Is it super fast, or super small, or? 19:12:55 brb 19:13:00 small 19:13:07 no syntax :) 19:13:29 no damn types ;) 19:14:21 simplicity, interactivity 19:15:43 minimalicity 19:16:05 i'd really love if i could find a simple example of pfe doing an internet anything 19:16:10 any tcp sockets thing.. anywhere.. 19:16:34 using tcpserver is not a valid example of a httpd 19:20:24 why? 19:21:04 in case of a "4th living on top of an OS" it IS a valid example 19:22:01 you wouldn't have a http server without an OS 19:22:16 tcn: ? 19:24:29 filesystems and networking are the bulk of an OS 19:32:45 --- join: thin (~thin@h24-64-175-61.cg.shawcable.net) joined #forth 19:33:31 hi all 19:33:36 what's up? 19:34:04 not much 19:34:04 hi 19:34:16 onetom :) 19:34:37 what's the news? what excites you these days? what are you reading? :) 19:34:53 * onetom just tends 2 go 2 sleep 19:35:05 im coding 19:35:25 modifying the building control system right now 19:35:30 hmm 19:35:39 how big is the code? 19:35:52 that cLIeNUX was an interesting stuff 19:36:02 did u read its docs? 19:36:04 how do you control a building? building: stay! 19:36:14 :) 19:36:37 why is clienux interesting? 19:36:58 dbc4-szalon_wc keyboard: 19:36:58 1 kbd-code: 19:36:58 arm-szalon_ffi_wc toggle 19:36:58 kbd-code; 19:36:58 19:37:01 2 kbd-code: 19:37:03 arm-szalon_noi_wc toggle 19:37:06 kbd-code; 19:37:08 like this ;) 19:37:42 arm means armature (lamp) 19:37:58 szalon means ... well sg like saloon, iguess 19:38:01 hmmm, I imagine there is a lot of job security as a forth programmer ;-) 19:38:14 ffi is the abbrev of male 19:38:25 nöi means female 19:38:32 wc is the toilet ;) 19:39:12 you're flushing toilets with forth? 19:39:19 s/nöi/nõi/ 19:39:25 joejoe: it's in hungarian 19:39:40 no, just flashing their lamps ;p 19:40:02 ha 19:40:39 thin: cLIeNUX is interesting 4 many reasons 19:40:39 must be distracting 19:40:46 you could make them constipated ! 19:40:50 its creator also likes forth 19:40:56 the flashing could distract them from the vital moment! 19:41:33 it has an interesing "beast": DFHS or what 19:42:54 & it also attracted my attention on xpaint 19:43:07 xpaint is pretty diligent 19:43:29 probably it would b fun 2 make it scriptable via 4th 19:44:07 eg, give names 2 various object via simple 4th defs 19:44:37 like patterns, color gradients, picture details, selection masks 19:44:42 &so on 19:44:57 and u can also create & use them programmatically 19:45:22 programmatically draw lines 19:45:30 copy icons 19:45:33 ... 19:46:03 the small size of xpaint makes me think 19:46:05 Oh, i used cLienux as the starting point for my Linux setup 19:46:15 i've just undone everything he did :) 19:46:17 it would b apropriate 4 such an experiment 19:46:55 tcn: sure, 4 an "old fox" its not the way 2 go 19:47:10 but the ideas behind it r not so bad.. 19:48:04 they just contradict our habits 19:48:18 and thats the only problem w them, i think :) 19:49:09 it's small and that's the only thing that matters :) 19:49:18 i have a very real life problem 19:49:37 id like 2 start a 4th program on machine startup 19:49:47 either in bg or in fg 19:50:06 the problem in bg case: 19:50:38 when it writes 2 the stdout it gets blocked 19:50:46 hmmm.... 19:51:10 * onetom thinking about what was wrong w the redirection... 19:51:43 is thinking..., but imagine that IS there all the time :) 19:52:20 no, starting in bg is not good 19:52:40 i cant interact w it later, can i? 19:53:07 in case of "usable" tcpserver and forth is not a valid example 19:53:12 for an httpd server 19:53:55 usable? 19:54:06 probably im tired but i cant get the point 19:56:21 usable meaning something you could stick in a production enviroment 19:56:58 versus something that works fine for one person 19:57:16 --- nick: Klaw` -> Klaw 19:57:26 mmm 19:57:55 brb (hunting a lil mouse. a real 1) 19:58:39 k, so what was wrong w tcpserver? 19:58:59 u were discussing it long as i saw 19:59:18 the launch time for a simple http server using tcpserver and forth is not acceptable 19:59:28 probably because you have to launch forth for each request 20:00:01 but maybe i'm just nutty, trying to use forth w/ the internet 20:00:06 but it lunches much faster than the responded info could get transfered 20:00:09 i see it's entirely used for embedding 20:00:34 onetom: do you adminstrate any webservers? 20:01:15 not seriously yet 20:01:28 alright, i'm going to try it again.. it's really not an acceptable response time 20:01:34 tho, i have access 2 the server of our city 20:01:37 i do administrate servers, startup time is a big deal 20:02:19 some hundreds of hit/days is not a big challange 4 tcpserver+4th 20:02:33 i serve 80k uniques a day 20:02:42 but its just sufficient 4 wide range of applications 20:03:08 it takes more than 10x as long as apache to serve a request 20:03:13 that's kind of rediculous 20:03:26 especially since one of the purposes of coding in forth would be speed 20:03:55 48k uniques hits is 1 million hits, btw. 20:04:59 ??? 20:05:15 how did u measured that 10x difference? 20:05:24 how did u measure that 10x difference? 20:05:25 by looking at my stats 20:05:32 oh, by running ab -- apache benchmark 20:05:41 tcpserver is very fine at accepting requests 20:05:56 but? 20:05:56 but because it has to launch gforth / pfe / whatever forth for each request, it doesn't work out too well 20:06:16 djb made it for his qmail system.. mail just takes one open to handle many many emails 20:06:19 k, show me ur actual test suite! 20:06:23 definately not the same situation as httpd 20:06:34 ab -c 1 http://theserver:anotherport/ 20:06:37 10k hits 20:06:53 concurrency also kills it.. i have some dumps somewhere, but they aren't relevant here 20:06:56 10,000 hits? 20:07:05 yes, you don't benchmark with 1 hit 20:07:08 that'd be rediculous 20:07:58 eh, plz try 2 b more chatty 20:08:14 ? 20:08:23 1st, show me the actual results 20:08:31 of the two cases 20:08:44 not just the ratio 20:09:08 ok, just fyi here.. i have to dig them up, and sharing them does nothing other than show you that the times are horrible 20:09:16 2nd, where can i find that ab under debian? 20:09:19 but, for your sake, i'll try and find them 20:09:27 ab comes with apache, i don't know if default debian installs it 20:09:42 what i'm saying here is take my word, the benchmarks are horrible, and they have a logical reason behind it 20:10:47 and secondly, i'd need to generate them again as i can't find them 20:11:40 but who the fuck cares about benchmarks of unreal circumstances? 20:12:52 10k hits/s or 1k hits/s all the same 20:13:25 it doesnt mean a page will dl 10x slower if served by tcpserver+4th 20:14:28 dude 20:14:34 i have a lot of experience in doing this 20:14:44 benchmark real circumstance means 20 concurrent hits over a few minutes 20:14:48 which i also ran. 20:14:51 while i have common-sense, sure ;p 20:15:06 use your common sense here.. if tcp server has to start up a forth for each request, its going to waste cpu 20:15:15 sure 20:15:16 versus if the forth is running and listening, and handles it correctly 20:15:29 correctly being something well thought out and beyond my forth skills.. 20:15:34 but how much does it hurts dl experience? 20:15:36 which is why i've been looking for some example of some forth using tcp 20:15:45 it hurts dl experience when you can't connect to the server 20:15:55 no one likes a webpage where only half teh images load 20:15:57 dl bandwidth r usually very low 20:15:57 and they have to wait a minute 20:16:16 sure 20:16:21 what are you trying to do here.. i feel like i'm in an argument 20:16:28 i never successfully connected to the tcpserver + 4th 20:16:39 but why wouldnt u b able 2 connect 2 it? 20:16:45 tcpserver just takes a connection, and pipes the in/out through whatever program you are running 20:16:54 yes 20:16:56 onetom: because your threads are busy serving people in all of their slowness, and you run out of free threads 20:17:25 tcpserver + 4th great for ftp or smtp. 20:18:03 hey, starting the 4th is slow, not the actual serving of the page 20:19:06 onetom: god.. 20:19:09 that's what i've been saying 20:19:14 trying to convey anyway 20:19:32 but but but ... ?!?? 20:19:38 but that's all i was saying 20:19:52 i'm trying to use forth in my work, so i can actually use / learn it. 20:19:52 but that doesnt count! 20:20:02 But I can't, because there is no way for me to use it in a decent manner 20:20:09 tcps+4th is still powerfull enough this way 20:20:20 it counts when i can't find one example of 4th running even as a tcp echo server 20:20:24 i mean it's really rediculous 20:20:47 tcpserver + 4th is powerful enough for smtp, ftp and imap.. 20:20:52 none of which i'm interested in.. 20:20:52 klaw im hoping to release my isforth sockets code with teh next release 20:21:02 doing an ftp progie in isforth will be a snap 20:21:08 could you pplease make it compile on freebsd? 20:21:09 I440r: u say it all the time ;) 20:21:25 onetom, i never promised it would be in the NEXT release before 20:21:30 klaw im hoping to do that 20:21:50 my father downloaded the fbsd iso's at work, im waiting for him to burn them 20:21:52 Klaw: what r u interested in then? 20:22:06 onetom: socket code, and basic threading with it 20:22:15 l440r: I've got 2 freebsd boxes 20:22:23 i can compile or set you up an acct to try 20:22:27 ive got none :) 20:22:29 Klaw: ahha! threading... in 4th... 20:22:29 as long as you promise not to fork bomb 20:22:46 i need to have it locally installed, theres ALOT of work to do to get isforth working in fbsd 20:22:51 onetom: threading code i could find.. but it'd be cooler to plagerize.. socket code was uncool. 20:22:54 not the least of which is learning the syscalls in fbsd 20:22:58 Klaw: u should explore threading alone 1st. wo any socket related stuff. 20:23:15 l440r: well.. do the right thing, and don't force freebsd users to use linux emulation 20:25:25 ok, I'm blanking...is there a forth word that normally negates the thing on top of the stack? 20:25:49 NEGATE? :) 20:26:02 sif: ." u here?" 20:26:03 onetom: 20:26:05 ok, thanks 20:26:19 sif: 1 negate . 20:26:20 onetom: Word not found: negate 20:26:24 :/ 20:26:28 sif sux 20:26:42 sif: 1 invert 1+ . 20:26:43 onetom: Word not found: invert 20:26:44 --- quit: tcn () 20:26:53 sux again 20:26:55 heh 20:26:59 heh 20:27:15 onetom: I don't think herk ever intended it to be more than a toy... 20:27:31 and I'm not at all sure he finished what he _was_ intending to do with it :) 20:27:42 sif: 1 65535 xor 1+ . 20:27:43 onetom: Word not found: xor 20:28:22 now, we can b sure of it :) 20:28:29 he hasnt finished 20:28:32 it 20:29:31 :) 20:32:34 sif: -1 . 20:32:35 onetom: Word not found: -1 20:32:48 sif: 0 1- . 20:32:50 onetom: Word not found: 1- 20:32:52 sif: 0 1 - . 20:32:53 onetom: 65535 20:34:08 thin: : invert 0 1- xor ; : negate invert 1+ ; 20:36:13 : invert [ 0 1- ] literal xor ; 4 speed ;) 20:56:17 bedtime 20:56:20 by allz 21:02:47 hmm, bedtime for me too... 21:02:55 --- quit: tathi ("later all") 21:13:22 --- quit: I440r ("Reality Strikes Again!") 21:57:30 --- join: proteusguy (~proteusgu@24-197-147-197.charterga.net) joined #forth 22:33:03 Klaw: I have to go to bed now, but I thought I'd add this. Thathi's forth starts up (and compiles the majority of it's dictionary etc.) prints some output and returns in 2ms. and does not register any usage of system time according to "time". 22:33:29 this compaired to gforth taking 17ms gives some promise. 22:34:15 Klaw: I'll let you know if I can get any decent benchmarks with it. I'm asuming I have to get the responce time (through the socket) down to 3ms to make you happy. 22:41:33 --- nick: Herkamire -> Herkasleep 22:52:00 --- quit: Herkasleep ("leaving") 23:04:13 --- join: proteus (~proteusgu@24-197-147-197.charterga.net) joined #forth 23:04:39 --- quit: proteusguy (Connection timed out) 23:20:46 --- quit: sif (Read error: 110 (Connection timed out)) 23:36:31 --- join: Serg_penguin (~Z@nat-ch1.nat.comex.ru) joined #forth 23:36:48 --- quit: Serg_penguin (Client Quit) 23:59:59 --- log: ended forth/02.09.17