00:00:00 --- log: started forth/02.08.22 01:08:20 : NEXT ( -- ) 01:08:20 IP dup @ !> W \ w = [ip] 01:08:20 4+ !> IP \ ip = ip + 4 01:08:20 W @ if \ is w pointing to a high-level word? 01:08:20 IP rpush \ push ip to return stack 01:08:22 W 4+ !> IP \ ip = w + 4 01:08:25 then 01:08:27 W @ execute \ execute low-level word 01:08:30 else 01:08:32 ; 01:08:35 Why does that segfault isforth? 01:08:38 (When it's compiling, not executing) 01:12:24 --- join: Soap` (~flop@202-0-42-22.cable.paradise.net.nz) joined #forth 01:24:43 better example : x if then else ; 01:25:22 it happens because of resolving references by word else 01:26:40 standalone else segfaults too 01:30:58 Darn. 01:31:08 Thanks marek. 02:33:00 --- quit: Soap` (Read error: 104 (Connection reset by peer)) 04:20:53 --- join: cleverdra (julianf@0-2pool111-112.nas2.florence1.sc.us.da.qwest.net) joined #forth 04:22:32 Hi cleverdra. 05:07:15 hello Robert. 05:16:15 --- quit: cleverdra (Read error: 104 (Connection reset by peer)) 05:16:27 --- join: cleverdra (julianf@0-2pool111-112.nas2.florence1.sc.us.da.qwest.net) joined #forth 05:34:29 --- join: sif (~sifforth@ip68-9-70-120.ri.ri.cox.net) joined #forth 05:34:29 Type sif: (or /msg sif to play in private) 06:24:47 --- join: tathi (~josh@wsip68-15-54-54.ri.ri.cox.net) joined #forth 08:00:43 oh no! sif came back! 08:02:25 hi futhin 08:02:50 imgaine or not im stucked w parsing words :( 08:03:18 eh 08:03:20 i cant even read the next word in gforth 08:03:21 are you sure? :P 08:03:44 tho, gforth has an own word NAME just 4 this purpose 08:03:48 * Robert tries to write his own little Forth. 08:03:51 (In Forth :-) 08:04:01 robert: did you change it to IF ELSE THEN ? 08:04:08 Heh, yeah. 08:04:10 Stupid mistale. 08:04:12 but the newline stops it reading further 08:04:12 mistake* 08:04:17 robert: yup ;) 08:04:48 :)) yeah, that was very vitty 08:05:05 witty 08:05:42 onetom: why can't you avoid parsing? 08:05:43 Uhmm.. 08:05:53 How would I convert a whole document to lower-case? 08:06:41 futhin: think of the later example 08:06:49 Robert: use vi 08:07:14 Robert: ask the help sys about lower-case 08:07:42 #! /usr/bin/gforth-fast 08:07:43 : lowercase-char dup [char] A [ char Z 1+ ]L within if bl + then ; : unixkey key dup 0< if bye then ; : lowercase begin unixkey lowercase-char emit ; lowercase 08:07:44 Uhm. 08:07:50 How do I ask that? 08:08:01 : convertthefile readinfilechar dup 71 > = if 31 xor then ; 08:08:03 there! 08:08:05 Robert: or write it in a C 1liner while(c=getchar()!=EOF)putchar(c); 08:08:06 my code ownz! 08:08:13 cleverdra: naw, my code is better! 08:08:14 cleverdra: Nice, but I don't need it in Forth ;) 08:08:17 hehe. 08:08:20 futhin - your code is *wrong* 08:08:30 I wanted to know if there was any easy solution. 08:08:37 cleverda: only cause i forgot the numbers 08:08:37 Might as well do it by hand ;) 08:08:45 noooo robert! 08:08:48 easy solution 08:08:52 let me check the numbers 08:09:08 i have some assembler code that i made myself somewhere for converting cases 08:09:12 or use tr! 08:09:52 futhin - there is a single bit of difference between a lowercase number and an uppercase number. You can forget numbers; that's fine, but can you forget binary number theory? 08:10:00 cleverdra: could u help me how can i read numbers from the input stream? 08:10:26 onetom - 0. bl parse >number 2drop drop 08:10:29 * cleverdra shudders. 08:11:18 but bl parse expects a blank doesnt it? 08:11:45 imean an explicit space (20h) 08:12:40 : convertthefile hex c@ dup 41 > 51 < = if 20 xor then ; 08:12:45 something like that 08:12:47 er 08:12:50 5A 08:12:50 onetom - bl is a constant. 08:12:59 if it is between 41 and 5A it is a capital letter 08:13:05 so you test that its between that 08:13:07 blech. 08:13:10 and then if it is, you xor it! 08:13:40 xoring is wasteful. [ 20 negate ] literal and 08:14:05 well that other code up there that you pasted doesn't look very understandable :/ 08:14:40 it's easier to do it with 41 and 5A and just have a comment saying what they are :P 08:14:55 i didn't know xoring is wasteful 08:14:56 Nuh-uh! 08:15:01 futhin - I don't know if it is. 08:15:14 futhin - probably not. 08:16:59 oh shit, gtg! 08:17:04 oh, bye. 08:18:38 cleverdra: :( bl parse only worx 4 blocks where every whitespace is verbatim space 08:19:08 : x bl parse type ; x12 3 08:19:12 prints 08:19:18 12 08:19:32 Well, yes. You just said that you wanted an explicit space! 08:19:43 For that, I'd suggest a state machine. 08:20:23 no, i was complaining about it only can handle explicit space 08:20:26 : x 0 parse number> ( a -- n a' ) drop ; 08:20:51 So? Well, OK. 08:21:32 * onetom scrapes his head .... 08:22:21 sorry cant see the point in the example above 08:23:09 and gforth dont have number> just number >number number? snumber ... 08:23:46 number> is what you'd made. 08:23:55 but PARSE and SCAN (used by PARSE) doesnt seem complex 08:24:07 im gonna copy&modify those 08:24:18 Of course not; that's why it does -- ack, 'copy&modify'? Gross. 08:26:14 : find-whitespace begin count is-whitespace? until ; : skip-whitespace begin count is-whitespace? 0= until ; : whitespace-parse skip-whitespace dup find-whitespace over - ; 08:26:46 s" 123 " whitespace-parse type 08:26:56 well, DROP WHITESPACE-PARSE 08:30:13 not bad... thy 08:30:15 thx 08:30:51 but the problem wasnt w the parse from a string but parsing from stream 08:31:13 coz >number worx just fine on a string 08:31:21 0 parse drop whitespace-parse, assuming that it exists. This is where a state machine would help, as I said. 08:32:28 still cant understand what kind of statemachine do u imagine 08:32:39 and what is that 0 parse ?( 08:33:37 eeeeh, how can i enter tab into gforth? 08:36:58 mmm, parse is also wrong it cant skip line boundary 08:37:48 (now i c why do blocks r far more simple :) 08:38:14 parse by definition can't, and blocks have the same problem; the difference is that in gforth each line is considered as a block. 08:39:04 ah, umean parse cant cross block boundary? 08:42:50 No, it can't. 08:43:29 Well, unless it can. A naive implementation certainly could, if blocks were subsequently placed. 08:43:31 and what makes it stop? 08:43:50 c 08:43:50 onetom - the same thing that makes parse stop on a line in gforth, no doubt. 08:43:58 :)) 08:44:21 k, thx 4 clarifying this stuff 08:46:43 what do u know about block support in gforth 08:47:08 and what 4th do u use under linux? 09:17:26 forth and C don't really go together, which is why i think there isn't any good forths for unix. 09:17:45 s/isn't/aren't 09:18:39 well back to work. l8r 09:18:49 could u explain it a bit more? 09:20:23 oh. well C uses a linker and forth uses a dictionary. they are two totally different and incompatible things. 09:20:41 so if you want to use the libraries on a unix system in your forth you need to use a linked. 09:20:44 s/linked/linker 09:20:57 and a forth with a linker is strange indeed. 09:21:17 although a dynamic linker is not that strange because you could convert those into dictionary words pretty easily. 09:21:52 although in C dynamic linker libraries you can't just scan for all symbols. you have to look up each symbol individually, so you need to do non-standard stuff to toss that into the dictionary. 09:22:20 or just have a word in forth that binds dynamic linker symbols to the dictionary. 09:22:44 but the call convention in C is totally different than forth making calling those routines a chore. 09:23:09 no matter what, if you call C routines from forth you KNOW it's C routines. if you call Forth routines from C you KNOW it's Forth. 09:24:36 well gotta go. have fun. 09:27:21 k, thx, bye 09:27:49 but despite all the explanation above, u cant state there rnt good C 4thes 09:29:47 a 4th isnt bad just because it has support 4 other things 09:30:08 what r not easy & efficient 2 access... :/ 09:30:40 most 4thes r simulated 4th machines (CPUs actually) 09:31:17 and there r some levels of simulation 09:31:43 u can simulate 4th on top of any CPU and its associated HW env. 09:32:13 onetom, my explaination explains exactly why there are no good C forths. 09:32:20 and u can simulate 4th on top of an OS too 09:32:26 because to be a good forth it has to integrate with the system well. 09:32:34 which you cannot do with a real forth. 09:33:05 and 4th in asm can integrate much better, huh? 09:33:06 and simulating another system ontop of your OS doesn't count. it's like running an emulator for the OS you really wanted ontop of the OS you don't actually want to use. 09:33:25 onetom, asm forth running ontop of unix does not integrate any better. 09:33:26 the problem is not w C, but that the OS is written in C 09:33:33 they all wany to use the standard libraries. so you need a linker. 09:33:38 onetom, exactly. 09:33:38 and mainly, there IS an OS below 4th 09:34:03 unix is so C-centric it's hard to deal with if you aren't doing C. 09:34:14 but the 4th itself built on top of all these can still b a nice & 09:34:22 i have this problem when i use lisp or scheme as well. 09:34:25 clever implementation 09:34:44 onetom, not really. because it cannot take advantage of what the OS has to offer. 09:34:50 you have to hand-add all the stuff. 09:34:57 WE NEED a fuckin FORTH OS FINALLY!!! 09:35:14 so when one does a forth for unix you end up hand adding the support for sockets, the support for X11, the support for curses, and whatever else. 09:35:17 onetom: totally. 09:35:36 i've had some ideas and sketches on a microkernel forth. (which is probably considered blasphemy by some) 09:35:37 just like in any lang, anyway... 09:35:58 blasphemy? 09:36:02 but instead of doing a universal namespace as part of the filesystem like QNX and Plan 9 do. I was thinking I could do a universal namespace through the dictionary. 09:36:16 hmm... 09:36:18 onetom, you don't know the word blasphemy? 09:36:28 would u share ur plans w us? 09:36:37 yes, i dont :) 09:36:46 im hungarian, uknow 09:37:06 well in QNX or Plan9. and user can attach a filesystem to any directory they have permissions on. and to do a driver you just attach yourself to like /dev/en0 if you wrote an ethernet driver. 09:37:08 and cant access my electronic dict @the moment 09:37:19 onetom: blasphemy is like insulting one's god. 09:37:44 aha, thx 09:38:26 i was thinking i could open up communication channels between indepedent forth threads using the dictionary as the namespace to establish the channel. 09:38:48 (just calling stuff directly seems effecient but i had a lot of problems with it in vxWorks, especially in the testing phase) 09:39:11 when you break stuff into little units that talk through some thin channel you can perform unit testing on the module indepedent of the rest of the system. 09:39:41 when you start calling stuff directly you have to either scaffold most of the system to do a module test, and then you wonder if you scaffold is correct. or more often you just test the entire thing as one big lump. 09:39:50 and then you're less confident in the system. 09:40:08 plus it's pretty rad as a user just to beable to mount a filesystem in your home directory. 09:40:35 like if you had a MUD you could mount a filesystem that had control variables for the mud as well as a completely layed out object database that you could browse as files. etc. 09:41:48 or you could have a web browser that just mounted the entire internet as a filesystem in your directory. then cat http//somesite/path/file.txt would let you see the file. and you could use normal shell to manage your ftp site too 09:41:50 * OrngeTide shrugs. 09:41:59 so there are obvious advantages to a universal namespace. 09:42:22 but getting that idea to forth is hard. some people think forth with blockIO operations and no filesystem is the only way to go. 09:42:57 and with just block IO you can't stack a universal namespace on it unless you just want to share dictionary entries. which is fine for talking to drivers. 09:43:51 i haven't decided if i want a filesystem, like a normal filesystem. or if i just want to have a generic relational database instead of a filesystem. 09:44:06 then I could use forth-ize SQL commands to query the database. :) 09:47:11 "orangedb" FQX-DBSELECT "table A" FQX-TABSELECT BEGIN "pickles" FQX-READ WHILE 3 = IF ." Found 3 pickles" THEN REPEAT 09:47:16 maybe it would look something like that. o 09:47:53 or maybe i'd not use a while and i'd just have some sort of construct to deal with walking through all the entries (that would be best incase i'm accessing data over a network) 09:48:08 well i have a meeting. seeya. 09:49:18 pill 09:49:37 imean, just a moment 10:00:31 hm.. c... mostly.. 10:19:50 but dont b too attracted by integrating a relational db into the system 10:20:31 because handling of hierarchical data (trees) in a RDB is not 2 convenient 10:21:20 just think of "LDAP vs PG" as a user db store... 10:21:28 --- join: ayrnieu (julianf@0-2pool111-112.nas2.florence1.sc.us.da.qwest.net) joined #forth 10:21:43 --- quit: cleverdra (Read error: 104 (Connection reset by peer)) 10:21:58 --- nick: ayrnieu -> cleverdra 10:31:47 --- join: proteusguy (~proteusgu@24-197-147-197.charterga.net) joined #forth 10:38:20 --- join: Kitanin (~clark@h-209-91-66-234.gen.cadvision.com) joined #forth 10:39:01 Hi proteusguy & Kitanin. 10:39:43 Hey. 10:49:22 hi 10:51:02 OrngeTide: TILE has a pretty sophisticated interface 2 the OS. it doesnt stop @the EOL ;) and its IO handling is multitask safe... 11:06:53 --- quit: proteusguy (Read error: 110 (Connection timed out)) 11:07:12 --- join: proteusguy (~proteusgu@24-197-147-197.charterga.net) joined #forth 11:13:54 --- quit: proteusguy (Remote closed the connection) 11:25:01 --- quit: tathi ("leaving") 11:32:58 Hrmmm... 11:33:14 Anyone here who wants to see my Forth in Forth? :) 11:33:18 It's far from done... 11:33:39 At least the VM and word creation/lookup works. 11:33:51 Guess I could upload the current version. 11:34:01 Forth in Forth? Been done =) 11:34:23 Yeah, where is it? 11:34:42 http://robert.zizi.org/pub/forth.f 11:34:45 Like I said, it's not done. 11:34:56 And yes, I know self-compiling forths have been written :) 11:35:11 This is in 100% forth, so I guess it's kind of slow :P 11:35:44 And.. it's written by me, and my algorithms usually are 5 times slower than the most common one, and 20 times slower than the ideal one. 11:36:30 Why should it be slow, for being 100% Forth? 11:36:47 cleverdra: Just look at NEXT (which also includes NEST)... 11:37:17 ah. hum. 11:37:21 Compare that with the "lodsd / jmp eax" most x86 forths use. 11:37:37 "a bit" slower :P 11:37:38 What are you going to do with this? 11:37:59 cleverdra: Print out and clue on my wall... or maybe something even less useful. 11:38:02 It's just for fun. 11:38:07 glue* 11:38:11 * cleverdra nods. 11:38:39 Would be funny if I got it to run itself. 11:40:25 It'd be a bit of work, but you can write the primitives in Forth, as you are doing =) 11:40:35 That is, in the external Forth. 11:44:13 Yes... 11:44:45 I need to find some easy way to write Forth code for the Forth in Forth, heh. 11:44:59 That is, I don't want to keep on doing things like: 11:45:11 LAST 11:45:12 0 RET-name ['] RET low-level-word 11:45:12 LAST 11:45:12 0 main-name :: 11:45:12 LAST !> IP 11:45:14 etc. 11:45:40 So, I'd like to parse the input from IsForth. 11:45:53 * Robert wonders how that could be done. 11:47:34 I don't quite understand what the problem is, or what you want to do. 11:48:03 Uhm. 11:48:13 I want to redefine : 11:48:25 So I can easily make high-level definitions for my forth. 11:48:47 But writing a new "create" would force me to do some parsing. 11:48:52 Robert: sure there r 1s interested in ur 4th! :) 11:48:52 OK. What's the problem? You obviously need to use IsForth words for reading, because your Forth doesn't have access to the syscalls any other way. 11:49:07 (Reading the next word from the IsForth input) 11:49:33 Just use , if you don't want to worry about files. 11:49:45 Uhm... 11:50:04 I want to use the same way as "create" does. 11:50:40 I don't see how your statement follows from mine, but OK. 11:52:03 Sorry for being unclear. 11:52:22 What I want to do, is to take a word from the IsForth input. 11:52:44 Even if that happens to be from stdin, or from an fload-ed file. 11:54:10 I'll be back later. 12:07:44 im suffering from the same problem @the moment :) 12:08:02 how amateurs r we... :) 12:12:34 an OS less environment could improve productivity 4 robert and me, i think 12:19:33 Hehe :) 12:39:45 --- quit: Kitanin (Read error: 104 (Connection reset by peer)) 12:40:47 --- join: I440r (mark4@pool-63.52.218.56.ipls.grid.net) joined #forth 12:45:04 btw, what is that !> ? 12:45:16 the word !> ? 12:45:18 store to 12:45:21 IsForth's TO 12:45:27 ah, c 12:45:34 no. ans TO is a bastardizaion of STORE to 12:45:42 TO doesnt say a fucking thing 12:45:53 10 to foo is BAD 12:45:57 10 !> foo is better 12:45:57 but it looks like TO 12:46:04 it says what its doing 12:46:15 s odont say NO. it IS the isforth variation of TO 12:46:17 TO is a GAY ansi name for STORE to 12:46:31 it is 12:46:33 and? 12:46:36 who cares 12:46:46 I440r - you're putting the horse before the cart. TO came first; there was no !> that they bastardized. 12:46:50 : !> ' >body ! ; 12:47:05 cleverdra BULLSHIT 12:47:07 yours looks similar in sense of word order 12:47:21 ive been using FPC for YEARS before ans even existed 12:47:26 i ALWAYS had a STORE TO 12:47:33 oh? OK. Sorry. 12:47:40 anyway ' existed the very 1st time ;p 12:48:32 TO is a fucked up word. it makes NO sense what so ever. its just a means of simplifying the language for the lamers who cant get '!' is store and '>' is to 12:49:19 99% of ans forth is fucking all over Forth to make it easier for lame ass c scripters 12:49:33 in case you cant tell, ans pisses me off :) 12:52:13 what doesnt explain why do u have 2 deny ovious truthes like: the effect of !> and TO is the same... :/ 12:53:02 because i refuse to accept TO as a valid 'FORTH' word 12:54:05 do u know the argument scketch from monty python? ,p 12:54:19 yes :) 12:54:40 "argument is not a simple contradicton"... 13:17:41 Hey I440r :) 13:17:53 onetom: I was trying to write a little Forth in Forth :) 13:18:04 onetom - it is so! 13:18:12 Check my ugly code at robert.zizi.org/pub/forth.f if you're bored enough :P 13:18:23 done 13:19:11 --- join: Kitanin (~clark@h-209-91-66-234.gen.cadvision.com) joined #forth 13:20:14 1 ' 13:20:14 dup 13:20:14 execute 13:20:14 .s 13:20:14 [2] \1\1 13:20:40 --- quit: cleverdra ("Leaving") 13:21:04 so TILE skips EOL correctly :) yessss 13:21:18 im gonna use tile 4 the pnm experiments 13:27:18 13:27:24 if i were a window 13:27:43 i would b that size 13:28:06 so the whole world 13:28:23 could became visible 13:29:20 with understandting eyes 13:29:29 they would look through me 13:29:48 i would b happy 13:30:15 if i had shown everything (yet) 13:30:35 13:31:01 http://www.konczzsuzsa.hu/konczzsuzsa_de/kottak.html 13:31:20 Wenn ich eine Rose wäre 13:31:53 4 the curious. its a beautiful hungarian non-folk song 13:31:57 Ich bin eine Rose. 13:32:19 but it doesnt fall far from a folksong 13:32:26 Robert: ? :) 13:32:32 Hehe, just kidding. 13:33:04 and showin everybody: "Ich sprache Deutch" ;p 13:38:50 have u found TILE? 13:39:22 ftp.taygeta.com/pub/forth/compilers/native/unix/tile* 13:39:45 Ich spreche Deutsch :P 13:39:48 u have 2 delete a line from it. gcc will tell which 1 13:39:48 Uhm. 13:39:57 I'll check. 13:40:10 i really have to finish my forth. it's leet. :P 13:40:41 :) 13:40:47 What's special with it? 13:40:54 there is a mini parser written in C, but by default it looks for the dictionary entry for a real parser to execute. so you can write the parser in forth. the parser buffer is also a dictionary word that exists on the heap. 13:41:09 robert, it's pretty ordinary. except i hope to get static types in it. 13:41:19 What is that= 13:41:20 What is that? 13:41:39 and i can stack dictionaries and use them in my online game server. so each object of the game is a forth environment instance with it's dictionary built ontop of the object that it inherited. 13:41:44 what is what? 13:42:16 Static types. 13:42:55 oh. basically i would write 3 dict entries for + .. they would all be labeled "+". but one would be for ( u u -- u ) another for ( d d -- d ) and another for ( f f -- f ) 13:42:59 instead of doing + +D +F 13:43:20 it has a type stack at compile/interpret time to determine which version of + it needs. 13:43:50 of course you can build your own types too. which is good if you happen to have a pointer to a record/structure/object 13:44:17 and it will refuse to do operations on types it does not understand which fixes 99% of the stack errors out there. 13:44:38 like if you had: u f on the stack. then you did + .. it would not find a match for it and tell you. 13:44:56 you'd have to explicitly convert the f to a u. or the u to an f then do +. 13:44:59 StrongForth does this. 13:45:19 Cool. 13:45:36 Keep on working then :) 13:45:44 except i want to take it a step beyond StrongForth and do an object-oriented system with it too. (although an extremely thin and bare minimumal OO) 13:46:15 onetom: Got it to compile & work :) 13:46:27 Hehe. 13:46:27 i don't like fat stuff. although some of my friends say a type checking forth is fat. *shrug* it's just an extra stack that sits in the interpreter only so it shouldn't be too bad. the worse part is encoding the types in the dictionary. 13:46:34 is TILE good? 13:46:46 I've tried it for 5 seconds :) 13:46:49 ahaha. okay:) 13:46:59 is it designed to be a stand-alone forth or an embedded forth? 13:47:31 I think they describe it as a portable C implementation of the F83 standard. 13:47:40 ah. 13:50:15 OrngeTide: ah, welcome back! have u seen TILE? its better than any implementation ive seen ever. 13:50:42 OrngeTide: its so clear, reasonably documented and has good examples 13:51:04 OrngeTide: tho, its slow :) this is the price of all the above 13:51:50 onetom, what kind of license is on it? 13:51:52 it also has a recognizer word what is userdefinable 13:52:00 what's a recognizer word? 13:52:04 who the fuck cares? :) 13:52:17 i care. i can't touch anything that is GPL. 13:52:19 its some free license anyway 13:52:27 why? 13:52:39 your religion prohibits it? 13:52:42 because GPL is viral and will encumber my business. 13:53:07 i can run my stuff on a GPL OS and use GPL compilers and devel tools. but I cannot use GPL libraries in my software. 13:53:14 otherwise u dont have 2 touch it. its also satisfatory 2 have a look at it ;p 13:53:28 onetom, yah. pygmy is still my favorite forth. 13:53:34 tile is rather an abandonware anyway.. 13:53:38 ah. 13:54:13 i'll check it out when i get home from work then. 13:54:16 its an F83 implementation.. 13:55:19 1991 -- jeeezuz... its an abandonware isnt it, huh? :) 13:55:52 ATLAST is even older. it's public domain though which was why i attempted to modify it to fit into my product. :) 13:56:13 it'd work too except forth gave me an idea that put my architecture on it's head. 13:56:26 so ATLAST could only work with my old architecture, not my new one:( 13:58:19 well i gotta go. seeya! 13:59:00 k 13:59:01 bye 14:02:48 --- join: proteusguy (~irc@24-197-147-197.charterga.net) joined #forth 14:10:02 --- quit: I440r () 14:21:59 --- join: jamc (~dne@as3-6-8.asp.s.bonet.se) joined #forth 14:22:30 Forth-svensken :) 14:22:48 hmm :) 14:24:34 * Robert klappar jamc på huvudet. 14:25:23 * jamc parerar 14:26:42 * Kitanin wishes he had his Swedish-English dictionary handy... 14:27:07 * Robert pats jamc. 14:27:36 I'm your little dictionary :) 14:28:22 That's what I thought you'd said. I wasn't sure, though. It's rather difficult to learn a language with noöne around to practice on... 14:29:35 Where are you from? 14:30:31 Hmm... one little thing, how can you make a process sleep for a certain amount of time, without wasting 100% CPU power? 14:30:42 Canada. But I keep running into Swedish people with alarming regularity, so I figure it would be polite to learn the language. :-) 14:30:55 Robert: which platform? 14:30:55 Robert: sleep? 14:30:57 Hehe. 14:31:03 jamc: NetBSD. 14:31:16 usleep() eg 14:31:19 OK. 14:31:21 Robert: man 3 sleep 14:31:23 Thanks... 14:31:24 Hehe. 14:31:30 yeah thats it 14:31:39 Just wanted to make sure they didn't eat all my CPU power. 14:31:40 Robert: whats up w tile? 14:31:57 im playing w parsing 14:32:10 onetom: I haven't played more with irt. 14:32:11 it 14:32:13 but WORD does strange things 14:32:22 u should ;) 14:32:27 Hehe. 14:48:32 --- quit: proteusguy (Read error: 104 (Connection reset by peer)) 14:48:32 --- quit: Kitanin (Read error: 104 (Connection reset by peer)) 14:52:32 --- join: a32 (~me@213.180.182.6) joined #forth 14:58:19 ia32? ;) 14:58:59 random typing 14:59:05 ah, c 14:59:15 and what wind has blown u here? 14:59:17 altho that doesn't hurt 14:59:22 hm, the robert wind 14:59:27 loll 14:59:40 we were discussing good chans to idle in for amusement 15:00:19 robert, du bist ein winde too ;) 15:00:32 winde? 15:00:34 Was ist das? 15:00:54 its just deutch-ized version of wind :) 15:01:01 Where are you from, a32? 15:01:05 onetom: Deutsch* 15:01:18 yup 15:01:29 Robert: hard question 15:01:40 i live in switzerland atm 15:01:47 you? 15:02:07 Sweden :D 15:02:19 Dumb americans would beleive we were in the same country ;) 15:02:24 thought so somehow 15:02:28 is it a formal greeting, or what? 15:02:28 naw, they think i'm in china 15:02:28 So...where were you born? What languages do you speak? 15:02:36 u know eachother dont u? 15:02:38 canada, english and broken stuff 15:02:42 onetom: not really 15:02:46 onetom: Since 5 minutes, yes. :P 15:02:47 we met today 15:03:22 ah, c 15:03:38 how attractive can u b, robert ;) 15:03:41 where broken stuff is primarily italian 15:04:01 u tempt every lost soul 2 #forth :D 15:04:09 Hehe. 15:04:13 I just pasted my /whois :P 15:04:18 He was asking for channels. 15:04:19 So... 15:04:25 loll 15:04:32 good job 15:04:38 Since everyone has to love forth, he joined this chan. :P 15:16:46 --- join: proteusguy (~irc@24-197-147-197.charterga.net) joined #forth 15:27:56 --- quit: jamc ("/me goes to bed") 15:37:36 hahaaaa: 15:37:37 : x 65 word dup (string) $length type ; 15:37:37 x asdsaA 15:37:37 asdsa 15:38:22 Yes? 15:41:36 it parses!! and i can access the parsed string 15:41:51 in an addr count form 15:42:51 how does c malloc works compared 2 pascal getmem or new? 15:43:34 does malloc use a global OS heap? is it limited somehow? 15:44:19 Uhm... 15:44:23 how much memory is occupied beside the requested amount? 15:44:32 I think it allocated new space when needed. 15:44:36 No idea. 15:44:46 great.. 15:44:46 Don't know how the Pascal routines work. 15:45:05 then, tell me how does the C 1s do ? ;) 15:45:34 Heh, I don't really know. 15:45:39 Read the glibc sources ;) 15:45:52 can u redefine a function in C? 15:46:06 No. 15:46:15 eg, what if i want 2 redefine the meaning of malloc, eg? 15:46:33 Oh... 15:46:37 Damn. 15:46:49 im not allowed 2 say #define malloc(x) my_malloc(x) ? 15:46:50 Seems like SSH wants to fight. 15:46:53 am i 15:47:03 Uhm.. 15:49:07 Don't thi 15:49:09 nk so. 15:50:22 infact... pascal allows either 2 redefine the IDs of the system unit nor the reserved words, obviously... 15:50:44 hey, im not right! 15:51:07 ican say myunit.getmem() 15:51:14 or with myunit do begin 15:51:21 getmem() 15:51:28 system.getmem() 15:51:30 end 15:52:21 ithink im big time satisfied w pascal :) 15:59:15 Sorry, having problems here 15:59:16 Bye 16:00:45 :( bye 16:01:12 "houston, we have a problem" 16:08:15 --- quit: proteusguy (Connection timed out) 16:17:16 --- quit: a32 ("sleep is good") 16:17:56 --- join: I440r (~mark4@1Cust6.tnt3.bloomington.in.da.uu.net) joined #forth 16:32:32 --- join: Kitanin (~clark@h-209-91-66-234.gen.cadvision.com) joined #forth 16:57:53 --- join: Soap` (~flop@202-0-42-22.cable.paradise.net.nz) joined #forth 16:57:54 --- quit: Kitanin (Read error: 104 (Connection reset by peer)) 17:15:33 --- join: TheBlueWizard (TheBlueWiz@ip-216-25-205-171.vienna.va.fcc.net) joined #forth 17:15:37 hiya all 17:16:44 heya tbw 17:16:49 onetom: you there 17:16:52 OrngeTide: you there? 17:17:21 what magic are you conjuring of late TheBlueWizard? :P 17:17:21 hiya futhin 17:17:48 so far this week: I just conjured up a lot of exhaustion :( 17:18:17 heh, i did better! 17:18:43 heh 17:18:51 i conjured exhaustion, back problems, muscle exhaustion, brain damage, etc ;) 17:19:29 eh, i'm gonna leave this job as soon as i can find a different one 17:19:51 the problem with this job is you work for 8 hours and then you are nonfunctional for the rest of the day mostly :/ 17:19:55 by the way, thanks to a certain idiot-worker, I got locked out of my office room! I will have to wait til tomorrow then I can scream at that dork for changing the cipher lock w/o telling me! :) 17:20:23 slap him silly! 17:20:27 kung fu style! 17:20:55 futhin: tell me about it (re: 8 hours then get nonfunctional...actually things has gotten worse lately at work...new stupid policies) 17:21:08 actually it is a she 17:21:21 if i had a desk job, i'd daytrade at work! 17:21:48 can't daytrade :] 17:22:05 yeah you can 17:22:15 all you need is a computer that is decently fast and connects to the internet 17:22:24 and 5 minutes of free time every hour 17:23:02 * TheBlueWizard has ZERO knowledge about stock buying/selling 17:24:04 i read 20+ books on the subject but haven't actually done it yet 17:24:15 i did some paper trading tho 17:24:43 but not enough to establish any kind of record i.e am i good or am i bad? 17:25:12 i've read some amazing articles about money management & risk control 17:25:16 heh...I never had done any paper trading either :) 17:25:40 can you believe that _only_ 1 out of the 20+ books i read discussed money management and risk control fundamentals?!?!? 17:25:48 it's some rare shit 17:25:59 most people on the stock market are suckers 17:26:00 sheep 17:26:14 somehow I'm not too surprised :) 17:28:12 i've gone to day trading places on irc and talked to people 17:28:18 and so many of them jump in right away 17:28:42 i'm telling them about the books i recommend and they're like "yeah yeah yeah! is TYC a good stock to buy right now?" 17:29:10 and i'll go look at TYC, and be like "hmmm, it'll go up in the next two days and then go down" 17:29:11 :P 17:30:00 heh...beware...there are some who'd use chat room to pull a pump-n-dump on stocks...they're EVIL! 17:32:14 * TheBlueWizard trusts that futhin understands what a pump-n-dump is 17:35:30 --- quit: Soap` (Read error: 104 (Connection reset by peer)) 17:36:20 yeah i do 17:36:23 gtg for a bit 17:36:25 bbl 17:37:45 k 17:37:53 --- join: Soap` (~flop@202-0-42-22.cable.paradise.net.nz) joined #forth 17:38:09 hiya Soap` again 17:39:43 so few people understand how to check the fundamentals of the company, you can read the SEC filings the company makes online, for free 17:41:04 yeah...though you'd have to know how to make sense of the filings...and I'm sure a few filings can be deceitful...like Enron's ;) 17:42:06 tbw! 17:44:31 hiya I440r!!! 17:44:41 :) 17:44:46 so what's happenin'? 17:45:26 well the power supply in my server went bad, ordered a complte new case (cheaper than any power supplies i found) 17:45:26 just got it back up and running 17:45:51 ah...cool 17:46:32 tho' I bet it set you back several days worth of work (whatever that is...) 17:47:29 no because all my work is on the laptop hehe 17:48:45 ah...cool :))) 17:49:12 redundant data storage really helps :) 17:50:30 ya 17:51:56 me...nothing much going on....just pushing cruds at work, mostly...and I notice myself being exceptionally sleepy this week 17:53:16 hehe 17:57:27 brb gotta walk doggie :P 17:57:33 k 18:02:45 --- join: tcn (tcn@tc2-login10.megatrondata.com) joined #forth 18:03:34 hiya tcn 18:04:34 ehy 18:05:41 what's happenin'? 18:06:03 you'd think with all these people there'd be a conversation 18:06:19 hehe 18:06:55 y'know, Forth is a lot like Zen....it involves intense silence ;) 18:08:27 --- quit: Fractal (Connection timed out) 18:13:38 heh.. this is turning into the conservative channel :0 18:13:41 ;) 18:14:37 huh? why is this conservative? 18:15:23 i440r and a new guy were on here praising rush limbaugh the other day 18:15:40 well, i don't listen to rush.. but i'm conservative 18:15:48 really...heh 18:16:07 I'm somewhat conservative myself...but I'm no dittohead ;) 18:16:23 the one time I heard rush he was full of shit 18:16:57 what's this, the put cypher locks on all the doors at USDA because of 9/11? 18:18:05 funny you mention that...I work for USDA....some doors are indeed cipher locked, but not a lot 18:18:38 oh, just YOUR office :) 18:19:05 ha ha ha....there is more than just one office :) 18:19:28 so i440's gonna be here any sec, i see 18:19:44 yeah....walking his puppy 18:20:09 a few miles :) 18:21:46 I started my assembler in C 18:22:58 oh? um...was that some part of a bigger project? I am trying to remember something about some big project someone is working on (and it wasn't kc5tja for sure) 18:23:28 i440's doing one in forth, for isforth 18:23:57 it's a lot of the same problems, mainly, parsing & assembler the friggin x86 instructions 18:24:41 I know I440r is coding up his x86 assembler...written in IsForth, of course 18:25:15 yeah...sounds like you hate NASM enough to start coding your version, eh? 18:25:34 since I'm messing with C compilers, why not? 18:26:58 what do you mean by messing with C compilers? Do you mean you are modifying the C compiler(s) themselves? 18:27:07 NASM ain't _bad_ but it's kinda complicated.. guess i'd rather have it simpler.. maybe inline it in C 18:28:17 well.. write the %directives how I want them.. 18:29:01 ah...sort of like retrofit C compiler to use NASM style x86 syntax, say (or even more wild, I440r's style x86 syntax? o_O O_o O_O *_* ^_^) 18:30:15 yeah. i've got a small-c compiler for DOS sorta running in linux 18:30:41 ah...cool :) 18:30:58 and a 6502 CP/M compiler that really does work in linux! 18:31:12 really? neat! 18:31:19 produces lousy 386 code though 18:31:55 the DOS one is more optimized.. i haven't figured it all out yet :) 18:31:58 heh...the original Small-C compiler isn't terribly good at optimizing 18:32:36 --- join: Kitanin (~clark@h-209-91-66-234.gen.cadvision.com) joined #forth 18:33:20 it's still better than most forths :) 18:34:11 hiya Kitanin 18:34:19 tcn: true.... 18:34:40 back 18:34:41 hi tcn 18:35:12 so that's my big thing lately.. small C.. C programming.. 18:35:17 hey i440r 18:35:54 so how's your assembler coming? 18:37:02 hiya I440r again...is your puppy exhausted now? :) 18:37:09 tcn: I see 18:39:14 not 18:39:15 heh 18:39:24 hehe 18:39:24 that puppy is a terror :P 18:39:38 terror? as being in hyperactive? 18:40:05 ya hehe 18:40:09 we have two dogs now 18:40:16 a puppy and the siberian poodle :) 18:40:37 two? now you are busy with the dogs hehe! 18:41:23 poodle? what? 18:42:02 great big, fear enspiring vicious siberian attack poodle :) 18:42:38 pooples make excellent hunting dogs. 18:42:46 poodles even:) 18:42:49 lol 18:43:03 that's what they were originally bred for. 18:44:04 this is realy a siberian husky 18:45:50 what's the puppy? 18:48:31 anyway.. there are really only a dozen kinds of instructions on the x86 18:49:32 MOV, ALU (add/sub/etc), shift/rotate, LEA, CMP/TEST, those are the harder ones 18:51:24 usually bit 0 is the word size (8/32 bit) and bit 1 is the direction (reg <- r/m or r/m <- reg) 18:55:16 MOV, XCHG, ALU, CMP, TEST have short forms for when EAX is involved.. 18:57:09 ALU = add, or, adc, sbb, and, sub, xor 18:57:20 (CMP is the 7th "alu" instruction) 18:58:49 my book has a hexadecimal opcode table.. it should be OCTAL.. bit 0-2 across, 3-5 down, and 4 different tables for 6-7 19:00:12 heh...it'd make sense...similar situation with 6502 opcodes (though it would require oddball octal format) 19:01:22 oh wow.. I should get out my Z80 opcode table 19:02:08 it just looks all wrong in hex.. doesn't make sense.. there IS sense to it 19:02:10 Z80....I think it also would call for oddball octal...lemme look it up :) 19:02:22 it's not odd at all.. 19:02:31 here's an x86 page.. http://www.geocities.com/SiliconValley/Heights/7052/opcode.txt 19:02:34 * TheBlueWizard has systematically recode Z80 to make it look logical 19:09:19 here is the excerpt from the file containing my recoding: 19:09:20 (8 0rrr) ADD A, 19:09:31 (8 1rrr) ADC A, 19:09:43 (9 0rrr) SUB 19:09:43 (9 1rrr) SBC A, 19:09:51 (A 0rrr) AND 19:09:51 (A 1rrr) XOR 19:09:58 (B 0rrr) OR 19:09:58 (B 1rrr) CP 19:10:32 where rrr: 0 1 2 3 4 5 6 7 19:10:45 maps to: 19:10:56 R: B C D E H L (HL) A 19:11:05 a few more: 19:11:33 CB (01bbbrrr) BIT , 19:11:33 CB (10bbbrrr) RES , 19:11:33 CB (11bbbrrr) SET , 19:11:49 there are a lot more, of course 19:16:54 you're right tho'...Z80 uses regular octal format 19:19:10 and it has a common ancestor with the 80x86.. the 8080 19:19:35 of course the regs all changed 19:19:56 yeah...Z80 is actually a more logical extension of 8080 than 80x86 is.... 19:20:47 and Z80 syntax/wordings certainly is much better than Intel's style :) 19:21:00 for 8080, that is 19:21:19 never used one 19:21:38 hmm.. that 6502 compiler does 8080 too.. 19:22:04 it translated easily to the modern x86 19:24:25 i'm doing that octal table right now.. 19:24:40 so i'm sorta not here :) 19:26:15 hehe 19:26:36 i can't believe i never did this before 19:26:53 really? 19:28:14 tcn let me see that table when your finished 19:28:44 that above url is exactly what i have been searching for for the past 4 weeks 19:28:53 heh.. i'd have to scan it at work 19:29:10 you have excel? 19:29:13 ur doing it on paper ? 19:29:16 yes i have excel 19:29:26 maybe i'll type it up in there, then 19:29:31 :) 19:29:41 this paper copy is a rough draft 19:31:08 when your finished :) 19:31:10 nho rush 19:31:12 hehe 19:33:22 gotta go...bye all 19:33:39 see ya 19:33:46 im bye dood 19:34:49 bye tcn and I440r 19:34:54 --- part: TheBlueWizard left #forth 19:34:59 you too i440? 19:35:09 no reason to stay on 19:35:16 nope 19:35:20 im not leaving :) 19:35:27 i was just saying bye to tbw :) 19:35:44 i c 19:36:23 this opcode table needs proofreading 19:36:29 ya 19:36:42 i already found some BIG errors in the nasm opcode documentation 19:36:55 heh 19:36:59 like multiple instructions documented as having identical encodings 19:37:19 this table of binary encodings & timings is screwed up 19:37:32 but sorta useful for seeing the bit patterns 19:38:36 the big chart w/ 16 rows & column is right at least, but it should have been 4 8x8 charts 19:39:10 heh 19:39:35 futhin you there ? 19:42:57 tcn how did you find that page ? 19:43:41 google 19:43:55 "8086 opcode chart octal" 19:43:58 ive been searching google for 4 weeks for something like that 19:44:04 no, opcode table" 19:44:07 aha - i didnt specify octal in my search 19:45:43 heh.. the x86 has no octal 666 opcode 19:45:48 lol 19:46:23 i guess that could be a problem on the old 36bit machines w/ 9-bit bytes 19:47:00 lol 19:52:03 this is sorta like when companies assign part #'s.. eventually they want something more systematic but they can't conflict with any old ones :) 19:52:12 --- quit: futhin (Read error: 110 (Connection timed out)) 19:52:20 so they fill them in wherever they can and/or make really long ones :) 19:52:39 ya heh 19:53:55 i know one that used only 5-digit numbers.. older ones tell something about diameter & type of part.. new ones are just random :) 19:55:58 --- join: futhin (~thin@h24-64-175-61.cg.shawcable.net) joined #forth 19:57:18 i440r: yeah? i'm here now ? 19:58:36 did you show my snazzy code to chuck ??? :) 19:58:42 nope 19:58:46 why? 19:59:13 lol just wondered what he said about it :) 19:59:47 i440r: i think it would be nice if you write up a little explanation of it put it up on your webpage, and then email chuck & jeff fox with the url (or the content) 20:00:04 i'm curious what chuck moore would say about it too 20:00:06 it's been done before 20:00:27 i know but ive never seen it the way i did it 20:00:49 i SAID it was a variation on a known theme 20:01:10 to put the instruction first instead of last? 20:01:37 MOV a, b instead of a, b MOV 20:01:37 no the way i did it 20:01:56 ok 20:01:57 : a; ?a; @ r> ?a; ! >r ; 20:01:57 that sort of thing 20:02:10 yes 20:02:32 the above word is slightly wrong, it wont work that way but the one in my assembler so far DOES work 20:03:52 oh yeah, so it does the general stuff then returns to something specific to that instruction.. 20:04:32 guess I won't be doing that in my C assembler 20:04:40 it messes with the return stack 20:05:11 every instruction mneumonic calls a; which swaps the return address with what ever is in the variable ?a; 20:05:38 when a; returns it returns to the mneumonic word of the PREVIOUS instruction, not the current one 20:05:48 end-code finishes the last instruction 20:08:32 what's in ?a; ? 20:08:51 tcn: not the assembler stuff, nobody cares about that.. but the a; and ?a; stuff, that's what i suggested i440r tell chuck about 20:09:00 remove a; from the mneumonics and the assembloer would accept 5 # ax mov 20:09:08 etcv 20:09:25 ic 20:09:52 i440r: don't ramble on about the assembler. chuck will see ALL possible ramifications of a; instantly, like a universe of all possibilities all parallel worlds, chuck will see it 20:09:57 could use it anywhere 20:09:57 width 100 20:09:57 height 200 20:10:26 the words width and height call a; and then store the value that will be on the stack when they actually DO execute 20:10:33 unless he already knows about the trick? is your trick original ? 20:10:49 i dislike the name a; but i sort of borrowed it from another assembler 20:10:53 could think of a better name 20:10:59 i440r: yes, please do 20:11:08 let's brainstorm one right now 20:11:15 what would be a good name? 20:11:29 defer> ? 20:11:34 delay, putoff, procrastinate, .. 20:11:35 :P 20:11:44 get 20:11:48 um.. 20:12:03 : width defer> !> _width_ ; 20:12:09 does_later> 20:12:09 hehe 20:13:02 call it later> ? 20:13:02 defer> 20:13:17 later> sounds good 20:13:24 i'm checking the thesaurus 20:13:27 i prefer defer> heh 20:13:50 hrm 20:14:03 doesn't defer> have the potential to confuse some people ? 20:14:17 fine 20:14:18 defer> 20:15:53 next> 20:15:58 after> 20:16:01 no, not next> heh :P 20:16:05 i440r: what's the variable name? 20:16:16 following> 20:17:31 i440r: ?defer seems like a poor variable name, the question mark in front should be reserved for words that test the stack for something 20:17:51 no you need the pointy bit 20:17:53 defer> 20:17:54 heh 20:18:04 and the variable would be headerless 20:18:15 how about 20:18:17 defer. 20:18:24 is the period used for anything? 20:18:31 besides printing 20:18:33 hey.. want to rename the 80x86 instructions to be like Z80 or 6502 instruction? LAX, SAX, LBX, SBX, ADB A.. 20:18:34 but that's in front 20:18:36 its DOT 20:18:38 .blahblah = print 20:18:45 defer. is not a good word 20:18:47 blahblah. = variable 20:18:48 :P 20:18:52 defer> 20:18:59 because it POINTS to whats being defered :) 20:19:10 i440r: that's not the variable tho? 20:19:16 i440r: okay, what's the code for the whole thing? 20:19:24 give me example code or whatever 20:19:47 ok 20:19:58 0 var defered 20:20:29 hang on heh 20:20:50 0 var defered 20:21:11 : defer> defered r> !> defered dup ?: >r drop ; 20:21:22 ?: is an 'if else then' replacement 20:21:44 ?: if-part else-part more-shit-here 20:21:59 uh.. could you just code it in common forth rather than isforth? 20:22:07 or in chuck forth 20:22:31 or nevermind 20:22:31 : defer> defered r> !> defered ?dup if >r then ; 20:22:36 doesn't really matter 20:22:45 0 var defered would be 0 value defered 20:22:59 if you want variables it would be 20:22:59 variable defered 20:23:15 0 variable defered 20:23:15 : defer> defered @ r> defered ! ?dup if >r then ; 20:23:27 no 0 ? 20:23:30 in front of variable? 20:23:40 set to 0 by variable automatically? 20:24:18 variable defered defered off 20:24:40 any sequence of events using defered> would have to clear defered 20:24:43 for instance 20:24:51 : code defered off ; 20:24:58 : mov defer> blah blah ; 20:25:05 : xor defer> blah blah ; 20:25:14 end-code defer> ; 20:25:57 : width defer> !> _width_ ; 20:25:57 : height defer> !> _height_ ; 20:25:57 defer> 20:26:10 WIDTH 100 HEIGHT 100 20:26:42 no you dont run defer> outside a definition 20:26:48 defered off 20:26:48 width 100 20:26:57 height 200 20:27:03 end-of-all-that-crap 20:27:16 : end-of-all-that-crap defer> ; 20:27:30 an empty defered> word 20:29:10 onetoms file format example had a P7 at the top of all image files 20:29:10 07 20:29:10 width xxx 20:29:10 height yyy 20:29:18 foo zzz 20:29:18 blah aaa 20:29:24 end-of-header 20:29:24 or something like that 20:29:39 P7 would do defered off or 0 defered ! 20:29:47 yeah, ENDHDR 20:30:01 and end-of-header would do : endhdr defer> ; 20:30:12 is OFF a common forth word? 20:30:19 yes 20:30:24 its a zero store 20:30:31 not sure if chuck would use it tho 20:30:38 code off 20:30:45 pop eax 20:30:50 mov dword [eax], 0 20:30:50 end-code 20:30:52 or something like that 20:32:07 tcn that all make sense to you ? 20:32:24 wasn't paying attention 20:33:01 ever wanted to "parse" syntax like: WIDTH 100 HEIGHT 200 ? 20:33:01 there's a way to parse it the forth way. i440r has developed a word called DEFER> 20:33:01 variable defered 20:33:01 : defer> defered @ r> defered ! ?dup if >r then ; 20:33:01 now we can have 20:33:01 defered off 20:33:03 width 100 20:33:05 height 200 20:33:07 ( etc, all the other stuff that is in this format ) 20:33:09 endofit 20:33:11 : width defer> !> _width_ ; 20:33:13 : height defer> !> _height_ ; 20:33:15 ( etc ) 20:33:17 : endofit defer> ; 20:33:19 the end defer> is needed to store height to _height_ 20:33:38 fucking typical heh 20:33:47 what? heh 20:34:08 ????? 20:34:27 is the plan that i write up about it for you? :P 20:34:32 and then email it to chuck & jeff? :P 20:34:33 would be bnetter to have a word that called defered off 20:34:33 yes 20:34:39 needed to store the last item 20:35:17 want me to say anything else? add anything? etc 20:35:42 call you Mark Manning IV instead of i440r? 20:35:45 etc 20:35:57 lol 20:35:57 you can do so :) 20:36:08 im sure they wont be THAT impressed heh 20:36:14 heh 20:36:14 its what one expects of forth coders 20:39:42 fine, sent it to both 20:40:01 dammit, i forgot to say "please tell me what you think of it" 20:40:11 i know they'll never respond to me 20:40:12 heh 20:40:51 lol 20:41:27 man, we should get a bunch of forth coders together and go rough 'em up! 20:41:28 :P 20:42:12 cuz they seem despirited or whatever 20:42:32 i want to talk to them in person 20:42:54 it's easier to make sure there's _actually_ a conversation 20:42:55 jeez 20:43:15 hm. finished my table. 20:43:22 lol 20:43:23 you cant blame them tho 20:43:24 last time jeff fox was online i was asking him to talk with me about the business aspects of forth 20:43:31 and he didn't respond :/ 20:44:01 that's where my top blows off.. i'm 21 years old, young as hell, and full of piss and vinegar, raring to go 20:44:11 and no 50 year olds are gonna slow me down :P 20:44:26 and they don't have the right to demoralize me or not be energetic around me :P 20:44:34 hehe 21:02:59 goodnight 21:02:59 --- quit: Kitanin (Read error: 104 (Connection reset by peer)) 21:03:18 good night.. 21:03:26 question 21:03:41 i have a word that produces a string 21:03:53 and the string is a name, and there are different names that are going to appear 21:03:59 i want to record the name 21:04:10 and how many times the name appears 21:05:43 i440r: got any ideas? 21:05:48 yeah..? you need look it up in a list, add it if it's not there, and increase the count..? 21:05:48 should i create a table or something 21:05:56 yeah 21:06:04 i need to add it to a list if it's not already there 21:06:05 etc 21:06:08 the list needs to be growable 21:06:16 so i guess i'll use a variable or something 21:06:30 how many words..? 21:06:35 ? 21:06:37 how many names? 21:06:39 yeah 21:06:40 do not know 21:06:43 many 21:06:46 min/max? 21:06:56 100 max 21:07:00 or 50 max 21:07:09 then just use a linked list, no need for hash tables :) 21:07:17 can't i make a data structure that grows? 21:07:27 instead of allocating a fixed amount of memory? :P 21:07:32 hey? this is forth? ;P 21:07:38 heh 21:07:40 just pile it on the heap.. i mean "here" 21:07:51 what's a linked list look like in forth with this names stuff 21:07:54 i know what a linked list is 21:08:01 but not sure about how to implement it 21:08:26 VARIABLE LIST HERE LIST ! 0 , 21:08:28 ? 21:08:28 futhin no you cant :P 21:08:37 i440r: heh, i know :/ 21:08:55 unless i hax0r the forth 21:09:02 and put the memory at the top of the memory thingie 21:09:06 and grow it down or whatever ;P 21:09:09 : SEARCH LIST @ BEGIN DUP @ WHILE REPEAT DROP ; 21:10:12 i'm going to have a string returned by parse 21:10:16 so that's probably two values on the stack 21:10:21 the address and the count 21:10:23 right ? 21:10:36 : ADD HERE 0 , ( count) LIST @ , S, ( here) LIST ! ; 21:10:44 yup 21:10:47 tcn only lamers code in all upper case :P 21:10:59 is SEARCH valid? 21:11:07 i440r: uppercase code in irc is nice 21:11:15 helps distinguish it from the rest of the noise 21:11:21 it can be 21:11:40 : COUNT ( string) SEARCH IF 1 ..count.. +! ELSE ADD THEN ; 21:11:53 your noise, i440 :) 21:12:04 lol 21:12:12 no. im just loud :) 21:12:17 ..count.. = get location of count for that name.. 21:12:35 : storenick search add count ; 21:12:36 :P 21:12:37 heh 21:12:47 it's not a bad language for a litle problem like this 21:12:52 i use count to fetch from successive addresses 21:12:52 begin 21:13:03 count ( --- n ) 21:13:12 dup 21:13:12 while 21:13:20 dosomething with n 21:13:20 repeat 21:13:26 drop 21:13:30 ( a --- ) 21:13:41 and the above stack comment should have been a+1 n 21:17:15 tcn: how many years have you known forth? 21:17:31 no more than 4 21:17:46 any good: 1 21:19:28 tcn: have you read the Forth's Dilemma article that's in the topic? 21:19:54 --- join: Fractal (feud@h24-77-171-228.ok.shawcable.net) joined #forth 21:20:07 howdy fractal 21:20:08 yeah 21:20:44 hi fractal 21:21:28 Hello, folks. 21:21:57 A day for firm decisions!!!!! Or is it? 21:22:16 it's midnight here 21:22:33 lol 21:23:32 So I just bought a soundblaster Live! card. 21:23:37 It's pretty fucking sweet. 21:23:53 The linux mixer is kind of sketchy with it though. :( 21:24:19 fix it :) 21:24:43 But after much fooling, I got the system configured quite well. 21:24:55 I might have to. :) 21:25:47 I'm going to go fool with as10k1, which is the built in effects processor on the card. Sounds like it'll be pretty neat. 21:25:47 you need a different mixer program, or is the kernel mixer interface too lame to handle all the possibilities? 21:26:38 tcn : Yeah, the kernel mixer interface is screwy. The labels are all wrong. Also, the kernel support is fucked up. I've should have 6 DMA channels, but only 2 are supported. 21:27:00 I should get /dev/dsp[0-5] 21:27:16 Actually /dev/dsp0 is actually /dev/dsp, go figure. 21:27:58 supposed to be 21:28:17 heh.. i don't think they planned on more than 2 21:28:17 well /dev/dsp is a link to /dev/dsp0 21:28:31 I440r : Not on my box. 21:29:12 does the x86 have 6 DMA channels to spare? 21:29:39 i thought it had 8, with at least 2 taken 21:30:05 Hm... Maybe it doesn't have 6 DMA channels... 21:31:04 Thought it did for some reason. 21:31:18 Oh well, it's still a pretty neat piece of silicon. 21:31:53 so you can record 6 tracks at a time? 21:33:02 No, I wish. I think I can record 2 at once, with mic in and line in. The others would have to be for output only. 21:33:27 --- quit: Soap` () 21:39:13 heh.. i said goodnight half an hour ago 21:39:15 see ya 21:39:20 --- quit: tcn ("Leaving") 21:40:36 lol 21:40:45 fine. be like that... leave why dont you :P 21:42:52 Heh. 21:43:07 Got a sound card I440r? 21:47:01 yes 21:47:01 a crappy one hehe 21:47:01 sonic vibes 21:48:13 Oh... 21:53:18 got a nice tv tuner video card tho - but it dont work in linux 21:55:22 Harsh... 21:55:41 hehe 21:56:16 i've got the best sound card ever.. it's ATI ;P 21:56:36 ATI sound card 21:56:43 not sure if any such thing exist heh 21:56:55 Heh. Me neither. 22:01:20 if a string contains a name, how do i test for that name heh 22:01:27 * futhin is too lazy to check online or whatever 22:02:17 ( string on stack ) s" name" parse 22:02:18 ? 22:02:21 bah 22:14:56 no, that would be WORD 22:15:14 dpans sucks 22:15:15 heh 22:16:04 i dont like s" 22:17:48 --- quit: sif (Read error: 110 (Connection timed out)) 22:22:41 i440r: then what do you use? 22:22:59 how do i find a string within a string ??? 22:23:07 i dont use s" 22:23:19 in isforth? 22:23:27 isforth doesnt have any string words yet 22:23:35 other than string compilation 22:23:42 ," ,' ." 22:23:48 and s, 22:23:56 but i also dislike s, 22:23:59 wtf is with dpans?!?!?! why are the descriptions of the words so goddamn gay and unclear ?? 22:24:18 what's s, ? 22:24:36 because they want c coders to be able to read forth without needing to LEARN it 22:24:46 it commas in a string 22:24:57 look in the source file :P 22:25:43 i440r: is there already a forth word that finds a string within a string for me ? 22:25:55 or do i have to do C@ and check it against a string ? 22:29:34 : stringtest ( string to test -- true? ) over c@ 'A' = if over 1+ c@ 'c' = if over 1+ 1+ c@ 't' then then then 22:29:35 lol 22:29:50 i440r: that is abomination code! 22:31:02 i wouldnt do it that way 22:31:13 i would do 22:31:31 count 'A' = if count 'c' = of cout 't' = if blah then then then :) 22:31:31 heh 22:31:51 COMPARE 22:31:56 that's the word i should use 22:32:06 cause i have two strings to compare dammit 22:32:11 thanks for the help! :P 22:32:14 heheh 22:32:53 i440r: are you there? or are you distracted? 22:33:55 heh 22:33:58 ehh, the answer is obvious :P 22:34:17 i sure wouldnt do a series of character literal compares within a series of if statements heh 22:34:28 isn't count 'A' = if count 'c' = if etc.. stupid if i have COMPARE ? 22:35:30 yes :) 22:35:46 its stupid even if you DONT have it 22:35:46 heh 22:35:50 well couldn't you have suggested compare in the first place? ;P heh 22:35:53 oh 22:35:56 what would you do instead? 22:36:17 i use comp 22:36:35 which is less verbose than compare 22:36:51 might as well call it 22:37:05 should i be using SEARCH and COMPARE? 22:37:11 SEARCH is probably bloated ??? 22:37:19 compare-string-one-with-string-two-given-address-of-string-one-and-address-of-string-two 22:37:20 fucking ans LOVES to be verbose 22:37:24 yeah 22:37:26 it's like 22:37:39 ugh 22:37:41 SEARCH IF 2DROP THEN 22:37:51 cause i don't need the 2 other parameters search gives me! 22:37:52 no 22:37:52 search isnt a word 22:37:52 jeez 22:38:02 FIND is a word that searches the dictionary 22:38:03 yes it is 22:38:08 but SEARCH is NOT a word 22:38:11 SEARCH is a ANS word 22:38:14 yes it is a word 22:38:32 --- join: proteusguy (~proteusgu@24-197-147-197.charterga.net) joined #forth 22:38:39 17.6.1.2191 SEARCH 22:38:39 STRING 22:38:39 ( c-addr1 u1 c-addr2 u2 -- c-addr3 u3 flag ) 22:38:44 heh 22:41:32 weirdh 22:41:42 search isn't working in gforth? :/ 22:42:52 grrr 22:44:39 --- join: Kitanin (~clark@h-209-91-66-234.gen.cadvision.com) joined #forth 22:45:20 good evening kitanin 22:46:28 kitanin: how do i find a string within a string? :) 22:46:48 SEARCH isn't working in gforth for some reason.. 22:50:48 i'm gonna do it without SEARCH 22:50:52 i'm gonna use COMPARE 23:04:02 --- quit: I440r ("Reality Strikes Again") 23:04:46 i'm writing a irc log parser 23:04:49 in forth 23:05:01 it doesn't do much right now 23:05:17 it just counts how many quit messages there are, how many /me messages there are, etc 23:06:29 --- join: sbk_ (~kbs@dsl-65-184-98-221.telocity.com) joined #forth 23:06:39 hi sbk_ :) 23:06:47 hi futhin 23:06:47 --- quit: proteusguy (Read error: 110 (Connection timed out)) 23:06:54 --- join: proteusguy (~proteusgu@24-197-147-197.charterga.net) joined #forth 23:11:49 sbk_: are you new to this chan? how long have you known forth? :) 23:12:38 hi futhin: yep, new to the channel. I'm curious about forth, but haven't used it for real 23:14:05 I'm idly toying with creating an interactive environment to play with my old pc, and forth seemed like a good bet 23:17:15 what's speed is your old pc? 23:17:40 * sbk_ boots to find out 23:17:47 eh 23:17:52 is it a 386 or 486 or pentium 23:17:55 that's what i meant ;P 23:18:11 since you said it's "old" 23:18:26 my comp is a p133 with 32 megs of ram heh :D 23:18:33 486/66mhz 23:19:11 it has (surprisingly I suppose) a scsi card and ethernet module 23:19:56 anyway... fun toy to play with 23:20:08 That's nothing, I've got a computer with a 7 inch monochrome monitor and a 7 Mhz clock speed, with a SCSI bus in it. 23:20:18 (Mac SE) 23:20:23 ah, no kidding. 23:20:43 i don't know much about macs 23:20:46 all computers are good toys! :D 23:20:57 Hell, macs were (debatably still are) better than PCs in every respect. 23:21:39 no doubt. I rather hate the x86 instruction set now that I'm learning more about it 23:21:55 there is probably _no_ computer out there that i wouldn't mind playing with except maybe the really big ones that take up more rooms than i have in my house :P 23:22:01 SCSI is a good example. Mac switched to the superior standard almost 20 years ago. The PC world still has yet to do it on a large scale. 23:22:22 sbk_ : Well you won't like mac assembly. It's whack. 23:22:33 then again, looking more and more like embedded systems are gonna look like mini-pc boxes, so figured may as well bite the bullet 23:22:41 On the other hand, macs have the best debugger on the planet. Bar none. 23:22:45 Macsbug. 23:23:07 fractal: ah, zat so? I'd have thought the motorola instruction set would be pretty comfortable to use 23:23:21 fractal: when i had my very first exposure to macs, i looked for the console or some way to get into the internals.. i was pissed when i couldn't find such a thing heh 23:24:02 mips asm > motorola asm > x86 asm or something like that 23:24:08 It's fairly comfortable, I suppose, except the crackhead memory addressing methods. There's hundreds of them. Also, them being big endian can be confusing. 23:25:01 futhin : Yeah, until recently apple has been very anti-console, but there has always been plenty of information on programming macs. 23:25:16 Inside Macintosh is a great book, even if the examples are in PASCAL. 23:25:57 Interestingly, forth has always been rather popular on macs. 23:26:17 heh, really? 23:26:59 Yes. There are many forth systems for macs available, and unlike PC forth programmers, people actually write applications in them. ;) 23:27:44 fractal: console isn't really necessary, but something that lets me get into the gritty inner world 23:28:23 as i understand, for awhile, there was no way to get access to the gritty inner world with macs, and then some programs became available for that 23:28:26 Oh, I think console is completely necessary. Any graphical scripting (applescript for example) is far too ambiguous. 23:28:38 huh?? 23:28:55 what does graphical scripting have to do with the gritty inner world? heh 23:29:03 Applescript was apple's attempt at making a graphical scripting language. IMO, it was horrible. 23:30:01 A lot. They tried to deal with the programmers who kept clamouring for a standard, consistent text based scripting system (a console, essentially), and they gave them applescript, which isn't what they wanted, which is why few hardcore hackers use macs nowdays. 23:30:33 Supposedly OS X will change all that, but I still run linux on my macs... 23:32:02 no no no 23:32:34 you are confusing "gritty inner world" with "text based interface" 23:32:43 :P 23:32:51 it doesn't always follow 23:33:00 um 23:33:17 Well, if you're talking about talking to the physical hardware directly, mac has always been better at that than the PC, so it's not an issue. 23:33:25 question: how should i name my variable words in forth ?? 23:33:40 i want to name my variable words so that it's obvious they are variables 23:34:06 what's the forth style standard on that issue? 23:34:47 Good question. Why don't you just use Vvarname or something? 23:35:07 You could even do uVvarname to indicated unsigned vars. 23:35:15 Hungarian Notation for Forth... 23:35:25 It's an idea. 23:35:36 unsigned vars.. 23:36:04 Yeah, like your unsigned integers, etc. 23:36:07 ehhh.. i wonder why nobody has bothered to name variables and constants so that its obvious what they are 23:36:08 heh 23:36:39 Actually, there was a movement for that in the C world ("Hungarian Notation"), but it never really caught on. 23:36:43 Dunno about forth. 23:36:51 --- quit: sbk_ ("bye") 23:40:47 well i got to go to bed 23:40:48 good night 23:42:18 you know, it might not be good forth programming to have the variables obviously variables 23:42:29 because if they are just plain names 23:42:34 it can look more like english 23:42:35 or whatever 23:59:59 --- log: ended forth/02.08.22