00:00:00 --- log: started forth/05.05.17 00:32:24 --- join: Topaz (~top@sown-90.ecs.soton.ac.uk) joined #forth 00:38:45 --- quit: bbls () 00:45:40 --- join: bbls (~bbls@80.97.121.4) joined #forth 00:49:47 --- join: segher (~segher@blueice3n1.de.ibm.com) joined #forth 01:54:11 hmm, theoretically the forth dictionary could be used as for tile graphics or other graphics. But isn't that slow? 02:03:39 --- join: Robert_ (~snofs@c-f778e055.17-1-64736c10.cust.bredbandsbolaget.se) joined #forth 02:04:23 --- nick: Robert_ -> Robert 02:05:27 what do you mean to use it for tile graphics? 02:05:39 you alloc thigs normally, not in the dictionary 02:05:49 in dictionary you put just the address of the words 02:09:28 ah, yes. sry, I'm a little bit confused about forth, because I'm relative new to forth. 02:18:33 np :) 02:27:22 --- quit: nastm (Read error: 110 (Connection timed out)) 02:28:58 Forth is an amazing programming language, so simplistic 02:29:52 simple not simplistic :) 02:31:29 ah, ok. 02:32:36 --- join: Raystm2_ (~vircuser@adsl-69-149-50-250.dsl.rcsntx.swbell.net) joined #forth 03:32:06 --- join: snoopy_1711 (snoopy_161@p54A7DA53.dip.t-dialin.net) joined #forth 03:45:25 --- quit: bbls () 03:59:48 --- quit: Snoopy42 (Read error: 110 (Connection timed out)) 04:00:09 --- nick: snoopy_1711 -> Snoopy42 04:15:12 --- join: AlexF (~Alex@196-220.suscom-maine.net) joined #forth 04:17:51 --- quit: KB1FYR (Read error: 110 (Connection timed out)) 04:30:34 --- join: aum (~aum@60-234-138-239.bitstream.orcon.net.nz) joined #forth 04:31:00 --- part: aum left #forth 06:15:01 --- quit: Frek ("Client exiting") 06:15:40 --- join: Frek (~anvil@h254n2fls31o815.telia.com) joined #forth 06:54:44 --- join: bbls (~bbls@80.97.121.4) joined #forth 06:54:45 hello 07:59:30 Hi 07:59:40 hi Robert 08:24:29 --- join: tathi (~josh@pcp01375108pcs.milfrd01.pa.comcast.net) joined #forth 08:54:17 --- quit: saon|smgl (Read error: 104 (Connection reset by peer)) 08:56:16 --- nick: Raystm2_ -> nanstm 09:02:43 --- join: saon_ (~saon@c-66-177-224-130.hsd1.fl.comcast.net) joined #forth 09:11:23 --- join: snoopy_1711 (snoopy_161@p54A7F4E7.dip.t-dialin.net) joined #forth 09:28:18 --- quit: segher ("Leaving") 09:33:49 --- quit: Snoopy42 (Read error: 110 (Connection timed out)) 09:34:02 --- nick: snoopy_1711 -> Snoopy42 09:40:56 --- join: vitaminmoo (~vitaminmo@dsl-95-113.peak.org) joined #forth 09:42:25 aw 09:42:28 no i440r 09:44:30 Poor us. 09:47:00 yeah well 10:11:40 --- quit: saon_ ("Lost terminal") 10:45:15 --- join: solar_angel (~jenni@CPE0000e812679b-CM000a7362da55.cpe.net.cable.rogers.com) joined #forth 10:48:06 Hi. 10:48:21 hiya 10:52:11 what's the difference between interpret, execute and next? 10:52:41 hrm... i don't think my FORTH had either interpret or execute, now that i think about it. 10:52:45 execute - pick a word address from the stack and call that word. 10:53:12 oh right 10:53:16 i had that one. 10:53:23 next - execute the next instruction/word. This can be "built into the processor" in case of a native code compiler. 10:53:51 Otherwise it's usually a macro or small routine that is jumped to. 10:54:15 "interpret"... is there any standard meaning? I often use that word for internal stuff in my Forths. 10:54:33 i don't recall... but then, i never was an ans-* fan. 10:55:18 me too, but I'd like to know more about what's going on under the 'hood' of a forth system. 10:55:51 Did you read "Moving Forth"? 10:55:59 Or perhaps "Build your own Forth". 10:55:59 woo, "moving forth" rocks. 10:56:06 i've read both of those... :) 10:56:10 of course, i've built my own forth. 10:56:14 good starting points both. 10:56:16 no, I haven't read these books. 10:56:21 they're webpages, actually. 10:56:25 available online 10:56:41 Yes, both are good at explaining the concepts. 10:56:48 As are the people in here :) 10:57:06 When you manage to get us to stop fighting about definitions and actually explain the stuff. 10:57:30 heh 10:57:55 something i learned from FORTH.. shun float math. 10:58:02 yesterday i wrote a blazing fast spline renderer. 10:58:07 entirely without floating point math 10:58:11 hell, it doesn't even use division 10:59:25 hmm, nice. I'm thinking of not to implementing those things like division/multiplication 11:00:03 my memory if INTERPRET is that you pass a string or something, and it parses and executes the code 11:00:18 Floating point can be useful, though. 11:00:31 And not even slow anymore. 11:00:56 Robert - well true, sortof... 11:01:07 yeah, on ppc floating point is supposedly faster than int 11:01:11 in 3D graphics, there are a few things that work best with floats... 11:01:25 I have at the time a couple of primitive words, which won't be searched in a dictionary, they are all bytecodes because I need to implement a vm on which the forth system can run under. 11:01:27 Herkamire - well that's just nasty... int math is far more generally important. 11:01:32 solar_angel: Don't think I ever used floating-point outside that. 11:01:48 that said, there are ways of parallelizing integer math (and just plain using SIMD) that make things even faster. 11:01:59 Robert - well, i use floats for things like quaternions... 11:02:07 doubles, actually, just 'cause. 11:02:20 (the things where accuracy is more important) 11:02:30 but for just smearing lines on a screen, i'm all about integer math 11:02:40 Yes. 11:02:54 solar_angel: the SIMD on my box does floats just as well as ints 11:02:58 altivec 11:03:20 I once profiled a 3D engine, and found that the floating-point to integer conversion was where most time was spent. 11:03:26 Herkamire - SSE2 does too... but floating point math has many problems, not just speed. 11:03:44 Robert - depending on the engine, that might be misleading. 11:03:48 And that in a program doing numerous 3D transformations and polygon drawing. 11:03:59 solar_angel: In what way? 11:04:18 the x86 floating-point unit has *always* been seperately pipelined 11:04:27 so CPU-specific optimizations matter a lot. 11:04:45 you have to sync the two units to do a conversion 11:04:50 (or at least, that was once true) 11:04:59 which means you were probably seeing FWAIT's eating up a lot of time 11:05:04 how much cycles does your implementation of 'drop' takes? mine 4 cycles raw. 11:05:16 --- quit: Topaz (Remote closed the connection) 11:05:21 solar_angel i tought fwait is not required in post 486 11:05:24 * solar_angel misses her old optimizing forth... 11:05:30 it took zero cycles for drop. :P 11:05:52 zero? 11:05:56 bbls - well, it's not explicitly required no... but that just means that it's being implicitly executed when you sync the two. 11:06:01 yes, zero. 11:06:21 optimizing stc forths tend to do that sort of stack juggling at compile time. 11:06:47 you can't have zero cycles unless you inline the previously called word and remove any unused parts (the ones that would generate the TOS) 11:06:51 solar_angel: Actually, I think I tracked down the problem to something I saw in a Pentium optimizing guide. That the C compiler inserted instructions to do _truncating_ conversion instead of running, which seriously messed up pipelining. 11:07:49 oh 11:07:57 okay 11:08:13 bbls - my STC FORTH kept most of the stack in registers. 11:08:37 so almost all the shuffling operations took zero cycles. 11:08:51 swap, dup, etc all took zero cycles best case 11:08:55 how? 11:09:00 my probably indirect forth keeps the complete stack in registers :) 11:09:23 virl - unless you're using a register allocator, that's actually quite a slow way of doing things 11:09:30 bbls - i used a register allocator. 11:09:49 a register allocator? 11:09:54 how can allocate registers 11:10:01 without 11:10:04 inlining words? 11:10:21 actually, i cheated. the compiler was written in C, and was quite large. 11:10:25 it generated some nice code though 11:10:28 hey, I program a forth for microcontroller which haves more than 50 registers ;) 11:10:38 virl - ohhhh, well okay, that's a different story. 11:10:49 microcontroller registers act very differently to most systems. 11:11:03 usually you can even indirectly index uC registers. 11:11:22 uC? 11:11:27 uC = microcontroller. 11:11:39 which uC are you working with? 11:12:46 sx52 from ubicom, its a part of the xgamestation(www.xgamestation.com) and is really nice. 11:13:10 ahhh, an sx. nice. 11:13:28 pic instruction set, but way faster, am i right? 11:13:41 and i never know what to make of the xgamestation... 11:14:57 it looks cool, but very odd. 11:15:05 eh, for me it's the first real contact with assembler and because of this fact can you explaine me what a pic instruction set is? 11:15:50 PIC, programmable Interrupt Controller? 11:16:01 no... the Microchip PICmicro. 11:16:06 it's a type of microcontroller. 11:16:13 the SX is a souped-up version. 11:16:19 solar_angel let's suppose that you call consecutivelly two words, would you be able to optimize that? 11:16:40 bbls - it supported inlining, so in many cases, yes. 11:16:53 ok, but without inlining? 11:17:20 why would you write an optimizing compiler that didn't support inlining? 11:17:35 and between two out-of-line words, a drop would compile an instruction. 11:18:01 it's zero instructions most times, but the register allocator emits instructions whenever there's a stack checkpoint 11:18:27 if you have one inlined word followed by an uninlined one, could you optimize then? 11:19:10 it really depends. sometimes, yes. 11:19:12 i suppose you could only inline after inline or inline after normal 11:19:18 for instance... "1 2 + DROP" compiles no instructions. 11:19:35 ok, but 1 2 and + are all inlined 11:20:18 ah, thanks solar_angel, now I'm a little bit wiser than before. 11:22:01 bbls - actually, the register allocator allocates a literal '1' on the stack, and a literal '2' 11:22:17 then the built-in '+' operator sees two literals, adds them together, and puts the literal back on the stack 11:22:30 all the while, the real (physical) stack has not been touched, and no actual registers have been allocated. 11:22:36 the "drop" operator drops just the literal 11:22:39 leading to no emitted instructions 11:23:28 oh 11:23:48 i tought you do optimizing after asm initial generation 11:24:57 nope 11:25:01 it generates assembly already optimized. 11:25:08 it's not perfect... it's not GCC-grade optimization 11:25:15 but it beats the pants off of almost any FORTH system :P 11:25:22 :) 11:25:29 oh, and another one... 11:25:39 well, there is factor too, a forth derivative 11:25:49 i know that i has very good optimizations 11:25:58 "1 +" when it has a variable is in, say, "EAX", will emit "INC EAX" 11:26:14 (as will 1+) 11:26:24 and "2 +" will emit "ADD EAX, 2" 11:27:02 i see 11:27:55 yep 11:52:36 hey, does anyone know where the best place to discuss the intricacies of assembly optimization and graphics programming on this network is? 11:53:56 or is this the place? :P 11:54:04 Hm, #asm and #assembler can be good, but sometimes they lack people who know what they're talking about. 11:54:23 #osdev is usually better, but of course also a bit less on-topic. 11:54:36 #forth would be one of the better places, yes. 11:54:58 --- quit: cmeme (Remote closed the connection) 11:56:11 heh, i'm in both here and #osdev. 11:56:12 so okay 11:56:48 i like my spline algorithm... it's quite neat, assuming you want to generate a spline subdivided into a power of two lengths 11:57:03 Actually, I think some people in #uuu at oftc are into that. But I haven't been there for a while, and it's even more off-topic. 11:57:05 --- join: cmeme (~cmeme@216.184.11.2) joined #forth 11:57:13 ah 11:57:21 --- quit: cmeme (Remote closed the connection) 11:57:35 i think i did pretty well, considering it uses, like, 3 adds and 2 shifts per step. 11:57:37 and nothing more 11:57:39 What's a spline algorithm doing, anyway? 11:57:39 pure integer. :) 11:57:48 well, you know what a cubic bezier spline is? 11:57:54 No. 11:58:00 (have you used Illustrator/Corel Draw/Sodipodi/etc?) 11:58:03 I don't know what a spline is, for that matter. 11:58:05 No. 11:58:05 --- join: cmeme (~cmeme@216.184.11.2) joined #forth 11:58:13 oh 11:58:15 * solar_angel thinks 11:58:21 ASCII graphics is about as far as I ever went. 11:58:25 ah okay. 11:58:30 Except with pen and paper. 11:58:44 a spline, in graphics, is a curved line (there are also other uses, but i won't get into them) 11:58:57 you take four points, two of which are endpoints, and two of which are control points 11:59:02 and they define a curve 11:59:10 you can glue them end to end to get curved objects 11:59:52 why four? 11:59:55 not a bspline 11:59:56 much simpler 11:59:59 just 3 points 12:00:08 also it has nice continuations properties 12:00:19 Ah, OK. Two shifts and three adds sounds pretty good. Including calculating the video buffer address, I assume? 12:00:23 (you can split a 4 points line in 2 with 3 points) 12:00:23 bbls - you're thinking a quadratic bezier spline 12:00:38 Robert - no... that's just the spline calculation... i use a line drawing function to connect the points 12:00:52 cubic splines are much more flexible 12:04:52 no matter what the order, though, bezier splines aren't hard to compute 12:05:37 What do you use it for? 12:05:50 I mean, in the application you are working on. 12:06:32 i pretty much just wrote it generically. 12:06:52 i wrote a general-purpose one-dimensional cubic bezier spline computation system. 12:07:05 then i glued two of them to a line drawing function, and drew some curves in my graphics library. 12:09:26 i must go now 12:09:29 bye everyone 12:09:31 --- quit: bbls () 12:20:57 what graphics library solar_angel? is it public domain? =) 12:21:24 : what ." which" ; 12:21:56 PD in for commies. 12:21:59 is* 12:22:05 the graphics library is called "Scarab", this version is codenamed "Scarab Delta" 12:22:16 and it's not public domain, it's not open source, and it's not free. 12:26:18 every cool thing which was made with forth isn't accessible to poor mens like me. :-( 12:26:30 my graphics lib isn't written in FORTH 12:26:34 it's C and assembly. 12:26:38 oh... 12:29:12 x86? 12:29:34 the assembly is x86... there are C versions of all the asm functions though 12:29:41 so it should probably run on a different arch 12:29:48 although there may be some endian issues 12:29:51 Using any "modern" optimizations? 12:30:02 someone wants to buy me a mac mini, i'll port it to mac :P 12:30:03 Or instructions. 12:30:05 modern? 12:30:12 MMX and SSE 12:30:18 As in post-386. 12:30:22 That's modern. 12:30:42 yep 12:30:51 i have 3 versions of my alphablend line function 12:30:53 I've been thinking about learning those. What reference do you use? 12:31:15 intel's official guide 12:31:24 they give them away as a set of pdf's now. 12:31:32 the x86 reference guide 12:33:50 anyway, my alphablend function, i have generic (parallelized regular instructions, does a few gorey things that are really unusual but still standard C)... 12:33:54 i have the MMX 12:33:55 and the SSE 12:34:39 SSE added a couple MMX extensions that change the way one does that. 12:36:20 --- quit: AlexF (Read error: 131 (Connection reset by peer)) 12:37:12 --- join: KB1FYR (~Alex@196-220.suscom-maine.net) joined #forth 12:39:57 ge 12:40:51 eh? 12:41:17 (to KB1FYR) 12:41:35 As in good evening, not Germanium. 12:42:09 ah okay 12:44:42 hio 12:45:14 I knocked out a PCI card and it made me reboot... Who woulda thunk they weren't plu 'n play :P 12:47:06 lol 12:47:10 some of them are. 12:49:16 Not this one :P 12:49:50 you need motherboard support. 12:50:22 anyhow... i'm on my way. 12:50:27 bye 12:52:41 --- quit: solar_angel ("ALT-F4. Wait, that didn't work... Lee-Nucks, what's that?") 13:14:43 --- join: AlexF (~Alex@196-220.suscom-maine.net) joined #forth 13:14:43 --- quit: KB1FYR (Read error: 54 (Connection reset by peer)) 14:22:40 hi all 14:23:18 Hi. 14:55:31 --- join: Topaz (~top@sown-90.ecs.soton.ac.uk) joined #forth 15:08:37 --- join: I440r (~foo@209-234-161-250.gen.twtelecom.net) joined #forth 15:08:37 --- quit: I440r (Client Quit) 15:09:05 --- join: I440r (~foo@209-234-161-252.gen.twtelecom.net) joined #forth 15:42:26 --- quit: Frek ("Client exiting") 15:46:25 --- nick: nanstm -> Rastm2 15:46:53 --- join: Frek (~anvil@h254n2fls31o815.telia.com) joined #forth 15:48:11 --- quit: virl (Read error: 148 (No route to host)) 15:52:09 --- quit: I440r () 16:19:47 --- quit: Topaz (Remote closed the connection) 16:41:10 --- quit: Robert ("leaving") 17:00:11 --- join: skylan (~sjh@dialup-216-211-57-166.tbaytel.net) joined #forth 17:10:47 --- join: Sonarman (~cleetus@adsl-64-160-165-107.dsl.snfc21.pacbell.net) joined #forth 17:46:24 --- join: aum (~aum@60-234-138-239.bitstream.orcon.net.nz) joined #forth 17:46:51 --- part: aum left #forth 17:47:06 --- join: saon_ (~saon@c-66-177-224-130.hsd1.fl.comcast.net) joined #forth 17:47:21 --- nick: saon_ -> saon|smgl 17:56:20 --- quit: tathi ("leaving") 18:09:15 --- join: zol2 (~l@p549DD7F6.dip.t-dialin.net) joined #forth 18:09:31 'morning 18:24:05 --- part: zol2 left #forth 20:02:02 --- quit: Sonarman (Read error: 110 (Connection timed out)) 21:54:14 --- quit: Frek ("Client exiting") 22:22:53 --- join: Frek (~anvil@h254n2fls31o815.telia.com) joined #forth 22:34:47 --- join: bbls (~bbls@80.97.121.4) joined #forth 22:35:01 hello 22:39:47 'lo :) 22:39:57 hi Herkamire 22:50:00 --- join: arke (apache@84.218.22.246) joined #forth 22:53:17 teh hies!! 22:53:39 hi arke 22:57:20 :) 22:57:31 How's life? 22:57:59 not too good :( 22:58:31 Oh, how come? :( 22:58:49 maybe i'll have to go into army those days 22:58:59 :( 22:59:03 How old and what country? 22:59:08 22, romania 22:59:39 Oh. :( 23:00:04 Not fun. 23:00:12 yeah :( 23:00:53 *sigh* 23:01:15 beside this i'm also obese 23:01:24 it will be like hell 23:02:04 Yeah, me too. I can't run 50 meters without breathing faster than a racecar. :/ 23:02:16 I might have to do it. But, I hope not. 23:02:24 :) 23:02:26 I will definetely do everything possible to prevent it 23:02:30 stupid romanian law 23:02:43 there is a mandatory 1 year military service for all males 23:03:19 Germany has it too but you can substitute it with community service or something. 23:03:32 Except that it pays next to nothing. So, I don't know. 23:04:01 well, here it pays next to nothing even if you go in the army :) 23:04:16 stupid rules from the cold war 23:04:17 :) 23:04:29 Yeah :/ 23:30:40 wow, that sucks 23:30:43 I wouldn't do it 23:30:52 :/ 23:31:44 you can't not to do it 23:31:48 since it's mandatory 23:31:56 if you refuse you go to prison 23:33:24 fun. 23:33:26 for how long? 23:33:40 1 year 23:33:52 i meant prison 23:34:00 ah, many more years, not sure :) 23:35:14 3 years 23:35:28 ...and then you still have to do the army 23:35:29 right? 23:36:36 i suppose yes :) 23:38:27 sheesh 23:38:40 --- join: Topaz (~top@sown-90.ecs.soton.ac.uk) joined #forth 23:59:59 --- log: ended forth/05.05.17