00:00:00 --- log: started forth/06.10.21 00:03:16 --- join: Cheery (n=Cheery@a81-197-19-23.elisa-laajakaista.fi) joined #forth 00:09:09 --- quit: nighty_ (Read error: 110 (Connection timed out)) 00:16:29 --- join: nighty_ (n=nighty@sushi.rural-networks.com) joined #forth 00:23:02 --- quit: nighty_ (orwell.freenode.net irc.freenode.net) 00:23:02 --- quit: Cheery (orwell.freenode.net irc.freenode.net) 00:23:04 --- quit: juri_ (orwell.freenode.net irc.freenode.net) 00:23:04 --- quit: erider (orwell.freenode.net irc.freenode.net) 00:23:04 --- quit: lukeparrish (orwell.freenode.net irc.freenode.net) 00:23:04 --- quit: arke (orwell.freenode.net irc.freenode.net) 00:25:41 --- join: nighty_ (n=nighty@sushi.rural-networks.com) joined #forth 00:25:41 --- join: Cheery (n=Cheery@a81-197-19-23.elisa-laajakaista.fi) joined #forth 00:25:41 --- join: arke (n=Chris@pD9E05B31.dip.t-dialin.net) joined #forth 00:25:41 --- join: erider (n=erider@unaffiliated/erider) joined #forth 00:25:41 --- join: juri_ (i=[m2B9D8H@volumehost.com) joined #forth 00:25:41 --- join: lukeparrish (n=docl@74-36-211-202.dr01.hmdl.id.frontiernet.net) joined #forth 03:25:14 --- log: started forth/06.10.21 03:25:14 --- join: clog (n=nef@bespin.org) joined #forth 03:25:14 --- topic: 'Welcome to #forth. We discuss the Forth programming language, simplicity, and a variety of technical subjects. Introduction: http://tinyurl.com/kvawv | Starting Forth: http://tinyurl.com/rm7pq | Thinking Forth: http://tinyurl.com/nsy4j | Gforth compiler: http://tinyurl.com/s8uho | ANS/ISO Forth Standard doc: http://tinyurl.com/nx7dx | Paste >5 lines: http://forth.pastebin.ca/' 03:25:14 --- topic: set by Quartus on [Wed Aug 30 23:43:43 2006] 03:25:14 --- names: list (clog Crest Jim7J1AJH lukeparrish juri_ erider arke Cheery nighty_ crc segher neceve @Quartus_ @I440r virl madwork timlarson @JasonWoof ccfg michaelw ohub k4jcw nighty TreyB nanstm Teratogen @Quartus Zarutian larsb warpzero) 04:03:40 --- join: vatic (n=chatzill@pool-162-84-156-148.ny5030.east.verizon.net) joined #forth 04:12:06 --- join: zpg (n=user@user-5440eceb.wfd80a.dsl.pol.co.uk) joined #forth 04:14:56 good day 04:16:26 zpg: hey, it's only 7:15am here... 04:17:52 --- quit: neceve (Read error: 113 (No route to host)) 04:18:49 hi vatic, how's it going? 04:23:15 ok. 04:24:17 --- join: crest_ (n=crest@p54894A93.dip.t-dialin.net) joined #forth 04:32:46 --- quit: Crest (Read error: 110 (Connection timed out)) 04:40:33 glad to hear it. any interesting developments in the land of forth? 05:04:51 i'm getting a curious error with the product of MakePRC. 05:05:10 my memo works fine when included into a normal QF session, but the resultant PRC throws an error immediately. 05:23:50 good morning zpg, vatic 05:24:31 lukeparrish: hey! 05:24:51 zpg: haven't tried to make self standing apps in Quartus... 05:25:11 good morning 05:25:21 how's it going? 05:25:29 hi erider 05:25:34 lukeparrish: ok, and your self? 05:25:37 hi 05:25:57 pretty good 05:26:10 it's 6:25 here in idaho 05:26:21 I've been getting up early lately :) 05:26:45 vatic: yeah, this is only my second attempt. i froze an earlier effort: http://ezil.sourceforge.net/screenshots/dr.jpg 05:27:21 zpg: there's a funny annotation at http://irregularwebcomic.net/1349.html about redefining words and such 05:27:39 just got my methods code semi-working. pretty nifty. i need to move the strings before using them, however, as i guess the results of 'parse' are only intended as temporary addresses. 05:28:49 lukeparrish: yeah, the 'organic' thing gets me too. 05:29:08 which I found this morning, an ah, amusing coincidence that I found http://www.aleph.se/andart/archives/2006/10/death_be_afraid_very_afraid.html last evening calling our era "postironic" ;) 05:29:47 hadn't you come across post-irony before? 05:29:54 nope 05:30:01 * lukeparrish is new at this stuff 05:30:11 heh 05:30:58 (well maybe I've seen post-irony, but not the word itself) 05:31:21 i guess we're post-Gen-X too. 05:31:27 that too 05:31:41 why be called generation X anyway? who thought that dumb one up? :P 05:32:17 if i want to make use of a (c-addr u) pair placed on the stack by, say, parse, is it always necessary to move it to an allocated location to ensure the data isn't corrupted? 05:32:24 lukeparrish: that'd be Copeland. 05:32:52 oh great, another word, er "famous" person I have to look up. 05:32:59 author. 05:33:11 first name kenneth? 05:33:19 Douglas 05:33:35 see, that's what threw me. I'd heard of a kenneth, but not a douglas. 05:33:58 surnames tend to apply to more than one person ;) 05:34:24 why's doug not anywhere near the top of google's copelands, I wonder? 05:36:17 ahh, coupland is it 05:36:40 at least, wikipedia spells it like that 05:38:53 --- join: neceve (n=claudiu@unaffiliated/neceve) joined #forth 05:39:46 regarding counted strings, it's only necessary to move it in some cases. usually you can leave it there when inside a compiled word. 05:41:11 also, on one-line interpreted commands, you can usually get away with it. it's when you have multiple lines of interpreted commands that it gets overwritten. 05:44:30 it's interesting to note, there are plenty of religious communities where prevailing cultural attitudes are not considered normal at all. these are even more culturally divergent among homeschoolers, where children are isolated from "normal" peers and typically hang out with other homeschoolers. 05:51:53 lukeparrish: "Coupland" spelling is correct. my mistake. 05:52:18 well, i've got 'bl parse' in a definition, the result of which I'm placing in a list. 05:52:28 it seems, at first glance, to have been corrupted later in the programme. 05:53:21 do 2-letter combos work in the forth you use? 05:53:51 ? 05:54:07 you parsing for "bl"? 05:54:44 yes, that works 05:55:12 ok. you're parsing multiple times in the same definition? 05:55:19 in that case, yeah you need to copy 05:57:34 ok 05:58:04 working now, thanks 05:58:08 cool :) 05:58:33 awesome, the method code works! 05:58:55 neat, can I see it? 05:59:00 sure 05:59:12 it's ugly as hell at the moment, but ... 05:59:18 http://retroforth.net/paste/ works 05:59:28 does it colour the syntax? 05:59:33 hmm, no 05:59:40 ok 06:01:08 --- quit: neceve (Read error: 113 (No route to host)) 06:01:25 see in here: http://ezil.sourceforge.net/latest/ 06:01:42 'am' is the test programme, 'methods' is the library code. 06:02:34 hell, looking at Forth on the laptop screen is impressive. i didn't realise how concise these listings were. 06:03:05 nice narrow columns 06:03:26 exactly. written on QF. 06:03:42 cool 06:03:50 on a pda? 06:04:15 Palm m130, yes. 06:05:58 this line here: ": m: bl parse save-mem :noname ; " was what i modified with save-mem 06:06:12 --- join: neceve (n=claudiu@unaffiliated/neceve) joined #forth 06:06:17 cool 06:06:51 and the output of .s should be obvious, the method words myswap and mydup are simply wrappers for swap and dup. 06:10:54 --- nick: nanstm -> Raystm2 06:16:25 --- join: Topaz (n=top@sown-86.ecs.soton.ac.uk) joined #forth 06:25:39 --- quit: Topaz ("Leaving") 06:35:43 --- join: snowrichard (n=richard@12.18.108.162) joined #forth 06:41:19 --- quit: snowrichard ("Leaving") 06:47:19 --- nick: crest_ -> Crest 07:31:42 --- quit: vatic ("*poof*") 07:47:49 --- join: madgarden (n=madgarde@bas2-kitchener06-1096620860.dsl.bell.ca) joined #forth 08:02:09 --- quit: madgarden (Read error: 104 (Connection reset by peer)) 08:13:30 --- join: madgarden (n=madgarde@London-HSE-ppp3546145.sympatico.ca) joined #forth 09:25:08 --- quit: k4jcw ("Client exiting") 10:33:18 Hey. 10:43:16 hi Q 10:43:25 What's up? 10:47:42 macros 10:47:49 and yourself 10:48:06 No macros here. 10:49:28 What particular definition are you using for 'macro'? 10:52:43 lisp style 10:54:17 So, metaprogramming in general. 10:54:30 yes 10:54:51 thinking about how to implement this into fisp 10:54:55 'macro' means different things in different contexts. 10:55:38 macros can be anything forth lexical text replacement like in c up to dylans macros where your're working on the parse tree 10:56:19 dylans the new language? 10:57:17 what I'm thinking is if you implement a simple lisp interpreter using forth as a parent language, forth becomes the de facto macro writing language. 10:57:57 would it be a good idea as such? 11:01:02 I suppose that would depend on what your goals aer. 11:01:03 are. 11:01:11 sounds good 11:02:51 --- join: k4jcw (n=jcw@adsl-065-006-151-062.sip.asm.bellsouth.net) joined #forth 11:05:03 hey k4jcw 11:05:38 Hello. 11:05:49 I now have the Palms syncing under Linux. whee. 11:05:57 Pilot-xfer? 11:07:02 kpilot 11:07:42 The most painful part was writing the udev rule to get the Targus USB adapter to show up as /dev/pilot 11:08:01 kpilot is based on the pilot-link stuff, pilot-xfer included. Glad it's working! 11:08:33 Yah. I got POSE installed on the Windows laptop yesterday. Or the day before. I forget. 11:08:48 The Garnet simulator, too? 11:08:48 And I've been slowly browsing the Palm programming documentation. 11:08:51 OS 5.4? 11:09:02 No, I figured there wasn't a lot of point, since my devices are 4.1's. 11:09:43 Depends on what you're using it for. The 5.4 simulator can find problems with code that the emulator will miss. And if you write something for distribution, you'll want to be sure it works under OS5 too. 11:09:51 I'd like to be able to compile lisp programs with minimal porting. since macros are a small part of a well-written lisp code, rewriting them in forth shouldn't be as much work as rewriting the whole thing. 11:10:18 Yes, perhaps once I get to that point, I'll install Garnet. 11:10:32 But for now, I have yet to get past your Hello, World program in QF :) 11:10:44 lukeparrish, if you want to run lisp programs, why not use lisp? 11:11:00 k4jcw :) The eval version doesn't make stand-alone PRCs, anyway. 11:11:28 I need to make sure I get past the point where this turns into a GUP (Great Unfinished Project) 11:11:39 educational reasons, I guess 11:13:27 My take on it: if you have a lisp program you want to run in Forth, port it. If you build half a lisp in Forth, and port part of the program while moving part across unchanged, you'll wind up with completely unreadable source. 11:15:40 Worse, unless your half-a-lisp is portable, you'll have bound the resulting Frankenstein's monster even more securely to the platform the unportable half-a-lisp lives. 11:15:56 on. 11:16:04 hmm. perhaps before writing the compiler, I should experiment with some altered source to see how unreadable it really is. 11:17:15 You'd do better to go all the way, in one direction or another. Write a lisp (or use one that exists), and run your lisp there; or port it to (hopefully portable) Forth. 11:17:58 Is there some specific Lisp code you need to move? 11:18:26 not right now. I remember seeing some back when I was into lisp that might be interesting though. 12:10:13 hi 12:11:04 hey 12:11:18 hi Quartus 12:13:12 i was reading an interesting book earlier today, Programming Language Pragmatics by Scott. 12:13:32 Don't recall that one off the top of my head. 12:13:45 Though it rings a bell. Perhaps I own it. 12:14:15 heh. I saw you recommend the Aho book, I've not read it before, though obviously the name itself encourages me. 12:14:53 Oh yes, I do own it. 12:15:27 One of the many books from the Temple Of Complex Compilers. :) 12:18:01 heh heh 12:29:52 What did you find interesting in it? 12:32:04 oh, i was just skimming through discussion of various languages, internal implementation, with particular attention to the Forth references. i'm no compsci, so this stuff is intriguing if a little above me. 12:33:04 incidentally, some of my list code examples work fine when interpreted but raise a Palm error when run as PRCs. i'm going to write a minimal file that includes the list code and just conses 1 number to nil, see if the error still occurs. if so, i may cry out for help :) 12:34:13 Are you messing with xts or trying to define new names at run-time? 12:34:49 hmm, there shouldn't be any dynamic word definition. messing with XTs i'm not so sure about. 12:35:13 are you saving the result of a ' and executing it? 12:35:31 yes 12:35:48 Have a look at the manual on creating stand-alone apps, with special regard to the relocation of xts. 12:35:58 that was to get around list. calling car., but car. perhaps needing to print a nested list, so it had to call list. again. 12:36:31 It's probably what you're running into. 12:36:33 okay, thanks for narrowing the problem :) i was reading the manual earlier, but as you can probably imagine, when the palm throws error 193... etc., i don't know where to begin looking. 12:36:59 executing an invalid xt can cause anything to happen. 12:37:21 Might be code there; might no. 12:37:28 Might be the middle of an instruction. 12:38:14 i see. 12:38:25 so, i can't use tick at all? 12:38:50 You can, but there are caveats. Read the relevant sections. 12:38:54 k 12:40:22 Relocating xts stored at arbitrary locations in memory would require a either far more extensive compilation process, or a relocation table of all possible xts stored with each PRC. Rather than go to either of those, there are other tools for managing relocatable xts. 12:40:42 The simplest of these is to ['] inside a word instead of using ' outside of a word. ['] values are automatically relocated. 12:40:58 aha - "The action of a user-defined deferred word that is used in a stand-alone app must be assigned by the app at run-time before the deferred word is first used, or you'll get unexpected results. Any initialization of user-deferred words performed at compile-time is not carried over into a standalone app." 12:41:22 right, must go for dinner but back shortly. 12:41:23 Right, also for defers. Assign the action within your code. 12:41:30 ok. 13:24:04 --- join: vatic (n=chatzill@pool-162-84-156-148.ny5030.east.verizon.net) joined #forth 13:35:39 hi vatic 13:37:20 back 13:37:47 Quartus: hey! howse it going? 13:37:54 zpg: hi! 13:38:20 good! You? 13:39:21 Quartus: Good! weather's cool, got a little to to program in Forth. Bought some tasty stuff to cook later... :-) 13:39:34 little time to program 13:40:04 :) 13:40:24 a little to to? 13:41:00 Quartus_: always too much to do... :-( 13:41:32 (a little time for programming in Forth) 13:42:54 bleh 13:42:59 i wonder how well DSP works in Forth 13:43:07 hi vatic 13:43:24 arke: whadya mean? 13:43:38 As in, how easy it is to do DSP in Forth 13:44:05 Quartus_: a little ticked Marcel Hendrix posted private email of mine on CLF however... :-( 13:47:25 Quartus_: hmm, i've wrapped all my ticks in colon definitions, as bracket-ticks, but i still get the same runtime error. 13:47:30 vatic, :( why did he do that? 13:48:11 arke: I'm sure it was a complete mistake, but it contained my private email address. Won't be happy to be getting spam there... 13:48:33 vatic: what did you 'purchase'? 13:48:39 arke: DSP with a particular chip? 13:48:58 no, on the PC 13:49:01 synthesizer 13:49:19 arke: Windows or Linux? 13:49:27 windows 13:50:39 although I'm adding another library and my old code was just a proof of concept hack anyway 13:50:44 so I'm starting over, but for real now 13:51:24 arke: don't know about what Windows provides or obstructs, but do you kow about all the sound card data at the ALSA web site? 13:51:41 nope 13:51:43 this is a plugin 13:51:59 so-called VST (virtual studio technology) plugin 13:52:07 that can be called in host sequencers and used from there 13:52:29 so the host provides the MIDI, audio, etc., my synth just processes the MIDI and spits out an audio buffer 13:52:36 oh and a GUI for changing parameters 13:52:53 People write real-time DSP code in C. You most certainly can write non-real time DSP code in Forth. Probably real-time, too, depending on how fast you need it to be, how fast your machine is, etc. 13:53:38 I think writing a synthesizer for some OS-Forth would be fun :P 13:53:43 Most consumer products that use DSP are looking for low-cost, so you're writing in assembler to minimize overhead, probably allowing you to use a lower cost DSP chip than if you had to support a higher overhead programming environment. 13:54:16 Get a fast enough machine, you can even write real-time DSP code in Python. 13:54:16 And for things like SHARC chips, C maps badly to ASM 13:54:24 Exactly. 13:54:24 Its been done in Java 13:54:50 Some company had the stupid idea of writing a sequencer+synths and effects and all that in JAVA 13:54:57 and was actually selling it 13:55:00 or rather trying to 13:55:03 It also depends on complexity. An 8 point FFT is much quicker to run than a 1024 point FFT. 13:55:16 Yeah, but usually you dont need an FFT that often for realtime stuff 13:55:25 Very much depends on what you're doing. 13:55:52 for EQ, steep IIR peak filters are common practice 13:56:05 actually, not even that steep 13:56:06 FFTs are very commonly used for frequency detection. 13:56:10 alot are just 2 poles 13:56:20 yeah, but when you're writing a song, how often do you need that? :) 13:56:31 Very much depends on what you're doing. 13:56:37 Ah, yeah. 13:56:59 arke: I think it might be a challenge to embed Forth in a VST plugin architecture... 13:57:08 I don't know much about MIDI, other than as a control protocol. I used it for stage lighting projects at one time. 13:57:54 vatic, it would be pretty easy to embed a FICL runtime in a VST plug and expose the VST stuff 13:58:04 but forget speed :) 13:59:35 k4jcw, I'll wager a guess and say that you've done a bit of DSP before 14:00:54 1; 14:01:05 Been a long time, tho. 14:01:43 Analog Devices ADSP2101/2105 and TMS32C310/320 stuff. That's how long ago. No fancy SHARC parts for me. 14:02:00 Oooh continuous stuff? :o 14:02:15 The worlds been mostly discrete for a while now 14:02:34 Yea. Voice compression to 1200 baud and vocal tract modeling stuff. Also some filtering work. 14:03:00 Hehe cool 14:12:02 arke: yes. anything you can get for free is going to be a "scripting language." 14:12:13 :P 14:13:14 :) 14:16:03 arke: of course there are these: http://www.microchip.com/ParamChartSearch/chart.aspx?branchID=8183&mid=14&lang=en&pageId=75 14:16:22 I can# 14:16:25 oops 14:16:29 I can't afford to write for those :) 14:16:43 I'd have to find somebody that pays me for it. 14:16:55 But after they play and hear my synth, they'll all want to hire me :P 14:17:32 arke: isn't that Yamaha knocking on your door? 14:17:47 I wish :) 14:19:27 arke: well, just figure out a new synthesis technique as important as FM and you're there! 14:19:38 Not anymore. 14:19:50 These days, nobody cares anymore :( 14:20:20 although I did have a cool idea that I want to try 14:20:43 although it'd be slow, hehe 14:20:53 time-based convolution is not fast :D 14:42:17 --- quit: Cheery ("Download Gaim: http://gaim.sourceforge.net/") 16:13:03 --- quit: erider (Read error: 110 (Connection timed out)) 16:51:00 --- quit: segher (Nick collision from services.) 16:51:12 --- join: segher (n=segher@dslb-084-056-187-120.pools.arcor-ip.net) joined #forth 16:55:03 vatic, I saw that. Does Marcel hang out here? 17:39:24 Quartus: i'm still getting to grips with the standalone build procedure; stripping my list code right down, i successfully built a standalone. the full library, however, doesn't function correctly (in spite of all ticks being bracketed). this isn't the same issue as before. now, the problem is corrupted lists (which work fine in a normal session). i'm using allocate in the main code-base. 17:40:59 Be sure to check the error code from allocate. It can fail. 17:42:01 If you want a version that won't fail, call the underlying routine; it returns, however, 32-bit (double-cell) addresses, so you'll have to manage them accordingly. 17:43:12 hmm ok. what does one do if allocate fails though? try again? 17:43:30 You can. 17:44:07 The failure is not to allocate the requested memory (unless there really is none left), it's a failure to allocate it near enough to be accessible to a 16-bit pointer. 17:46:42 oh i see. 17:47:21 the problem with the fuller list library is curious. even if i try a simple "1. 2. 2 make-list" i still get garbage out. 17:47:37 zpg, I don't know; maybe it's not an allocate issue. Hard to see from here. 17:47:41 as opposed to the same call in the stripped down version. evidently something's not playing nicely. 17:47:59 Quartus: oh of course. 18:12:47 Sweet part: http://www.cirrus.com/en/products/pro/detail/P1061.html 18:13:34 Love doing those BGAs at home. 18:14:20 I don't have the experience to even begin thinking about soldering one by hand. 18:14:37 You have to do a homebrew reflow oven. 18:16:06 All the ones I've seen use a relay, and short cycle the heating element in a toaster oven. I wonder if you'd get better results using a linear actuator to control the door. Open the door a little, it gets warm. open the door some more, it gets colder. 18:19:28 Quartus: I never got him to clarify that. We also have some friends in common in the Netherlands... 18:19:36 Ah. 18:19:52 I just want all the features it has. 18:20:25 Well, not all of them. Just most of them. 18:45:13 night all 18:45:14 --- quit: zpg ("ERC Version 5.1.3 (IRC client for Emacs)") 18:55:35 --- join: erider (n=erider@unaffiliated/erider) joined #forth 19:10:23 --- quit: erider ("I don't sleep because sleep is the cousin of death!") 21:28:34 --- quit: vatic (Read error: 110 (Connection timed out)) 22:11:59 --- join: arke_ (n=Chris@pD9E079E0.dip.t-dialin.net) joined #forth 22:13:26 hey arke_ 22:30:08 --- quit: arke (Read error: 110 (Connection timed out)) 23:25:12 --- quit: madwork (Read error: 110 (Connection timed out)) 23:35:44 --- quit: virl (Remote closed the connection) 23:37:13 --- join: virl (n=virl@62.178.85.149) joined #forth 23:59:59 --- log: ended forth/06.10.21