00:00:00 --- log: started forth/02.08.09 00:09:56 --- quit: proteusguy (Connection timed out) 00:35:01 --- join: goshawk` (goshawk@panix1.panix.com) joined #forth 00:53:57 --- quit: goshawk` (Killed (NickServ (Ghost: goshawk!goshawk@panix1.panix.com))) 00:53:58 --- join: goshawk` (goshawk@panix1.panix.com) joined #forth 01:00:40 --- quit: goshawk` ("No windows for this server") 01:10:41 --- join: FareAway (fare@samaris.tunes.org) joined #forth 01:23:33 --- join: goshawk` (goshawk@panix1.panix.com) joined #forth 01:29:23 --- part: goshawk` left #forth 01:39:30 --- join: goshawk` (goshawk@panix1.panix.com) joined #forth 01:43:58 --- join: Grunt (~nicad@12-245-48-122.client.attbi.com) joined #forth 01:44:34 What's new in Forth land? 01:51:19 --- join: proteusguy (~irc@24-197-147-197.charterga.net) joined #forth 01:53:02 howdy grunt 01:54:31 lots is new in forth land 01:55:01 new forth implementations, new ideas w/ forth, etc 01:55:25 I got a couple Forth interpreters. I'm curious 01:55:46 it is 3 am right now for me 01:55:49 and i'm going to bed 01:55:56 How difficult is it to integrate Forth proggies with stuff written in another language? 01:56:06 but stick around and you'll be able to discuss forth 01:56:06 5am here. 01:56:11 * Grunt nods 01:56:20 it's not too difficult 01:56:24 check out FICL 01:56:28 * Grunt nods 01:56:45 FICL was designed for integration with other langs i think 01:56:49 i'm not too sure 01:56:54 tired and all :) 01:57:03 futhin: Sleep well. 01:57:07 good night :) 01:57:10 * futhin is afk sleeping 02:11:07 --- quit: proteusguy (Read error: 110 (Connection timed out)) 02:11:55 --- quit: Grunt ("This isn't Happy Hour!") 02:26:22 hey, futhin u still here? 02:51:58 --- nick: FareAway -> Fare 03:35:08 --- join: Speuler (l@62.206.56.189) joined #forth 03:35:30 hi 03:51:33 --- join: proteusguy (~irc@24-197-147-197.charterga.net) joined #forth 04:30:38 --- part: Speuler left #forth 04:34:32 --- join: cleverdra (julianf@0-1pool37-206.nas2.florence1.sc.us.da.qwest.net) joined #forth 04:44:22 hi 04:48:51 hello onetom 04:55:23 --- quit: Soap` (Read error: 104 (Connection reset by peer)) 05:10:36 --- quit: proteusguy (Read error: 110 (Connection timed out)) 05:26:23 --- join: Serg_penguin (~Z@nat-ch1.nat.comex.ru) joined #forth 05:26:31 hi 05:34:22 eh, everybody seems busy.. :( 05:51:17 hi 05:51:25 busy, sorry... 06:24:53 --- quit: Serg_penguin () 06:50:56 --- join: proteusguy (~irc@24-197-147-197.charterga.net) joined #forth 07:11:49 --- quit: proteusguy (Connection timed out) 07:31:08 --- join: Serg_penguin (~Z@nat-ch1.nat.comex.ru) joined #forth 07:31:20 hi 07:31:32 --- quit: Serg_penguin (Client Quit) 07:40:26 --- join: proteusguy (~irc@24-197-147-197.charterga.net) joined #forth 07:59:28 --- join: kc5tja (~kc5tja@ip68-8-206-226.sd.sd.cox.net) joined #forth 07:59:54 --- join: proteus (~irc@24-197-147-197.charterga.net) joined #forth 08:11:17 --- quit: proteusguy (Connection timed out) 09:11:34 --- quit: proteus (Read error: 110 (Connection timed out)) 09:31:01 --- join: proteusguy (~irc@24-197-147-197.charterga.net) joined #forth 09:45:00 --- join: ictx (ictx@sdn-ar-002flflauP177.dialsprint.net) joined #forth 09:56:31 --- join: proteus (~irc@24-197-147-197.charterga.net) joined #forth 10:09:20 --- quit: proteusguy (Read error: 110 (Connection timed out)) 10:09:21 --- quit: ictx ("") 10:29:18 --- join: I440r (~mark4@1Cust199.tnt3.bloomington.in.da.uu.net) joined #forth 10:35:21 --- quit: cleverdra (Read error: 104 (Connection reset by peer)) 10:35:26 --- join: ayrnieu (julianf@0-1pool37-206.nas2.florence1.sc.us.da.qwest.net) joined #forth 10:36:50 --- nick: ayrnieu -> cleverdra 10:40:51 hi ppl 10:41:13 Howdy 10:42:39 im sorting out the instruction tables into all XYZ r1, r1 and xyz mem, reg or reg,mem 10:42:50 so all instructions with the same addressing mode are next to each other 10:52:30 kc5 u recon i need to have segment overrides ? 10:52:44 they dont realy make sense in linux do the? 10:52:44 they 10:52:50 can you modify a selector ? 10:52:57 Not really, and they're easy to implement if you need them. 10:53:17 and is the lock prefix needed ? 10:53:20 what is lock for ? 10:53:25 You can, but Linux doesn't define any method for creating new selectors 10:53:37 Lock is used to lock the bus while updating memory. 10:53:40 It's for SMP systems 10:54:16 so you would MANUALLY put a lock in your code if you were coding for smp ? 10:54:24 lock has been arround longer than smp tho 10:54:35 unless you call the old fpu smp heh 10:54:42 No, lock has nothing to do with the old FPU. 10:54:51 Intel has been builting multi-CPU boards for a lot longer than the PC existed. 10:54:57 aha 10:55:35 Which is why this whole SMP craze is nonsense. The older CPUs could handle the required bus access protocols just as well as the modern CPUs. 10:55:39 sop you think ishould have that one supported by default then, im not looking for a easy way out with these, they are to easy to implement, i just want to minimalize cruft heh 10:56:11 Lock might be handy, but I don't see any reason to use a segment override. 10:56:21 tswhat i was thunkin :) 10:56:28 And again, if you really need a segment override, : cs: $2E C, ; 10:56:49 lock and rep will be the only ones used then :) 10:57:08 --- join: empirion (~empirion@207.6.240.106) joined #forth 10:57:13 * kc5tja nods 10:57:27 greets 10:57:40 I supported the whole gamut of prefixes because the general mechanism was the same, and besides, I'll likely be using them when I implement FS/Forth on native hardware (ring 0-level stuff). 10:57:48 hello empirion :) 10:57:49 re empirion 10:57:54 do you forth empirion? 10:58:17 hi emp! 10:58:22 I'm starting forth on the long quest. 10:58:30 ;) 10:58:35 yea - you might do ring zero (actually, isforth might eventually too :) 10:58:42 long quest ? 10:59:25 Actually i'm just a c hacker, who's looking for a good beginners tutorial on forth. 10:59:34 Any suggestions? 10:59:53 Yes. 10:59:55 * kc5tja finds a URL 11:00:06 aha any c hacker who will look at forth and no go screaming for mama is alright by me :) 11:00:31 http://www.geocities.com/SiliconValley/Bay/2334/4thtutor.htm 11:00:42 no no no, you gotta start off with an intro ;P 11:00:48 lemme get some urls 11:00:54 That's a tutorial for a derivative of Forth called 4tH, but it's close enough to work with most ANSI Forths. 11:00:59 futhin: That IS an intro! 11:01:06 naw, it sucks :P 11:01:19 In what way does it suck? 11:02:06 it's not the best tutorial out there iirc 11:02:13 If we had an online copy of Starting Forth by Leo Brodie, I'd surely use that. But that (a) doesn't exist, and (b) we don't have permission to do it ourselves. 11:02:26 i emailed leo brodie, never got a response 11:02:31 PRECISELY! 11:02:45 He never responds to e-mails about such matters. 11:02:52 He doesn't care about Forth anymore. 11:02:56 somebody with a scanner should scan it up and post it online 11:03:07 If I had my copy of the book, I might consider doing that. 11:03:15 and wait to see if leo brodie responds 11:03:33 It's probably still in the publisher's hands. 11:03:45 Starting Forth isn't the greatest tutorial either, but it's pretty good i guess 11:03:55 well 11:03:57 --- quit: I440r (bear.openprojects.net irc.openprojects.net) 11:03:57 --- quit: proteus (bear.openprojects.net irc.openprojects.net) 11:03:57 --- quit: Fractal (bear.openprojects.net irc.openprojects.net) 11:03:58 --- quit: onetom (bear.openprojects.net irc.openprojects.net) 11:03:58 --- quit: empirion (bear.openprojects.net irc.openprojects.net) 11:03:58 --- quit: goshawk` (bear.openprojects.net irc.openprojects.net) 11:03:58 --- quit: Mongrel (bear.openprojects.net irc.openprojects.net) 11:03:58 --- quit: cleverdra (bear.openprojects.net irc.openprojects.net) 11:03:58 --- quit: ChanServ (bear.openprojects.net irc.openprojects.net) 11:03:58 It's world class! 11:04:01 it's the best out there i mean 11:04:13 ugh 11:04:17 beautiful netsplit 11:04:19 What do you want from a language that you can learn in 15 minutes? 11:04:33 i'm gonna organize my forth links 11:04:39 i need to find my favorite tutorial etc 11:05:10 i forget which tutorial and which intro etc 11:09:30 --- join: Mongrel (~ant@ool-435249eb.dyn.optonline.net) joined #forth 11:09:30 --- join: goshawk` (goshawk@panix1.panix.com) joined #forth 11:09:30 --- join: empirion (~empirion@207.6.240.106) joined #forth 11:09:30 --- join: onetom (~root@novtan.bio.u-szeged.hu) joined #forth 11:09:30 --- join: I440r (~mark4@1Cust199.tnt3.bloomington.in.da.uu.net) joined #forth 11:09:30 --- join: proteus (~irc@24-197-147-197.charterga.net) joined #forth 11:09:30 --- join: Fractal (ajta@h24-77-171-228.ok.shawcable.net) joined #forth 11:10:03 --- quit: proteus (Connection timed out) 11:10:23 echo "here" 11:10:26 --- join: cleverdra (julianf@0-1pool37-206.nas2.florence1.sc.us.da.qwest.net) joined #forth 11:10:46 ? 11:10:54 heh netsplat 11:11:08 just seeing if anyone wasn't affected by the netsplit. 11:11:14 and that should be .( here) 11:11:15 heh 11:11:27 :) 11:11:32 ,( is a comment to be echoed to the screen 11:11:40 it echos everything up to the closing ) 11:11:44 ( is similar 11:11:52 ( everything in here is ignored by the compiler ) 11:11:58 not echoed, ignored 11:12:13 \ this is a comment to the end of the line 11:12:14 in forth? 11:12:17 yes 11:12:25 ( and ) are usually used for a special sort of comment 11:12:35 but alot of people use them for normal commenting too 11:12:38 heh, for a moment I was asking myself what os your useing ;) 11:12:40 its for a stack comment 11:12:51 ( n1 n2 n3 --- ) 11:12:53 thats a stack comment 11:13:03 n1 n2 and n3 are on the stack when you enter the word 11:13:10 n3 is at the top 11:13:17 nothing is on the stack when you exit the word 11:13:23 ( n1 n2 --- n2 n1 ) 11:13:28 thats a stack comment for swap 11:13:37 coolio 11:13:50 left of the --- is stack picture on entry, right of --- is stack picture on exit 11:14:04 in forth you can have as many return values as you want 11:14:17 ( --- n1 n2 n3 n4 n5 etc etc etc ) 11:14:24 no parameters passed but alot returned :) 11:14:34 n or n1 usually means a number 11:14:39 c or c1 means a character 11:14:45 a or a1 etc mean an address 11:14:47 or you can do 11:14:57 ( address length --- ) 11:15:23 that doesnt actually put a name on the parameters, you cant refer to them as "address" or "length" in the code 11:15:26 that's messed heh 11:15:33 but it gives them a description 11:15:45 how messed up ? :) 11:16:06 oh no 11:16:08 in terms of c logic. 11:16:10 ;) 11:16:16 you are perverting his mind with stack comments! 11:16:23 lol 11:16:40 empiron FORTGET c logic, its an oxymoron heh 11:17:00 lol, i'll try. 11:17:01 Yes, let's insult a C programmer who's trying to learn Forth. Good idea. 11:17:08 kc5 lol 11:17:21 And people wonder why Forth has so few members in its active community. :) 11:17:28 emp your at the most difficult part of learning forth 11:17:41 empirion: the mistake lots of forth coders make is to think too much about the stack. forget the stack, ignore the stack, pretend that implicit data passing is the _main_ feature, not a side effect of the stack 11:17:42 kc5 if he gives in now he doesnt deserve to know forth :) 11:17:52 emp just kiddin :) 11:18:05 everyone should be forced to learn it :) 11:18:13 after spending 10 years of coding nothing but asm :) 11:18:35 brb 11:18:36 emp, c places alot of restrictions on what you can do and when 11:18:38 --- join: proteusguy (~irc@24-197-147-197.charterga.net) joined #forth 11:18:41 forth places NON on you 11:18:44 hi proto 11:18:54 I440r - re your earlier comment about organization of x86 instructions: http://www.sandpile.org/ia32/index.htm 11:19:02 I440r - NON? 11:19:24 I think he meant to say none. :) 11:19:32 erm none 11:21:04 oh, I didn't follow that from the previous assertion. 11:24:53 back. 11:25:15 wb 11:25:35 thanks. 11:25:50 so basically what use is the stack in forth if you don't need it? 11:26:02 implicit data passing 11:26:08 that's the main feature you use it for 11:26:35 like you have a word that takes two parameters off the stack and returns one 11:26:39 1 2 + 11:26:43 --- quit: proteusguy (Read error: 104 (Connection reset by peer)) 11:26:53 so 3 is on the stack 11:26:56 then you have other words 11:26:57 that use 3 11:27:19 : square dup * ; 11:27:25 1 2 + square 11:27:33 ah, ok, so you have to specify implicitly what goes on the stack? 11:27:37 there's kind of a data passing between the word + and the word square 11:27:38 empirio - futhin is trying, I think, to preemptively attack the, he thinks, common perception that the Forth stack is a big confusing deal. 11:27:50 cleverdra: that's correct 11:28:15 lots of people get too involved with the stack 11:28:20 : ^2 dup * ; 11:28:21 they'll put wayy to much items on the stack 11:28:32 and then they'll get all confused about how to deal with the items 11:28:46 and they'll use a whole bunch of really slow words 11:28:49 like OVER 11:28:52 or PICK 11:28:57 heh 11:28:59 4 items on teh stack is a soft max for me, i might go as many as 5 or even 6 but after that you can forget it 11:29:13 PICK lets you get a stack item from a depth that you specific 11:29:14 er 11:29:15 specify 11:30:49 --- join: XeF4 (Tipula@12-245-116-85.client.attbi.com) joined #forth 11:30:49 I know this might be a stupid question but does forth allow any unix or socket functions or is it purely in and its own self. 11:30:49 Note that these "maximum depths" for the stack are local to a word. 11:30:57 empirion - it's not a stupid question, and the answer is yes and no, respectively. 11:31:02 In reality, you can have 18 different numbers on the stack, but you don't care about the bottom-most 16 or 15. Only the top-most elements should matter. 11:31:05 empirion: heed chuck moore's recommendations 11:31:06 1) a word should not be more than 1 or 2 lines of code 11:31:06 2) a word should not pass more than 2 parameters by stack 11:31:06 3) try to only manipulate 3 items on the stack 11:31:06 if there are more than 3 items on the stack that you need to manipulate, try solving the problem in a different way - the end results will be better 11:31:32 yes just because the stack comment says ( n1 n2 n3 --- ) 11:31:38 doesnt mean there are only 3 items on the stack 11:31:48 it means that this word only uses 3 items 11:31:58 * cleverdra becomes annoyed. 11:32:01 the stack might actually be ( a1 a2 a3 n1 n2 n3 --- ) 11:32:13 with what ? 11:32:13 cleverdra: about the stack comments? 11:32:23 i440r: yeah, shush on the stack comments :P 11:32:30 Speaking of making a mountain out of an anthill, I think we're beating a dead horse here. :) 11:32:35 futhin: alright, so just for as a good forth programming rule no one should really be concernet with more than 3 items on the stack? 11:32:52 empirion: correct.. the stack isn't an array :) 11:32:54 *concerned 11:32:55 empirion - the most useful answer depends on your particular implementation, but it's generally yes. I've written servers and clients in gforth, using libc, and in isforth, using linux syscalls. 11:33:04 kc5tja - precisely =) 11:33:04 empirion: if you want an array, you can CREATE one 11:33:26 cleverdra: :) 11:33:47 cleverdra: ah, ok. And how generally would you do that? 11:34:00 empirion: Depends on the Forth implementation. 11:34:33 futhin: ok, so basically the language doesn't rely on arrays and pointers like c? 11:34:37 empirion: Some Forths allow you to link against existing C libraries, while others prefer to call system calls directly. Forth environments that sit on bare hardware will, of course, directly drive the networking equipment. 11:34:57 empirion: there are pointers, arrays, linked lists, and other beautiful stuff 11:35:03 kc5tja: ok, got it. 11:35:21 empirion: but often you have to make your own data structures on the fly, when you need them for your program 11:35:41 I hope i'm not sounding like too much of an idiot asking all these questions, but when all you program and know is c your views are somewhat limited. 11:36:00 I started programming Forth back when I was a teenager; at least 8 years ago. 11:36:13 I'm only now starting to come to grips with the inherent philosophy behind Forth. 11:36:24 --- quit: cleverdra (bear.openprojects.net irc.openprojects.net) 11:36:26 heh 11:36:41 So don't be ashamed or embarrassed if you "just don't get it." 11:36:48 it will seem like a bit of a pain in the ass to make your own data structures, but for experienced forth coders, it is a good thing, because you create data structures that you need, there is less bloat and it is more customized to fit your tasks 11:36:49 --- join: ChanServ (ChanServ@services.) joined #forth 11:36:49 --- mode: bear.openprojects.net set +o ChanServ 11:36:51 alright, thanks :) 11:37:07 Even Chuck Moore himself had refined his programming methodologies over the course of 15 years before he finally arrived at a codified philosophy. 11:37:08 --- quit: ChanServ (bear.openprojects.net irc.openprojects.net) 11:37:11 --- join: ChanServ (ChanServ@services.) joined #forth 11:37:11 --- mode: bear.openprojects.net set +o ChanServ 11:37:12 --- join: cleverdra (julianf@0-1pool37-206.nas2.florence1.sc.us.da.qwest.net) joined #forth 11:37:13 --- mode: ChanServ set +o futhin 11:37:18 lol?! 11:37:22 so is forth a compiled language? 11:37:26 Yes and no. :) 11:37:29 It's both. 11:37:47 it's a compiled language with the features of an interpreter :) 11:38:03 Well, it's actually an interpretter that lets you extend the interpretter itself with a built-in compiler. 11:38:05 ah, alright. 11:38:28 most of the source code is compiled 11:38:35 so it's not a slow interpreter 11:38:39 and is it reasonably portable? 11:38:48 When you say something like : Hi! ." Hello World!" CR ;, the : word is executed when the interpretter finds it. : is itself is then responsible for compiling the remainder of the definition. 11:39:41 empirion: If you factor your code well, you'll find that you have an astonishingly little need for ANSI compatibility. 11:39:44 empirion - it's portable in the sense that it's easily ported, but not so much in the sense that it's automatically ported. 11:40:17 empirion: A Forth word serves two equivalent C functions: a C function (no pun intended), and a C #define macro. 11:40:28 forth is one of the most portable languages, because you can code a forth implementation for a new architecture in no time at all.. forth is very small and understandable, and coding a forth implementation in asm can be as small as 1k to 5k depending on what you do 11:40:44 where an 'automatic port' exists when your program, written for implementation A, is instantly compile-able on implementations B and C. 11:40:57 Thus, a Forth application can be made portable by factoring out platform-specific functionality, so that you can simply re-write the relavent words to map it to the new environment. 11:40:58 --- quit: cleverdra (bear.openprojects.net irc.openprojects.net) 11:41:19 --- join: cleverdra (julianf@0-1pool37-206.nas2.florence1.sc.us.da.qwest.net) joined #forth 11:41:31 got it :) 11:41:31 --- mode: futhin set -o futhin 11:41:32 It's exactly equivalent to conditional compilation. 11:41:48 wb cleverdra :) Getting sea-sick yet? :D 11:42:55 Hey, I didn't go anywhere. 11:43:01 =) 11:43:12 No, you only changed planes, that's all... :) 11:44:18 empirion - for maximal portability in Forth, you should design your programs in layers -- for instance, you might have a set of words for terminal I/O: CURSOR-UP CURSOR-DOWN etc. These would constitute a 'layer'. 11:45:12 empirion - words in higher layers only rely on these words -- on their stack effect and on their side-effect, so porting a program that used CURSOR-UP would only involve a possible redefinition of CURSOR-UP 11:45:28 empirion - this may sound complex, but it's how some of the most portable programs are written -- even in C. 11:46:00 forth could be automatically portable if forth implementations were written in a standard way 11:46:16 empirion - it's how a program like NetHack has X11, GTK, vt100 interfaces on Linux, and then ports for various other systems. 11:46:20 Yes, futhin brings up an important point. 11:46:42 ok, whats a good name for an operand or an address override prefix ? 11:46:49 The real reason C is "portable" today is because every single processor is designed to run C today. Every one. 11:47:08 and because a team of coders port a C compiler to new architectures 11:47:20 Through the process of evolution, various features were implemented and removed from processors that, basically, makes all CPUs behave in more or less the same way. 11:47:32 Thus, C compilers and their software are imminently portable "across platforms." 11:47:37 but i'll bet that a forth implementation could be ported by one guy faster than a team of C compiler coders :P 11:47:42 In the early days of C, however, this wasn't the case. 11:48:04 Writing code on a PC under DOS in C was a whole lot different than writing for AmigaOS, which in turn was worlds different from writing C software for Mac. 11:48:18 Today, it's trivial to write "cross-platform" software. 11:48:39 true enough. 11:48:53 Forth makes no basic assumptions about the underlying hardware of the virtual machine, and its performance therefore is greatly affected by that physical hardware. 11:49:11 As with the earliest of C compilers, modern Forth environments are typically tailored to the host environment they run in. 11:49:33 This has two beneficial effects: it breaks non-portable software quite visibly, and it makes that Forth environment quite fast. 11:49:46 isForth compiles at nearly a megabyte of source code per second, without the use of pre-tokenized Forth source, for example. 11:50:00 Contrast this to PygmyForth under DOS, which compiles a meager 32KB per second. 11:50:21 32k of source per second is nothing to sniff at 11:50:25 its still faster than c heh 11:50:39 pygmy is a damned nice forth, i just never liked block files 11:50:41 I440r: Yes, but you're three orders of magnitude faster. :) 11:50:46 hehehe 11:50:50 *snicker* 11:50:57 depending on what machine 11:50:59 But it's still relatively easy to port a Pygmy program to IsForth, because of the way Forth programs are designed. 11:51:18 True; mine is running on a 486DX-33 laptop under DOS without disk caching software running. 11:51:26 Yes, I was getting to that. 11:51:38 I440r - by the way, do you have any plans for ALLOCATE FREE RESIZE etc in IsForth? 11:51:44 I wrote my own block editor for Forth under GForth under Linux; GForth is an ANSI compliant Forth, and I used a lot of ANSI features. 11:52:02 When I ported it to Pygmy (which is NOT an ANSI compliant Forth), it wouldn't compile because those features were missing. 11:52:02 kc5 im gona implement blocks as an option in isforth 11:52:08 erm... eventually heh 11:52:18 My solution was simple: I wrote a screen or two of source code that implemented those features, and now it compiles just fine. :) 11:52:32 I440r - not too difficult. Just use your file interface, but have a special editor. 11:52:40 I440r: Blocks are pretty easy, actually. When I write my code, I'll send you my sources. 11:52:41 wats a good set of names for the $66 and $67 overrides ? 11:53:00 I440r: I use o16:, o32:, a16:, and a32:. :) 11:53:15 kc5 i was figuring make 1 meg a max size and memory map the block file and just calculate the offset to the given block 11:53:46 well, o16/32 are teh same thing as are a16/a32 heh 11:53:54 I440r: That's how it works. Although my Forth supports a full 64MB block space, each individual block file can only grow up to 1MB in size. 11:53:58 I440r - what's the point of the max size? 11:54:04 should i allow the USER to inject these himself or do it auto based on teh instruction ? 11:54:31 I440r: Since mine is only 16-bit, the user has to do it himself. When I implement the 32-bit extensions, I'll do both. 11:54:34 clever none realy - its arbitary hehe 11:54:51 aha rite 11:54:53 cleverdra: I limit file sizes so I can ensure enough space in the block map to map several files. 11:55:05 I don't want one file hogging all the blocks. 11:55:24 for manual injection 016 and 032 (identical overrides) makes sense because it shows context 11:55:25 nod. And I guess that 1MB is huge, anyway. 11:55:52 im not sure im gona support multiple block files open at the same time 11:55:54 maybe i will 11:56:05 still, it'd be easy enough to write a quick arbitrary-block-size in IsForth. 11:56:16 I440r - what about ALLOCATE and friends? 11:56:26 i got allocate and free written 11:56:31 need to do reallocate too 11:56:35 not a big deal heh 11:56:45 will be in 1.09b if i ever release it :) 11:56:47 'resize' is shorter -- but cool! 11:56:47 thought you finished dynamic memory management ? 11:56:59 futhin it is finished except for reallocate 11:57:23 I absolutely needed ALLOCATE RESIZE FREE for this last project I was working on. 11:57:24 ill call them o: and a: :) 11:57:32 I440r: You can write a very brute-force reallocate by allocating a new block, copying data over, and freeing the old block. Very simple, but also the slowest possible implementation. 11:57:40 I440r - release it now, please. Frequent revs is good. 11:57:44 I440r: Sounds good. 11:57:56 u cant realy resize an already allocated block, you can reallocate it to a bigger block 11:58:18 realloc will allocate the bigger block, move the data, deallocate teh smaller block and return the offset to teh new block 11:58:22 I440r: You can also shrink a block safely too, without copying it. realloc() does exactly this. 11:58:42 kc6 thers no realloc() in linux 11:58:48 nor is there any real alloc() 11:58:52 I440r: Yes, I know. It's in libc. :) 11:58:52 thers just memory-map 11:59:07 kc6 ya hehe libc uses mmap and munmap 11:59:08 and brk 11:59:14 Just as ALLOCATE, FREE, and RESIZE will be in your Forth. :) 11:59:41 i dont think you can sys_brk ANY allocated block 11:59:48 just the one linux gave to your process 12:00:01 and breaking out and then back in again is dangerous :) 12:00:55 I440r: No! You don't sys_brk on an allocated block. 12:01:10 You use sys_brk() to allocate the pool that ALLOCATE allocates from. 12:01:27 What you do inside those pool(s) is entirely up to your Forth environment. 12:01:59 You can safely sys_brk() backwards if you know for sure that nothing references the memory about to be reclaimed. 12:02:02 wow, this is the only channel i've been in on irc where people actually talk about stuff that's useful and interesting. 12:02:16 empirion: And it's a rare day here at that. :D 12:02:28 empirion - language-specific channels are like that, for some reason. 12:02:28 naw 12:02:39 we talk interesting stuff at least 2 days a week ;) 12:02:44 True... 12:03:03 sometimes you have to start the conversation 12:03:07 ask a lot of questions 12:03:10 * kc5tja nods 12:03:11 and eventually people start chatting 12:03:16 cleverdra: thanks, that's good to know :) 12:03:20 This whole coversation is empirion's fault, after all... ;D 12:03:34 yup, i admit it :( 12:03:38 heh 12:03:46 Unfortunately, I need to duck out of this conversation, as I need to get ready for work. 12:03:49 people start chatting about the conversation they were in, and then the conversation they are in, and then about the meta-conversation -- oh, it *never* ends! 12:04:01 --- nick: kc5tja -> kc-shower 12:04:11 kc5 - bye 12:16:16 BTW, this is fantasically good music: http://www.ffmusiconline.com/FF6/D3/14-Dancing_Mad.mid 12:16:25 What is it? 12:16:39 A track from Final Fantasy 6. 12:17:12 I've lately become somewhat enamoured with FF music, and this is exceptional. 12:17:40 heh 12:18:08 is it sorta technoy? 12:18:17 *technoie 12:18:48 More classicy, but it varies. Bachish, I think. 12:22:04 about 10 hours (kidding) into this, it breaks out in drums. 12:23:08 heh 12:46:36 --- quit: kc-shower ("[x]chat") 13:02:58 --- quit: I440r (Read error: 113 (No route to host)) 13:03:08 --- join: I440r (~mark4@67.241.61.199) joined #forth 13:10:58 --- join: jamc (~dne@as3-6-8.asp.s.bonet.se) joined #forth 13:16:31 --- quit: jamc ("[x]chat") 13:26:16 --- quit: cleverdra (Connection timed out) 13:32:05 --- quit: XeF4 ("->screen") 13:32:41 --- join: XeF4 (benzoglyox@12-245-116-85.client.attbi.com) joined #forth 13:38:43 --- join: kc5tja (~kc5tja@user-24-214-86-42.knology.net) joined #forth 13:38:52 * kc5tja is presently at work. 13:40:19 you are in a maze of little twisty passages, all alike. 13:40:25 you may go n,s,e. 13:40:29 you smell a boss. 13:41:17 I DISBELIEVE! 13:41:22 Do I make it? 13:41:58 Actually, it's funny you mention that. I just got done playing Atic Atac on the Jupiter ACE emulator I have. :) 13:53:14 hrm, i've seen juptier ace emulator links on forth pages but i haven't checked it out yet 13:53:49 Jupiters are so damn slow... Soooo slow... :) 13:54:10 Either this emulator isn't written write or it's way slower than a TRS-80. :) 13:54:54 But you can actually build a Jupiter using ordinary TTL components (including its video hardware!), except for the microprocessor. 13:55:19 I'd actually consider building one using a 65816 CPU instead of a Z-80; Z-80s are just so doggone slow... :/ 13:58:26 kc5 u think its important to make sure ppl dont try to do lock fs: rep stosb sorta crap ? or should i just let them shoot themselves in the foot 13:58:40 I think it's so slow largely because the Forth environment is certainly not a good fit for the Z-80. 13:58:43 checking for idiot code is gona be hard 13:58:56 Let them shoot themselves in the foot. 13:59:07 glad you said that hehe 13:59:08 I do basic error checking in my code, but I certainly don't make it a habit. 13:59:25 my code will abrot" on mov eax, bx 13:59:27 etc 13:59:31 abort even heh 13:59:40 * kc5tja nods 13:59:43 oh 13:59:53 mov byte [ebx], 10 13:59:53 oh? 13:59:57 is the w bit set ? 14:00:06 No; you're moving a byte. 14:00:31 oh! wbit isnt affected by base or index :) 14:00:31 erm 14:00:33 how do you do 14:00:42 mov byte [bx], 10 then ? 14:00:58 oh 14:01:08 shoot its got a 66 override heh 14:01:08 ok 14:01:54 67 actually. But I thought you weren't going to support 16-bit addressing modes? 14:02:05 no im not, i just wanted to figure it out 14:02:13 regarding teh w bit 14:02:23 * kc5tja nods/ 14:03:43 oh now i have to check for mov ax, # 5 byte 14:03:49 what is TTL again? 14:03:56 time to live :) 14:04:02 or transister transister logic 14:04:55 The latter in this case. 14:04:59 Transistor Transistor Logic 14:05:10 heh yea i know :) 14:05:17 --- join: Soap` (~flop@202-0-42-22.cable.paradise.net.nz) joined #forth 14:05:25 ok now i have a slight delema 14:05:33 (which is a misnomer now-a-days; most TTL chips are implemented with CMOS and use bipolar transistors only for the totem pole output drivers) 14:05:36 destination registers are named with a comma on them 14:05:39 al, 14:05:41 ax, 14:05:42 eax, 14:05:47 mov reg, blah 14:05:53 so when i do 14:05:58 mov ax, bx 14:06:30 ax executes, sets the w bit, sets the o flag (we need a 66 override) and sets the destination register as register 0 14:06:56 bx is a source reg, its a word size and it checks that w and o are set, if not then the source and destination are different 14:06:58 sizes 14:07:00 it should also set the mod field to 11 as well. 14:07:14 but this doesnt account for mov [ebx], bx 14:07:38 the mod field will prolly be taken care of elsewhere 14:07:43 OK 14:09:33 hmmm maybe not 14:28:04 should i teset for aaa # 5 14:28:10 where an immediate is not appropriate ? 14:28:23 i prolly shud 14:28:26 damn 14:28:28 That's up to you. 14:28:39 it will cause problems if o dont 14:28:41 if i do 14:28:42 code foo 14:28:49 aaa # 10 14:28:50 aad 14:28:51 In my assembler, I have a special class of opcodes that can "optionally" take an immediate, and if not specified, defults to $0A. 14:28:58 the aad will get the immediate heh 14:29:03 yes 14:29:05 same 14:29:25 : aad a; $d5 c, ?imm 0= if $a then c, ; 14:30:11 aad and aam support immediates because the original 8086 ran out of microcode 14:30:20 the nec chips however hard coded teh 10 14:30:28 which is a way to test for nec chips 14:31:00 $d5,$04 then test what you have in ax :) 14:31:07 Oh wow....looking at the source for FIGForth for 6502. 14:31:15 Oh wow....wow...wowwowwow...wow... 14:31:18 ya ? 14:31:23 whut ? :) 14:31:29 sssssssssllllllllllooooooooooowwwwwwwwwwww.......... 14:31:33 oh heheh 14:31:43 How the hell did FIG get so popular with such a abhorently slow implementation? 14:31:58 i forget who wrote that assembler 14:32:14 Here's how their LIT is implemented: 14:32:22 LIT .WORD *+2 14:32:27 LDA (IP),Y 14:32:29 PHA 14:32:32 INC IP 14:32:35 BNE L30 14:32:39 INC IP+1 14:32:46 L30: LDA (IP),Y 14:32:50 L31: INC IP 14:32:55 BNE PUSH 14:32:59 INC IP+1 14:33:01 PUSH: DEX 14:33:03 DEX 14:33:07 PUT: STA 1,X 14:33:10 PLA 14:33:13 STA 0,X 14:33:19 NEXT: LDY #1 14:33:23 LDA (IP),Y 14:33:26 STA W+1 14:33:28 DEY 14:33:31 LDA (IP),Y 14:33:34 STA W 14:33:40 CLC 14:33:43 LDA IP 14:33:46 ADC #2 14:33:48 STA IP 14:33:53 BCC L54 14:33:57 INC IP+1 14:34:03 L54: JMP W-1 14:34:15 is there a zero paged indirect jmp ? 14:34:17 Holy criminey. 14:34:27 i dont think there is 14:34:31 is w in zero page? 14:34:39 No, there isn't. But why they JMP W-1 instead of JMP ($00xx) is beyond me. 14:34:46 Yes, all the virtual regs are in ZP 14:34:56 But still...they're horrendously abusing the machine. 14:35:01 i was expecting them to do lda w 14:35:02 pha 14:35:06 lda w+1 14:35:06 pha 14:35:07 ret 14:35:07 They could have made it **SO** much faster by using the hardware stack as the data stack. 14:35:20 but then only 256 bytes heh 14:35:24 but yes 14:35:27 oh 14:35:27 Who cares? 14:35:29 thats MORE 14:35:35 thats more than they are allowing for here 14:35:37 Data stack and return stack are both in ZP anyway. 14:35:45 because they are using zero paged x addressing 14:35:50 and part of zp is variables! 14:35:51 Yes. 14:36:08 Here's how I would have done it: 14:36:13 LIT: .WORD *+2 14:36:18 LDA (IP),Y 14:36:20 PHA 14:36:30 INC Y ; !!!! 14:36:34 LDA (IP),Y 14:36:39 PHA 14:36:56 INC Y 14:36:59 NEXT: 14:37:05 LDA (IP),Y 14:37:08 PHA 14:37:11 INC Y 14:37:14 LDA (IP),Y 14:37:17 PHA 14:37:25 DEC Y 14:37:28 DEC Y 14:37:30 DEC Y 14:37:33 RTS 14:37:37 iny i believe increments y :) and inx increments x 14:37:42 why 3 dey's ? 14:37:49 To return Y back to zero. 14:37:54 ip moves backwards ? 14:37:56 I suppose I could have just LDY #$00 too. 14:38:03 oh 14:38:05 No. Oops, forgot to increment IP too. 14:38:16 But even with the added logic of incrementing IP, that's *SO* much faster. 14:38:21 ya 14:38:26 And frankly, subroutine threading would be worlds faster still. 14:38:32 its been AGES since i touched 6502 hehe 14:38:38 but thats where i started :) 14:38:38 LIT: PLA 14:38:43 TAX 14:38:45 PLA 14:38:53 STA tempPC 14:39:02 LDA (IP),Y 14:39:04 PHA 14:39:06 INY 14:39:12 crap... 14:39:21 had the previous example on my mind when I wrote that. 14:39:25 LIT: PLA 14:39:26 next: 14:39:31 STA TPCL 14:39:34 PLA 14:39:38 STA TPCH 14:39:47 LDA (TCPL),Y 14:39:49 PHA 14:39:58 INY 14:40:01 you could put a 4c in a zero paged address followed by IP 14:40:01 LDA (TPCL),Y 14:40:04 PHA 14:40:05 then next would be 14:40:08 DEY 14:40:10 jmp 00XX 14:40:14 INC TPCL 14:40:30 or rather inc ip bne blah inc ip+1 blah: jmp ip-1 14:40:36 BNE 1$ 14:40:40 INC TPCH 14:40:44 1$: INC TPCL 14:40:48 BNE 2$ 14:40:55 INC TPCH 14:41:02 2$: JMP (TPCL) 14:41:06 erm no it would need to be a $6c hehe 14:41:13 u follow that ? 14:41:20 nextt: 14:41:25 db $6c 14:41:31 ip: dw 0 14:41:34 in zero page 14:41:42 IP will point to a token in a : def 14:41:52 Yes, that's what they were doing in FIGForth. 14:41:57 jmp nextt will indirect jmp to where ever that token points to 14:42:03 That won't work in subroutine threaded Forth though. 14:42:21 would in a direct threaded forth - fig usually goes indirect tho 14:42:49 Well, for indirect threaded, you'd use $6C, and for direct threaded, $4C. 14:42:55 no heh 14:43:06 $6C is JMP-indirect. 14:43:07 indirect threaded uses pointers to pointers to code 14:43:13 Correct. 14:43:16 direct threaded uses pointers to code 14:43:19 6502 has an indirect jump instruction. 14:43:39 so each token in a : def in direct threaded is a pointer to code 14:43:46 IP is a pointer to a pointer to code 14:44:02 so a 6c immediatly preceeding the 2 bytes of IP in zero page is correct 14:44:15 actually you would need to do this 14:44:20 nextt: 14:44:27 jmp [0000] 14:44:32 ip: dw somewhere 14:44:53 and next would move IP into the 0000 then increment ip then jmp to nextt 14:45:27 but this would be subject to the indirect jump bug if you wernt careful 14:45:38 I say just get rid of the whole IP debacle and just go subroutine threaded for 6502. It's going to be substantially faster if you do it that way. 14:45:55 not if you are using the hardware stack as teh parameter stack 14:46:03 Sure are. 14:46:06 you would get the same problems you have with c 14:46:11 No you wouldn't. 14:46:12 return addres 14:46:14 parameter 1 14:46:17 parameter 3 14:46:19 erm 2 14:46:26 You move the return address manually onto the return stack. 14:46:47 OK, so let's say we don't use the hardware stack for that purpose. 14:46:48 so every coded definition has to have a >r in it 14:46:50 and a next 14:46:59 then it will work 14:47:08 in sub threading hardware stack should be return stack 14:47:11 We can still use ZP,X addressing mode, and it'd still be twice as fast as FIG easily. 14:47:14 next could be a ret 14:47:18 but then you dont have forth :P 14:47:50 ? 14:47:51 why not 14:47:54 bill ragsdale :) 14:47:58 i remember his name :) 14:47:58 Each word in the system would have a >R as its prolog code, and R> RTS as its epilog. 14:48:00 It's not hard. 14:48:06 And it certainly is still Forth. 14:48:39 i dont consider sub threading to be a TRUE forth. i can see its advantages in certain cases but it just dont feel rite to me heh 14:48:57 i dont even like indirect threading, i cant see ANY case wher it would be either faster or smaller 14:48:59 Well Chuck will gladly disagree with you. 14:49:33 prolly heh 14:49:56 No probablies about it; all of his most recent Forths, up to and including ColorForth, have been subroutine threaded. Every one. 14:50:17 Besides, the threading mechanism isn't of any consequence to a Forth environment. 14:50:38 so u gona implement a 6502 forth then ? 14:50:45 6502 isnt exactly dead :) 14:51:02 i still have an almost permanatly on hold 8051 forth 14:51:09 --- quit: Mongrel ("BitchX-1.0c19 -- just do it.") 14:51:12 incomplete of corse 14:51:21 Well, if I have all those 65816 CPUs sitting around doing nothing, you bet I'm going to implement a 65816 Forth. 14:52:12 Making a home computer that doesn't have fans, is "fast enough" for almost anything you could possibly imagine except heavy number crunching, and is nice and quiet? You bet. 14:52:32 I love my Athlon, but especially when listening to my ham radio, I love silence more. 14:52:40 hehe 14:52:55 wrap ahtlin in 3/4 in steel plate :) 14:52:59 athlon 14:54:04 It's already wrapped in 1/8" thick steel...it's the cartridge type of CPU. :D 14:54:12 But it's the fans that make all the noise, not the CPU. 14:54:41 kc5tja: listening 2 ogg & mp3 & recording or watching dixv video requires serious number chruncing power 14:55:05 onetom: I don't listen to ogg/mp3 files while using ham radio. 14:55:15 :))) 14:55:15 onetom: I don't watch videos on ANY of my computers anyway. 14:55:39 but most people do 14:56:04 Besides, 65816 at 20MHz is about as fast as a 68000 at 20MHz, and that DEFINITELY is enough horsepower to play MP3s. 14:56:16 (they have MP3 players on Palm devices that play on CPUs with only 16MHz) 14:56:42 most people use their computer for accessing the internet and so they need the capabilities mentioned above 14:56:47 Perhaps not to do much else, I'll grant you that. But it can be done, and I've seen it done. 14:57:01 onetom: I'd access the Internet with my homemade computer too. 14:57:14 Last I checked, I don't believe I needed an 800MHz CPU to check my e-mail or browse a website. 14:57:16 kc5tja: okay, i also know about the palm port of mplayer too 14:57:40 Or, for that matter, even to serve webpages. :) 14:57:47 A C64 was set up as a webserver once. 14:58:12 sure sure ... 14:58:17 iknow 14:59:03 Now, to be sure, with that kind of clock speed, I could set up a stack processor, and it'd wipe the floor with the 65816, being at a minimum 2 to 3 times faster. 14:59:07 but that music or movie playback stuffs r probably not full quality 14:59:15 Sure it is. 14:59:32 Re-assembling a signal from a DCT matrix isn't that hard. 14:59:45 Lots of multiplies and adds, sure, but that's about it. 14:59:54 iknow 15:00:04 the problem is w the "lots of" ;)) 15:00:06 These compression engines are set up specifically to make for rapid decompression on the player side. 15:00:20 iknow about this assimmetry too 15:00:50 hmm, whatever is the spellin :) 15:01:06 asymmetry 15:01:15 thx 15:02:20 anyway, i also hope that the 2stacks nature of a processor will allow lower clock rates 15:02:41 Two stacks? 15:02:45 The 6502 has only one stack. 15:02:46 do u know how does the crusoe processor works? 15:03:07 onetom: It's a 64-bit VLIW processor that emulates x86 opcodes in software. It has hardware assistance, however. 15:03:51 and it has a code morpher too 15:04:00 No, not in hardware. 15:04:05 That's in software. 15:04:27 * kc5tja sighs :( 15:04:30 sw/hw thats not a big diff. 15:04:33 I hate upset stomachs. 15:04:46 ? 15:04:52 i always wondered about getting a movie and then having a program to "decompress" it so that it would play back fast on my slow computer 15:04:54 I'll BRB -- I need to get some food. 15:05:04 futhin: Quite possible. 15:05:24 There are converters for the Amiga that compress IFF ANIM files to MPG, and vice versa. 15:05:30 i find it annoying that movie players don't really seem to do any buffering or anything 15:05:33 Anyway, I'll be back. 15:05:46 movies can barely run on my pentium 133 mhz comp :( 15:05:48 bye 15:05:57 * futhin will be afk, doing some errands 15:05:58 --- nick: kc5tja -> kc-food 15:06:03 kc5tja: realtime 15:06:31 kc-food: the code morpher worx in realtime. thats whats important 15:07:32 if everybody is away, i wont talk too much then :) 15:07:38 but 15:08:55 some month ago, jeff fox told me about and interesting trick related 2 their hightuned jpeg decoder solution 15:10:22 they built code-trees and ran those 2 create the final image 15:11:12 ithink its a similar thing 2 that code morpher in/4 the crusoe processor... 2some extent @least 15:11:14 anyone wanna see isforths assembler so far ? :) 15:11:26 ftp://67.241.61.199 15:11:30 its in there 15:11:31 asm.f 15:12:24 I440r: do u also have some examples 2? some "use cases"? ;) 15:12:48 say again ? 15:13:02 examples for case: ? 15:13:39 nooo :D 15:13:47 hehe ok, say again :) 15:13:58 ur 4th-assembly usage examples 15:14:03 oh 15:14:11 well the assembler isnt finished but the syntax will be like 15:14:15 mov eax, ebx 15:14:24 use case is a UML term 15:14:40 erm wait i just realised something 15:15:00 wow... stnd prefix style? 15:15:00 im not diferentiating between [reg] and [ret], 15:15:04 and i NEED to 15:15:14 it could be used for either or 15:15:15 i think 15:17:29 the souce gives some examples 15:17:43 of what i intend... its not finished yet 15:19:00 I440r: i2b? i is 4 instrustion igues but what is 2b? to binary? 15:19:09 I440r: o: ? a: ? 15:19:18 I440r: oddress? ;) 15:19:26 i1b creates a 1 byte opcode wth no parmaters 15:19:33 o: insertts an operand overide 15:19:47 a: inserts an address override but 16 bit addresses arent supported 15:20:04 yeah, u told it yesterday 15:20:21 o: will be called automatically when an operand override is needed 15:20:29 u should comment these names, coz they r not so obvious 15:20:41 i know hehe 15:20:53 i MIGHT make them headerless 15:21:03 i.e. user cant inject his own operand or address overrides 15:21:16 the wole stuff is not bad, anyway 15:21:39 but also not finished hehe 15:21:52 for all i know ive coded myself into a corner regarding some stuff ive yet to code 15:22:04 (e, sorry this keyboard sux. the G button is terribly insensitive, eg) 15:22:20 (also the H button :) 15:22:24 i had to figure out how to defer injecting overrides on an instruction 15:23:32 just like in the case of control structures, iguess 15:23:52 use markers on the stack 15:24:20 ? 15:24:24 jst like THEN patches the jump address 4 ELSE 15:29:08 oh 15:29:17 no thats not what im doing :) 15:29:43 its a bit more complex than i had hoped but ill settle for a working assembler even if its a gordian knot heh 15:29:51 ill try make it NOT too tight a knot tho heh 15:36:47 --- quit: XeF4 ("pois") 15:45:39 --- nick: kc-food -> kc5tja 15:52:10 I440r: good luck 4 it :) 16:05:22 Great. One hour left before aikido, and I'm going into a food psychosis. 16:31:47 kc5tja: hey, when i was on pepsi sziget festival 16:32:03 i tried capoeira. its fun. 16:32:24 Capoeira?? 16:32:49 yeah, its the root of break dance 16:33:49 it was an undercover martial-art 16:34:38 it looked like a dance while it was a simulated fight improvisation 16:35:37 I wouldn't say it's the root of break dance. 16:35:39 a native african guy thought us, and it was aaall amazing he showed 16:35:53 so uknow what am i talkin about? 16:36:06 I just looked it up on Google. 16:36:21 everybody know it as the root of break 16:37:08 --- quit: Soap` (Read error: 104 (Connection reset by peer)) 16:37:22 but i did it and it HAS those elements what r used by a break dancer 16:37:33 I don't know; I used to do some breakdancing in my younger days (*for shame*), and it doesn't look anything like it. 16:37:54 in my city there r regular break dancing gatherings so i know what am i talkin about 16:38:09 It must be a regional thing then. 16:38:20 but rolling on your head 16:38:31 and the base step... 16:38:45 show me what has u found about capoeira 16:38:55 http://www.capoeira.com 16:39:00 First thing that came up. 16:39:05 You can Google like I can. 16:39:50 hey, maaaan, thats it 16:40:08 Yeah. It's a Brazilian martial art apparently. 16:40:12 c the b&w shilouette on the bottom left of the page? 16:40:18 doesnt it ring a bell? 16:40:22 To me, it looks more like Brazilian Jiujitsu. 16:40:40 No, I can't say that it does. 16:43:13 Ow, man.... My head is getting all stuffy again. 16:43:18 man. i did it and i see a lot of break week by week 16:43:28 so dont contradict :) 16:43:41 I'm just saying I don't see the relation. 16:43:51 If you see it, that's fine by me. Whatever. 16:43:57 * kc5tja shrugs 16:44:05 if i can find some video excerpt 16:44:17 will u chk it? 16:44:37 i fell in love w its improvisation ability 16:44:47 what aikido doesnt have 16:45:47 @least w dont really excercise it that way... probably it needs more serious skills 16:45:58 to balance the harmfullness of aikido 16:47:33 You are so very wrong about Aikido not having improvisation. 16:47:58 Every test I take I end up improvising in some manner or form. 16:48:18 That's half the test -- how well do you respond to the unexpected? 16:55:51 What I don't understand is why the practitioners spend so much of their time in the air. :) 16:56:06 Or is that just when people happen to take the pictures? 16:56:34 onetom: you around? yesterday i was thinking about your idea to have a UML language in forth or something.. where you can code in uml and go from there to fill in the code and get a workable program 16:57:05 futhin: I think I ticked him off or something. 16:58:16 futhin: here i am 16:58:57 kc5tja: i was just browsing that theme 16:59:05 kc5tja: i dunno, i've never seen onetom get angry 16:59:18 onetom: :P 16:59:35 futhin: :) u r right. im never angry 17:00:44 kc5tja: i did understand ur "Or is that just when people happen.,...." sentence. could u rephrase it? 17:01:10 futhin: go ahead and tell me / show me ur idea 17:01:20 onetom: no, i don't have any idea 17:01:26 onetom: i was just thinkg about your idea 17:01:33 i wanted you to tell me more :P 17:01:36 but mind that i knew very lil about uml 17:01:41 why can't we do it? 17:01:48 why haven't we? :P 17:01:51 and almost forget that lil too 17:02:00 hrm 17:02:13 :) 17:02:17 sorry 17:02:34 oh well 17:02:40 it's a nice idea, maybe i should go learn some uml 17:02:50 i dont dealt w the uml branch of my/our vision 17:03:20 i was rather investigating the lowest level 17:03:47 the hard-core 4thist approach 2 programming 17:04:45 UML looks like drawing pictures & boxes and linking them together 17:04:54 instead of being purely textual.. 17:05:11 hrm 17:05:12 oh. u can represent that textually pretty well 17:05:25 yeah, pseudocode :P 17:05:33 have u seen OO programs? eg, delphi? 17:06:01 OK, speaking of martial arts and improvising, I'm off to aikido now... ;P 17:06:09 the class definitions r good examples how can u project those boxes into text 17:06:18 --- quit: kc5tja ("THX QSO ES 73 DE KC5TJA/6 CL ES QRT AR SK") 17:06:20 kc5tja: :) have fun 17:07:30 i'm working on a forth website 17:07:33 it's gonna be l33t :P 17:07:38 kc5 how do you difrerntiate between mov [ebx+2*ecx], eax and mov eax, [ebx+2*ecx] ? 17:07:39 any preview? 17:07:43 avail? 17:08:12 not yet 17:08:21 soon 17:08:34 I440r: hes gonna b away 4 @least 2.5hrs 17:08:42 oh 17:08:44 foo :P 17:08:59 an aikido lesson last about 2hrs 17:09:02 anybody have any ideas for the site title? Discover Forth, Introduction to Forth, Welcome to Forth, ... ? 17:09:16 Forth ;) 17:09:26 or my way: 4th 17:09:38 The Forth Paradigm? 17:09:41 Discovering Forth 17:09:42 hmpf 17:09:45 they all suck :P 17:09:51 2 the infinity and 4th 17:10:11 a la buzz lightyear :) 17:10:42 do some contents fisrt 17:10:52 the title can wait 17:11:13 i have some content already 17:11:24 now i'm writing up an intro to the site 17:11:26 anyway, what about polishing the sleepless wiki instead? 17:11:29 gotta have a name for the site 17:11:39 create a chapter there! what about it? 17:11:55 naw, i'm doing different things 17:11:58 fu4thin 17:12:14 come on, tell me what do u plan? 17:12:32 it will grow into the ultimate forth site 17:13:24 kung-fu fu-thin 4thin(g) 17:13:47 heh, don't waste energy thinking of that kind of stuff :P 17:14:00 hey, put away those world domination plans 17:14:10 i have none 17:14:14 say exact things 17:14:18 dont b so general 17:14:22 heh 17:14:27 not yet! 17:14:37 first must get site to ver. 1 :P 17:15:09 site name.. site name.. 17:15:28 site name: forth 17:15:36 like code name: whatever :) 17:16:03 im advertising 4th 2 my local friends 17:16:21 more specificly the thoughtfull programming article from jeff 17:16:34 and they 17:17:15 they wanna c example codes 17:17:28 what kind of examples? 17:17:33 example applications? 17:17:38 er 17:17:42 what r 1/100th in code size and 1000x faster 17:17:47 source code to applications 17:17:53 yup 17:17:56 yeah 17:18:04 have u read that article? 17:18:10 yes i read the 1st part 17:18:15 haven't gotten around to the 2nd and 3rd :P 17:18:28 yeah 17:18:29 its worth 2 read those 17:18:41 i thought chuck moore should be putting up more source code to various applications.. 17:18:43 or something 17:19:01 u can only get the real picture if u also read those too 17:19:17 but he wont 17:19:28 yeah 17:19:33 so i think WE have 2 fill this gap 17:19:39 yes definitely 17:19:58 but i dont really know where 2 start 17:20:14 what application can b convincing enough 17:20:45 eg, there is a life game in the wiki 17:20:51 onetom: a MUD, a multi-user editor, a web browser (i440r is gonna code one), a general-purpose editor usable in linux (or maybe dos) coded in forth, etc.. 17:21:05 an irc client 17:21:09 (should be ez) 17:21:47 but cant b really convincing w those i think.. 17:22:14 lets take the mued, eg 17:22:36 if u implement it under linux, u have 2 link it 2 the curses lib 17:23:10 what is a pretty complex way of screen & keyboard handling 17:23:26 tho, compatible w a lot of existing system... 17:24:23 video & sound encodin starves 4 faster routines but 17:24:46 - ithink - u cant compete w MMX/SSE optimized assembly 17:24:50 no 17:24:55 just focus on irc client 17:24:57 that's a good example 17:25:06 with that tcp/ip package 17:25:13 that lets you use stdio 17:25:17 ? 17:25:20 that? what? 17:25:27 ah, that linux 1 17:25:30 i forget the tcp/ip package name 17:25:33 that wrapper... 17:25:43 the one that replaces inetd 17:25:49 with a better one 17:25:54 i think? 17:25:57 i also forget, but i know what r u talkin about 17:26:10 no, it doesnt replaces inetd 17:26:37 but the name is unimportatnt now 17:27:28 the mued core would b a nice example anyway, but wo a real test environment, its useless 17:27:33 so anyways, it would be a quickie to code an irc client in gforth using that daemon or something 17:28:10 but u also have 2 deal w the screen and readline lib 17:28:51 but if u omit these fancy things, the result wont b attrative enough 17:29:03 so its not a good example.. :/ 17:29:14 ehhh? 17:29:30 it could look like ircii 17:29:33 nothing fancy 17:29:41 no need to worry about using libs or extensions 17:29:46 id like 2 have bare system w direct keyboard & video access and tcpip connection :) 17:30:21 it would be a good idea to AVOID using libs or extensions for example code, it makes it more impressive 17:30:41 hmm hmm.... 17:32:37 ithink im not in the mood dealing w such things today... 17:32:57 have u tried color4th 4 win anyway? 17:33:05 i think i will look into gforth & that tcpip thing and try making a crude irc client 17:33:18 * futhin should get off his ass y'know? :P 17:33:29 onetom: nope, not yet, haven't tried c4w 17:35:28 ucspi-tcp - tools for building TCP client-server applications. 17:42:07 --- quit: futhin (Read error: 104 (Connection reset by peer)) 17:42:14 --- join: futhin (thin@h24-64-175-61.cg.shawcable.net) joined #forth 18:27:03 onetom 18:27:18 onetom: http://www.msmisp.com/futuretest/Forth's_Dilemma.htm 18:38:30 ewww 18:38:33 my website is soooo ugly 18:46:04 --- join: TheBlueWizard (~tbw@216.25.202.139) joined #forth 18:46:08 hiya all! 18:46:13 hola tbw 18:46:19 I had some trouble getting on! 18:46:37 anyway, time for me to do something smelly.... 18:47:25 * TheBlueWizard turned the bucket upside down, and a decaying brain flows out with the briny water 18:47:38 that's what I call a brain dump :) 18:48:27 ok, here's the stuff from Jan 86 article in Compute! Gazette magazine on "Fast Assembler" 18:49:52 --- join: jamc (~dne@as3-6-8.asp.s.bonet.se) joined #forth 18:52:18 thebluewizard: what stuff 18:52:25 --- quit: jamc ("[x]chat") 18:52:41 ok...here's a sample code: 18:53:00 (this is for I440r's consumption :) 18:53:36 100 FOR PASS=1 TO 3:PRINT "PASS"PASS, 18:53:50 110 ORG $C000 18:54:11 120 IF PASS=3 THEN ORG $C000,1 18:54:23 130 START: LDX #0 18:54:50 140 LOOP: LDA TEXT,X:PRINT TEXT, 18:54:59 150 BEQ EXIT 18:55:09 160 JSR $FFD2 18:55:18 170 INX 18:55:24 180 BNE LOOP 18:55:32 190 EXIT: RTS 18:55:41 200 PRINT * 18:56:09 210 TEXT: BYTE "EXAMPLE 1",0 18:56:21 220 NEXT PASS:END 18:58:53 Lines 110 and 120 show how to use the command ORG. In every pass, line 110 sets mode 0. But in pass three, line 120 sets mode 1. The object code will start at 49152 (hexadecimal $C000). Line 200 prints the current value of the location counter (*). 18:59:39 You can assemble the program with the command RUN. The program will give the following output: 18:59:59 PASS 1 0 49165 19:00:35 PASS 2 49165 49166 19:00:49 PASS 3 49166 49166 19:03:59 The first column is the pass number. The second column is the value of the label TEXT in the instruction LDA TEXT,X in line 140. The third line is the value the label should have when the source is assembled. You can see that only in pass three are these values equal to each other. This is because the assembler defaults to zero-page addressing. 19:06:07 In pass one, TEXT has a value less than 256 so zero-page addressing is assumed. This means a two-byte instruction instead of three. The value assigned to TEXT will be too low, as you can see in pass one. 19:07:54 In pass two, this value, which is too low, will be used in assembling line 140. The assembler decides not to use zero-page addressing, so TEXT is assigned the correct value. 19:08:43 In pass three, the correct value replaces the previously incorrect values during the assembly. 19:09:26 19:09:37 ihh, its rather complex.... :/ 19:10:25 the article goes on to show other neat use of BASIC interpreter to pull various stunts, like writing a macro using GOSUB/RETURN construct :) 19:10:35 s/use/uses/ 19:11:52 onetom: !! did you read the article? 19:13:08 onetom: are you saying my excerpt looks rather complex? 19:13:14 futhin: not yet. would u repeat the url? 19:13:20 onetom: http://www.msmisp.com/futuretest/Forth's_Dilemma.htm 19:13:28 it's very interesting!! 19:14:03 futhin: thanks for the article...yup..interesting...and it is just a symptom of a bigger problem...like restaurants for example 19:14:09 im browsing colorforth sources and the related wiki... 19:14:38 well, its a bit unreadable & insane... 19:14:42 thebluewizard: yeah 19:15:20 but there r loads of great tricks n ideas in it 19:16:33 I440r: the mode in the command ORG
, has two levels: 0 - no object code should be generated, no range checking for arguments, and no checking for too large branches; and 1 - generate object code (and do all the checkings) 19:19:05 I440r: hopes this snippet helps inspire your assembler project :) 19:19:50 another sample code: 19:20:26 50 JSR DISPLAY1; JUMP TO LABELED SUBROUTINE (LINE 90) 19:20:59 60 LDA $FF: BNE SKIPIT ; CONDITIONAL BRANCH AHEAD TO SKIPIT 19:21:07 70 TYA 19:21:50 80 SKIPIT: LDX #4: STA $8000,X: RTS; TARGET OF BRANCH IN 60 19:22:18 90 DISPLAY1=*; THIS LABELS THE CURRENT PROGRAM COUNTER 19:22:32 100 ; 19:22:57 110 LDA #65: JSR $FFD2: RTS 19:23:05 19:25:27 there a few other goodies, such as SEND/UNSEND, which is useful in building BASIC statements with assembly code going after those statements, if desired. But I think that all there is to it 19:25:48 * TheBlueWizard wonders whether I440r is awake :) 19:26:55 he's watching t.v, selfish bastard, doesn't care about your feelings 19:26:59 ;P 19:27:51 ah! it's great to be ignored like that! ;) 19:31:22 thebluewizard: what is the name of the article? 19:32:23 "THe Fast Assembler" by Yves Han 20:03:24 * TheBlueWizard is waiting for I440r to return.... 20:04:50 --- quit: Fare (No route to host) 20:04:51 thebluewizard: i cut'n'pasted what you typed, cleaned it up (removed the time tag and your nick) and put it into a file and uploaded it into i440r's incoming directory on his ftp server 20:05:40 ah...cool! 20:06:01 you can check it 20:06:07 just wanna know what's his thoughts/reactions to that 20:06:20 just ftp://67.241.61.199/incoming/ 20:06:25 fori440r.txt 20:07:06 * TheBlueWizard nods 20:23:52 * TheBlueWizard gives up on I440r ... 20:23:59 gotta go to bed now 20:24:03 bye all 20:24:10 bye 20:24:17 bye onetom 20:24:31 --- part: TheBlueWizard left #forth 20:31:47 --- quit: I440r (No route to host) 20:45:56 umm.. 20:46:09 has anybody used netcat or ucspi-tcp or what? 20:56:45 I've used netcat, why? 20:58:08 hrm, i want to do an irc client 20:58:10 in forth 20:58:23 using netcat or ucspi-tcp.. 20:58:33 using Gforth 20:59:03 so netcat gets the stdio ? 21:00:59 --- join: kc5tja (~kc5tja@ip68-8-206-226.sd.sd.cox.net) joined #forth 21:01:02 Well, anything you pipe to stdin goes out the socket, and anything coming in from the socket gets printed on stdio. 21:01:10 hi kc5tja 21:01:11 It's actually a pretty basic utility. 21:01:46 kc5tja: with Gforth, what is stdin and what is stdio? TYPE and EXPECT ? 21:02:03 KEY is stdin and EMIT is stdout 21:02:25 Ergo, EXPECT is stdin, and TYPE is stdout, since they're implemented in terms of KEY and EMIT, respectively. 21:03:14 kc5tja: have you used ucspi-tcp or netcat or netpipes ? 21:08:48 ucspi-tcp is a little sucky because it doesn't really allow me to install it as a non-root 21:09:12 and it would be a pain to modify it 21:09:21 so i'm checking out netcat 21:10:13 No, I never used them. 21:10:23 However, I've made servers for inetd, and those use only stdio. 21:11:43 you wrote the servers in forth ? 21:11:52 No, in Python. 21:11:59 But stdio is stdio, regardless of the language. 21:12:22 isforth doesn't bypass stdio right? 21:12:39 * futhin imagines that i440r would try to bypass stdio if he could ;) 21:12:49 You can't. 21:12:54 It's not possible in Unix. 21:12:58 heh :) 21:13:08 Well, it is, but it takes a lllllllllooooottttt of work to do. 21:13:15 yah 21:13:27 You have to open /dev/tty, set all sorts of modes on it, ... it's just not worth it. 21:17:26 I don't know what you mean "bypass stdio", but you can fclose(stdio), and processes without a terminal (NOHUPd processes, for example) don't have an stdio descriptoy. 21:17:37 Descriptor. 21:17:55 Well, they do, but it goes nowhere. :) 21:18:07 no, i was just wondering if IsForth had bypassed stdio or if netcat was usable with IsForth 21:18:20 I'm willing to bet you that it is 21:18:24 yep 21:19:12 i was vaguely aware that i440r wanted to bypass certain things for speed purposes, but wasn't sure if he had bypassed stdio :) 21:19:32 he wanted to get manual control of the screen i think, but too hard or something.. 21:23:26 He should've just sent control characters to the terminal... Either that or (god forbid) link with libcurses. :) 21:25:08 he isn't linking with any libraries at _all_ 21:32:42 --- join: futhin_ (~thin@h24-64-175-61.cg.shawcable.net) joined #forth 21:32:54 --- quit: futhin (Read error: 104 (Connection reset by peer)) 21:34:00 --- nick: futhin_ -> futhin 21:34:26 He does send control characters to the screen. 21:54:29 kc5tja: okay, i'm starting on a forth irc client using netcat.. how would i go about emitting everything that comes in thru the socket ? 21:55:59 heh 21:58:52 You'd probably have to open /dev/tty manually and emitting to that. Other than that, I don't know. 21:59:04 That's more a Unix programming question rather than a Forth programming question. 21:59:31 no i mean 21:59:32 er 21:59:52 I know what you mean. 22:00:00 I'm just saying that's something I don't know how to do. 22:00:05 i mean, i want to display the stuff that comes thru stdout 22:00:15 THe only thing I can think of is to open the /dev/tty device file manually and write to that. 22:00:17 EMIT does that 22:00:25 or TYPE 22:00:36 If you're using netcat, EMIT will dump characters to stdout, which goes through the socket to the IRC server. 22:00:52 [22:00] Well, anything you pipe to stdin goes out the socket, and anything coming in from the socket gets printed on stdio. 22:01:00 hrm, i should check this ;) 22:01:57 stdin goes out the socket 22:02:00 stdout comes in from the socket 22:02:09 No. 22:02:11 The reverse. 22:02:16 stdout goes out the socket. 22:02:22 stdin comes in from the socket. 22:13:58 how do i delay for a second ? 22:14:01 in gforth 22:16:33 --- join: futhin_ (thin@h24-64-175-61.cg.shawcable.net) joined #forth 22:19:39 --- quit: futhin (Read error: 104 (Connection reset by peer)) 22:27:11 --- nick: futhin_ -> futhin 22:27:32 1000 MS 22:34:44 --- quit: kc5tja ("THX QSO ES 73 DE KC5TJA/6 CL ES QRT AR SK") 23:59:59 --- log: ended forth/02.08.09