00:00:00 --- log: started forth/06.10.23 00:29:50 --- quit: Quartus (Read error: 104 (Connection reset by peer)) 00:31:01 --- join: Quartus (n=trailer@CPE0001023f6e4f-CM013349902843.cpe.net.cable.rogers.com) joined #forth 00:31:01 --- mode: ChanServ set +o Quartus 01:04:47 --- join: Cheery (n=Cheery@a81-197-19-23.elisa-laajakaista.fi) joined #forth 01:50:01 --- join: Cheer1 (n=Cheery@a81-197-19-23.elisa-laajakaista.fi) joined #forth 01:51:26 --- quit: Cheery (Read error: 110 (Connection timed out)) 01:51:36 --- join: I440r_ (n=mark4@67.135.84.40) joined #forth 01:56:18 --- nick: Cheer1 -> Cheery 01:58:51 --- quit: segher (Nick collision from services.) 01:59:03 --- join: segher (n=segher@dslb-084-056-131-029.pools.arcor-ip.net) joined #forth 02:00:29 --- quit: mark4 (Read error: 145 (Connection timed out)) 02:27:26 --- quit: Cheery (Read error: 110 (Connection timed out)) 02:32:54 --- join: Cheery (n=Cheery@a81-197-19-23.elisa-laajakaista.fi) joined #forth 03:07:31 --- quit: Cheery ("Download Gaim: http://gaim.sourceforge.net/") 03:09:46 --- join: Cheery (n=Cheery@a81-197-19-23.elisa-laajakaista.fi) joined #forth 03:24:25 --- join: Bushmills (n=l@wpc3131.amenworld.com) joined #forth 03:26:13 'morning 03:33:34 Hi. 03:36:27 --- join: zpg (n=user@user-5440eceb.wfd80a.dsl.pol.co.uk) joined #forth 03:39:41 morning all 03:43:55 would anyone here care to help me out with >NUMBER? 03:54:14 what is your problem? 03:54:55 i can't work out how to use it -- 03:55:18 lets see. it turns a string into number, right? 03:55:19 ": atest 1 s" 40" >number .s ;" then, "atest" ==> "<3> 100 2242770 0" 03:56:00 the TOS is 0, showing that there were no characters that were convertable. as for the 100 and address, i'm not sure. 04:00:42 hmm, if i write i t like this, on the other hand: " : atest 0 1 s" 40" >number .s ; ", the 4th item in the stack is now 40 04:00:43 odd. 04:00:57 bah, works weird. 04:01:42 ah, not it makes sense, i'm being a fool. 04:01:48 No wonder retroforth seemed simpler... 04:01:59 it takes an unsigned double. 04:02:21 ": atest 0. s" 40" >number .s ;" ==> "atest" ==> "atest <4> 40 0 2243818 0" 04:02:49 so now we can say, "dup 0= if" to check whether the whole string was converted, if so, drop the address and we're left with the correct double result. 04:03:34 of course, i could have just used EVALUATE but this was bugging me last night. 04:23:54 --- join: crest_ (n=crest@p54896DC4.dip.t-dialin.net) joined #forth 04:33:18 --- quit: zpg (Read error: 110 (Connection timed out)) 04:34:16 --- quit: Crest (Read error: 110 (Connection timed out)) 04:38:51 --- join: vatic (n=chatzill@pool-162-84-156-148.ny5030.east.verizon.net) joined #forth 04:42:53 --- join: zpg (n=user@user-5440eceb.wfd80a.dsl.pol.co.uk) joined #forth 04:48:25 zpg, did you look at the definition in DPANS? http://quartus.net/dpans/dpans6.htm#6.1.0570 04:51:04 yes, i didn't get it when i looked originally. 04:51:09 kept missing the UD spec. 05:01:06 --- join: tgkuo3 (n=tgkuo3@125-233-21-36.dynamic.hinet.net) joined #forth 05:11:41 --- part: tgkuo3 left #forth 05:21:53 --- join: timlarson_ (n=timlarso@65.116.199.19) joined #forth 05:52:41 --- quit: neceve (Read error: 113 (No route to host)) 06:29:42 --- join: Ray_work (n=Raystm2@199.227.227.26) joined #forth 06:30:28 Good morning. 06:31:36 hi 06:41:37 --- nick: crest_ -> Cres 06:41:40 --- nick: Cres -> Crest 06:42:24 The Crest is here, now we can ride the wave from the top. Welcome Crest. 06:42:51 i'm here but i've to go 06:43:08 Have a great day! ~ 06:43:38 * Crest is away: … 07:08:19 Ray_work: got the Vx out to you on Friday... :-) 07:13:41 You did! Thank you so much. Let me see... That means Tuesday earliest Thursday latest with my bet on Wednessday. :) 07:13:59 I can't wait to try Quartus forth on it. 07:14:06 Have you ever done such a thing? 07:17:01 --- join: nighty__ (n=nighty@sushi.rural-networks.com) joined #forth 07:21:46 --- join: neceve (n=claudiu@unaffiliated/neceve) joined #forth 07:24:41 --- join: virl (n=virl@chello062178085149.1.12.vie.surfer.at) joined #forth 07:30:22 --- quit: nighty_ (Read error: 110 (Connection timed out)) 07:41:17 Ray_work: sure! running a copy of Quartus on my TX right now. Doing most of my programming that way. It'll definitely work on the Vx. 07:58:54 :) I'm jazzed about that. 08:04:09 --- join: snoopy_1711 (i=snoopy_1@dslb-084-058-096-249.pools.arcor-ip.net) joined #forth 08:05:22 --- quit: michaelw (K-lined) 08:07:25 --- quit: Snoopy42 (Read error: 104 (Connection reset by peer)) 08:07:37 --- nick: snoopy_1711 -> Snoopy42 09:04:22 --- join: erider (n=erider@unaffiliated/erider) joined #forth 09:06:49 good morning all 09:11:53 --- join: madwork (n=foo@204.138.110.15) joined #forth 09:17:02 --- quit: erider (Read error: 104 (Connection reset by peer)) 09:30:00 --- join: erider (n=erider@unaffiliated/erider) joined #forth 10:05:09 erider: hi! 10:07:28 vatic: how are you going today 10:07:46 erider: going fine. and you? 10:08:08 pretty good thanks 10:09:41 back in a second... 10:38:27 whooossh!! 10:54:34 lol 11:30:45 --- join: snowrichard (n=richard@12.18.108.162) joined #forth 11:46:59 --- quit: snowrichard ("Leaving") 12:36:36 * Crest is back (gone 05:52:58) 12:41:15 --- quit: Cheery (Read error: 110 (Connection timed out)) 13:04:41 hey. 13:09:35 Quartus_: hi! 13:09:57 what's up? 13:12:15 Quartus_: got my little backtracker working, but there's still refinements to be made... 13:12:22 ...and your slef? 13:12:26 self? 13:12:53 I guess I'm dysleftic today... 13:13:49 Quartus_: oh, written in Quartus! ;-) 13:13:57 Nothing too dramatic to report. I see endless argument on clf re the format a repository should take. 13:16:24 Quartus_: yeah, "How about just starting, guys?" 13:16:43 right. 13:17:20 Quartus_: a little too much Doty still. I wish he'd take a break, like Jeff Fox does... 13:18:07 we'll be wanting that pre-LSE-publication John Doty back... 13:18:36 heck, forget the future. I wish right now! 13:24:33 Quartus_: one thing I inherited from the Feucht code is a Forth word that returns two flags: the first to terminate a BEGIN/UNTIL loop in the calling word, and the second to provide a success/failure flag at the top level. Any opinions on the good, bad or ugly of such a practice? 13:28:24 --- quit: timlarson_ ("Leaving") 13:30:29 Think I'd need to see it. 13:31:32 que passo vato 13:54:11 --- quit: madwork (Read error: 104 (Connection reset by peer)) 14:14:01 hi Q 14:14:18 hey 14:17:12 Quartus_: I'll finish my polishing then, thnx... 14:23:11 Quartus_: does your Forth have a variable that can be tested to verify you're running on q4th? Like: quartus [ifdef] ? 14:24:00 or palm [ifdef] ? 14:31:56 --- nick: Raystm2 -> babstm 14:32:05 --- nick: babstm -> nanstm 14:38:08 vatic, no. Can't think of a system that does. 14:40:09 I suggest going the other way; if you have Quartus Forth-specific code in something that you want to use portably, optionally define a constant and check for that. 14:41:24 Then you can include the source from a wrapper that sets up any dependencies specific to the given platform. 14:45:54 In fact I'd go one further and suggest you abstract all non-portable code for any given source in such a way that you can define it separately for any given environment, and not use conditional compilation for that at all if it can be avoided. 15:04:14 --- quit: Ray_work ("User pushed the X - because it's Xtra, baby") 15:04:26 Quartus: iForth appears to have [ LINUX? ]... 15:04:57 vatic, ok. There's no expectation of such, so if you need a thing like that, define one. 15:06:47 Quartus: just offering it as an example for your "can't think of a system," not as a counter-argument... 15:07:15 I'm not familiar with iForth, having only seen some source written for it. 15:08:48 Quartus: that particular bit came from blas.frt, where shared libs or dll's are loaded depending on operating system... 15:09:07 Right. As I say, I'd abstract those parts. 15:10:40 Anyway it sounds like LINUX? identifies the OS, not the Forth. 15:11:24 Quartus: right, that why I asked about palm [ifdef] at second thought... 15:11:47 That would be useful only if Quartus Forth ran on more than one platform. 15:12:59 Quartus: or Forth source that wanted to know what platform it was running on... 15:13:39 You're talking about non-standardized interfacing to local libraries. Your source would have to identify both the Forth, and the platform. Doing this in conditional compiliation would be outrageously ugly. 15:16:27 Quartus: yes. FWIW Carbon MacForth defines POWERPC as a constant... 15:16:53 Because, I assume, Carbon MacForth supports more than one type of processor? 15:17:46 Quartus: supports OS9 as well as OSX if you want... 15:18:17 Quartus Forth is Palm OS-specific. You can query the OS to see the CPU type (68K or ARM), as you require. If Quartus Forth also ran on, I don't know, Symbian, then it would be useful to be able to tell which platform you were on. 15:18:26 which would allow it to support mc68000, and I guess useful for i386 in the future... 15:58:46 Heh. The #define for comparing against the processor ID, provided by Palm, is named sysFtrNumProcessorARMIfNotZero. 15:59:32 It's a bit-mask, in fact. 15:59:32 --- join: jcw (n=jcw@adsl-065-006-151-062.sip.asm.bellsouth.net) joined #forth 16:01:11 --- quit: virl (Remote closed the connection) 16:01:50 --- quit: k4jcw (Read error: 110 (Connection timed out)) 16:02:03 hey jcw 16:14:34 --- nick: nanstm -> Raystm2 16:17:19 --- quit: EdLin (Remote closed the connection) 16:17:49 hello 16:26:33 --- quit: Jim7J1AJH ("leaving") 16:28:39 --- part: Bushmills left #forth 16:43:20 hi 16:43:27 Hey. 16:43:27 hi 16:43:34 wow, snappy! 16:43:43 how're you guys doing? 16:43:52 Hanging in. You? 16:43:54 good 16:44:02 thanks 16:45:14 pretty good too, though there was a fight outside the house this evening -- had to ring the police. 16:45:28 That happen often? 16:45:35 Or you live near a rugby field? 16:45:36 it hasn't happened here before. 16:45:43 Another heated Keats vs. Yates argument? :) 16:46:00 heh; alas no. 16:46:01 Shakespear vs Bacon 16:46:09 Fosters versus Stella. 16:46:33 (i'm not sure how well that carries on the other side of the pond) 16:46:37 Python vs Java 16:46:46 THEY'RE BOTH LOSERS. 16:46:53 very good. 16:47:21 that aside, i tinkered with my qf list code some more, so you can now define a string list (and soon, all lists as) "{ this is a string list}" 16:47:24 Why would an Englishman argue the merits of Australian vs. Belgian beer? 16:47:41 --- join: Jim7J1AJH (n=jim@221x115x224x2.ap221.ftth.ucom.ne.jp) joined #forth 16:47:55 they're both curiously popular lagers over here. evidently, people like the taste of cheap (but reassuringly expensive) urinated beverages. 16:48:45 Reminds me of a (unrelated) saying we used to have at Hayes: "Yes, there are modems that are cheaper than Hayes. They cost less, too." 16:49:22 --- quit: segher (Nick collision from services.) 16:49:34 --- join: segher (n=segher@dslb-084-056-184-177.pools.arcor-ip.net) joined #forth 16:49:40 well, it's a two-edged sword -- most beers are overpriced, but that means the good ones are still affordable relative to the bathroom water. 16:50:09 I knew a guy who bought beer purely based on price. 16:50:20 He used to drink that Schlitz swill, as I recall. 16:50:25 I suppose that depends on whether you like beer, or just want to get drunk. 16:50:41 Quartus: precisely. and back we go to the heart of the fight. 16:51:14 good to know humanity's evolving. 16:51:28 i was worried for a second there. 16:51:45 I can't understand why anyone would care what the other guy drinks. Or codes in, for that matter. But I'm not John Doty. 16:52:38 true. i doubt my theory really stands up to reason. pumelling tends to avoid rational explanations. 16:55:06 isn't Coca-cola more expensive than beer in the US? 17:02:25 --- quit: jcw (zelazny.freenode.net irc.freenode.net) 17:02:25 --- quit: ohub (zelazny.freenode.net irc.freenode.net) 17:02:48 --- join: jcw (n=jcw@adsl-065-006-151-062.sip.asm.bellsouth.net) joined #forth 17:02:48 --- join: ohub (n=oherrala@sikw1.oulu.fi) joined #forth 17:20:00 vatic: what do cola & beer cost in NY? 17:21:06 zpg: I so rarely buy either. Spent $1.25 on a bottle of water out of a vending machine recently. Won't do that again... 17:22:26 ouch 17:22:53 vatic: incidentally, have you got the hang of factoring yet? 17:24:00 zpg: Not with any sophistication. I need more experience with Forth... 17:24:24 * zpg nods 17:25:00 i keep tripping up when writing definitions, stack juggling with much head scratching ("i'd >r here, but i may want that value inside an IF...") and so on. 17:27:56 zpg: Do you step through your words? 17:29:33 what do you mean? 17:30:59 zpg: Well you can just type a word interactively at the keyboard as you're writing it, examining the stack with .s and capturing little bits to a memo that you can't keep in your head. 17:33:07 --- nick: vatic -> vatic_away 17:35:07 i don't quite follow. 17:35:22 'capturing' in particular. 17:42:24 I don't diddle around at the console to build a word. I write incrementally (in a source file), testing as I go. If a definition gets too large, I factor, or build the appropriate layer of abstraction that's indicated by the factoring opportunity. 17:45:14 i tend to scatter .s's inside definitions to check things are working as expected, but my approach is still lacking in elegance, hence i get (on the palm) 10 line word definitions that really ought to be refactored so that each stage is easily followed. for example, tonight i worked on this: 17:46:13 http://ezil.sourceforge.net/latest/backskip.html 17:47:10 Naming is still the problem, for me. 17:47:31 backskip works its way from the end of the string; when it reaches the boundary character, the stack is left with (addr1 u1 addr2 u2) where the top two items are the string AFTER the split, the bottom two before. 17:47:39 want a critique? 17:48:07 this code uses backskip to scons each element to a list, so i use it in my definition of "{" to allow simple list creation. 17:48:09 Quartus: please. 17:48:22 what does ?string-end do? 17:49:07 gives you the address of the last character in the string. my pseudo-notation of ? is meant to imply that the stack won't be altered. 17:49:13 we just add the new address. 17:49:17 --- join: nighty_ (n=nighty@sushi.rural-networks.com) joined #forth 17:49:33 Ok, for a professional Forth programmer, that's really confusing. The leading ? suggests it operates conditionally. 17:49:42 'not altered' as in, you can safely pass an address-length pair without having to 2dup first. 17:49:49 Quartus: yes, i thought that might be the case. 17:49:54 Your factors should consume their arguments. 17:50:16 Quartus: ah ok, that's interesting. one problem was that the main definitions were filled with duplications. 17:50:28 It's a good rule to follow. 17:50:30 see "backskip" -- ugly! 17:50:34 also, "bl-split", ugly! 17:50:50 Ok, no comments in the code. So what does backskip- do? 17:50:59 i need to overcome this problem. at the moment (and this isn't suprising), i can't implement concepts as i get distracted with stack diagrams. 17:51:11 yeah sorry for no comments, it's kinda a private bit of hacking. 17:51:25 That's ok. What does it do? 17:52:23 backskip- (1) finds the character address to split at (as in, 'bl s" hi there" backskip-') and returns the address-length pair of the split onward. in this case, the stack would contain the equivalent of s" there". 17:52:24 --- quit: nighty__ (Read error: 60 (Operation timed out)) 17:52:57 i factored this out of the main "backskip", which then adjusts the original address by shortening its length. 17:53:07 So half of the juggling in backskip- is because the diagram is ( char c-addr u ). 17:53:14 yes 17:53:22 So make it ( c-addr u char ) 17:53:26 * zpg nods 17:53:39 i guess the interface for using backskip is now in the main backskip word. 17:53:56 And look into the common-usage SKIP, which does the same thing. 17:54:03 er, sorry. SCAN. 17:54:14 from the end of the string to the first instance? 17:54:34 You didn't say it worked backward. 17:54:55 " backskip works its way from the end of the string" 17:55:11 hence the name, backward-skip. 17:55:22 (shortened for graffiti purposes :) ) 17:55:50 Missed that. Ok. If you want to avoid the juggling, anyway, go with the example of SCAN and do a ( c-addr u char ). 17:57:00 neat, thanks for the tip. i hadn't really considered adjusting that. now, on this note -- how would you go about deciding on a comfortable stack layout for a word as you write it? (i.e., save on re-writing over and over to get concise definitions)? 17:57:36 Try it one way first; if you're tangled up, try it the other. 17:57:39 k 17:57:42 useful advice. 17:57:44 thanks. 17:58:01 What does backskip do? 17:59:26 essentially, get a chunk from backskip-, then adjust then address' length so that we now have ( -- "everything up until the skip character, such as space" "the skip character and everything to the end of the string") on the stack. 18:00:17 in other words "beginning until boundary" and "boundary to end" --> s" why hello there" gives ( -- s" why hello" s" there), in addr-length pairs of course. 18:00:24 I get to this stage and start to wonder why you're working backward. 18:02:19 simple. if i have the string "this is a list of items to be split into a string list", i start from the end of the string instead of the beginning. each time i hit a boundary, i can immediately cons the TOS, and carry on skipping backwards. this means that we have an efficient way of maintaining order. (as opposed to skipping and scanning, then reversing the list we create). another version i had uses skip/scan, and everything is placed 18:02:19 on the stack, but since TOS is the last token, it then gets consed first. 18:02:33 list order is presevered, but i didn't like the idea of loading the stack in that way. 18:02:44 Why not build the list and then reverse it? 18:02:59 i did that. this seems more direct. 18:03:19 besides, i thought this would be an interesting experiment. 18:03:43 Ok. If you want to split a string from the right to left, you can clean those words up quite a bit by using a c-addr u char diagram. 18:04:14 yeah, on the Palm screen, this diagram: ( c a u -- a1 u1 a2 u2 ) in full was rather hard to manage. 18:04:44 especially since i couldn't use multiline ( commenting. 18:04:46 a u c -- a1 u1 a2 u2 is what I'm recommending. 18:04:58 The order, not the spelling. 18:05:10 oh i see. i thought you meant ajusting the comments. yes, that tip is going to come in handy. 18:05:44 --- quit: arke (Read error: 104 (Connection reset by peer)) 18:07:45 So you think it's better for a function to consume it's argument, even if the calling routine needs it again? So the caller should dup it, rather than the function preserving it? 18:08:16 i second that question :) 18:08:32 3rd... ;-) 18:08:34 Yes. 18:08:37 --- nick: vatic_away -> vatic 18:09:10 Well. 18:09:20 That certainly trashes the way I've been doing it :) 18:10:14 Hurry up and finish that damn book! I need reference materials that aren't 20 years old! 18:10:19 heh 18:10:56 Quartus: are you working on a book? 18:11:10 I am. 18:13:30 Quartus' Qualified Quandaries Quantified Quickly & Quietly in QForth 18:13:41 Quartus: I think that's great! 18:13:57 heh 18:14:10 His slogan: "Quarty on, dudes!" 18:14:22 Quart not lest ye be quarted unto. 18:15:03 vatic, it's a work in progress. Targetting Standard Forth in general. 18:15:19 Do you have a publisher yet? 18:15:33 No. I'm writing it first. I'm interested in producing a specific book. 18:15:37 Q'Reilly, maybe? 18:15:41 heh 18:16:00 Quartus: are you offering it by subscription? :-) 18:16:11 Send me all your money, we'll talk. :) 18:16:18 oooh, I left out Quadratic. That would have been addable in the Q^7 title. 18:17:42 heh 18:17:52 any other comments on that code btw? 18:18:25 I stopped there while you re-write those factors, as the changes will improve the code up from there. 18:19:04 "I have a suggestion that may make it more readable. rm -rf *" 18:20:11 thankfully, the palm doesn't have a nix shell. 18:20:17 Quartus: yeah, that makes sense. 18:20:23 i'll re-work it tomorrow. 18:24:29 The Q'Reilly reminds me of a Saint Patricks Day beer commercial. "O'Mally, O'Reilly, O'hara..." "Beer Wolf, putting an 'O' in front of everything doesn't make it Irish." "O'really?" 18:24:38 heh 18:24:56 Coors Light. 18:25:06 O'Coors? 18:25:17 Are you old enough to remember Soroc terminals? 18:25:40 I'm old enough to remember when payphones took nickels. 18:25:56 Damn, you must be older than me. I only remember dimes. 18:26:29 'Soroc' is an anagram of 'Coors'. The logo for Soroc looks like the top of a beer can. They were made (or at least designed) in Colorado. 18:27:04 And, IIRC, they also used the 1802 processor, which was the first static CMOS processor (same family used in the Voyager spacecraft). 18:27:06 Drunken buggers. :) 18:27:15 Very funky but powerful architecture, for the time. 18:27:33 And like any good processor, there is a Forth for it. 18:28:08 http://neurosis.hungry.com/~ben/hardware/soroc/index.html 18:28:48 Light, too. Only 45 lbs. 18:28:55 Soroc light. 18:29:20 jcw, my browser scoffs at your url. 18:29:28 ? 18:29:33 server not found 18:29:47 I think your internet is broken. 18:29:53 Comes up without the index.html attached to it. 18:30:03 How odd. Works fine in Firefox. 18:30:25 With my high quality AMERICAN DSL. 18:30:30 http://neurosis.hungry.com/~ben/rocketry/firearrow.html 18:30:34 None of that "Rogers Cable" crap for me, buddy! 18:31:17 night all 18:31:22 cya zpg 18:31:30 --- quit: zpg ("night") 18:32:19 The launch site they use for their rockets is interesting. It's an abandoned Atlas missile site. 18:33:30 My father used to be stationed at the Redstone Arsenal. He was there when they dropped an unfueled Redstone down the silo. 18:33:32 It broke. 18:35:09 They expected it not to? 18:36:18 I don't think it was a planned test. I think some clamps failed or something like that. 18:36:43 Lucky it was unfueled. 18:39:23 Odd, though. I can't find where Redstones were silo based missiles. They seem to be freestanding launchers. I wonder if it was a different model of missile, but still at Redstone Arsenal. 18:40:15 I don't know many of the names of US military weapons. 18:41:10 I also wasn't aware that the Redstone was the first missile to carry a nuke. 18:41:54 31 July 58 A REDSTONE missile was fired to an altitude in excess of 200,000 feet and a nuclear device of a megaton was detonated. This was the first such accomplishment by the United States. 18:42:07 Whee. 18:42:21 I <3 Nukes 18:44:30 http://tinymicros.com/gallery/random/Mk41 18:44:50 50MT of "have a nice day" 18:45:21 I'm not a military aficianado of any sort. 18:47:08 I'm not either, really. I just like nukes because they have a bright flash and make pretty clouds. 18:47:28 I don't know much about military aircraft, tanks, armored vehicles, boats, etc. 18:47:44 I'm not particularly in favour of violence and death. I try to keep that to a minimum. :) 18:50:19 http://forth.pastebin.ca/218208 Would you like to tear this to pieces? 18:50:34 That sounds harsh :) 18:51:28 The stack comments on the last 8 words are not correct. 18:53:54 Looks like quite a few opportunities for factoring. You've got an overloaded + that works on strings, I see, so you could use that to build commands to send. "door 0" and "door 1" could be a "door" that takes a parameter. 18:54:17 I'm not happy with the nested if's in a couple of those. I tried factoring them, but didn't find them more readable. 18:54:32 Yes, I don't like those either. Can you not combine the values with AND or OR? 18:55:28 Not sure. There are a couple places where it returns a pair of parameters. If the second call fails, it needs to drop the previous ones. 18:55:28 I have no idea how your strings work, but I'd make a defining word for all those sendCommandEx dealies. So you could just say command: ftfMotorsClear "motorsclear" 18:56:31 What does "parseLEDsResults" do? 18:56:38 The name tells me nothing. 18:56:52 It parses the results of the LED comand. 18:57:15 I figured that. What does it do? 18:57:16 The LED command returns a string like "red=0,0 green=0,0 yellow=0,0" 18:57:25 I need those six values. 18:57:35 Right. So what does it do? :) 18:57:47 parses. Thats a verb, dammit. 18:57:55 And what does it do with what it parses? 18:58:02 --- quit: erider (Read error: 104 (Connection reset by peer)) 18:58:08 uh... returns them? 18:58:27 Then what's with the three nested conditionals? 18:58:48 Same thing. If it can't parse the complete string, it needs to drop the argument pairs all the way back. 18:59:00 That could be managed with a catch/throw, I suppose. 18:59:15 So it doesn't just parse, but returns the parsed values? 18:59:33 So it parses the red, gets 0,0. parses the green, gets 0,0. Tries to parse the yellows, but fails. I want the previous 4 arguments on the stack dropped. 19:00:09 What happens if they're not all there? 19:00:18 Returns 0. 19:00:26 As opposed to 6 values and a -1. 19:00:27 And that's an error condition? 19:00:33 Yes. 19:00:57 Then catch/throw would be a very good choice. Parse and collect values, throw only if you don't find the one you need. 19:01:08 I could do that. 19:02:00 --- join: erider (n=erider@unaffiliated/erider) joined #forth 19:02:01 BTW, in my mind, parsing implicitly means returning the results. Parsing and not returning anything would be not useful. 19:02:46 Well, you can certainly parse and do nothing on success, throw an error on failure, for instance when matching a syntax grammar. 19:04:03 That's true. I rarely deal with that. Most of the stuff I ever have to parse is the results to commands, and such. Mental modality. 19:04:19 I'd definitely factor things like ftfTargetPowerEnable into TargetPower ( flag1 -- flag2 ) 19:04:40 brb, dogs->out 19:04:41 then enable TargetPower or disable TargetPower 19:05:19 all the *clear words can use a common factor, too. 19:05:58 lo 19:06:08 Hey Christophe. How are you? 19:09:20 jcw, I also have an allergy to CamelCase as a rule, I'd hyphenate all those. 19:09:22 Quartus, I am fine thank you :) 19:09:50 --- quit: erider (Read error: 54 (Connection reset by peer)) 19:09:58 Quartus, wrong query :) 19:10:08 Quartus, I was talking to Quartus_ 19:10:13 Quartus, :) 19:10:15 Heh. 19:10:16 Still me. 19:10:57 did you send a pm? Quartus_ is on my blackberry, but nothing there. 19:11:14 --- join: erider (n=erider@unaffiliated/erider) joined #forth 19:15:00 I sent you a query on Quartus as well 19:15:16 Didn't get either one. Perhaps your nick is unregistered? Check your main status window. 19:15:25 arghh 19:16:26 I am now registered 19:16:31 :) 19:16:31 Just got it. 19:18:37 The only problem with hyphenating is that it makes word names that are already too long even longer. 19:18:48 Unfortunately, I need descriptive names there. 19:19:01 The stuff in the private words, that wouldn't be much of an issue. 19:19:09 you need ftf in front of half of them? 19:19:28 Yes. There are various interface portions. ftf is the Factory Test Fixture. 19:19:41 There's also dut's (Device Under Test), and ti's (Test Instruments) 19:19:55 It might be prudent to select the specific device via another word. Then ftf disable TargetPower, for instance. 19:20:40 or, preferably, ftf disable target-power :) 19:20:57 Leaves more room for error, though. The nice thing about atomic names is that all they can do is enable or disable. They can't pass bad parameters. Now, I could write type checking words in front of them, but it still makes them more ambiguous. 19:21:34 there's no need for parameter checking on something like disable target-power. just 0<> 1 and the parameter, convert to a string, append. 19:22:23 Except there is. If they don't have 'disable' or 'enable' in front, the word requires stack depth checking at the very minimum. 19:22:39 If you need it, it goes in the one central factor. 19:23:33 You get shorter names, factor the prefixes into one word, have significant savings as you don't need to re-implemented all the dut* and ti* versions. 19:24:29 Things like 'target-power' don't exist for dut's and ti's. At least, not currently. But it clearly indicates to the user who is reading it that it's an ftf namespace command. 19:24:46 Even if I also wanted to have ftfTargetPowerDisable and friends, I'd still build it as I'm describing, and build the WackyPrefixedCamelVersionsThatAreSupposedlyBetter on top of that. 19:25:03 That I can agree with. 19:25:33 If things like target-power don't exist for a certain prefix, they can report a meaningful message instead. 19:25:37 Oh, and Whacky wouldn't be capitalized :) 19:25:50 heh. Is your Forth case-sensitive? 19:25:53 no 19:26:01 At least there's that. 19:26:15 Actually, it can be, as there's a switch. But it's off by default. 19:27:15 The very nice thing about an ftf and dut and ti prefix is that you could code ftf enable target-power open door ... etc. 19:27:25 I assume 0 and 1 for the door are some kind of action on the door, right? 19:27:31 The names door0 and door1 don't inform. 19:28:37 It sets the state of the door control line to either 1 or 0. The nomenclature is standard within our company, so saying 'door 1' to someone, they'd know what you're talking about. 19:29:18 ok. So 1 door in that case. But you see what I mean, ftf needn't be specified for all actions. 19:34:20 \o/ I'm outside of the box 19:37:19 Eh, I don't agree on that. Take the Palm. Form handlers, etc all start with 'frm'. It's like a class specifier. There's never a question what the command will affect. I think for the publicly exposed routines I'll stick to something that indicates the class/module/device/whatever it affects. I do agree with factoring them down internally, however. I may go with 'ftf.door-0' or 'ftf.piezo-clear' as naming conventions, however. 19:37:38 I would not reference the Palm API as an example of good naming. 19:38:14 It's typical. Windows is the same way, as is GLU, mySQL's C API, etc. 19:38:39 Right. C. veryVeryVeryLongCamelCaseNames, functions that take twelve arguments, etc. 19:38:40 Not Forth. 19:47:11 Basically, for programming, I agree. As these are the exposed interface to peoples who are not programmers, but think they're writing in a scripting language, this method is better. 19:47:14 --- join: I440r (n=mark4@65.244.197.34) joined #forth 19:47:15 And I go to bed now. 19:47:25 Later! 19:48:26 see y'all! 19:48:37 --- quit: vatic ("*poof*") 19:54:57 chao 20:03:10 --- quit: erider ("I don't sleep because sleep is the cousin of death!") 20:27:52 --- join: jeremy_c (n=jeremy_c@cpe-71-74-145-210.neo.res.rr.com) joined #forth 20:57:12 Anyone know of a good vim mode for forth? 20:59:06 hehe i have an evil answer :) 20:59:14 emacs? 20:59:20 that sentence is mutually exclusive with itself lol 20:59:25 ewwww no lol 20:59:30 i use joe :P 20:59:35 I like joe. 20:59:52 :) 20:59:52 esp with new versions supporting syntax highlighting, macros, etc... 21:00:02 I wrote a ...scf? Is that the extension? Highlighter for Forth in joe. Not a sophisticated one. 21:53:58 --- quit: nighty_ (Read error: 110 (Connection timed out)) 22:05:51 --- join: nighty_ (n=nighty@sushi.rural-networks.com) joined #forth 22:26:50 --- join: arke (n=Chris@pD9E050B0.dip.t-dialin.net) joined #forth 22:26:50 --- mode: ChanServ set +o arke 22:27:30 --- join: arke_ (n=Chris@pD9E050B0.dip.t-dialin.net) joined #forth 22:27:50 --- part: arke left #forth 22:27:59 --- nick: arke_ -> arke 22:28:09 --- mode: ChanServ set +o arke 22:37:01 --- join: Cheery (n=Cheery@a81-197-19-23.elisa-laajakaista.fi) joined #forth 22:48:58 --- quit: JasonWoof ("off to bed") 22:49:47 --- join: TreyB_ (n=trey@cpe-66-87-192-27.tx.sprintbbd.net) joined #forth 23:04:07 --- quit: TreyB (Read error: 110 (Connection timed out)) 23:24:14 --- quit: arke (Read error: 110 (Connection timed out)) 23:42:10 --- join: arke (i=Chris@x249.vpn.hrz.tu-darmstadt.de) joined #forth 23:42:10 --- mode: ChanServ set +o arke 23:59:59 --- log: ended forth/06.10.23