03:18:45 --- log: started forth/01.12.30 03:18:45 --- quit: clog (^C) 03:18:45 --- log: stopped forth/01.12.30 03:19:02 --- log: started forth/01.12.30 03:19:02 --- join: clog (nef@bespin.org) joined #forth 03:19:02 --- topic: 'do drop >in' 03:19:02 --- topic: set by I440r on [Thu Dec 27 13:09:40 2001] 03:19:02 --- names: list (clog @aaronl) 04:12:22 * aaronl is away: banging head on desk 09:14:50 --- join: edrx (edrx@200.240.18.52) joined #forth 09:36:55 --- join: oxygene (oxygene@linux-future.de) joined #forth 09:37:24 --- quit: edrx ("[x]chat") 09:37:43 hey 09:37:51 --- join: Stepan (~stepan@port-213-20-224-177.reverse.qdsl-home.de) joined #forth 09:37:56 hi :-) 09:38:53 .o0O #OpenBIOS overtake in #forth ;) 09:49:35 --- join: I440r (mark4@1Cust5.tnt3.bloomington.in.da.uu.net) joined #forth 09:50:34 hi I440r 09:50:56 zim i just thunked of something - i burned your stuff to a cdrw - is your cd able to read from phaze change cd's ? 09:51:03 btw zim - you change your nick WAY too often :P 10:03:51 --- quit: Stepan (Remote closed the connection) 10:05:36 --- quit: I440r ("BitchX-1.0c18 -- just do it.") 11:05:00 --- join: I440r (mark4@1Cust71.tnt3.bloomington.in.da.uu.net) joined #forth 11:06:12 hi oxy 11:06:17 you a forth coder ? 11:07:06 I440r: yes, I used forth a lot on my c64 *g* and I now try to refresh my knowledge as I'm working on OpenBIOS, an OpenFirmware-implementation 11:07:29 cool 11:07:47 im making a linux x86 forth 11:07:54 except ive not been working on it for months 11:08:07 plucking up the courage to start work on it again soon 11:08:14 another one? ;) 11:08:52 isforth 11:08:57 written in pure assembler 11:09:06 not no lame ass c forth 11:10:13 I440r: threaded or some optimizing stuff? 11:10:24 no optimizations 11:10:30 i hate optimizing compilers 11:10:42 they destroy the 1:1 co-relation between source and object 11:10:43 and 11:10:49 you dont know whta the fuk you get with them 11:10:57 hehe :) 11:11:24 direct threaded 11:11:37 hmm... I thought about building a forth-system consisting of a CALL into the dictionary itself.... 11:12:03 atm we're using a c-forth for OpenBIOS as it's a fast-hacked thing 11:13:01 hmm... direct threaded? never did one 11:36:26 --- quit: I440r ("Reality Strikes Again") 11:40:26 --- join: I440r (mark4@pool-63.52.217.149.ipls.grid.net) joined #forth 14:45:26 * aaronl is back (gone 10:33:04) 14:45:44 * aaronl is away: I'm busy 15:00:13 * aaronl is away: gargargar 15:30:16 --- join: I440r_ (mark4@pool-63.52.217.50.ipls.grid.net) joined #forth 15:33:15 --- quit: I440r (Read error: 60 (Operation timed out)) 16:28:32 --- join: Fare (fare@samaris.tunes.org) joined #forth 16:29:09 --- join: Speuler (~l@c38038.upc-c.chello.nl) joined #forth 16:29:20 hi 16:29:27 lo 16:30:27 hi 16:33:28 hey 16:35:17 bongo! 16:35:17 dood 16:35:17 any info on jobs there yet man ? 16:35:27 im desperatly desperat for a job :) 16:35:33 forth jobs? where? 16:35:48 hi fare :) 16:36:01 hi i440r 16:36:01 i should ask you ... 16:36:19 u mean ur out of work now ? 16:36:28 last thing mrrapp said was you weren't answering to his mail 16:36:45 --- nick: I440r_ -> I440r 16:37:21 i've finished prev project a few days ago 16:37:23 --- mode: ChanServ set mode: +o I440r 16:37:25 that was asm 16:37:40 different department, floor, people 16:38:01 yea 16:38:06 --- mode: I440r set mode: +o clog 16:38:08 --- mode: I440r set mode: +o Fare 16:38:10 --- mode: I440r set mode: +o oxygene 16:38:13 --- mode: I440r set mode: +o Speuler 16:38:27 thanks 16:38:35 now i can kick me 16:38:52 :) 16:39:12 I440r: how did the correspondence work out ? 16:39:33 ive heared absolutely NOTHING from them 16:40:10 that's about what those from the agency said about you 16:40:20 hmm... anyone here interested in working on a free OpenFirmware implementation for x86 and other architectures? 16:40:30 i mailed them my resume so the ball was in their court 16:40:42 tried to contact you several times they said 16:41:12 via what method ? 16:41:13 fone? 16:41:14 email ? 16:41:26 i suppose email 16:41:34 not sure 16:41:35 well ive recieved no emails about jobs 16:43:02 what DID you receive ? 16:43:16 from them ? 16:43:17 nothing 16:43:33 if they emailed me i didnt see them 16:43:44 when did you mail them for the last time ? 16:44:02 ages ago - i was also emailing other agencies left right and centre 16:44:15 theres absolutely no jobs going in this country roght now 16:44:54 i got 3 agencies unable to place me 16:44:59 and ive mailed my resume all over 16:45:11 since sept 11 the economy has nose dived :( 16:45:25 thanks. good reason 4 me not to try the us 16:45:37 no - try anyway 16:45:44 if u get a job u get a job :) 16:45:50 if u dont try u wont get one heh 16:46:15 i a native citizen doesn't manage, a foreigner's chances wouldn't be good 16:46:36 im sure there are jobs out there, its finding them thats the trick heh 16:46:38 im trying 16:46:41 bringing my truck along would be costly too :) 16:46:44 just not having any luck :( 16:50:04 maybe mrgreenspan should put forward some optimistic remarks about the economy 16:50:16 ct heh 16:50:20 ct what does he know :P 16:50:30 industry seem to need that kind of statements 16:51:11 not relevant what he knows but what others think he knows 16:51:48 duisenberg (european counterpole to mrgreenspan) tried this tonight 16:51:56 let's see :) 16:52:34 Speuler: what did duisenberg say? that everythings fine with the move to the EUR? 16:52:54 he said "we are through the stagnation, and he expects grows again now" 16:53:05 first slower, then quicker 16:53:12 starting with 2002 :) 16:53:13 no wonder - war always means grows in industry 16:53:32 and a new currency with all that maintenance work, too - of course ;) 16:54:10 was the belgian news i was listening to. in those excerpts of duisenberg's speech, there was no mentioning of euro at all 16:54:48 hmm... "starting with 2002" and "europe" ... 16:55:14 oh yes, he said something about euro 16:55:25 he said "he'd love the u.k to join" 16:55:43 hehe, those nasty separatists on that isle far far away ;) 16:56:33 and in the same news item, they reported some u.k companies accepting euros. 16:56:43 like, gas station, shops 16:57:00 not a legal tender there, but you can pay with it 16:57:15 hmm... what was it - didn't they want the euro or didn't they pass the requirements? 16:58:07 the tories didn't wnat it, and labour wasn't opposed but wants to take the slow lane 16:58:34 see how things work out first 16:59:06 u know what the word "tori" means ? 16:59:23 it was a word used by highwaymen in ireland. it means "give me" 16:59:29 i know about tory island, pirate island 17:00:58 tory island is off the coast of ireland btw 17:01:52 i think they still don't pay taxes there 17:02:23 more power to them! 17:04:22 :) 17:04:35 why, because of not paying taxes ? there are companies evading tax payments - just evading taxes doesn't make you good :) 17:04:43 yes 17:04:51 moral persons don't support robbery 17:07:17 or would call it differently 17:09:31 just calling robbery "tax" doesn't make it moral 17:09:34 just legal 17:10:21 there are at least two aspect to taxes 17:10:50 some uses of tax i could support 17:11:08 but the lack of control about the part i wouldn't like to support annoys me 17:11:43 not all tax is put to bad use 17:12:26 no - those parts that arnt are usually wasted or leeched :P 17:12:43 Speuler: the part you could support needn't be tax so you would support it 17:12:54 probably. 17:13:03 so taxes are always evil. 17:13:20 in the best case, the evil is small or even null 17:13:37 considering they pay for ms licenses with it. awful thought 17:14:00 consider they pay for enforcement of MS's IP privileges. 17:15:34 there's quite an dispute going on in german parlament, about windows versus linux use 17:15:56 yea 17:15:59 what happned with that ? 17:16:04 both systems have fiery pro- and opponents 17:16:21 ms offered source codes to look at a while ago 17:16:26 ya 17:16:32 but NOT to the general public 17:16:36 and whoever wins, he will have those who disagree pay to support their point of view 17:16:39 no ms came up with some drumbeating 17:16:46 and if someone dumped 50 thousand lines of code on your desk would it make any sense to you ? 17:16:59 not much news: their system saver because sources not open etc 17:17:17 the linux proponent answer is: 17:17:30 not so 17:17:37 you can have look specialists at the code, and see what it actually does 17:17:52 its more suceptable to hacks because known attacks take MONTHS to be fixed 17:17:53 who pays the specialist? 17:17:54 if they ever are 17:18:04 tax payer 17:18:09 who's ready to sign one's mind into a NDA after having read the horror? 17:18:13 same who would pay for the damage 17:18:15 Speuler: then it's the same problem 17:18:35 at least the german government already works on alternatives 17:18:41 no. better pay for prevention of problems than effects of problems 17:18:51 eg. sponsoring gnupg and paying the sphinx-project 17:19:08 Speuler: sometimes. Not always. 17:19:20 gpg was sponsored by ministry of economics 17:19:27 Speuler: do you prove your programs correct before you run them? 17:19:44 depends what program, what for, what use 17:19:47 do you use a strongly-typed language? 17:19:58 if serious, i don't do that myself 17:20:12 only fix it where it fails the tests 17:20:13 Speuler: see. Sometimes it pays to prevent problems, sometimes not. 17:20:24 no 17:20:32 (not strongly typed) 17:20:38 (usually not) 17:21:10 like, nukes. lets them explode, or work, to proof them ? 17:21:31 work to have them removed. 17:21:42 or, environmental issues 17:21:55 clean up the mess later on ? 17:22:08 or, computer, os. 17:22:22 wait till it falls to pieces 17:23:17 when does it pay NOT to prevent a problem ? 17:24:06 when you can sell a new version of what caused the problem ? 17:24:12 when the problem is small and the prevention measure expensive. 17:24:28 that's where insurances come into play. 17:24:58 you mean, fix windows by insuring against it ? 17:25:36 better: letting ms paying the insurance - as some kind of garantuee that they'll do their best ;) 17:26:18 insurance is against problems that are not sure to happen 17:26:24 windows is a sure problem 17:26:30 so you can't insure against it 17:26:30 whoever likes to do so, sure. my insurance is to not have ms on my disk 17:27:06 that insurance is free too 17:27:55 that's a case where prevention pays. 17:28:14 parlament is possibly settling for mixed-systems solution 17:28:41 linux on servers, some windows on workstations 17:28:44 die parliament, die! 17:28:54 a good politician is a dead politician 17:29:01 not that bad as a beginning... critical workstations get linux, too I guess ;) 17:29:20 after 5 years they notice that they can switch the rest to linux, too... 17:29:44 why should politicians decide technical questions, to begin with??? 17:29:51 germany is one of the few countries with more linux than ms systems accessable through internet 17:30:07 i would have thought france would be another case 17:30:10 but no 17:30:28 --- join: Stepan (~sr@dialin-145-254-235-196.arcor-ip.net) joined #forth 17:30:29 France is worse. 17:30:36 nighty night, anyway 17:30:45 --- quit: Fare ("Hey! Where'd my controlling terminal go?") 17:31:02 hi stepan 17:31:20 Hey :-) 17:35:06 hi Stepan 17:35:13 u been in here before ? u code forth ? 17:35:21 bits 17:35:29 i have to.. :) 17:35:36 you HAVE to ? 17:35:36 I force him to ;) 17:35:40 can i have a job where your at ? 17:35:43 it's my inner voice telling me forth is good 17:35:46 oh heh 17:35:54 it is 17:35:56 Hehe.. 17:35:57 c is evil 17:36:20 --- topic: set to 'forth is good - c is evil!' by I440r 17:36:37 I440r: it's the openbios project.. you are welcome to have a job here.. unfortunately we dont have any money to pay someone.. :) 17:36:40 --- topic: set to 'forth is good - c is bad! -- forth-geek farm' by oxygene 17:36:43 --- mode: oxygene set mode: +o Stepan 17:36:59 reply doh! - and i got mortgage payments to make :( 17:37:17 nono - c isnt bad, c is EVIL!!!!! 17:37:28 in x = 4 17:37:34 in y y = 5; 17:37:42 erm int y=5; 17:37:48 four legs good, two legs bad ;) 17:37:49 :-)) 17:37:54 erm no im fubaring this 17:37:57 int x=4; 17:38:03 int y=x+++++x; 17:38:04 c rocks whereas forth is devine 17:38:23 there - proof that c is evil 17:39:08 heh.. no w4rz ;) 17:39:16 in the end y=10; x=6 17:39:37 nope 17:39:50 the result cannot be determined 17:40:22 right... as ++x and x++ are equal in priorities 17:40:46 plus = with the way the code would be optimized you would have things like 17:40:47 inc ax 17:40:50 add bx,ax 17:41:03 and on some processors that wouldnt cause an agi 17:41:12 so teh cached value of ax would be added to bx 17:41:17 agi? 17:41:24 --- topic: set to 'forth is good - c is nasty!' by oxygene 17:41:43 --- topic: set to 'forth is clean - c is for men!' by Stepan 17:41:55 --- topic: set to 'forth is clean - c is for men! | : FC RECURSIVE DUP 1 > IF DUP 1 - FC * ELSE DROP 1 THEN ; 42 FC .' by oxygene 17:43:19 I440r: tell me this looks better: hex 4666 dup negate do i 4000 dup 2* negate do 0 dup 2dup 1e 0 do 2swap * e >>a 2* 3 pick + -rot - j + dup dup * e >>a rot dup dup * e >>a rot swap 2dup + 10000 > if " " leave else i 1d = if " *" then then loop type 2drop 2drop 266 +loop cr 5de +loop 17:43:48 well thers soemthign you are forgetting 17:43:55 you can factor that code a hell of alot better 17:43:59 oxygene: for example (see) does use {0@} {2!} etc 17:44:02 there is little or no overhead for factoring code 17:44:03 I440r: ack 17:44:05 unlike in c 17:44:25 I440r: the overhead depends on the forth-system 17:44:31 yup 17:44:38 if you know what you do, you can do it, no matter whether it's C or forth 17:44:42 but i consider it next to zero 17:44:56 because correctly factored code is easier to debug 17:45:00 if you can't factor right, you're fucked in C. Forth lends you a hand 17:45:00 I440r: some indirect threaded system has some overhead - but that it catched by those huge caches of todays cpus 17:45:03 and a hell of alot easier to understand 17:45:14 actually i dont like indirect threading 17:45:18 i only like direct threading 17:45:24 anything else however is NOT threading 17:45:34 I440r: indirect threading is very easy to code... 17:45:47 so is direct 17:45:54 oxygene: any clue what it does? 17:45:54 i can think direct alot easier than i can indirect 17:46:00 why have a pointer to a pointer to you rocode 17:46:07 a pointer to a pointer to your code 17:46:14 when all you need is a pointer to your code 17:46:34 why use a dup drop when you only need a value once on the stack? 17:46:47 I440r: a pointer to a pointer is useful when you have your thread-resolver inline.... 17:47:16 thread resolver being next ? 17:47:19 or nest/unnest ? 17:47:22 next 17:47:26 i would never put nest and unnest inline 17:47:34 inline next is hell easy with direct threading 17:47:37 lodsd 17:47:40 jmp eax 17:47:49 how is direct threaded code done? never seen one (stopped at fig83-systems) 17:48:09 direct threading on an x86 17:48:14 assume sp is stack pointer 17:48:19 bp is return stack pointer 17:48:26 si is interprative pointer 17:48:38 : defs are like this 17:48:52 dw link back to prev word 17:49:03 db 'name goes here' \,-- counted string 17:49:07 dw pointer to code 17:49:12 code: 17:49:16 call nest 17:49:17 dw x 17:49:19 dw y 17:49:20 dw z 17:49:22 dw unnest 17:49:30 nest pushes si onto the return stack 17:49:42 and then pops the return address of the above call into si 17:49:47 si now points at teh dw x 17:49:51 next is defined as 17:49:53 lodsw 17:49:56 jmp ax 17:50:04 the lodsw loads what si points at into ax 17:50:12 and advances si to point to the dw x 17:50:16 you jmp ax 17:50:30 so the forth-code is always embedded into asm-header and asm-footer? 17:50:40 always 17:50:53 every forth definition has assembler code assiciated with it 17:50:57 call nest 17:51:08 the definition for a variable would be 17:51:14 dw pointer to code 17:51:15 code: 17:51:18 call next 17:51:20 dw body field 17:51:31 the call to next would leave the address of the body on the stack 17:51:34 very simple 17:52:33 ok... 17:52:57 if u look at the isforth.sourceforege.net cvs for isforth ull see it up close 17:53:01 that shit is old tho 17:53:02 so it's quite similar to indirect threaded code that uses every word as CODE-definition 17:53:05 and not in a working state 17:53:21 :) 17:53:25 where the CODE-definition does a jump for nest, then does normal compilation 17:53:44 so not much difference (except that indirect is more portable and a bit smaller - not much though) 17:54:14 erm no 17:54:20 indirect isnt smaller 17:54:31 i would put them at about the same size 17:55:01 direct threading has some neat advantages over indirect that make it better in some areas 17:55:13 ive never seen an indirect threaded implementation that i liked 17:55:18 why the header is the same, except that s/pointer to code/pointer to next/ - code: is then completely a bunch of pointers to words 17:55:27 i always felt that it would be smaller and faster if it was direct threaded 17:55:37 well 17:55:41 for isforth i did this 17:55:46 so it keeps you the "call next" every word 17:55:52 i want all my headers to be in their own segment 17:55:58 but thanks for the insights :) 17:56:16 not every word calls next 17:56:24 they jmp next or have inline next 17:56:30 an inline next is a 17:56:31 lodsw 17:56:34 jmp ax on every word 17:56:52 I440r: yes, the other ones are either CODE-words which jump like your words and variables/consts which have their own handler 17:56:55 in an x86 system you have a speed advantage of aligning your definitions on a paragraph boundryt 17:57:12 so the added extra code on each definition is filling in space that would be left blank anyway 17:57:21 tho isforth doiesnt align words yet 17:57:46 --- join: Xuz (aemerson@bgp01079860bgs.wanarb01.mi.comcast.net) joined #forth 17:57:55 hi x! 17:58:01 Hello. 17:58:08 hi Xuz 17:58:12 alto of new ppl coming in here today :) 17:58:19 now were is that asshole TCN :P 17:58:20 grrr 17:58:33 * Xuz nodnods, "I'm usually in here when I'm on this network, nobody else ever is, though :)" 17:58:43 i know 17:58:49 the channel has been a little dead for a while 17:58:52 thats my fayult 17:59:01 my project has been on hold for months 17:59:39 don't worry - OpenBIOS has been on hold for about 3 years iirc ;) 17:59:39 What kinda' project? 17:59:47 linux x86 forth 17:59:51 written in assembler 17:59:57 using NO standard libraires 18:00:02 all i/o done using syscalls 18:00:08 direct threaded 18:00:09 * Xuz aahs 18:00:09 blah blah 18:00:25 I440r: do you wanna stay below the 2k boundary? ;) 18:00:34 why ? 18:00:42 what 2k boundry ? 18:01:27 then you'd have the smallest working forth I've seen so far except one implementation on 6502 *g* 18:01:43 my 8051 forth is goign to be small |:) 18:02:01 th ewhole point to it is to have the smallest forth for the 8051 i can get 18:02:06 and IT is direct threaded too :) 18:02:11 hehe :) 18:02:14 how small? 18:02:25 * Xuz , personally, would like something that can use any library somewhat easily, but doesn't HAVE to if he doesn't want it. 18:03:10 Stepan: you should apply for the IOFCC with your fractal thing above - just do some better layout 18:03:20 isforth will be ble to link to libs etc 18:03:24 but the kernel will not do so 18:04:22 i need to figure some things out with linux kernel tho 18:04:24 * Xuz nods, "I know I CAN with GForth. Except for functions with more than 6 parameters, last time I checked. And I haven't found a way to work with something that wants a function pointer." 18:04:25 Obfuscated Forth contest? ;) 18:04:33 when isforth runs it needs to copy its headers into head space 18:04:40 and stuff like that 18:04:50 ohhh i love obfuscated forth heh 18:04:57 i dont know any tho 18:05:04 forth is very difficult to obfuscate 18:05:07 Stepan: yep 18:05:18 yepp.. forth is unreadable anywas 18:05:29 hard to improve that natural quality 18:05:30 :) 18:05:36 no 18:05:45 badly written forth is just as unreadable as well written c 18:05:57 well written forth is very difficult to obfuscate 18:05:58 * Xuz laughs 18:06:05 --- topic: set to 'forth is clean - c is for men! || : FC RECURSIVE DUP 1 > IF DUP 1 - FC * ELSE DROP 1 THEN ; 42 FC . || badly written forth is just as unreadable as well written c' by oxygene 18:06:37 ercursion is a natural obfuscation 18:06:51 anything you can do WITH recursion - can be done BETTER without 18:06:53 * Xuz thought recursion was an antiobfuscation. 18:07:04 recursion is just a lamers way of itterating anyway 18:07:10 hell no 18:07:12 its evil 18:07:17 What's evil about it? 18:07:23 had a friend write a regeon flood fill 18:07:27 I can't find anything being hard to read in C 18:07:28 his was recursive 18:07:32 mine was itterative 18:07:39 my code was about 50 times faster 18:07:43 a hell of alot smaller 18:07:49 and crashed less :P 18:08:11 Were you using something that did tail-call optimization? 18:08:23 optimizations are ALSO evil 18:08:27 why should iteration bring you any good in favour of recursion? 18:08:32 thats the beauty of forth 18:08:46 you have a 1:1 co-relation between your sources and your object 18:08:54 optimizations destroy this 18:09:17 IIRC, I thought either Color Forth or Machine Forth was adding tail-call optimizationa nd taking the iterating words out. 18:09:49 ugh 18:09:51 evil! 18:10:04 noone needs co-relation if the compilers are correct 18:10:17 Well, co-relation is nice on a level. 18:10:21 that's only for freeks debugging compilers 18:10:32 Not between the source and machine code. 18:10:40 But I want it between the source and the code's view of itself. 18:10:48 ugh - forth is so easy to debug 18:11:00 you can have the debugger literally reverse engineer your code on the fly 18:11:07 have a debugger built in 18:11:24 I have gdb built in my computer. 8) 18:11:28 Which Forth still gives you. Even with tail-call optimization :) 18:11:33 gdb sucks 18:11:40 it resides on the harddisk ;) 18:11:41 realy realy sucks 18:11:47 Why? 18:11:50 it is one of the words debuggers ive ever used 18:11:58 you set a breakpoint on a function 18:12:00 you run 18:12:09 itstops on the second instruction of said fun tion 18:12:18 you set a breakpoint at address 1234 18:12:21 never did that for me 18:12:30 it breaks AFTER executing the instruction at address 1234 18:12:40 you set a break popint inside a loop 18:12:50 it loops 4 or 5 times before it sees your breakpoint 18:12:55 it always doe it 18:12:58 thats not true 18:13:02 ive never seen it behave properly 18:13:30 Send a bug report? 18:13:37 bullshit. I've never seen this behavior since i used gdb first time in 94 18:13:53 is there an example 18:13:54 I440r: what arch/os do you use it on? 18:13:55 every time i run it i get shit like that 18:14:00 x86 18:14:04 linux 18:14:40 the best assembler and debugger i have EVER seen is 18:14:45 a386 and d386 18:14:47 nah, x86 is crap anyway ;) 18:14:50 registered a86/d86 18:14:56 by eric isaacson 18:15:03 he lives only 15 miles from me too 18:15:41 * Xuz wishes he were rich so he could buy that Alpha system he was looking at. 18:16:21 i like the 68k 18:16:33 .o0O Stepan will hurt me for that, but ...) alpha? dead technology ;) 18:16:49 Bah. 18:16:53 It's nice :) 18:17:03 * Xuz would REALLY like a 1Ghz 65864 :) 18:17:08 * Xuz errs 18:17:13 i like motorola procesors 18:17:18 their controlers SUCK 18:17:22 i like intel controlers 18:17:28 their processors SUCK! 18:19:20 but 18:19:35 x86 is the way of the world im affrade :P 18:20:06 * Xuz shrugs, "If you have sourcecode to everything, anyway, you don't need to be bound to a crapulicious and evil microprocessor." 18:20:32 Except for programming languages themselves which need to be written in ASM, but that's the special case. 18:21:11 oxygene: x86 is dead technology, not alpha 18:21:16 Xuz: you only need one language-implementation in a very reduced language (ito complexity) like forth - everything else can be derived from that 18:21:22 Stepan: I told you, yes :) 18:21:23 alpha is developed until 2011, x86 stops at 2006 18:21:40 Stepan: not developed, supported... 18:21:50 wrong 18:21:55 supported til 2013 18:21:59 ;-b 18:22:10 _developed_ until 2011 18:22:25 then they even prolonged stuff... 18:22:25 so, beat that, intel boyz ;) 18:22:31 yepp 18:22:33 I don't like intel :) 18:22:33 x86 isnt going to be dropped 18:22:35 True, you could write C in Forth or Forth in C or whatever, but most people who would want to write an implementation of one wouldn't want to use the other. 18:22:46 motorola wanted to drop the 68k family but way too many ppl used it 18:22:53 too much loss of revenue 18:22:54 Xuz: thats the problem openbios has 18:23:21 but still 68k is too expensive for what it does.. even coldfire 18:23:22 i was goign to write a forth interpreter in bash s ript 18:23:27 and a bash interpreter in forth 18:23:35 and have them recursivly interpret each other heheh 18:23:45 endless circle feeding off itself hehe 18:24:35 like a 2 headed snake devowering itself from both ends :) 18:25:14 --- mode: I440r set mode: +o Xuz 18:26:56 away 18:27:22 Would need to be two-tailed, too :) 18:29:34 :) 18:29:42 it would need to be an x 18:29:43 heh 18:31:13 * Xuz is really annoyed at ANS for the whole business of making it difficult/impossible to fiddle with some things. 18:33:44 i dont like ans either 18:36:39 i like an 83 standard base with enhancements 18:36:46 but still basically the 83 standard 18:36:54 shitty words like "cell" have no place in linux 18:37:07 2+ 2* and 2/ are REQUIRED 18:37:17 Welllllll. . . . . 18:37:26 if ur crappy cell size if 4 then you define 4* and 4/ and 4+ too 18:37:26 Cell can be useful. 18:37:32 its ugly 18:37:42 it hides what you are actually doing 18:37:48 portable code is jack of all 18:37:51 not master of one 18:38:19 Not really. You're just saying that you're using "one address-unit-sized chunk" rather than "one 32-bit chunk" 18:38:22 isforth will NOT be portable at all 18:38:48 If you have the same Forth on different architectures, being able to move code between them might be nice. 18:38:55 yes 18:39:13 but being able to compile isforth kernel on an x86, an alpha, an zx81 etc etc etc 18:39:16 is totally bogus 18:39:27 g'd night 18:39:27 you should have one version of the kernel for x86 18:39:33 another for alpha 18:39:39 another for the sinclair zx81 18:39:53 application code should compile and execute identically on all of the above 18:40:32 That's what CELL les you do. 18:40:46 no 18:40:59 well yes 18:41:04 Obviously if you're writing a Forth in assembler language, you wouldn't expect it to be portable on that level. But you can write the same Forth (witht he same wordset and philosophy) on different systems. 18:41:04 but it also hides whats going on 18:41:18 That way you can decide to ahve 16 bit words or 32 bit words or even 64 bit words. 18:41:21 correct thats teh isforth motto :) 18:41:40 ONly on one level. 18:41:46 On another level it makes what's going on clearer. 18:42:07 well i disagree 18:42:11 i have a nice quote for you 18:42:14 from ibm 18:42:21 im paraphrazing it slightly but.... 18:42:37 "we store the value of PI in a variable so that should the value of PI ever change....." 18:43:03 people who make up NAMES for every fucking value are burying information in alph visual clutter 18:43:21 specially when "cell" could be 2, 4 16, 32 18:43:32 If you're planning on running your program in two parallel universes, making pi a variable would be a very good idea :) 18:43:34 if i want to do 2+ 18:43:38 i want to do TWO plus 18:44:00 if i dont know the cell size of the machine my code is running on - i should give up my day job 18:44:09 Same way if you want to run your program on a 16 bit computer and a 32 bit one, being able to just say cell+ or cells is very useful. 18:44:44 Some parts of the code don't really need to care. Or you could have [if] and friends have conditional definitions at the beginning for the functions that do. 18:44:47 well - i think it causes more problems than it fixes 18:44:54 just like the "OOP" philosophy 18:44:59 hide everything from everyone 18:45:09 bury the facts in a heap of obfuscation 18:46:29 if a function in my program could be used in multiple locations 18:46:32 i say it should be shared 18:46:43 what was it to get an array? 1000 cells allot compile foo? 18:46:44 OOP would say "no - this function belongs to this blah blah" 18:46:46 and not allow it 18:48:31 im bvery set in my ways 18:48:37 i hate the way most people code 18:48:45 create foo 1000 cells alot 18:48:50 i even hate the way most people format their sources 18:48:54 thanks 18:48:55 ya 18:49:05 thtas the way i would do it 18:50:03 --- quit: I440r (Read error: 104 (Connection reset by peer)) 18:50:09 --- join: I440r (mark4@pool-63.52.217.50.ipls.grid.net) joined #forth 18:50:10 Well, I dislike the way most people code, but for different reasons. 18:50:30 OOP sucks for many things. However it might be useful for some things. I dislike (in the extreme) languages that force you to stick to their idea of how code should be written . . . OR ELSE. 18:50:34 Welcome back. 18:50:51 --- mode: Xuz set mode: +o I440r 18:53:49 --- join: Speuler2m (~l@c38038.upc-c.chello.nl) joined #forth 18:54:24 * Xuz waves to Speuler2m 18:55:13 hi all 18:55:59 just stretched out, but started up the box to do a little bit more forth hacking 18:56:28 might fall asleep anytime soon ... 19:00:43 i wonder whether 8 but jumps would be enough for bytecode forth 19:06:55 8 bit ... 19:17:37 : fak ?dup if dup 1- recursive fak * else 1 then ; 19:18:42 Stepan: default_decode are all the tokens you didn't implement yet? 19:19:09 yep 19:19:40 --- join: TheBlueWizard (TheBlueWiz@ip-216-25-202-99.vienna.va.fcc.net) joined #forth 19:19:53 hiya all...wow, big crowd tonite 19:19:59 : fak dup 1 > if dup 1- recursive fak * then ; 19:20:18 --- mode: ChanServ set mode: +o TheBlueWizard 19:21:10 Speuler2m: recursive? not "recurse" ? 19:21:15 whose creation is the topic definition ? 19:21:16 * Xuz unafks 19:21:27 * Xuz oopses, wrong channel 19:21:39 Speuler2m: how does your implementation react on input <1 ? 19:21:47 Speuler2m: collab of stepan and me 19:22:41 hmm...both FC in /topic and fak presented recently are buggy 19:22:53 TheBlueWizard: why? 19:23:03 TheBlueWizard: FC works on OpenFirmware afaik 19:23:04 2nd impl should return parameter unchanged 19:23:22 FC calls itself right away...infinite recursion as a result 19:23:59 also, "0 fak" returns 0...wrong 19:24:15 : fak ?dup if dup 1- recursive fak * else 1 then ; 19:24:19 1st impl 19:24:35 TheBlueWizard: at least in OF recursive only _marks_ as recursive, recurse does that explicit recursion 19:25:30 ah....must be a dialect :P 19:25:49 then in that case FC is correct 19:25:51 pretty weird one indeed 19:26:43 not weird....factorial rules are: 19:26:52 i liked old-style "myself" better 19:27:00 --- quit: Stepan ("[x]chat") 19:27:01 (1) if input is zero, returns 1 19:27:30 (2) else return a product of that input times a factorial of input-1 19:28:21 if input < 0 ? 19:29:01 not defined...actually it is meaningless anyway 19:29:51 maybe that should return -1 or something to denote error - but that's also a matter of taste/style 19:29:56 if gamma function were used instead of factorial, and negative integers are mapped to gamma's equivalent, it gives infinities as a result 19:29:57 thus, infinite loop would be ok ? 19:30:29 if you like to see computer crash, or enjoy getting core dumps, fine 19:34:30 computer supposed to crash on arithmetic overflow ? 19:34:51 or infinite recursion ? 19:36:22 there are two schools of thought: one, that an app should be able to handle errors gracefully (which a HUGE majority subscribes to), and (2) it is your responsibility not to cause that in the first place (a rather vocal yet extremely tiny minority do) 19:36:23 (probably gets to overflow before it runs out of stack) 19:37:52 * TheBlueWizard favors graceful handling approach, where applicable 19:37:55 so the app must fix the user 19:38:39 and the user has to complain... 19:38:48 2nd school probably states: how can what has been specified by user be an error ? 19:39:42 :) 19:39:53 1st school says: user is potentially dumb 19:40:21 yeah...the second school basically say: I don't see any problem....what you get is what you get.... 19:40:23 ms subscribes to 1st school with a small change: "user is always dumb" 19:40:42 hm... what you get is what you request? 19:40:58 * TheBlueWizard chuckles..."Good way to describe M$'s approach" 19:43:08 a simple example: starts an app and it pops up a question: "Enter filename to read from:", and you typed in a nonexistent filename (resulting from a typo, perhaps) 19:43:26 first school: Put up a message "There is no such file...." 19:43:54 Second school: (depoending...) *crash*, or gives garbage data 19:44:03 creates file... 19:44:14 zero len 19:44:39 Speuler2m: creates a handle for that file without creating it - ie. you can work on it as if there were a zero len file 19:45:32 after creating the file, the user is right again. 19:46:32 and open file r/w can conveniently create a file if it doesn't exist 19:46:43 _can_ 19:47:04 does rerading a nonexistent file automatically create a file? what if a devious attacker exploit that to clutter up the directory with junk filenames? :P 19:47:14 reading even 19:47:31 devious attacker is always right too 19:47:55 we have to make those attackers WRONG :) 19:48:31 TheBlueWizard: therefore that app opens as if it exists but it's zero and only creates on explicit save - and then checking all the user-rights... 19:49:48 if user got right to start app, why shouldn't he have rights to save files with it ? 19:50:17 if an attacker can run it, he would likely have the "desired" rights anyway 19:51:00 probably. it's not on app-level that privileges need to be checked 19:51:28 Speuler2m: maybe he may run that app but not access the directory writable? 19:51:43 of course that should be caught earlier 19:51:48 again, not the app should check that 19:52:19 if app denies, a program compiled to write files wouldn't 19:52:55 .o0O we need a completely different security design ;) 19:53:06 * TheBlueWizard nodsnodsnods 19:53:16 security is a complicated affair 19:53:29 * oxygene thinks the concept of VSTa is nice 19:53:45 well, here's your sandbox/home dir, play with it 19:54:01 system files immutable 19:54:03 Speuler2m: ... and don't touch your quota ? 19:54:40 problem are files which may be touched/updated by serveral users 19:54:47 several 19:55:10 versioning fs? 19:55:20 that may be an answer 19:55:32 undo effects of user x 19:55:43 so every user may have his own branch which affects his personal quota 19:55:59 other users may merge the other branches into their own... 19:58:03 a file would basically just be a pointer to its version in the version archive 19:58:37 Speuler2m: accessible via filename,user,release or something like that 19:59:03 filename, version could be a good start 19:59:41 version snapshot a working system, to be able to fall back 19:59:47 * TheBlueWizard feels it is getting Rube Goldbergish...and therefore wrong 19:59:50 hmmm the user has to be in the version, too... maybe the version something like user#number - "user" only gives the latest version of him 19:59:50 if something gets deleted/demolished 20:06:00 --- join: Stepan (~sr@dialin-145-254-228-033.arcor-ip.net) joined #forth 20:06:05 re 20:06:21 hiya Stepan 20:06:24 wb 20:06:44 --- mode: oxygene set mode: +o Speuler2m 20:06:46 --- mode: oxygene set mode: +o Stepan 20:07:17 --- quit: I440r ("Trillian (http://www.ceruleanstudios.com)") 20:07:54 Stepan: I guess the fcode return stack should be separate from normal forth return-stack, hm? 20:09:29 no, why? 20:10:13 Stepan: hmm... because there isn't any "normal" forth word at these addresses 20:10:44 Stepan: therefore there's special care to be taken - but maybe that's even better ;) 20:17:40 hmmm... gforth segfaults *g* 20:18:45 yah *g* 20:20:43 normal forth word? 20:20:53 no. no extra stacks. 20:21:06 we want a small implementation 20:21:14 i dont see we need that 20:21:39 a fcode word is just another flag to a forth word, like immediate 20:21:56 or am i wrong? ;) 20:23:11 Stepan: an fcode word is a forth-word (maybe anonymous) that appears in the fcode-lookup table 20:23:20 Stepan: or is there any flaw-by-design? 20:35:13 why dont we just use fcode words as normal forth words with the special attribute that it can occur in fcode binaries? 20:35:33 any fcode word has to have an execution token, exactly like a normal forth word does 20:35:36 Stepan: as we still don't have some useful mapping for the fcode-numbvers 20:35:58 what do you consider useful mapping? 20:36:12 Stepan: eg. your dictionary[0x1000] 20:36:27 that sucks anyways and has to go away 20:36:42 it doesnt cover instance specific words and variables 20:37:47 it seems to me that it's still not clear how fcode is handled - as runtime stuff, as one-time-compile to {c,forth,asm} or as jit-compile to {c,forth,asm} ;) 20:38:08 there is no jit 20:38:37 and there is never compiled anything to asm/c.. open firmware is interpretative 20:39:24 grr.. my phone update did not work 20:39:51 read the article from e.rather on l.c.f - it may be compiled even to python if one likes (one wouldn't do in practice ;) but it's not defined how to handle that 20:40:08 no it may not. 20:40:26 any compilation would complicate stuff more than necessary 20:40:51 of course we won't do it for simplicity... 20:41:16 i read that stuff from elizabeth, but i don't see any point in something being different from plain interpretation 20:42:35 We don't need speed, we need it stable and small. 20:43:03 so we interpret it as as far as I could see it fcode-stuff is mostly packed into b(:)-definitions 20:43:45 b(:) is the fcode word tokenized when : is encountered 20:44:49 I know - and it looks like it's not very useful to actually do anything except lots of word-definitions inside a package- at least I haven't seen something else yet 20:46:06 partly true 20:46:25 it generates a package and adds information to the device tree 20:46:38 that is not done within a colon definition 20:47:17 but all driver functionality is realized by defining words or "filling" defer words 20:49:08 an fcode program may use forth words when it knows their xt, and the other way round can a non fcode forth program call an fcode word when it knows it's name or fcode number 20:49:44 this interoperability makes me scared of different stacks 20:49:44 hmmm... a normal forth word can use fcode words only when its package is opened, right? 20:50:09 or when it's one of the standard words 20:50:14 ok 20:50:30 so we can use one global fcode#-table 20:50:52 in a package, you normally need an instance to execute a method, but not always 20:51:00 which may change, words that get deleted from that table should be deleted from dictionary, too... 20:51:45 so it may even be possible to run a method directly from fcode? or could be establish some "if word foo is requested compile it then run" behaviour ? 20:51:50 but 2 packages can have the same words (same # and/or name) 20:52:06 hmmm. what if one package requests such a word from the other package? 20:52:10 you can run a method from fcode yep 20:52:40 no, the word is "compiled" when the package is read. 20:52:51 ah, because of package-open 20:53:05 erm it's called open-package iirc ;) 20:53:11 executing the package only builds the structure in the devtree 20:53:18 for later use with open-package 20:54:03 so we can have something like /sbus/foo/bar/#300->adress-of-word as mapping? 20:54:27 hmmm 20:54:46 not #300 of course ;) 20:54:52 something like #800 ;) 20:55:13 my current approach forsees a linked list in the package structure where all words defined by a package reside 20:55:18 hehe 20:55:39 eeks, pointer-madness!!! 20:55:56 this comes very close to it,... a word in the package always overwrites a word in the default table 20:56:20 why madness? 20:56:37 I have some pointerphobia ;) 20:56:42 :-) 20:56:50 esp. in that non-intuitive style of C 20:56:56 bla :) 20:57:05 it's just the most natural way 20:57:31 *giggle* 20:57:38 * oxygene is not natural ;) 20:58:04 * Stepan feels some forth c interference in the air 20:58:10 hehe :) 20:58:51 * oxygene rather stays with the core-packages et al. 20:59:32 this mapping,... how would you use that 20:59:52 it would also need a name-mapping 20:59:57 damnit.. it's both assembler in the end... it can't be that hard to find the best way :-) 21:00:25 so both /sbus/foo/bar/baz and /sbus/foo/bar/#800 point to the word in the fcode-stuff 21:00:33 tell me how a dictionary works in forth normally 21:00:47 you "compile a word into the dictionary"... for example 21:00:47 if any of these is requested, the scope is set that directory and the code is run 21:00:52 compile a word: 21:01:31 i mean, what is the dictionary... flat memory containing information? or does it take some additional information on each word in the dictionary itself? 21:01:39 or is that seperate in a lookup table? 21:01:58 the format is (at least similar to) the following: 21:02:09 I have to know more about these internals and i dont get a clue just by reading this4th, vnpforth, et al 21:03:28 len_of_wordname wordname statusbyte(immediate,smudge,...) link_to_previous_word link_to_handler(normally NEXT) pointers_to_words 21:04:50 so it's completely selfcontained - if may be different of course (eg. i440r does it in a different way) 21:07:29 pointers_to_words is the compiled program? 21:07:44 yep 21:07:48 what is smudge? 21:08:08 a new word gets the smudge-bit set 21:08:14 it gets cleared when the word is closed 21:08:30 has to do something with saneness or something 21:08:41 so the dictionary is a mixture between a linked list and a stream 21:09:00 It's so it's not visible to dictionary searches until it hits the ; 21:09:02 right... you could also split out the stream by placing a second link to the streams 21:09:03 yepp. cool.. so smudge is deleted when ; is encountered? 21:09:10 So you could (if you wanted) redefine . so it called the old . 21:09:16 Xuz: ah, ok... 21:09:27 Xuz: and to prevent unclosed definitions, right? 21:09:58 Xuz: how? 21:09:59 Yes. Though I think most systems simply forget the word if the compilation errors out or something. 21:10:17 by placing the pointer to the old word into the stream of the new .? 21:10:22 Well, let's say you wanted . to print all the numbers in yellow. 21:10:46 You could do something like : switch-to-yellow . switch-to-white ; 21:11:11 ok... 21:11:22 ah. i get it.. because the new . is not visible yet the old one gets used when . is encountered 21:11:49 Stepan: right, as the dictionary is searched by using those linked-list between words... 21:12:28 And new definitions don't get REPLACED, they just get obscured. 21:12:45 So something that uses . will still use the old ., unless IT was defined after the new . was defined. 21:13:35 Xuz: and recursive (in the meaning of the /topic-definition) clears the smudge-bit from the beginning on... 21:13:44 hm.. when implementing fcode, what would speak against using the same scheme for fcode words instead of a fixed token_t dictionary[0x1000]? 21:14:16 * Stepan feels some warming light.. 21:14:21 hmm... nice idea 21:14:39 that way we can FORGET newer, overlaying definitions when closing packages 21:15:03 with the difference, that there is no length and name but simply two bytes as identification... 21:16:02 Well, it depends. 21:16:15 Some words have 'recurse' instead of 'recursive' which I think is better. 21:16:31 an fcode word can have a name, too 21:16:39 Stepan: ahh, right... 21:16:46 then it gets an additional field 21:16:49 oxygene: why would it not have a len? 21:17:19 Stepan: the len is only for the name - as I thought we'd drop the name I also wanted to drop the len of course :) 21:17:43 * aaronl is back (gone 06:17:30) 21:18:51 yepp.. and whether that field is available can be triggered by a flag in the status byte 21:18:54 ? 21:19:19 yepp.. indeed... 21:19:28 Well, recurse doesn't give it an extra field, so much as just put the XT in the stream. 21:20:04 not recurse, rather whether it's an fcode word or a normal forth word 21:20:08 Xuz: of course... and it keeps the smudge-bit the way it should be 21:20:39 if it's an fcode word, it needs an additional field fcode# but may lack word name 21:20:41 Oh! 21:20:51 Sorry, I grouped that in with the wrong thread. 21:21:08 Stepan: hmm... the namespace of fcode# is restricted to 0xfff - so let's define 0x4fff or something like that as "this is a normal forth-word" designator 21:21:12 hehe.. multitasking discussion is hard at 6:20 in the morning 21:21:29 oxygene: sounds good to me 21:21:46 Stepan: so we have 2 bytes more for non-fcode words but no extra cases.... 21:22:14 i wonder whether a word created by a package always has an fcode # 21:22:29 is that important? 21:23:14 I think export-only words (ie. not used from the package itself) may be name-only 21:23:20 i am not sure. just trying to complete the picture 21:23:44 yepp.. that would be all package methods probably 21:36:09 ok.. how is a defer word handled in the dictionary, and how a variable? 21:38:07 Stepan: see variable - it's a special type of creating a word 21:38:17 Stepan: defers *thinking* good question :) 21:40:16 defer words is something i really suppressed up to now, but unfortunately openfirmware is full of it 21:40:25 hehe 21:40:31 it could work with ' 21:41:06 all the console functionality is a weird interaction of base defer words getting initialized by the display drivers and being used by the terminal emulation package 21:41:12 ie. a run-time search for that word 21:41:21 ' gets the execution token of a word? 21:41:24 How's it work as in "How do I use one?" "What kind of mechanics are behind it?" or "How do I implement DEFER/IS in ANS forth?" 21:44:11 Xuz: what i beliefe to know is that a defer word is an "empty" word that can be overloaded, and I've seen code snippets overloading/implementing defer words, but I don't know any more 21:44:30 so what i need to know is mostly the mechanism behind it.. 21:44:38 Stepan: look into ' 21:44:47 (1) You can't define DEFER in ANS Forth because ANS Forth sucks. 21:45:01 Stepan: it does a search through the dictionary from newest to oldest and stops at the first hit... 21:45:46 Stepan: so when calling a defer word called foo it does a search for foo and stops when it 1. got something, then runs it, 2. hits itself, then stops... 21:45:48 oxygene: but what does one need a defer word for then? 21:46:05 ah 21:46:06 (2) You usually use something like NEW-WORD DEFER 21:46:06 Stepan: it hides that search-logic etc. 21:46:25 Then you have an XT on the stack and use IS NEW-WORD 21:46:58 The way I've seen it implemented is in systems where you have (for example) a NAME, BODY and CODE field in the dictionary. 21:47:30 Normally the CODE points to something with a name called DOCOL which handles a colon definition and whatnot. And the BODY points to the XTs. 21:48:13 With DEFER you would have the BODY point to the XT of the word you want to run, then have the CODE field point to a routine that calls that XT's code section on its BODY. 21:50:39 And. . . . let's say you had a program that did a bunch of stuff and wanted to confirm each step by default. 21:50:39 on it's body? so defer word behaves as it is the defer word but another one is executed instead? 21:50:55 It's basically just pointing to the XT of the other word, yes. 21:51:10 gotta go...bye all (it was fun listening...) 21:51:21 bye TheBlueWizard :-) 21:51:25 --- part: TheBlueWizard left #forth 21:51:33 You could have a word called CONFIRM and make it a DEFER word. 21:52:15 By default you could do 'REALCONFIRM IS CONFIRM. REALCONFIRM would actually prompt the user and whatnot. 21:52:34 But if the user decided to run it in batch mode or somethign and not have to confirm everything you coulde do ' SOME-NOOP-OR-OTHER IS CONFIRM 21:53:20 that's a nice hack :) 21:53:20 Then your functions like DANGEROUSDISKOPERATION could jsut call CONFIRM and not have to test any flag at all to see if they were supposed to ask for confirmation or not. 21:54:24 Forth is a beautiful thing :) 21:54:55 Consider it's small and fast and you can get almost-first-class-functions, almost-closures, and almost-continuations (supposedly, I'm not quite sure how) out of it. 21:55:06 You probably have to violate ANS :) 21:55:27 --- quit: Speuler2m (Read error: 113 (No route to host)) 21:56:03 hehe. 21:56:19 Xuz: are you familiar with open firmware? 21:57:22 Or like he was saying with Open Firmware, you might have I/O functions like . and whatnot that need to do different things depending on hardware connected. Make all of the words for it DEFERRED and just IS them after initializing hardware. 21:57:52 I was playing with it once, but then someone came in, yelled, "Get the hell away from my Sun!" and chased me off with a stapler. 21:58:34 yep with defer you can handle interaction between the drivers fast and easily 21:59:52 oxygene: while playing with that mandelbrot thingie i found another few bugs in smartfirmware from codegen 22:00:02 but i did not track them down 22:00:29 sad enough feval is not fully capable of do..loop constructs 22:00:29 Stepan: smartfirmware is so smart it even makes human-like mistakes ;) 22:00:38 :-)) 22:00:47 * Xuz giggles 22:00:52 Stepan: yeah, the code looks strange 22:01:04 heh.. my code looks beautiful 22:01:05 --- mode: Stepan set mode: -n 22:01:05 --- mode: ChanServ set mode: +n 22:01:06 --- mode: Stepan set mode: -n 22:01:07 --- mode: ChanServ set mode: +n 22:01:11 argl 22:01:13 sorry 22:01:38 * Xuz snickers 22:01:39 * Xuz afks 22:04:39 g'night Xuz.. thanks a lot! 22:09:08 * Xuz unafks 22:09:11 Sleep well. 22:19:24 --- quit: Stepan ("[x]chat") 22:29:03 --- join: Stepan (~stepan@dialin-145-254-228-033.arcor-ip.net) joined #forth 22:29:06 re 22:29:38 Welcome back. 22:30:04 :) I moved over to my room 22:30:27 much nicer an warm and causy 22:30:43 Excellent. 22:32:52 so i guess ans forth is just like ansi c somewhat limited to no bells and whistles? 22:33:19 Well. . . . . 22:33:56 One of the goals of ANS forth was to make existing forths have to do as little as possible to be conforming. 22:34:17 So, for example, unlike Forth-83 it didn't even specify what things like < and > would return to mean true. 22:34:46 Which takes away the ability to do things like use truth values in mathematical expressions. 22:41:54 what's a create word? 22:42:11 :) sorry for all these stupid questions.. 22:42:50 It's a word that calls create :) 22:43:11 ":" "variable" "constant" "dictionary" ... 22:44:40 As well as anything you might do with CREATE/DOES> 22:44:54 ah 8) 22:45:46 hmm.. if a word is deleted from the dictionary, do normal forth engines reuse the dictionary space? 22:45:50 create/does> is one of the niftiest ideas that Forth has. 22:45:56 Words don't get deleated from the dictionary. 22:46:07 Xuz: forget ? 22:46:22 Stepan: you can only reclaim parts from the dictionary at the top 22:46:31 That's a special case :) 22:46:40 Stepan: ie. : a ; : b ; : c ; forget a removes a, b and c 22:46:46 If you forget "foo" you destroy everything from FOO on up. 22:46:47 so every package needs it's own dictionary 22:49:47 Depends on the size of the package. I don't think it's really all that common to have a running program need to forget a word. IIRC, it's mostly used in development. Start coding, working, trying stuff out, and then 'forget' it later on if it's lousy. 22:50:47 Xuz: I think it's needed to be able for implementing OpenFirmware :) 22:51:12 Oh? What do they do with it in there? I'm curious? 22:53:54 Xuz: opening and closing packages all the time - that means installing instances of certain words from binary-representation (fcode) into something useful 22:55:58 That might be useful :) 23:01:39 * Xuz thinks it would be nice to have a Forth where you : would be threaded and :opt would do native-code-with-optimization. 23:07:15 Or even have :thread and :opt, with : vectored. 23:11:03 * Xuz hmmmms. . . . he should write another forth :) Only one he's done was for the 65816 and it was just a straightforward one because Mad Apple Forth was atrocious. 23:26:00 * aaronl is away: early sleep 23:35:53 n8 23:35:56 --- quit: Stepan ("Client Exiting") 23:59:59 --- log: ended forth/01.12.30