00:00:00 --- log: started forth/09.07.19 00:00:07 --- quit: gogonkt (Remote closed the connection) 00:00:17 --- join: gogonkt (n=info@113.69.47.221) joined #forth 00:10:39 --- quit: tathi (Read error: 110 (Connection timed out)) 00:16:31 --- quit: gogonkt (Remote closed the connection) 00:16:38 --- join: gogonkt (n=info@113.69.47.221) joined #forth 00:45:22 --- quit: aguaithefreak (Read error: 54 (Connection reset by peer)) 01:16:16 g'day #forth 01:31:41 --- join: jewel_ (n=jewel@dsl-242-130-65.telkomadsl.co.za) joined #forth 01:41:40 --- nick: schme -> schmx 04:47:23 --- join: X-Scale2 (i=email@89.180.144.5) joined #forth 05:03:44 --- quit: TR2N (Read error: 110 (Connection timed out)) 06:16:26 --- quit: jewel_ (Read error: 113 (No route to host)) 07:02:56 --- nick: X-Scale2 -> TR2N 07:34:09 * madgarden is back (gone 08:56:16) 08:18:56 --- join: tathi (n=josh@216.227.91.166) joined #forth 08:20:16 --- join: impomatic (n=John@nat66.mia.three.co.uk) joined #forth 08:20:19 Hi :- 08:20:38 hey 08:20:55 Is there any difference between COMPILE, and , ? 08:21:11 compile, is portable? :) 08:21:18 I can see why the distinction is needed for a subroutine threaded forth, but no otherwise. 08:21:27 or a bytecoded forth 08:21:40 in a traditional threaded forth they're the same 08:21:43 yeah 08:27:20 I've been implementing the CORE control structures today. 08:28:18 I'm surprise when I look at other Forths how many fail if someone enters a control structure wrong when compiling a word. 08:30:07 Why the surprise? 08:34:11 Because the first Forth I used would check everything matched up and throw an error if not. 08:34:59 Most of those I've looked at would probably jump to a random location in memory or overwrite a random word. 08:40:02 --- join: GeDaMo (n=gedamo@212.225.107.61) joined #forth 08:41:30 oh 08:46:40 I use PFE which gives a control structure mismatch error. Pygmy crashed while trying to compile a word with a bad control stucture. 08:47:01 Looking at the code for eForth and Jones Forth it looks like they'd crash too 08:52:19 Do you not get offended when it tells you that you're entering the code wrong? ;) 08:52:30 MVP Forth and Smith's Forth look okay. 08:52:52 I'd rather it told me with an error message than by crashing :-) 08:53:07 well mebbe.. Do it right ;) 08:53:13 nah just kidding. Yeah it seems much nicer. 08:53:40 I was just wondering what to do in my Forth 08:54:29 I guess whichever floats your boat :) 09:07:46 Hmmm... if I did what I think best, it'd be Forth-like, not Forth. 09:09:12 I don't really like to see lots of words which do a similar thing, e.g. DUP, OVER, PLUCK, PICK. I'd just go with the generic PICK with a peephole optimizer and discard the others. :-) 09:09:41 By the way, is anyone aware of a good paper about peephole optimizers in Forth? 09:10:31 Not off-hand but I'd start looking at Anton Ertl's stuff 09:11:07 Thanks, will Google 09:14:35 and Peter Knaggs' thesis 09:15:04 http://www.rigwit.co.uk/thesis/index.html 09:15:11 sections four and five, IIRC 09:17:36 Thanks, downloading now 09:18:15 what sort of wrong control structures did you have in mind? 09:18:46 I think it's a good thing to have at least some checks 09:19:46 But I have a vague impression that FIG-Forth would disallow things like BEGIN .. WHILE .. WHILE .. REPEAT .. THEN, which are occasionally useful. 09:21:58 tathi: anything which doesn't make sense, but might accidentally be entered 09:22:56 I tried : newword then ; as a test 09:23:01 ah. 09:23:16 Yeah, I think implementations should at least check that the compile-time stack balances. 09:24:22 I assume the best thing to do if an error is made while compiling a word is hide it, then let the next colon definition overwrite it. 09:24:38 yeah 09:25:15 gforth also differentiates between orig and dest 09:26:59 I'm considering keeping the word names in a seperate area of memory from the code. That way I can keep them in a tree instead of a linked list and if neccessary the names can easily be removed to save space (e.g. on a microcontroller) 09:45:14 my forth doesn't do compile-time stack checks by default, but they can be added if desired (code exists in the library for this) 09:46:58 impomatic: And then , and COMPILE, can both point to the same code. :) 09:47:28 true; it's usually easy enough to add checks if they don't exist. 09:56:01 that's one of the nice things in forth :) 09:56:08 great language. :) 09:57:00 * crc is going to expand that library code a bit; it only checks repeat/again and :/; at present 10:00:47 --- join: OoS (n=John@nat65.mia.three.co.uk) joined #forth 10:05:51 --- quit: impomatic (Read error: 110 (Connection timed out)) 10:15:32 --- nick: OoS -> impomatic 10:17:37 --- join: jewel_ (n=jewel@dsl-242-130-65.telkomadsl.co.za) joined #forth 10:34:21 --- join: Cultzo (i=Unix@c-98-223-79-145.hsd1.in.comcast.net) joined #forth 11:22:10 --- join: jauaor (n=araujo@gentoo/developer/araujo) joined #forth 11:25:52 hello 11:25:58 hello 11:26:01 * jauaor adding some kind of local variables 11:31:16 my forth has no local variables 11:31:24 maybe I'll add that as a library module... 11:49:51 Jones Forth always uses HERE @ 11:50:22 Shouldn't HERE be sufficient to get a pointer to the next free memory location or have I misunderstood the standard? 11:51:38 HERE should give you the next free address 11:52:11 Normally, there's a variable DP (dictionary pointer) containing it so : HERE DP @ ; 11:52:50 I thought so. It looks like in Jones Forth HERE just returns DP 12:06:04 yeah 12:08:55 --- quit: proteusguy (Read error: 110 (Connection timed out)) 13:19:42 --- quit: jewel_ (Read error: 60 (Operation timed out)) 13:21:50 --- quit: gogonkt ("leaving") 13:22:12 --- join: gogonkt (n=info@113.69.47.221) joined #forth 13:25:25 --- quit: gogonkt (Client Quit) 13:27:00 --- join: gogonkt (n=info@113.69.47.221) joined #forth 14:27:40 --- quit: GeDaMo ("Leaving.") 14:28:32 --- quit: jauaor () 14:57:30 --- quit: crc (Client Quit) 15:29:17 --- quit: impomatic ("mov.i #1,1") 16:43:49 --- join: jauaor (n=araujo@gentoo/developer/araujo) joined #forth 17:10:12 --- join: crc (n=charlesc@c-68-80-139-0.hsd1.pa.comcast.net) joined #forth 18:13:52 --- join: Cout587 (i=Unix@c-98-223-79-145.hsd1.in.comcast.net) joined #forth 18:15:37 --- quit: Cultzo (Read error: 110 (Connection timed out)) 18:22:26 --- quit: Cout587 (Remote closed the connection) 20:27:19 --- join: cataska (n=cataska@210.64.6.235) joined #forth 21:47:25 --- join: proteusguy (n=proteusg@61.7.144.97) joined #forth 23:36:23 --- quit: proteusguy (Remote closed the connection) 23:37:12 * madgarden is away: aseepin' 23:52:07 --- join: proteusguy (n=proteusg@61.7.144.97) joined #forth 23:59:59 --- log: ended forth/09.07.19