00:00:00 --- log: started forth/02.11.29 00:15:12 --- join: bwb (~bwb@ip68-4-124-131.oc.oc.cox.net) joined #forth 00:35:12 --- quit: Serg_Penguin (Read error: 104 (Connection reset by peer)) 00:35:13 --- quit: bwb (Read error: 104 (Connection reset by peer)) 00:36:26 --- join: Serg_Penguin (~Z@nat-ch1.nat.comex.ru) joined #forth 01:11:11 --- join: [crc] (~crc@VA1-1G-u-0216.mc.onolab.com) joined #forth 01:15:27 --- quit: onetom (Read error: 54 (Connection reset by peer)) 01:16:09 --- join: onetom (~tom@novtan.bio.u-szeged.hu) joined #forth 02:12:36 --- quit: Serg_Penguin () 02:31:19 --- join: o- (~o@nzym.fi) joined #forth 02:53:42 --- join: Serg_Penguin (~Z@nat-ch1.nat.comex.ru) joined #forth 02:54:08 --- part: Serg_Penguin left #forth 03:28:59 --- join: Serg_Penguin (~Z@nat-ch1.nat.comex.ru) joined #forth 05:08:09 Hi. 05:08:17 'morning 05:09:11 * Speuler yawns 05:12:08 Good "morning". 05:24:30 --- quit: Speuler (Read error: 60 (Operation timed out)) 05:37:22 here morning is no damn good 05:37:52 cold and high pressure hit 05:38:05 2nd mostly for old men w/ ill heart 05:38:53 :-/" 05:45:03 how is at u'r place ? 05:46:18 Not that cold, a few degrees below 0. 06:08:18 here -25 at nite expected, and snow is like srapnel 06:09:45 Nasty. 06:16:00 --- join: Speuler (~l@mnch-d9ba4e6c.pool.mediaWays.net) joined #forth 06:16:17 just from outdoors (we sit in basement, go to WC via street into main door) - it's horrible 06:16:56 sounds better than to shit into the river 06:17:14 shit in a bucket and carry it to the WC when it is full? 06:17:49 no, no =8-( 06:18:11 =8<( 06:18:21 < is curtain crimple on the nose 06:18:33 0D 06:18:39 0D ? 06:18:43 er =) 06:18:46 er =D 06:18:52 :) 06:20:37 freeze-dry and powderize 06:20:52 if u piss at street now u may get a fancy arc of yellow ice, and get u'r frozen pepper sound like 'tuxracer' game soundtrack 06:21:53 * XeF4 has only seen that when it was <-30 06:22:46 remember nanook's mother's advice 06:23:28 ??? 06:23:50 that was "watch out where the huskies go, and don't you eat that yellow snow" 06:25:01 * XeF4 wants -25 06:25:21 not *now*, because I'm almost out of firewood 06:25:41 but soon 06:34:41 --- quit: Robert (forward.freenode.net irc.freenode.net) 06:35:25 --- join: lament (~lament@24.78.145.92) joined #forth 06:37:27 --- join: Robert (~Robert@robost86.tsps1.freenet6.net) joined #forth 07:00:59 --- quit: Serg_Penguin () 07:41:50 --- join: neobrat (neobrat@0-1pool78-159.nas6.salt-lake-city1.ut.us.da.qwest.net) joined #forth 07:42:05 howdy, all! Hope everyone had a happy Thanksgiving! 08:13:51 --- join: ASau (~asau@158.250.48.197) joined #forth 08:14:18 Good evening! 08:16:59 Hello. 08:18:12 tach 08:18:14 Today I've found a way to compile an app. to run it separate from Forth. 08:18:42 Anyone interested? 08:18:59 Hm? 08:19:09 Tell us. 08:19:51 You have: Forth with access to mass storage (blocks or files). 08:20:12 You can load a binary and run it. 08:20:38 So you want to get a binary image ready to run. 08:21:00 Main idea is not to write a true compiler, 08:21:25 but to write something, that compiles itself into binary image. 08:21:57 How would it do that? 08:22:51 If you design bottom-up, than you have one hook with forward pointer 08:22:53 cat interpreter.src | virtualmachine 08:22:56 :) 08:23:27 (main entry point), 08:23:56 and the rest is defined before it is used. 08:24:23 echo -e "\opcode\opcode\opcode.." > virtualmachine 08:24:38 Yes, something like that. 08:25:00 But you can use this: 08:26:16 : : MY @ TARGET , ; 08:26:50 ASau: you use fig or f79 08:26:52 ? 08:26:52 Your new "colon" does 2 main things: 08:27:06 Sp.: fig. 08:27:14 veteran ? 08:27:50 or f83/ansi unwilling ? 08:28:00 No, that is the most simple Forth I am able to find in source, 08:28:19 so I am able to warp it any way I like. 08:28:32 which os do you use ? 08:28:44 DOS :) 08:28:57 i might have something for you there 08:29:18 a metacompiling kernel, which can be extended to full forth :) 08:29:26 instead of the other way around 08:29:31 I don't like all that C-written forthes of ANS standard. 08:29:52 loading forth source into the metacompiling kernel is actually done by command line redirection 08:29:59 cause kernel has no file i/o 08:30:16 I use it already :) 08:30:42 kernel compiles its own source without adding any source file ... 08:31:01 Forth src.: .... SAVE <><> :) 08:31:21 Another way: 08:31:48 HEX xxxx IN ! 08:31:50 :) 08:32:27 Too many ways to go without file i/o. 08:32:39 that still requires you to get the source into mem 08:33:05 copy /b forth.com + my.f temp.com 08:33:07 :) 08:33:31 how'd you re-create forth.com ? 08:34:02 i'd do that by "type kernel.src | kernel.com" 08:34:42 CREATE (SAVE) HEX 4x C, ( ... ) E9 C, NEXT HERE - 2+ , 08:34:54 (not called forth.com because it aint a forth at that point) 08:35:00 : SAVE BL WORD HERE (SAVE) ; 08:35:04 SAVE FORTH.COM 08:35:47 no. you SAVE it that way, but you don't GENERATE it 08:35:56 Since ZX it is quite usual to write in code. :) 08:36:00 i GENERATE kernel this way 08:36:24 I looked at postForth. 08:36:27 or you would have to c, the whole kernel 08:36:38 that's a far cry from metacompiling :) 08:36:43 Asm rules :) 08:37:50 The way of "type my.f | forth.com" is known to me. 08:38:25 One addition: "-lf my.f | forth.com" 08:38:26 but probably not a kernel which is a metacompiler w/o any additions 08:38:46 at least, i don't know any other 08:38:57 Read the fig installation manual. 08:39:35 what for ? 08:39:36 There is a distinctive feature of figF., 08:39:50 one asm listing for kernel. 08:40:25 that's not a property for fig alone 08:41:01 I've not said it is feature of figF. only. 08:41:37 so you use an assembler to create the kernel. i use a kernel to create a kernel 08:41:57 Something has to be first. 08:42:07 Binary kernel or asm. kernel. 08:42:19 I prefer asm. 08:42:22 co-evolution 08:42:34 starting out from asm 08:42:55 As I can change asm kernel and find the best suited for me. 08:43:21 in my case, the kernel is the assembler too 08:43:34 well, subset 08:43:44 just what's required for the kernel 08:44:28 Of course kernel can not use the whole command list :) 08:44:34 the mnemonics look like "(ip+)>w" and the like 08:44:58 Do you use preprocessor? 08:45:01 nope 08:45:21 : (ip+)->w opcode c, opcode c, ... ; 08:45:37 I 've undestood. 08:45:46 many primitives have been "virtualized" that way 08:46:19 again: ONLY the kernel is required to compile the kernel source 08:46:44 no src massaging by additional programs 08:46:55 --- quit: lament ("mental mantle") 08:47:23 You're using precompiled binaries to get the kernel. AIR? 08:48:07 i use the result of a kernel compilation to compile a kernel. no foreign code at all 08:48:25 That is like F83, I've seen somewhere around. 08:48:49 nope. f83 requires you to load the metacompiler source before you can create a kernel 08:48:58 i use the kernel to compile the kernel source 08:49:15 the kernel IS the metacompiler 08:49:28 and the metacompiler can be extended to become a full forth :) 08:49:47 F83 full forth is extended to become the metacompiler. 08:50:36 OK. And what's your OS? 08:51:02 it was developed for a system w/o os, and was ported to dos later on 08:51:37 I'm going another way: DOS -> own OS. 08:52:03 Read: "own OS" = "Forth OS". 08:52:19 you probably came to the right place, there are or were many forth os activities here 08:52:30 at one point, 5 or so 08:52:53 know valdocs ? 08:52:56 Do you have your Forth OS ready? 08:53:09 valdocs? 08:53:18 What's it? 08:53:29 i'm not of the forth os conspiration 08:53:41 but i like stand-alone forths 08:54:00 os-less forths 08:54:09 you could call those forths "os" 08:54:26 as it takes over the function traditionally offered by an os 08:54:34 and bios 08:54:56 valdocs might have been the first forth-os attempt 08:55:00 epson 08:55:12 about 20 years ago 08:55:39 that long after forth has been used stand-alone on different machines 08:56:08 what is the diff between a forth os and a stand-alone forth ? 08:56:15 I use to equal "Operating System" and "Working Environment". 08:56:29 So os-less Forth is Forth OS. 08:56:58 i don't know. i don't tend to call stand-alone forth forth-os 08:57:20 and i assume there must be something more to it 08:57:28 --- join: proteusguy (~username@65.191.88.177) joined #forth 08:57:32 I met a classification of OSes where the special class of OS is mentioned 08:57:59 One prog.lang. OS, or OS-PL. 08:58:20 an os should allow you to load and execute binaries 08:58:25 or ? 08:58:48 E.g., stand-alone Forth, Basic on MSX, Basic on XT, Basic on ZX Spectrum etc. 08:58:51 would loading and compiling, running from source meet that too ? 08:59:32 LOAD "" :) 09:00:16 Why binaries. 09:00:30 distribution/exchange 09:00:46 loading speed 09:00:50 IIRC, Lisp-Ms had no binaries other than LISP. 09:02:36 (Your Forth allows you do this: xx BLOCK EXECUTE ) 09:03:05 it would if block support would be loaded 09:03:34 but 09:03:46 then you run xx block execute again 09:03:49 CREATE R/W HEX xx C, xx C, xx C, ( ... ) R/W 09:04:02 you "shell" to another program ... 09:04:09 yy block execute 09:04:28 where would that binary be loaded ? 09:04:41 how, if not on known address, would it be relocated ? 09:04:45 PF, of course. 09:04:48 writing relocatable code ? 09:04:57 not the domain of usual forth 09:05:27 Use absolute code. Or relocate in compile time. 09:06:25 CREATE R/W HEX xx C, ORIGIN xxxx + , ( ... ) 09:06:35 ok.compile prog1. run. shell. compile prog2. run . start prog3. forget prog1 and 2 ? 09:07:19 At your opinion. 09:07:42 You may chase of both. 09:07:52 ...choose... 09:08:50 wouldn't work 09:09:00 ?? 09:09:11 : word1 foo ; : word2 bar ; forget word1 09:09:17 word2 ???? 09:09:40 : word1 ; forget word1 : word2 ; 09:09:54 ah. a single-tasking system :) 09:10:12 It is if you use only pre-defined words. 09:10:19 Define your own. 09:11:05 Some USER-spaces will save you. :) 09:11:24 how would you get rid of compiled programs, started before another one was started ? 09:11:59 One way is to make one more USER-space. 09:12:00 can forget them only after the following processes have been quit too ? 09:12:15 FSLQ 09:12:30 first start last quit :) 09:12:32 FENCE and DP may be USER variables. 09:12:47 how could that help ? 09:13:21 problem is not solved by just compiling to several voc threads 09:13:22 You'll have tree-organized splitted dictionary. 09:13:41 you have / can have those with vocabularies too 09:14:03 implementation dependent 09:14:21 Everything is implementation dependent. 09:14:43 interesting talk but i need to cut it short. need to put food on the fire 09:14:50 Some implementations are just close enough to see no (or small) defference. 09:14:53 people will come soon, 09:15:14 don't want to start cooking when they've arrived already 09:15:32 See on the net? 09:15:39 i'll be around 09:15:49 regular visitor of this # 09:16:00 OK. 09:16:04 l8er 09:16:51 Bye! 09:26:26 --- quit: neobrat () 09:44:47 Bye, all! 09:44:49 --- quit: ASau ("Toffee IRC client for DOS v1.0/b535") 09:51:32 --- join: lament (~lament@24.78.145.92) joined #forth 10:52:50 --- quit: skylan (Connection reset by peer) 10:53:16 --- join: skylan (sjh@207.164.213.121) joined #forth 11:21:02 --- quit: proteusguy (Read error: 104 (Connection reset by peer)) 11:21:09 --- join: proteusguy (~username@65.191.88.177) joined #forth 11:24:12 --- quit: lament ("mental mantle") 11:25:05 --- quit: XeF4 ("brb") 11:26:17 --- join: XeF4 (xef4@lowfidelity.org) joined #forth 11:29:34 --- quit: [crc] (Read error: 60 (Operation timed out)) 11:30:48 --- join: galexand (~galexand@adsl-18-2-209.rdu.bellsouth.net) joined #forth 11:41:38 --- join: Robert_ (~Robert@robost86.tsps1.freenet6.net) joined #forth 11:42:03 --- quit: Robert (Remote closed the connection) 11:57:06 --- join: proteus_ (~username@65.191.88.177) joined #forth 11:57:34 --- quit: proteusguy (Read error: 110 (Connection timed out)) 11:59:08 --- quit: proteus_ (Client Quit) 13:25:41 --- nick: Robert_ -> Robert 13:59:06 --- join: lament (~lament@24.78.145.92) joined #forth 13:59:23 --- join: proteusguy (~username@65.191.88.177) joined #forth 14:25:41 --- quit: lament ("mental mantle") 14:53:07 --- part: Speuler left #forth 15:23:02 --- join: bwb (~bwb@ip68-4-124-131.oc.oc.cox.net) joined #forth 15:49:57 --- join: joonas (jpihlaja@kruuna.helsinki.fi) joined #forth 15:51:34 * joonas tips his hat 15:51:40 Evening all. 16:03:17 evening 16:03:58 ah, there is life in #forth yet. 16:05:14 Have you every used Valgrind? It's the best debugger I've ever seen! 16:05:19 every -> ever 16:07:19 http://developer.kde.org/~sewardj/ 16:09:21 It basically runs your program in a VM that fully emulates an x86 and catches pretty much all memory related errors. 16:10:24 Actually, it's more of a instrumenting JIT compiler as it disassembles, instruments loads/stores, and reassembles the basic blocks in the code. 16:12:53 It's The Fonz of debuggers. :) 16:16:37 haha 16:19:34 One thing tho: you have to have a fast machine to use it on a "real" program, as it slows down execution a lot. 16:20:14 I'd probably only use it if all other attempts to debug a problem failed 16:20:22 so it wouldn't be much of an issue =) 16:21:46 Yes definitely. I usually don't have memory related errors at all, but for the odd really spurious bug (you know the kind I'm talking about), it's invaluable. 16:34:45 Has any one played Core War? 16:40:10 once, with some example code, but never against anyone else 16:41:09 It's still an active game. There's a tournament going on right now, if you're interested. 16:42:00 too busy 16:49:56 --- quit: Fractal (Read error: 110 (Connection timed out)) 16:51:46 --- join: lament (~lament@h24-78-145-92.vc.shawcable.net) joined #forth 16:52:16 hi lament 16:56:35 joonas: ive seen & tried cold war but never seriously tried it 16:57:03 it was programmable in red, right? 16:57:23 (sorry, I wasn't paying attention...) yes, redcode. 16:58:19 The idea is to make a program that tries to crash an opponent program. 16:59:03 sure, i saw a dos version what also visualized the state of war 16:59:56 hi 17:00:28 hm, that's the third time someone mentions core wars in two days. 17:01:14 last i looked at the corewar tourney it looked like it had degenerated into rock paper scissors. i was nonplussed. 17:02:10 corewars tournaments are dominated by evolved programs 17:02:29 not hand-coded ones 17:02:29 lament: where did you learn that? 17:02:31 oh really? it must have advanced since i last looked :) 17:02:38 lol 17:02:40 hmm let's see 1998 was a while ago 17:02:46 joonas: corewars.sf.net mostly 17:03:11 lament: you're looking in the wrong place. Try www.ociw.edu/~birk/COREWAR/ 17:03:19 Also www.koth.org 17:03:30 joonas: How's it the wrong place? 17:05:21 oh maybe the 'right place' is dominated by hand coded rocks papers and scissors :) 17:05:28 hehe 17:05:43 well, the problem with corewars.sf.net is that most tournaments use some language called 'corewars' 17:05:43 lament: I was too harsh. It's the right place, except that the Corewars project on sf.net implements a different game that isn't what was described in SciAm. 17:05:58 but they have redcode tournaments, too 17:06:13 to be fair, it *also* implements redcode. well, most of it anyway. 17:06:19 Yes. 17:07:29 You should note that sf.net also has tournaments for purely evolved warriors. Hand written ones are disallowed from them, because they would dominate the tournaments. 17:08:25 IMO, that's a good thing. People genuinely interested in evolving warriors should have a venue to battle each other. 17:13:22 Anyway, just for the record, the rock-paper-scissors analogy doesn't really hold: Rock has pretty much vanished, being replaced by...uh, boulders. 17:13:41 Paper is engineered to go head to head with scissors. 17:13:53 Good evening. 17:13:59 evening 17:14:06 hahah i see joonas :) 17:14:24 joonas i want to learn some game like that. should i learn redcode or chess? 17:14:33 i don't think i have the willpower to learn both 17:14:35 both, definitely. :) 17:14:42 damn heh 17:14:46 ok, go with chess: more players. 17:15:00 yeah i was leaning that way too its' good to be able to find an opponent in every big city 17:15:06 er a bunch of opponents 17:15:21 hmm, have you read the review of chess as a strategy game? 17:15:32 no 17:15:34 no 17:15:41 but i could put redcode on my ipaq and then you know :) 17:15:55 read it! 17:15:56 http://homepages.apci.net/~ipw4/bigmuddy/chess.html 17:16:00 cheers 17:16:14 * joonas goes to read it 17:16:15 That review it's funny mostly because it's so true. 17:16:21 s/it's/is 17:16:39 do you know any decent on-line introduction to actually playing chess? 17:17:06 i mean i know how all the pieces move but i want to know what the french-dude's-name gambit is 17:17:35 oh heh i have read the review. it is totally accurate :) 17:19:14 wow, thanks for that! 17:30:54 galexand: Don't learn Chess; learn Go 17:43:04 Any opinions on the Forth Scientific Library? 17:47:47 How few words can a forth have and still be able to build the other ones from them? 17:50:56 http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&oe=UTF-8&selm=4b1ffa1f.0112200314.3118823%40posting.google.com 17:52:17 thanks 17:55:23 Are you building a forth implementation? 17:55:26 damn, it's an old thread and the links are all broken :( 17:55:34 Not sure. 17:55:58 heh, sorry about that. 17:56:33 and they recommend eforth, which is of course good, but there's no freely available info about it 17:57:42 There's pretty much no free information about Forth, anywhere :( 17:58:40 Check out the "Moving Forth" articles and "Build your own (Forth) assembler" articles by Brad Rodriguez 17:59:08 Yeah, i've seen that 17:59:15 But I'd rather learn Forth first :) 17:59:44 Oh, in that case you should read the GForth 0.5.0 manual. 18:00:10 Also, the book "Forth Programmer's Handbook" from Forth Inc. is good (though not free.) 18:00:24 The gforth manual is browsable on line at: 18:00:31 Yeah, i've read it 18:00:43 Everyone says it sucks, and i believe them :) 18:00:57 http://www.complang.tuwien.ac.at/forth/gforth/Docs-html/gforth.html 18:01:05 Oh. 18:01:13 I don't think it sucks. 18:02:29 I found the "Tutorial" and "Intro to ANS forth" life savers. And of course the word lists/descriptions. 18:02:42 the intro was ok 18:03:03 I thought the tutorial a bit ... can't think of the right word 18:03:10 "condescending"? 18:03:48 Have you read "eForth and Zen"? 18:03:49 I particularly remember the sentence that starts with "For the math whizz out there[...]". 18:04:05 no. do you have a link? 18:04:11 no. 18:04:19 only the first chapter is available online. 18:04:19 found it. 18:04:33 which is pretty much an introduction, and says nothing about eforth itself. 18:05:43 I'm pretty sure that book is exactly what I want. 18:06:34 Actually, I think I've read the intro a long time ago, but didn't find it useful. 18:06:44 Well, it's not 18:06:54 But the rest of the book actually describes eforth in detail 18:08:42 What's your plan to do with it? 18:10:23 Nothing, since i won't ever read it :) 18:11:59 I meant with forth? 18:12:21 Oh. 18:12:23 Not sure. 18:15:01 --- join: Speuler (~l@mnch-d9ba4e6c.pool.mediaWays.net) joined #forth 18:15:49 hi Speuler 18:16:00 hello joonas 18:16:49 huevae huomenta :) 18:17:34 Kiitos samoin. 18:19:39 --- quit: proteusguy (Read error: 104 (Connection reset by peer)) 18:21:42 Speuler: you're using debian? 18:22:05 that's right 18:22:16 woody? 18:22:22 sarge 18:22:34 Only I'm still on potato and am considering the switch. 18:22:35 oh 18:22:37 well, mix from woodz and sarge 18:22:55 there's possibly not much left of woody 18:23:01 has dselect gotten any better? 18:23:05 what do you mean? 18:23:26 oh, on your setup. 18:23:29 dselect sucks esp. if you're mixing dists like speuler is :) 18:23:54 one difference of dselect is now that you don't press space but enter on startup to skip the help page 18:24:29 galexand: bullexcrement 18:24:52 galexand: you just need to put all packages on hold 18:25:10 then you pick the ones you really want to upgrade 18:25:28 speuler, heh okay :) 18:25:33 speuler, but what about its 300 library dependencies? 18:25:38 90% of which are wrong 18:25:44 heh 18:25:48 joonas: there are other frontends to dpkg than dselect 18:26:03 i've never had a debian dist work right with apt-get/dselect for more than a month 18:26:11 galexand: you pick one, if one dep is required, it will be updated too 18:26:21 i always wind up installing something that depends on some private build of libc that got into the devel tree anyways 18:27:07 galexand: first debian i used was 1.2 18:27:31 i had a box all the way from 0.93rc6 to 2.0 i think and it is definitely possible you just abandon dselect somewhere. 18:27:32 have installed debian on at least 50 machines 18:27:45 --- join: Fractal (tytptc@h24-77-171-228.ok.shawcable.net) joined #forth 18:27:50 can't remember a single one where it didn't work straight away 18:28:04 er all the way to 2.1 heh 18:28:07 oh it always works the first time 18:28:24 galexand: 0.93 was probably linux kernel, not debian 18:28:32 like this box i installed from cds 2.2. then i eventually allowed dselect to do the full upgrade to whatever came next, i assume 2.3 18:28:40 that was about 1992 or 93 18:28:44 speuler, i did every upgrade between 0.93 to 2.1, i didn't jump straight in 18:28:53 um no dude it was 1995 18:28:54 galexand: ah ok. 18:29:11 galexand: you're more of a debian veteran than i am 18:29:20 i had a 170MB HDD with debian 0.93rc6 on it and i copied that straight over to a 3.2G that i never reformatted. :) 18:29:21 first i run SLS 18:29:26 then slack 18:29:30 then debian 18:29:33 i am not nearly patient enough for anything slackware. i 18:29:45 i really like the packages, the dependency system just always gets broken and i always wind up doing everything with dpkg --force-depends by hand 18:29:47 dabbled with suse, but returned to debian quickly 18:29:53 but even so it's very convenient. i still stick with debian after all this :) 18:30:19 the trouble is that i always wind up installing one program from the devel branch and then it tries to pull in a bunch of libraries and i usually let the one program do that 18:30:36 but then the next program tries to pull in a new version of glibc on top of the version i downloaded two weeks ago and i just go HARUMPH and forget about it. :) 18:30:40 i've put everything on hold 18:30:51 i should try putting things on hold. the hold system is very nice. 18:31:13 cause i don't want to upgrade those packages i didn't explicitely choose 18:31:47 I find the procedure to hack on the source of existing packages confusing. 18:31:50 if i don't like the upgrade of the dep packages, i do R and forget about it 18:32:09 i really like dpkg-source :) 18:32:10 wheni t works 18:32:28 usually i use apt-get 18:32:38 the biggest problem facing debian is that it records too much version dependency...so a lot of the devel tree, esp. the more obscure parts of it, has dependencies on versions of glibc and other libraries that are just private versions. 18:32:48 but for checking out new packages, i use dselect 18:33:37 speuler, try installing nmh :) 18:33:37 heh, #forth is hijacked by #debian :) 18:33:56 at 2.3 or devel i don't remember which nmh is completely broken because it depends on libraries that don't exist 18:34:49 i used nmh a while ago 18:35:26 galexand: right because #forth knows what is good for you :) 18:35:43 galexand: actually, i do forth too 18:36:39 s/galexand/joonas/ 18:36:40 i wonder if they've fixed the devel nmh package hmm 18:36:45 * galexand does forth too 18:36:48 apt-get install gforth 18:37:21 debian gforth package is not complete, need apt source gforth too 18:37:27 --- quit: lament ("pathetic") 18:37:27 i'm contemplating portinf hforth to run on arm-linux on my ipaq 18:37:31 or no make 18:37:45 nice 18:37:45 i really like the hforth bootstrapping technique 18:37:51 (same as eforth i think) 18:37:52 The 0.4.9 version was complete, except that it had the old docs. 18:38:14 What's the hforth bootstrapping technique? 18:38:35 didn't notice 0.4.9 in debian. thought they went straight from 0.4.0 to 0.5.0 18:39:03 the core words for hforth, including everything needed for : are all written in a standard macro-assembler 18:39:06 It's in potato. 18:39:16 i don't have debian gforth installed, instead compiled, placed into /usr/local 18:39:16 the macro-assembler builds up the dictionary and all 18:39:51 yes, that's a nice way to go about it. 18:41:09 One downside is that you end up with a lot of words written in "forth" in the macro assembler... unless you have a cross-compiler written in forth too. 18:41:50 yeah it's unfortunate. the macro-assembler makes it relatively easy to generate normal 'forth' words (direct threaded), but it is awkward. 18:42:27 i only like it because you can see how everything goes the first time you write the system. otherwise it is very daunting to try to write something targetted at real meta-compilation from the start 18:42:57 agreed. It's daunting even afterwards. :) 18:43:49 * joonas curses std::string to the deepest pits of hell! 18:44:18 (I'm tracking N+1 memory leaks due to std::string constructors atm.) 18:44:44 hahahah C++ 18:44:47 i'm sorry dude 18:45:19 Thanks. I'm open to all the sympathy I can get. ;) 18:45:55 Here's a quick-and-dirty way to do tail-call optimisation in a compiler: 18:46:33 When compiling, assume all words are non-tail-call optimisable if you don't have access to its name field. 18:47:03 If you have access to its name field, then check a bit there to see if it is "blacklisted" from tail-call optimisation. 18:47:27 This would include all words that take arguments in the program thread and things that touch the return stack. 18:48:25 After compiling a word, set a flag somewhere that indicates its tail-optimisability. 18:48:49 when compiling EXIT, check that flag and convert EXIT into your preferred form of tail-call. 18:49:54 This method avoids most of the analysis during compilation about whether or not a call is optimisable by placing a (small) burden on the user to mark non-tail-callable words. 18:50:18 i don't see why any word would need to be blacklisted. 18:51:25 You wouldn't want to tail-call words that use the return stack. 18:51:30 e.g. >R 18:52:06 or words that have arguments, like the primitive that implements a literal. 18:52:20 I'm assuming a threaded forth here. 18:53:13 well i assume in every word that uses the return stack that >R and R> are balanced 18:53:15 aren't they? 18:53:52 Not necessarily. 18:53:58 oh :) 18:54:01 so just a couple exceptinos 18:54:02 Hang on... I'm digging up an example. 18:54:14 also i thought the literal words and stuff like that were all immediate 18:55:59 galexand: "immediate" refers to compile-time action. 18:56:12 galexand: we're looking at run-time behaviour now 18:57:48 : (s")( -- str len) 18:57:48 r> dup count ( ip str len) 18:57:48 rot 1+ + ( str len ip+len+1) 18:57:48 >r 18:57:54 ; 18:58:20 argh, insert a space before the stack effect. 18:58:27 this would be compiled as: 18:58:35 dc.l (s") 18:58:50 dc.b 4, "abcd" 18:59:07 dc.l type 18:59:25 for the fragment s" abcd" type 19:00:03 joonas: ansi forgets access of return stack elements which haven't been put there by the same word which access them 19:00:17 s/forget/forbid/ 19:00:42 right I wouldn't do that in standard code. 19:01:35 the point was just that this would be an example of a word inside a forth that shouldn't be tail-called. 19:02:53 hmm.. I guess my explanation skills could do with a polish. 19:03:54 Right, next topic please. 19:06:41 joon, oh.4 19:06:45 joonas, thanks 19:08:02 * joonas fetches coffee 19:16:32 --- join: I440r (~mark4@sdn-ap-010tnnashP0280.dialsprint.net) joined #forth 19:16:40 was someone working on a forth syntax file for nedit? 19:16:46 bongo! :) 19:16:51 hi ppl 19:17:44 doing syntax highlighting in forth is next to impossible 19:18:30 hi I440r 19:18:36 :) 19:18:39 ltns 19:20:07 ya 19:20:21 It's largely because syntax doesn't really exist in forth. 19:20:31 ive been afk, working on some code my father inherited at work 19:20:54 plus i did a little isforth bugfixing :) 19:21:06 BTW, I've got an interesting namepsaces implementation working now. Let me post a link. One sec. 19:21:09 found a bug in alias 19:21:29 if you created an alias to an alias to a headerless word it would crash 19:23:38 ah 19:23:47 attempt to 0 @ 19:23:57 no, thats not a bug :P 19:24:17 as result of aliasing noname alias 19:24:25 if you try access memory that doesnt belong to you thats a bug in YOUR code, not in the compiler :P 19:24:50 http://www.hcsw.org/frugal/namespaces.txt 19:25:11 Kind of an interesting idea, if I do say so myself. Should be easy to implement in other forths too. 19:25:59 Also, frugal runs on OS X and SunOS/SPARC now. 19:36:36 wow i never thought of it that way. 0 0 ! vs *(int *)0 = 0; 19:36:41 it's easier to crash forth :) 19:37:09 lol 19:37:12 0 off 19:37:21 off being a 0 ! 19:39:23 You mean 0 swap !, I assume 19:39:47 fractal, i have to say your pong ui sucks 19:39:52 :) 19:39:58 Oh. Why's that? 19:40:06 i don't like the 'intertia' 19:40:24 pong ui ? 19:40:28 It'd be boring without it. :) 19:41:13 fractal, is frugal in indirect threaded forth with a C bootstrap? 19:41:20 Essentially you have an x velocity as well as a y velocity. Once you think about it that way. 19:41:21 er a direct threaded i guess 19:41:29 galexand : Yes, more or less. 19:41:49 my y velocity is zero so i don't want to think of it that way :) 19:41:50 You can read more about the implementation in docs/INTERNALS 19:42:04 thanks fractal 19:42:09 NP 19:42:16 didn't even notice docs/ :) 19:42:48 Actually, there are a lot of docs/ about stuff. docs/USING is decent. 19:42:49 i like the fact that you appear to have immediate words, it makes your forth more like a C bootstrapped forth and less like an interpretter for some coincidentally stack-based language 19:43:10 :) 19:43:27 What forths don't have immediate words? 19:44:00 fridge: use vim. it has a forth syntax hilite file ;) 19:44:10 Fractal: cmforth 19:44:22 fractal, interpretted coincidentally stack-based languages :) 19:44:46 onetom: I just switched after realising how mouse dependant nedit is 19:45:01 which is okay on a desktop, but I hateusing the trackpad thing on this laptop 19:45:09 hehe 19:47:23 Are you sure cmforth doesn't use immediacy? 19:47:46 Fractal: it uses another approach 19:47:47 cmforth uses a FORTH dictionary and a COMPILER dictionary and "immediate words" get put in the COMPILER dictionary 19:48:02 pygmy forth copied that approach 19:48:09 right 19:48:26 compiler voc is only searched during compilation 19:48:27 Oh, I see. That makes sense. 19:48:47 "immediate" words may be defined twice 19:49:12 ooh i didn't even think of that implication 19:49:32 so we could make a version of FOR in the FORTH dictionary :) 19:49:43 that's the equiv of state-smart words 19:50:25 heh i remember years ago reading about state-smart words on MISC-list but this is the first time someone's said it and i've been able to figure out what they meant 19:50:56 galexand: : foo compiling if dothis else dothat then ; immediate 19:51:14 : compiling state @ ; 19:51:27 hmmm i'm tempted to make a reverse-polish language that is compiled in the classic sense. 19:51:29 therefore state smart 19:53:02 in general it is recommended to avoid creating state-smart words 19:53:11 yeah i see that 19:55:12 you could consider literal numbers to be state-smart 19:56:02 yea you should avoid literals!!! 19:56:04 hehe 19:56:12 but : foo 7 5 + ; versus [7] [5] + would look kind'f strange :) 19:57:11 I440r: no, avoid creation of literal numbers :) 19:57:39 define 19:57:39 1 constant 1 19:57:47 you used a literal :) 19:57:53 what about 19:58:00 2 constant 2 19:58:00 .... 19:58:00 999999 constant 999999 19:58:05 here dup <> 1+ literal 1 19:58:12 here dup <> 1+ constant 1 19:58:22 :) 19:59:30 but, 20:00:53 20:01:20 :) 20:01:29 i440r, but that depends on compile-time literals... 20:01:35 er run-time rather *shrug* 20:01:48 what is <> ? 20:01:59 : <> = 0= ; 20:02:14 oh != :) 20:03:38 <> goes way back to the beginnings of basic. maybe even further :) 20:04:51 "less or more" 20:05:01 "but not equal" 20:05:39 yes i used <> in basic. then i turned 12. != :) 20:06:58 why do most animals have a head and a tail? 20:07:09 i think even worms are directional 20:07:22 see urchins ? 20:07:31 sea ... 20:07:45 hmmm top and bottom 20:08:00 :) 20:08:19 i don't actually know what a sea urchin is i'm thinking of like a star fish 20:08:33 galexand: a sphere with spikes 20:08:40 dark to black 20:08:54 hole on downside 20:09:00 hole = head : 20:09:02 ) 20:10:16 i want my kids to have eyes on their feet 20:10:27 and i'm not gonna have kids until that's possible 20:12:15 --- quit: skylan (Read error: 104 (Connection reset by peer)) 20:13:19 i've been eating raw sea urchins 20:13:24 really? 20:13:37 not kidding you 20:13:42 tasty? 20:13:57 first was strange. the next one was ok 20:14:04 awesome. where do you get them? 20:14:09 from the sea 20:14:13 awesome 20:14:25 hmmm where can i get sushi at 11pm in a crappy city in the south 20:14:29 raw = alive ... 20:14:51 at least, reflexes still present 20:14:56 but but 20:15:13 can you eat the spikes? 20:15:26 if there was a tail, i'd noticed it 20:15:45 i wonder how hungry i'd have to be to just pick up a sea urchin and eat it 20:15:53 like an apple! 20:15:53 nope. you crack them open, add some drops of lemon, and suck them empty 20:16:14 why? 20:16:25 t'is nourishing 20:16:28 cool 20:16:32 why does man eat ? 20:16:36 is this as an alternative to going to the grocery store or what? 20:16:46 "i don't feel like paying for lunch let's go to the beach" 20:16:51 right 20:17:02 sicily 20:17:23 neat 20:17:29 many people live from the sea there 20:18:31 can add them to stew/soup etc too 20:18:40 kills the reflexes 20:18:49 neat 20:18:54 (with hot soup, that is) 20:19:57 yeah 20:22:20 --- join: skylan (sjh@Rockcliffe25.tbaytel.net) joined #forth 20:23:07 i guess you can charge a fortune for sea urchin soup in a 5 star restaurant 20:23:42 yeah probably 20:24:03 look what you pay for snails in a french restaurant 20:24:59 or frog legs 20:25:36 or fly wings 20:25:40 ahem 20:28:52 fly wings? 20:29:21 offer it as speciality, and people will buy it 20:32:00 it makes as much sense as fish eggs i guess 20:35:11 less, i guess. fish eggs are nourishing. i doubt fly wings are 20:35:28 they may stick between your teeth though 20:41:37 g'd night 20:43:41 nite nite 20:43:46 :P 20:43:46 --- quit: I440r ("BitchX-1.0c19 -- just do it.") 21:22:59 --- quit: fridge ("Confucius say: Man who meows ate pussy!") 21:48:31 --- join: fridge (meldrum@zipperii.zip.com.au) joined #forth 21:55:08 bye 21:55:10 --- quit: joonas ("ircII2.8.2-EPIC3.004+Kasi --- Bloatware at its finest.") 22:00:41 --- quit: galexand ("Leaving") 22:21:30 --- quit: fridge (Success) 23:27:24 --- quit: TreyB (Read error: 110 (Connection timed out)) 23:50:04 --- join: delta__ (~lazy@h-64-105-46-245.MCLNVA23.covad.net) joined #forth 23:59:59 --- log: ended forth/02.11.29