00:00:00 --- log: started forth/06.08.28 00:04:34 Quartus: Oh, before I go to bed in a sec, I just had a though. 00:04:56 Quartus: If you want to jot down some notes about what you had to do to get vor to build on windows I'd include that in the source distro 00:04:57 You had a thought? 00:05:00 JASONWOOF HAD A THOUGHT 00:05:18 3am here, so they don't come real fast :) 00:05:37 JasonWoof, I'll let you know. 00:05:51 mostly just thoughts of sex, gaming and dental care atm 00:06:13 * JasonWoof starts brushing his teeth 00:06:31 what was that make command again? 00:06:33 --- join: segher_ (n=segher@dslb-084-056-165-158.pools.arcor-ip.net) joined #forth 00:06:43 mingw-make -f Makefile.win 00:07:08 --- quit: segher (Read error: 60 (Operation timed out)) 00:09:33 It immediately fails to find sdl.h 00:09:50 SDL.h that is. 00:10:09 oh 00:10:22 maybe you do actually have to install sdl 00:10:31 And a chorus of subsequent errors, as is typical of C. 00:10:33 Ok, where do I get it? 00:10:40 libsdl.org 00:11:06 oops 00:11:21 No .h in the win32 package. 00:11:58 Looking in the source snapshot. 00:12:07 one of my source files includes "SDL/SDL.h" and the rest "SDL.h" 00:12:20 There's no sdl.h in the whole tree of the two tars you had me download. 00:12:59 you might have to remove the SDL/ from the include paths at the top of sound.c 00:13:09 should be SDL.h 00:13:17 weird 00:13:33 Ok. But I have to unzip all these sdl*.h files to somewhere useful, hang on. 00:13:44 looks like it needs SDL_mixer.h SDL_image.h and SDL_keysym.h 00:14:13 the first two might be in seperate packages 00:14:21 keysym I assume comes with the main libsdl 00:15:02 rocks.c:1:23: SDL_image.h: No such file or directory 00:15:09 Any thoughts as to where that can be found? 00:16:34 seperate package from libsdl.org 00:16:39 think I found it. 00:16:45 you'll need to get the dev packages for sdl-image and sdl-mixer 00:17:58 ok. 00:18:01 Getting mixer now. 00:19:20 f:\mingw\bin\..\lib\gcc-lib\mingw32\3.2.3\..\..\..\..\mingw32\bin\ld.exe: cannot 00:19:20 find -lSDLmain 00:19:20 mingw32-make: *** [vor] Error 1 00:19:43 SDLmain, I guess I need. 00:20:35 checking the mingw sdl stuff 00:21:17 on my box SDLmain.a came from the "libsdl" package 00:21:29 What directory should I put the libs in to be found? I'll look at the makefile. 00:21:47 put them right in the source directory 00:21:50 with main.c and all that 00:21:56 me too, but no joy. 00:22:12 well, the dynamic libs should go there anyway 00:22:28 I want to package the dynamic libs with the exe so people don't have to install SDL to play the game 00:22:42 but as I understand it .a files get built into the exe 00:22:59 Do I need more than libSDLmain.a ? Coz it ain't linking. 00:23:47 should the makefile include the 'lib' prefix? 00:24:25 you can add paths for it to look for libraries with -L 00:24:41 yeah, but you have to add . to that path? 00:24:44 ie: -L. should make it look in the current dir 00:24:50 dinno 00:24:56 I don't know that much about the paths and such 00:25:03 linux tends to have that stuff already set up 00:25:19 ok, you actually do, which is astonishingly stupid. Ok, now it wants the image.a. 00:26:34 ooh :) tonight I turn my ringer off :) 00:26:39 got woken by the phone twice this morning 00:26:57 there doesn't appear to be an approprate .a for mingw for sdl_image, at least not one I've found so far. 00:27:08 weird 00:28:37 true enough 00:28:45 so I'm kind of stuck without that. 00:29:24 undefined reference to `IMG_Load' 00:30:11 Likewise, they're hiding a mixer.a for mingw pretty damned well, if it exists at all. 00:30:41 Are those functions in the dll or something? 00:31:24 maybe 00:31:32 How should I proceed? 00:31:41 did you try removing -lmixer -limage from the makefile? 00:32:05 Yes, then I get a raft of undefined references, mostly to mixer stuff, but also to IMG_Load which I imagine is in sdl_image. 00:33:07 ok 00:34:05 I made that change to sound.c, as well, btw. 00:37:17 this is weird 00:37:32 It compiles otherwise. 00:38:31 There are .lib files in the VC6 stuff, but I'm guessing ld won't recognize'em. 00:39:37 I could go through the source and remove all calls to the offending libraries, and see what I get. :) 00:40:21 hehe 00:40:27 no good if it can't load the graphics 00:40:52 Well, maybe there's .a files in some older version of the SDL stuff? Did this ever build under mingw? 00:41:21 after googling a very little bit I've heard suggested to build SDL-image (and maybe sdl too) from source 00:41:32 or the last post here: http://www.gamedev.net/community/forums/topic.asp?topic_id=92297 00:41:39 and that's going to magically build the .a files? jebus, that's an uphill climb. 00:41:39 says how to make .a files from the dlls 00:42:04 we have built it on windows before, I'm pretty sure it was with mingw 00:42:18 I mostly just watched as tathi figured it out though 00:42:40 That link the message gives for pexport isn't valid any more. 00:43:23 Found another copy. 00:45:05 Ok, now I need dlltoo. 00:45:14 dlltool. This is a PAIN IN THE ASS Jason. :) 00:45:27 this explains how to install mingw and sdl: http://www.libsdl.org/extras/win32/mingw32/README.txt 00:45:35 sorry 00:47:05 Ok, it builds. Popup error: "The procedure entry point SDL_strlcat could not be located in the dynaminc link library SDL.dll." 00:47:47 huh 00:48:15 not a function I've heard of 00:48:24 it's not the vor sources 00:48:41 does it run anyway? 00:48:56 Stops dead. 00:49:24 did you install msys? 00:50:04 Got a new SDL.dll. Game is running. 00:50:11 Oddly it started up once, and closed immediately. Second time, it runs. 00:50:31 And the keyboard controls are ...? 00:50:37 arrow keys 00:50:46 and that's it? Just get out of the way? 00:50:49 or nthc if you use dvorak 00:50:51 yep :) 00:51:31 Makes a nice boom noise. Seems to work. 00:51:47 pass -m and see if the music works 00:51:51 ./vor -m 00:52:18 Yes, extremely homosexual techno music is now playing incessantly. 00:52:31 Wait, I'll get my leather pants and vest. 00:52:32 lol 00:52:43 now you see why it's disabled by default :-P 00:53:03 heh 00:53:27 Anyway, it all works, after one amazingly annoying process. 00:53:31 but still, if you could create a windoze shortcut that passes -m that would be cool 00:53:39 You can. 00:53:52 I can? 00:53:59 I mean the universal you. Anyone can. 00:54:06 I can't, I mean it'd be path-specific to my system. 00:54:16 yes, but most people aren't that sophisticated 00:54:27 oh 00:54:36 no relative shortcuts 00:54:37 booo 00:54:41 oh well 00:55:02 You need an installer. 00:55:14 what would I have to do to get something in that dir that people could double click to run ./vor -s? 00:55:19 make a batch file? 00:55:32 Oh, sure, that'd do it. 00:55:41 @./vor -s 00:56:00 What's -s? 00:56:03 * JasonWoof blinks 00:56:09 -s is no sound 00:56:12 Oh ok. 00:56:14 oh, sorry 00:56:23 well, that too actually 00:56:33 a batch file -- playvor.bat -- @./vor -whatever 00:56:38 would be cool to have three: no sound, just explosions, with music 00:56:54 I'm just in the habbit of typing: ./vor -s 00:56:59 Is there sound other than the explosion? I'm not hearing it. 00:57:04 no 00:57:11 Anyway they can just click on the vor file, it'll play with no switches. 00:57:18 just right 00:57:47 so I can just do: echo '@./vor -s' > vor-nosound.bat 00:58:23 .\ sorry 00:58:46 after we got a review in Linux Tab somebody contacted me asking if we wanted him to write new music for vor 00:59:13 I replied, blathering on a bit about small file sizes and making sure that he can give us compatible music 00:59:16 Heh. 00:59:17 then never heard from him again 00:59:25 Who was it? 00:59:26 oops, that's Linux Tag 00:59:48 I forget 01:00:07 was pretty exciting to find we had a review in a magazine 02:22:21 Slava, I've improved that quicksort a lot. Remind me to give you an update. 02:28:05 --- quit: slava () 04:46:18 --- quit: Cheery ("Download Gaim: http://gaim.sourceforge.net/") 04:55:44 --- join: PoppaVic (n=pete@0-1pool65-71.nas22.chicago4.il.us.da.qwest.net) joined #forth 06:38:45 --- join: Ray_work (n=Raystm2@199.227.227.26) joined #forth 07:06:03 --- join: madwork (n=foo@derby.metrics.com) joined #forth 07:16:04 --- join: Cheery (n=Cheery@a81-197-19-23.elisa-laajakaista.fi) joined #forth 07:20:21 --- join: nighty (n=nighty@66-163-28-100.ip.tor.radiant.net) joined #forth 07:20:32 Quartus, you around? 07:23:58 lo 07:25:47 hey 07:51:08 --- join: nighty_ (n=nighty@66-163-28-100.ip.tor.radiant.net) joined #forth 07:51:26 --- quit: nighty (Read error: 113 (No route to host)) 07:54:51 --- quit: k4jcw (Remote closed the connection) 07:56:59 --- join: k4jcw (n=jcw@adsl-065-006-151-062.sip.asm.bellsouth.net) joined #forth 08:03:50 --- quit: virl (Read error: 110 (Connection timed out)) 08:13:00 Opinion poll: I've added support for socket, bind, listen, accept, etc. Oddly, the words are called "socket", "bind", "listen", "accept", etc. Current I do not support dictionaries. Should I rename these words to "net-socket", "net-bind", etc? 08:14:15 --- join: Ray-work (n=Raystm2@199.227.227.26) joined #forth 08:28:56 --- quit: Ray_work (Read error: 110 (Connection timed out)) 08:35:00 --- join: Ray_work (n=Raystm2@199.227.227.26) joined #forth 08:42:11 Leave the names and add wordlist support :-) 08:44:46 Yea. I really should. 08:46:34 --- quit: PoppaVic ("Pulls the pin...") 08:50:18 --- quit: Ray-work (Read error: 110 (Connection timed out)) 08:57:41 --- nick: Raystm2- -> nansmt 09:27:35 k4jcw: cool stuff 09:27:39 k4jcw: what forth? 09:28:26 --- quit: madwork ("?OUT OF DATA ERROR") 09:34:20 --- join: madwork (n=foo@derby.metrics.com) joined #forth 09:37:46 JasonWoof, my own. It's a pseudo-forth. 09:38:16 The stack supports ints, floats, strings, and what I call mptrs. The words all have type checking for their arguments. 09:38:52 Gotta run out, I'll tell you more about it later. 09:51:09 --- join: virl (n=virl@chello062178085149.1.12.vie.surfer.at) joined #forth 09:53:04 --- join: Quartus_ (n=Quartus_@209.167.5.1) joined #forth 10:10:40 --- join: Ray-work (n=Raystm2@199.227.227.26) joined #forth 10:10:47 rays 10:15:23 --- join: tgunr (n=davec@70-41-218-134.cust.wildblue.net) joined #forth 10:28:03 --- quit: Ray_work (Read error: 110 (Connection timed out)) 10:40:20 *(@#&$^(!@*#^&$(*@#^&$(*@#&^$(@*#&^$ 10:40:30 I can't get the gimp to let me move pixels around 10:40:42 this has got to be the most annoying thing in the universe 10:40:48 I select a rectangle 10:41:02 then try to drag it, and instead it makes a new rectangle 10:41:34 I try to move it with the move tool, and I can get it to either move the selection outline (but not the contents) or move the entire layer 10:42:45 gimp ui sucks big time 10:52:21 ok.. 10:52:57 it's interesting everybody seems to say that gimps ui sucks, except me. I'm quiet fine with it. 10:53:33 for the most part I've been pretty happy with the gimp 10:54:13 yeah :-) 10:54:21 another gimp loving soul 10:54:35 dunno why it was giving me trouble today 10:55:31 hmm? so a stupid behaviour ala squeak? 11:29:17 --- join: snoopy_1711 (i=snoopy_1@dslb-084-058-155-238.pools.arcor-ip.net) joined #forth 11:29:48 --- quit: Snoopy42 (Nick collision from services.) 11:29:57 --- nick: snoopy_1711 -> Snoopy42 12:26:44 --- quit: Cheery (Remote closed the connection) 12:28:40 --- join: EsotericMoniker (n=Esoteric@207.226.175.73) joined #forth 13:23:38 --- quit: Quartus_ (Read error: 104 (Connection reset by peer)) 13:36:28 --- part: saon left #forth 13:46:26 --- nick: docl -> lukeparrish 14:32:36 --- join: vatic (n=chatzill@pool-162-84-156-148.ny5030.east.verizon.net) joined #forth 15:08:36 --- quit: Ray-work ("User pushed the X - because it's Xtra, baby") 15:56:34 --- nick: nansmt -> Raystm2 17:03:29 gnah, when I would know how a correct create_window request looks like for the xprotocol 17:07:31 when? besides that statement doesnt parse properly in engrish? :) 17:11:17 --- quit: virl (Remote closed the connection) 17:27:06 --- quit: vatic ("*poof*") 17:36:10 --- nick: Quiznos -> GoogleMaster 17:39:50 --- nick: GoogleMaster -> Quiznos 17:52:40 --- join: nighty (n=nighty@CPE00119576a9c5-CM0012c90d36fc.cpe.net.cable.rogers.com) joined #forth 18:23:27 --- nick: Quiznos -> ElmerJFudd 18:49:32 --- nick: ElmerJFudd -> Quiznos 19:27:08 --- quit: nighty (Read error: 104 (Connection reset by peer)) 19:29:59 --- quit: EsotericMoniker ("Trillian (http://www.ceruleanstudios.com") 20:19:18 Hi k4jcw. 20:19:58 Just saw your note. 20:21:13 ah 20:21:39 I was going to ask about a typical implementation of case/of/endof/encase, I think. 20:21:52 There's on in the Standard doc that works nicely. 20:22:22 Do you happen to have a link to that? Or at least the root? 20:23:19 http://quartus.net/dpans 20:24:46 http://www.quartus.net/files/PalmOS/Forth125/Library125/case.txt 20:25:44 So basically it's building a list of fixup addresses that endcase patches? 20:26:39 Sure, more abstract to say it compiles a sequences of IFs that are resolved by multiple THENs via endcase. 20:27:10 Yea, ok. 20:27:27 I got all my network words tested today. I have a stupid little echo app that works quite well. 20:27:32 Good deal. 20:28:33 CASE/OF/ENDOF/ENDCASE is not my favourite construct. It's sometimes necessary, but it should be avoided. Similar in that way to PICK and ROLL. 20:29:11 OK, so the top of the text file says "case 97.8.27 (from dpANS docs)", but I don't see a section 97 in the index. 20:29:24 That's the date I wrote the file. :) 20:29:37 argh 20:29:49 It's in A3.2.3 20:30:29 A.3.2.3 Stacks 20:30:36 A3.2.3.2 actually, scroll down a bit. 20:30:40 oops. 20:30:43 I didn't mean to paste that. 20:31:17 Why don't you care for it? And what would you suggest instead? 20:31:33 http://quartus.net/dpans/dpansa3.htm#A.3.2.3.2 scroll down a bit 20:32:02 Yah, I found it. 20:32:09 CASE is syntactic sugar for a bunch of nested IF/ELSE/THEN conditionals, which signal bad Forth the way the use of PICK, ROLL, a multiplicity of variables, or locals does. 20:32:47 Lookup tables are a far better solution, generally. 20:32:54 Well, I would agree, except in certain cases. If you use system calls, many return -1, 0 and >0. -1 means error, 0 means file closed, and >0 is length. 20:33:16 And I much prefer the readability of case over if blocks. 20:33:23 Try it with neither one. 20:33:49 Not sure what you mean. 20:33:57 What function are you talking about that returns those three possibilities? 20:34:28 Off hand, specifically read() 20:34:54 Also, select(). 20:35:07 Ok. I'm out of touch, I'll have to check the args for read(). I assume you want to wrap it to make it more Forth-like, and then use that wrap. 20:35:09 -1 means error, 0 means timeout, >0 indicates files set. 20:35:15 Yes. 20:35:52 You'd want to THROW the error. So ... ?dup -1 = -whatever throw takes care of that cas. 20:35:54 case. 20:37:46 So you're down to dealing with the 0 (read() read end-of-file) or >0 (bytes read). 20:38:04 Which I'd just return. 20:38:24 What would be nice (IMHO) is a ?= word that does not duplicate the TOS-1 value if they match. 20:38:32 -1 ?= -xx throw 20:38:41 If you make errno visible in your Forth, it could as easily be ?dup -1 = errno and throw 20:38:55 Yes. errno is already visible. 20:39:00 I left out an 'and' up there. That's the idiom. Make the comparison, and the value, do the throw. 20:39:27 I need to fix my value for TRUE, I think. It's 1, instead of all bits set. 20:39:35 Yes, you need all bit sets. 20:39:41 er, all bits set. 20:40:31 : errno-throw = errno and throw ; 20:40:35 I think I am going to be ready to implement word lists here shortly. I may (read: will) have more questions about that. 20:40:45 Then ?dup -1 errno-throw 20:41:10 Ok. 20:41:13 Why use ?dup instead of dup? 20:41:33 question before means maybe do that 20:41:33 Oh, I don't know, just an example. 20:41:45 question after means "should I do x?" 20:41:50 Yes, I know that. 20:42:04 But for a test for -1, it has no advantage that I saw. 20:42:16 oh, I was assuming different quoting: Why use "?dup" instead of "dup?" 20:42:18 I thought perhaps he had some arcane reason. 20:42:26 Stupid punctionation! 20:42:26 It would discard a zero result. You get the idea, though. 20:42:34 Yes 20:43:02 I spent some time writing a quicksort implementation over the last couple of days. 20:43:47 Fixed record size with key fields, or arbitrary record sizes? 20:44:36 Sorts arrays of cells, you can use them as integers, or as pointers and set the comparison word to anything you like. 20:45:10 cool 20:45:11 foo 5 ' < sort sorts an array of cells, descending. 20:45:28 foo 5 ' scompare sort sorts an array of pointers to counted strings. 20:46:17 etc. 20:47:07 I found one that Ertl is credited as having written, and it flat out didn't work. I hope it was a transcription problem. 20:47:09 Id'a not thunk of passing the xt to the sort routine. I'd have set up a deferred word that the user revectored to his compare routine. Your way is better. 20:47:29 I do set up a deferred word, but it's sort's business what that word is named. 20:51:05 Information-hiding, and all that. :) 20:51:31 --- join: futhin (n=wunderwa@bespin.org) joined #forth 20:51:31 --- mode: ChanServ set +o futhin 20:51:41 --- part: futhin left #forth 20:52:55 It makes a much more informative benchmark than the simple fib routines I was using before. 20:56:53 I wonder if my pseudo-forth can run your sort. 20:57:19 I don't know, your typechecking stuff might get in the way. 20:57:39 Do you have RECURSE ? 20:57:45 Yes. 20:58:43 Can you @ a cell, pull another cell from the return stack with R@ two to an arbitrarily revectored deferred word that compares the two? 20:58:56 sorry, "and pass the two to an" 20:59:11 over-deleted, there. :) 20:59:16 In theory. 20:59:22 Might work, then. 20:59:53 Be powerful slow in your system, though. Better to call qsort() since you've got the library right htere. 21:00:39 It would be interesting to run as a benchmark to see if the speed ratio remains constant compared to fib. 21:02:03 It'll likely be considerably worse. 21:02:22 fib mostly tests the speed of a call. 21:02:56 For whatever interest it may be, I compiled mine under Cygwin and my test app continued to work. I had only one issue, which was that cygwin does not have cfmakeraw in it's library. 21:03:06 What is that function? 21:03:25 It's for setting all the right bits to make the console uncooked, non-block, etc. 21:03:27 Ah, a termios thing. 21:03:30 Yes. 21:05:47 Is postpone anything more than "' ," ? 21:05:56 That's tick word comma 21:06:12 Yes, it's more than that. It compiles the compilation-semantics of a word. 21:06:28 I'm not sure what the means. 21:06:34 So : foo postpone dup ; immediate makes foo a word that will compile DUP. : bar 5 foo . . ; bar -> 5 5 21:07:38 If postponing a word that executes at compile-time, like IF or ( or something, it later executes it instead of laying down code. 21:07:52 So POSTPONE xxx does whatever xxx would do if it were encountered at compile-time. 21:08:08 Only it does it later. The action is POSTPONEd. 21:10:40 so, in pseudo-code, : postpone bl parse (find) immediate? not if literal, ['] compile, then compile, ; 21:11:03 That pseudocode assumes a pseudoword pseudonamed (find) that returns an xt and the immediate status. 21:11:20 And a literal, that lays down code for a literal. 21:11:53 oh, and postpone itself would be immediate. 21:12:05 I think I can implement that. 21:12:17 Here's the full pseudothing: : postpone bl parse (find) immediate? not if literal, ['] compile, then compile, ; immediate 21:13:32 Maybe more pseudocorrect: : postpone parse-name (find) immediate = not if literal, ['] compile, then compile, ; immediate 21:13:33 However, I can't do it in Forth (I need name for my pseudo-Forth), I'd have to do it in C. Right now, the tokenizer is not exposed. 21:13:58 er, scratch that last one, can't have the immediate constant named 'immediate', that's taken. :) 21:14:02 I'll pseudostop now. 21:14:05 k 21:14:37 What does literal, do? Laydown (literal) ? 21:14:39 Oh, any number of Forth programs depend on having access to the input buffer, and expect certain behaviour from PARSE WORD and friends. 21:15:17 Yes, and they won't run. I don't have TIB, and don't really play to support it. 21:15:43 literal, is a normal word (non-immediate) that lays down code to push the provided literal value onto the stack, however that works in your system. 21:16:35 TIB isn't needed, but >IN and SOURCE are handy, as is REFILL, WORD and PARSE. parse-name is another useful one. Once built you can have your interpret loop use'em. 21:18:03 How do you include source without a way of saving and restoring the current input specification? No way to nest one include inside another? 21:19:18 It can nest includes. 21:19:35 I have "fload", and it ends up being recursive. Whatever state it needs is saved. 21:20:11 Another annoying arbitrarily-renamed word for a traditional function. :) 21:20:31 In fact, it's somewhat intelligent. If you're loading a nested file and it gets an error, you get the load stack, so you can see what included what. 21:20:42 fload came from FPC, I think. 21:21:44 --- quit: tgunr (Read error: 104 (Connection reset by peer)) 21:21:45 Yes, displaying the nested include list is the typical 'include' setup based on included, with save-input, restore-input, and catch/throw. 21:21:52 I also like my error stack. For instance (short paste): 21:21:55 bind -- 98/Address already in use 21:21:55 --> 0x8064710 (abort) 21:21:55 --> 0x8067020 (prettyAbort) 21:21:55 --> 0x8067088 (errchk) 21:21:55 --> 0x8067130 (bind-socket) 21:21:55 --> 0x8067378 (listen-test) 21:21:57 --> 0x80673a8 (go) 21:22:01 (0,0) > go 21:22:14 Well, the (0,0) > go belongs at the top. 21:22:22 Sure. That's the usual sort of backtrace. 21:22:35 gforths is hideous 21:22:57 What's hideous about it? It lists addresses and names. 21:23:36 Quite similar to yours, actually, with $ instead of 0x. 21:24:39 Oh, I remember. It's that for any mistyped word you get one. That's what I find annoying about it. 21:25:05 For any throw, but it's only a couple of lines for a mistyped word. 21:25:13 Backtrace: 21:25:13 $E850B4 throw 21:25:13 $E90B10 no.extensions 21:26:59 Too verbose. 21:27:36 I'm off to bed. Tomorrow (later today?) I shall implement implement case/of/endof/endcase, and try to implement postpone. 21:27:40 Ok. 21:27:49 Not sure if I completely understand postpone well enough to do it right. We shall see. 21:27:58 Thanks for you help. It's always educational. 21:28:05 Ok. There are coretests for postpone. 21:28:20 ah, cool. I should get a pointer to those, and try some of them. 21:28:33 Good idea. :) 21:29:16 Are they in the gforth source distro? 21:29:22 Think so, yes. 21:29:25 k 22:31:47 --- join: Cheery (n=Cheery@a81-197-19-23.elisa-laajakaista.fi) joined #forth 22:58:43 Update. Now with a backtrace facility. http://quartus.net/retro/retro-ans.fs 23:59:59 --- log: ended forth/06.08.28