00:00:00 --- log: started forth/04.10.10 00:01:07 Nope. 00:01:15 And frankly, it's getting rediculous. 00:02:15 --- quit: Hyrax (zelazny.freenode.net irc.freenode.net) 00:02:15 --- quit: OrngeTide (zelazny.freenode.net irc.freenode.net) 00:03:37 --- join: Hyrax (~das@adsl-64-219-100-33.dsl.lgvwtx.swbell.net) joined #forth 00:03:37 --- join: OrngeTide (orange@rm-f.net) joined #forth 00:04:30 :/ 00:19:46 --- quit: proteusguy (Read error: 104 (Connection reset by peer)) 00:20:24 --- join: proteusguy (~proteusgu@203.148.241.62) joined #forth 00:22:21 --- quit: proteusguy (Read error: 104 (Connection reset by peer)) 00:23:10 --- join: proteusguy (~proteusgu@203.148.241.62) joined #forth 00:27:55 --- join: qFox (C00K13S@82-169-140-229-mx.xdsl.tiscali.nl) joined #forth 00:28:41 --- quit: OrngeTide (zelazny.freenode.net irc.freenode.net) 00:28:41 --- quit: Hyrax (zelazny.freenode.net irc.freenode.net) 00:30:20 --- join: Hyrax (~das@adsl-64-219-100-33.dsl.lgvwtx.swbell.net) joined #forth 00:30:20 --- join: OrngeTide (orange@rm-f.net) joined #forth 00:32:52 --- quit: proteusguy ("The #python split is remarkably silly...") 00:37:15 --- join: colorg (r@core-dc-2-194.dynamic-dialup.coretel.net) joined #forth 00:41:15 --- join: mur_ (~mur@mgw2.uiah.fi) joined #forth 00:43:25 --- quit: mur (Read error: 60 (Operation timed out)) 01:10:04 --- quit: hefner ("...") 01:19:36 --- quit: Herkamire ("speaking of 4am... bed") 02:02:18 --- quit: mur_ (Remote closed the connection) 02:02:18 --- quit: Hyrax (Read error: 232 (Connection reset by peer)) 02:04:15 --- join: mur (~mur@uiah.fi) joined #forth 03:07:00 --- join: mur_ (~mur@uiah.fi) joined #forth 03:15:54 --- quit: mur (Read error: 110 (Connection timed out)) 04:16:38 --- join: crc (crc@93-pool1.ras11.nynyc-t.alerondial.net) joined #forth 04:56:03 --- join: vegemite (~leontopod@intertwingled.net) joined #forth 04:59:33 --- quit: mur_ (Remote closed the connection) 04:59:51 --- join: crc_ (crc@108-pool1.ras11.nynyc-t.alerondial.net) joined #forth 05:00:35 --- join: mur (~mur@uiah.fi) joined #forth 05:06:50 --- quit: vegemite ("SKYKING, SKYKING, DO NOT ANSWER") 05:09:53 --- quit: colorg ("ircII EPIC4pre2 cLIeNUX. Can you say that?") 05:16:50 --- quit: crc (Nick collision from services.) 05:16:58 --- nick: crc_ -> crc 05:21:45 --- join: tathi (~josh@pcp02123722pcs.milfrd01.pa.comcast.net) joined #forth 05:23:05 --- join: scope (~junk@njd.paradise.net.nz) joined #forth 05:26:17 --- quit: tathi (Client Quit) 05:26:24 --- join: tathi (~josh@pcp02123722pcs.milfrd01.pa.comcast.net) joined #forth 05:30:38 --- quit: crc ("Time for bed... Goodnight!") 05:31:09 --- join: mur_ (~mur@uiah.fi) joined #forth 05:41:44 --- quit: mur (Read error: 110 (Connection timed out)) 05:47:09 --- join: OrngeTid1 (orange@rm-f.net) joined #forth 05:47:21 Hi 05:48:30 --- quit: OrngeTide (zelazny.freenode.net irc.freenode.net) 05:49:11 --- quit: tathi ("leaving") 05:50:50 http://www.falvotech.com/unix-pipes-and-forth.html -- a work in progress, and is changing often. And it's unfinished, which is why it's not yet linked to the main site. 05:51:23 * Robert checks 05:52:59 CP/M-86 is binary compatible with DOS? 05:53:10 To a very large extent, yes. 05:53:29 CP/M-86 was renamed in the mid-80s to DR-DOS. 05:53:54 Interesting... I wonder how similar the RS232 interface on the CP/M-86 computer I have is to the one of IBM PCs. 05:55:38 How do you mean? 05:55:48 They both should be able to talk to each other, if that's what you mean. 05:55:56 RS232 is pretty leniant with the voltages in many ways. 05:56:09 As long as they exceed +3V or -3V, it should be fine. 05:56:45 I mean from the software. 05:56:58 The docs to that computer got lost in the 80s... 05:57:23 Oh. Well, the BIOS interfaces between the PC and earlier CP/M systems are of course different. 05:58:02 I am unsure if the 8086 machine would be BIOS-compatible with the PC architecture. 05:58:11 I know that there were "PC clones" and "PC compatibles." 06:03:46 Refresh the page: updated the section on CP/M with a new bibliographic reference. 06:03:57 * kc5tja just realized the Swaine reference is somewhat misleading. 06:04:02 (but still pertinent, so it stays.) 06:10:51 what is the value (2^32-1)^2? 06:12:11 oic, it's 2^64 - 2 * (2^32) + 1^2 06:12:17 sorry :) nm :) 06:12:21 That value equates to 2^64 - 4^32 + 1 06:13:06 no, not sure that's true 06:13:25 2 * 2^32 isn't 4^32 06:13:36 it's 2^33 06:13:40 18446744065119617024 06:14:10 main thing, that won't overflow 64b 06:14:21 It did for me. 06:14:27 (oddly enough) 06:14:37 * kc5tja retries. 06:15:40 Yeah, it's a bug in my Io interpreter. That'll be reported. :) 06:15:45 lessee... 2^64 - 1 is the largest -unsigned- 64b value 06:15:58 It down-converts a floating point number to integer if I multiply by an integer -- it should be the other way around. 06:16:04 Yes. 06:16:10 2^63-1 is the largest *signed* value. 06:16:28 most positive, yes :) 06:16:40 largest too, I can see that 06:17:38 so, here's the instructions I have to implement... 06:18:18 - a full multiply, both signed and unsigned, that do 32b x 32b -> 64b 06:18:59 - a "half" multiply that does the same thing, only the low 32b of the result is written 06:19:52 - within each, there are also accumulating versions, so it adds the resulting product to what might be a running total 06:20:19 * kc5tja nods 06:21:21 so I gotta figure out if gforth has a 32x32->64 multiply 06:21:42 preferably unsigned; I'll take care of the sign stuff 06:21:42 M* 06:21:47 Or, UM* 06:21:56 One of those two. 06:21:59 * kc5tja thinks UM* 06:22:07 It multiples 32b x 64b -> 64b. 06:22:20 So you can just convert one of the input 32-bit arguments to 64-bit first, and it should work. 06:22:25 hmm,,, that I'm not sure I can use 06:22:39 oic, just stick zeros 06:22:52 Stick in zeros for unsigned, or use S>D for signed values. 06:24:16 why does the m* have a 64b operand? 06:24:24 I just said it did. :-) 06:24:39 It takes one 32-bit, and one 64-bit operand to produce a 64-bit result. :) 06:24:44 M = Mixed Precision 06:24:50 ohh 06:25:06 Of course, there is also the alternative of converting *both* inputs to 64-bit first, and running D*. :) 06:25:27 does it give a 128-bit result? :) 06:26:14 No. 06:26:38 But there *might* be a D*/ which could use a 128-bit intermediate result. But, I strongly doubt it. 06:27:48 wait, ok, I'm looking at the manual... m* and um* are exactly what I'm looking for 06:29:52 m*/ tho, takes a 64b signed, a 32b signed and a 32b unsigned 06:31:40 * kc5tja nods 06:32:37 fm/mod takes a signed double and a signed single 06:33:31 sorry to bug anyone; I shoulda figgered it out myself 06:38:57 --- join: Topaz (~top@sown-85.ecs.soton.ac.uk) joined #forth 06:39:30 4 4 m* d. 16 ok 06:39:30 4 4 um* d. 16 ok 06:40:13 depth . 0 ok 06:40:18 perfect :) 06:48:39 --- join: Hyrax (~das@adsl-64-219-100-33.dsl.lgvwtx.swbell.net) joined #forth 06:59:19 Robert: What did you think of the site thus far? It's not even close to being finished, but of course, if any part is confusing, I'm always willing to know. 07:00:25 Hmm.. From the text I got the impression that you store all your data on the stack, even the file listing. 07:00:39 That is an implementation detail. 07:00:41 Maybe I do. 07:00:58 But, I will get to that later on in the document. 07:01:04 This is going to be a BIG document when it's done. 07:02:26 I've got six major sections to address, and I only have two only skeletally done. :) 07:02:39 Which are the other four? 07:03:33 Unix Philosophy, Forth Philosophy, Words versus programs, Words *as* programs. 07:04:12 What will you address in the last two? 07:04:23 You got interesting titles there. :) 07:04:46 The last two are pretty self-explanatory -- I'm not sure I can express the ideas in any other form. 07:04:52 There are two ways to look at words. 07:05:06 Chuck Moore looks at a word as a little program (an "application" as he calls it) in its own right. 07:05:10 Technically, he is correct. 07:05:34 Unix, however, despite the small-tool-that-works-well philosophy, still prefers a more integrated approach, because its tools work on more coarse-grained objects. 07:06:12 But when you write a high-level word to, for example, act as VI-like block editor (e.g., VIBE), I've just written "an application" as other people know it. 07:06:22 So there is a fine distinction -- the two categories definitely overlap. 07:06:41 But yet, they are nonetheless very different perspectives on the issue of, "What is an application?" 07:07:01 Hm, interesting.. I don't think I've though about words in those terms before. 07:07:07 thought* 07:07:28 That is, as little "applications", and not as just small parts of a large program. 07:07:35 I'm still not quite sure if those two sections will actually fit into the overall subject matter -- I'll try though. 07:07:41 If not, I'll remove them, and just start a new essay about it. 07:07:51 --- quit: Topaz (Read error: 60 (Operation timed out)) 07:12:30 --- quit: mur_ (Remote closed the connection) 07:13:03 --- join: mur (~mur@uiah.fi) joined #forth 07:15:11 --- join: Topaz (~top@sown-85.ecs.soton.ac.uk) joined #forth 07:19:54 Well, I'm going home. And to bed. 07:20:36 OK, good night 07:50:55 hi 07:53:40 --- quit: Topaz (Remote closed the connection) 08:30:18 --- join: saon (Ecoder@c-24-129-95-254.se.client2.attbi.com) joined #forth 08:59:06 --- join: oxygene (~oxygene@khepri.openbios.org) joined #forth 08:59:39 hello oxygene 08:59:49 hi 09:14:58 cool... finally got my microcontroller executing code over the cross target link from the host forth prompt. Now I can download, run, test existing code, add new code, and test that. :) 09:17:52 cool :) 09:19:24 yes, very cool... ;) I had to cheat in a few places, but I will go back later and fix them once I get get more working. 09:25:15 cool :) 09:29:03 dammit wtf 09:29:11 my parents think my car is just gonna stop working randomly 09:29:19 except that _thats not gonna happen_ 09:29:42 my dad understands that too, but my mom doesnt and my dad wont tell her otherwise 09:30:32 well, dads learn early on that moms are always right.... (Even when they are not) 09:30:56 yeah 09:31:04 i want to take my car because my car needs the excercise 09:33:08 Well, I gotta run, I'll be back in a few hours.... 09:33:20 i gotta run too 09:33:21 adios 09:45:15 --- quit: saon ("Leaving") 09:48:20 bubye arke 09:48:21 :p 09:48:36 Hi, NLer 09:48:42 hello SEer 09:57:43 --- quit: Robert ("brb") 09:58:52 --- join: Robert (~pink@c-bf5a71d5.17-1-64736c10.cust.bredbandsbolaget.se) joined #forth 10:07:45 --- quit: Robert ("Good night") 10:16:20 --- join: tathi (~josh@pcp02123722pcs.milfrd01.pa.comcast.net) joined #forth 10:20:49 --- quit: Baughn (Read error: 104 (Connection reset by peer)) 10:21:27 --- join: Sonarman (~matt@adsl-64-169-95-74.dsl.snfc21.pacbell.net) joined #forth 10:24:48 --- join: Baughn (~svein@cloud.brage.info) joined #forth 10:25:10 --- join: crc (crc@15-pool1.ras11.nynyc-t.alerondial.net) joined #forth 10:28:48 --- join: tathi_ (~josh@pcp02123722pcs.milfrd01.pa.comcast.net) joined #forth 10:36:53 --- quit: tathi (Nick collision from services.) 10:37:23 --- nick: tathi_ -> tathi 10:53:26 --- join: Herkamire (~jason@h000094d30ba2.ne.client2.attbi.com) joined #forth 10:53:26 --- mode: ChanServ set +o Herkamire 10:55:58 hi Herkamire 10:57:22 hi slava 10:57:49 what's new? 10:59:42 --- join: Sonarman_ (~matt@adsl-64-169-92-189.dsl.snfc21.pacbell.net) joined #forth 11:09:30 --- quit: Sonarman (Read error: 110 (Connection timed out)) 11:12:35 nothing really 11:13:47 on friday (I think) I started rewriting my bootstrapping code 11:14:27 so it's better organized, and puts things in a more sensible order 11:14:34 cool 11:14:47 well... mostly so I implement my idea for how to make data expandable 11:15:11 and so I can delete data objects without leaving a big unused spot in memory where it used to be 11:15:33 haven't touched the code sinse... perhaps I should do that now 11:15:59 how do you plan this? 11:16:01 compacting the heap? 11:16:11 or just adding the empty spot to a free list? 11:17:18 compacting 11:17:35 currently, it just copies the whole data section as one big block 11:17:54 I'm rewriting that, so instead it copies each data object seperately from wherever it is 11:18:11 new data objects will be allocated right on the heap 11:19:40 any data objects that need to be expanded can be copied onto the heap, and appended as nessesary 11:20:09 how does it know to update pointers to data objects? 11:21:03 it just updates the pointer in the dictionary. 11:21:11 compiled references to the object will still get the old one 11:21:18 ok so data objects are referred to indirectly? 11:21:25 not sure what I'm going to do about this (if anything) 11:21:58 no, pointers to data are generally compiled into code 11:22:12 so you recompile the code when you compact teh heap? 11:22:14 eg: : foo@ foo-data + c@ ; 11:22:47 foo-data is the word that has a pointer to the data in it's dictionary entry 11:22:57 mo compiler will compile a literal with that pointer when the above is compiled 11:23:17 s/mo/my/ 11:23:56 so if I copy the data for foo-data to the heap, change it, add to it, and update the pointer in the dictionary, foo@ will still work on the old data 11:24:06 a recompile of foo@ will fix this 11:24:47 i have a similar problem with my compiler, if you recompile a word, compiled words that depend on it refer to the old word 11:25:06 this does not happen with the interpreter 11:25:18 i need some kind of auto-recompiling 11:31:09 Sonarman_: well, sortof the other way around. when I bootstrap (recompile everything and start over) I toss the heap. I'm writing code now to save the data objects from the heap and save (compact) them during the bootstrapping 11:34:39 --- join: crc_ (crc@113-pool1.ras11.nynyc-t.alerondial.net) joined #forth 11:35:07 --- quit: crc (Nick collision from services.) 11:35:16 --- nick: crc_ -> crc 11:40:59 ah ok 11:43:12 so masically I'm making the kind of memory management that works for the editor 11:43:36 but not for things that need to change a lot at runtime over and over 11:56:37 s/masically/basically/ 11:58:37 heh, you correct yourself 13 minutes afterwards :) 12:01:11 --- quit: wincent (Remote closed the connection) 12:01:29 --- join: ows (~ows@a213-22-98-47.netcabo.pt) joined #forth 12:01:43 --- part: ows left #forth 12:03:37 --- quit: Baughn (Read error: 60 (Operation timed out)) 12:04:58 --- join: wincent (~wincent@void-109.pmnet.uni-oldenburg.de) joined #forth 12:05:27 :) didn't notice it until then 12:07:04 I can track a moving object at runtime 12:07:54 it's a little ugly. something like this: ' foo-data lit @ 12:08:43 I'll make something like : movable-data lit @ ; 12:09:00 have to come up with a better name 12:17:11 --- join: futhin (thin@bespin.org) joined #forth 12:17:11 --- mode: ChanServ set +o futhin 12:17:27 --- mode: futhin set -o clog 12:17:30 --- mode: futhin set -o cmeme 12:18:02 --- part: futhin left #forth 12:39:37 * crc hates floppy disks 12:40:19 They're a pain to write drivers for :-( 12:40:37 hi crc 12:40:57 hi slava 12:42:43 what's new? 12:43:25 I fixed a couple of bugs in my block editor, rewrote my serial port code, and am trying to get a floppy driver working 12:45:59 I've also been porting my block editor to gForth so I can browse the FTS/Forth source with an editor I'm comfortable with :-) 12:47:44 * crc might be able to save a RetroForth/Linux session to disk soon as well 12:52:47 --- quit: warpzero (Read error: 110 (Connection timed out)) 12:52:57 cool 12:53:58 --- join: warpzero (~warpzero@dsl.103.mt.onewest.net) joined #forth 12:55:00 I need to fix a bug in the compiler... 12:57:07 Conditionals and loops break the automatic tail recursion once the number of words exceeds ~256 13:01:14 --- quit: crc (Read error: 104 (Connection reset by peer)) 13:03:07 --- join: crc (crc@146-pool1.ras11.nynyc-t.alerondial.net) joined #forth 13:06:59 --- join: bartiosze (bartiosz@hades.t15.ds.pwr.wroc.pl) joined #forth 13:23:08 --- join: futhin (thin@bespin.org) joined #forth 13:30:28 --- mode: ChanServ set +o futhin 13:33:06 sup 13:33:46 : sup what is up? ; 13:34:30 hey futhin 13:35:16 i said sup 13:35:23 sup is not a greeting 13:35:28 stfu 13:35:40 i second that :P 13:35:42 :) 13:35:46 pff 13:36:03 i OWN this channel, you are ALL my personal forth slaves 13:36:08 futhin just stole the channel :P 13:36:16 :) 13:36:17 if this channel was more active it wouldn't have the gay ASSED "hi " everytime someone joins the channel 13:36:28 actually i'm lying 13:36:29 lala 13:36:35 maybe because we code and not talk all the time? 13:36:46 well... some of you do 13:36:50 good 13:36:51 no talking! 13:36:52 i dont seem to be coding much :P 13:36:52 code! 13:36:57 blah blah blah 13:37:11 futhin what have YOU ever coded ????? 13:37:11 :) 13:37:19 * I440r thwaps futhin with the isforht sources 13:37:22 heavier than its manual! 13:37:54 I440r: arke tells me you want forward references for your isforth assembler??/ 13:38:03 err only to local labels 13:38:05 grr 13:38:16 NOT to anything outside the current definition 13:39:11 I fixed the tail-recursion bug in RetroForth :-) 13:39:21 At least I *think* it's fixed 13:39:23 how can something like this be broken? :) 13:39:40 * slava is reading about optimizing scheme compilers 13:39:47 When words are inlined, they can throw off the check 13:40:48 http://www.ccs.neu.edu/home/will/Twobit/ 13:41:39 I now have a word 'no-tail' that disables tail recursion; 'compile' enables it automatically 13:41:52 futhin i want to be able to jne to some point further down. i dont want to be able to call some_other_word crap 13:41:56 I also increased the size of the dictionary and code space :-) 13:42:39 I440r: how long do you think it would take to code the assembler? 13:43:41 shouldnt take more than a month 13:43:47 i estimated a month 3 years ago 13:43:53 does that help ? 13:44:02 so whats the bottleneck? 13:44:06 the mneta compiler shouldnt take more than a week 13:44:10 are you still trying to figure out how to do it in the first place? 13:44:28 i cant figure out how to arrange all the shit i need to arrange to actually assemble opcodes 13:44:41 its just ties me in a knot every time i try 13:45:01 but why? its just a bunch of opcodes 13:47:04 ok, write my assmbler:P 13:47:12 isn't arke doing it? 13:47:27 hush! 13:47:31 fool 13:47:37 i'm just asking you what the real bottleneck is 13:47:41 are you guys familiar with any literature on optimizing forth compilers? 13:47:44 is it because of your design constraints? 13:47:53 the only thing i can thin of is that its a mental block 13:47:56 no 13:47:58 definatly not 13:47:59 i.e. 1) processing "mov ax, 1" instead of "1 ax mov" 13:48:03 2) forward processing 13:48:03 i proved that with my 8051 assembler 13:48:16 but 8051 issn't x86 13:48:33 what about starting out with a simplified x86 assembler? 13:48:33 take my 8051 assembler and make it assemble x86 opcodes 13:48:39 no 13:48:47 there is no simplified x86 assembler 13:49:10 sure, a 386 assembler that doesn't deal with opcodes for 486 and up 13:49:39 slava: there's Peter Knaggs' thesis paper... 13:49:44 im not going to turn my assembler into a patchwork of kludges 13:49:56 make it for 8086 13:49:57 and Anton Ertl has some stuff - he did RAFTS. 13:49:59 fix it to run on 8088 13:50:03 http://www.complang.tuwien.ac.at/projects/rafts.html 13:50:07 fix it to run on 186 then 286 then 386 13:50:13 thjen 486 and pentium 13:50:14 fuck that 13:50:31 --- part: bartiosze left #forth 13:50:50 I440r: you're too picky :-) 13:51:48 crc yes 13:52:37 slava: http://dec.bournemouth.ac.uk/staff/pknaggs/thesis/ 13:53:14 also if you back up to his homepage he has some other papers...don't remember if any of that is on optimization 13:54:34 grr i really hate the ans term "word lists" grrr 13:54:43 its a fscking VOCABULARY!!!! 13:54:56 "word lists" sounds sooooo camp 13:55:11 say it with a lisp and an limp wrist "word lists" 13:55:37 I440r: is there anything about ANS that you don't hate? 13:55:53 not much 13:56:19 its like they took every known forthism and turned it on its head 13:56:33 :-) 13:56:37 i440r: does isforth use any 686 specific opcodes? 13:56:45 i hope not 13:56:48 * crc doesn't follow any of the standards... 13:57:01 * tathi neither 13:57:39 I440r: does it use anything above Pentium I opcodes? 13:57:47 does it use MMX crap? 13:57:50 or PII crap? 13:57:53 i HOPE it doesnt use anything above 386 in the kernel 13:57:58 ok 13:58:06 so your assembler jus needs to be a 386 assembler then? 13:58:10 no 13:58:13 just to get it to metacompile 13:58:16 no 13:58:20 your goal is metacompilabilty 13:58:22 not an assembler 13:58:24 :P 13:58:26 futhin: he's too picky :-) 13:58:38 im NOT fucking taking a 386 only assembler and fucking all over it to make it p4 ++ 13:58:51 wtf 13:58:52 futhin has no idea what my goals are 13:59:01 you're NEVER gonna code some p4 ++ assembler 13:59:10 so just make the 386 assembler for isforth 13:59:14 and metacompile isforth 13:59:22 assume the worst case scenario 13:59:30 that you're never gonna make a more advanced assembler 13:59:41 ill wait till someone writes the assembler i need or i figure out how to do it myself 13:59:52 i could give a rats ass if i NEVER metacompile 13:59:59 ok 14:00:04 im not taking a fucked up assembler just so i can metacompile 14:00:06 metacompiling is not useful anyways ;) 14:00:29 i440r: is coding an iterative process? 14:00:45 when you can code you will know :P 14:00:58 design first - code second 14:01:01 i already got my design 14:01:38 tathi, thanks 14:01:46 i think i figured out why ANS is universaly hated 14:01:48 design first, debug later. 14:01:55 slava: why? 14:01:56 it was designed by comitte, and different from every forth before it 14:01:58 there's no such thing as design first 14:02:01 compare with common lisp 14:02:05 slava EXACTLY 14:02:10 slava its a camel 14:02:12 common lisp was based on existign implementation standards 14:02:16 that were KNOWN TO WORK and work well 14:02:16 a horse designed by a committee 14:02:33 it wasn't just a bunch of suits sitting there going 'now what features should we add to make your language more marketable' 14:02:55 I've never liked that "a camel is a horse designed by committee" line much... 14:02:59 camels are great :) 14:03:13 they are ugly, they stink and they SPIT at you :P 14:03:25 and if your not careful they PEE in your face 14:03:27 i440r: anytime you code anything you invariably have to change the design. since you haven't coded the assembler yet, its obvious the design is broken, and you're just taking a perfectionism approach and trying to get the design perfect before you do any coding 14:03:44 futhin not true 14:03:49 i HAVE used the design already 14:03:51 camels work better in the desert :-) 14:03:55 there is NOTHING wrong with the design 14:04:16 its not the design thats hanging me up 14:04:24 its the instruciton encoding process 14:04:25 futhin, depends on what is 'design' 14:04:36 futhin, if you try to specify everything exactly in some rigid manner it probably won't work 14:04:45 futhin, on the other hand you need to have an idea of the final shape of your code when you start coding 14:04:49 crc: the majority of earth is covered with water ;) 14:04:55 otherwise you end up nailing 8 legs onto a dog to make an octopus 14:05:03 crc: we need boats! 14:05:19 slava you only have to nail FOUR legs on the dog 14:05:23 duh! 14:05:25 * crc starts a commitee to design a standard boat 14:06:06 --- quit: wincent (Remote closed the connection) 14:06:31 i think ANS would be more popular if they didn't standarize the compiler control words 14:08:01 slava: its such a fucking truism "you need to have an idea of the final shape of your code when you start coding" but with XP you don't need to have the long term perspective, all you need to do is focus on the immediate features and prioritize them 14:08:34 futhin, i know about XP but you can't just blindly code with no longer term goals at all 14:09:21 who said anythign about that? 14:09:31 stop putting up a strawman and knocking it down 14:09:33 there's no such thing as design first 14:09:49 yeah 14:09:59 i was refering to the fact that design inevitably takes place in the middle of coding too 14:10:18 i'm in XP mode right now 14:10:23 futhin yes. your design has to be flexable 14:10:34 but NOT "broken so we can code it" 14:10:48 futhin, you're always making these stupid points and none of it ever makes sense, like you'll be obsessed with XP for a week and trumpet it without any understanding at all because you don't code 14:12:18 authority isn't whats important, the logic of the message is 14:12:25 but whatever 14:12:35 i440r: i didn't say anything like that 14:12:37 futhin: your messages never seem to have any logic 14:12:43 I440r: it also sounds like you'er changing your stance 14:13:28 tathi: cuz people prefer to attack the surface arguments rather than asking me to explain the logic. and i'm not interested in flamewars anymore 14:13:59 well, maybe. 14:14:04 futhin not so, my designs are always plyable, maleable. thats why my code always works as well as it does 14:14:36 saying the design is flexible implies you are changing it. and you said earlier that you do all your design upfront 14:14:37 futhin: but most of the stuff you say makes no sense in the context of my (admittedly somewhat limited) experience of coding. 14:14:40 futhin just go learn to actually code and produce something and THEN you will understand! 14:14:56 futhin you design first. THEN you code 14:15:05 as you code you will see the flaws in your design and CHANGE it 14:15:06 lol 14:15:24 i already have changed my assembler design when coding my 8051 assembler 14:15:26 so what if i go and code something and blow you all the fuck away? its not gonna change this conversation 14:15:30 but not drastically so 14:15:39 futhin, why don't you then, huh? 14:15:42 and theres NO way im going to change my design into a 386 only assembler jsut to get it going 14:15:57 futhin: no, but it might give you a smidgen of credibility for future conversations 14:16:00 i'm not advocating changing your design 14:16:14 now you sound like YOUR changing yrou stance ~! 14:16:46 the point is that i will not budge on what i want of my assembler OVERALL 14:16:54 the finer details are ALWAYS subject to change 14:17:09 no i was advocating iterative codign thats all :D 14:17:10 Pure bottom-up design/implementation at the same time often has merit. Of course, one must have some solid idea as to what the the end goal is. 14:17:15 and XP in general 14:17:24 tathi, that guy's PhD is very interesting 14:17:50 slava: yeah, I really like that paper. Easy to read, but there's some solid stuff in there. 14:18:13 i start to read stuff like that and get board half way down the first page 14:18:14 futhin, nobody here is not advocating iterative coding so you have nothing to prove 14:19:29 I440r: well, you're not at all interested in optimization AFAIK, so... 14:19:58 im simply not interested in the compiler modify8ing what you feed it to suite ITS requirements 14:20:05 slava: i was ultimately poking at i440r.. i.e. i was nagging i440r, hence the whole convo that you jumped into willy nilly without any perspective 14:20:19 plugging shit in behind your back or changing the order of stuff or adding shit IT thinks should be in htere 14:20:47 I don't really see it that way. 14:21:09 has kc5tja ever kicked slava? 14:21:13 It's the compiler automating things that I could do by hand, but are too much trouble. 14:21:14 I440r, for a low level language that's probably true 14:21:39 forth is a multi level language 14:21:42 imho 14:21:50 yes but if you want you can specify computations at quite a low level 14:21:59 so there is nothing for a compiler to optimize if you write good code 14:22:11 compare with lisp 14:22:21 where you have closures and such, that can be optimized heavily 14:22:52 slava the best is the enemy of good enough. im diametrically opposed to CODE optimization because it tends to do nothing more than obfuscated things 14:23:06 I440r, you mean the programmer optimizing code? 14:23:07 optimize your algorithms and you will see REAL improvements in s0peed 14:23:15 I440r, yes i agree 14:23:29 slava no. therse absolutelyt NO point what so ever in optimizing code 14:23:36 I440r, a compiler can give a constant factor improvement in speed; a programmer can change O(n) to O(log n) 14:23:43 its a totally bogus thing to do 14:23:52 The thing is, with forth on PPC, if you're generating native code, a simple stack optimizer can make the machine code half the size or less, and more readable at the same time. 14:24:11 I don't think that's an unreasonable thing to do. 14:24:45 In fact, I see no reason *not* to do so. 14:24:47 I440r, however onec your algorithms are optimal even a constant 1.5x improvement, say, is good 14:24:48 tathi is this "optimization" something that an experienced coder would do ? 14:24:53 I440r, assuming the compiler works properly and doesn't have bugs 14:25:00 i would say it is 14:25:06 I440r: it's stuff that I'd do automatically if I was coding in assembler, yes. 14:25:09 I440r, he's talking about compiling forth 14:25:15 so by optimizing the code your encourageing the code to NOT become comeptent 14:25:17 I440r, you cannot code forth that uses ppc registers 14:25:28 I440r, you have everything on the stack in forth 14:25:32 I440r, which is ok because that's forth 14:25:40 oh yeah. I didn't make that clear. 14:25:41 I440r, but a compiler can convert it to registers where appropriate automatically 14:25:43 thanks slava 14:26:13 slava and that can break the logic 14:26:20 no 14:26:28 you take a 5k compiler and turn it into a 400 gig compiler 14:26:33 no again. 14:26:38 for a .00000005 gain 14:26:48 it's a couple of pages of forth code 14:27:13 I440r, i'm not advocating the extreme case here 14:27:16 and you can cut the size of the generated code in half at least. 14:27:24 well i STILL refer you back to my encouraging the coder to be lazy statement 14:27:36 I440r, eg, sun's JVM hotspot compiler is like 100,000 lines of C++ just to achieve acceptable performane and that's overkill and shows that java has some flaws w.r.t. optimization 14:27:44 "it doesnt matter if i take the time to learn how to code this processor right, the compiler will fix my stupid code" 14:27:50 I440r, no that's not correct 14:28:01 I440r: I'm not talking about encouraging the coder to write stupid code here. 14:28:02 I440r, a compiler cannot fix incorrect algorithm use 14:28:02 slava yes it is 14:28:18 I440r, a compiler can optimize the sequence 'drop 5' to some asm that replaces top of stack with 5 14:28:22 slava a good coder always develops his code on the absolute SLOWEST machine he can get it to run on 14:28:27 I'll I'm talking about is having a forth compiler that generates reasonable asm code from my forth source. 14:28:48 I440r, yes, and on a slow machine an optimizing compiler helps more 14:28:58 slava no! 14:29:02 I440r, if you're doing numerics it can mean the difference between 3 week runtime and 5 day runtime 14:29:07 the point is to make the CODER produce better code 14:29:19 see tathi's point about ppc registers -vs- stack 14:29:26 unless the coder codes in asm they cannot achieve this optimization 14:29:34 without a smart compiler 14:30:35 slava anyone who does not know how to code in assembler is not a coder. if i were dictator of the world i would enact a law requiring anyone who wanted to be a coder to serve an apprenticeship where they may ONLY code in 100% pure assembler for 10 years 14:30:41 after that i would let them learn forth 14:30:44 I440r, the point is that for most code, performance is not critical, since the code runs instantly 14:30:59 I440r, try coding a routine to compute eigenvalues of a matrix in assembler 14:31:09 slava thers that "it doesnt matter if my code is crap because the hardware isnt" attitude again! 14:31:16 I440r, no its not 14:31:32 I440r, if your code takes 0.000001 of a second, it doesn't matter if its not fully optimized 14:31:44 I440r, if it takes 5 seconds, then optimization matters 14:31:47 ahh, so you'er not a forther? 14:31:52 slava run your crap code on a crap box. make that crap code run the best it can on that crap box. then move it to a good box 14:31:55 you're* 14:32:21 slava if it takes 5 second and you need 5 tenths of a second dont try optimize the code 14:32:27 change the way you do it 14:32:33 I440r, yes, sure 14:32:36 exactly 14:32:37 i..e instead of doiung a bubble sort do a heap sort 14:32:41 ! 14:32:45 I440r, i'd never use a bubble sort 14:32:51 slava it was an example 14:33:04 I440r, i don't think every performance critical routine should be coded in assembler 14:33:22 I440r: no one is trying to say that you shouldn't be intelligent about choosing algorithms. 14:33:23 use a quick sort. oh no it takes 5 seconds. use a radix counting (not my benchmark tho) and it takes .0000000001 seconds 14:33:45 I440r, and ues radix counting with an optimizing compiler and its 0.0000000000000000000000000001 seconds 14:34:07 slava actually theres something thats more important to me than space or speed 14:34:16 by orders of magnitude its more important 14:34:29 after all, isforth is definatly NOT the fastes forth arround :) 14:34:34 readable code, etc 14:34:39 it IS howerver one of the most understandable 14:34:50 do you agree that in many cases forth is more readable than asm? 14:34:55 or more succinct at least? 14:34:57 absolutely! 14:35:03 its more space efficient for a start 14:35:12 there you go 14:35:14 were talking for NON trivial shit tho 14:35:16 so you'd prefer to code as much as possible in forth 14:35:27 so why not let the optimizing compiler turn your forth into good asm 14:35:33 that uses registers etc 14:36:06 because THAT destroys the 1:1 co-relation between source and object 14:36:17 no, not necessarily 14:36:32 tathi 99.9999999999999999999999999999999999999999999999 times out of 100 it does 14:36:35 i rest my case 14:36:53 I440r, why is it important to have this correlation? 14:37:01 part of what makes forth so easy to debug is the ability to SEE the source by looking at the object 14:37:03 I440r, if you have two subroutines A and B generated by a compiler 14:37:12 I440r, and A and B *provably* produce identical output 14:37:23 I440r: store both code (in ITC format or sth) and assembly then? 14:37:23 I440r, does it matter if A is a 1:1 mapping from its source, and B is not? 14:38:11 slava it does when you have to trace a bug in your compiler itself and need to look at the object code produced 14:38:16 and even if it does matter, there's quite a bit of optimization that you can do *without* destroying that correlation. 14:38:38 I440r, its the same as tracign a bug in your forth 14:38:52 I440r, but debuggign ONE compiler is easier than debugging 1000 asm routiens you write that were easier to write in forth 14:38:57 slava if you convert .... blah ; into .... goto blah ; you have destroyed that 1:1 already 14:39:08 I440r, yes but it gives the exact same result 14:39:11 slava ? 14:39:31 I440r, a compiler is one piece of code 14:39:35 I440r, just like an interpreter 14:39:38 slava thats a trivial example chosen to prove a point. any other clever optimizations would just be worse 14:39:41 I440r, once well-tested, there isn't much left to debug 14:40:20 slava so turn off optimizations till you have finished debugging ? 14:40:27 eep! 14:40:27 no 14:40:28 no 14:40:38 optimizatiosn do not affect debugging of your code 14:40:46 "fly what you test" 14:40:54 it most definatly DOES 14:41:06 not unless your optimizer is buggy 14:41:16 tathi there is no such thing as a bug free program 14:41:30 I440r, so why are you picking on optimizers in particular? 14:41:34 not after : foo ." blah" ; 14:41:40 since theers no bug free forth or C compiler should we use asm for everything 14:41:46 I440r, ." could have a bug 14:41:54 slava - it modifies the code to do what the COMPILER wants. not what the coder requested 14:42:05 what if the coders request co-incides? 14:42:14 coder wants fastest coe 14:42:15 code* 14:42:15 ? 14:42:39 : blah lots of code in here ; 14:42:51 the compiler should compile NOTHING MORE and NOTHING LESS than exactly what was stated 14:42:56 EXZACTLY what was stated 14:43:20 but it does exactly this 14:43:26 no 14:43:31 it compiles some code that has the exact same effect as blah lost of code here 14:43:35 it produces : blah lots code here ; 14:43:42 because the compiler thinks OF is redundant 14:44:02 because someone *coded* the compiler to think that 14:44:03 and if it can prove this, then its correct 14:44:07 no 14:44:09 its not 14:44:10 eg, if you have : of ; 14:44:22 even if OF is right the compiler has no right to remove it 14:44:36 theres more to a compiler than eliminating dead code 14:44:37 tathi - usually not the coder in question :) 14:44:53 I440r: well, that's why most of us here are coding our own languages. 14:44:53 i don't write unreachable code and i doubt most people do 14:44:55 slava it shouldnt do so 14:45:05 I440r: so in this case it probably is the coder in question 14:45:12 : foo 0 IF ........ THEN ; 14:45:17 slava i DO - but its only unreachable at COMPILE TIME 14:45:22 at run time it can be reached 14:45:26 err? 14:45:43 theres no way the compiler can figure out all the ways i could implement that jump to that code 14:45:46 not in a million years 14:46:06 I440r, thats why a forth compiler has to be very conservative 14:46:14 I440r, in other languages without arbitrary jumps you can be more aggressive 14:46:27 I440r: I think you're thinking about MUCH more optimization than I am. 14:46:37 it's not a black-and-white thing. 14:46:43 there are levels of optimization. 14:46:57 tathi and i pick the ZERO level :) 14:47:15 yes, and if that's what you want, that's fine. 14:47:27 slava actually i almost never think of compiler optimizations 14:47:50 and in a direct threaded forth, it even makes sense. 14:47:54 forth is THE optimization 14:47:55 ;) 14:48:11 : blah ...... goto foo ; <-- the USER can do this in isforth 14:48:13 any time he wants to 14:48:16 futhin, that has no relevance to the conversation at hand 14:48:28 but the compiler will never force it behind his back 14:48:40 slava: tahts ok, i'm being irrelevant like you often do too 14:48:40 I440r, when is it desirable to not goto on the last word before ; ? 14:48:50 but...on PPC, with a native compiling forth, there are some basic optimizations that it makes sense to perform. 14:48:51 --- quit: qFox ("this quit is sponsored by somebody!") 14:49:03 on PPC you can insn scheduling to get a large boost 14:49:08 without them, the resulting asm code is 2-3 times bigger, and is also that much harder to read and debug. 14:49:09 slava when the user doesnt request it 14:49:12 on SPARC you can take advantage of delay slots 14:49:24 I440r, but why wouldn't the user request it? 14:49:38 also using goto adds one more token to the code zie 14:49:39 size 14:49:50 in dtc, it does :) 14:49:53 in stc its the same 14:50:04 stc isnt threaded 14:50:07 so its a misnomer 14:50:21 whatever, it's a convenient short name for it 14:50:22 slava: has kc5tja ever kicked you from this channel? 14:50:39 what's so hard/bad about a DOASM offsetToE normalrepresentation ;QUIT E assembly here ret? 14:50:40 why would he ? 14:51:07 futhin, why would he kick me from the channel? 14:51:22 has he? 14:51:26 slava cuz your a disruptive individual. you make us THINK 14:51:28 grrr 14:51:29 dammit! 14:51:29 futhin, no 14:51:59 I440r, that's why i have VOICE!!! :) 14:52:19 you should have ops :P 14:52:30 so should tathi 14:52:48 bah 14:53:00 what would I do with ops? 14:53:06 * I440r gives tathi ops while he isnt looking! 14:53:07 hehe 14:53:09 }:) 14:53:18 you could set a sexy topic!!!! 14:53:28 * tathi thwaps I440r with the IsForth/PPC source :P 14:53:35 or kickban futhin!!!!! 14:53:41 lol 14:53:47 no +t set 14:53:50 can change topic anytime 14:53:57 lol 14:54:04 and no +l 83 set either i se 14:54:05 grrr 14:54:08 in fact i'm annoyed nobody is constantly changing the topic 14:54:10 I440r: yes it is set 14:54:17 it is ? 14:54:18 look again 14:54:19 yes 14:54:21 shows it for me 14:54:21 futhin, why don't YOU change the topic 14:54:25 lol i guess xchat doesnt show the modes then 14:54:33 I440r, you have to enable it 14:56:08 --- topic: set to 'fine, i will change the topic' by futhin 14:56:50 --- topic: set to 'fine, i will change the topic it is ?' by slava 14:57:26 brb dinner 14:57:27 --- topic: set to 'the place to be to whine, troll, or be elitist' by futhin 14:57:39 lots of elitist ppl in the channel 14:57:43 lots of trollers in the channel 14:57:45 and lots of whiners 14:57:48 fun fun 14:58:26 --- topic: set to 'Hack the planet.. with Forth' by futhin 14:58:37 --- quit: tathi ("laters, all...") 15:01:13 --- topic: set to 'Hack the planet.. with Forth || http://www.ultratechnology.com/' by futhin 15:02:14 --- mode: futhin set -o futhin 15:02:24 ls 15:10:34 --- quit: futhin ("leaving") 15:10:40 --- join: futhin (thin@bespin.org) joined #forth 15:10:40 --- mode: ChanServ set +o futhin 15:27:29 --- topic: set to 'Forth: Sorta like Third, only more advanced... and spelled wrong' by Herkamire 15:27:48 :) 15:36:16 --- part: futhin left #forth 15:40:21 --- quit: crc (Read error: 104 (Connection reset by peer)) 15:49:50 --- join: saon (Ecoder@c-24-129-95-254.se.client2.attbi.com) joined #forth 15:52:11 hi saon 15:52:17 hello 15:53:37 I440r, ping 15:54:18 --- quit: saon (Client Quit) 15:54:53 I440r, i think isforth would be faster if it was ITC, given your dictionary mixing variables and code 15:59:25 i know 15:59:33 but itc is harder for a beginner to understand 15:59:44 * I440r is a beginner!!!! hehe 15:59:57 really? 16:00:06 why harder to understand? 16:02:48 because itc uses a pointe rto a pointe rto the code to run 16:02:53 double indirection 16:04:31 yeah its hard to grasp if you can't spell lol 16:04:32 j/k 16:04:46 yeah i know but with dtc you have to compile code stubs in the dictionary 16:04:46 yay :) I have bread 16:04:56 amazing what going to the store and buying bread will do ;) 16:13:20 --- join: shapr (~user@c-181973d5.014-109-626f6410.cust.bredbandsbolaget.se) joined #forth 16:13:26 hi shapr 16:13:31 hi slava 16:14:15 --- join: Sonarman (~matt@adsl-64-160-167-161.dsl.snfc21.pacbell.net) joined #forth 16:16:07 hi guys, shapr here has started a channel for concatenative languages, this inclues forth, joy, postscript and factor 16:16:14 #concatenative, youre all welcome to join 16:17:57 greetings 16:18:28 what code stubbs ?> 16:18:49 I440r, in DTC your word header has machine opcode to jump to inner interpreter loop 16:18:58 I440r, in ITC this is not there 16:20:18 ? 16:20:32 sorry did I say something dumb? 16:20:55 in indirect threaded forth the first token of a word is a pointer to the code to do the interpreting 16:20:58 thats more complex 16:21:03 and in DTC? 16:21:14 each token points to the code to run 16:21:29 it points DIRECTLY to it 16:21:34 not indirectly to it 16:21:46 hence in each word definition you begin with machine code 16:21:58 yup 16:22:05 which is more complex 16:22:09 nope 16:22:11 since you have to output this machine code 16:22:15 you have to hard-code some hex literals 16:22:37 u l;ost me 16:22:45 forget this entire conversation 16:22:58 create creates a new header and then stores a call to dovariable in the code field address 16:23:12 COLON calls crate and then changes that call to dovariable and makes it a call nest 16:25:28 dovariable? 16:25:41 --- quit: Sonarman_ (Read error: 110 (Connection timed out)) 16:26:18 yes 16:26:31 dovariable is the primative for variables 16:26:43 why does COLON compile it? 16:26:44 when you create a word it is always created as a variabkle 16:26:46 variable 16:26:57 and then its changed later? 16:27:06 : : create ;uses nest ] ; 16:27:13 what is nest? 16:27:35 nest is how one colon definition NESTS into another 16:31:09 --- quit: Sonarman (Read error: 104 (Connection reset by peer)) 16:34:55 --- join: Sonarman (~matt@adsl-67-113-235-249.dsl.snfc21.pacbell.net) joined #forth 16:40:49 in isforth all colon definitions start with 16:40:50 call nest 16:41:08 nest pushes IP onto the return stack and then pops the return address of that call into IP 16:41:23 theres a faster way 16:41:29 make that call nest a JMP nest 16:42:03 then have nest push IP onto the return stack and set IP equal to eax plus 5 16:42:23 that would make nest faster by a significant ammount 16:42:36 but more difficult to understand 16:47:19 --- join: crc (crc@226-pool1.ras11.nynyc-t.alerondial.net) joined #forth 16:47:26 hi crc 16:47:41 Hello slava 16:49:09 does slava understand how the add 5 to eax method works ??? 16:49:17 it took me a while to figure that one out lol 16:49:28 its how FPC did it 16:49:45 I440r, i see the general idea 16:56:54 slava: In the event that you do directly emit machine language for a DTC implementation, you only emit one instruction (and hence, only one opcode). Thus, portability really isn't hindered all that much. 16:57:14 kc5tja, true. 17:00:05 hi 17:00:39 hi 17:08:08 in the case of an arm7, dtc colon defs are the same size as itc ones... the code field of itc would have an absolute pointer to docolon (32 bits; forth system can be in any or all of 32-bit addressing space), whereas the dtc version involves a "branch with link" instruction to docolon (32 bits; docolon must be no further than about 32mb from the code field) 17:08:45 also, next is one instruction 17:09:04 --- quit: scope (Client Quit) 17:25:37 hrm. i should haul out my arm v5te and put something fun stuff on it. 17:26:14 s/something/some 17:31:37 arke see privmsg 17:32:55 someoen with the ability to send a ^g please send one to arke :) 17:33:00 i cant in this client 17:33:21 lol 17:33:42 SORRY ARG GGHHHGH 17:36:56 hehe 17:37:03 its ok., you were coding... right ? 17:37:09 no 17:37:14 i was doing a favor for relatives 17:37:44 --- quit: crc (Client Quit) 17:38:47 --- join: crc (crc@233-pool1.ras11.nynyc-t.alerondial.net) joined #forth 17:57:04 --- join: TheBlueWizard (TheBlueWiz@modem-147.nyc-tc03a.FCC.NET) joined #forth 17:57:04 --- mode: ChanServ set +o TheBlueWizard 18:00:12 re TheBlueWizard 18:00:27 hi kc5tja TheBlueWizard 18:00:44 * kc5tja just finished looking at the GNU Radio project. The first open-source, software-defined radio project I've seen. 18:01:00 un 18:01:02 fun 18:01:17 arghghgghghghhg i fucking hate xterm motherfucking piss drenched piece of shit 18:01:35 use eterm 18:01:39 konsole 18:01:43 ugh 18:01:48 dont use kde bloat 18:02:00 oogerly "i wanna look like a m$ product" lol 18:02:12 You know, I don't know what everyone is complaining about. I've never used anything but xterm since Linux 1.3.18 days. I never seem to have any problems with it. 18:02:32 kc5 theres NOTHING wrong with it 18:02:38 and its damned fast too 18:02:55 i just prefer eterms colours is all hehe 18:03:03 hehe 18:03:04 magenta doesnt look like some girlie PINK 18:03:09 lolk 18:03:20 But magenta IS a kinda sorta girlie pink color. 18:03:24 yeah, I'm browsingYaST for a different terminal 18:03:25 no 18:03:28 its PURPLE!!!! 18:03:35 this one hates cut paste and keeps dropping keys 18:03:39 they stole the word GAY - im NOT letting them have purple 18:03:41 I440r: Not quite. 18:03:43 * Hyrax only uses aterm and rxvt 18:03:56 kc5 i use magenta4 which is more purple :P 18:04:15 * crc uses xterm 18:04:15 which means you only use rxvt and an rxvt derivative :) 18:04:24 :) 18:04:25 what about wterm Hyrax 18:04:30 thats an rxvt too 18:04:37 rxvt worked well for me when i still had my 200mmx 18:04:56 * kc5tja could never tell the difference between rxvt and xterm. 18:05:06 rxvt is smaller 18:05:10 t was faster 18:05:13 and smaller 18:05:20 i had 480MB HD 18:05:31 I remember it being bigger on my boxes. 18:05:33 xterm is faster than rxvt in all the tests i did 18:05:35 and a 200MMX with unoptimized dsoftware running about 38952785728 things at the same time 18:05:52 ell, it definetely was faster than gnome term :) 18:06:31 There is only one thing I desire xterm to have (and maybe it does; I'm just too lazy to look): a blinking cursor. 18:07:21 I spend most of my time at a command line, no X11 bloatware unless I absolutely need it :-) 18:07:42 i use x11 so i can monitor stuff but 99% of what i do is in an eterm 18:07:47 i don't like fonts in command line 18:07:50 else i'd use it more ;0 18:08:10 in x i can see load avg, mem useage, cpu useage, netwrk useage and a syslog all at the same time :) 18:08:20 slava setfont ? 18:08:25 still ugly 18:08:30 i want anti alised fonts dammit 18:08:45 when factor's gfx is better i'll run that in a framebuffer though 18:08:54 FreeBSD has some nice console fonts... 18:08:57 Too many people piss on the graphical interface, and it's a pitty. I spend 100% of my time in X11, and 98% of that is at a shell prompt. So go figure. 18:09:05 slava is running fbsd :P 18:09:15 Me too :-) 18:09:22 kc5 thats how i do it too 18:09:27 Well, wterm seems tweaked for wmaker, and I don't run that 18:09:39 i run wmaker but not wterm 18:09:42 wterm is bleh 18:09:46 --- join: onetom_ (~tom@novtan.bio.u-szeged.hu) joined #forth 18:10:14 ARGHGHGHG MOTHERFUCKING PIECE OF SHIT 18:10:15 I'd run wmaker at work if I could; but WINE doesn't properly implement its windows, so it doesn't depth-arrange -- they're ALWAYS on top, no matter what. Makes the fucking thing utterly useless. 18:10:18 onetom!!!! 18:10:20 just dropped 3 chars in a row _again_ 18:10:20 * kc5tja uses twm instead. 18:10:22 ltns :) 18:10:24 --- quit: onetom (Read error: 104 (Connection reset by peer)) 18:10:31 bye :) 18:10:35 wat? 18:10:47 hi onetom 18:10:48 not seen you for a while... u been in here but idle or something ? 18:10:50 twm is nice :) 18:10:58 * I440r hasnt been paying attention lol 18:10:59 there was just a power outage.. :/ 18:11:02 hi all 18:11:06 <-- onetom has quit (Read error: 104 (Connection reset by peer)) 18:11:07 * I440r thwaps ark3 18:11:08 hi onetom 18:11:09 wtf 18:11:10 twm is crap 18:11:20 upgrade your svn dammit 18:11:26 rgh. 18:11:28 FUCK 18:11:32 it just droipped the a 18:11:34 twm rocks 18:11:34 piece of shit 18:11:38 --- nick: onetom_ -> onetom 18:11:38 arke: twm is OK -- I like it. Nice and fast, and actually doesn't look half bad either. But I still prefer amiwm. 18:11:55 prefer my customized io 18:11:57 argh 18:11:58 amiwm is amiga window manager : 18:12:00 ? 18:12:01 and it dropped the I and the N 18:12:17 I like ratpoison. 18:12:26 arke: You might have something else wrong than xterm if you're dropping characters at the input. 18:12:42 I440r: Yes. It compiles to only 80K or so on my box too -- half the size of twm! 18:12:50 its doing it at the command line, vi, mc, irssi ... everything 18:12:51 :) 18:12:55 I440r: yeah, im only here in read only mode 18:13:03 heh 18:13:06 I use afterstep, but not with one of those awful heavy bloated themes 18:13:11 arke: Yes. You might have something else wrong -- I strongly doubt that xterm is at fault. 18:13:26 * onetom uses evilwm ;) 18:13:35 * slava uses kde 18:13:41 evilwm is neat :) 18:13:43 ph34r my bloatware 18:13:43 slava: EWWWWWWWWWWWWWw 18:14:02 ratpoison, evilwm, . . ., all these window managers just didn't cut it for me. Ion is still the best. 18:14:10 arke, i have a lot of ram and im always logged in so it works out ok 18:14:24 Can ion be controlled entirely by keyboard? 18:14:33 crc: yeah. thats how I'm using it 18:14:43 crc: Not only can it be controlled entirely by keyboard, it was the window manager that STARTED THE TREND. 18:14:48 crc: it just took me 7 hours to configure to the way I want it :) 18:14:54 * crc will have to look at it then 18:15:05 i tried ion but it was messed up with java 18:15:14 arke: That's because of its use of Lua as an internal language engine for configuration. Damn thing is intractible. 18:15:14 no dialog boxes could appear 18:15:38 kc5tja: yeah 18:15:45 Humm... http://modeemi.cs.tut.fi/~tuomov/ion/ looks interesting 18:15:46 GOD MOTHERFUCKING DAMMMITITHGAHGHAGHGAD 18:15:52 xterm is the _only_ thing that is dropping 18:15:55 slava: Yeah, ion has issues with certain types of programs. OpenOffice is another one -- it'll crap out on the first couple of drop-down menus for example (but works fine afterwords) -- very annoying. 18:16:41 Is it possible to use Ion without Lua? 18:16:52 crc: yeah, ion 1 is without lua 18:17:09 crc: Not the newer versions; only version 1. But version 2 is well worth the upgrade, IMO. 18:17:09 ok, lets see if aterm drops any chars 18:17:26 * onetom prefers fullscreen apps & simple app-switching 18:18:12 * crc wonders how big lua is... 18:18:35 Oooh...it looks like xterm does support blinking cursor. 18:18:45 I have to hack a Xresources file to enable it though. 18:18:47 * TheBlueWizard thinks he is the only one here that does not have any X11 Windows system running at all on his Linux 'puter 18:18:50 kc5tja: uuh, didn't you get my /msg about that? 18:18:59 No 18:19:03 ....wtf 18:19:37 ctrl+middle mouse button 18:19:42 select "enable blinking cursor" 18:19:44 TheBlueWizard, you only use text mode apps? 18:19:54 WHOA!!!! 18:19:57 I HAD NO IDEA! 18:20:03 slava: yup 18:20:07 * kc5tja had NO idea that a pop-up menu would appear! 18:20:21 TheBlueWizard: I don't have X11 installed :-) 18:21:04 hehe...I couldn't get X11 up and running. I was advised to wait for the next release :) 18:21:32 Nothing wrong with a nice, ordinary console :-) 18:22:08 kc5tja: yeah. ctrl+any mous ebutton 18:22:46 * kc5tja is in heaven now. :) 18:22:56 crc: yeah...nothing wrong...unless I want to visit websites with graphics...that's where I get stuck :) 18:23:22 Hmm... 18:23:25 or when I want to make and view graphics 18:23:58 --- join: Raystm2 (Rastm2@AC9F50FD.ipt.aol.com) joined #forth 18:24:03 TheBlueWizard: Or you could wait for a suitable release of Forth/4, which eventually will have the capacity for (at least) VGA graphics. :) 18:24:21 I just use the svgalib VNC client to connect to a computer with a GUI system :-) 18:24:35 --- join: fridge (~fridge@dsl-203-33-161-152.NSW.netspace.net.au) joined #forth 18:24:45 * Raystm2 Good Sunday all :) 18:24:58 It's Thursday for me. :) 18:25:04 kc5tja: hehe...I'm a patient guy...I can wait for whichever comes up first 18:25:06 he he 18:25:41 What are the clever talking about to-night ? 18:26:33 terminals, debating the need for X11, and Forth/4's eventual screen manager. 18:27:19 not really debating the need for X11 as much as being pragmatic/having technical issues 18:27:35 kc5tja: Will Forth/4 support a plain text console? 18:27:36 hi kc5tja 18:27:41 I must 'listen' then as I have no experiance to put() . 18:27:42 kc5tja, wat's new with fts/forth? 18:28:49 crc: It'll support both. As far as the screen manager is concerned, all screens are "screens." What mode the screen is in is dependent on the current application. 18:29:15 cool 18:29:21 * Raystm2 learns 18:29:43 slava: Nothing yet as of my last site update. But she is interpreting words (only three significant letters right now, plus word length -- just like Chuck's original Forth!). 18:30:06 crc: Just as AmigaOS Intuition handled screens of differing modes and resolutions, so will mine. 18:30:14 vt's driven by app then ? 18:30:17 The difference is that I'll have a "screen"-like interface to switch between then. 18:30:31 Yes, VT's driven by the application, if desired. 18:30:53 I've never used AmigaOS 18:31:03 I've thought long and hard about user-opened versus app-opened screens, and I'm in favor of app-opened screens. 18:31:11 hey cool and 3 letters , I once read his 'letter' about the 3 letter word names and was impressed :) 18:31:18 crc: you know how you can have windows overlapping on the screen? 18:31:19 okay 18:31:41 crc: AmigaOS had that. It also has (when running on the original Amiga hardware platform) the ability to overlap whole screens. 18:31:50 Each screen can be a different resolution, different color palette, etc. 18:32:16 very cool 18:32:20 And regardless of the architecture, it had the ability to select which screen to view via a depth-arrange button (just like on windows). 18:32:23 _no_ that's very neat 18:32:23 Yeah. 18:32:34 AmigaOS was the first computer system to have the concept of virtual terminals. 18:32:50 Amiga ROM Kernel Reference Manuals even used to concept (though, in reference to windows, not screens). 18:32:58 thanx 18:33:08 yeah...and with OS 3.1, it can even coerce between monitor frequency (60 KHz, 75 KHZ, whatever) between screen as needed 18:33:27 really ? 18:33:55 (I learned about that yesterday from the OS 3.1 manual; my friend got Amiga 4000T with Video Toaster Flyer installed....looks nice!) 18:34:15 TheBlueWizard: All OS versions could do that. For example, if you had a 320x200 on the display with a 640x400 screen, the vertical frequency would adjust. AmigaOS 2.0 added support for horizontal scrolling of screens by coercing horizontal frequency too. 18:34:35 OS 3.x maybe refined the mechanism a bit, but the seeds were definitely in 2.04. 18:34:50 yeah....note the word "coerce"...it cannot have split frequencies. But the manual seemed to hint that C=-Amiga was planning to offer this capability in the future 18:35:00 I told you folks many moons ago -- I intend on recreating the magic of AmigaOS on the PC. 18:35:06 I intend on making good on my promise. 18:35:11 Forth and L4 are my keys. 18:35:21 heh :) 18:35:51 man i really can't wait and hope to be able to help :) 18:36:13 If you know Forth, you can definitely help. :) 18:36:13 I have no experiance with that environ but it sounds fun :_ 18:36:40 L4 is relatively simple to grok, thanks to its small size (L4Ka::Pistachio has only 12 system calls). 18:36:43 I seem to beable to think in forth where I get confused in other langs . 18:37:35 fits okay in one head then -- i like :) 18:37:37 Also, expect me to support and highly encourage USB support hard and fast, first and foremost. 18:37:55 okay so study up then right ? 18:37:56 It's the most Amiga-like technology for the PC, hands down. Plug-n-play, cheap hardware, OS-independent methods of access -- gotta love it. 18:38:19 yes best of all worlds 18:38:23 Nahh -- we're a bit too early to do any studying for that. I need to get FTS/Forth for Linux to the point where it'll compile itself first. :) 18:38:31 * crc wonders if he could run RetroForth under Forth/4... 18:38:57 kc5tja, what needs to be done? 18:39:00 crc: yes, as long as it talks to the keyboard manager and screen manager for console I/O (and block manager for disk I/O). 18:39:20 Not a problem 18:39:27 slava: I need to get the interpreter verify potential matches against the suffix of the word, and then I need numeric input code. 18:39:31 I've downloaded retro but haven't given it any time. is it fun ? 18:39:42 After that, I'll be needing block I/O words, which arke was working on. Not sure if he finished or not. 18:40:16 last i knew he was adding kb support ? 18:40:48 crc: Although, I was kind of wondering why you'd also want to run Retro under Forth/4 -- it sounds like FTS/Forth and Retro are largely identical except for implementation details. 18:41:02 * kc5tja is takin the minimalist approach, while you're taking a more traditional Forth implementation approach. 18:41:12 retroforth seems quite minimalist to me 18:41:24 Is it subroutine threaded? 18:41:26 Yes 18:41:27 yes 18:41:29 ;) 18:41:30 EAX = TOS 18:41:31 Hmmm..... 18:41:35 ESI = data stack 18:41:44 [ESI] = second item on stack 18:41:45 OK, we're run-time binary compatible then. 18:41:50 Cool 18:41:59 * kc5tja will need to download and check out Retro. 18:42:16 Two vocabularies (Forth and Macro) 18:42:18 And it's already natively booting? 18:42:28 kc5tja, retro is very similar to fts 18:42:39 Yes 18:42:41 kc5tja, except its not metacompiled 18:42:44 I recently added support for interrupts too (programmable in Forth) 18:42:46 you guys could join efforts 18:42:48 slava: That's OK. 18:42:53 crc: What license terms is it under? 18:42:54 use kc5tja's metacompiling with retro ;) 18:42:58 Public Domain 18:43:20 crc: I'd probably be interested in using Retro under L4 then instead of FTS/Forth, since it's more mature. I'll see though. 18:43:32 ok 18:43:33 slava: Yes, that's what I'm thinking. 18:43:42 I had it in my head that Retro was DTC or ITC for some reason. 18:43:49 wow what did i just witness then ? 18:44:20 Raystm2: You just witnessed two people developing exactly the same Forth idea, at approximately exactly the same time, only with different methods. :) 18:44:42 damn that's timing :) 18:45:05 hope it work for all involved == best wishes :) 18:45:31 Raystm2: It likely will. It sounds like Retro meets most, if not all, of my preconditions, and is more mature a product to boot. 18:45:51 True, I lose the metacompilation, but I still have my original sources from FTS/Forth. They're written for GForth, so it'll be VERY easy to port. 18:47:23 crc: Do you have block access words yet? 18:47:58 Not standard ones 18:48:11 I'm working on the editor and access words right now :-) 18:48:20 Ahh 18:48:43 How portable is Retro to, say, the Linux environment? 18:48:51 It runs under Linux 18:48:52 --- join: proteusguy (~proteusgu@203.148.241.62) joined #forth 18:48:58 !! 18:49:08 And FreeBSD, Windows, BeOS, SCO OpenServer, and maybe other OSes 18:49:15 * kc5tja currently sees no reason to persue FTS/Forth 0.2.x any further. 18:49:20 let me know as soon as finished. I wanna right (intenede) a good chess for it :) 18:49:27 Hehhe :) 18:49:39 Only KEY, EMIT, and BYE need to be recoded for a new port :-) 18:49:52 looks like crc beats kc5tja to the game (pun intended :) 18:50:11 Aha. That means a minimal port to L4 is quite doable then, text-only, no screen manager. 18:50:29 each take a word and go ! 18:50:58 Raystm2: Not that easy, unfortunately. Bringing up a new OS, microkernel or not, is never an easy task. 18:51:15 L4 offers a *LOT* of features for its 12 system calls, and then there is the issue of writing device drivers. :) 18:51:20 :( not scared thou 18:51:26 retro/native has some alrady 18:51:43 slava: Yes, I'll be re-using them most likely. 18:51:52 you can write l4 drivers in forth? 18:52:08 slava: Drivers for L4 are just normal user processes. 18:52:08 The existing drivers are all polled I/O though, so I don't know how well they'll work under a multitasking kernel 18:52:13 You can start and stop them whenever you like. 18:52:34 crc: You leave that to me. Coding system-level stuff is my specialty. :) 18:52:40 cool 18:52:45 so you guys will work together on this? 18:52:52 * crc isn't that good at system-level stuff 18:52:54 Almost certainly. 18:53:04 That would be cool 18:53:39 --- nick: OrngeTid1 -> OrngeTide 18:53:44 I still need to do a code review of Retro to see how easily it can be worked with for achieving my own goals (no offense to crc). But by the sounds of it, it looks like a ready-made deal for me to just drop FTS/Forth and persue Dolphin. 18:54:00 kc5tja, its 700 lines of assembly 18:54:01 its amazing 18:54:10 wee 18:54:17 slava: Assembly ... pfft. Piece of cake. 18:54:21 no sh*t 18:54:29 :) 18:54:36 NASM or FASM? 18:54:47 kc5tja, you should work with crc on getting retro metacompiled; then, retro/native can be made self-hosting 18:54:50 FASM 18:55:09 With a couple of minor changes to the macros and reserved byte directives, it can be used with NASM though 18:55:13 sup kc5tja 18:55:31 slava: That requires re-writing Retro in Forth (or, at least, rewriting it in a Forth-sponsored dialect of assembly language). 18:55:34 re warpzero 18:55:54 kc5tja, or writing an assembler 18:55:55 --- join: scope (~junk@njd.paradise.net.nz) joined #forth 18:56:00 hi scope 18:56:01 slava: I'm slowly writing an assembler for use with RetroForth 18:56:05 slava: Hence my parenthetical expression 18:56:25 hmm is it possible to write a forth entirely in forth 18:56:30 with no assembly 18:56:41 slava: No. At least some minor bootstrap is needed. 18:56:56 Although my cross compiler comes awfully close. :) 18:56:57 i wonder whats the minimal set of primitives that should be in assembly 18:57:22 I would think you would have to bring it up in machine then right slava? 18:57:30 slava: Chuck's MISC opcodes are a good start. The resulting Forth might be slow, but with only 32 primitives, it's relatively easy to code. 18:58:07 slava: http://www.forthfreak.net/wiki/index.cgi?ForthForth is a byte token threaded experimental forth interpreter written in Forth 18:58:38 slava: note he said 32, not 27 :) 18:58:49 i think direct threaded starting with about 20-30 basic words written in assembly and the rest in forth is the way to go. 18:59:31 OrngeTide: Subroutine threading uses fewer registers, runs faster on modern CPUs, and also permits direct injection of machine code into colon definitions (useful for graphics). 18:59:54 someone should just write a howto write your own forth for those of us who are too lazy come up with a way to do it, or are too scared of doing it the wrong way. 18:59:58 * Raystm2 learns thanx 19:00:07 if i redid factor's core in asm instead of C, i could use eax for t.o.s, and esi for data stack 19:00:16 that would give a nice speed boost 19:00:21 I saw one on the web let me look OT okay ? 19:00:21 like most sane forths do these days 19:00:26 kc5tja, yea. but subroutine threaded is harder in asm. although subroutine threaded is easier in C. :) 19:00:34 Raystm2, really? neat. 19:00:49 yeah OT give a min 19:00:51 indirect threaded totally sucks on RISC. :) 19:01:18 OrngeTide: Subroutine threading in C isn't possible. *Call* threading (a name invented by Anton Ertl) is. But call threading is slower than both subroutine threading and DTC, so ... :( 19:01:20 I actually think STC is easier :) 19:01:25 also forth doesn't need very many registers. unless you are on some small chip with two general purpose registers and a stack pointer. 19:01:53 kc5tja, you can't just stuff function pointers in an array? is that somehow different? 19:02:02 i want to investigate a technique where forth words are compiled to use registers instead of stack 19:02:02 OrngeTide: I can't find the link, but google for "Moving Forth", and that's a great introductory paper on the different implementation strategies. Also check out a paper by Anton Ertl on a similar topic (I can't remember the name now. Sorry... :( ) 19:02:08 moving forth is good 19:02:18 i've done label pointers (gnu extension) too. which worked pretty well. 19:02:34 OrngeTide: Yes, that's call-threading. It's slower than subroutine threading because there are two call/return overheads per word, instead of just one. 19:02:34 kc5tja, yea. i've seen that one. i didn't like it well enough to recommend it to others 19:02:37 kc5tja: STC in C *is* possible, btw. Absolutely.. 19:02:43 kc5tja, gotcha. 19:02:56 sure its possible 19:02:59 kc5tja: want proof? 19:03:00 you can emit machine code 19:03:02 arke: Yeah, if you compile your Forth in memory as C source code to be compiled separately. 19:03:05 then cast an addresss to a function memory 19:03:09 kc5tja: no, not even. 19:03:10 s/emmory/pointer/ 19:03:12 anything is possible. but not if you restrict yourself to being ANSI or POSIX 19:03:13 then call this function 19:03:16 OrngeTide, exactly 19:03:17 kc5tja: well, that too. 19:03:20 kc5tja: but I was thinking 19:03:29 sun's java is written in c++ but it does native code generation on the fly 19:03:35 i can't think of other examples but surely they exist 19:03:42 *ptr++ = 0xb8; 19:03:43 c programs generating trampolines etc 19:03:48 *ptr++ = 0x00; 19:03:50 etc. 19:03:52 then 19:04:01 ptr(); 19:04:03 :D 19:04:06 arke: Already, your solution is precisely what Slava just said: on-the-fly code generation. 19:04:09 you could write it in java and have it emit java byte coder. other than hacking around the security model it would be compliant with java :) 19:04:18 arke: And it's also *basically* what *I* just said too. 19:04:43 kc5tja: Oh, I thought you said something like pass it to gcc, then take the resultant binary and dlopenm() it and then run it or something 19:04:57 * Raystm2 found it -- http://www.fig-uk.org/ select Build Your Own Forth on right box 19:05:16 arke: That is essentially what I said, and slava discussed the run-time code generation, aka dynamic code compilation, aka JIT. 19:05:27 covers most every type of implimentation I can think of 19:05:39 i just bought a cool knife. it's like a swiss army knife with scissors and a file and screwdriver but it also has a lighter. fire is WAY more important than a cork screw. 19:06:00 Raystm2, neat! 19:06:01 OrngeTide: Yes. What the hell were the swiss army thinking? :) 19:06:18 he he -- better if you had a box of tools you could add and subract OT 19:06:23 like forth 19:06:29 crc: Is there an authoritative URL to download RetroForth from? 19:06:30 kc5tja, i guess they drink a lot of wine. 19:06:38 http://www.retroforth.org/release 19:06:39 :) 19:07:01 Raystm2, yea. it doesn't run forth. 19:07:22 i could get one of those little 6 pin microcontrollers and run a really limited forth :) 19:07:28 he he 19:07:36 he he 19:07:37 could fit it inside the case somehow. 19:08:02 no radio driven micro controllers forth chip on belt 19:08:02 i have a wrist watch that has JTAG on it. :) 19:08:07 --- quit: onetom (Read error: 104 (Connection reset by peer)) 19:08:19 JTAG your it 19:08:22 ahah 19:09:20 "oops time for daylight savings time. now where did I put my jtag cables and debugger?" 19:09:38 he he 19:11:13 666666666666666666666666666666666666666666666666666666666++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------------------------------------------------------------------------------------------------------------------- 19:11:16 OT are you reading the UK site? its facinating. one of the first things I found when looking for forth. but haven't seen in quite a while. it;s been updated since. 19:11:39 AHA! I notice that crc uses the "many IF statements" approach to generating clean x86 machine language for conditionals. :) 19:11:39 oops, sorry 19:11:42 arke discovers the number of the beast 19:11:45 whooo. Badnarik got arrested like he said he would! 19:11:52 Raystm2, yea. it's a nice site 19:11:55 kc5tja: is that a problem? 19:12:01 kc5tja: ? 19:12:04 It seems cleaner to me overall 19:12:05 crc: Nope. I thought I was the only one who thought of it. :) 19:12:15 I got the idea from herkforth :-) 19:12:17 (badnarik is the libertarian party's presidential canidate) 19:12:23 arke: =if if <>if 19:13:05 Ornge : No way really . what for ? 19:13:57 kc5tja: hehe, no, _I_ thought of that! lol 19:14:09 so I know of 3 people who've thought of that independently 19:14:15 How come things always end up returning to Herkamire :) 19:14:15 crc, kc5tja, and me 19:14:22 i would prefer a peephole optimizer to turn = if into the appropriate sequence 19:14:24 oh, and Herkamire :) 19:14:30 slava: ew. 19:14:41 its more orthogonal 19:14:49 you only need one if 19:14:50 arke : hehe 19:15:04 Raystm2, he tried to serve papers for the complaint he filed against the CPD (Commission on Presidential Debates) in the middle of the bush-kerry debates. 19:15:21 looks like Cobb(green party) was with him. they both got arrested 19:15:25 kc5tja: http://www.retroforth.org/dev/beta_releases/rf75-core.tar.gz has a major bugfix to the compiler 19:15:30 slava: ... 19:15:39 What is upsh? 19:15:54 slava: or, you just go with the more compact, sensical solution that doesn't require some sort of GCC-like optimizer 19:15:57 push a value to the stack 19:15:57 :) 19:16:00 upop pops a value from the stack 19:16:00 Ornge : he he welcome to the open gov 19:16:16 OH, you mean the data stakc. 19:16:18 Got it. 19:16:20 Yes 19:17:05 FASCINATING. You actually write most of the bootstrap right into the loaded kernel for direct itnerpretation from raw text source. 19:17:11 Yup 19:17:13 I hadn't thought of taking that approach to FTS/Forth. 19:17:21 Very elegant. 19:17:24 I *like* it. 19:17:30 Me too 19:17:58 That is like watching Windows boot, only to see a progress bar fly across the screen, "Please wait while Windows recompiles itself..." :) 19:18:03 * Raystm2 thinks wedding bells are ringing 19:18:07 :-) 19:18:29 Raystm2, yea. i guess they tried to serve the papers at the CPD offices first. but where turned away by security gaurds once they found out who they were and why they were there. 19:19:06 who said life was fair. 19:19:09 badnarik is kinda wacky though. he drives without a license because he refuses to give fingerprint id. 19:19:14 ok i emailed BOTH scot adams guys asking if i can put their characters in my adventure game and the dilbert one declined lol 19:19:22 which is ok 19:19:25 wanna be a big boy. get with the money fast 19:19:40 he he 19:20:49 ahha. my cat is trying to push my out of my chair. he's like pushing as hard as he can on my back trying to squeeze in behind me. that will teach me for buying a new nice and soft computer chair. 19:21:10 cats are such useless animals. 19:21:50 these idiots think they can fracture power. they don't realize that change only hapens from the inside. cats like politians. fronts for business . 19:23:46 crc: So, to get something like, for example, a 4MB dictionary, we would need to change the rb constant for the d0 label, right? 19:23:52 Yes 19:24:06 d0 is the dictionary space, h0 is the compiled code space 19:24:09 well the CPD was created by the dems and republicans because the league of women voters stopped managing the debates. "because the demands of the two campaign organizations would perpetuate 19:24:13 a fraud on the American Voter" 19:24:31 Oh, so you separate code and data spaces then? 19:24:34 I think that they are 256k and 512k in the update 19:24:34 Yes 19:24:36 Two versions of comma? 19:24:40 No 19:24:58 we just had an election on saturday 19:25:10 * kc5tja needs to find a runtime environment description file or something. 19:25:37 comma writes to code space 19:25:50 'create' manually sets up the dictionary 19:26:14 I think that TheRetroBook.txt is included; it has some notes on the internals 19:26:16 If comma writes to code space, how does one write to data space? 19:26:23 E.g., create table 1 , 2 , 3 , 19:26:43 do 1 2 3 need to be in the dictionary? 19:26:53 crc: For a table look-up, yes. 19:26:58 Code & data are shared; just the dictionary entries are separate 19:27:01 Maybe I'm confusing something. 19:27:04 explain please? 19:27:05 OOHH. 19:27:15 You call the "dictionary space" the place you put the word headers. 19:27:19 Yes 19:27:27 Gotcha. 19:27:29 Code space is for compiled code + any data you make 19:27:34 * kc5tja nods 19:27:42 * Raystm2 not ignoring OT learning from kc5 and crc 19:27:42 * kc5tja has always called that the dictionary space. 19:27:43 * crc makes a note to document that 19:27:58 Makes sense though. As long as one's aware of it. 19:27:59 :) 19:28:13 I'll make sure to explain that in the docs 19:28:29 In fact case, FTS/Forth has precisely 20KB of dictionary space -- so 128KB is mammoth in comparison. :) 19:28:39 s/fact/that/ 19:28:49 Does FTS/Forth save the entire name in the dictionary though? 19:29:03 the CPD is just another reason to be embarassed of the american political system. i can't wait till this is over and I can pretend we aren't as screwed up as we really are. http://www.disinfopedia.org/wiki.phtml?title=Commission_on_Presidential_Debates 19:29:11 :) 19:29:57 ack 19:30:52 i'm going to read that Build Your Own Forth instead. politics is too depressing. 19:30:57 The dictionary structure is documented at section 1.11 of TheRetroBook.txt 19:31:16 Although, for counted strings, FTS/Forth allocated a full 32-bit word for the length. :) 19:31:23 (except in the dictionary, where it was only 8 bits wide) 19:31:43 I use a single byte for the length of the name 19:31:51 what if I want more than 4gb of string? 19:32:00 OrngeTide: :) 19:32:24 OrngeTide: code it yourself if you need a single string longer than that :-) 19:32:31 hehe 19:32:50 OrngeTide: Use two numbers: a block address, and a block count -- that'll give you 2^74 length strings. That ought to be enough for anyone. 19:32:57 OrngeTide: or give me a 64-bit computer to port RetroForth to :-) 19:33:03 at my work 4gb is nothing. our file system formatter can't even build a new filesystem with less than 160gb 19:33:17 hehe 19:33:41 (2^32)^10 = 2^32 19:33:44 (2^32)^10 = 2^320 19:33:46 kc5 B Gates will remember that you sait that :) 19:33:46 hehehe 19:33:47 crc, amd64 or G5 ? :) 19:33:55 OrngeTide: what we need is Götterdammerung politics :-D I personally crave political chaos so a revolution can happen 19:34:06 either one will work (amd64 would be easier for me though) 19:34:23 TheBlueWizard, hrm. 19:34:34 crc, amd64 is a lot less expensive. 19:34:36 crc: At least until we develop an assembler for it. :) 19:34:48 my dad built an amd64 just on a whim and it was only like $800 in parts. 19:34:55 right 19:34:59 i think the cheap apple g5 is like $1700 19:34:59 OrngeTide: L4Ka::Pistachio now supports amd64, though not 100% fully (no SMP capability, for example). 19:35:13 kc5tja, awesome! :) 19:35:15 There will be a 64-bit FASM sometime next year ;-) 19:35:44 kc5tja, when it can work on my 4-way opteron at work i'll talk my work into switching to L4 :) 19:36:00 right now we're just doing a heavily customized linux. 19:36:16 with our own filesystem driver and sata drivers. 19:36:18 OrngeTide: It's coming. :) They're working on it. 19:36:23 kc5tja, exciting. 19:36:43 It'll probably show up no later than 0.6 release, from what I read. 19:36:44 i wish i had an SMP or NUMA box at home to play with. rumor has it that VIA might be doing a dual C3 next year for cheap. 19:37:07 that 14-processor transmeta box would be cool. if I had $10k 19:37:21 i think it's numa though. 19:38:04 crc: You know, it would be very cool if we can get Retro running under L4 and developed to a degree that would rival Linux for things like clustering and webhosting and whatnot. 19:38:33 That would be cool 19:38:38 crc: Of course, then there's the desktop market to address too. That is my personal interest, but as an ISP technician, I see tons of things wrong with current server systems. 19:38:41 i don't think it would be difficult to get retro or something on L4. 19:38:56 * crc is downloading L4ka::Pistachio 19:38:58 and it would make debugging L4 easier. 19:39:03 er.. debugging retro 19:39:53 OrngeTide: We'd probably start with the current Retro version, slap L4 under it, and hand-write the KEY, EMIT, and BYE implementations. I'd then release that as Forth/4 Release 0.1. 19:40:11 0.2 would undoubtedly have L4 API bindings. :) 19:40:27 hrm. i see 19:40:47 And then, from there, we can research things like forking the current Forth process, etc. 19:42:04 kc5tja: you're gonna ditch FTS in favor of retro? :) 19:42:05 i'm kind of a wimp. i usually want an interactive forth to be ran on some semi-protected hardware (simple mmu with the ability to recover from stack overflow/underflow is a good start) 19:42:24 or a forth is static or dynamic typing. which isn't really forth anymore. 19:42:31 arke: There is an exceedingly strong chance that may happen, yes. 19:42:40 kc5tja: cool 19:42:50 OrngeTide: L4 can definitely provide that. 19:42:54 what's so great about retro anyways. 19:43:16 A good open source coder knows when to be lazy. 19:43:19 kc5tja, yea. you could have it optionally (selectable at runtime) put guardpages on your stacks. and things like that. 19:43:49 * crc is attempting to build L4ka... 19:44:03 And I'm being lazy all over. I ditched Dolphin kernel development, and it turns out L4 does 99.95% of what I wanted in the original kernel. Now I find RetroForth is 99% the same as FTS/Forth, but more mature. Gee, it doesn't take a rocket scientist to figure this out. 19:44:22 yup. 19:44:24 :-) 19:44:30 Laziness is good 19:44:43 crc: It won't run in Bochs or qemu as far as I know. It'll only run on a real box. Don't ask me why though. I haven't investigated. 19:44:52 * kc5tja is sure that it can be hacked to run on a 486 though. 19:45:23 that's the neat part of open source. lots of talented people writing the bits and pieces of things. and then you can grab the pieces and put them together into something very interesting. 19:45:48 not enough people out there doing this intergration if you ask me. 19:45:50 OrngeTide: Yup. We're making good on the componentware promise, which the Industry At Large is still trying to grasp. 19:46:03 yup....and that's one reason M$ is scared shitless re: FLOSS idea 19:46:13 FLOSS? 19:46:26 Free/Libre Open Source Software 19:46:59 yea. the company i work for is totally taking open source and getting a huge jumpstart. we're going to be competing with companies like Netapp in a year. 19:47:13 TheBlueWizard: Ahh 19:47:43 OrngeTide: Well, hopefully, we'll have a half-way working version of Forth/4 by then. :) 19:47:50 hehe 19:47:57 Lforth! :) 19:48:01 kc5tja: have you built L4ka before? 19:48:17 crc: I compiled it to see how big it would be, but that's it. I haven't tried to boot it. 19:48:40 If you grab L4Ka::Kickstart, you can boot it with GRUB. 19:48:47 * TheBlueWizard is working harder to make M$ get even more scared...being shitless ain't enough, y'know :-D 19:49:06 Kickstart is the name of the "kernel" as far as Grub is concerned, Pistachio being a module that you load, along with sigma0 and the root task. 19:49:06 man. i love this chinese sesame bread. it's like layed with green onions inbetween each layer and cut into pizza-sized slices. i ordered some at the chinese place and i got like eight huge slices. it's taking me a few days to eat it all :P 19:49:28 I'm getting a bunch of "unknown architecture" errors when I try to build it :-( 19:49:58 When I built it, I verified the configure script had produced sane settings. 19:50:04 kc5tja, has anyone gotten it to boot on u-boot (a popular free strongarm boot loader kinda like grub) .. i'd assume this kickstart thing would be pretty much the same deal 19:50:09 I changed the processor type from i686 to i586, for example. 19:50:33 OrngeTide: Kickstart is a shim between GRUB and L4. 19:50:49 (I thought Pistachio would be Multiboot compliant on its own, but I guess it's not.) 19:50:54 right. i suspect it follow the multiboot standard and perhaps looks like an ELF ? 19:51:18 it's probably easier to make the multiboot shim it's own thing. and after you've booted reclaim the memory. 19:52:20 it's basically the same thing i need for u-boot. i'll have to look into it when i have time. my voice pda project is on hold until people get the bluetooth controller to work more reliable. until then i think i'll just use it to host OS projects for fun 19:52:32 OrngeTide: Right, I guess. 19:52:49 http://www.gumstix.com/ if you're curious. 19:55:25 * TheBlueWizard now has a curious thought: if this RetroForth has its own boottime compilation stuff, would it be more clever still to insert some CPU detection somewhere, so that it would go like this: boot -- compile small generic code -- compile CPU detection, run it, stores its type, and use that to recompile itself and then move on...a bit like Gentoo approach 19:55:28 Are you using those things in your commercial projects at your work? 19:55:41 kc5tja, nah. this is just for my own stuff. 19:55:49 TheBlueWizard: It's quite possible. 19:56:01 my company uses just mostly standard opteron motherboards 19:56:02 TheBlueWizard: Although, with it being subroutine threaded, not a whole lot will change. :) 19:56:14 it's basically a file server (24 or 48 250Gb drives) 19:56:16 OrngeTide: Oh yeah, forgot. You mentioned the 4-way SMP box. 19:56:42 14 gigabit ethernet ports. etc 19:56:58 --- join: Klaw (~anonymous@c-67-171-207-91.client.comcast.net) joined #forth 19:57:01 heh...optimizing compiler (which would insert appropriate x86 code along with JSRs) would certainly speed up stuff 19:57:22 not easy to craft it though (esp. for x86 arch) 19:57:53 Easier than you might think. Realistically speaking, *the* hardest part of such a compiler is recognizing when it's possible to optimize, and Forth as a language doesn't offer much opportunities for that. 19:58:25 Helmar is writing an optomizing compiler for RetroForth 19:59:16 hmm...looks like things are falling into places a lot faster than expected :) 19:59:25 crc: So, I'm curious -- since you just bored on ahead of me, are you doing the L4 binding, or do you want me to do it? 19:59:29 It's mostly little things like inlining simple stack words, etc 19:59:35 like if you look at it at a high level you could do things like optimize DROP. if you dropped and the code executed earlier is flexible enough you might be able to never have placed the data on the stack in the first place and then you wouldn't have to drop. although drop isn't a very critical operation to optimize. but the idea is that high level optimizations might be easier 19:59:45 kc5tja: I have no experience with microkernels 19:59:53 crc: OK, then I'll work on it. 19:59:58 And I can't get L4 to compile yet :-( 19:59:58 retroforth is native? 20:00:10 Yes, and hosted too 20:00:26 crc: How are you compiling it? 20:00:32 OrngeTide, wait a few weeks and take a look at factor on x86... 20:00:46 OrngeTide, i'm working on an optimizing compiler. 20:00:48 cd pistachio-0.4/kernel 20:00:54 make BUILDDIR=~/build 20:00:57 cd ~/build 20:01:01 make 20:01:38 after cd ~/build and before the last make, I inserted this following step: "vim Makefile". :D I made some changes to get it to compile from there. 20:03:21 Oops, vim Makeconf.local 20:03:22 sorry 20:03:25 --- join: crc_ (crc@131-pool1.ras11.nynyc-t.alerondial.net) joined #forth 20:03:40 What does your Makeconf.local file read? 20:04:21 ARCH=ia32 20:04:22 CPU=i586 20:04:22 PLATFORM=pc99 20:04:22 BUILDDIR = $(CURDIR) 20:04:22 SRCDIR=/users/crc/pistachio-0.4/kernel 20:04:38 --- quit: crc (Nick collision from services.) 20:04:39 What version of GCC? 20:04:52 2.95.4 20:04:57 --- nick: crc_ -> crc 20:04:59 I wonder if it's new enough. 20:05:06 * kc5tja tries those settings. 20:09:43 What the hell? 20:09:46 That's never happened before. 20:10:01 * kc5tja will need to e-mail the L4 folks. That's just plain retarded. 20:10:07 what happened? 20:10:22 crc can tell ya 20:10:25 I used to be able to get L4 to compile, but now I can't. 20:10:33 Undefined architecture of some kind. 20:10:47 So it's not just me 20:11:35 OOH! 20:11:37 I forgot!! 20:11:48 what? 20:11:50 Aieeee, this is the SOURCE directory! 20:11:50 ------------------------------------- 20:11:50 1. Run make BUILDDIR= 20:11:50 2. Chdir to the build directory! 20:11:50 3. Verify the settings in Makeconf.local! 20:11:52 4. Run make menuconfig or make xconfig! 20:11:54 5. Run make again! 20:11:57 You most likely forgot step 4. 20:12:02 I ran step 4 20:12:08 It still doesn't compile 20:12:09 I remember having to change some settings there. 20:12:42 wtf is L4 20:13:35 Something didn't work out right -- it's building fine for me now. 20:13:42 hmm 20:13:43 warpzero: It's a microkernel. 20:13:47 I'm getting: 20:13:48 /users/crc/pistachio-0.4/kernel/src/glue/v4-ia32/user.cc: In function `void user_system_clock(...)': 20:13:48 /users/crc/pistachio-0.4/kernel/src/glue/v4-ia32/user.cc:225: `OFS_KIP_PROCDESC' undeclared (first use this function) 20:13:59 /users/crc/pistachio-0.4/kernel/src/glue/v4-ia32/user.cc:225: for each function it appears in.) 20:13:59 /users/crc/pistachio-0.4/kernel/src/glue/v4-ia32/user.cc:225: `OFS_PROCDESC_INTFREQ' undeclared (first use this function) 20:14:07 When I try to compile it now 20:14:08 kc5tja: link please 20:14:36 warpzero: http://www.l4ka.org/ 20:14:42 warpzero: http://www.google.com/search?q=l4+microkernel 20:15:06 thx 20:16:00 crc: Under hardware, set architecture to IA-32, Processor type to Pentium (not Pentium II/III/IV), PC99 platform, turn OFF multiprocessor support (since I don't have it). 20:16:17 crc: Under kernel, set options as desired. 20:16:25 That should be enough to build the kernel with. 20:17:58 I'm also getting an error with 'nm': 20:17:58 nm: invalid option -- S 20:19:22 I'm starting to wonder if it's the development tools in use now. 20:19:34 * kc5tja tries to see if there are any requirements on the toolchain to build it with on the site. 20:24:00 --- quit: scope (Read error: 104 (Connection reset by peer)) 20:24:47 Hmm...I'm not finding anything. 20:25:01 Just out of curiousity, do you have a GCC 3.2-equipped machine you could try building with? 20:25:24 * kc5tja has GCC 3.2.2 20:26:17 checking... 20:29:03 Not on an x86 box :-( 20:29:45 The gcc 3.2.3 on PPC works fine 20:30:04 The latest GCC I have on an x86 box is 3.0.4 20:31:48 I'll have to set up GCC 3.2 on this box sometime I guess... 20:32:13 Can you try it on the GCC 3.0 system? It would be useful information to have. 20:32:29 If we're going to be putting up source code for this thing, we might as well know what version of binutils and GCC to have. 20:32:42 It doesn't work; the GCC-3.0 install seems to be broken :-( 20:33:20 3.2.3 compiles the an L4 kernel for PPC without problems 20:34:38 I just download the precompiled binary distribution. 20:35:14 * crc sighs. Having dialup means that getting GCC 3.2 will take a while 20:35:35 * TheBlueWizard sometimes wishes that the kernel packages like Linux have the "compiles under:" compiler tags, so as to reduce the need for repeated questions :P 20:36:50 yeah 20:37:12 why don't you use gcc 3.4? 20:37:22 well, gotta go...all bye 20:37:31 3.2 is what's on my box from the distribution. I'm sure that once I upgrade to Slackware 10, I'll have 3.4. :) 20:37:34 Bye TheBlueWizard 20:37:41 * kc5tja needs to get ready for work soon. 20:37:46 Probably in the next 15 minutes. 20:38:05 kc5tja bye 20:38:08 bye Blue 20:38:23 bye TheBlueWizard 20:38:24 Raystm2 bye 20:38:33 crc bye 20:38:43 --- part: TheBlueWizard left #forth 20:41:25 * slava is working on some code he wrote last year. 20:41:40 VERY ugly. 20:41:54 all my code before i discovered factor was ugly. 20:42:21 * Raystm2 wonders 'can you still read it" did you see how much you've learned since then :) 21:17:03 --- quit: crc (Read error: 104 (Connection reset by peer)) 21:47:06 --- quit: Klaw (Read error: 110 (Connection timed out)) 22:21:39 --- join: Serg_Penguin (~Miranda@212.34.52.140) joined #forth 22:41:52 --- join: colorg (r@core-dc-1-222.dynamic-dialup.coretel.net) joined #forth 22:42:24 __COLON 3 "mod" MODD ### 22:42:24 aq SLMOD DROP EXIT 22:49:07 --- quit: colorg ("changing servers") 22:49:37 --- join: Klaw (~anonymous@c-67-171-207-91.client.comcast.net) joined #forth 22:59:15 --- quit: Sonarman ("leaving") 23:07:42 --- join: mur_ (~mur@smtp.uiah.fi) joined #forth 23:08:55 --- quit: mur (Read error: 60 (Operation timed out)) 23:30:25 --- join: imaginator (~George@georgeps.dsl.xmission.com) joined #forth 23:31:48 --- join: onetom (~tom@novtan.bio.u-szeged.hu) joined #forth 23:33:52 --- quit: mur_ (Remote closed the connection) 23:34:23 --- join: mur (~mur@mgw2.uiah.fi) joined #forth 23:59:59 --- log: ended forth/04.10.10