00:00:00 --- log: started forth/04.10.23 00:30:19 --- join: qFox (C00K13S@82-169-140-229-mx.xdsl.tiscali.nl) joined #forth 00:35:18 Hi qFox 01:30:32 hi 01:30:36 :p 01:32:56 how are you doing qFox :) 04:59:41 --- quit: Fractal (Read error: 110 (Connection timed out)) 05:05:18 --- join: wincent (~wincent@void-109.pmnet.uni-oldenburg.de) joined #forth 05:06:56 --- join: tathi (~josh@pcp02123722pcs.milfrd01.pa.comcast.net) joined #forth 05:59:00 --- join: crc (crc@39-pool1.ras11.nynyc-t.alerondial.net) joined #forth 06:29:32 --- quit: crc ("Time for bed... Goodnight!") 06:33:35 --- quit: Raystm2 ("User pushed the X - because it's Xtra, baby") 06:37:49 --- join: crc (crc@39-pool1.ras11.nynyc-t.alerondial.net) joined #forth 07:40:54 --- join: ows (~ows@a81-84-114-35.netcabo.pt) joined #forth 07:41:59 --- join: Herkamire (~jason@h000094d30ba2.ne.client2.attbi.com) joined #forth 07:41:59 --- mode: ChanServ set +o Herkamire 07:45:24 --- quit: crc ("Time for bed... Goodnight!") 07:50:09 --- join: crc (crc@139-pool1.ras11.nynyc-t.alerondial.net) joined #forth 08:45:29 --- quit: ez4 (Read error: 54 (Connection reset by peer)) 09:02:31 --- join: Serg[GPRS]_ (~z@193.201.231.126) joined #forth 09:02:46 hi ! 09:04:11 --- join: Sonarman (~matt@adsl-64-171-255-50.dsl.snfc21.pacbell.net) joined #forth 09:05:15 --- join: fudgez (~chatzilla@ipuser149.megapipe.net) joined #forth 09:05:31 hi, which win32 forth runs best under Emacs as an inferrior process? 09:09:00 google: emacs +forth favors gforth 09:12:12 emacs? 09:12:13 :\ 09:13:25 * Serg[GPRS]_ recalls Lisp w/ horror 09:14:16 any meaning is buried under tons of parens 09:14:51 Serg: nothing wrong with well-written Lisp. 09:16:49 syntax wise, lisp and forth are closer than you think :-) 09:17:13 reverse polish vs. cambridge polish; but all still polish, Oy! 09:19:39 then i tryed some Lisp tutor, i did vomit with parens and see them in nightmares :) 09:20:31 maybe i need to try Prolog ;) 09:20:43 Serg[GPRS]_: Lisp shows you the expected arguments for a word, while in forth you would have to KNOW how many it consumes. 09:21:45 oof, i still hav clisp-2.28 installed ! 09:23:35 remember to remove it with a stick, don't use your hands 09:23:44 just kidding :-D 09:35:14 how come gforth and win32forth don't recognize 0SP? 09:36:20 it isn't a "standard" word 09:36:26 in gforth it's called clearstack 09:36:40 you can get the same effect by typing aslfjhaslfjha :-) 09:37:43 Why does gforth clear the stack on errors? 09:38:09 CLS == PAGE; except CLS is something I guessed and worked, and PAGE is standard 09:39:39 hey, regarding the ! word, how does it work? 09:40:19 how does forth manage memory to begin with? I know the stack is just a preallocated pool of memory and it is very simple to manage (all GC is just pointer inc/dec) 09:41:10 but the ! (STORE) word stores something in a "cell"; is that cell just an index to the stack, or does forth have another, linear, view of memory? 09:41:26 crc: dunno. ANS says to. I think it's really annoying 09:41:57 I can see there is stack indexing somewhere (that is how PICK works) 09:41:58 I think it's annoying too :-) 09:42:02 err...wait a sec. 09:42:15 I think ANS says to 09:42:26 fudgez: in simple DOS forths i used to.... 09:42:31 ! and @ usually access what I call the heap. 09:42:37 * crc could care less about ANS 09:42:47 ! sees mem from 0 (start of segment) and so on 09:42:49 the big blob of memory that HERE points to, and ALLOT and allocates, and so on. 09:42:54 the stack is usually separate from that. 09:43:04 so w/ ! u can overwrite threaded code and ruin it 09:43:08 fudgez: forth has no GC 09:43:17 fudgez: forth generally runs in one chunk of memory 09:43:18 or smartly hack :) 09:43:20 sometimes there is a word sp@ or something that will give you the address of the stack so that you can @ and ! to it. 09:43:29 but often the stack isn't really accessible by @ and !. 09:43:32 (I think) 09:43:38 fudgez: sometimes it's broken up, but there isn't always a whole lot of memory management 09:44:01 fudgez: newbie ? read Leo broudie 'Starting Forth' and 'Thinking Forth' 09:44:06 fudgez: most things are just appended to the "heap". you can fetch and store from anywhere in there. free for all sorta 09:44:31 fudgez: some forths implement dynamic memory management via ALLOCATE and FREE 09:45:04 fudgez: Forth dictionary is like stack itself - u can add words/data to the top only, and so remove 09:45:08 Serg[GPRS]_: I have Starting Forth, but for the life of me can't get past the cartoons; I am used to reading dry specs and groking them. Fun reading is martian to me. 09:45:40 the stack usually lives within a pre-allocated chunk of memory. If you over (or under) flow that chuck of memory with either stack, it's an error, (some forths detect this, but many just crash) 09:45:50 Herkamire: so this is an "implementation" dependent thing. 09:46:09 fudgez: many things are implementation dependant. what are you refering to? 09:46:23 --- join: Baughn (~svein@cloud.brage.info) joined #forth 09:46:26 fudgez: @ and ! simply fetch from and store from memory (given an address). 09:46:36 the address is NOT an index into the stack. 09:47:36 the stack may or may not be accessible with @ and ! (that is implementation dependent). 09:48:04 cartoons? 09:48:06 eh, what? 09:48:15 qFox: cartoons in Leo Brodie's books. 09:48:20 he likes silly illustrations 09:48:21 ehr, okay... 09:48:28 tathi: that is what I was asking. I thought forth preallocated all the memory it things it would need, held it as a "stack". I was asking if the memory load/store operations were just TO the allocated stack, or if programs could still see the heap (unallocted memory) 09:48:52 fudgez: ah, now I see. 09:48:52 sounds like that book is missing a few ;) 09:49:03 fudgez: you're right, that is implementation dependent. 09:49:10 fudgez: stack is tiny ! 09:49:19 err, hmm. 09:49:32 guess he means rel>abs abs>rel 09:49:39 Serg[GPRS]_: stack size is implementation dependent :-) 09:49:39 fudgez: on some hardware Forth CPU's, as shallow as 5 words ;)) 09:49:39 whether that mem is accessible 09:49:45 or not? 09:49:48 HERE returns the end of the allocated memory. 09:50:09 Serg[GPRS]_: well that is a surprise 09:50:14 @ and ! will work on memory past that area (assuming the forth has preallocated it or whatever). 09:50:19 fudgez: doesn't really work that way. the stack is just a pile of data which is used as operands to words. made up of "cells" which are generally the native integer size for the processor (eg 32-bits) 09:50:48 crc: i meant, not as huge as entire dictionary 09:50:55 :-) 09:51:10 Herkamire: so aside from integer words, how do other other words access their operands? I thought in forth all parameters are passed through the stack. 09:51:13 fudgez: the heap is a bug lump of memory you get to work with directly. HERE points to the middle of the heap somewhere. everything before HERE is allocated, and everything after is not yet. 09:51:42 fudgez: those 32-bits can be any type you like. usually pointers or integers though. 09:51:58 are there any handy information on forth's view of memory and its management? even implementation dependent. 09:52:00 to pass data larger that 32-bits you usually stick it in the heap somewhere, and pass a pointer on the stack 09:52:06 --- quit: wincent (Remote closed the connection) 09:52:49 fudgez: I don't know. there really isn't much to it. there's the parameter stack, the return stack, and the heap 09:53:00 fudgez: also u can ALLOC some chunks and use them as extra stacks of arbitrary things , even matrices 09:53:01 fudgez: some forths have other sections too. 09:53:35 what is the most hackable forth out there? something with documentation and the features you're talking about here :-) 09:53:43 you can append the heap with ALLOT and , 09:54:02 fudgez: dunno, most forths are extremely hackable 09:54:10 --- quit: crc ("Time for bed... Goodnight!") 09:54:11 stacks are nice. i like stacks. 09:54:18 fudgez: i use RUssian ones ;) 09:54:29 if you want a hackable forth, search for something fully threaded 09:54:34 fudgez: what OS/architecture are you using? 09:54:48 Herkamire: win32 09:54:57 generally the smaller the forth, the more hackable I would think 09:55:28 Herkamire: i agree ;)) 09:55:38 I hate being the heretic, but i like having local variables. Not really being familiar with Forth, is there some simple way to emulate those? 09:55:56 * Serg[GPRS]_ hacks DOS 16-bit Forth ;)) 09:56:03 Baughn: I think there are a couple of implementations of local variables out there. 09:56:30 I don't have a URL, I'm afraid, so you'd have to search. 09:56:51 local variables, ones that can only be called from within the function that spwawned then? 09:56:52 Baughn: if u need local vars - u need frag your words 09:57:00 tathi: I could write the primitives myself, actually, but does Forth generally have compiler macros? 09:57:24 ehm. i think you're thinking all the wrong ways with forth... 09:57:29 or is it just me? 09:57:37 Baughn: i wrote entire game in ONE-LINE words, let alone any local vars 09:57:45 forth cant be compared to C for instance... 09:57:47 Baughn: http://www.public.iastate.edu/~forth/gforth_30.html 09:57:54 that might be helpful... 09:58:02 Probably. I'm approaching Forth from the viewpoint of "what does it lack that Lisp doesn't", which is unlikely to work very well. 09:58:23 tathi: Ooh, thanks. 09:58:39 Baughn: google for 'thinkful programming' by Jeff Fox ;)) 09:58:44 local variables :s is that like using malloc and unmalloc at the end or something? 09:58:53 because otherwise you're just wasting space 09:58:54 Baughn: if you put IMMEDIATE after a definition you'll get a word that is executed at compile time. 09:58:55 it busted some C hangover out of my mind 09:59:10 Maybe I should say "What can Forth do that Lisp can't. 09:59:13 Anyone? 09:59:19 heh 09:59:31 tathi: Works for me. 09:59:45 Forth is ideal as parser/compiler/assembler 10:00:02 but will it work for forth? 10:00:09 self-modifying code is easily writable 10:00:16 Well...I'm kind of an assembler weenie myself. So I like Forth because it leaves things up to the programmer (i.e. it's fairly low-level). 10:00:19 wont you get errors during compile time for the not existence of the variables you're trying to approach? 10:00:38 Serg[GPRS]_: Self-modifying code... 10:00:47 its a virus! 10:00:47 :p 10:00:51 i'll shutup now :p 10:01:01 Baughn: you can cleanly map a lexically-scoped lisp to a pure forth, I would think 10:01:12 also you can do fancy things by tampering w/ return stack ;)))) 10:01:32 i did REP word by this: 10:01:48 20 REP MYWORD repeats MYWORD 20 times ;)) 10:01:53 fudgez: I could, but as it turns out that's slow. 10:03:08 Baughn: closure are just stack-frames; PUSH A, PUSH B, CALL +, etc. vs. A B + 10:03:45 fudgez: Sure, the mapping works fairly well, but I like my compilers to be written in Lisp. 10:04:01 fudgez: I understand it better, for one thing. ;) 10:04:24 Baughn: Forth comes right opposite Lisp 10:04:45 Lisp is hi-abstraction, Forth is assembler and VM of it's own 10:05:06 I think to learn what's great about forth, you really have to emerse yourself in it's programming methodologies 10:05:23 Herkamire: right !!! 10:05:36 Well, I'm certainly trying. I keep trying to adapt Forth to my programming methodologies, though. 10:05:37 and you may also have to be interested in working at a fairly low level. I'm not sure about that though. 10:05:59 my 1st proggie in Forth was as obfuscate as Obfuscated C contest winners 10:06:09 but later they became cleaner 10:06:13 And, of course, my Lisp dialect does assembler code just fine. 10:06:17 Baughn: forth is very adaptable, but a lot of things people are used to doing don't work that well with forth 10:06:49 Baughn: every language has it's oun style of thinking 10:06:53 I think that all the ways that I was pushed to change my methodologies to work better with forth have made me a better programmer in all languages I use 10:07:30 I think the biggest benifits you get from forth come from making small small definitions. 10:07:40 Baughn: coding in Forth w/ Lisp attitude is like flying helicopter w/ jumbo-jet skill ;) 10:07:42 not more than one line is a good rule 10:07:50 Herkamire: right ! (small words) 10:08:00 yeah ! one-liners rules !! 10:08:02 Baughn: it's not what you think. Fire up your favorite forth and write "SEE 1+", it translates to ONE assembly instruction. This thing is more like assembler on steroids, and any mathematicall proven language lisp a pure lisp or scheme. 10:09:01 Baughn: forth is much lower level than lisp, ANY lisp. 10:09:29 fudgez : it is not 'asm on steroids' for specific 2-stack VM 10:09:36 fudgez> that is very implementation dependent... 10:09:37 err ! 10:09:46 fudgez : it IS 'asm on steroids' for specific 2-stack VM 10:09:49 threaded code will/might have : 1+ 1 + ; 10:10:32 i don't like stuff like 1+, >if, and so on. 10:10:38 fudgez: That's wrong, but you wouldn't know that. KLisp (which I'm using to implement Altimit, neither of which is public yet) does assembler just fine. In fact, it has to, since there's nothing below it. 10:10:54 words should be as general as possible, and an optimizer should do the optimization, and do a better job than the programmer doing it manually. 10:10:56 fudgez: Being Lisp, it obviously does macro-assembly as well. 10:11:05 whats wrong with 1+ ? it can be easily optimized and is used commonly 10:11:15 Baughn, sbcl and cmucl are bootstrapped using an 'ssembler in lisp' too 10:11:19 qFox, i mean primitive 1+ 10:11:29 qFox, : 1+ 1 + ; is ok, and then let the optimizer optimize this and much more 10:11:36 slava: Yes, but they don't seem to be exported to user code. 10:11:40 slava: that's very much _NOT_ the forth philosophy. sounds like java 10:11:57 sljava :p 10:12:18 forth methodologies generally say make your words as small and specific as possible 10:12:22 the true, threaded, forth philo would be : 1+ 1 + ; 10:12:36 i also dislike 'optimization' words 10:12:40 but i dont care what's behind it as long as it increases the TOS by one and returns that number. 10:12:46 Herkamire: You *have* to use an optimizer, though, don't you? Optimizing code for x86 machines is so obnoxiously unintuitive that it really can't be done by hand. 10:12:53 most forths do not have optomizers. 10:13:00 Herkamire, another simple optimization is optimizign away stack pointer decrement/increment in "drop 5" 10:13:04 and not fetches the tos as an address, then increasing that, and so on 10:13:11 Herkamire, would you suggest having special compiling word replace-top-of-stack 5>? 10:13:12 some words just need to be standard imo :\ 10:13:41 slava: I think it's erelivant 10:14:30 best optimisation is good thunk algorithm 10:14:37 or storing some stack elements in registers 10:14:55 once i speed up a proggie 17 times, in same QBasic ;)) 10:14:57 sure, optomizers are fun. 10:15:16 once you have a good optimizer, stuff like : 1+ 1 + ; is trivial to optimize so why waste time with more asm-coded primitives than you need to? 10:15:19 by just pruning 'impossible' iterations 10:15:41 its good to separate the low level asm stuff into the compiler/optimizer module instead of sprinkling it throughout 10:15:43 but I we were having a conversation about the strengths of forth, and it's methodologies. and optomization has really nothing to do with that. 10:15:55 Herkamire: What you're saying sounds to me like I might as well use Lisp, since if Forth (generally) lacks an optimizer then there's no speed advantage at all. 10:16:10 Herkamire: That'd be different on a sane architecture, but... 10:16:16 We don't seem to have those. 10:16:30 Baughn: yeah, people don't use forth for speed. 10:16:36 * Serg[GPRS]_ goes away for playing a game 10:16:41 Baughn, many forth implementations have advanced compilers 10:16:41 --- quit: Serg[GPRS]_ () 10:16:42 Baughn: some forths have optomizers, some don't. I'm saying that it has no (or very little) efect on methodologies and memory management etc. 10:16:42 it often comes with a minimalist philosophy 10:16:56 there are some forths (mostly commercial) with optimizers. 10:16:59 Baughn, just like clisp doesn't natively compile, but this doesn't reflect on the state of native compilation in lisp as a whole. 10:17:15 but since many people implement their own forths, they tend not to get that far. 10:17:20 slava: Well, clisp is definitely the exception. 10:17:24 slava: Even gcl compiles. 10:17:34 Besides, clisp *does* compile, just not to native code... 10:17:44 forth compiles too 10:17:45 Baughn: forth is not full parentesized, so you can't do stuff like (defun + (&rest args) (mapcar #'sys:system-plus args)) then call + with as many argumens as you want. In forth, the arguments are fixed, and any rogue words can ruin the stack. 10:18:11 in some forths (such as mine) to native code, others not 10:18:13 fudgez: Ah.. no, I don't think that's right. 10:18:23 not can, will. 10:18:25 :) 10:18:32 fudgez: You can perfectly well pass the number of arguments first, which is what Lisp often does. 10:18:45 but thats not the nature of forth 10:18:52 is what he's saying 10:18:54 1 2 3 + . => 5 (not six) 10:19:04 fudgez, obviously ;) 10:19:16 fudgez: Well, obviously you'd need to define a new word to do it. 10:19:25 + takes two parameters.... I don't think it's a problem to put in two +s to add three numbers: 1 2 3 + + . ==> 6 10:19:33 Baughn, you might like my language factor, its similar to forth but is dynamically typed and has garbage collection. i'm working on a x86 compiler right now. 10:19:34 slava: in lisp, the + can take as many arguments as you want. 10:19:41 fudgez, yes i know. 10:20:04 Baughn: the new word would use some looping construct 10:20:20 fudgez: How about this: 1 4 1 2 4 ++ . => 8 10:20:30 fudgez: Yes, of course. That's what Lisp does. 10:20:34 I like forth for what it is, a kickass high performance piece of hacking :-) 10:20:48 Baughn: there the last argument is the number of cells to add? sure that would work. 10:20:55 Baughn, i've never felt the need for a multiple-arity + in practice, though. 10:21:08 Baughn, words with variable stack effects are generally considered bad practice. 10:21:15 It's just a convenience. Fits the philosophy of Lisp, wouldn't fit Forth. 10:21:21 slava: no they are not 10:21:28 slava: just you don't like them 10:21:39 well, its not just me. 10:21:48 well. if you're so much into lisp, why even bother to go to forth? :\ 10:21:59 I might point out that many of the very basic words in ANS return different numbers of cells 10:22:04 like FIND 10:22:08 slava: I'd call that function "n ++" instead of "++", and define the stack effects by the value of n. 10:22:26 Herkamire, that's ANS forth... 10:23:09 forth doesn't generally Take a variable number of arguments, but many words which return success/failure, do not return a value if it's a failure. 10:23:09 qFox: I'm looking for new ideas. I generally try to learn a language per month; this month it's Forth's turn. 10:23:18 ehr. right 10:23:34 they just return false 10:23:52 slava: I'm asuming you don't like such words because they make your stack effect checking and stuch a pain 10:23:58 but most forthers don't care about that stuff 10:24:06 Herkamire, yes, but its also harder to reason about them for the programmer 10:24:14 you can't get a good mental picture of 'stack at this point' 10:24:22 that concepts that underlie forth are nice, and it would make for a great VM or a target language 10:24:27 slava: I don't think so. 10:24:54 bl word find 0if exit then execute ; 10:25:17 i don't like multiple exit points either, in fact factor does not allow it 10:25:42 slava: that's just weird. 10:25:48 slava: You like functional programming, then? 10:26:08 slava: sorry. I really don't mind that you have different values. 10:26:10 Baughn, in principle. in practice, you need side effects to implement a useful reflective runtime. 10:26:16 slava: just please be careful about claiming that they are forth values. 10:26:29 Herkamire, i never claimed that multipel exit points was not forth 10:26:43 Herkamire, however i have read a lot of other forth programmers say that variable stack effects is not good. 10:26:51 slava: Sounds like me. I *really* like the idea of proving programs, which is easier if they're functional. 10:26:59 slava: In practice it doens't actually work, though. 10:27:17 slava: no, but you said that "words should be as general as possible" which is quite opposite from the forth philosophy 10:27:31 is there any tool for coverage testing forth code btw? 10:27:51 coverage testing? 10:27:52 Herkamire, i never said that general words was forth philosophy either 10:27:57 like gcov for gcc 10:28:13 Herkamire, when you run unit tests it tells you which words ran as a result and which didn't 10:28:14 hi stepan 10:28:30 Stepan: hmm.. we could make for a special dictionary and tag each pointer with a bit 10:28:40 Herkamire: testing whether each code path has been executed at least once.. in embedded systems you will never go to any critical areas without this 10:28:42 slava: you said that in the middle of a conversation about forth methedology 10:29:00 oxygene: hmm :) indeed! 10:29:03 that would rock 10:29:12 Stepan: or just store a list of all words and branches within words and count their occurences 10:29:18 Stepan: Do you usually prove them as well? 10:29:19 I really wonder why forth didn't take off in the DOS days; it would've made it a much better platform. 10:29:22 Stepan: mostly a change to docol, dobranch, do?branch 10:29:59 what i do is activate the profiler before running unit tests, and deactivate it afterwards, and look at words' call count. however this is not fully accurate, since the profiler is statistical 10:30:45 Baughn: prove as in prove them manually? 10:30:49 no 10:30:52 Stepan: which words have actually been executed? or which words have branches to them from other definition(s)? 10:31:07 Herkamire: both, basically. 10:31:08 ideally you want branch coverage as well 10:31:39 Stepan: As automatic as possible, of course. 10:31:43 Stepan: if you're farmilliar with your implementation, it should be pretty easy to do those. 10:31:45 slava: if you write code for traffic control you will not get it into a train, bus, car etc without full branch coverage 10:31:59 Stepan, why are you telling me? 10:32:00 Stepan: If you're doing the kind of thing that *has* to work, then I'd be worried if you didn't. 10:32:08 so as every forth programmer says forth is so cool for embedded systems, there must be a tool to do so 10:32:13 Herkamire: as we wrote it ourselves, we are sorta familiar ;) 10:32:28 Stepan: no, it's too specific to the impl 10:32:42 slava: because it is not "ideally" but "mandatory" 10:33:22 --- quit: tathi ("laters all") 10:33:53 Stepan, why are you telling me? I'm aware that testing is important in safety critical situations 10:33:57 Stepan: I'm not sure I understand the value of the coverage test. Is it run while running the unit tests to be sure that they test everything? 10:34:03 Herkamire, yes 10:34:18 Herkamire, if you have a branch that is rarely taken its probably buggy 10:34:32 actually code coverage brings basically no proof of nothing, because it wont do full parameter coverage (impossible) but it is a requirement that there is no code available that does not get executed 10:34:32 Herkamire, but if you test it, you can be more sure that it works, even though its rarely taken 10:34:58 sounds like a cool idea 10:35:09 slava: fine for you. really 10:35:26 I'm not sure all my code can be run from an automated test though 10:35:31 like the bootstrapping code for example 10:35:47 Herkamire, you could bootstrap a new executable, and run it with a few small tests 10:35:50 Herkamire: you can test the result though.. 10:36:13 Herkamire, or write the ELF header and test it for validity 10:36:27 slava: bootstrapping (by definition I think) replaces it's self with a new version it just compiled. 10:36:37 it does not create some external image that can be prodded. 10:36:46 oh ok 10:42:15 I suppose I could generate the image and not use it 10:42:25 but it seems impractical to try to test it 10:42:32 easy way to test it is to simply run it 10:42:49 if the system still works (and passes the other tests) then it's good :) 10:44:02 lately i've started coding a lot of tests to test failure as well 10:44:16 huh? 10:44:17 --- quit: tgunr (Read error: 54 (Connection reset by peer)) 10:44:19 make sure that words raise exceptions when given wrong types, not enough entries on the stack 10:44:23 to test that it deals with errors correctly? 10:44:26 yes 10:44:27 --- quit: fudgez ("ChatZilla 0.9.61 [Mozilla rv:1.7/20040616]") 10:44:32 cool 10:44:54 I haven't gotten around to making automated tests yet 10:46:03 i have benchmarks as part of my test suite as well, so its a good way to gauge compiler progress 10:46:16 cool 10:46:38 I should do something like that when I start playing with optomization 10:49:01 i've decided to scrap java factor. :) 10:49:15 i'm going to strip everything but the parser, and use this in the jedit plugin. otherwise, i have no use for it and its a pain mainining it. the code is crap 10:59:12 heh heh 11:05:33 dunno why that makes me feel myschevious 11:26:48 --- quit: I440r (Excess Flood) 11:27:00 --- join: I440r (mark4@216-110-82-59.gen.twtelecom.net) joined #forth 12:14:32 ok. 12:14:42 i have a situation where i have a file that i load 12:14:58 in the file at the end i call another file 12:15:19 this file CAN be missed (it will show an error if so, but that will have no effect on the previous code, except...) 12:15:37 now the thing is 12:15:51 in the previous code there is one word that needs to update stuff visually 12:16:06 the included file is a window, which obviously does not exist, if the file was missing 12:16:20 so i created a variable, and the extra file will set that variable to 1 if it is loaded, indicating so 12:17:09 now in the previous code, that one word needs to run an additional word to update that window, but only if the file actually loaded. thing is, the word doesnt exist yet at that point 12:17:23 its not indirectly threaded, so i cant just go and change the word later 12:17:28 how would i approach this problem? :) 12:25:54 i'm curious what kind of program you are making that caused you to need to do things this way? 12:35:32 heh 12:35:35 its my set game 12:35:43 i've gotten some inspiration to continue on it 12:35:57 and to finally make the push to get more aquainted in windows programming 12:36:04 so i can finally make a goddamn gui for... anything 12:36:24 when i created that set game, at some point i found some sources (examples) for windows programming 12:36:38 and i managed to create a window, and actually create 12 buttons with the images of the cards of the set game on it 12:36:52 all dynamicly etc. so i wanted to continue to work on that :) 12:38:34 anyways, that window thing i put in a seperate file 12:38:49 and the whole game will function properly, even if the win file is missing 12:38:57 (textbased) 12:39:23 i cleaned it up a little today too. to get back into forth (havent coded in 2 months, at least) 12:46:39 --- join: allefant (~root@L0651P06.dipool.highway.telekom.at) joined #forth 12:47:05 --- quit: qFox (zelazny.freenode.net irc.freenode.net) 12:47:06 --- quit: cmeme (zelazny.freenode.net irc.freenode.net) 12:47:06 --- quit: warpzero (zelazny.freenode.net irc.freenode.net) 12:47:06 --- quit: ianp (zelazny.freenode.net irc.freenode.net) 12:47:41 --- join: ianp (~ian@inpuj.net) joined #forth 12:47:41 --- join: qFox (C00K13S@82-169-140-229-mx.xdsl.tiscali.nl) joined #forth 12:47:41 --- join: cmeme (~cmeme@216.184.11.30.unused.swcp.com) joined #forth 12:47:41 --- join: warpzero (~warpzero@dsl.103.mt.onewest.net) joined #forth 12:47:41 --- mode: irc.freenode.net set +o ianp 12:47:46 is this allowed: "... DO ... IF LEAVE THEN ... LOOP" ? 12:49:01 allefant: yes 12:49:12 allefant: that is the intended use of LEAVE 12:49:51 allefant: also, if you'd like to exit the word completely, you can do: ... do ... if unloop exit then ... loop ... 12:50:52 netsplit ... :s 12:50:54 ah, makes sense. i only read that you may only nest control directives but not overlap.. so i wasn't sure about LEAVE anymroe 12:51:04 --- quit: madgarden_ (Excess Flood) 12:51:08 ehr... ok... and so ends the netsplit 12:51:10 --- join: madgarden_ (~madgarden@Kitchener-HSE-ppp3576522.sympatico.ca) joined #forth 12:51:10 --- nick: madgarden_ -> madgarden 12:52:20 the breaking words are kind of trivial 12:52:43 LEAVE would only be allowed to be used inside a branch inside a do-loop 12:53:05 because if you would use it plain inside the do-loop you'd screw up stacks 12:53:15 specificaly, return stack 12:53:53 or well, jump targets 12:55:52 --- quit: ows (Excess Flood) 12:56:30 --- join: ows (~ows@a81-84-114-35.netcabo.pt) joined #forth 13:02:51 --- join: Serg[GPRS]_ (~z@193.201.231.126) joined #forth 13:02:57 re 13:03:37 Hi Serg 13:03:46 hi ! 13:19:02 allefant: right. I suppose that is a sort of exception to the rule. you cannot do ... do ... if loop then ... 13:19:37 it's possible I'm wrong about LEAVE. you could try it. I know UNLOOP EXIT works as I described 13:19:48 I don't use LEAVE 13:20:07 its hard to break/end a loop if you dont know the implementation :\ 13:20:10 I think it's time to release another version of herkforth 13:20:33 even though it could be an optimalazation to the code (then again, you could just as well use a while loop instead) 13:20:52 question for everyone: when I package up a binary, and some scripts to run it under qemu-ppc, should I include the sources for herkforth? or just say to download the source distrobution if you want them. 13:20:53 optimilization 13:20:54 hrm 13:20:56 some points: 13:21:26 1) when you run herkforth in the emulator, all the sources are visible in the editor, and can be exported to ascii files (exactly like the ones in the source distrobution) 13:21:33 Herkamire: i always stand for separate src and bin 13:21:42 2) you wouldn't be able to build them anyway, unless you have a ppc assembler 13:21:49 (with gnu syntax) 13:23:36 Serg[GPRS]_: ok. 13:24:02 I'm leaning towards seperate distros. wondering if anybody thinks the sources should be included 13:25:26 source distro is 67KB 13:30:27 oh, whoops. that's with all the svn hidden files 13:31:45 --- join: paintcan (~wossname@rn-v1w5a06.uwaterloo.ca) joined #forth 13:33:11 who wants free design for homepage ? i wanna do it for some 'customer dialog' experience 13:37:22 --- quit: Serg[GPRS]_ (Read error: 104 (Connection reset by peer)) 13:41:02 --- join: Serg[GPRS]_ (~z@193.201.231.126) joined #forth 13:41:08 re 13:41:26 damn worm, RPC failure - over cellular network ! 13:41:37 Heh. 13:41:44 That's pretty bad 13:41:59 Robert: right after opening your page ! 13:42:28 what host is it ? win32 or unix ? 13:43:24 if win32, take immediate action ;(( 13:43:35 :D 13:43:40 I'm not THAt evil! 13:44:06 i do not blame, but: 13:44:35 1) i dunno is it your home Linux box or box of other guy who is 'zizi' 13:44:56 2) whoever it be, he is rather victim of worm then a wrongdoer 13:45:16 robert.zizi.org is directed to my box. 13:45:24 aha 13:45:38 The zizi.org owner is from France and has nothing to do with my page. 13:45:53 And yes, this is my Debian box 13:46:04 Are you saying it's infected by a Windows worm? 13:46:20 hmmm.... 13:46:42 --- nick: hefzzz -> hefner 13:46:50 did DNS request for robert.zizi.org first come to zizi.org's DNS ? 13:47:09 that one can be in charge 13:47:23 Well, his DNS gives the name ostling.no-ip.com 13:47:30 Which is pointing to my IP 13:47:39 get ready - i'll try once more 13:48:10 if it repeats - bounce your butt on alarm button ;)) 13:48:20 Hehehe 13:49:34 a-a-a-h ! i'm infected, sending crap ! i shut up, bye ! 13:49:43 --- quit: Serg[GPRS]_ () 13:51:43 --- quit: ows (Read error: 104 (Connection reset by peer)) 13:54:30 lol 13:54:45 --- join: Serg_gh (~root@193.201.231.126) joined #forth 13:55:10 re from Linux - no hell gonna stop me ;)) 13:56:27 what a pain in a$$ those damn worms - now i gotta take antivirus from work 13:57:03 hey, do one hear me, am i on any channel ???? 13:57:09 Hey 13:57:11 I hear you 13:57:34 that old IRC client smells way rotten 13:59:14 * Serg_gh just checked mail via telnet ;) 14:00:26 are where any worms/virii for Linux ? 14:01:05 Robert: and what a nasty face on your page ? 14:02:33 Hehe, that's my sister ;) 14:03:26 eh 14:03:33 iew? 14:03:48 how so ? the one is like suffering some medieval deadly disease 14:04:46 Haha 14:06:32 it is worth http://rotten.com 14:07:01 =8{0}~ (vomit smiley) 14:08:34 serg: design a page for Robert :p 14:09:17 Pffft 14:12:09 really, whack it out, please ! it may lead folks to bad thoughts about your taste and even sanity 14:12:30 MY sanity? 14:12:38 I'm not the one painting my face red with cherry juice 14:12:45 hahah 14:13:21 is it cherry juice ? it looks like some disesase what damages skin - really deadly one, bletch ! 14:13:46 btw i have no rpc problems after visiting his page ;) 14:14:40 me too - Linux has no damn RPC ;)) 14:14:59 rpc can kiss my ass 14:15:09 i've switched it so it wont shutdown my xp when it does fail 14:15:29 current virii, ANY for that matter, are so fucking easy to remove anyways 14:15:56 ALWAYS go to your run with regedit, and look for HIDDEN processes with a 3rd party app and shut it down 14:16:00 reboot 14:16:03 and you're homefree 14:16:15 whatever virii risidue is left, leave it. it cant harm you 14:21:57 nothing like the bios virii 14:22:06 or virii that infect exes and fuck them all up 14:22:14 dmsetup! :D 14:22:22 at least dmsetup was cool 14:22:24 colored circles 14:22:32 while it created a gazillion odd directories 14:22:38 very hard to remove under dos :p 14:24:14 Hah. 14:24:34 You sound like a true Windows user. "Love your enemy. Don't kill him!" 14:24:38 :D 14:26:36 you have to admit though that virii were much better in the old days 14:26:49 at any time somebody has a virus, all you really have to do is what i just said 14:27:04 remove from run at registry, and kill process before you do that 14:27:14 Yeah, DOS virii are neat. 14:29:02 nah, i seen virii what infect some system EXE's 14:29:11 Win32 ones 14:29:22 not many though. no major ones 14:29:38 its become a standard to fake windows names 14:29:41 explorer32.exe 14:30:21 the REAL virii should start be4 OS and modify it's kernel ;)) 14:30:22 rundlll32.exe 14:30:26 yep 14:30:27 :) 14:30:59 or become (kernel) debugger 14:31:22 softice kind of stuff 14:31:27 aha 14:31:28 :D 14:31:40 problem is probably size issues 14:31:54 then again, with current internet bandwidth capabilities, that can hardly be a problem anymore 14:32:00 ? just a few functions 14:33:23 well no, but a true virus should be capable of repelling AV software and any and all attempts to bypass its systems to disable it 14:33:24 :p 14:37:57 at least known AV. 14:40:51 damnit, i wished there was an easy way to get into windows programming >:( 14:41:17 this forth code for a windows app is soooo bloated 14:41:40 its so much worse then the source of a a vc++ win app 14:41:44 heh 14:41:53 i mean, it works and all, but jeez 14:42:29 and now i gotta figure out where the main events are located (i think i got that though) and how the hell ot create an event for a button press 14:42:37 and hwo to get properties of that button and stuff 14:42:41 there's just no easy entry 14:43:24 qFox: theres a lot of info on writing windows programs in assembly.. makes for much cleaner code, could probably do it up in forth and then have an easy way to write windows programs in forth cleanly 14:44:30 lot of _excellent_ info on writing windows programs in asm :) 14:44:55 sure, but its all still a LOT of info at once 14:45:55 what are you using to write forth code for windows? 14:46:03 win32forth 14:46:04 win32forth? 14:46:05 ew 14:46:16 the worst forth for windows :) 14:46:17 seems to be the only free one capable of doing so... 14:46:20 but free 14:46:21 yeah 14:46:24 futhin, what is a better windows forth? 14:46:25 best free one :\ 14:46:34 slava: the non-free ones are better 14:46:43 i havent seen winforth or swiftforth 14:46:43 except the "the best things in life are free" 14:46:52 swiftforth is nice 14:46:56 therefore there's a contradiction! ;) 14:47:40 damn i just finished releasing 80 files through sourceforge 14:47:42 took almost an hour 14:48:00 i havent been able to get my hands on a hax0red version of swiftforth/winforth (and believe me i tried) 14:48:15 those seemed to be the biggest two 14:48:19 gui'd 14:48:24 retroforth runs on windows 14:48:35 winforth is the one that gives you a free copy if you tell him your a student etc right/ 14:48:38 right? 14:48:51 oh really? 14:49:04 hrm, i thought that was the one you had to pay 600$ for :\ 14:49:54 i just want a visual forth please :p 14:50:02 a huge ass gui 14:50:11 i really wouldnt mind that, no matter what you believe 14:51:00 actually i'm talking about iforth i tihnk 14:51:10 http://home.iae.nl/users/mhx/ 14:51:15 I think there's bigforth for win32, too? 14:51:16 autocompletion, windows programming completion support, etc. 14:51:24 you can gte it free if you ask nicely i believe 14:51:25 bigforth is commandline 14:51:29 or console at least 14:51:42 iforth is definitely a windows forth 14:51:47 yes 14:51:53 but it can still be commandline/console 14:51:59 i _hate_ those 14:52:05 at least to actively develop in them 14:52:10 ? 14:52:13 use a decent editor and you're set. 14:52:34 i much rather have a all in one package 14:52:41 qFox: iforth does windows graphics etc, it makes windows apps 14:52:54 so you dislike working in forth at all? 14:53:19 nope 14:53:32 win32forth offers such a package 14:53:40 well, one i can live with anyways 14:53:51 well i don't like win32forth's interface much at all 14:53:55 and its not super integrated 14:53:56 its editor has trouble with undo, but w/e 14:54:02 its got the interpreter and its got the editor 14:54:07 but you can use any other editor 14:54:20 ... yes, but what do you mean by super integrated then? 14:54:45 the editor has a very good debugger 14:55:05 or well, ok it worked great so far. i'm sure it could be done better somehow 14:55:12 the very fact that it has an interpreter, an editor, and fucking popups for help means it is not significantly integrated 14:55:16 its a crappy interface basically 14:55:28 ah yes 14:55:36 thats probably the one thing thats stupid 14:55:47 i think the interpreter, editor, and help should ALL be within the same interface 14:55:55 i think it sohuld all be at the interpreter level 14:56:04 those help popups spawn a seperate process 14:56:05 Morse code for all I/O. 14:56:15 --- quit: Serg_gh (Read error: 110 (Connection timed out)) 14:56:17 i.e you type 'help' and it shows on the console 14:56:22 but w/e. i can live with this. i just prefer a gui type of environment 14:56:23 which is much more convenient 14:56:31 qFox: do you use linux? 14:56:34 no. 14:56:43 futhin, i think a well-designed forth ide can beat the crap out of all the visual c++ junk 14:56:58 futhin, since forth is already an ide, and once you add some good gui stuff it could be killer 14:57:17 slava: yeah i agree that forth has the potential to have a killer ide but i don't really know of one heh 14:57:20 hmm.. holon has some "ide" stuff - what about it? 14:57:30 oxygene: not familiar with holon 14:57:44 i just prefer gui's. thats all. i rather drag'n'drop then type it all. create dialogs with my mouse and alter the code later, then do that stuff manually. 14:58:03 press Fx to test my code, then to save, and load it into the forth 14:59:18 and as soon as i've mastered windows programming a little i'll work on such an app 14:59:48 and it'll be the next big free windows gui forth after win32forth 14:59:54 it'll be.... win64forth! :p 15:00:10 yeah 15:00:24 gtg 15:00:31 later 15:13:39 anybody want to test herkforth under qemu right now? 15:19:00 Herkamire: can i run qemu in a shell account? ;) 15:20:30 futhin: sure, if you have one somewhere with qemu installed 15:20:46 oddly enough qemu-ppc doesn't work on my machine 15:20:59 but qemu-system-ppc seems to work fine (that emulates an OS) 15:25:46 hmm no qemu and sysadmin isn't around 15:25:55 i guess i could install it myself but i'm busy right now 15:28:10 --- join: TheBlueWizard (TheBlueWiz@modem-153.nyc-tc03a.FCC.NET) joined #forth 15:28:10 --- mode: ChanServ set +o TheBlueWizard 15:28:14 Hi Wizard 15:28:20 Robert hiya 15:29:11 TheBlueWizard: wanna try herkforth under qemu? 15:30:08 qemu? 15:30:31 TheBlueWizard: it's an emulator 15:31:11 hmm...if it is just console/ncurses based I can try it, I suppose...I don't have any X Win 15:32:36 no X nessesary 15:33:13 just need a terminal that supports the really common ansii controll sequences 15:33:39 X isn't needed to run qemu? 15:35:36 console based, ok 15:41:00 shouldn't need x 15:41:13 looks like SDL is optional, and asside from that just libc 15:41:53 ah, so it runs ppc applications as if they were native? 15:41:55 that 15:41:58 's cool!! 15:43:06 Sonarman: yeah :) 15:43:12 I gotta go now. 15:43:22 here it is if anybody want's to try http://jason.herkamire.com/herkforth-bin-0.6.1.tar.bz2 15:43:46 if it works, I'll probably oficially release it as 0.7 with documentation. 15:43:57 currently documentation is at http://herkamire.com/jason/herkforth_docs 15:44:08 I'll probably be back it 5 hours or so 16:02:15 --- quit: qFox ("this quit is sponsored by somebody!") 16:50:35 --- join: swsch__ (~stefan@p5091E097.dip.t-dialin.net) joined #forth 17:07:02 --- quit: swsch_ (Read error: 110 (Connection timed out)) 17:20:49 --- quit: swsch__ (zelazny.freenode.net irc.freenode.net) 17:20:49 --- quit: onetom (zelazny.freenode.net irc.freenode.net) 17:20:50 --- quit: Teratogen (zelazny.freenode.net irc.freenode.net) 17:20:50 --- quit: mur (zelazny.freenode.net irc.freenode.net) 17:20:51 --- quit: I440r (zelazny.freenode.net irc.freenode.net) 17:20:51 --- quit: Herkamire (zelazny.freenode.net irc.freenode.net) 17:20:51 --- quit: juhammed (zelazny.freenode.net irc.freenode.net) 17:20:51 --- quit: futhin (zelazny.freenode.net irc.freenode.net) 17:20:58 --- log: started forth/04.10.23 17:20:58 --- join: clog (nef@bespin.org) joined #forth 17:20:58 --- topic: 'http://www.orangetide.com/forth/ -- Links about FORTH. We love AlonzoTG, om. wasnt he banned?' 17:20:58 --- topic: set by qFox on [Sun Oct 17 09:40:52 2004] 17:20:58 --- names: list (clog madgarden I440r) 17:20:58 --- join: fridge (~fridge@dsl-203-33-163-230.NSW.netspace.net.au) joined #forth 17:21:13 --- join: Robert (~pink@c-bf5a71d5.17-1-64736c10.cust.bredbandsbolaget.se) joined #forth 17:23:59 --- join: TheBlueWizard (TheBlueWiz@modem-153.nyc-tc03a.FCC.NET) joined #forth 17:23:59 --- join: oxygene (~oxygene@khepri.openbios.org) joined #forth 17:23:59 --- join: Stepan (~Stepan@khepri.openbios.org) joined #forth 17:23:59 --- join: madwork (~madgarden@derby.metrics.com) joined #forth 17:23:59 --- join: Zymurgy (zymurgy@delgw.delfax.net) joined #forth 17:23:59 --- join: OrngeTide (orange@rm-f.net) joined #forth 17:23:59 --- join: Sonarman (~matt@adsl-64-171-255-50.dsl.snfc21.pacbell.net) joined #forth 17:23:59 --- join: Baughn (~svein@cloud.brage.info) joined #forth 17:23:59 --- join: allefant (~root@L0651P06.dipool.highway.telekom.at) joined #forth 17:23:59 --- join: futhin (thin@bespin.org) joined #forth 17:23:59 --- join: juhammed (~o@dsl-olugw3p33.dial.inet.fi) joined #forth 17:23:59 --- join: Herkamire (~jason@h000094d30ba2.ne.client2.attbi.com) joined #forth 17:23:59 --- join: Teratogen (leontopod@slashsnot.org) joined #forth 17:23:59 --- join: skylan (~sjh@vickesh01-4741.tbaytel.net) joined #forth 17:23:59 --- join: mur (~mur@smtp.uiah.fi) joined #forth 17:23:59 --- join: ChanServ (ChanServ@services.) joined #forth 17:23:59 --- mode: irc.freenode.net set +oooo TheBlueWizard futhin Herkamire ChanServ 17:23:59 --- join: hefner (~hefner@pool-141-157-7-146.balt.east.verizon.net) joined #forth 17:23:59 --- join: cmeme (~cmeme@216.184.11.30.unused.swcp.com) joined #forth 17:23:59 --- join: warpzero (~warpzero@dsl.103.mt.onewest.net) joined #forth 17:23:59 --- join: paintcan (~wossname@rn-v1w5a06.uwaterloo.ca) joined #forth 17:23:59 --- join: I440r_ (mark4@216-110-82-59.gen.twtelecom.net) joined #forth 17:23:59 --- join: ianp (~ian@inpuj.net) joined #forth 17:23:59 --- mode: irc.freenode.net set +o ianp 17:24:22 --- join: slava (~slava@CPE00096ba44261-CM000e5cdfda14.cpe.net.cable.rogers.com) joined #forth 17:25:19 --- join: onetom (~tom@cab.bio.u-szeged.hu) joined #forth 17:25:44 --- join: swsch__ (~stefan@p5091E097.dip.t-dialin.net) joined #forth 17:56:56 --- quit: allefant ("Client exiting") 18:09:31 --- part: slava left #forth 18:25:29 gotta go...all bye 18:27:14 --- part: TheBlueWizard left #forth 21:00:25 --- quit: hefner ("I'm sorry, did I break your concentration?") 21:03:25 --- join: hefner (~hefner1@linux2.gl.umbc.edu) joined #forth 22:12:48 --- join: Serg[GPRS]_ (~z@193.201.231.126) joined #forth 22:13:08 --- join: ok (r@core-dc-1-45.dynamic-dialup.coretel.net) joined #forth 22:13:21 re 22:13:30 er 22:13:52 heh, i dewormed the damn worm - no more parasite traffic ;) 22:14:26 Some programs have bugs. osimplay has stray dogs. 22:14:58 but they don't have worms at least 22:16:37 hehe ;) some people have stray bugz in da head ! 22:24:25 * ok listens for the Fat Lady 23:06:36 no Fat Lady yet 23:17:58 --- join: qFox (C00K13S@82-169-140-229-mx.xdsl.tiscali.nl) joined #forth 23:21:37 * swsch__ is away: gone swimming 23:26:51 --- quit: fridge (Remote closed the connection) 23:30:38 --- quit: Serg[GPRS]_ (Read error: 110 (Connection timed out)) 23:49:41 --- quit: Herkamire ("bed") 23:59:59 --- log: ended forth/04.10.23