00:00:00 --- log: started forth/06.10.12 00:12:27 --- quit: JasonWoof ("off to bed") 00:15:10 --- quit: segher (Read error: 60 (Operation timed out)) 00:17:08 --- join: segher (n=segher@dslb-084-056-128-253.pools.arcor-ip.net) joined #forth 00:19:59 --- join: crest_ (n=crest@p548967AA.dip.t-dialin.net) joined #forth 00:24:28 --- quit: madgarden (Read error: 104 (Connection reset by peer)) 00:29:15 --- join: Cheery (n=Cheery@a81-197-19-23.elisa-laajakaista.fi) joined #forth 00:29:31 --- quit: Crest (Read error: 110 (Connection timed out)) 02:07:03 --- quit: virsys (Read error: 110 (Connection timed out)) 02:25:39 --- quit: arke (Read error: 131 (Connection reset by peer)) 02:33:57 --- join: arke (n=arke@pD9E04AEF.dip.t-dialin.net) joined #forth 02:40:59 --- quit: Joely (Read error: 110 (Connection timed out)) 03:33:42 --- quit: arke (Read error: 110 (Connection timed out)) 03:47:45 --- nick: crest_ -> Crest 04:07:41 --- join: zpg (n=user@user-54474b80.wfd86a.dsl.pol.co.uk) joined #forth 04:08:24 morning. 04:08:30 or afternoon, depending. 04:28:27 --- quit: Quartus (Read error: 104 (Connection reset by peer)) 04:50:28 --- quit: madwork (Read error: 110 (Connection timed out)) 05:56:08 --- join: madwork (n=foo@204.138.110.15) joined #forth 06:09:12 * Crest is back (gone 05:49:21) 06:10:12 --- quit: Cheery (Read error: 110 (Connection timed out)) 06:23:14 --- quit: segher (Read error: 60 (Operation timed out)) 06:25:17 --- join: segher (n=segher@dslb-084-056-204-038.pools.arcor-ip.net) joined #forth 06:38:05 --- join: jc (n=jcw@adsl-074-238-180-251.sip.asm.bellsouth.net) joined #forth 06:38:22 Wow. No Quartus or Quartus_? 06:42:48 --- join: JasonWoof (n=jason@c-71-192-33-206.hsd1.ma.comcast.net) joined #forth 06:42:49 --- mode: ChanServ set +o JasonWoof 06:46:21 --- join: virl (n=virl@chello062178085149.1.12.vie.surfer.at) joined #forth 07:14:35 --- join: virsys (n=virsys@or-71-53-67-136.dhcp.embarqhsd.net) joined #forth 07:30:20 --- join: Ray_work (n=Raystm2@199.227.227.26) joined #forth 07:40:40 Anyone know of a decent free stopwatch for a Palm? 07:47:17 bigclock 07:51:46 gosh Anbidian: I had something I wanted to ask you a day or so ago... yikes I don't recall what it is. 07:51:53 OH OH 07:52:11 it'll come back to you when you stop trying to recall 07:53:06 I got it. 07:53:43 Isn't it possible to do a little search proggy that will automate the links you want for your Forthlinks site? 07:53:58 automate how? 07:54:05 you mean something that crawls the net for forth links? 07:54:10 well, for instance .. ya 07:55:31 Quartus put up a little search term the other day that brought up a lot of great links. By refining it, you might find every forth link on earth, and then beable to keep up with those that disappear. 07:55:48 I have ways for autmoatically finding dead links 07:56:02 and I've manually searched for forth links and have gotten the majority of the high ranked ones 07:56:08 cool. 07:56:18 now just to get those people to link to you. 07:56:20 the system you're proposing, while I like the sounds of it, sounds very complex, at least out of my reach 07:56:31 I see. 07:56:36 I'm sure there are many obscure non-google-indexed links I am missing 07:56:45 right. 07:58:07 though I'm going to let them find me :p 07:59:57 Anbidian, thanks. I'm new at this Palm stuff. There's a PDB and PRC file. Do I just drag those to the installer application? And do I need both, or just one 07:59:57 ? 08:01:48 i'll be new at the palm stuff sometime next week. 08:02:05 you need both 08:02:14 You bought one off of eBay, IIRC, Ray_work ? 08:02:20 K, thanks. 08:02:23 jc, what palm did you buy? 08:02:43 I found a Palm V in a box of junk. With a leather case and cradle. 08:02:55 nice. Palm V/Vx is stil my favorite palm. 08:02:59 Apparently we made a stab at using them in some sort of product, and it failed. 08:03:22 what other programs do you think you will want on it jc? 08:03:26 The writing pad has seen some abuse, but it seems to work fine. 08:03:50 I don't know. I installed Quartus' eval version of Forth (of course!). And I got it syncing my outlook contact list. 08:03:55 Other than that, I don't know what I'll do with it. 08:05:01 jc believe it or not, just mentioning that I would like to try Quartus Forth and that I didn't have a Palm, is getting me one for the freight to get it here. 08:05:46 --- join: Quartus (n=trailer@CPE0001023f6e4f-CM013349902843.cpe.net.cable.rogers.com) joined #forth 08:05:46 --- mode: ChanServ set +o Quartus 08:05:46 Anbidian: the one I'm getting is a Vx. It's your fav? can you say why? 08:05:48 I have an m100 or m105 in a box somewhere. Overall, my experience with PDAs (including a HP 200LX, Palm m10x, T-Mobile MDA, and ... something else) have been less than overwhelming. 08:06:12 The 200LX was the closest to the best. I think what I really want in a PDA is portable computer. 08:06:55 Hi Quartus 08:07:04 Hey hey. What's up? 08:07:21 Zaurus was the other PDA-like think I had. 5000D, IIRC. 08:07:49 Ray_work, small, elegant design, and simplicity (later palms use a more complex OS) 08:08:12 I find it disturbing that you cannot apparently truely close an application. Unless I'm doing something wrong. 08:08:14 also, long battery life 08:08:18 Quartus, a Palm is in my future. 08:08:23 Good deal! 08:08:26 Thanks Anbidian, 08:08:32 jc, can't close an app? on what, a Palm? 08:08:39 Yes. 08:08:56 I have 6GB of palm apps backed up on DVD :| 08:09:08 Quartus a Quartus forth palm chess is in your future. hehe. :) 08:09:29 Ah! :) That's interesting to hear you say. The Palm's app design philisophy is supposed to give that impression, but in fact only one app is ever running, and when you're back at the launcher, it's closed. 08:09:35 Ray_work, sounds good. 08:09:59 It's my helloWorld ap, as you may well know. 08:10:08 I have heard this. 08:10:11 I hate that. It's inconsistent with my world-view of how apps should operate. 08:10:35 jc, the apps close completely when you leave them. They re-open in the previous state. Quartus Forth is a noteable exception, it starts clean. 08:10:56 Which could be a problem if you accidently press a button, right? 08:11:09 For Quartus Forth you mean? 08:11:23 Yes 08:11:31 jc: I've found that design to be most well thought out 08:11:33 It's not, as you're not building your app at the console. 08:11:50 Well, yea. But if you're typing at the console, it would be an issue. 08:12:03 But then, if you're not typing at the console, it's not really running now, is it? 08:12:14 I'm not quite following. 08:12:50 I don't know the Palm terms, but if Forth doesn't have focus, it's not running. 08:12:59 That's correct. 08:13:18 The Palm, aside from a few OS threads, is single-tasking. 08:13:25 Makes sense. 08:14:06 Quartus Forth has a command history buffer, so nothing you've typed vanishes. 08:14:21 Well, not 'nothing', but it goes back a way. 08:15:31 jc, you might like a program called "yauc" (yet another unit convernter) 08:15:50 I'll search for it. 08:17:13 http://palmsource.palmgear.com/index.cfm?fuseaction=software.showsoftware&prodid=37832 08:17:15 Oooh, bigclock is pretty. 08:17:26 I stil use bigclock for my alarmclock 08:17:42 lets you set 4 alarms (though it helps if you modify the sounds so the replay a ton of times, at least if you sleep as heavily as I do) 08:17:51 Contrast the WinCE PDAs, on which apps really do keep running in the background if you don't shut them, which is substantially annoying. 08:18:39 WinCE has some neat ideas, but I'm still not overly fond of it. 08:18:54 Quartus, do you own a WinCE PDA? 08:19:02 Anbidian, I have a couple kicking around. 08:20:21 don't use them frequently? 08:20:55 Don't use them at all. I was subjected to WinCE devices professionally for a couple of years. 08:21:15 "subjected" that says it all ;) 08:21:32 :) indeed 08:21:51 even the word 'smart phone' makes me itch now. 08:22:13 I had a T-Mobile MDA for about 2 weeks. It was an OK PDA, but a right lousy phone. 08:22:53 --- quit: Quartus (Read error: 104 (Connection reset by peer)) 08:23:26 --- join: Quartus (n=trailer@CPE0001023f6e4f-CM013349902843.cpe.net.cable.rogers.com) joined #forth 08:23:26 --- mode: ChanServ set +o Quartus 08:25:12 YAUC is nice, also. 08:25:22 wb Quartus 08:25:27 hey. Did I miss anything? 08:25:29 *nods* useful at times 08:25:35 [09:22] * Quartus has quit IRC (Read error: 104 (Connection reset by peer)) 08:25:35 [09:23] * Quartus has joined #forth 08:25:35 [09:23] * ChanServ sets mode: +o Quartus 08:25:37 no 08:25:57 No Palm user is complete without the SCX Calculator, and it's written in Forth, so it's your patriotic duty to install it immediately. :D 08:26:18 You're supposed to say "Well, stopped by asking about you, so you missed that." 08:26:35 Hot starlets are trouble. So that's ok. 08:26:45 hahah, AMEN 08:26:53 Something about a paternity suit. 08:27:06 * Anbidian randomly curses women under his breathe 08:27:21 speaking of which, I have to cook supper for one tomorrow :| that's going to be bad for both of us 08:29:55 --- quit: I440r (Client Quit) 08:43:54 heh 08:51:36 Anbidian, mac+cheeze from a box !! :) 08:51:39 ick 08:51:44 i cant even eat that stuff lol 08:51:50 lol, I can, but she hates it 08:51:58 im with her on that one 08:52:05 sure, take her side 08:52:11 heh 08:52:22 what's a simple, fast, easy, good tasting dish to make 08:52:47 do REAL mac and cheese and use a 50/50 mixture of mac and cheeze - put mashed up plum tomatoes in there too 08:52:54 and maybe some tuna 08:53:06 use SHARP cheddar 08:53:36 after you have mde it sprinkle some cheeze on top and bake it to make the top go krunchy :) 08:53:41 mmmmmm hamburger helper tuna 08:53:46 that's some good stuff 08:54:00 Seriously? Check out foodnetwork.com's recipes section. 08:54:01 it is. but real mac/cheeze is better lol 08:54:04 i don't even have milk 08:54:09 i've been eating my cereal dry 08:54:19 Milk ruins cereal. 08:55:07 Rachael Rays 30 minutes meals have some good receipes that are simple and tasty (even if her voice does grate like sandpaper) 08:55:29 thanks for the link jc 08:55:37 I also like cooks.com 08:55:57 I started learning to cook back in Feburary. I've used those two sites a lot. 08:57:14 whats your fav recipe jc? 08:57:34 Hmm, hard call. 08:57:48 Cheesecake! 08:58:09 Oh, Alton Brown's Good Eats section has a lot of stuff. His show is addictive. 08:58:18 A lot about the science of cooking. 08:58:20 nutricious and delicious ;) 08:58:57 I'm not sure what my favorite recipe is, to date. I really like the Chicken Cordon Bleu. That's pretty easy to make, also. 08:59:34 http://del.icio.us/jcwren/recipes I've made many of these that I've bookmarked. 09:00:04 http://www.cooks.com/rec/doc/0,1826,135186-245193,00.html Chicken Cordon Bleu 09:03:48 that's the first time I've sen del.icio.us in use 09:05:00 rachael ray is HOT !!!!!! 09:05:05 she can cook for me any day :) 09:06:18 argh why did they rename !> to "to" thats just WRONG grrrr 09:06:52 You can have Rachael. I'll take Gianna DeLaurentis any day. 09:06:56 When was !> ever anything anywhere? 09:07:22 fpc 09:07:29 and ive seen it in other places too 09:07:32 but it makes more sense 09:07:36 FPC only, then. It's not in any current or previous standard document. 09:07:39 ! is pronounced STORE and > is pronounced to 09:07:46 I've never heard of Rachael Ray before 09:07:52 it predates the standard document 09:07:59 erm the ans standard that is 09:08:08 It isn't in FIG, 79, or 83. 09:08:12 i know 09:08:20 but ive seen it in various forths 09:08:35 and like i said it makes more sense forthwise store.to 09:08:38 not "to" 09:08:46 to is incomplete 09:09:04 Do you make a lot of use of VALUEs? 09:09:08 its a storing operation so it should say so. just like display operations should be .blah 09:09:13 i dont call them values but yes 09:09:23 value is another bad name imho 09:09:23 Hmm. I rarely do. 09:09:49 Quartus: What is the most complex application writen in Quartus Forth to date? 09:09:52 !> can be used on defered words too 09:09:59 but i have an alias of !> called IS 09:10:02 ' foo is bar 09:10:37 Anbidian, hard to say. There have been some large apps. Not everybody lets me know what they build, of course. :) 09:11:10 how complex can a handheld app be heh 09:11:12 What's an example of a large app that you know about? 09:11:31 I440r_, how complex do you want it to be? ;0 09:11:38 heh 09:11:50 as simple as gets the job done ? 09:12:24 ah, then you should take the minimalist approach: program in binary 09:12:25 Apps on handhelds can be substantially complex. The hardware in these devices is competitive with desktop hardware. Even the first Palm had as much power as a Mac Classic. 09:12:47 i know but not as much memory 09:13:32 I haven't seen a PDA with gigabytes of actual RAM, yet. 09:15:16 god clf sure does waffle on about nothing alot 09:15:30 Quartus, you just give winCE some time ;) 09:15:31 tho... we do too heh 09:15:43 its not called wince for nothing 09:16:17 The only reason you haven't is because PDAs generally use static RAM for it's low power requirements. 09:16:26 And it's not nearly as dense on silicon as dynamic RAM. 09:16:45 Expedition ES comes to mind, Anbidian. 09:16:48 --- join: neceve (n=claudiu@unaffiliated/neceve) joined #forth 09:16:55 And bit for bit, dynamic RAM runs a lot cheaper. 09:17:28 But there's no particular limit on the complexity of a PDA app. Not all that many apps need scads of memory. 09:17:47 Quartus: any "large" games written in Quartus? 09:18:16 Anbidian, some sizeable graphical adventure-type games have been. 09:18:29 did they contribute libraries? 09:18:51 My guess would be that most PDA apps are limited by screen real estate. As a general rule, people want more on a screen, and that leads to greater complexity. Not a rule, certainly, but I bet if PDAs had 1024x768 screens, you'd see a lot more complex applications. 09:18:53 No game libraries. Some may provide source. 09:19:09 jc, visually complex, maybe. 09:19:15 I'm not sure that's a boon. 09:19:38 more visuyally complex games are less playable 09:19:55 the games industry things eyewash is more important than playability 09:20:08 Functionally complex, also. Look at mapping applications. How much can you do on a 240x160 screen that's useful, mapping-wise? Create a 1024x768 screen backed with a some decent flash storage, and you've got a navigation app that's useful. 09:20:20 Same for mail readers, word processors, editors, etc. 09:21:06 Most every handheld GPS has a small screen, and they do pretty well. Much comes down to how easily you can zoom and pan. 09:22:13 Large screens add size and weight, and eat battery. 09:22:24 --- join: Quartus_ (n=Quartus_@209.167.5.1) joined #forth 09:22:25 --- mode: ChanServ set +o Quartus_ 09:22:37 My experience with handheld GPSs (and that's a fair amount, actually) is that they're pretty limited. Yes, you can pan, and zoom, but you're still highly limited by the screen itself. Not so much for "I am here", but for situational awareness at the street level, and looking for POI's, such as restaurants and ATMs. 09:23:02 check out the garmin ique 3600 09:23:04 I am not arguing the merits or lackthereof of a larger screen from a hardware standpoint. 09:23:06 thats the gps i have 09:23:12 but they fit in a pocket. 09:23:45 Indeed they do. 09:23:45 it has a large display - its basically a palm with a gps 09:25:05 at any rate, usability and complexity are not the same thing. 09:27:32 I'll throw out a last example, and leave it at that. Ever used Quicken? It's a complex app. But it wouldn't be usable on a 320x160 screen. Admittedly a (simple) web browser need not be complex, but without at least a QVGA screen, it's basically unusable. While I agree they're not the same thing, I think there is a fair amount of coupling. 09:27:32 an app can be extremely complex, yet easy to use; simple, but hard to use, etc. 09:29:05 I browse on a Blackberry quite often; it's usable. It's nicer to browse on a larger screen, but really small screen size just means more scrolling. 09:29:40 likewise for spreadsheets, or word processing. You can see less on the screen, so you scroll more often. 09:32:14 I've been forced to vnc from a pda to a PC -- again, slower to get around. But doable. 09:34:09 i've IRC'd on my TX before, it wasn't too bad an experience 09:34:57 heh a friend of mine ssh's to his pc from his phone lol 09:35:16 ssh would be easier to handle visually than vnc 09:35:23 phone screen :| 09:35:32 I'm irc'ing on a Blackberry right now. 09:35:36 its a blackberry actually 09:35:47 or was. he sold that and got something else but i cant remember what 09:35:54 Quartus: :| you don't mind the tiny keyboard? 09:36:05 no, used to it. 09:36:12 I have ssh on here too. 09:37:53 I have entirely too much blackberry expertise, spent years on 'em professionally. 09:38:37 I didn't know that. How do you like them relative to Palm? 09:39:03 everything from the back-end servers to writing push-data apps. 09:39:38 they're a different animal. Hard to compare. Not hobbyist friendly. 09:39:49 ever get to use any forth professionally? 09:40:01 yes, quite often. 09:40:22 --- join: snowrichard (n=richard@12.18.108.162) joined #forth 09:45:09 --- quit: Quartus (Read error: 104 (Connection reset by peer)) 09:54:02 --- quit: snowrichard (Remote closed the connection) 09:54:47 --- join: snowrichard (n=richard@12.18.108.162) joined #forth 09:55:02 hi 09:55:59 Grettings snowrichard. 10:13:30 OK, data handling question time. I have a function that needs 12 32-bit words. These are bit map for each day of a month. A calling function needs to supply a years worth. Is there any compelling reason not to pass these on the stack, in spite of it being a lot of data? 10:15:10 I recommend passing a pointer to a data structure, and writing access words for it. Abstraction. 10:17:26 That would seem to imply the calling function would need to call set-Jan set-Feb set-Mar, etc. 10:18:10 The month can be passed as a parameter to a single 'set' word. 10:19:18 That's another way. More to the point was the calling function having to invoke that for each one it wanted to change. Which will always be all of them (there will never be a case where only September is updated, for example). 10:20:15 yes, but you have to modify the data structure somehow no matter where it's stored. You'll have a better time of it in memory than on the stack. 10:20:31 I'll grant that. 10:20:58 The a factor should probably take a pointer to a month. That way you can walk the the year in a loop. 10:21:15 s/The /Then / 10:21:20 and you absolutely want to abstract the access words for the data structure, in case you need to modify the structure later. Don't want the logic scattered throughout your app. 10:29:52 * Ray_work way behind in the convo... 10:29:59 zaterians... 10:30:32 Makes an easy quick side dish for just about anything. 10:54:34 I wonder why no one (that I know of) has built an IR transciever into a USB keyboard. 10:55:51 I've never seen one. 11:00:50 IR keyboards, yes. 11:07:26 did you try the cradle sync, jc? 11:12:47 --- join: Cheery (n=Cheery@a81-197-19-23.elisa-laajakaista.fi) joined #forth 11:13:14 --- quit: Anbidian () 11:14:16 Yes, all works well. I have the eval version of your Forth installed, YUAC, and BigClock. 11:14:23 And synced with OutLook 11:14:33 good. 11:15:33 I recommend hackmaster + switchhack, streakhack (for speed) and any others you fancy. If it's the V we're talking about. 11:15:39 Now all I have to do is figure out something useful to do with it. 11:15:43 It is the V. 11:16:02 And after I install everything, I'll have 768 bytes left for playing. 11:17:03 you'd be surprised. Palm stuff's pretty small. 11:18:06 hackmaster's 9k, my modules are 1k ea or so. 11:18:51 "SwatchHack"? 11:19:18 that's a clock novelty. Switchhack. Not mine. 11:19:43 It says SwatchHack on your quartus.net page. 11:19:43 different vowel :) 11:20:34 --- join: Quartus (n=trailer@CPE0001023f6e4f-CM013349902843.cpe.net.cable.rogers.com) joined #forth 11:20:34 --- mode: ChanServ set +o Quartus 11:20:52 Yes. I wrote SwatchHack. What I am recommending is SwitchHack. 11:21:32 Ah, I misparsed the "Not Mine" 11:24:28 You can get a free speed increase out of my StreakHack on the V. 11:25:04 It lowers the LCD refresh rate, and so the bus utilization drops. 11:25:13 The display actually gets clearer. 11:33:23 --- nick: Raystm2 -> tiff 11:37:03 I've installed them all, but the backlighting one doesn't seem to act as I thought it would. Should it be checked or not in the hackmaster setup? 11:37:23 checked. LightHack, you mean? 11:37:37 Yes. 11:37:57 And with streakhack checked, I have to crank the contrast all the way to the left to see it at all. 11:38:18 yes you do. The contrast adjustment is normal. 11:38:43 it'll bench out about 11% faster with streakhack. 11:38:45 With the backlight on, if I check then uncheck lighthack, should I see a difference? 11:38:52 saves battery life too. 11:39:19 no, you'd need to turn the backlight off and back on to see the difference. 11:39:30 Ah, there we go. 11:39:43 I thought I had tried that. 11:44:03 OnBoard C Compiler 2.4.2 11:44:04 Heh 11:44:37 yes, a tiny k&r c with certain quirks. 11:49:29 Now I want a Palm V GPS adapter. 11:50:07 I can't recall if there were any. That'd be hard on the battery life. 11:50:26 http://www.the-gadgeteer.com/review/streetfinder_gps_for_the_palm_v_review 11:50:43 --- quit: tiff (Read error: 104 (Connection reset by peer)) 11:51:09 I am less interesting in the mapping abilities than I am a basic lat/long/speed/etc display. 11:51:28 Ah I recall. Sled-like affair. 11:53:38 --- join: Raystm2 (n=NanRay@ppp-70-248-34-141.dsl.rcsntx.swbell.net) joined #forth 11:58:13 yes, but any gps receiver uses a fair amount of power. 12:02:09 --- quit: Quartus (Read error: 104 (Connection reset by peer)) 12:02:21 --- join: Quartus (n=trailer@CPE0001023f6e4f-CM013349902843.cpe.net.cable.rogers.com) joined #forth 12:02:21 --- mode: ChanServ set +o Quartus 12:04:18 hi chaps. 12:04:24 hi zpg 12:04:40 hey Quartus 12:04:58 just did a quick scroll scanread of the above. got any nifty apps on your site for the palm? 12:05:16 the sort that i'm not looking for in particular but would go 'ah, cool' to? 12:05:33 I sell the SCX Calculator, for one. I've never set up a global repository of Quartus Forth apps. Some can be found on PalmGear. 12:06:10 under 'bridges'? 12:07:09 No, by searching for Quartus. 12:07:17 I don't sell anything through PalmGear. 12:07:29 ok, shall check in a bit. 12:07:39 just going to finish my beer downstairs first :) 12:07:46 hops based priorities and all that jazz. 12:07:54 k 12:08:24 Some apps written with Quartus Forth don't advertise the fact, so they're Forth in stealth mode. :) 12:08:42 heh heh 12:08:43 neat. 12:09:36 right, back shortly. 12:09:42 Quartus Forth apps don't have a run-time library, or any special requirements; they're just executables, so there's nothing external to show it. 12:09:53 oh, that's good to know. 12:10:05 shall continue this discussion in a short while. talk soon. 12:21:29 --- quit: Quartus (Read error: 104 (Connection reset by peer)) 12:22:06 --- join: Quartus (n=trailer@CPE0001023f6e4f-CM013349902843.cpe.net.cable.rogers.com) joined #forth 12:22:06 --- mode: ChanServ set +o Quartus 12:22:19 That's annoying. 12:31:57 --- quit: Cheery (Read error: 110 (Connection timed out)) 12:56:31 --- quit: neceve (Remote closed the connection) 12:59:03 --- join: slava (n=slava@CPE0080ad77a020-CM000e5cdfda14.cpe.net.cable.rogers.com) joined #forth 12:59:04 --- mode: ChanServ set +o slava 13:18:29 --- join: erider (n=erider@unaffiliated/erider) joined #forth 13:22:08 hi all 13:22:26 Quartus: THINK!!!! 13:26:23 --- quit: erider (Read error: 104 (Connection reset by peer)) 13:27:47 EXTREAM ADDICTION WARNING ( flash game ) http://www.deviantart.com/deviation/40255643/ 13:28:45 --- join: erider (n=erider@unaffiliated/erider) joined #forth 13:29:58 hi 13:30:48 hi erider, I'm playing line rider, you just missed my link to it ... 13:30:57 http://www.deviantart.com/deviation/40255643/ 13:31:16 hmm 13:31:32 Its addictive. 13:35:48 --- join: Cheery (n=Cheery@a81-197-19-23.elisa-laajakaista.fi) joined #forth 13:39:52 hi Cheery 13:40:00 hi 13:50:59 --- quit: timlarson (Read error: 110 (Connection timed out)) 14:03:35 --- join: Cheer1 (n=Cheery@a81-197-19-23.elisa-laajakaista.fi) joined #forth 14:04:35 --- quit: Cheery (Nick collision from services.) 14:04:40 --- nick: Cheer1 -> Cheery 14:09:38 FOOLS!!! 14:10:37 --- quit: snowrichard ("Leaving") 14:16:00 Why? Because I won this? http://www.journeyofhearts.org/jofh/kirstimd/tshirt.htm 14:16:09 er, no. 14:16:24 back for a few mins -- neat QF apps on palmgear. 14:16:34 http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&ih=005&item=150043242763&rd=1&sspagename=STRK%3AMEWN%3AIT&rd=1 14:16:35 This 14:17:18 I was willing to go $50.05 on it. 14:17:24 Damn close. 14:25:46 Quartus? fools? 14:26:20 LUDDITES!!! NewForth OpSys, 100% integrated, no apps, all kernel... WXP, C+ will be obsolete just wait 14:26:54 Werty is the best systems programmer in thr world, you know. 14:27:00 yeah 14:28:38 moonshine donkey WRISTWATCH! Oh wait, maybe that's jacko. 14:29:48 slava Quartus hehe 14:30:45 PYTHON!!!! No, sorry, that's Doty. It's so hard to keep track. 14:31:25 import 14:31:26 import 14:31:28 import 14:31:32 * zpg has a wet-dream pertaining to import 14:31:33 import! 14:31:43 (and so on) 14:32:52 "Everything anyone says warrants a fully verbose reponse spanning multiple posts, filled with vague maunderings.". Who's that? :) 14:34:46 heh 14:36:24 werty takes the cake, though. In fact, he is the cake. Fruitcake. 14:37:32 currants and all. spare no icing. 14:38:26 Cor! Ants and all. Gone spare. I sing. 14:38:45 :) 14:39:25 which bit of ol' blighty are you in, zpg? 14:39:38 le Cambridge. 14:39:56 more tweed per capita than any other place in the UK 14:40:54 my ancestors are from less tweedy bits. 14:41:27 wherabouts? 14:43:03 within the sound of the bow bells. 14:43:20 :) 14:43:27 how many generations canadian are you then? 14:43:55 1st. 14:45:21 ah ok. still got relatives floating around here? 14:45:35 oh yes. 14:45:37 good evening 14:45:42 hi crc 14:45:42 hi crc 14:45:42 hi crc 14:45:50 (belated hey to slava) 14:47:08 hi Q 14:47:20 and slava, zpg 14:47:34 hi. 14:48:00 --- quit: Cheery ("Download Gaim: http://gaim.sourceforge.net/") 14:49:10 --- quit: jc (Read error: 110 (Connection timed out)) 14:49:21 back shortly. 14:54:04 k 14:54:38 I recently read that all the hi and byes are not usually put up with in chat. 14:54:47 I don't find that experiance to be true. 14:56:29 we're a pretty loose group. 14:56:38 --- quit: Quartus (Read error: 104 (Connection reset by peer)) 14:56:59 closing time... 14:57:42 --- quit: Ray_work ("User pushed the X - because it's Xtra, baby") 15:07:25 --- join: vatic (n=chatzill@pool-162-84-156-148.ny5030.east.verizon.net) joined #forth 15:09:52 --- join: Quartus (n=trailer@CPE0001023f6e4f-CM013349902843.cpe.net.cable.rogers.com) joined #forth 15:09:52 --- mode: ChanServ set +o Quartus 15:13:23 --- quit: I440r_ (Connection reset by peer) 15:47:56 back. 15:51:51 --- join: I440r (n=mark4@67.135.84.40) joined #forth 16:05:40 nice ==> 16:05:43 ll @ .list 16:05:43 ( 10 11 12 13 14 15 ) ok 16:05:43 l @ .list 16:05:44 ( 1 2 3 4 5 6 7 ) ok 16:05:46 l @ ll @ append-list ok 16:05:50 .s <1> 1049424 ok 16:05:53 dup .list 16:05:56 ( 1 2 3 4 5 6 7 10 11 12 13 14 15 ) ok 16:06:07 * zpg (append list is 3 words long, hoorah!) 16:06:24 All in Quartus Forth I trust? 16:06:24 still need to transfer to using constants as Quartus_ suggested. 16:06:29 heh, gforth still i'm afraid. 16:06:32 dang :) 16:06:35 heh heh 16:06:47 waiting for palm keyboard before serious QF hacking begins. 16:06:55 that and my housemate has discovered OpenChess on the palm. 16:07:53 god, forth is nice: 16:07:58 : append-list over list-last cdr! ; 16:08:25 non-modifying append would be fine too ... when a clean copy-list is in place. 16:08:37 think i've got one in mind though. 16:16:12 zpg: hey, what wrong with the stylus? ;-) 16:16:18 what's 16:16:19 --- quit: virl (Read error: 104 (Connection reset by peer)) 16:17:18 neat --> 16:17:25 l @ ll @ append-list-copy ok 16:17:25 .list 16:17:25 ( 1 2 3 4 5 6 7 11 12 13 14 15 ) ok 16:17:25 l @ .list 16:17:29 ( 1 2 3 4 5 6 7 ) ok 16:17:47 vatic: nothing i guess, it's just that i'm still in an early phase of learning forth, and backspacing quickly and comfortably is really a good crutch to have ;) 16:17:59 Yes, it's possible to treat any node as the head of a list. 16:18:00 Quartus: (as you can see, i wrote a copy-list) 16:18:16 backspace is a line drawn from right to left the stylus. 16:18:22 oh i know how to do it. 16:18:31 it's just not 100% comfortable, and as i say, still learning. 16:18:46 Quartus: i wouldn't have bought QF if i didn't intend to use it -- fear not ;) 16:18:51 GET ON IT MAN! 16:18:52 :) 16:18:54 hehe 16:19:19 can't tell you how thrilled i am with this list code, even though it's still hacky. as I440r rightly said, it ought to be re-written from scratch, but it think it's been a useful exercise. 16:19:29 Practice is good. 16:19:36 some of forth's elegance is beginning to shine through. 16:19:43 the lack of my own, too :) 16:19:53 zpg i use that technique - write it, delete it, start over 16:19:59 right, let's get this constant business sorted. 16:20:10 I440r! 16:20:27 hi slava 16:20:56 zpg: Ive read ( Peter Knaggs thesis) ... C makes a programmer think that c is the greatest language in the world. Forth makes the programmer think that he is the greatest programmer in the world. :) 16:21:19 hi slava, hi I440r 16:21:27 heh, nice. to be frank, i have two languages that really shocked me. lisp and smalltalk. 16:21:34 forth is beginning to emerge as a third. 16:21:38 most other things are fluff. 16:21:46 :) 16:22:10 Ray, from what I've seen, C programmers think C is the only language in the world. But that's true for most programmers; they know only one language, and not very well. 16:22:16 :) 16:22:36 I tend to think that most programming languages are developed to lower the bar of entry into programming. 16:22:57 I don't know. I think OO is a lot harder conceptually than simple procedural languages. 16:22:58 specially c 16:23:14 Quartus, i call OOP object obfuscation! 16:23:19 :) 16:23:21 yeah, one of the key reasons i persisted past the "what the hell is this, where are the arguments?!" phase with forth is the realisation that i might ... learn something. often, other languages are easy to pick up, especially as time goes on and experience grows in the past ones you're acquainted with. my lisp, for example, is better than it was because i learnt how to write 'lispily' in lisp, but i grapsed the basics pretty 16:23:22 quickly. after all, a function definition is a function definition. 16:23:55 implicit parameter passing is one of the powerful things in Forth. 16:24:00 indeed. 16:24:06 You can bolt words together like Lego. 16:24:12 but this is just hype until you actually get it. 16:24:14 Well, not that Lego uses bolts. 16:24:31 hmm, lego bolts. You might have a product there. 16:24:38 Lego Glue. 16:24:42 ya that too. 16:24:54 Plus I kept all my lego blocks in a bag, rather than in a dictionary. Hmm, the analogy is falling apart. 16:25:07 I never named a single Lego piece, either. 16:25:24 I keep mine all over the kids room. oops confession there. 16:25:33 ever step on one. 16:25:34 ? 16:25:37 okay, Quartus, i'm sorry for my slowness on the 'constant' -vs- 'variable' front when it comes to storing my lists. we discussed it early in the morning (here) when i was pretty out of it. a constant can take an address when i initialise it, that i get. so how would i initialise my constant in such a way that i can modify a list and have the constant (call it, my-list) pointing to the newly consed had so that i can say 'my-list .list'? 16:25:38 Though if you were listening you might think some of them were named obsceneties, after I stood on them barefoot. 16:25:53 zpg, what's your list-creation word? 16:26:02 cons 16:26:04 it's modifying 16:26:14 To make a new, empty list, you're using what? 16:26:16 1 2 3 3 make-list will cons 3, then cons 2, then cons 1 16:26:28 what does it cons 3 with? Nil? 16:26:45 i've got a word called 'cons-cell' which allocates two cells and sets them both to nil (0) 16:27:00 so 16:27:00 So make-list returns what? 16:27:06 9 cons-cell cons 16:27:11 would be a new cons cell with 9 as its car 16:27:43 make-list returns a list. ( x y z n -- list ) where n is the number of list entries on the stack. make-list therefore conses the defined number of times. 16:27:59 Yes, make-list returns a list, I guessed it might. What is a list? The address of the head node? 16:28:00 and x y z therefore end up (x y z), i.e., highest on the stack is the last entry in the list. 16:28:10 yes, a list is simply the address of the head cons. 16:28:18 my lists are a chain of cons-cells, lisp style. 16:28:40 so if i cons on a new entry '22 [list-address] cons' 16:28:49 As are mine. My linked-list is : linked-list ( -- list ) align here nil , ; 16:28:56 --- join: madgarden (n=madgarde@London-HSE-ppp3546145.sympatico.ca) joined #forth 16:29:18 So, linked-list mylist 5 mylist add-atom 16:29:22 If you wanted to use cons, it'd be 16:29:40 nil 5 cons 6 cons 7 cons mylist ! 16:30:02 * zpg nods 16:30:18 my linked-list word is effectively a self-initializing variable. 16:30:25 neat. 16:30:30 but accessed without fetch and store. 16:30:44 All my list words dereference it accordingly with @ 16:30:49 ahhh 16:30:58 oh, I blew it up there. linked-list constant mylist 16:31:04 yes i was pondering my list words taking a pointer to a list (l) and having @ as the first entry. 16:31:13 That's what I've done so far. 16:31:20 hmm okay, that's simple to do. 16:31:39 I don't have a 'cons-cell', I just cons with nil when that's what I mean to do. 16:31:47 instead of them taking the car of list, they'd take a variable which points to said car. 16:31:54 yeah, my cons-cell is hacky. 16:31:58 They'd take an address that points to said car. 16:32:10 yeah that's what i meant, oops :) 16:32:13 vatic: how's it going? 16:32:16 okay, let me try that then. 16:32:40 hmm, not right now i guess, a bit of work involved. 16:32:51 fancy seeing my soup of code? (take it lightly, this is my first real forth code ever :) ) 16:32:56 sure 16:32:59 okay 16:33:22 In a paste. :) 16:33:31 zpg: Ok! 16:33:55 comments might be a little old. 16:33:56 http://forth.pastebin.ca/200122 16:34:02 Quartus: of course. 16:34:03 :) 16:34:11 vatic: glad to hear it. any new developments in forth or otherwise? 16:34:25 Peter Knagg's page, btw: http://decweb.bournemouth.ac.uk/staff/pknaggs/ 16:34:47 zpg: my teaching week is over. I'm beat... 16:35:06 zpg, not bad for early days. You use a devil of a lot more whitespace than I would. 16:35:08 vatic: i can imagine 16:35:13 Quartus: yes, it's badly spaced. 16:35:38 Quartus: i used the file as a bit of a scratchpad for my stack confusions. i.e., writing comments after every 3 words or so, to keep track of what the hell i was doing. 16:35:52 i think it helped though. 16:36:02 i'm pretty proud of the list append functions, which were written most recently. 16:36:10 they look quite clean. 16:36:15 If you need a mid-word stack comment, you need to factor there. General rule of thumb. 16:36:16 zpg: It's really an acting career. I can see why actors drink a lot... 16:36:25 vatic: heh, yep. 16:36:47 Quartus: thanks for the tip. i imagined as much. same sort of thing is said of lengthy lisp functions. 16:37:02 LIkewise if the code can't be followed without a mid-word explanatory comment. 16:37:06 forth i think will improve my code in other languages. 16:37:14 There are exceptions, but those are for later. 16:37:31 Somebody quoted me on the web somewhere talking about how Forth will make you a better programmer in other languages. 16:37:46 sure. some of the comments are attributable to my sketchy knowledge of the stack, which will of course (i hope) improve. 16:38:09 Quartus: :) yes, i read it in a few places too. can't argue with the statement! 16:38:19 Ah yes, here it is. http://www.figuk.plus.com/learn.htm 16:40:20 --- join: snoopy_1711 (i=snoopy_1@dslb-084-058-139-010.pools.arcor-ip.net) joined #forth 16:40:51 re: hype -- i read some hyperbolic statements on lisp re: elegance etc., as well as alot of alan kay on how it changed his understanding of computer interaction.... but like most things, it requires actual experience (rather than vicarious belief) to get the point. 16:41:26 nice quote. 16:43:42 right, shall take another break, this has been a nice bit of tinkering indeed! shall have to refocus on scan and skip soon, then modify my list code to (a) include freeing, (b) allocate a 3 cell cons (2 for car, 1 for address of the cdr) and then split a string into whitespace and add to a list. 16:43:59 Here's a horrifying lisp-related comment from a couple of weeks ago: http://groups-beta.google.com/group/comp.lang.lisp/msg/b8afaed9b71677a1 16:44:26 yes, you pasted that (or at least, it was pasted) in here a while ago. 16:44:34 That could gag a maggot. 16:44:40 :D 16:44:52 Paul Graham says some neat stuff on lisp, none of it cringe-worthy, a lot of it relevant. 16:45:06 In my opinion, Paul Graham is a self-important windbag. 16:45:16 heh, ok. 16:45:35 i'll be back in a while, time for tea methinks. 16:45:40 nice talking. 16:45:48 He used to talk about Lisp, which he wasn't too bad at (though his estimate of his own skills was hugely higher than that); now he goes on about all manner of things he knows significantly less about. 16:46:03 Ok. 16:48:52 --- quit: Snoopy42 (Read error: 145 (Connection timed out)) 16:49:05 --- nick: snoopy_1711 -> Snoopy42 17:06:18 Quartus: hey... 17:06:24 Hey hey. 17:06:37 How are things today? 17:06:42 Can't complain. How about you? 17:07:30 who is paul graham ? 17:07:55 http://www.paulgraham.com/ 17:07:57 A pundit. Self-proclaimed expert on everything. 17:08:02 staring a little too hard at the screen, must be the scopalamine... 17:08:02 heh 17:08:34 sounds like that #c guy that used to come in here before he was "Accidently" banned :) 17:09:09 what guy was that? Zhivago? 17:09:37 no i cant even remember his nickname 17:09:43 poppavic 17:09:55 No accident there. 17:09:59 i know lol 17:11:00 Zhivago? a Russsian name! 17:11:15 He's about as Russian as Walter Koenig. 17:11:34 "no one expects the Russian inquisition!" 17:11:39 heh 17:11:42 lol 18:07:14 The problem I've run into factoring down words is word name space. 18:07:24 How so? 18:07:31 Let me find an example. 18:08:46 http://forth.pastebin.ca/200220 18:08:59 Technically, this can be factored by at least one word, and perhaps three. 18:09:15 Ah, I see your problem, that should be : http s" //forth.pastebin.ca/" type 200220 . ; 18:09:15 But naming them is an issue. Even using modules. 18:09:19 oh, it's a URL. I'll look. :) 18:09:42 Everyone is a comedian. 18:09:46 You mean it's hard to find a good name? 18:11:32 Yes 18:11:48 Can you outline in english what that whole routine does? 18:12:15 (back) amusingly, M-x run-forth is often mistyped as M-x ruin-forth 18:13:38 A calendar entry is something that gets passed to the controller. It contains a command type (CMD_DEFINECALENDAR), a calendar number (0-63), and then 12 32-bit entries that are bit maps. After building a buffer, it gets the current HERE pointer, specifies the length of the built command, and calls generic-command-w/-buffer. 18:13:41 HERE is preserved. 18:14:34 StoreInt stores a 32 bit number into HERE space in a specific byte ordering. 18:15:25 So you're creating a calendar entry in two parts: a calendar entry header, and a calendar-entry body. 18:16:14 Yes. 18:16:26 Although the header is so small, I'm not sure it warrants factoring it out. 18:16:31 Try it. 18:16:32 And it's never used anywhere else. 18:17:04 You don't need the return stack for HERE, as far as I can tell, because generic-command-w/-buffer (horrifying name, btw) doesn't leave anything on the stack, right? 18:17:24 Correct 18:17:41 You've commented on the horror of the name before :) 18:19:22 generic-command-w/-buffer does need some of the arguments passed in. HERE is stored on the return stack so I don't have to play games to get at them. 18:19:38 No games. Here, have a look at this... 18:20:10 http://forth.pastebin.ca/200234 18:20:14 BTW, why is the default save time for pastes set to never, isntead of something reasonable, like 1 year? 18:20:36 I don't know. Not a configurable parameter, if I recall correctly. 18:22:22 That is probably not quite right, as I have no idea what the monstrosity generic-command-w/-butter-and-breadroll takes as parameters. I assume port-handle.i txBuffer get used somewhere by somebody. 18:24:13 Actually, the port-handle.i comment is left over. It's on the stack, but it's not used by that routine anymore. Used to be. 18:24:41 txBuffer is used by generic-command-w/-butter-and-breadroll 18:25:04 Is txBuffer used? In that case the code needs a bit of work. My biggest complaint with the generic... is that it doesn't say what it does. It also raises several questions. Are there non-generic commands? Are some of them served with muffin and/or salad? 18:25:29 The names make more sense within the context of the entire system. 18:25:33 Yes, there are non-generic versions. 18:25:59 The names may make more sense to you, as you wrote them. But generic-command-w/-buffer does not say what it does. No verb. 18:26:38 Noun with adjectives. 18:27:26 Fair enough. 18:27:39 What does it do? 18:28:30 There are a number of commands that are very simple, and can use a standard template. These are typically single byte commands (as they're called within the system. There's more to the packet, but the actual command is a single byte with no parameters). 18:28:37 It builds such a single byte command. 18:28:51 Does it send it, or just build it? 18:28:57 only builds. 18:29:07 Ok. 18:29:08 Hang on. 18:30:40 so generic-yadda takes ( txbuffer addr len ) 18:31:03 Yes 18:31:25 I assume you have some reason for passing calendarNum in a variable instead of on the stack. 18:31:36 Because you made me. 18:31:38 Data accessors. 18:31:49 It's not an accessor if you have to @ from it. 18:32:27 calendarNumber is the variable I'm specifically referring to. 18:32:33 Technically true. There's a public store method, but this routine is the only one that gets it, so I didn't feel it warranted creating those. 18:33:23 Creating a single word to do 'calendarNumber @' that's used one time doesn't seem to be a win to me. If it was used multiple times, I agree. 18:34:16 It is worth doing, as it abstracts the data type, no matter how many times it's used. Factoring is not just for repeated code. 18:35:04 It abstracts the data type as long as what you return is an int. 18:35:40 Somewhere somebody has to update calendarNumber by using ! (or whatever you're calling it). 18:36:00 Right. 18:37:33 So it's not part of the calendar data structure, as such? 18:37:53 I don't consider it to be. 18:38:44 I consider the calendar data structure to be the 12 32-bit values. Those have true accessors functions. 18:39:12 Ok. That's what I was asking earlier. Why use a variable instead of the stack for that value? 18:41:39 http://forth.pastebin.ca/200264 18:41:57 Consistency from the callers standpoint, more than anything. Also, for what it's worth, the value is range checked before being stored into the variable. Admittedly, that could be done at any point. I also tend to set up the calls in the order the packet is layed down in memory. It makes more sense to me to say 'select the calendar number, then build the map for that calendar' than 'build the map for a calendar, and oh by the wa 18:41:57 y, here's the calendar number to use.' 18:43:14 Factoring is done for at least three reasons: readability, testing, and abstraction. Factor small, and you can visually see that each word does what it should; you can test that interactively. 18:43:36 Now, if you dont' know the order things are layed down in memory, it doesnt' matter. But since I wrote the protocol, I know how it works, and it does matter to me. 18:43:42 Abstraction can mean information hiding, or just good naming. 18:44:30 Well, the good naming thing is definitely something that needs improvement. I have a certain C naming style, and it doesn't appear to carry over very well. 18:44:44 Yes, I just see that calendar-header, is not static, it is coupled to something somewhere via calendarNumber. I'd be happier with it as calendar-header, ( calendarNumber -- ) but you may have some specific reason for not wanting that. 18:46:32 That paste looks pretty good to me. I'm assuming there's an m>i and that it'd be needed there, just a guess. 18:47:16 i>m, but yea. 18:47:20 Each factor is short. I'd format the last one myself as here swap calendar, build-generic-command here! in one line like that, but I left it the way you'd structured it. 18:47:34 i>m I know about, I was converting it back to do a subtraction. 18:47:44 Oh, right. Yes. 18:47:55 Maybe you don't have to. 18:48:03 I don't know how you've set up your typing dealie. 18:48:48 I like my typing dealie. There's only one thing I'd change about it, at the moment. 18:49:01 So all of those have meaningful names with verbs or implied verbs in them, they're all idiomatically 7 elements or so long. 18:49:13 The definition bodies all fit on one line each without any cramming. 18:50:08 I don't know, I might change calendar, to return only length, and use here tuck i>m instead of here swap. Hard to say. 18:50:53 That would seem better. 18:50:55 I'd rename storeInt to be a comma word, since that's what it does. 18:51:32 I keep forgetting about that. storeInt, would make more sense. 18:51:45 Don't need store in it. Int, unless there's some adjective needed. 18:52:01 , implies a write to dataspace with an increment. 18:52:29 I still think of ',' as being a space, rather than an operation. 18:52:38 space meaning datapsace. 18:52:52 It's not. It's a write. 18:53:00 A write and a pointer increment. 18:53:09 I know. but that's how I still think of it. Right or wrong. 18:53:13 So fix that. :) 18:54:25 http://forth.pastebin.ca/200277 18:54:26 Actually, I can remove storeInt altogether, because I just remembered I have an i, that stores 32 bits. 18:54:40 ok, unless there's something special about the endianness. 18:54:59 l, stores in the order I need. 18:55:32 night all 18:55:33 --- quit: zpg ("ERC Version 5.1.3 (IRC client for Emacs)") 18:55:38 So there you go. That looks pretty good. 18:55:52 Remember to verbify your words. 18:55:57 I'll try that tomorrow. 18:56:24 does here here! work? Or does it have to be here i>m here! 18:56:36 No, here here! works. 18:56:42 oh, ok. One simpler then. 18:57:13 does here i>m here! work? 18:57:19 The changing I'd make in my typifying system would be to consolidate mptrs and ints. I still like the typing on strings vs floats vs ints. 18:57:20 No. 18:57:25 ugh. Ok. 18:57:49 That's the annoying thing. If you have here, and want to use it in two contexts, you have to type one, move it, use the other, then use the first, instead of just using dup. 18:57:49 here and all it's friends work on ints. mptrs are malloc'ed spaces that aren't in HERE space. 18:58:41 The idea (which usually works) is to prevent trying to write to mptr spaces without deliberately casting it to an mptr. 18:58:58 All operations to HERE spaces are implicitly checked, so that's less likely to cause a problem. 18:59:08 Ok, I think this might actually work: http://forth.pastebin.ca/200283 18:59:16 If not, the delta should be small. 18:59:37 Yes. I know how to debug :) Trust me on that. 19:00:16 So hopefully that sheds some light. Names should always say what the word does, and stay light on how it does it. 19:01:10 I'm somewhat torn on whether I like definitions to be on one line or not. I think of Forth as more like assembly, and I tend to comment much for verbosely than in C. Call it a quirk, but I find sporadic commenting much more annoying than no commenting, or commenting every line. 19:01:35 s/for/more/ 19:01:36 There are no comments in that code. 19:01:40 I know. 19:01:44 But there are in mine. 19:01:58 The idea is to factor small enough that it's self-explanatory. I think that is. 19:02:21 Agreed. 19:02:35 --- join: snowrichard (n=richard@12.18.108.162) joined #forth 19:02:49 Keeping them on one line keeps'em short. 7 idiomatic phrases is a good benchmark. 19:02:59 Generally that means 7 words, plus or minus 2. 19:03:35 Another rule-of-thumb: if you need a comment, you need to factor. If you need to put a parameter on the return stack, you need to factor. 19:03:48 If you're nesting conditionals, you need to factor. If you're nesting loops, you need to factor. 19:04:40 What the name of the style called like my original paste? Vs your one line per code? Paragraph style? 19:04:53 s/code/function/ 19:05:16 I don't know that there's a taxonomy for Forth words of different lengths. Vertical coding, maybe. 19:05:17 --- quit: snowrichard (Client Quit) 19:05:36 I wonder if vertical coding (or paragraph style, as I may decide to call it) leads to longer words. 19:05:51 I believe it does, yes. 19:06:15 A C programmer might see the factoring in my version as inefficient. 19:06:32 Because we instrinsically think of call overhead. 19:06:35 And it would be a cramping pain in C, both to write and to use, as you'd have to nest the function calls. 19:07:25 And declare all the functions. 19:07:35 That's questionable, depending on ordering. 19:08:10 You'd have to either hard-code the length of the calendar entry, or pass it from calendar, to build-generic-command. 19:08:24 Is HERE space in multi-tasking Forths local to each task, or global? 19:08:38 There's no standard for multitasking, so that'd depend on the implementation. 19:08:53 Traditionally it's a user variable. 19:08:58 Ah. 19:08:58 Hence, local. 19:09:52 You initially had the calendar-entry length hardcoded as 51, which I would advise against. Unnamed constants are the enemy. 19:09:59 In C, I tend to use structures for many things, and pass pointers around. I also generally code with a vew towards reentrancy. Something that using HERE space makes difficult. 19:10:06 Yes, I didn't like the 51. 19:11:15 Well, if you have call for reentrancy in building calendar entries, you'd have to use a different method. 19:11:40 I'm not sure what form reentrancy would take for such a thing. Certainly calendar, isn't going to call itself. 19:11:51 And if you fork, you've got discrete memory anyway. 19:11:53 I generally eschew magic numbers. I use lots of enums and typedefs, and frequently have the last entry in a enum be foo_LAST, which gets used for sizing things. 19:12:12 I don't need rentrancy here, but it's more automatic for me to account for the possibility in C. 19:13:01 I guess, but it would seem to me silly overkill to have calendar, allocate dynamic memory just to use for scratch, even in C. 19:14:11 By passing pointers in, and having no static variables, it's basically reentrant, and means that you can maintain 'n' buffers by simply passing different pointers. 19:14:36 Yeah, you can do that in Forth too, but why, in this case? 19:14:59 I don't need here. I'm saying my coding style in C pretty much makes the ability the default. 19:15:23 So you'd malloc space inside calendar, ? 19:15:56 No, the function that builds the buffer expects a pointer. That might be malloc()'ed space, or simply a buffer on the stack. 19:16:43 Again, you could do that in Forth. Seems unnecessarily complex to me. 19:17:23 It's not complex in C. It's simply passed a pointer. *buffer++ = CMD_DEFINECALENDAR; 19:17:54 It's not complex in Forth to pass pointers either. What is complex is managing individual buffers for the purpose of a reentrancy you don't need to support. 19:18:18 In the case of your code, depending on how the rest of it looks, it might be worth having words like calendar, write directly into the txBuffer. 19:18:38 The comma operators in Forth are somewhat unique in that they advance the pointer automatically. 19:18:56 And so would the equivalents you wrote to write directly into a txBuffer. 19:18:59 Overwise, you have yet another item on the stack to keep track of, and there's no auto-increment for them. 19:19:13 HERE doesn't live on the stack; neither would a txBuffer-specific pointer. 19:19:39 I mean you could write your own. tx, txc, txi, 19:19:41 I know HERE doesn't live on the stack. 19:19:57 and a txp and a txp!. 19:20:49 Your tx, words would do the appropriate autoincrement of a tx pointer variable. 19:20:49 So you'd write words that managed a pointer, rather use a pointer passed in? 19:21:18 As you say, the advantage of the , words is that you're dealing with HERE, and they autoincrement. So instead, deal with TXHERE, and autoincrement. 19:22:07 so... let's see. variable txp : txhere! txp ! ; : tx, txp @ ! 1 cells txp +! ; etc. 19:22:14 : txhere txp @ ; 19:22:23 Would you agree, then, that you lose any possibility of reentrancy? 19:23:07 I had put aside the notion of reentrancy, I cannot see how it applies to this code in any way. I was thinking in terms of simplifying the buffer-population process. 19:24:44 I cannot imagine why you'd want reentrancy in this case, but if you did, you could preserve TXHERE (or HERE, for that matter), re-enter, and then restore it. 19:24:46 And my whole point from the start of this was simply that the way I write C automatically permits reentrancy. I'm not saying I need here, nor that it is useful. But that my Forth style (what little of it there is) would not permit it. I was not arguing the merits of this code needing reentrancy. 19:25:18 Ok. 19:25:33 Basically, my Forth style still looks like someone who just learned BASIC. 19:25:40 You could build the entire buffer with tx words. Probably be faster, too, no copying of memory. 19:26:30 Yes, and that's an idea I will look at tomorrow when I scan over the code base. I think I have about 6 routines that can be refactored in a style similiar to the pastebin code. 19:26:40 6 modules, rather. 19:26:43 You'd never need to put your thumb on txhere and de-allocate, either, so the code would be cleaner. 19:27:15 One nice thing is packets will NEVER be longer than 131 bytes. 19:29:29 I don't like i, as a name. What does , do on your system? Is your cell-width not 32-bits? 19:30:46 Whoops. Yea, ',' stores 32 bits w, stores 16 bits and c, stores 8. 19:30:58 So , would be the right choice there. 19:31:03 Yes 19:31:22 i, reads like i , to me. 19:31:37 I can see that. 19:31:51 BTW, did you see I scored a Vx with a GPS, keyboard, and some other junk from eBay? 19:31:59 I didn't see. Good deal. 19:32:08 The Vx is nice. Faster than the V. 19:32:21 http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&ih=005&item=150043242763 19:32:27 I recall now the GPS sled, I've seen it in person. I seem to recall it eating battery. 19:32:37 There's also a 12V plug for it. 19:32:39 The Vx keyboard is the wired one? Very nice unit. 19:33:20 I think there's actually one at work somewhere, in a box, too. I haven't been able to find it, but I remember noticing it before we moved. 19:33:56 I was willing to go $50.05 on it. Closed at $49.65 :) 19:34:32 That's a sweet folding keyboard. I remember using the prototype before they came out, I was quite impressed. 19:34:46 I like it better than the newer wireless one, though it's not bad. 19:35:27 I wonder how useful a wireless keyboard would really be. Seeing the screen is as small as it is. I guess it's a convience thing of not having to plug it in. 19:35:42 And traditionally, IR tends to eat batteries. Same on the Palm? 19:35:49 a little. Not much. 19:36:04 No more than the serial port does, really, which is where the other keyboard attaches. 19:38:33 I just wish the Vx had a CF or SD card slot. 19:38:46 Yes, that'd be nifty. 19:39:06 Though there isn't room for either in that case, it's full! 19:39:20 I imagine. 19:40:08 Hey, gavino on c.l.f. is the same twit who comes on here calling himself ion-cannon, asking the same dumb-ass questins. 19:40:18 Same IP address. 19:40:35 "ok can you build systems to serve 30,000 people using forth? 19:40:35 " 19:41:09 How much faster is the Vx than the V? 19:41:22 I think it's 20MHz vs the V's 16. 19:42:04 It also benefits from streakhack. 19:43:08 Same 11%? 19:43:08 --- quit: erider ("I don't sleep because sleep is the cousin of death!") 19:43:35 Varies by specific unit, they changed LCD hardware suppliers at one point. But yes, approximately. 19:45:09 A stock unmodifed Vx benchmarks (via my Benchmark) at 95% of a IIIc, vs. the V at 78%. 19:46:58 Odd that a IIIc would be faster, it being a lower number. 19:47:15 Heh. Well, it was the first colour Palm, and it had a III form-factor. 19:52:06 http://www.uchobby.com/index.php/2006/10/12/design-contest-for-new-arm-coretex-m3-controllers/ 19:52:10 Wanna play with an ARM processor? 19:53:46 I have one here. I wish I had the time to doodle away at something just to enter a contest! :) 19:54:36 Wasn't someone here wanting to write an ARM Forth? 19:54:52 I440r, I think. 20:02:16 I am thinking it is time for the bed. I will catch you later. Thanks for the help. 20:02:53 Take care! 21:00:51 colorforth.com is back. 21:00:59 I see that. No changes. 22:03:08 --- quit: vatic (Read error: 110 (Connection timed out)) 22:15:39 --- join: Rocky (n=trailer@CPE0001023f6e4f-CM013349902843.cpe.net.cable.rogers.com) joined #forth 22:19:41 --- quit: Quartus (Read error: 110 (Connection timed out)) 22:19:55 --- quit: Rocky (Client Quit) 22:21:09 --- join: Quartus (n=trailer@CPE0001023f6e4f-CM013349902843.cpe.net.cable.rogers.com) joined #forth 22:21:10 --- mode: ChanServ set +o Quartus 23:02:53 --- quit: segher (Nick collision from services.) 23:03:03 --- join: segher (n=segher@dslb-084-056-188-144.pools.arcor-ip.net) joined #forth 23:13:32 hi 23:13:43 hey 23:13:51 what's up, fellow luddite? 23:14:01 I see ASau has declared Forth dead. 23:14:57 I have a short list of people whose messages I have automatically coloured maroon. 23:16:48 what's up with you? 23:17:03 is forth dead because you can't convert blocks to sources in forth? 23:17:53 Because somebody put up a one-liner in Perl, and I suggested dd. He repeated my dd recommendataion, and then complained that nobody had put up a Forth solution (though there is at least one in the thread above him). 23:18:19 It's a very simple task in any language, include Forth. 23:18:53 Maybe not for him. But I bet a real practitioner could do it even with SP-Forth. Maybe even a LUDDITE! 23:19:34 assuming one is running factor with stdin and stdout redirected, its a one liner: 23:19:34 : blocks>text 64 read [ print blocks>text ] when* ; 23:19:58 is SP-Forth his? 23:20:01 when* looks like there should be a footnote. :) 23:20:06 No, good heavens no. 23:20:30 Factor: FOO [ BAR ] when* FORTH: FOO ?DUP IF BAR THEN 23:21:00 Still says 'footnote' to me. ;) 23:21:26 Aside from the business of opening and closing the relevant files, it's a one-liner in Forth too. 23:21:53 opening two streams could probably be encapsulated in factor's library at some point 23:22:13 : with-files ( infile outfile quot -- ) >r >r r> r> with-stream ; 23:22:45 dd does the job quite handily, however, so I'm not moved to invest time in recreating it. 23:22:55 "mysrc.scr" "mysrc.forth" [ blocks>text ] with-files 23:23:00 see? factor can replace a shell :) 23:23:08 heh. For suitable values of 'replace'. 23:23:28 perl -ne 's/\G(.{64}?)/$1\n/g;s/\s+\n/\n/g;print$_' \ 23:23:31 ouch. 23:23:34 Yeah. 23:23:43 i don't want to learn perl :) 23:24:06 I can read that, but it's ugly. dd cbs=64 conv=unblock if=blocks.fb of=source.fs 23:24:29 i can't read that :) 23:24:42 the only time i use regexps is in my editor for search and replace and sometimes a macro or two. 23:24:46 never in code 23:24:46 the perl? I can't blame you there. It's cryptic. 23:25:04 a lot of java programmers like regexps 23:25:16 in java, a literal regexp is a string, so if your regexp contains a \, you have to escape it twice 23:25:19 For some things, they're handy. 23:25:20 "a\\b" 23:25:23 to mean the pattern a\b 23:25:28 and people STILL use them in java code 23:25:55 Don't tell Doty, he'll want regexp support in Forth STAT! 23:26:09 he's been developing LSE64 since '82? 23:26:22 I saw that today! 24 years and counting. 23:26:36 I'm guessing he puts in about 5 seconds a week on it. 23:27:14 Given that I reproduced a chunk of it in 5 minutes, I'd say 100 minutes should be enough to do the whole thing. 23:27:51 did you see jacko replied to himself 4 times? 23:28:03 perfecting some piece of code 23:28:11 I must have missed that. He's in maroon. 23:28:32 this thread: http://groups.google.com/group/comp.lang.forth/browse_frm/thread/3b8f632f633a2fc5/ 23:28:48 6 posts by jacko, 4 of them replies to the same one. 23:28:54 Last I saw he was recommending APL for finding the median of a list of numbers! 23:29:20 heh 23:29:20 Oh yes, I do recall this. I'm still not sure what the code is supposed to accomplish. 23:29:27 structures? 23:29:44 Yes, but I'm not sure what his revised attempt is supposed to be teaching us all. 23:29:54 nor am I, but he's jacko. 23:30:11 He is. Cross him with werty, you get wacko. 23:30:30 in one of his posts, werty referred to WERTY keyboards being obsolete 23:30:35 heheh 23:30:40 i hope so, so that the one he types on will go out of order. 23:30:43 Well, we are all FOOLS after all. 23:31:09 Did you see Gary Chanson's blk2txt converter? 23:32:29 It's from '94, so I suppose I should cut it some slack, but it's an amazingly complicated solution to such a simple task. 23:32:31 no 23:32:36 blocks don't interest me much :) 23:32:40 http://arcaneincantations.mvps.org/Programs/BlkToTxt_23.ZIP 23:32:43 No, nor me. 23:33:08 I've converted a few old sources from block to sequential, but that's about it. 23:33:15 if i want to run a block file in factor, its "blocks.scr" 64 group [ eval ] each 23:33:30 with a source file, the built-in loader ends up doing "source.txt" lines [ eval ] each 23:33:39 so there, jeff fox is wrong, files are simpler :p 23:33:47 You'd have to get fancy if you wanted to read a specific block number. 23:34:03 or cache blocks, etc 23:34:15 Jeff Fox is wrong? HERESY! 23:34:23 i don't want to be re-implementing the buffer cache in the OS i'm running on. 23:34:47 i have my editor set to a 64 char wrap margin though, and adhere to this convention! 23:34:55 Indeed. I'd have to be very, very short on space to be thinking about setting up blocks. 23:35:06 Hmm, I work to an 80-column line when working on the desktop. 23:35:13 what editor do you use? 23:35:17 joe, nowadays. 23:35:18 is quartusforth source in text files? 23:35:30 It is. On the Palm I use a narrower width. 23:35:37 text sources? heresy! 23:35:43 I'm a heretic. 23:35:45 are they LZW-compessed? 23:36:09 There are two kinds of source files for Quartus Forth, text from the MemoPad, or Doc files. Doc files are compressed, but it's a funky algorithm somebody cobbled up, not lzw. 23:36:26 heh i was joking 23:36:30 I figured. :) 23:36:31 given that colorforth uses a compressed pre-compiled format 23:36:41 how many lines of code, approximately? 23:36:50 In what? 23:36:54 forth. 23:37:04 You mean how many lines of source is Quartus Forth itself? 23:37:08 yes 23:37:25 I have run these numbers, but I don't recall. I'll just do it again. 23:38:03 wc :) 23:38:22 2900 lines in all, but that's blank lines and comments. 23:38:39 wow, that's tiny 23:38:40 Of which there are quite a few. 23:38:43 how big is the asm kernel? 23:38:54 That's hard to gauge, it's distributed. 23:39:00 Oh you mean the binary image? 23:39:04 oh, the 2900 lines includes the assembly? 23:39:11 Yes. 23:39:14 nice 23:39:41 The kernel comes to 20K. 23:40:38 Dang, I left out the floating-point library in that count. There's another 1800 lines of code in there. 23:41:17 factor has 8000 lines of C code, and 35273 lines of factor code. this includes a lot of stuff. 23:41:38 its quite heretical 23:42:07 Well, although I can certainly build Quartus Forth without the floating-point stuff, it'd be unfair not to include it in the total. So it's 4700 lines in all, comments, blanks, the whole shooting match. 23:47:39 slava, I'm apparently not getting enough oxygen. There's 10000 lines in all. The version of wc I was running was case-sensitive, and some of my extensions were in upper case. 23:48:02 Give me a few minutes, I'm sure I can get it up to half a million if I keep trying. :) 23:48:10 --- join: Cheery (n=Cheery@a81-197-19-23.elisa-laajakaista.fi) joined #forth 23:48:15 "BLOAT! NewForth OpSys has no code!!! I am the worlds best systems programmer" 23:48:26 Yeah, those pesky comments sure are bloaty. 23:59:59 --- log: ended forth/06.10.12