00:00:00 --- log: started forth/04.07.09 00:15:50 --- join: foobar (fooboo@dialup-4.152.81.110.Dial1.Atlanta1.Level3.net) joined #forth 00:24:41 --- nick: SolarFire-| -> Solarfire 00:36:55 --- join: qFox (C00K13S@cp12172-a.roose1.nb.home.nl) joined #forth 00:55:23 --- quit: poingie (Read error: 110 (Connection timed out)) 02:09:41 --- quit: Klaw () 03:05:40 --- quit: fridge_ (Remote closed the connection) 03:32:43 --- quit: aum () 03:53:43 I440r_: It's OK.... It's not like I NEED it. 03:55:39 otpg.ø 03:56:01 Argh,.. 03:56:07 Hamster running on the keyboard 04:22:37 Øøre 04:23:09 --- part: foobar left #forth 04:33:38 --- join: crc (crc@0-1pool176-19.nas6.philadelphia1.pa.us.da.qwest.net) joined #forth 04:50:02 --- join: Herkamire (~jason@h000094d30ba2.ne.client2.attbi.com) joined #forth 04:51:28 * crc greets Herkamire 04:53:45 hi crc :) 05:33:07 --- join: tathi (~josh@pcp02123722pcs.milfrd01.pa.comcast.net) joined #forth 05:33:39 * crc greets tathi 05:37:50 hi crc 05:38:17 * tathi is having trouble with the GNU assembler (again), grr... 05:38:42 I don't like the GNU assembler 05:39:03 me neither, but I don't know of a viable alternative for PPC. 05:39:31 * tathi supposes he should really stop whining and just write one, but... 05:41:19 I guess you're stuck then. I'm not aware of any PPC assemblers other than GNU :-( 05:41:48 well, there is pasm (http://devnull.owl.de/~frank/pasm_e.html) 05:42:18 but I'm not sure it's any better. 05:42:54 Actually I don't have issues with the way gas does things. 05:42:59 I'm just sick of it not working. 05:44:13 Like, for instance... if you have a comment char at the start of a line, followed by whitespace, followed by a word starting with a number... 05:44:34 it gives you some error about local labels being required to have positive values. 05:44:45 That's pretty bad 05:45:09 I was just looking at the source, it's starting to make sense why it has all these problems. 05:45:16 the parsing code is a complete mess. 05:45:41 I bet no-one really understands why it works :) 05:45:46 Ah well... 05:47:03 so how's retroforth going? 05:49:32 Pretty good 05:49:50 I've mostly finished testing the 7.0 codebase 05:50:00 And the documentation is about half done 05:50:43 There are about 10 words left to add to my test program :-) 05:51:16 * crc needs to scale back the test program. It's mushroomed to 247MB now. 05:51:51 :-) 05:53:56 --- quit: I440r_ (Read error: 110 (Connection timed out)) 05:54:01 --- quit: [Forth] (Connection timed out) 05:54:21 I should port it to PPC Linux one of these days... 05:56:14 --- join: I440r_ (~mark4@216-110-82-1.gen.twtelecom.net) joined #forth 06:00:37 whatever 06:00:52 :-) 06:05:00 Hi 06:07:02 Hi Robert 06:09:21 gruess gott 06:13:40 --- join: poingie (~chatzilla@64-121-15-14.c3-0.sfrn-ubr8.sfrn.ca.cable.rcn.com) joined #forth 06:15:13 * crc greets poingie 06:15:33 Hi poingie 06:18:36 gas is a pile of shit, esp on ppc 06:19:09 I know of some ppc assemblers that are embedded into other languages but I suppose that's not much of a help 06:24:24 chandler: it recognizes a bunch of characters inside strings. 06:24:58 and having '#' as the comment character produces some weird stuff because the C compiler uses it for directives. 06:25:09 But other than that, I don't have a problem with it. 06:25:29 chandler: Are there other things you don't like about it? 06:25:49 on OS X ; is the comment character, unlike on every other platform 06:26:02 what? 06:26:07 IIRC 06:26:14 I thought ; was the standard assembler comment character. 06:26:30 at any rate, it has been the comment character for almost every assembler I've ever used. 06:27:11 on powerpc linux it's the line terminator 06:27:41 tathi i liked devpac for the amiga. anything after the first valid mneumonic was a comment :) 06:27:49 I440r: :) 06:27:57 push.l d0 comment comment comment 06:28:04 heh 06:28:11 yup. I've used one of those. 06:28:14 --- join: Topaz (~top@spc1-horn1-6-0-cust217.cosh.broadband.ntl.com) joined #forth 06:28:48 though I think my favorite assembler so far was Eric Isaacson's A86. 06:28:48 the only assemblers that ive seen that would allow more than one opcode per source line would be forth assemblers so requiring a ; to start a comment seems silly 06:28:56 tathi i registered it 06:29:05 i have a386 and d386 :) 06:29:18 Oh yeah, that was a great debugger too :) 06:29:19 i think THAT is the best damned assembler ever written 06:30:13 C is a portable assembly language 06:30:14 * Teratogen ducks 06:30:36 C is (mostly) evil! 06:30:39 c is not asm and nothing is portable :P 06:30:44 tell me how you return a variable number of values on the stack in C 06:30:52 What's the line? "All the power of BASIC with all the ease of use of assembly language" 06:30:53 *bzzt*, times up 06:31:02 chandler return a pointer to them :) 06:31:03 pahaha 06:31:07 I440r: that's not on the stack :-) 06:31:13 it can be 06:31:47 returning a variable number of arguments is ghey. 06:32:02 tathi i now have a static IP at home but the wire has to be physically moved off the internal network to the external one :) 06:32:17 Teratogen: dude, what kind of forth programmer are you? 06:32:46 I440r: cool. 06:35:00 im thinking Teratogen was just joking :P 06:35:04 he knew ennuff to duck :) 06:35:18 yeah yeah :-) 06:36:17 Heh. 06:36:28 Teratogen is a notorious #minix troll. ;) 06:36:43 lol 06:37:00 But he owns some nice hardware. 06:37:06 Show them your core memory, Teratogen. 06:37:06 please tell me nobody actually runs minix these days lol 06:37:26 I440r: I just retired my last Minix computer a month ago. 06:37:33 robert lol 06:37:41 So now the 2 Minix systems are on the shelf :/ 06:37:47 well. thats you - that doesnt count, we all know your insane 06:37:57 Pffft 06:40:01 I occasionally run a Mininx HD image under Bochs 07:18:40 --- quit: crc ("http://www.retroforth.org/dev/beta_releases/retroforth-7.beta4.tar.gz") 07:38:36 --- join: warpzero (~warpzero@mi035.dn190.umontana.edu) joined #forth 08:18:29 --- quit: Topaz (Read error: 110 (Connection timed out)) 08:18:41 --- join: Topaz (~top@spc1-horn1-6-0-cust217.cosh.broadband.ntl.com) joined #forth 08:28:17 --- quit: tathi ("leaving") 08:34:55 --- quit: I440r ("bbl") 08:36:20 --- quit: Topaz (Read error: 110 (Connection timed out)) 08:36:44 --- join: Topaz (~top@spc1-horn1-6-0-cust217.cosh.broadband.ntl.com) joined #forth 08:53:36 --- quit: Topaz (Read error: 110 (Connection timed out)) 08:54:19 --- join: Topaz (~top@spc1-horn1-6-0-cust217.cosh.broadband.ntl.com) joined #forth 09:11:59 --- quit: Topaz (Read error: 110 (Connection timed out)) 09:12:19 --- join: Topaz (~top@spc1-horn1-6-0-cust217.cosh.broadband.ntl.com) joined #forth 10:12:05 --- quit: I440r_ (Read error: 110 (Connection timed out)) 10:27:15 --- join: tucknip (~Huck@170.141.109.33) joined #forth 11:19:33 --- join: Serg (~z@193.201.231.126) joined #forth 11:19:49 --- quit: Serg (Client Quit) 11:21:39 --- join: Serg (~z@193.201.231.126) joined #forth 11:22:08 link now is unstable ;) 11:22:15 Hi Serg 11:22:22 hi 11:23:19 my head is like kettle now - lack of slee 11:23:24 :( 11:24:47 i feel a temptation to code something oldshcool sub -4k 11:25:05 maybe, noter ;) 11:26:37 sad thing, screen driver is broken in win2k and XP - after mode switch, RU letters go away 11:29:25 Serg: Hehe, my Forth that I'm messing with now is 3k ;) 11:29:48 nice 11:30:00 the one i used for my games is 18k 11:30:32 but can build sub-1k .com filezz 11:32:25 --- part: tucknip left #forth 11:32:37 :) 11:33:00 Well, with all libraries and stuff compiled in, it's over 6k 11:33:03 the tinyesy usef00l prog, "u2d", is 546 bytes 11:33:22 The base Forth system is always compiled in. 11:33:38 endline converter, 1-liner 11:34:12 : utod begin key dup 10 = if 13 emit then emit again ; 11:34:14 Which is pretty nice, since you get all the features of the compiler. 11:34:29 I.e. powerful scripting features in a 4k pong game ;) 11:34:54 no, w/ compiler it's 18+ K 11:35:22 546 bytes is proggie w/o compiler, sure 11:36:17 i have one of u'r Forths, but i found it unwieldy 11:36:33 Which one? 11:36:39 --- join: Klaw (~anonymous@ip68-228-92-218.oc.oc.cox.net) joined #forth 11:37:00 tforth ? 11:37:22 That's the one I'm working on now... The old version is very buggy. 11:38:03 it not even stumbled over bugs - weird startup sequence made me drop it be4 11:38:21 http://robert.zizi.org/pub/projects/tforth/tforth.zip (20kB) 11:38:23 Oh? 11:38:26 What was wrong? 11:38:57 the fact what it loads some .f src on startup, and no _easy_ way to disable this 11:39:12 Hehe 11:39:17 I know, that was a problem. 11:39:20 It's fixed now :) 11:39:25 k00l ! 11:39:34 Just type (if you want it to start up with the word "foo"): 11:39:38 ' foo is quit 11:39:54 fsave filename.com 11:41:00 just 0x1000 bytes left 11:41:02 to erase 11:41:17 :D 11:41:18 --- quit: Topaz (Connection timed out) 11:41:27 You're crazy, qFox... Crazy. 11:41:39 nope 11:41:43 just a rusty old key and my gsm 11:41:44 :p 11:41:51 --- join: Topaz (~top@spc1-horn1-6-0-cust217.cosh.broadband.ntl.com) joined #forth 11:41:59 i'll try then i'll have cheap inet 11:42:00 --- quit: Serg (Read error: 104 (Connection reset by peer)) 11:42:39 --- join: Serg (~z@193.201.231.126) joined #forth 11:42:45 re 11:42:56 what was the reason of crashout ? 11:43:15 peer 11:43:18 20:42:02 -!- Serg [~z@193.201.231.126] has quit [Read error: 104 (Connection reset by peer)] 11:43:56 heh, i recieved call on the same cellphone 11:44:34 lol 11:44:49 still internetting @ 75cents a minute? ;p 11:45:07 Robert: have u easy i-face for adding ASM words ? 11:45:23 --- join: tucknip (~Huck@170.141.109.33) joined #forth 11:45:24 my cell phone has $10/month flat fee net access 11:45:30 Serg: No :( You have to use NASM. 11:45:32 qFox: 45 cents megabyte 11:45:50 no-no 11:45:51 oh i thought you said per minute the other day 11:46:33 can ASM modules be loaded by specific word at runtime, or all Forth gotta be recompiled ? 11:46:39 * Serg is not so hell rich 11:48:30 yay. done. 11:48:33 jezus 11:48:39 you need a clear word, seriously 11:48:40 :) 11:49:17 i never coded in Forth long ago ;( mostly in Perl and PHP 11:49:17 qFox: clear word ? 11:49:49 Serg> in his other forth is an editor, pretty neat stuff, but core.f is kinda big, and there's no fast way to clear the file 11:50:08 had to keep del pressed for about...30 minutes 11:50:16 ha-ha ! 11:51:15 once erasing some multi-file thing from stupid DOS commander, we pressed Y by hammer 11:51:58 but the fing plugged together at table w/o box, was beeping so nasty 11:52:26 it had buzzer on motherboard, so it cannot be unplugged 11:53:03 lol 11:53:07 i put a rusty old key 11:53:11 which wasnt heavy enough 11:53:21 (laptop key no less!) 11:53:35 so i put my cellphone on top of it :p 11:54:27 did u foto it ? 11:54:35 uh, no 11:55:07 u missed to share great fun ^)) 11:55:29 make mental pictures :p 11:55:35 * Serg is carrying around 5$ half-frame camera ;))) 11:57:12 qFox: Clear word? 11:57:16 never. mind. 11:57:21 Serg: Forth has to be recompiled. 11:57:22 and 20$ exponometer - matches w/ digicam from dark undertable to sunshine, despite 30y old and wrong batteries 11:57:30 qFox: You can clear the editor's buffer with the word "new". 11:58:04 and now i hate you 11:58:14 30 minutes of that cellphones life he'll NEVER get back 11:58:21 qFox: I told you about it earlier, remember? 11:58:31 You never listen to me :( 11:58:34 when i did new, i got the core pasted in it, remember? 11:58:42 appearantly, the whole core, not just the first line. 11:58:48 Then you did something wrong. :) 11:58:53 --- quit: Topaz (Connection timed out) 11:58:57 says he who coded it... i only pressed enter :\ 11:59:09 Tss... 11:59:21 That whole system is a quick hack to please the teachers. 11:59:27 --- join: Topaz (~top@spc1-horn1-6-0-cust217.cosh.broadband.ntl.com) joined #forth 11:59:46 hacks are evil 12:00:04 Robert: why not normal screen ed w/ menu ? 12:00:20 good old gap based ;)) 12:01:42 Uhm, what? :) 12:02:00 gap based editor ? 12:02:05 What is gap? 12:02:19 see, u have RAM buff 12:02:28 a big cloths selling store chain 12:02:30 :p 12:02:37 Heh 12:02:43 text be4 cursor is in the start of buff, after - at end 12:03:02 between is the gap, into what u print 12:03:31 then u move cursor, letters are moved across the gap 12:03:42 blank 12:03:43 space 12:04:05 Hmm... 12:04:15 I don't think I've used any of those :) 12:04:53 this is internal arch ;)) the gap is not on-screen, obviously 12:05:25 robert> var tmpd0 400 malloc -> tmpd0 ,will work right? 12:05:47 400 malloc var tmpd0 12:05:51 That would be a cleaner way 12:06:02 var ( init-value -- ) 12:06:14 So it needs a parameter 12:06:24 oh 12:06:28 ohye value 12:06:30 blah. 12:06:46 Tss... 12:07:08 blah.. bleh.. bletch !! 12:07:10 ^^ 12:08:50 how close the languages are ! 12:09:29 ENG bletcherous - RU bleevat' (to vomit) 12:14:40 Heh 12:14:58 In Swedish it's kräkas/spy 12:15:32 overgeven, kotsen 12:17:19 --- quit: Topaz (Read error: 110 (Connection timed out)) 12:17:22 Yum. 12:17:28 Hmm... 12:17:31 --- join: Topaz (~top@spc1-horn1-6-0-cust217.cosh.broadband.ntl.com) joined #forth 12:17:47 I just remembered lying on bed with a 486 laptop and a Forth tutorial... :) 12:22:18 --- join: I440r (~mark4@168-215-246-243.gen.twtelecom.net) joined #forth 12:23:24 Hi I440r 12:26:10 hey 12:26:18 And hi slava 12:26:31 How is the debugging doing? 12:27:15 of the garbage collector? its going well. i've been constructing various heaps to test it a few functions at a time. 12:27:33 the remaining problem seems to be that some pointers are not updated for some reason (objects get moved as part of collection) 12:28:00 hi 12:28:51 --- quit: Serg () 12:35:20 --- quit: Topaz (Read error: 110 (Connection timed out)) 12:35:38 --- join: Topaz (~top@spc1-horn1-6-0-cust217.cosh.broadband.ntl.com) joined #forth 12:43:55 --- quit: tucknip (Read error: 110 (Connection timed out)) 12:53:37 --- quit: Topaz (Read error: 110 (Connection timed out)) 12:54:14 --- join: Topaz (~top@spc1-horn1-6-0-cust217.cosh.broadband.ntl.com) joined #forth 13:39:13 --- quit: I440r (Read error: 54 (Connection reset by peer)) 14:00:24 --- join: SDO (~SDO@68.170.20.223) joined #forth 14:06:07 --- join: I440r (~mark4@168-215-246-243.gen.twtelecom.net) joined #forth 14:06:23 who is jdoctor ? 14:06:25 someone new ? 14:09:33 i recognize him from #ai 14:10:19 ok 14:10:20 :) 14:16:28 --- quit: jDoctor ("leaving") 14:19:01 well i wasnt trying to drive him away! lol 14:21:20 hehe 14:21:26 i used to come to #ai anyways 14:21:38 didnt see him there just now, or when i checked yesterday when i noticed him here 14:22:41 --- join: crc (crc@0-1pool176-36.nas6.philadelphia1.pa.us.da.qwest.net) joined #forth 14:25:18 wheres tathi :) 14:25:55 !seen anyone? 14:26:06 ohwell, check logs :p 14:26:42 lol 14:26:55 pity clog isnt a little more active arround here he?? lol 14:27:08 tathi Quit with message ("leaving"). 16:28:19 14:27:12 i dont think thats why clog exists however 14:28:07 ok, now i need a domain name 14:28:19 i got me a fast pipe and a static ip 14:28:23 what name can i give it 14:29:23 i could call it forth.net ?? 14:30:33 Already taken 14:31:02 i was just emerging whois hehe 14:31:15 :-) 14:31:24 emerge = gentoo? 14:33:13 yup 14:33:39 what does it mean when a domainname is locked ? 14:33:41 Is gentoo good? It's one of the few Linux distros I haven't tried 14:33:51 nah it sucks :-P 14:33:53 i think its second to none 14:34:11 if you try it do a stage 1 install following the manual 14:35:01 the "handbook" they call it 14:35:38 Domain locking prevents your domain name from being hijacked or accidently transferred. If a transfer to another registrar or hosting company is requested for a locked domain name the transfer request will automatically fail. If you wish to transfer a locked domain name you simply have to login to your control panel and unlock the domain name. 14:37:36 well this is just a domain name someone is sitting on. isnt that illegal now ? 14:37:43 Nope 14:37:55 Unless you can prove you own the name as a trademark 14:37:56 its the domainname i registered years ago and had to let lapse 14:38:06 So? 14:38:19 no big deal, i just didnt think it was allowed 14:38:30 i dont know if i want it back or not :) 14:38:49 and if i do it just means i get it through THEM :P 14:39:28 :-) 14:42:16 * crc likes Google Ads 14:45:03 --- quit: I440r (Remote closed the connection) 14:51:36 --- quit: madgarden (Read error: 110 (Connection timed out)) 14:57:56 a word is in a dictionary thats in a vocabulary, right? 14:59:17 I tend to think of a dictionary as containg vocabularies 14:59:22 Words are defined in vocabularies 14:59:41 Vocabularies are contained in the dictionary 14:59:49 At least in RetroForth 15:00:17 whats the view on this from the "classic forth perspective"? as it was designed... 15:00:26 originally there was only one vocabulary 15:00:33 some forths are still like this i think 15:00:52 some have two vocabularies, one of immediate words and one of normal words (instead of the immediate flag) 15:00:54 the way i see it, its vocabularies, with a search order, that contain a chain of dictionaries, that each contain a chain of words 15:01:10 on the other hand, some have vocabularies as a means of modularizing code 15:02:18 * crc doesn't like more than two vocabularies: they make the code more complex than it needs to be 15:02:38 i have a whole bunch :) 15:02:50 i prefer it to having to think of silly prefixes to distinglish word names 15:04:06 I write programs, which I can load from blocks or files, and reset the forth system to its initial state before running new ones 15:04:15 You don't need a lot of vocabularies 15:05:02 i like to have everything loaded at once 15:05:12 and dump/restore a memory image between sessions :-P 15:05:49 That method is too complex for me 15:06:11 seems simple enough. 15:06:20 you just need two things in the language - vocabularies, and redefining existing words. 15:06:27 RetroForth requires hacking several assembly routines to add another vocabulary 15:06:50 what are the vocabularies? 15:06:51 2 Vocabularies: FORTH for callable words & MACRO for compiler macros (immediate words) 15:07:28 aha nice 15:07:30 like pygmy 15:08:15 Yup 15:08:15 Pygmy is a good Forth 15:08:22 One of the Forths that inspired RetroForth's design! 15:08:51 The others being ColorForth, eForth, cmForth, and Herkforth 15:09:20 i cant even get colorforth to start :( 15:09:25 it just wont budge 15:09:35 glcolorforth runs on fbsd 15:09:38 but i odn't know how to use it 15:09:42 it has an odd keyboard layout 15:09:44 --- quit: Solarfire ("bye") 15:09:54 I don't use the ColorForth key layout 15:10:03 qFox: What OS do you use? 15:10:11 no i mean bootable 15:10:24 oh well under xp it just starts a deamon it seems, with no interface 15:11:03 and when i boot nothing happens on this computer, and on my laptop it freaks 15:11:11 odd behaviour, but useless 15:12:15 ColorForth is VERY picky on the hardware it supports 15:12:33 I've never managed to boot it either :-) 15:13:03 ohwell, doesnt matter 15:14:31 How's the work with ciForth going? 15:15:11 i quit ciforth 15:15:37 after not being able to do reach other segments i needed, i had enough of it 15:15:59 now attempting to code a forth on one of Robert's forth's 15:16:10 forths 15:18:25 --- join: crc_ (crc@0-1pool88-72.nas48.philadelphia1.pa.us.da.qwest.net) joined #forth 15:19:49 Which is quite a challenge, since it's terribly buggy. :) 15:20:04 yep, i'm driving robert up the wall all the time. its fun 15:20:32 Which one, F? 15:20:37 yep 15:21:06 :-) 15:21:18 I like RetroForth/Native better :-) 15:21:26 * crc_ must be biased or something... 15:21:37 hmmmmm shall i implement vocabularies (stack of search order) > dictionaries (linked) > words (linked) 15:21:49 or shall i leave the dictionaries out of it 15:22:05 crc> i'd prefer the native, but i simply cant do it myself 15:22:14 Do what? 15:22:19 lack the knowledge to build a bootable forth 15:22:26 on x86 anyways 15:22:58 I'm working on updating RetroForth/Native to the 7.0 codebase 15:23:38 I have a new boot sector + A20 initialization code that should eliminate most of the boot problems people faced in the past 15:24:24 It's really nice to have a Forth with a single core codebase that can be used under Linux, FreeBSD, BeOS, Windows, and standalone :-) 15:24:34 well i'm going to try and build my forth on top of F, leaving F in the dark once my own forth initializes 15:24:36 --- quit: crc (Read error: 104 (Connection reset by peer)) 15:24:50 --- nick: crc_ -> crc 15:24:57 I see 15:25:17 not entirely sure at this point how to actually accomplish this, i have idea's, and working on code as we speak, but whether it'll work... 15:25:19 time will tell :) 15:27:45 i think i'll leave the dictionaries out. they serve no direct purpose 15:43:57 I use the terms dictionaries & vocabularies interchangeably 15:44:36 i was once told that vocabularies existed of dictionaries, so i try to stay by that definition 15:54:30 In my view, you have a dictionary, which contains pointers to each vocabulary 15:54:41 It's pretty simple in actual practice 15:55:01 Only having two vocabularies makes some things (like search order) simple 15:55:11 well, i'll have a stack with id's, that serves as the search order 15:55:42 my interpreter can now save 'images' 15:55:46 I just search: 15:55:47 before it could only load them 15:55:48 1) FORTH if interpreting 15:55:57 there are some things from ciforth i really liked, this slightly different from what ciforth had, but i like it. 15:55:58 2) MACRO, then FORTH if compiling 15:56:20 slava: can an image be run directly? 15:56:46 --- join: aum (~aum@port-204-54-210.fastadsl.net.nz) joined #forth 15:56:53 crc, no. 15:57:07 crc, the interpreter loads it into memory and it becomes the heap 15:57:12 Ok 15:57:16 crc, its like a dictionary, with a 'here' pointer and allot etc 15:57:29 crc, except there is a garbage collector so you never have to explicitly free anything, you just allot it :) 15:57:41 I never free anything anyway 15:57:56 (Unless I reset the forth environment or stack) 15:58:03 well i can have strings that grow to any size 'for free', no fixed buffers 15:58:09 this is the main advantage IMHO 15:58:49 well that seems to be the thing about forth, memmory is not recycled 15:58:57 --- join: LOOP-HOG (~jdamisch@sub22-119.member.dsl-only.net) joined #forth 15:59:22 hi 15:59:22 I don't think that slava is writing a real forth, just a forth-like language :-) 15:59:29 Hello LOOP-HOG 15:59:34 at the moment my image is 65kb. this is enough code to present an interpreter prompt 16:00:00 the kernel is a 15kb executable 16:00:29 maybe 15kb is not so bad, atleast its not a java 16:00:58 lol 16:00:59 the kernel is in C 16:01:02 RetroForth's kernel is 3,881 bytes; including ELF header and ASCII bootstrap code 16:01:26 The entire memory footprint is just 48,384 bytes 16:01:36 15k is too big IMO 16:01:45 why? 16:01:50 it provides more than a forth kernel 16:01:51 I forgot to mention the new urls for HOG-SPACE that are hanging off of the retroforth site 16:02:01 I know that 16:02:16 But GC, etc are not essential for most tasks 16:02:22 Keep things simple 16:02:33 i think gc is essential 16:02:38 i make extensive use of linked lists etc 16:02:44 and its nice that the interpreter never corrupts memory 16:02:54 What's the performance like? 16:02:55 since all memory access is through kernel primitives for arrays etc that do bounds checks 16:03:03 its slower than forth 16:03:10 How fast? 16:03:11 and much slower than java 16:03:21 Slower than Java? That's bad 16:03:31 java is faster than forth on numerical benchmarks. 16:03:40 of course the interpreter loads instantly (unlike java) 16:03:41 slava is free to create any sort of Forth that he wishes 16:03:54 but if you do, eg, recursive fib, its about 20x slower than java and 5x slower than gforth. 16:04:26 if i add a native code compiler it will be much faster, faster than dtc forth and comparable to java 16:05:06 its designed for writing network applications 16:05:18 i'm hoping to have HOG-FORTH up and running by the end of 2008! 16:05:23 so you don't have to worry about memory corruption, string overflows, and similar problems. 16:05:40 in a web app, you spend most of the time waiting for network I/O anyway. 16:06:33 and pauses of 1/10 a sec or so are ok for garbage collection. 16:08:02 Hi LOOP-HOG 16:08:04 someday i would like to play with another FOS besides colorForth 16:08:08 :) 16:08:18 I wish mine was cleaner. 16:08:44 hi - anyone seen I440r? 16:08:47 * Robert likes his Forths small. 16:08:55 aum: He was here an hour ago. 16:09:09 one day i might rewrite factor to meta-compile itself instead of writing the kernel in C 16:09:11 can anybody recommend a good archiving program that works well from the command line and in windows 16:09:48 iirc, GNU tar/gzip/bzip2 are available for Windows. 16:09:51 LOOP-HOG: easiest option is to get the free winzip command line utils, www.winzip.com 16:10:32 * aum whinges at the rudeness of many people who create zip files - who don't put all the files under a single directory first 16:10:36 im my experience winzip did not compress as well as BitZipper 16:10:53 i try to remember to do that aum 16:10:58 there's a prog called '7-Zip' which does rather well 16:11:04 its a little tricky if you havn't done it b4 16:11:11 i made that miskake a few times 16:11:13 infact, its internal algorithm beats rar, i believe 16:11:45 aum: heh, we had a rather moronic lecturer tell us once that (for a coursework), we'd lose marks if we put them all in a subdir 16:11:47 i was thinking of tossing the stupid zip files and creating my own compression format 16:12:15 that way in order to get my site on your desktop, you would have to download an ANS compliant program 16:12:26 and then run the .yuk files or whatever through it 16:12:46 I think bzip2 does a good job at compressing. 16:12:51 It's a bit slow though. 16:12:54 an ANS comliant Forth source and compile it on your machine and then runing the yuk files thru it 16:13:11 kind of involved for a newbie though 16:13:20 * qFox hit a few walls 16:13:25 concrete walls no less 16:13:27 qFox: :D 16:13:29 probably i'll just be lazy and do what i'm already doing until i decide that they old way was too much work 16:13:48 i'm gonna go to bed and think about how to desolve those walls 16:13:51 bah :( 16:13:53 nite 16:13:59 bye 16:14:09 --- quit: qFox ("meh ircii's netsplit detection appearantly sux ^^") 16:14:30 Hehe 16:14:44 I feel proud when my code is driving a dutchman to madness. 16:15:02 any isforth users here? 16:15:06 Yes, I am. 16:15:11 I use isForth sometimes... 16:15:29 how do i go about removing the curses stuff in isforth, and using plain stdin/stdout? 16:15:33 Mostly for as a base for the RetroForth Benchmark 16:16:54 so many Forths, so little time :^) 16:16:59 Hehe. 16:17:55 aum: OK, found it. 16:17:59 Open up isforth.f 16:18:14 fload src/ext/hello.f \ - nice signon message 16:18:14 fload src/ext/status.f \ - status line display 16:18:19 Comment out those lines. 16:18:23 --- quit: warpzero ("Tried to warn you about Chino and Daddy Gee, but I can't seem to get to you through the U.S. Mail.") 16:18:58 I guess there are some other things you can comment out there. 16:19:18 --- join: kc5tja (~kc5tja@66-74-218-202.san.rr.com) joined #forth 16:19:20 * Robert starts a commenting spree. 16:19:21 Hi kc5tja 16:19:26 --- mode: ChanServ set +o kc5tja 16:19:38 I just received another donation for the Kestrel. 16:19:56 ausome 16:19:56 * crc is going to take a nap before work. See you all tomorrow1 16:19:58 Cool. :) 16:19:58 how $$? 16:20:02 Night crc 16:20:03 Which is interesting, because I was going to sit down and do some more coding on the emulator and the ROM image for it. 16:20:10 --- quit: crc ("http://www.retroforth.org/dev/beta_releases/retroforth-7.beta4.tar.gz") 16:20:17 kc5tja! 16:20:19 LOOP-HOG: $25, as published on my site. 16:20:39 how much so far? 16:20:58 This brings the total contribution to $125 from a number of people, none of whom I recognize here on this IRC channel! 16:21:01 HOG-SPACE has minor update with newer zips 16:21:15 Robert: works fine, brilliant, hasta la vista curses - now, how do i get rid of the 'au Revoir' message? 16:21:19 that gives me an idea 16:21:24 (Or maybe they are here, but they just don't have matching e-mail addresses) 16:21:28 an order of mag less that 125 is 12.50 16:21:34 aum: I suppose that would be in there somewhere. grep is your friend, you know. 16:21:51 that would be enough for a new URL 16:22:16 if i expanded HS to 5x its current size and filled in all of the descriptions, and put up a paypal site then maybe somebody would pay for 16:22:21 www.hog-space.com 16:22:40 HS ? 16:22:48 HOG-SPACE 16:22:52 Oh. 16:22:56 ga 16:23:15 Folks, I've been really thinking about computer architcture of late. 16:23:24 The first generation Kestrel is indeed going to remain a CPU-bound design. 16:23:37 Everything will be, within reason of course, serviced directly by the CPU. 16:23:46 It keeps the design of the system cheap, and easy to understand for all. 16:24:05 But the next step up will introduce expansion slots, I think. The problem is, how do I manage those slots in the best possible manner? 16:24:25 I'm thinking of walking away from the traditional I/O architectures found in current computers. 16:24:43 its your pup dude 16:24:45 why slots? 16:24:54 Instead, I'm thinking of binding every two slots to a single I/O coprocessor. It is the I/O coprocessor which has direct access to memory, not the device itself. 16:24:54 i would very much like to use a faxmodem 16:25:17 how will you arbitrate memory access? 16:25:19 This way, bandwidth allocation to each device is entirely programmable. 16:25:22 and use the kestrel as an overgrown answering machine/fax machine/vending machine/etc 16:25:27 Topaz: You program it. Explicitly. 16:25:55 The same way the IBM System/360 mainframe does it, S/370, S/390, Series/7, AS/400, and more. 16:26:56 So, for example, a video card would have programs for the I/O coprocessor it's bound to designed to stuff the dot shifter registers under its software control. 16:26:58 do they rely on CPU cache to keep the CPU doing stuff whilst the peripherals are poking the RAM? or is the RAM accessible as independent blocks? 16:27:30 When you say "they," what do you refer to? 16:27:36 another isforth question - when i pipe commands to isforth, how do i stop these from being echoed? 16:27:38 well, 'the designers' 16:27:58 Topaz: Too vague. I can't answer your question. 16:28:06 just surely a problem with having multiple processors talking to the same RAM is that they can only access it one-at-a-time 16:28:08 what's a good way to code a integer -> string routine? 16:28:38 aum: Don't know about that, sorry. 16:28:41 Topaz: OK, I see what you're saying. 16:29:07 wtf??? gtop shows isforth as eating 22MB memory?!?!? 16:29:15 Topaz: A caching system is pretty much a bit of a requirement anyway; SDRAM suffers huge performance hits if you randomly access data anyway. 16:29:21 aum: It's just allocating a little bit of heap space. :) 16:29:32 ok, sure 16:29:33 aum: So you won't run out of mem in a while. 16:29:46 aum, gtop shows my interpreter eating 256mb because it allocates a lot of virtual address space 16:29:50 Topaz: But this is all future material. I'm just drawing out a road-map of sorts. 16:29:57 Robert: shame it doesn't alloc heap space as needed 16:30:06 * aum is thinking of isforth for cgi 16:30:21 aum: I tried that once. 16:30:27 Robert: how'd it go? 16:30:28 so what tasks would a I/O coprocessor actually do? 16:30:37 aum: Had some trouble with the I/O... 16:30:49 Robert: what kinda trouble? 16:30:52 would you make them do things like filesystem management? 16:30:54 I figure putting the IDE drives on their own I/O coprocessor would eliminate the need for me to support very costly IDE-specific DMA circuitry. Instead, I can use a plain-vanilla TTA coprocessor to talk to the IDE bus as if it were polled I/O, independently of the CPU. Then I can amortize the cost of the design by re-using it for other devices in the system. 16:31:25 ah 16:31:29 Kewl 16:31:36 --- quit: SDO (Connection timed out) 16:31:42 Topaz: No, although it would theoretically be possible. I would use the I/O coprocessors for actual data transfer, bit-banging control signals to eliminate dedicated controllers, etc. 16:31:46 forth could totally rule for cgi, given its speed/compactness 16:32:13 aum: So low speed is good for CGI? ;) 16:32:35 i would LOVE Forth CGI in HOG-SPACE 16:32:57 i just coded this but didn't test it :) 16:32:58 : fixnum% ( num -- ) 16:32:58 base /mod swap dup 0 > [ fixnum% ] [ drop ] ifte >digit % ; 16:32:58 : fixnum>str ( num -- str ) <% fixnum% %> ; 16:33:18 Topaz: The easiest way to think of those I/O processors is a really, really, really fast PIC chip with very high bandwidth access to system RAM. 16:33:21 :) 16:33:30 Of course, since I'm not making a real mainframe, my RAM bandwidth will obviously be limited. 16:33:33 But still. 16:33:47 The concept is true, it has lots of prior art, and it would definitely be something totally unique. 16:34:38 i guess it would be possible to have separate buses for each RAM chip, and bus-switching-things on each processor 16:34:40 The Amiga comes the closest, with its 25+ DMA channels to various functions. But they're static channels -- they can do only one thing. 16:34:46 though that probably is going the way of mainframes, heh 16:35:14 Topaz: Actually, yes. :) That is the approach the Cray supercomputer uses for performing its vector operations too. 16:35:28 i guess with FPGAs it'd actually be feasible too 16:35:37 only downside being routing the tracks around the board :D 16:35:43 (or around the chip? :) 16:37:00 Topaz: Well, I'm not going to do that just yet. Cost of manufacture for this thing is dominated by PC board space. 16:38:07 But, by my math, an I/O processor solution can afford upwards of around 50.35MB/s throughput using I/O processors on a 25MHz bus. 16:39:20 Well, let me be more clear. 16:39:36 12.6MWps, where a word is a 32-bits. 16:40:05 So since each word has four 8-bit bytes, that comes out to 50.35MBps. 16:40:24 (CPU bus runs at 25.175MHz, btw) 16:40:31 or rather, will. 16:41:31 Anyway, the advantage of this is simple: it lets people build *dumb* hardware (read, cheap), and the DMA-like functionalities for the device can be programmed into the integrated I/O processors on the Kestrel-II's motherboard. 16:43:31 Not sure if that makes any sense or not. But at least it's an idea, and one I feel which has been neglected throughout history. 16:44:27 yeah, does sound very cunning 16:44:28 we have control over the hardware ports unlike in XP 16:44:48 and gives ultimate flexibility over protocols and stuff 16:44:55 its old hat but RS-232 would be welcome 16:45:04 i suppose you could implement all the IO drivers in the coprocessors 16:45:22 LOOP-HOG: RS-232 can be implemented entirely as I/O controller software -- there would be no distinct UART chip in this system. 16:45:35 so stuff like ethernet cards would be a CS8900A hooked up directly to a coprocessor, with software bashing it and producing ethernet frames 16:46:05 it would depend if i put it in my build of the kit i buy or not 16:46:07 Topaz: Right. The I/O controller would be responsible, once informed a frame of data is complete, for scatter-gathering data and blasting it out its serial port. 16:46:21 Robert: huh? 16:46:30 yeah, just it'd be possible to design a very simple chip-chip protocol for generic IO handling 16:46:35 Robert: isforth seems to run at speeds comparable to C 16:46:49 and doing networking and things on the actual processor will be childsplay 16:47:14 aum: I think gcc -O3 produces slightly faster code. :) 16:47:17 Topaz: Yep. Imagine simple firewalling occuring right on the I/O processor -- no need to burden the main CPU with the simple stuff. Unless you wanted it to. 16:47:37 Robert: isforth rules for size though 16:48:00 aum: Yep, and speed of compilation. 16:48:23 And if you really needed it, you could use an I/O processor for an empty slot to do other processing too. An I/O processor is a terrible thing to waste. :D 16:48:26 Robert: so what I/O trouble did you have with isforth/cgi? 16:49:05 my mind is an analog i/o processor ( said like speak n spell ) 16:49:44 aum: I don't remember anymore. 16:54:22 Anyway, these are just some ideas that I'm kicking around my head. 16:55:22 --- quit: cmeme (Remote closed the connection) 16:55:26 I still need to finish the basic machine architecture before I consider going on to more advanced operations. 16:56:16 --- join: cmeme (~cmeme@216.184.11.30.unused.swcp.com) joined #forth 16:58:39 there is a bit of Forth news 16:59:05 people are getting serious about putting a complete copy of Thinking Forth online and Leo Brodie gave permission 16:59:11 also '336 16:59:16 YAY!!!!!! 16:59:20 IT'S ABOUT TIME!!! 16:59:22 * kc5tja dances!! 16:59:33 :^D 16:59:49 cool 16:59:52 starting forth is nice 17:00:12 =:^D-|-< 17:00:27 Yes. I am looking to maybe use Starting Forth as the skeleton document for my own Forth implementation on the Kestrel. Of course, I'd have to get permission, but... 17:01:10 But I've ALWAYS wanted a copy of Thinking Forth so I could read it. 17:01:20 I've never, ever been able to find a copy, however. 17:03:07 I also discovered today that there is a San Diego Forth Interest Group. 17:09:32 Robert: I see what you mean about isforth giving I/O problems for CGI 17:09:36 goodie 17:09:38 aum: :) 17:09:51 * aum tries piping isforth's output to cat 17:09:52 we don't really have a portland fig 17:09:54 I somehow doubt there is a Stockholm FIG. 17:10:08 Well, I don't think the SD-FIG is particularly active. 17:10:23 Of all the user groups on the list that I saw, the FIG was one of four that didn't have a website. :D 17:12:17 Ouch, that's bad. 17:12:28 He, yeah. 17:12:32 Heh even 17:12:32 The local ham radio club has a web site, but it's VERY inactive. 17:15:24 * Robert just realizes his Forth doesn't support negative numbers. 17:15:37 See? You DON'T need signed numbers!! :D 17:15:54 ahh, got isforth cgi working 17:16:07 2 neg <--- that's how -2 should be written. ;) 17:16:12 aum: Nice! :) 17:16:36 Man, I'm really glad to see such increased activity with Forth - if not Forth itself, then heavily Forth-inspired environments. 17:16:38 what if you need a literal 2? [ 2 neg ] literal is clumsy 17:16:39 Robert: replaced terminfo floads with a 'faketerm.f', which contains dummy words for white, >bold etc 17:17:20 slava: But DOABLE. >:) 17:17:26 slava: j/k 17:17:43 maybe somebody with FORTH CGI could sponser a HOG-SPACE style on their server and then I could make a special style that has the CGI stuff in it. 17:17:59 you could make a parsing word 17:18:01 neg 2 17:18:09 would read a number, neg it and , it 17:18:20 -: 2 17:18:31 the main problem with forth/cgi is the tendency of forths to start up with a statically-sized heap 17:18:33 kc5tja, then make - a denotation :) 17:18:41 That's a pretty good idea... Thanks. 17:19:28 slava: I have, after depositing a $666 check in my account, $205 in my account. Believe me, I have much more important matters to contend with at the moment. 17:24:53 --- quit: Tomasu ("SIGWTF") 17:26:17 Heh, speaking of 666, my Forth just reached 6.66 kB with everything compiled into it. 17:26:34 666 17:26:38 Heheh :D 17:26:48 mine is 66kb :) 17:27:01 The ultimate proof - Forth _is_ evil. 17:27:20 My Forth cross compiler, in GForth, is 50 lines. Does that count? ;D 17:27:28 (not including lines dedicated to comments) 17:27:30 i should check my program size 17:28:35 kc5tja: That's pretty neat. :) 17:28:41 nah 61344 bytes 17:28:48 kc5tja, i wish i could fit my source into 64x16 blocks :-P 17:28:53 you dudes r all pArAnOiD 17:29:25 slava: My cross assembler is actually in files. 17:29:36 slava: But yeah, I overwhelmingly prefer blocks to files as a general rule. 17:30:05 However, the 50 lines of Forth source is for the FTS1001. It'll naturally be quite a bit bigger for the x86. 17:30:23 I would predict close to 100 lines for the x86 version (that someday, I'll write). 17:31:37 Adding support for "-x" form was the easiest way out... 17:42:38 i must go 17:42:39 --- quit: LOOP-HOG () 18:16:48 my .s almost works ;) 18:19:00 :0 18:19:04 man. 18:19:11 :) <-- that's what I wanted to write. 18:25:43 --- join: I440r (~mark4@216-110-82-1.gen.twtelecom.net) joined #forth 18:29:48 Hey I440r... aum has been looking for you 18:30:22 aum is dave mcnab right? 18:30:31 im emailing him now :) 18:32:11 Not sure... Either way he was asking about CGI in IsForth 18:32:58 re I440r 18:33:14 hi :) 18:33:39 I440r: You know that the Kestrel software now can print text to the screen, right? :D I'm still so proud of that. 18:33:53 * kc5tja will be working on an implementation of TYPE tonight, and maybe start hacking on the keyboard input code. 18:34:56 kc5tja! sounds like you've come a long way with Kestrel 18:37:35 --- join: TheBlueWizard (TheBlueWiz@pc5fdn1d.ppp.FCC.NET) joined #forth 18:37:35 --- mode: ChanServ set +o TheBlueWizard 18:41:45 --- quit: kc5tja ("Lost terminal") 18:41:59 --- join: kc5tja (~kc5tja@66-74-218-202.san.rr.com) joined #forth 18:42:04 --- mode: ChanServ set +o kc5tja 18:42:05 hiya kc5tja 18:47:59 tbw :) 18:49:23 how's life? 18:49:31 hiya I440r :) 18:50:03 or to make it more Forth-like: I440r hiya :) 18:50:53 WizardBlueThe, hi. :) 18:51:24 lol 18:51:34 heh...Robert hiya 18:56:40 * TheBlueWizard decides this "name" hiya pattern is much better, so he shall greet everyone from now on 18:57:20 and of course I will localize it as called for...like: mur terve! :) 18:57:34 In Swedish it's "hej". 18:57:45 re TheBlueWizard 18:57:58 I know that one :) 18:58:18 kc5tja hiya...how's life? 18:58:19 TheBlueWizard: But you didn't localize my greeting! 18:58:25 TheBlueWizard: Not too good at the moment. :/ 18:58:31 Once again, i have to make a partial rent payment for this month. 18:58:43 Robert hej...better? :) 18:58:48 TheBlueWizard: Yes. ;) 18:58:49 It seems I have a few more months of sustaining myself on Macaroni and Cheese and Ramen. >:( 18:59:05 kc5 :( 18:59:18 ouch! what's eating into your pocketbook? Kestrel project? 19:03:20 --- join: Balzac (~balzac33@pcp02022903pcs.rthfrd01.tn.comcast.net) joined #forth 19:04:31 --- part: Balzac left #forth 19:08:04 No. 19:08:19 Just catching up on old expenses, and my website bill came in at a most inopportune time. :/ 19:08:54 --- quit: ChanServ (bear.freenode.net irc.freenode.net) 19:08:54 --- quit: ianp (bear.freenode.net irc.freenode.net) 19:08:54 --- quit: slava (bear.freenode.net irc.freenode.net) 19:08:54 --- quit: cmeme (bear.freenode.net irc.freenode.net) 19:08:54 --- quit: lalalim (bear.freenode.net irc.freenode.net) 19:08:54 --- quit: htp123 (bear.freenode.net irc.freenode.net) 19:09:22 hmmm we seem to be having alot of those lately 19:09:38 --- join: ChanServ (ChanServ@services.) joined #forth 19:09:38 --- join: cmeme (~cmeme@216.184.11.30.unused.swcp.com) joined #forth 19:09:38 --- join: lalalim (~lalalim@p508AA795.dip.t-dialin.net) joined #forth 19:09:38 --- join: slava (~slava@CPE00096ba44261-CM000e5cdfda14.cpe.net.cable.rogers.com) joined #forth 19:09:38 --- join: ianp (ian@inpuj.net) joined #forth 19:09:38 --- join: htp123 (~tehsux@S0106000d6151238b.gv.shawcable.net) joined #forth 19:09:38 --- mode: irc.freenode.net set +o ChanServ 19:10:15 ah...like having a car insurance bill coming in at an inopportuner time :-] 19:16:10 Yes. :( 19:16:20 Yes. :( 19:16:24 In that order. 19:16:37 * kc5tja really needs to find an improved source of income somehow. 19:18:15 --- quit: Topaz (Remote closed the connection) 19:23:03 The current job IS letting me (ssslllooowwwlllyyy) catch up on my past debts. 19:23:54 But it is annoying to suddenly realize you're $400 in the hole because of people who fucking charge their accounts a month and a half after you post a fucking payment. 19:45:34 what's a forth word that does ( x1 x2 x3 -- x1 x2 x3 x1 x2 ) ? 19:46:05 none that i know of 19:46:18 >r 2dup r> -rot :) 19:46:42 ok, thx 19:46:45 or 3dup drop 19:46:49 if you have 3dup 19:46:56 call it a double-dutch-leapfrog :) 19:47:25 How about MOVER, for Mixed-precision OVER. :) 19:47:44 lol 19:58:41 --- join: snowrichard (richard@adsl-068-209-159-248.sip.shv.bellsouth.net) joined #forth 19:59:34 hello 20:00:13 --- quit: snowrichard (Client Quit) 20:00:14 snowrichard hiya 20:00:31 grr 20:03:15 --- join: Tomasu (~moose@68.149.209.223) joined #forth 20:11:05 gotta go...all bye! 20:11:27 --- part: TheBlueWizard left #forth 20:19:11 --- quit: Teratogen ("SKYKING, SKYKING, DO NOT ANSWER") 20:32:35 --- join: snowrichard (richard@adsl-068-209-159-248.sip.shv.bellsouth.net) joined #forth 20:35:49 wb snowrichard 20:36:14 hi 20:36:20 busy week. 20:36:21 hi 20:36:35 took a spill on sunday and was in hospital a few days 20:38:00 now I have a black eye and an abrasion on my forehead, but they could find nothing to explain why I passed out. 20:39:07 any gforth users here? 20:39:21 I have installed gforth and have not used it yet. 20:39:49 so not me :) 20:40:23 weird stuff - gforth is lightning fast, but its dyn lib calls are painfully slow 20:40:41 gforth is fast? 20:40:48 yep 20:40:58 I've used it a bit 20:41:59 didn't occur to me as fast, but I haven't used a whole lot of other forths to compair it to. 20:43:05 --- quit: snowrichard ("ChatZilla 0.9.52B [Mozilla rv:1.6/1]") 20:43:23 what's a decent speed benchmark for forth? 20:43:32 aum: I use gforth extensively, but not in any advanced way. 20:43:58 kc5tja: what would you consider advanced? 20:44:33 just felt weird - gforth is extremely fast on a recursive fib test, but its c function calls are way slow 20:45:32 oh, that' be a nice test. do you have the code for fib laying around? 20:45:44 I don't feel like writing it again atm 20:46:59 : fib dup 3 < if drop 1 else 1- dup recurse swap 1- recurse + then ; 20:48:32 gforth is 6x faster at this than factor :) 20:48:59 Herkamire: Knowing all the implementation details of gforth. 20:52:45 YAY! I just get 'defer, '', and 'is working. 20:53:22 Folks, I hate to tell you this, but gforth happens to be one of the slower Forth environments for Linux too (although it is one of the fastest of its class). 20:53:45 eventually factor will compile to native code 20:54:06 gforth is, on average, 5 times slower than maximally optimized GCC. 20:54:18 which is fast for an interpreter 20:54:47 gforth is about 3x slower than java which is not bad 20:55:08 slava: Well, 3x slower than your JVM. 20:55:18 when i say 'java' i mean 'sun's jvm' 20:55:25 which is the only decent one 20:55:25 Sun's JVM is pretty freaking slow. :) I think gforth is noticably faster than the Sun JVM on my particular installation. 20:55:33 at doing what? 20:55:35 startup speed? 20:55:42 No, just general processing. 20:55:52 how did you determine this? 20:56:04 Observational evidence. 20:56:11 I did not do a scientific benchmakr. 20:56:15 And I apologize if I hurt your pride. 20:56:20 a lot of java libraries are bloated but this does not mean the VM itself is slow 20:56:35 slava: What makes the VM slow is its horrid memory management. 20:56:46 how is it horrid? 20:56:48 On my box, the JVM thrashes the page memory. 20:56:55 you have 4mb ram? :) 20:56:55 It's constantly swapping to disk. 20:57:02 slava: Do I need to have more? I shouldn't. 20:57:06 it uses a lot of memory, yes, but the gc is fast. 20:57:07 (but to be honest, i have 640MB) 20:57:24 i never notice gc pauses (but i do notice huge memory usage :) 20:57:33 GC works *nice* as long as it doesn't think it has infinite amounts of memory (which is why it's slow; when the GC kicks in AND it's paging, ...ZZZzzzzz....) 20:57:40 right now jedit is using 64mb of ram, which is too much for a text editor 20:58:08 We have software that uses Java on network servers at work. 20:58:15 Good lord, they are slow as molasses. 20:58:43 java for network serving is slow unless a) you run latest jvm b) you tweak your code to hell c) you have a lot of ram. 20:58:48 consultants make $$$ from this knowledge 20:58:49 Some 11 to 20 Java instances on a 450MHz processor, even with 512MB, is a good recipe for effectively killing a server. 20:59:40 slava: Sun's JVM allocates a fixed chunk of RAM for use as its memory arena -- if there is no internal RAM to handle this, it'll page out to disk. 20:59:47 herkforth is 3.5X faster than gforth at the recursive fib 20:59:57 Herkamire, nice :) 21:00:16 kc5tja, all gc languages do this though. 21:00:20 slava: This is what makes Java so slow. It's not the bytecode interpreter -- it's the swapping to disk. 21:00:36 like i said, its an issue of having enough ram 21:00:53 how do you think sun sells those big servers -- "run your java web apps on these!" 21:01:15 that's rediculous 21:01:36 but if a) you have a lot of ram b) you don't use bloated libraries then its reasonably fast 21:01:40 Look, we're not going to install 20GB of RAM just to run 20 instances of Java for StoreSense, Miva, or whatever shopping cart program the client is using. 21:01:42 how do you expect a server to handle 20 concurrent requests if each java process takes up 100MB 21:01:46 my game runs at 100fps (but of course the graphics is rendered in hardware, so...) 21:01:56 Herkamire, only run 1 java process 21:02:04 Herkamire, it doesn't spawn a new vm for each request 21:02:15 slava: Yes, ours does. 21:02:22 kc5tja, that's just silly 21:02:25 we're talking about webservers here 21:02:32 slava: No, that's how *every* network daemon works. 21:02:32 use something like tomcat or jboss 21:02:38 slava: WE ARE using Tomcat!!! 21:02:44 kc5tja, java supports multiplexed i/o and threads. 21:02:52 there is never a need to spawn a new VM instance to handle a request 21:03:01 you're using something like inetd? 21:03:03 slava: Tell that to the authors of StoreSense then. 21:03:16 i don't take responsibility for badly written apps 21:03:21 slava: No, it's launched from Apache, of course. 21:03:27 Did I say you did? 21:03:28 as a cgi? 21:03:45 slava: I have no idea. I just know what I see as a technician who is constantly killing and restarting it. :) 21:04:05 well your first mistake is using apache with cgi and not a java httpd 21:04:15 slava: no, that's not our mistake. 21:04:30 well, the mistake of whoever set this POS up 21:04:31 That's a requirement by StoreSense and Miva. 21:05:58 As for what application I used to compare Java to GForth, though it is none other than Eclipse. 21:06:15 you're comparing eclipse with what? 21:06:15 (which is a totally BAD ASS integrated development environment, btw -- HIGHLY recommended) 21:06:20 no equivalent written in forth exist 21:06:27 Just the GUI aspect. 21:06:28 i've tried eclipse, i hate the gui toolkit 21:06:34 its slow and buggy 21:06:55 I haven't coded for it, but the facilities that Eclipse uses seem stable enough. 21:07:14 I've never had Eclipse die. It's very stable, in my experience. 21:07:32 did you use the gtk or motif gui? 21:07:39 GTK 21:07:52 i found that one very buggy. it was a while ago, though. 21:08:17 I hope nobody uses the recurive fib for anything but benchmarking. I implemented fib with a loop, and the code is shorter, and executes before you get your hand off the enter key 21:08:37 kc5tja, what was the forth GUI you compared it with? 21:08:44 i've never seen a gtk app written in forth but surely its possible. 21:08:56 The FTS1001 wouldn't be able to execute a recursive fib benchmark; the return stack depth is only 16. :D 21:09:00 : fib 0 1 rot 1 do tuck + loop nip ; 21:09:39 : fib 0 1 rot [ tuck + ] times ; 21:09:40 recursive fib recurses on itself 1 hundred and 13 million times to calculate 40th fib 21:09:46 slava: I'm talking about general application performance. Typing a character in Eclipse, there is some delay. There is none in GForth. Etc. 21:09:47 oh that needs a 'nip' too. 21:09:50 I440r: that's the iterative version - not as useful for benchmark 21:09:50 fib2 1 swap 1 swap 2- for over + swap next drop ; 21:09:55 slava: Like I said. I DID NOT DO A SCIENTIFIC COMPARISON. 21:09:57 Sheesh. 21:10:16 aum its useful for showing how an itterative method beats a recursive one here hehe 21:10:18 well its a bit silly comparing response time of gtk+ and console... 21:10:24 No, it's not. 21:10:34 Many GTK apps are every bit as responsive as a console. 21:10:35 run a java console app, there's no delay 21:10:37 On my box, at least. 21:10:41 no way, gtk is slow-as for me. 21:10:52 slower than qt. 21:10:55 slava: I have an 800MHz Athlon, with GTK compiled for my machine. 21:10:57 It's not slow. 21:11:09 Qt is **VERY** slow on my box. I switched away from KDE precisely for that reason. 21:11:21 it probably depends on X drivers 21:11:23 I440r: that's an ever-so-slight understatement :) 21:11:24 And I'm still looking for a suitable replacement for KMail. As soon as I find one, I'm switching instantly. 21:11:29 aum lol 21:11:33 kc5tja, i use mozilla mail. 21:11:35 qt has been slow for me. gtk is fast 21:11:43 No thanks. I really don't like Mozilla Mail. 21:11:48 i love recursive fib because it demonstrates how abusive recursion can be 21:11:49 recurive method done once... itterative method done 90 million times hehe 21:11:55 qt is so bloated I've given up on installing it 21:12:02 recursive fib is doubly recursive 21:12:04 Herkamire: wise move 21:12:22 I started building qt and it just started swapping like crazy after a bit. I let it go for a few hours, then killed it. 21:12:29 qt is bloat-city 21:12:32 I currently use either Ion (preferred) or amiwm (very close second, used only when Ion's default key bindings get in my way for an application). 21:12:33 i've never had this problem 21:12:39 I never liked anything from kde or qt 21:12:46 the funniest sight is qt running on a box slower than 400MHz 21:12:50 i remember i had 32mb of ram in my old computer, and compiling qt took ages 21:13:01 Herkamire: I like some programs from KDE. KMail is nice, but it's too sluggish for me. 21:13:05 nowadays i don't care about 'code bloat' as much :) 21:13:13 --- join: snowrichard (richard@adsl-068-209-159-248.sip.shv.bellsouth.net) joined #forth 21:13:25 I can't stand sluggish programs. 21:13:31 I use Mutt. I'm happy with it 21:13:40 slava: I have an 800MHz Athlon, 640MB of RAM, and I still use and insist on window managers that are less than 256KB in size. amiwm is less than 80KB in size on my box. :D 21:13:42 "all mail clients suck. this one just sucks less" 21:13:43 i don't like mutt because you can't really view > 1 mail at a time. 21:14:14 *I* can't read more than one thing at a time 21:14:17 At work I use twm. :D 21:14:56 i want to make a POP client for Forth, but I'm wholesale uncertain how to archive the messages. 21:15:09 maildir 21:15:30 Herkamire: Possibly, but it's not good for indexing or searching. 21:16:04 yeah, my only complaint with mutt, is that it's starting to get slow to load as my mailboxes are getting huge 21:17:17 the only problem I have with Mutt is its default configuration seems needlessly out of whack with what everyone else uses. 21:17:32 It seems like everyone who downloads it goes through at least two hours pouring over the default configuration file, tweaking things. 21:17:39 1626 messages, takes a few secconds 21:17:48 And then actually USING it is another matter all-together -- WAY to easy to irretrievably delete messages. 21:17:58 Herkamire: It's faster than PINE. :D 21:18:39 mutt is painful, especially for folder navigation 21:18:44 Yes. 21:18:50 yeah, folder nav is lame 21:18:52 the *nix world still awaits a decent console email client 21:19:05 it dosn't seem to have the concept of relative paths 21:19:07 I'm not sure I could improve on it, personally, but hey, since it's Forth, it is imminently hackable. :D 21:19:22 a mail client in forth?? which one? 21:19:30 aum: The one I haven't written yet. 21:19:32 kc5tja: good point about the configuring 21:19:43 it did take me quite a while to get it the way I wanted it 21:19:58 why do so many curses apps totally fail to restore the terminal settings on exit ?!?! 21:20:45 I think if I were to write a POP client in Forth, I would probably use Citadel BBS-like navigation. 21:21:02 I have 38 meaningfull lines I put in my .muttrc, pluss the standard PGP stuff 21:21:30 why do apps have to restore terminal settings??? 21:21:33 it's so lame. 21:21:49 Indeed. 21:21:53 every app with anything but a line based text input system has to catch all kinds of signals and crap. 21:22:27 you have to go through horrible contortions just to get keypresses when they are hit, and I don't even know if it's possible to find out about keyup events under X 21:22:36 not true 21:22:43 it's an easy hack to put input into raw mode 21:22:48 and it doesn't even require curses 21:23:01 you can get it in raw mode under x? 21:23:20 of course! 21:23:24 how? 21:23:34 gimme a sec, i'll paste the code 21:23:53 Herkamire: X11 generates both key up and key down events for every key and mouse button. 21:24:16 A *console* may filter these events out to make it look like a raw ASCII stream. 21:24:22 But X11's core protocol does have it, and it is used. 21:24:23 kc5tja: I can get them with SDL, I just wasn't aware you could get them through STDIN under eg xterm 21:24:41 xterm may or may not support it. 21:24:46 I'm talking about raw Xlib. 21:24:47 xterm is an abdomination 21:24:50 why are we still emulating vt100 21:25:10 I use rxvt because it's faster and less flickery 21:25:20 Herkamire: #include 21:25:20 struct termios newtset, oldtset; 21:25:20 newtset = oldtset; 21:25:20 newtset.c_lflag &= ~(ECHO | ICANON); 21:25:20 newtset.c_iflag &= ~ICRNL; 21:25:22 newtset.c_cc[VTIME] = 0; 21:25:23 newtset.c_cc[VMIN] = 1; 21:25:25 tcsetattr(STDIN_FILENO, TCSANOW, &newtset); 21:25:45 that disables line-buffering, and allows single-character fetches 21:25:52 aum: Does that work in an xterm or rxvt window though? 21:25:58 sure does :) 21:26:04 aum: what about keyup events? 21:26:05 Interesting. 21:26:13 Herkamire: don't get greedy :) 21:26:21 that was my point. 21:26:28 it's a PITA to get it unbuffered 21:26:28 google for getch and linux 21:26:33 Herkamire: You need to set the console into Raw mode for that. 21:26:33 and I don't think you can get keyups. 21:26:39 And THAT is something I'm not sure xterm/rxvt supports. 21:26:41 who really needs keyups? 21:26:52 i'm happy just to get keystrokes as they happen 21:26:55 aum: Game programmers, more than anyone else. 21:26:58 games 21:27:14 doing anything with the keyboard besides type 21:27:19 ahh, keyups require some x h4x041ng 21:27:21 making a humane interface 21:27:34 Herkamire: Good point. I forgot about that. 21:28:06 I want to make herkforth so you can hold down the apple key, type a command and release it to execute the command 21:29:33 Herkamire: man X 21:29:44 what good is X going to do me? 21:29:50 I'm not going to implement the X protocol in herkforth 21:30:09 there are X apps which let you insert keyboard event handlers into the loop, and intercept whatever key combos you like 21:30:24 alt key, ctrl key, logo key, key-up, key-down 21:30:40 Ahh, yes, the whole ICCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCM protocol. :D 21:30:47 And I think I forgot a few C's too. :D 21:30:49 get the source to xev 21:31:02 xev demonstrates how to grab low-level key events 21:31:13 Man, at least Amiga's IDCMP acronym was easy to type. :D 21:31:25 i have a new weblog entry describing factor's garbage collector: http://www.jroller.com/page/slava/ 21:31:38 warning though - low level X programming is like DIY root canal therapy with a rusty hand-drill 21:31:41 I'd rather write a C program that uses SDL, and run the forth image under that 21:32:14 aum: I'm not touching X 21:32:14 X libs are written by that school of programmers who say "if it's hard to write, it should be hard to use" 21:32:29 Herkamire: that might save your sanity :) 21:32:38 well sdl is a simple framebuffer, X is network graphics -> much more complex. 21:32:52 I don't give a crap about network graphics 21:32:59 then don't use X 21:33:02 use the sdl api 21:33:25 aum: Actually, X11 was written by the folks who thought that X10 compatibility was paramount. Then, on top of that, X11R2 all the way up to X11R6, should be backward compatible. 21:33:41 I am also not going to make herkforth be able to link to libraries. 21:33:42 Much of the cruft in X11 was simply taken out of the W window manager's API. 21:34:22 see, that's where Herkamire and I will differ. I will link against C libraries. Someday. Not now, but someday... :D 21:34:32 Herkamire, why not?! 21:34:35 yeah, we have different goals 21:34:39 I'm making an operating system 21:34:46 not a handy linux programming environment 21:36:05 doing the things I want to do under linux would be impossibly complex 21:36:39 why 21:37:01 keyboard input is a bastard as I have just described. 21:37:04 graphics are slow 21:37:19 how are graphics slow? you can access the fb directly if you want, or use shared memory under x11. 21:37:20 only way to get decent framerates are with OpenGL with is complex 21:37:32 yes, I can, and I get about 10fps 21:37:33 i'd rather use x11 and opengl than write a keyboard driver :) 21:37:36 I want 70fps 21:38:09 I promise my keyboard driver will be simpler than trying to interact with opengl and X11 21:38:24 except you'll have to write 10 keyboard drivers for each architecture. 21:38:34 no I wont. 21:38:49 otherwise it will only run on your kit 21:38:55 almost everybody with a recent mac has a USB Apple Pro Keyboard 21:39:06 mac is like 3% of all computers 21:39:34 USB keyboards all follow the same HID class for keyboards in general. Many of the scan codes are the same as the PC USB keyboards. 21:39:44 probably more than the hardware compatible with colorforth 21:39:51 (which borrows from the standard PS/2 keyboard scancode set 0 IIRC). 21:39:56 * aum still fails to understand why apple strangled themselves by hanging on to their hardware monopoly 21:40:01 ok, but if you forgo linux you'll have to write your own disk driver/graphics driver/etc too. 21:40:13 aum: Because they can't compete with Microsoft on a software-only basis. 21:40:30 aum: don't know. perhaps because it's way better... that's why I like it anyway. 21:40:33 kc5tja: they were way ahead of M$ in 1984 when the mac came out 21:40:53 aum: In 1884, EVERYONE was holding onto their hardware. 21:40:57 1984 rather 21:41:18 apple wants to deliver consistancy and ease of use 21:41:20 kc5tja: bullshit, 1983 - IBM released the first PC, hardware specs were open, clones were permitted 21:41:26 it can't do that if everybody has a different crappy bios 21:41:36 aum: Because IBM did not foresee large sales. 21:41:41 apple opened up to clones for a while, and it was a disaster. 21:41:45 kc5tja: I question that 21:41:52 the clones required special system disks, wouldn't start off the CD with the C key 21:42:00 aum: It's well known that if IBM had predicted the PC to take off as big as it has, it would have been more tightly controlled (witness the PS/2 line). 21:42:06 some required their own special firmware upgrades... 21:42:15 i'm looking forward to using a nice clean architecture, without decades of cruft... the forthbox kestrel :-) 21:42:25 The PS/2 is arguably vastly superior to even today's PC architectures with PCI bus. Yet, it's a dead architecture. 21:42:29 talk about kruft 21:43:15 (And frankly, the whole PS/2 line came about because of, you guessed it, NOT the Macintosh, but the Amiga!) 21:43:20 love that P4, a hack of a P3, hack of P2, hack of Pentium, hack of 486, hack of 386, hack of 8086, hack of 8088, hack of 8080, hack of 4040, hack of 4004 21:43:49 as I recall, the 4040 never existed; only the 4004 was made. 21:43:53 But otherwise, yes. 21:44:17 ppc instruction set seems well designed to me 21:44:19 And the 8088 is a hack of the 8086 (same core; different BIU circuitry). 21:44:36 * aum started hacking in '76, with an 8-bit board with LEDs and toggle switches and 256 bytes RAM 21:44:47 Herkamire: That's because IBM virtually invented RISC (well, they DID invent RISC; just not the RISC microprocessor -- see the IBM System/800 back in the late 70s). 21:45:29 IBM S/800 -> IBM PC/RT -> IBM RS/6000 (POWER-I) -> PowerPC 21:45:35 I wish there was a post-incrementing store... but that's my only complaint so far 21:45:45 The lineage is readily apparent -- many of the instruction set conventions date to the great mainframes. 21:45:57 Yeah. 21:46:15 oh, and the way the first two operands are swapped for "logical" instructions. 21:46:39 What do you mean by logical instructions? 21:48:20 and, or, shift etc 21:48:23 I think 21:48:33 not in the asm syntax, but the way they pack into the instructions 21:50:25 iirc most instructions put the destination register first (right after the opcode). "logical" instructions put a source register first, then the destination 21:50:39 ??? 21:50:43 That's bizarre. 21:50:47 yes 21:50:55 The assembler gets it right though, right? 21:51:12 yeah. the asm syntax always has destination first 21:51:36 That at least is a good thing. 21:51:57 eg add is encoded: [ opcode | destination | src1 | src2 | opcode2 | 0 ] 21:53:02 and is encoded: [ opcode | src1 | destination | src2 | opcode2 | 0 ] 21:53:18 I wonder what caused them to do that. 21:53:27 no idea 21:54:53 I guess I only had to implement two extra words in herkforth to handle it so far, but it just seems silly. 21:55:21 * kc5tja nods 21:55:27 I'm sure IBM had a good reason though. 21:55:39 They are simply not known for making maniacle technological decisions. 21:56:00 (even the IBM PC made perfect sense *at the time* and for the conditions they thought would occur.) 21:58:54 pegasos looks like a cool system. I don't know all that much about hardware though. 21:59:10 (seemed to have less cruft to me) 22:00:29 * kc5tja isn't too familiar with the hardware. 22:00:42 But the software sounds nice. Basically an OS that is almost a direct descendent of AmigaOS. 22:00:55 gar. amigaos 22:01:32 and it runs linux (gentoo I think) which in turn can run Mac OS if you like that sort of thing 22:02:12 I haven't started up MOL in months though. 22:02:34 I heard MOL was amazingly good. 22:02:47 A bit on the slow side, but still nonetheless very good. 22:02:58 works OK for me. not great 22:03:09 but it may be that my mac os installation has issues. 22:03:26 I would not be suprised if it was mac issues not issues with MOL 22:12:16 --- quit: snowrichard (Nick collision from services.) 22:12:28 --- join: richard_ (richard@adsl-068-209-159-248.sip.shv.bellsouth.net) joined #forth 22:12:33 --- join: snowrichard (richard@adsl-068-209-159-248.sip.shv.bellsouth.net) joined #forth 22:13:07 --- quit: richard_ (Client Quit) 22:13:16 hello 22:13:28 Howdy 22:13:44 how is your emulator coming along? 22:14:20 The emulator itself is not being worked on. Rather, I'm concentrating on the basic ROM software that will ship with it. 22:14:29 The assembler now supports 'defer, 'is, and '' 22:14:30 ok 22:14:44 cool 22:14:50 (so now I can compile code in the various vectors without muddling up the sources) 22:15:16 I also fixed at-xy to not leave cursor droppings either (and added two new words, "show" and "hide", which shows and hides the text cursor. Yes, they nest.) 22:15:44 My next step I think is to work on TYPE and somehow get the assembler to recognize and compile strings. 22:16:07 Not yet sure how I want to represent strings in memory just yet. Packed strings are nice, but difficult to create, I think. I still need to experiment. 22:16:52 unicode characters might be half a cell wide anyway 22:18:30 * slava is debugging some java code, it ain't fun ;) 22:18:49 luckily its my own code, not some random library. 22:18:59 using the sun sdk? 22:19:36 yup 22:20:01 I downloaded J, which is a descendant of APL, and it needed java for the gui 22:20:14 ide gui that is 22:20:25 why didn't they write it in j? 22:21:45 --- join: foobar (fooboo@dialup-4.152.162.131.Dial1.Atlanta1.Level3.net) joined #forth 22:22:31 I got out of the hospital wednesday and I am still picking glue from the tape they used from my arm. 22:25:02 ~=== break 22:26:06 Hehe 22:26:29 --- join: lalalim_ (~lalalim@p508ABD87.dip.t-dialin.net) joined #forth 22:26:53 slava: Not sure. K's GUI is written in C, but that's because it's an intrinsic part of the language. 22:26:57 J is a darn cool language though. :D 22:27:37 I need to learn more of it, but it has greatly influenced my CPU's design, and the design of my Forth environment I'm working on. 22:28:10 how so? 22:28:27 I read a few books about APL a long time ago, and stole some time on a terminal, but didn't stay on it long 22:28:37 selectric typewriter apl terminal 22:28:50 well, it made me realize the importance of arrays. Here's a language that doesn't even tokenize its input source, interprets it naively, yet offers performance comparable with unoptimized C. 22:28:54 That's damn impressive. 22:29:00 that dates me some I guess _) 22:29:24 not pre-tokenizing is a design flaw 22:29:24 Hehe :D 22:29:38 slava: No, it's not. 22:29:53 How do you tokenize +, ., /, *, :, ?, =, [, etc? 22:30:00 If you've ever seen J source code, you'll understand. 22:30:16 looks like line noise at first 22:30:21 Is K better than J? 22:30:26 you replace characters with pointers to their code definition et 22:30:27 etc* 22:30:28 foobar: Yes, in many ways. 22:30:35 pre-parse escapes in string 22:30:35 foobar: However, J is easier to learn, I've found. 22:30:57 I have my browser tuned to the ANS forth draft 22:31:25 slava: When interpretation time accounts for less than 0.1% the average run-time of an application, who cares about tokenization? 22:31:45 kc5tja, in a tight loop you don't want to keep parsing the same text over and over 22:32:15 slava: In J, you don't do that anyway. It's an array language -- it natively supports implicit iteration. 22:32:18 you don't need as many explicit loops in APL or J 22:32:38 still you might need an explicit loop at some stage and it will be inefficient. 22:33:44 Here's a spreadsheet in six lines of K: http://www.kochandreas.com/home/language/cases/SPREADSHEET_K.HTM 22:33:53 J and K are both used to manipulate databases larger than the combined address space of all the PCs in the state of California. They don't use explicit iteration. 22:33:55 my first language was Fortran IV 22:34:34 foobar, that is unreadable 22:34:52 It's unreadable because you don't know K. 22:35:00 Forth is totally intractable to most C programmers. 22:35:02 the college mainframe had 512 kbytes of core 22:35:07 `$' is not a good name for a function. 22:35:11 what is :[; 22:35:39 slava: Instead of dismissing the langauge on the basis of its readability, I would recommend reading some of the tutorials first. 22:35:58 I am getting offended at the off-handed dismissal of the language. 22:36:09 K or J? 22:36:14 or L? 22:36:17 :) 22:37:12 --- quit: snowrichard ("Leaving") 22:37:28 if one used the language daily, '$' and ':[;' would become second nature, i suppose 22:37:38 * Tomasu is away: night 22:37:48 --- nick: Tomasu -> TomasuDlrrp 22:37:49 Yes. 22:39:46 --- quit: lalalim (Read error: 110 (Connection timed out)) 22:42:55 K can be downloaded here: http://www.kx.com/download/download.htm 22:43:51 I've used K before; I actually kind of prefer J over K -- for some reason, it seems easier to use to me, despite being a more complex language. 22:44:01 But, my preferred language is still Forth. 22:44:38 One of my daydreams is to make a library of Forth words that provides much of the same capabilities as J and/or K. 22:45:14 you'd need gc or refcounting for that 22:45:49 J capability in Forth sounds good 22:46:06 a vector stack? 22:46:16 J doesn't do GC of any kind (I'm not sure how they accomplish this; perhaps linear memory management), but I know K does reference counting, which it can do because it can guarantee everything is tree structured. 22:46:59 refcounting is kind of slow though. but simple to implement 22:47:08 foobar: That is largely why my CPU has three address registers and six memory accessors. :) 22:47:25 slava: If I were to implement a vector package, it'd use real GC -- Oberon style. 22:47:38 what kind of gc does oberon do? 22:48:28 Mark and sweep, but it uses type descriptors to identify where pointers lie. But in a vector (unlike a K list), all items are of the same type, so the vector itself can identify what kind of vector it is. 22:48:41 ok. 22:49:01 * kc5tja was considering mark-n-compact, which would be ideal. But, it would require a lot of indirection. 22:49:15 Well, not once you're working inside a vector, but to get TO a vector that is. 22:49:17 stop and copy is the simplest to implement but there's the 2x overhead. 22:49:31 * kc5tja nods 22:50:08 It's good for generational collectors though, as I understand, since the younger generations are collected so frequently, that the overhead of other techniques dwarfs the time to copy. 22:50:20 I guess it depends on the target CPU though. 22:50:23 yup. 22:50:31 also copying gc makes allocation very simple. 22:50:36 no need to maintain a free list. 22:50:53 A compacting GCer is a single-pool variant of a copy GCer. 22:51:01 yup. 22:51:07 That's why I was going with a compacting GCer. 22:51:25 stupid question: in ANS Forth, if you use ALLOCATE you must use FREE before you exit the program, right? 22:51:57 foobar: Depends on the host OS. Many OSes will automatically free your memory. Some, like AmigaOS, will not. It's best if you FREE it though. 22:52:08 ok 22:52:54 * kc5tja will be right back. 22:58:51 --- quit: poingie ("Chatzilla 0.9.64b [Mozilla rv:1.7/20040626]") 23:04:30 --- quit: htp123 ("*") 23:05:48 "After 67-year-old Hurshell Ralls went into surgery for bladder cancer, he came out of surgery missing more than he ever expected. His penis and testicles were gone. " 23:06:50 another reason to shun the medical establishment 23:13:49 back 23:15:49 Damn, I'm getting tired. 23:15:54 At least I'm at a good stopping point. 23:16:20 Although it's not much progress, it is definitely some. 23:24:09 I little progress every day get's you places 23:25:11 I think most of the herkforth is made up of small advancements 23:26:34 here is a quote about java -vs- perl for web stuff 23:26:37 "For the past 6 years I've been selling an application (the ad server that runs here on Javalobby) written in Perl and over the course of the last two years I've rehashed it in Java. Let me tell you, there is a huge difference: Java without question is faster and more scalable. With the Perl version running under mod_fastcgi, we were lucky if a Dual Xeon 2 GHz with 2 GB of RAM could serve more than 3 million ads per da 23:26:37 y. The Java version on the same hardware has proven itself by pretty effortlessly serving 9 million ads per day." 23:29:48 so, run the perl version under mod_perl 23:31:42 network latency 23:31:56 java is surprisingly fast enough 23:33:15 well, that's a new one on me. 23:33:23 I've never ever seen a java program do anything quickly 23:33:47 i've never seen a forth program do anything *useful* 23:33:50 * slava ducks 23:34:10 hehe :) 23:34:12 * foobar searches for his gun 23:34:45 I've... translated hex <--> decimal... 23:35:37 many Forthers defected to Jave: Tom Zimmer, Wil Baden, Bill Muench, etc. 23:35:41 java 23:35:50 foobar: weird 23:37:05 a message from Baden was recently forwarded to c.l.f. in which he said Forth was only for computers with "constrained resources" 23:37:05 someday... I should write a juggling simulator for my OS :) 23:37:51 whereas java is only for computers with too many resources? 23:38:08 i guess 23:39:21 gosh, these processors are getting so fast. we can cut the speed down 100x by running everything on a virtual machine. oh boy ;) 23:40:06 it'll be portable, and run equally crappy on the very few systems that support java well 23:40:13 and usually not at all on other systems 23:40:46 i wish the ANS standard had made forth more competitive with java by include a lot more string-handling words 23:41:03 if java's so freaking portable, then why does it usually not work on my computer? 23:41:34 string handling can easily be done by including some other file 23:41:47 it would be nice to have a standard for graphics 23:41:56 yes 23:42:11 I have no problem writing my own string functions. 23:42:40 but it's easier to use pre-written standard functions 23:42:41 but I generally don't want to muck deep enough into other people's forth, and the host system to get graphics working 23:42:58 as in C, Awk, Icon, basic, etc. 23:43:44 the only free forth i could find for graphics under DOS is Smal32 from russia 23:44:35 someday someday someday 23:45:08 I'll have my own forth os 23:45:10 good drivers 23:45:18 simple to program for and change 23:46:06 I really want to play with graphics, but it really grinds me how much linux slows the graphics down 23:47:38 damn. I'm getting payed to set a linux machine up to replace one, and get the timesheets database back up. 23:47:51 I got the system, webserver database etc intsalled. 23:47:59 but I can't find the data for the database. 23:48:07 once I plunk that it in should be done 23:48:34 good luck 23:59:59 --- log: ended forth/04.07.09