00:00:00 --- log: started forth/05.09.21 00:18:27 --- join: pl3x (n=dadler@p5484EDC1.dip.t-dialin.net) joined #forth 00:40:53 --- quit: crc (Read error: 110 (Connection timed out)) 01:06:01 --- quit: Amanita_Virosa ("Slips out quietly.") 02:40:03 /help 02:40:36 ? 02:40:50 #help 04:28:47 --- join: amca (n=plump@as-bri-3-19.ozonline.com.au) joined #forth 04:52:15 --- join: aardvarx (n=folajimi@shell4.sea5.speakeasy.net) joined #forth 04:54:40 Morning, all 04:54:55 Evening 04:55:10 Evening, amca :P 04:55:21 How you going aardvarx ? 04:55:32 Doing well. 04:55:37 Thank you for asking. 04:55:41 How about you? 04:55:53 Haven't seen you here for a few days. 04:56:31 Im good currently. 04:56:35 What have you been up to? 04:57:45 Trying to stay on top of homework... 04:57:59 Working on learning more C... 04:58:08 * amca nods 04:58:13 How are those two going? 04:59:06 I should be fine with the homework; I have a wee bit more to do. Hopefully, I will have it done by tonight. Tomorrow's the deadline. 04:59:15 As for C... 04:59:17 cool 04:59:20 rather ho-hum. 04:59:29 Oh? 04:59:37 Sometimes it's tedious. 04:59:47 I'm reading out of a book. 04:59:47 Ah 05:00:10 It wasn't nearly as fun as when you showed me how APIs work :) 05:00:18 Ah :) 05:00:49 What are you up to learning about C so far? 05:02:41 I just got done learning about 'Character Strings,' as well as 'Formatting Input and Output' 05:02:47 * amca nods 05:02:49 I see 05:02:52 Basic IO then 05:02:55 Yeah. 05:03:15 I haven't done anything concrete with C since my first year at university :( 05:03:33 PoppaVic puts my skills to shame! 05:03:40 Ah. Well Im afraid I must be off. My brain wants to sleep the selfish thing. Hopefully Ill catch up with you later. 05:03:48 Very well. 05:03:56 Have a good evening. 05:03:59 Well remember the three tricks to coding: practice, practice, practice. 05:04:08 :) 05:04:11 Good Night/Day! :) 05:04:14 --- quit: amca ("d34d") 05:07:23 --- quit: MBitter (Read error: 110 (Connection timed out)) 05:08:27 --- join: MBitter (n=malbi@p508E3D26.dip0.t-ipconnect.de) joined #forth 05:40:31 --- join: PoppaVic (n=pete@0-1pool67-148.nas22.chicago4.il.us.da.qwest.net) joined #forth 05:40:54 Mornin' 05:50:17 Mornin' 05:50:29 moin 05:50:32 How goes it? 05:51:06 Can't complain; can't complain. 05:55:02 Well.. I managed to port in a basic Makefile - and I DO mean "basic" - for the fovm-shit. Now generates the tarball as well as a test, so.. I think I must be getting "organized". 06:20:42 :) 06:34:43 hmm.. I'm about ready, (methinks), to do some breakout for vocs/headers and images. 06:49:31 ChuckBot the Glyph is now in production. :) 06:49:48 with many new features and applications. 06:50:14 Watch the Glyph create Magic Squares of any size... 06:50:21 I'll be back in a few hours; time to go shopping... 06:50:22 play Chess.... 06:50:23 --- quit: PoppaVic ("Pulls the pin...") 06:50:36 Map Mazes 06:52:00 Solve Rubix Cube... 06:52:13 well, that's a ways down the road. 07:05:41 --- quit: MBitter (Remote closed the connection) 07:09:24 --- join: tathi (n=josh@pdpc/supporter/bronze/tathi) joined #forth 07:16:46 --- join: truls (n=kerfue@sakura.chem.ntnu.no) joined #forth 07:16:56 hiya 07:17:47 a newbie question after a short experience with gforth: is it normal for the stack to be cleared if the user writes an undefined word? 07:24:41 --- join: JasonWoof (n=jason@pdpc/supporter/student/Herkamire) joined #forth 07:24:41 --- mode: ChanServ set +o JasonWoof 07:27:48 truls: yeah, the standard says that's supposed to happen. 07:27:57 tathi: ah, thanks 07:28:23 tathi: is it browsable? 07:28:55 yeah, hang on a sec... 07:29:44 http://lars.nocrew.org/dpans/dpansf.htm 07:32:00 http://quartus.net/dpans/ 07:32:11 thanks 07:32:17 trying to find a rationale 07:32:20 there, now you got two copies :) 07:32:23 heh 07:32:42 heh 07:32:51 that's just what happens on many errors -- it executes ABORT, which clears the stacks and starts over. 07:32:56 I just opened mine up, and googled for an odd phrase 07:33:23 errors? we don't need to stinking errors 07:36:54 annoying as a newbie though 07:37:01 one typo and all my values are thrown away 07:37:13 yeah, a little bit. 07:37:16 but i guess it's a Good Thing, just have to realize how 07:38:31 hmm...actually, gforth has the Exception wordset, so you have : abort -1 throw ; 07:38:49 dunno what kind of error you're talking about 07:38:51 so if you have a word foo, you could do 07:39:00 ' foo catch 07:39:09 but anything that cound conceivably leave the wrong thing (or especially the wrong number of things) on the stack... 07:39:11 no, that doesn't really help. 07:39:20 it's going to crash anyway 07:39:24 tathi: you mean if i know i'm going to do a typo? ;) 07:39:27 JasonWoof: he asked if it's normal for the stacks to be cleared if you type an undefined word name. 07:39:34 oh 07:39:40 yeah, that's definitely annoying 07:39:47 mine doesn't do that 07:40:01 truls: well, you can make it easier on yourself by putting things into definitions rather than just typing them in... 07:40:39 but yeah, it's definitely annoying for playing around on the command line. 07:40:49 yeah 07:40:51 testing and such 07:41:07 but...my gforth has command-line history, so you can just hit the up-arrow key and correct it... 07:41:33 --- quit: pl3x (Read error: 110 (Connection timed out)) 07:45:40 thanks for clearing it up abit atleast 07:45:54 --- part: truls left #forth 08:15:01 --- quit: virsys ("bah") 08:47:55 --- quit: aardvarx ("leaving") 09:13:39 --- join: PoppaVic (n=pete@0-2pool236-21.nas22.chicago4.il.us.da.qwest.net) joined #forth 09:13:52 Whew 09:16:27 busy-busy! 09:22:22 Anyone have new ideas and developments to discuss? ;-) 09:32:41 I wrote this yesterday: http://groups.google.com/group/comp.lang.forth/msg/e52db400241ba823 09:32:53 Loading 09:33:52 ahh. 09:33:56 I remember that. 09:35:15 * tathi is working on a new asm preprocessor, but other than that... 09:35:33 You remember it? I didn't think you were here at the time. 09:35:54 Yeah, but this is ok - I just loaded the whole thread to quickly peruse. 09:36:45 That thread is mostly not on point, it's a guy who wants to understand how to implement DO/LOOP. A discussion of two control-flow stacks grew out of that, so I wrote that code. 09:37:11 right.. I can see they are debating odd points 09:39:02 I'm pretty sure that I recall that "control-flow" words/docs always and ever argued who did what to whom, where, when and why. 09:40:01 I wrote a coroutines implementation for Quartus Forth yesterday too; I'm still looking for a practical example where coroutines are required. 09:40:36 Yeah. It's tough just tossing off an example that isclear AND has implications you can see for future use. 09:42:16 Well, part of the "issue" with all the flow-control is in HAVING to expose the "guts" to the userspace. 09:42:38 What do you mean by 'guts'? 09:43:09 oh, the RS and r> >r, and the actual "data types" that get used. 09:44:01 As soon as that stuff was exposed, then the mandates for words and structs and such was tied to it with kevlar-cord. 09:44:03 The only control-flow words that use the return stack are DO/LOOP and its cousins. 09:44:17 right, looping 09:44:34 I think CASE might to, but I've not looked 09:44:38 Not all looping. BEGIN/WHILE/REPEAT and BEGIN/AGAIN and BEGIN/UNTIL don't use the return stack. CASE doesn't. 09:44:39 too 09:44:46 ahh 09:45:58 wouldn't it just simplify matters to create a loop-only stack and structs, that users can't tinker-directly? 09:46:20 For DO/LOOP, you mean? 09:46:33 yeah, or any flakey-variants. 09:46:49 Still, that is another pandorean-box of issues. 09:48:49 Quartus: given the fact the lowest opcodes are simple-minded relative-address variants of asm jmp,zjmp,nzjmp - I'd be interested in seeing DO/LOOP and such beaten down into the mud. 09:49:38 Abstract control-flow words are a good idea for the same reason a macro assembler is better than an assembler. This is an odd position for you to take, given your apparent disdain for what you call 'asm-heads'. 09:49:50 I never did like folks interleaving counters/vars with RS returns. 09:50:43 Quartus: yeah, I know - but bear in mind: I mean the vm "opcodes". I'd love to get us out of the "gotta' screw with RS" for looping. 09:51:01 DO/LOOP needs a stack somewhere. 09:51:42 Yeah, but is it hidden inside the engine-level, or supported and exposed for even more gymnastics? 09:52:42 Since Forth is at minimum a two-stack system, and because the data stack can't be used for DO/LOOP, the return stack is the natural place. 09:52:45 I've not ADDED any opcode-support for loops as we are discussing, but I'm sure the subset would be no more than about 8 codes (words) 09:52:52 Forth hides this to some degree with words like I and J. 09:54:35 Hmm. Shit. 09:55:35 I may benefit - big "maybe" - by renaming the unconditional and conditional branching opcodes. Then, integrating the loop-words would be a step further. 09:55:47 There's no point-blank mandate to use the return-stack for this, in the Standard. You could use an alternate stack. 09:56:13 Yes, you can implement counted loops on top of your VM -- I'd think that'd be slow, but it depends on what you're optimizing for I suppose. 09:56:20 RIght, the STD is merely a guide to me - I'd prefer to run UNDER "a forth" and OVER "C" 09:57:25 Quartus: well, remember - as long as we can work interactively, and generate images to save/load, and may link, and truly compile, I don't see much need to pre-optimize. 09:58:00 If you have to build a stack on top of your VM, it's going to pretty much have to be slower than a stack at the VM level, isn't it? 09:58:40 Unless your predicted optimization is better than most I've seen. 09:58:46 right, I'm setting it up to create stacks on bootstrapping. A program to optimize can use seg-regs or whatever. 09:59:28 A true "compiler" can just run the source, or the image-code, and do whatever native-code/elf/macosx junk it wants/needs. 09:59:56 run the/directlcompile 10:00:24 Personally, I'd prefer that a "native-code-compiler" just use the image we saved. 10:01:46 Given the above, then we have a (slower) interactive forthish that can generate and load 'images'; and we can eventually have a "optimizing-compiler" which may or may not generate asm, .o or whatever. 10:03:00 This seems to be (essentially) the way java, python and such already work, so.. It seems a logical way to open doors. 10:04:11 --- join: virl (n=hmpf@chello062178085149.1.12.vie.surfer.at) joined #forth 10:05:29 I thought JIT was the typical approach nowadays. 10:05:45 The only things I can see on a "loop stack" are "frames" of start/end offsets, and a counter. - two counters? 10:06:03 One, typically. 10:06:14 Everytime I read JIT I think of M$ and Java, and get nauseated 10:06:40 Quartus: step-size? as in +loop? 10:07:02 Compiled into the code at +LOOP. 10:07:03 oh.. I see, yeah - we'd have a literal on the datastack 10:07:20 Right. 10:07:37 so, just the counter, top and bottom. 10:09:00 I think it can be done with just a counter and a limit. 10:09:28 Huh. I thought the standard did specify that DO puts its runtime stuff on the rstack. 10:09:40 well, you'd still need branch-info. Embedded, I guess 10:09:43 tathi, it does. It doesn't say how big that has to be; it can be zero bytes, and you can put your stuff elsewhere. 10:10:19 Oh, ok. 10:10:32 But programmers have to assume there's something there, and not interfere with it. 10:11:19 Yeah, you can't expose it for anything other than RO access 10:11:50 THe words I, J are similar. Not remotely ideal. 10:12:16 You would suggest other names? 10:12:55 I dunno, it might need a phrase. Because, then we can speak in terms of scopes/nesting 10:13:05 I don't follow. 10:13:28 --- join: aardvarx (n=folajimi@shell4.sea5.speakeasy.net) joined #forth 10:13:34 well, iirc, there is I, I', J, J' - and no others, for higher up, right? 10:14:03 There's just I and J. 10:14:15 But the outer loop also has I and J, and so on. 10:14:22 OK, that means you'd never be able to look higher. 10:14:50 Thankfully, that's true. If you've nested two DO LOOPs you're already writing questionable code, Forth-wise. 10:15:16 the innermost code might want to know the parents-parent index. Right, I know what yer saying, and I usually agree. Just trying to think ahead. 10:15:27 If you feel the need, write K. 10:15:37 If you get to thinking you might need L, seek help. 10:16:04 I certainly don't need it, but some idjit will - bound to be true. 10:16:23 Well then, some idjit can just go write his program in Java. 10:16:27 Sure. 10:16:29 heh 10:16:52 Sorry. It just really bothers me that you keep speculating, trying to solve problems that you don't have... 10:17:17 who needs JIT? 10:17:55 anybody who wants more speed than interpreting can give you? 10:18:04 tathi: not trying to "solve", just trying to make sure I leave breathing-space. And, the whole thing was predicated on the flow-control words and the involvement of the RS stack for loops 10:18:49 tathi, I never saw any speed up of JIT, I think when compiling then ahead of time and not JIT. 10:18:49 OK, I still don't see the point in leaving breathing-space for horrible coding practices. 10:19:15 JIT still leaves me irked, bad enough the term is used for forth, but I've suffered the idiocies that biz spin from it. 10:19:35 virl: so how many programs have you written in languages with JIT compilers? 10:19:39 tathi: I'm NOT at the "writing forth" level - I'm UNDER it. 10:20:18 so, I need to insure I can emplace/access the mechanics (or mechanisms, or both), to do nearly "whatever". 10:20:41 much enough to say that it's bloat. 10:20:58 PoppaVic: I don't really care if it's the compiler or a human who's generating the bad code, I still don't like it. 10:21:03 in some cases it's probably nice but I think it's not everytime good. 10:21:06 someone has to look at it, even if only to debug the compiler. 10:21:13 hehe. 10:21:45 virl: sorry, but I think you're seeing bad implementations and just assuming the idea is fundamentally flawed. 10:22:57 I mean, sure, it's probably faster to just compile the thing once and then save out the binary. 10:23:17 which sort of compile and binary? ;-> 10:23:24 But if you have a language that's interactive, having a JIT compiler allows you to do heavy number-crunching with it as well. 10:23:41 tathi, that's true, but show me some good implementation where I could say 'wow that's not bloated and it's fast!'(bloat > 2M executable size) 10:23:43 yeppers 10:23:48 ..and, extensible 10:24:55 Factor's compiler isn't really JIT -- I *think* you have to trigger it manually. But it's not that big. 10:25:05 * PoppaVic still hates the term 'JIT' - like others frak on 'pcode' 10:25:05 Implementation of what? Certainly a JIT compiler doesn't need to be huge. 10:25:24 frak/freak 10:25:42 show me a good JIT compiler where I can say wow' 10:25:55 I think the opcode-idea is prolly the best place to start. 10:25:59 and forth isn 10:26:04 A JIT compiler is a simple thing -- compiles a non-native-code routine to native-code the first time it's used. 10:26:10 isn't JIT for me. 10:26:39 virl: you can't just say "forth isn't". There are a bazillion forth implementations out there. 10:26:55 forth is for me AOT compilers group 10:27:41 Plus, even on its face, Forth is very much akin to JIT in many enviroments. It's just a bit more aggressive -- compiles all the source to native-code the first time it's used, and quickly at that. :) 10:27:44 ok, I clarify it to forth like retroforth aren't for me JIT, they are AOT compilers for me. 10:28:02 uhh? Say what? 10:28:29 I personally prefer AOT because I think it's more realistic than JIT. 10:28:32 Quartus: I hope you mean forth-internal 10:28:39 or forth-native 10:30:30 Well, yes -- whatever the internal format is. I can't imagine why you wouldn't want a native-code compiler these days. 10:31:20 yah, given how easy it is. 10:31:37 I'd love em, but I've never seen a good example. 10:31:44 JIT is something which adds complexity to the compilers, and so it uses room which could be better used for other routines like gui-optimization or game optimization. 10:32:09 and, of course: meanwhile, you need an interpreter ala' forth for development. (otherwise, I stick to C) 10:32:32 PoppaVic, you've never seen a good example of a native-code Forth? 10:32:53 PoppaVic: PTI, but when you get a chance, check the wiki for the latest question. 10:32:55 Quartus: native-compiling, no. Forth compiled-to-native, sure 10:33:04 I think he means, that he never saw a good JIT implementation. 10:33:07 loading, aardvarx 10:33:10 What's the difference, PoppaVic? 10:33:55 Quartus: the entire engine and image, ala' pfe or gforth: I've seen this. I've neve used/seen a forth that compiles native-code. 10:34:33 Really. 10:34:44 I thought you told me you'd used Quartus Forth at some point. 10:34:58 oh my, no. I said I'dseen it! 10:35:39 afaik, it's for palmOS, isn't it?? I've never downloaded, built and run it on this powerbook or linux. 10:36:02 It's for the Palm OS, yes. Don't hyperventilate. :) I must have mis-remembered. 10:36:27 oh, phew! I thought I'd missed some better gig! ;-) 10:36:29 eh, Quartus do you have a free version of it? 10:36:51 heh, yah scared this ol' fart! 10:37:14 virl, yes -- the evaluation version is free. 10:38:11 PoppaVic, as I recall BigForth and SwiftForth are both native-code for the PC. 10:38:14 evaluation version? is there some restrictions on it? 10:38:26 aardvarx: 1) you need to indent better ;-) 2) Yer still looking for a working-solution - I'm still tinkering with structures, API and ideas. 10:38:30 is=are 10:38:31 virl, yes -- the evaluation version of Quartus Forth can't create turnkey applications, and it has less codespace. 10:38:46 ah, ok. 10:38:57 Quartus: the fortmer I recall - very large and buggy. THe latter, I believe, was a for-sale item? 10:39:12 PoppaVic, yes, though I think the evaluation version is also free, but won't create turnkey apps. 10:39:14 Quartus: meanwhile, yeah... Sticking to the powerbook. 10:39:28 Quartus, sry dude, but I don't like it to buy something about the inet, so sry. 10:39:40 virl, I don't understand. 10:39:43 MOPS compiled native also. 10:39:57 I recall MOPS, very weird thingie 10:40:24 yah, it had an ANS mode later on though. 10:40:25 PoppaVic, ok -- but if you've never seen a native-code-compiling Forth, it's not reasonable to say you've never seen a 'good one' -- that implies that you've seen them, and they're not 'good', when in fact you're just unfamiliar with them. 10:40:29 Quartus, I don't buy anything above the inet. 10:40:49 PoppaVic, do you think I'm a troll? 10:40:56 I do not have an issue with an interactive forth working with "fcode", particularly if we can ever get a SO compiler. 10:40:56 virl -- ok. Fortunately most people are not that paranoid. :) 10:41:10 aardvarx: never said or thought that at all. 10:41:17 Just checking. 10:41:46 aardvarx: maybe a "lurker", and that's not all bad. 10:41:56 I am unsure about what you're up to. 10:42:10 aardvarx: the thing to ask YOURSELF is: "Am I learning anything?" 10:42:24 I see you doing a boatload of coding... 10:42:41 virl, should you ever be interested in purchasing Quartus Forth, it can be done through the mail also. 10:42:42 problem is, I have NO IDEA what you are up to. 10:42:46 tinkering, moving, removing, renaming, restructuring, etc. 10:42:57 PoppaVic, watch this: 10:43:06 Quartus, hey there! 10:43:30 Hey. 10:43:37 Good. 10:43:48 Quartus, can you tell me what PoppaVic is doing? 10:43:52 aardvarx: "up to" just shy of beginning some real code... I've just about gotten enough feedback from Q and tathi and JasonWoof to consider that I may have something, but not sure what she willevolve into. 10:44:00 I mean, what do you think PoppaVic is up to? 10:44:08 I think he's thinking about writing a VM. 10:44:33 Fair enough. I guess I could say I knew that much to. 10:44:53 Quartus, however, have you noticed how much code he's cranking out? 10:45:00 I haven't. 10:45:24 I've only seen what's been posted on the wiki. 10:45:43 aardvarx, welcome in the 'we know nothing' club, sit down and take a beer. ;-) 10:45:45 Quartus, what does what you've seen so far meanD to you? 10:45:56 meanD, eh? :) 10:46:00 heh 10:46:06 * aardvarx has no idea how garbage got into the text. 10:46:12 It means to me that he's thinking about writing a VM. 10:46:48 Quartus, can you see how the code will work towards that goal? 10:46:56 It looks to me like it needs a proof-of-concept, some kind of framework for testing, but it's not my project; to each his own. 10:47:13 Right, it surely needs the POC 10:47:32 Quartus, I'm the dweeb here. You know more than I do. 10:47:34 I'll get there. I believe the do/loop ideas had merit 10:47:37 so, a little VM Quartus? 10:47:54 Little, big, too early to tell. Ask PoppaVic. 10:48:01 PoppaVic, I am not disputing that the ideas have merit. 10:48:13 I would just like to know what's going on. 10:48:14 ok, I have the POC of my project, it's simple but mostly it works so I think it's fine. 10:49:12 PoppaVic, you have taught me a few things, so it's not a waste. 10:49:22 whatever choose #xell 10:49:26 aardvarx: You misunderstand - I was not arguing. I have to integrate the concept is all. 10:49:38 I just don't want to feel so oblivious. 10:50:15 I need to go learn more about C & Forth anyway... 10:50:30 It can't be helped at this time. Really. The best that could be expected currently is that a few long-time programmers can see and catch serious faux pau (sp?) 10:50:48 aardvarx, from where do you come? Perl, bash, python, ...? 10:51:23 what is in that context long-time coders? 10:51:38 I couldn't write docs w/o shit to document. And, I really, really despise RFC's that never get pass the "comment" part. 10:51:56 PoppaVic, I'm glad you said that much. 10:52:22 aardvarx: yeah, go code something cool in forth. :) 10:52:24 well, darn man.. I keep trying. I don't want to alienate folks or screw up yer mind. 10:52:43 * aardvarx wants to keep from sounding like a blithering idiot. 10:52:51 tathi, I'm working on it. 10:53:03 oh, good :) 10:53:15 I'm with tathi. But do it in Quartus Forth and buy a copy first, please. ;) 10:53:27 ha! 10:53:32 I still need to cogitate a strings-layer and i/o layer (opcodes). 10:53:46 You had to get that plug in there, didn't ya, Quartus? 10:53:47 :P 10:53:56 * tathi goes back to coding... 10:53:57 Quartus: with a really good deal on a palm-device? ;-> 10:54:13 Those I don't sell. 10:54:30 Need to consider a port, then ;-) 10:54:36 so that Quartus can buy a new maibach... 10:55:04 What's a maibach? 10:55:14 no idea. 10:55:22 an expensive car 10:55:23 PoppaVic, the best deal on a Palm device is the Palm OS Emulator, free from Palm. You have to register as a developer to get the ROM, but that's free too. 10:55:56 Is there some obtuse reason I'd want to emulate a Palm ? 10:56:24 It's as obtuse as you want it to be, PoppaVic :) You asked about a good deal on a Palm device-- can't sell you a device, but I can offer you a simulated one for free. 10:56:27 registration is always bad 10:56:29 ..after all, the powerbook is already emulating a computer running BSD ;-) 10:56:58 Quartus: I was jus' teasin' - s'all good. 10:57:17 I'd like to discus xell, grr. hell why not? 10:58:53 aardvarx: trying to dcc-offer you a tarball. 11:00:10 PoppaVic, dcc? 11:01:55 yeah 11:02:57 So far, I've never been able to get xchat to send dcc properly. *sigh* 11:03:46 anybody interested in Xell? 11:05:08 I looked at your website briefly, virl, a couple of days ago. There isn't much documentation yet. 11:06:19 ah ok... 11:06:52 after this week I think I can put some more infos on my site. 11:07:05 PoppaVic, it looks like you tried to send me something... 11:07:07 when that's the only reason, then it's not a problem. 11:07:13 yep 11:07:18 nm. 11:07:34 --- DCC SEND Fovm-0.1.1.tar.gz to aardvarx timed out - aborting. 11:07:41 :( 11:08:09 I dunno' if it's my end (which I suspect), or folks being paranoid. Np. Doesn't matter. 11:08:35 k. 11:08:39 bbiab.. 11:13:56 --- join: osh (i=74081307@Orleans-ppp42707.sympatico.ca) joined #forth 11:14:58 just ran a search for something, saw this go by: "J2ME: The next major games platform?" :) 11:15:09 heh 11:16:34 Since I just never game anymore, it doesn't much interest me. Folks are just nuts over games - and cellphones/ipods. 11:17:10 well, and porn. They love hotchats and porn, too 11:18:15 has anyone ever programmed in UserRPL on the hp48? forth crossed with a bit of lisp 11:18:17 hmm 11:18:36 I just had a brainfart re: the branching crap. 11:19:24 JasonWoof: you awake, dude? 11:20:22 JasonWoof: can you typify (examples) of hitting the conditional semicolon denesting? 11:20:39 or usage - I'm having trouble seeing it. 11:21:16 typify doesn't mean "provide examples of"... it means "be a typical example of" ;-) 11:21:45 osh: not me, never owned one. warpzero was talking about his hp the other day though... 11:22:16 there's an #hp48 channel here but it's empty now... the one on efnet has been going for many years and is still there afaik 11:22:22 bbl... bye all 11:22:23 --- part: osh left #forth 11:22:37 PoppaVic: what do you want to know about conditional returns? 11:22:54 I'm just wondering how they are embedded/used 11:23:26 I know they are a trick/compaction. Just not sure how you guys used them in an example. 11:23:54 oh. do you have the herkforth sources? 11:24:00 hmm...looking for a good example... 11:24:02 OR, wait - are they the same return, and ONLY conditional? 11:24:31 as in "..I'm really a does>, just keep running" 11:25:11 yeah, it's mostly like ';'. (or EXIT in standard forth). 11:25:28 so, the conditional does - what on failure? 11:25:29 only they check the top of the stack to see whether they should unnest. 11:25:37 acts like a no-op 11:25:44 just keep running the pcode? 11:25:58 well, actually, the tricky question is whether they drop the top element of the stack or not. 11:26:01 yes. 11:26:10 So, you can emded them anywhere along the line? 11:26:18 "embed" 11:26:22 yes. 11:26:25 ahhhhhhhh 11:27:34 ahh, so... they are more like "nzExit" or "zExit" than "nzSemi" or "Zsemi"! ah-hah! 11:27:45 yes. 11:28:08 Ah-soo, weedhopper! Thanks, that clarifies a temp. mindfuck ;-) 11:28:49 yah, herkforth, like colorforth, doesn't have EXIT, it just uses ';' for that purpose. 11:29:06 right, and gforth stores ";s" 11:29:19 ok, I think that clarified a real puzzlement. 11:30:35 * PoppaVic rejuggles opcode groups 11:30:35 Man. Herkforth is definitely a different dialect. I've mostly been looking at more standard forth code recently. :) 11:31:01 hehe "which standard?" ;-) I know what you mean, though 11:33:01 This is why I want my underlayer to look "correct". I suspect that, done well, anyone can implement a variant w/o huge hassles - and they can deal with their own damned optimizations. 11:33:11 I thought about pasting strlen as an example, but: 11:33:18 : (strlen) b+@ 0=; 1+ (strlen) ; 11:33:18 : strlen a>r 1- >a 0 (strlen) r>a ; 11:33:30 An example of what? 11:33:34 Yeah, strings are another layer I want to discuss. 11:33:38 the conditional return there. 11:34:36 0=; I can figure out. b+@ a>r >a and r>a I can't. 11:34:45 right. 11:34:48 Brevity to the point of being cryptic is no virtue. 11:35:47 A is an address register, that's "byte pre-incrementing fetch", "a to rstack", "to rstack", and "rstack to a". 11:36:11 It's not so much cryptic as just a different model. 11:36:17 >a is "to rstack"? 11:36:20 I'm also considering that "opcodes" can actually be pseudonems (sp?) 11:36:25 argh. 11:36:35 "to a from data stack", sorry. 11:36:47 var/reg 11:36:57 'a' - the address reg 11:45:29 ahh, and ohh.. Oh, my.. What a can of worms 11:48:48 Tathi, that seems a huge amount of trouble to go to for a strlen function. Is it optimal for that Forth? 11:50:20 correct me if wrong here, but is "begin....while...until.." illegal? 11:50:28 No, it isn't. 11:50:47 hmpf.. my test failed. I musta' done a "stupid" 11:50:53 begin while until then is, but it's a clumsy construct. 11:51:05 until AND 'then' ? 11:51:11 Yes, then resolves while. 11:51:18 ahhhh 11:51:22 bad-llama 11:53:08 Those terms and logic really bug me. 11:53:20 Suggest better ones. 11:53:26 Cogitating. 11:53:38 It's the combos that are not "smooth" 11:54:08 By the way, here's a Standard Forth strlen -- assumes chars are one address unit each: 11:54:09 : strlen dup begin count 0= until 1- swap - ; 11:54:15 'begin' is no issue. The followups get sloppy/nasty 11:54:43 The portable version would be... : strlen dup begin count 0= until -1 chars + swap - 1 chars / ; (I think, haven't tested that one) 11:55:41 If I were using "-1 chars +" more than once, I'd make "char-". 11:55:47 Short paste, correct me if wrong... 11:55:56 C(begin), 11:55:57 C(until), 11:55:57 C(again), 11:55:57 C(while), C(repeat) 11:56:06 what's C()? 11:56:17 a macro - nm, means nothing to us 11:56:45 looks like I need another level of tabbing from until forward. 11:56:58 The usual suspects are: BEGIN/AGAIN, BEGIN/UNTIL, BEGIN/WHILE/REPEAT. REPEAT is "AGAIN THEN", so additional WHILEs can be resolved after a REPEAT by using additional THENs. 11:57:03 but, isn't this the totality of a begin... loop? 11:57:22 WHAT?!?!?! 11:57:26 Mostly, but as I mention, don't forget BEGIN/WHILE/WHILE/REPEAT/THEN. 11:57:32 I've never seen such an oddity! 11:57:42 *shrug* it isn't seen often in the wild, but it works. Multiple exits. 11:57:53 wow. That's sorta' nutso 11:58:19 By extension, BEGIN/WHILE/WHILE/WHILE/REPEAT/THEN/THEN, and so on. 11:58:31 ouchy 11:58:39 that's unattractive 11:58:46 Yes, that's why it isn't seen much. 11:58:56 But my point is that it's valid. 11:59:07 so, a 'repeat' and a 'while' are really pseudonyms 11:59:25 Yes. And so is AGAIN -- equivalent to 0 UNTIL. 11:59:31 ahhh 11:59:36 And AHEAD is 0 IF. 11:59:53 Yeah, I was trying to recall AHEAD and failing 12:00:11 wow. Any sensible suggestions to alternative phrasing? 12:00:17 At the bottom you need one conditional forward branch, and one conditional backward branch, and you can build up the rest. 12:00:30 right 12:02:12 I don't see a need for alternative phrasing. BEGIN/WHILE/REPEAT is used for test-at-the-top or test-in-the-middle loops, UNTIL for test-at-the-bottom (though WHILE/REPEAT can do this too), and AGAIN is no-exit. 12:03:22 The only issue I have is for interactive, see, debug. 12:03:32 ...? 12:03:52 Plus, I just would hate to import that system to this level. 12:04:06 As I said: At the bottom you need one conditional forward branch, and one conditional backward branch, and you can build up the rest. 12:04:17 Right. 12:04:51 Though I think it would be foolish to design a VM with only conditional branches, esp. as it'll never be running on hardware that doesn't have an unconditional branch instruction. 12:05:04 No, I agree 12:05:55 1) unconditional (forever); 2) conditional; 3) Leave early. 12:06:15 The last two are the same, it's just a question of where the test occurs. 12:07:21 No. yer thinking of embedding multiple codes regardless. I see, 12:07:27 see. (too) 12:07:58 I'm not. A conditional loop is just a loop with an exit, usually at the bottom. 12:08:12 yes. 12:08:13 There's no 'early', per se. It's either a conditional loop or an unconditional loop. 12:08:49 nono.. [begin].........[(un)conditional branch] 12:09:37 As I said, it's either a conditional loop or an unconditional loop. 12:09:37 and, the 'branch' would be back to the top-of-block 12:09:42 right. 12:10:34 "leave" and "?leave" are simply conveniences that would insure stack(s) are cleaned. 12:10:54 ?leave is fat. 12:10:57 ..also placemarks for any debugging/whatever. 12:11:26 But I agree, at this level I want the trimmed-down primitives 12:11:52 I can live with a NOP [begin] 12:12:31 And, it's hard to fault a 'compiler' or 'decompiler' that say the most with the least space. 12:15:29 I find it difficult to discuss "looping" and "counted-looping" *sigh* 12:16:12 OK. I'm going to call it a day. Type at y'all tomorrow, thanks guys. 12:16:14 --- quit: PoppaVic ("Pulls the pin...") 12:31:00 Quartus: yeah, it's fairly optimal speed-wise. Probably would be better with begin/again. 12:31:16 And more readable with a post-increment fetch, but PPC doesn't have an instruction for that. 12:31:38 : strlen >a 0 begin b@+ 0=; 1+ again 12:31:47 something like that. 12:34:19 I see. 12:54:19 This is the Standard version I'm happiest with thus far: 12:54:19 : char/ 1 chars / ; 12:54:19 : distance ( c-addr1 c-addr2 -- chars ) swap - char/ ; 12:54:19 : strlen ( c-addr -- chars ) dup begin count 0= until distance 1- ; 12:54:40 char/ is a null operation for all the Forths I work with. 13:03:32 --- quit: derv0 ("Client exiting") 13:11:46 --- quit: aardvarx ("Riverside...") 13:16:04 --- quit: Quartus () 13:17:17 --- join: Quartus (n=trailer@ansuz.pair.com) joined #forth 13:59:18 --- join: binaryguy (n=binarygu@86.131.187.35) joined #forth 13:59:31 1011, binaryguy. 14:00:41 0100 Quartus 14:02:54 1! 14:05:33 --- join: mwelsh (n=mwelsh__@host140.osu-btc.com) joined #forth 14:06:18 --- part: mwelsh left #forth 14:06:44 What was quartus forth written in? 14:08:07 OVERFLOW 14:08:30 it was fun to leark from work like a jerk today. good convo guys 14:09:46 --- quit: binaryguy (" HydraIRC -> http://www.hydrairc.com <- IRC with a difference") 14:10:55 Oops. Was away for a minute. 14:11:40 Well, for anybody who might still be here who wants to know, Quartus Forth is written using a custom toolchain -- it's a Forth target compiler. 14:11:40 It's okay, you're allowed. :) 14:12:15 good tools like good tools are good tools. 14:12:46 * Ray_work is bored and ready to jump ship. 14:12:54 hour to go... 14:15:07 So...you wrote a Forth target compiler that ran on your PC, and then used that to write Quartus Forth? 14:15:15 or used an existing target compiler? 14:15:25 Wrote my own, based on an assembler. 14:15:54 A cross-assembler, to be exact. 14:16:29 lets do a "so far from ANS that it ticks ya off" experimental forth for the Palm using Quartus as the target compiler. 14:16:57 Easier to do would be to build your 'whacko Forth' on top of Quartus, as an extension. :) 14:17:12 :) 14:17:49 whoa! a Glypher would be great on a Palm. 14:18:28 I think you showed me a page about that. Completely proprietary, no specifications document? 14:18:50 lost me. 14:19:00 I don't recall, but I may have.... 14:19:03 Glpyher. Proprietary Forth? 14:19:13 oh I suppose it is. 14:19:24 Specifications documented anywhere? 14:19:47 That's Roger Levy's and I guess when he sells one to me, that will just about exhaust his audience. 14:20:22 Specs :) Doc :) A bit spoiled, aren't we? :) 14:20:32 To early for that really. 14:20:46 Don't have the luxury of time for playing with somebody's private toy language, unfortunately. 14:21:04 http://glypher.net/ 14:21:14 Somebody should have a word with him about black text on an electric blue background! 14:21:18 I know. I should be saying the same, but he cornered me and I was tired and just .... 14:21:48 that's new 14:21:56 since last night even 14:22:17 gdb dissassembled this (PPC) crclr 4*cr1+eq 14:22:22 anybody know what it is? 14:22:24 I have a bit of time for projects that are documented and usefully solve some kind of problem. 14:22:40 there doesn't appear to be a mnemonic crclr 14:22:46 at least not in the motorola spec 14:22:59 and that's totally not ppc asm syntax 14:23:07 Google says it's a PowerPC-only mnemoic. 14:23:10 er, mnemonic. 14:23:30 http://sources.redhat.com/ml/binutils/2001-02/msg00014.html 14:24:17 it's an extended mnemonic 14:24:32 clears a bit in the condition register 14:24:53 probably short for "crxor N,N,N" 14:26:01 * tathi goes to look at the manuals 14:29:44 Yah, Motorola doesn't have a nice short listing of the "simplified" mnemonics. 14:30:21 But if you have the Programming Environments Manual (MPCFPE.pdf or MPCFPE32.pdf) they're in Appendix F. 14:31:00 weird 14:31:18 why weird? 14:31:21 just dissassembled it by hand, and got straight "or" 14:31:33 oh. 14:31:56 Even I know that one. :) 14:32:57 funky 14:33:10 crclr sure sounds like "condition register clear" 14:36:56 looks like it should encode to 0x4cc63182 14:37:42 I still like the way the one piece of the opcode is the truth table for the operation. :) 14:47:25 * Ray_work just " have a world" about the black text, blue background. 14:47:33 yikes 14:48:01 I just sent Roger a quick message about the colors. 14:48:36 It's scary. 14:48:47 The whole site is very -- Atari "attract mode". 14:49:07 He speaks of Nintendo, fondly. 14:50:22 closing routines @work. 14:50:34 Which is all fine and dandy, but the site's unreadable. I used Opera to switch off the paint job, and found there wasn't any actual info there. 14:51:02 like I said, it's early :) 14:51:03 why do you ever need swap :? 14:51:17 exchange swap with xchg? 14:53:17 Are you asking why SWAP is needed? 14:54:15 --- join: virsys (n=virsys@or-65-40-177-90.dyn.sprint-hsd.net) joined #forth 14:55:53 warpzero - ? 14:56:14 yeah 14:56:23 because if you need swap don't you really just need to refactor 14:56:40 Example? 14:59:34 Ok, well. Take BOUNDS for instance. : BOUNDS OVER + SWAP ; 15:00:08 Or UNDER+ : UNDER+ ROT + SWAP ; 15:01:59 If for any reason you need to get at the item under the top item, SWAP is your friend. I can't see how refactoring can eliminate the need for it. 15:02:06 In some cases, maybe. 15:03:20 How would you write: 15:03:20 : char/ 1 chars / ; 15:03:20 : distance ( c-addr1 c-addr2 -- chars ) swap - char/ ; 15:03:23 Without swap? 15:08:06 Apparently you'd do it very, very quietly. :) 15:53:46 --- join: crc (i=crc@pool-70-110-172-34.phil.east.verizon.net) joined #forth 15:54:33 --- mode: ChanServ set +o crc 15:57:25 --- quit: JasonWoof ("shutting down") 16:38:05 --- join: amca (n=plump@as-bri-3-114.ozonline.com.au) joined #forth 17:17:10 --- quit: amca ("d34d") 17:48:43 --- join: Amanita_Virosa (n=jenni@CPE0000e812679b-CM000a7362da55.cpe.net.cable.rogers.com) joined #forth 18:28:22 --- quit: madgarden ("?OUT OF DATA ERROR") 18:37:11 --- quit: madwork (Read error: 110 (Connection timed out)) 18:38:21 --- join: madgarden (n=madgarde@Kitchener-HSE-ppp3577624.sympatico.ca) joined #forth 18:59:19 --- join: sproingie (i=foobar@64-121-2-59.c3-0.sfrn-ubr8.sfrn.ca.cable.rcn.com) joined #forth 19:04:09 --- join: scope (n=junk@njd.paradise.net.nz) joined #forth 19:06:12 --- part: scope left #forth 19:11:15 --- quit: madgarden ("?OUT OF DATA ERROR") 19:14:44 --- join: madgarden (n=madgarde@Kitchener-HSE-ppp3577624.sympatico.ca) joined #forth 19:19:13 --- quit: tathi ("leaving") 20:04:19 --- join: snoopy_16 (i=snoopy_1@dsl-084-058-137-120.arcor-ip.net) joined #forth 20:04:45 --- quit: Snoopy42 (Nick collision from services.) 20:05:12 --- nick: snoopy_16 -> Snoopy42 21:27:35 --- quit: sproingie (Remote closed the connection) 22:32:33 --- quit: virl (Remote closed the connection) 23:05:51 --- quit: Amanita_Virosa ("Gaming, woo.") 23:59:59 --- log: ended forth/05.09.21