00:00:00 --- log: started forth/04.02.29 00:01:46 Dobroe utro! 00:02:27 dobryjj vecher 00:04:15 What an active converstations have happened this night! 00:04:52 :) 00:06:20 It seems you're waiting the cyclone. 00:07:07 Slava, postfix is always good in case of non-lazy calculations. 00:09:32 Lukasiewicz shew no parentheses are needed when arity of each operator is known and constant. 01:14:04 --- quit: proteusguy ("Leaving") 03:08:39 Dobryjj den'! 03:20:40 are there any scientific postfix calculators for linux? 03:21:28 --- join: MarkT (Mark@operator.nss.udel.edu) joined #forth 03:21:29 or reverse-polish if they aren't one and the same 03:23:52 fridge, man dc ; man bc 03:24:13 Good afternoon, MarkT! 03:24:25 good morning! ;) 03:24:59 ASau, dc can't do sin() or log() I don't think 03:25:31 fridge, can it define functions? 03:28:02 macros 03:29:22 Maybe, this helps: sin x = \sum_n x^{2n+1}/(2n+1)! 03:33:06 MarkT, what do you use Forth for? 03:33:35 nothing yet. I'm lurking for info.. 03:34:17 i messed with it loooong ago (read 15 years) 03:34:55 Hm. 03:35:09 but really dont remember that much about it. Now that Im into programming more my intrest has increased 03:35:37 and I have no idea what I can use it for. 03:36:37 What kinds of things have you done with it? 03:36:50 If you want use in in admistering, see nnCron and nnBackup 03:37:29 ok. 03:37:33 nnCron is "cron" derivative with more complex scripting. 03:37:51 nnBackup is backup scheduler. 03:38:16 Both go for Win. 03:38:16 a scheduler.. hmm. wonder why 'backup' 03:38:34 Recently Linux porting has started. 03:39:13 I'm assuming by scheduler you mean a job scheduler that handles possible dependencies, job failures, etc? 03:39:53 It seems that the author missed programmable backup tool. 03:39:59 So he wrote one. 03:40:05 ahh ok 03:40:16 backup scheduler.. 03:40:24 See http://nncron.ru/ for details. 03:40:51 * MarkT missed that one.. thats what I get for being awake for 43 hours 03:41:47 is forth interpreted or compiled to native code? 03:42:15 Traditionaly Forth is JIT compiled into threaded code. 03:42:22 cool 03:42:46 There're some native code compilers floating around. 03:43:10 BigForth (GPL) is n.c. compiler for Linux. 03:43:17 JIT in an editor/rt environment then? 03:44:38 My run-time env. compiles threaded code on the fly when I enter it in console. 03:44:49 --- join: qFox (C00K13S@cp12172-a.roose1.nb.home.nl) joined #forth 03:44:56 ok, thats basically what I meant 03:45:49 It is traditional. 03:46:27 Main code base on 1979 yr. sources. 03:46:37 I'm going to have to check it out when I get home from work. It's installed but I'm afraid grossly underutilized 03:46:42 Though I have some new features. 03:47:09 Most Forthers are minimalists. 03:47:31 That's a part of philosophy. 03:47:35 i see 03:47:51 It ascends C.M. "The Founder" 03:48:09 iirc traditionally it started as more of a robotics control language, correct? 03:48:47 Yes. C.M. wrote it for radio-telescope control. 03:52:34 * MarkT is looking at bigforth.sourceforge.net 03:55:44 If you use Linux, consider Gforth also. 03:56:34 It is very huge. It's not minimalistic RTE. 03:57:05 i jusn installed bigforth on WimME where I work and am looking at it. 03:58:14 Hm. 03:58:38 You may take a look at SP-Forth. 03:58:47 ok 03:59:03 for windows try winforth... 03:59:14 ok 03:59:21 http://spf.sf.net 04:00:01 Above mentioned nn* applications are based on SPF. 04:00:31 Also there're networking applications after Andrejj Cherezov. 04:00:50 acWEB, acFTP, ac-etc. 04:01:01 I don't know all of them. 04:01:07 hmm 04:02:49 damn it is big 04:03:11 Russian FIG site runs on Forth-written server. 04:04:07 i see im going to spend some time in the docs directory 04:09:46 thanks for the info. you've given me a starting place. I've gotta run. time to leave work. talk to you some more I'm sure. 04:10:57 --- quit: MarkT ("I'm outta here") 05:11:48 --- join: networm (~networm@L0632P15.dipool.highway.telekom.at) joined #forth 05:22:12 Dobryjj vecher! 05:22:28 Privet, ASau. 05:22:48 Privet! 05:23:13 How are things? 05:23:47 394 843 bytes in gzipped tar. 05:24:49 I...see. 05:26:04 I'm hacking various FDD drivers. 05:27:46 * Robert wrote one of those in Forth. I had, ehm, "some inspiration", from enth/flux. ;) 05:31:39 BTW, Robert, can you ftp anything from me? 05:32:13 ftp://158.250.48.196/ now 05:33:51 Still trying to connect... 05:33:58 Doesn't seem to be working. 05:34:32 Hm. 05:34:43 Does it connect at all? 05:36:29 No. 05:37:14 Try http now. 05:37:34 If you don't succede then try 8080 port. 05:38:12 Neither works. 05:38:37 Hm. Try 10080. 05:39:00 Maybe there is firewall somewhere. 05:40:06 Still nothing. 05:41:10 Hmm. Port 31337? 05:41:47 Nope. Still HTTP, right? 05:41:57 HTTP. 05:46:21 Hmmmm. What should that mean?.. 05:46:43 Still doesn't connect. Right? 05:47:03 Try 60080. 05:48:05 Trying..and failing. 05:48:28 What should that mean? 05:48:49 I've succeded with neighboring machine. 05:49:19 No idea. 05:49:52 Have you pings in reply? 05:49:58 Traceroute? 05:51:18 I'll check. 05:51:33 I can ping it. 05:52:13 I can't, traced up to vlan9.dr1.sto22.se.bredband.com 07:24:30 --- join: Herkamire (stjohns@h000094d30ba2.ne.client2.attbi.com) joined #forth 07:29:27 Dobryjj vecher, Herkamire! 07:29:46 ASau: mornin' :) 08:57:38 --- join: kc5tja (~kc5tja@66-91-231-74.san.rr.com) joined #forth 08:57:45 --- mode: ChanServ set +o kc5tja 08:58:50 Hi 08:58:55 Dobryjj vecher! 09:11:21 --- join: blockhead (default@dialin-203-tnt.nyc.bestweb.net) joined #forth 09:28:17 --- quit: networm (Read error: 54 (Connection reset by peer)) 09:30:49 Hello, blockhead! 09:33:06 Good morning. 09:33:35 good morning :) 09:34:00 how are you all today 09:34:17 * kc5tja really is only now starting to wake up. 09:35:05 404 934 gzipped bytes of tarred sources. 09:35:44 About 5 KB increase for today. 09:36:09 ASau: your forth? 09:36:29 My Forth involved projects. 09:37:15 mine topped 1k. It'l probably exceed 2k before I get the outer intpreter done :) 09:41:33 (that's the compiled size, not the source size, BTW) 09:54:31 --- join: networm (~networm@L0650P22.dipool.highway.telekom.at) joined #forth 09:58:34 Been thinking a bit more about ForthBox's video display system. 09:58:47 Raw bitmapped display is definitely the simplest in terms of hardware. 09:59:09 But I'm wondering of supporting a character mode wouldn't be viable too. 09:59:39 OTOH, it's also true that character mode can be effectively emulated in software if need be, using SDL-like techniques of a "software managed" frame buffer. 09:59:51 kc5tja: would make it easier for the programmer who didn't want to deal with graphics 09:59:57 kc5tja, character mode is not an issue. 10:00:09 Remember ZX "Spectrum". 10:00:34 blockhead: Not necessarily. Like I said, you can have software-emulated character "displays" that you draw into, then call a function to render the "screen". 10:00:54 ok 10:01:05 ASau: I'm sorry, but what exactly does that have to do with my set of issues? 10:01:27 I mean this mode is not needed at all. 10:01:47 Moreover, I don't remember the ZX Spectrum, but I have reviewed the Jupiter Ace schematics, and its video generation circuitry, while not overtly super complicated, definitely *WAS* more complicated than a simple bitmapped system. 10:01:49 ZX' example shows it pretty well. 10:02:19 ASau: I think a better example would be the Amiga. :) 10:02:41 I don't know Amiga. I had no one. 10:02:59 ASau: It was entirely a bitmapped display system? It never, ever, ever used a tile-based character display system? 10:03:09 I find that *very* hard to believe. 10:04:03 true. the amiga did not have character-mode displays until wb 2.0 10:04:15 blockhead: Sorry, but it never has had any character display modes. 10:04:25 The hardware is pure, 100% bitmapped graphics, through and through. 10:04:30 When you write a byte to video-mapped memory (ZX) you get several points. 10:04:47 When you write 8 bytes, you get a character. 10:05:03 8x8 picture. 10:05:04 kc5tja: they added them with wb 2.0. 10:05:23 * blockhead wishes he still had the RKM :/ 10:05:41 blockhead: No, not quite. :) They modified console.device to maintain a simulated character map. I'm talking about the hardware though. 10:05:43 then I could look up the relavent passage 10:06:04 kc5tja: umm, that makes sense. ok. :) 10:06:09 No char. gen. Software only. 10:06:18 * kc5tja nods -- I know what you're referring to, but it's not what I was directly talking about. However, that "fake character display" technique is precisely what I was thinking about though. 10:06:22 Gah! 10:06:25 I'm not making any sense. 10:06:37 * kc5tja nods -- I know what you're referring to, but it's not what I was directly talking about. However, that "fake character display" technique is precisely what I was thinking about when I said that a character mode display can be simulated. 10:06:58 ASau: Interesting. I didn't know this. I'll have to do some research. 10:07:11 kc5tja, it's very simple. 10:07:14 makes snese to me. fake character genration would be a software solution ... like the 2.0 console.device 10:07:16 Must have been pretty slow for text stuff, but pretty cheap to implement. Probably really brought the price of the computer down. 10:07:36 text was slow, especially before 2.0 :D 10:07:39 kc5tja, the display is 256x192 points. 10:07:42 blockhead: Yup. And with a 6MHz clock speed, it might actually be fast enough, especially if you can give it hints on where to update the screen. 10:07:52 blockhead: Well, again, a different issue. 10:07:55 there were third party font acceleartor drivers :D 10:08:05 BTW, I have a Amiga 500 with Kickstart 2.04 on it, and the text speed in 2.0 is actually *slower* than in 1.3. 10:08:12 * blockhead misses his amiga :( 10:08:21 kc5tja, successive writes fill raws. 10:08:26 But not by much. The reason is 2.0 does a lot more processing in the background. 10:08:58 kc5tja, when you write A, A+256, A+512 etc (8 times) you get character. 10:09:00 ASau: Yep. That's what I was thinking for my ForthBox idea, originally. Also, using 5-pixel wide characters would be easy, since all pixels are 8-bits wide. 10:09:00 kc5tja: that's very odd, becasue I had a speed *increase* going to 2.0 on my 500. (blockhead scrathces his head in puzzlment) 10:09:46 kc5tja, so you get 32x24 chars. display. 10:10:07 ASau: Right. Though, the ZX requires 8 writes, while my system requires 64 (assuming an 8x8 character). 10:10:09 32x24 - just like my old zx81 :D 10:10:28 (or was that 40x24 ... hmmm?) 10:10:30 * blockhead neverminds 10:11:25 kc5tja, that depends on color depth. If you decide to color each point. 10:12:09 kc5tja, ZX made the same color for 8x8 squares. 10:18:10 Well, like I said, my display is truely bitmapped, with 256 colors, so each point has its own color. 10:18:59 kc5tja: you've built this already? or still in the thinknign/planning stage? 10:19:08 eitehr way, it sounds interesting 10:19:26 kc5tja, that sounds good. 10:20:03 kc5tja. What width do you plan to use? 10:28:27 blockhead: Still thinking about it. 10:29:06 ASau: I was originally going to use 640x480, but I'm thinking of going with a selectable 320x240 or 320x480 instead. 10:29:19 neat. hope it goes well. is this a commercial project or a hobby/educational thing for yourself? 10:29:40 kc5tja, 8 bits for colours? 10:31:04 Yes. 10:31:09 Fixed color palette. 10:31:18 kc5tja, better make 512 pts. width. 10:32:26 Or a little more. 10:35:19 If you stay with 8 bit bytes, than 512 pts. is requirement. 10:37:08 I'm not convinced of this. 10:37:18 And it is true that I *do* prefer 512 horizontal pixels. 10:37:18 Otherwise it would not be as good as should be with 512 pts. width. 10:37:29 But if I'm going that far, I may as well go with 640. 10:38:01 The idea is to make a system that doesn't take 3 seconds to clear the screen. :) 10:38:13 While using as little hardware as possible. 10:39:16 kc5tja, there was a trick on slow Z80. 10:39:47 To clear screen fast you should set SP a push zeroes. 10:40:54 ...and push zeroes. 10:41:23 I don't see why 640. 10:41:28 512 is better. 10:42:10 that could be dictated by available hardware 10:42:34 MrReach, can't you see why 512? 10:42:56 yes, fits evenly in 9 bits 10:43:03 No. 10:43:24 What is the reason then? 10:43:24 Because, Forth screen is 64 characters per line. 10:43:37 That was anti-climactic. 10:43:52 512 = 64 x 8. 10:43:53 oh, heh, forgot all about that ... haven't used screens in years 10:44:22 * kc5tja can get 64 characters on a 320 pixel display too, using 5 pixel wide characters. 10:44:32 (which byte-addressible pixles make trivial.) 10:44:36 pixels even 10:44:55 5 pixel wide characters might be a bit hard on the eyes? 10:45:06 blockhead: At 320 pixel horizontal resolution? 10:45:08 kc5tja, that will make software more complex. 10:45:14 ASau: No. 10:45:25 keep in mind that one pixel is eaten up by the between-character spacing 10:45:37 ASau: It'd make it faster, frankly. A character is reduced from 64 writes to only 40 writes. 10:45:40 that depends on the font 10:45:43 blockhead: Yes. 10:45:47 blockhead: I'm well aware of that. 10:45:51 some chars have more 10:46:00 might want to draw up some letters and see how it looks 10:46:16 heh, dump the C64 ROMs? 10:46:21 blockhead: TRS-80 uses 5x7 character fonts. 10:46:27 kc5tja, so you plan 1 byte is point colour, don't you? 10:46:39 ASau: I believe I've already said that three times already, yes. 10:46:44 " blockhead: I'm well aware of that." <--- ok, sorry! 10:46:59 in any case, you'll always want as much resolution as you can possibly afford 10:47:03 kc5tja. Sorry, I've not found it out. 10:47:31 and "afford" applies to both hardware cost and processing time 10:47:47 the trs80 dispaly looked decent ... so 5 pixels won't be a problem after all. 10:48:04 blockhead: Remember, I'm not using 5 pixel wide fonts on, say, a 1600 pixel line. :) 10:48:10 That is just . . . wrong. 10:48:11 :) 10:48:27 can you say "squint"? 10:48:31 If I did go with a 512 pixel line, it'd be because of the 9-bit offset to compute a Y coordinate. 10:48:41 true. and if you use a tv as a minotr, the natual blurring may function as a sort of anti-aliasing 10:48:42 Hi MrReach. 10:48:50 greetings, Robert 10:49:07 kc5tja: Yeah, but I'm going to use VGA instead. The circuitry to interface it is much easier, especially if you want to do color. 10:49:28 there's lots of VGA hardware out there 10:49:50 * blockhead marvels at his own typos 10:49:58 * kc5tja has considered using 256 pixel lines too, but . . . I don't know. That seems to be a little *too* small for me. 10:50:01 did you intend to use a tube-type display or LCD/plasma? 10:50:30 MrReach: Both; that's why I'm restricting myself to the true-blue IBM VGA timings (which is the 640x480 display mode that we've all come to love). 10:50:43 * MrReach nods 10:50:58 what type of processor/mem? 10:51:27 MrReach: 65816 @ 6.25MHz (dictated by VGA timings, to keep things simple), probably around 512KB of RAM. 10:52:35 input devices??? 10:53:38 PS/2 keyboard & mouse (though relatively rarely used). 10:53:57 tethered, mostly? 10:54:04 Tethered? 10:54:26 as oppused to cordless? 10:54:31 many smaller systems are expected to have an "umbilical" to a host machine for programming 10:54:53 oh! 10:54:58 oh, yeah. It's cheaper/simpler. 10:55:27 but that really depends on how it's to be used ... would be senseless for a PDA 10:55:44 but if it's operating a CNC machine, it's the logical choice 10:56:29 ForthBox is intended to serve as a quieter, lower power alternative to my desktop PC. 10:56:50 ack! 10:56:56 Especially for accessing the Internet (primarily e-mail and IRC). 10:57:04 I couldn't live without printing 10:57:05 kc5tja: kewel!! 10:57:36 then it's *ALL* about display resolution 10:57:38 Umm...my computer will have a parallel port too.... 10:58:20 good luck with the printer drivers, though 10:58:32 many don't understand raw text anymore 10:58:59 That's what open source software is for. 10:59:00 :) 10:59:32 Besides, this PC isn't about eschewing the x86 completely. 10:59:50 It's about relying on it *less*, primarily to reduce my power consumption, and administrative hassles. 11:00:24 yeah, things are getting rather outrageous for those who only word process and IRC 11:00:29 Obviously, the more things I do with the ForthBox, the better. No fans, no moving parts (storage will probably be compact flash or IDE harddrive), etc. 11:00:53 I was wondering about the flass option 11:01:25 it's pretty cheap now, easy to use, and rather faster than your processor 11:14:07 What is pretty cheap and faster than my CPU? 11:14:19 flash memory 11:14:38 OK, I was wondering if I missed something I should have read. :) 11:14:48 Glad to see I'm on the same page still. :) 11:15:51 --- join: usa (~usa@adsl-64-142-9-188.sonic.net) joined #forth 11:16:11 Good evening, usa! 11:16:27 take care folks, i'm off 11:16:30 --- part: MrReach left #forth 11:16:38 Actually it is still morning here on the west coast of the us. 11:17:06 No matter. 11:17:09 I'm not there. 11:17:56 I went to my first SVFIG meeting (Silly cone valley Forth interest group) yesterday. 11:18:10 hehe: it's hard to remember who is in what time zone. I'm tempted to say "good morning" whenever someone enters the cahnnela dn "goodnight" when I leave, regardless of the actual time here :D 11:19:35 I have been meaning to go for some time, but what prompted me was a talk about bootstrapping a Forth system in C, and the problems it had. In particular how to deal with create ... does> 11:20:16 blockhead: I guess this is why Swatch decided to start @-time. 11:20:26 * blockhead nods "create" & "does" has me flummoxed 11:20:35 @-time? like GMT? 11:22:03 it never occuured to me to look for a forth interest group in my area. Hmmm. Thanks usa for the idea! 11:22:41 What area is that? 11:22:58 new york. probably one around here 11:24:07 Create and does> are probably one of the most useful things in forth. Of course they are also one of the most difficult bits to implement. 11:24:14 although this channel has been very helpful 11:24:30 hey guys 11:24:39 Dobryjj vecher! 11:24:51 usa: I here you! create and does completely confuse me! 11:25:32 In what way do they confuse you (and no, I am not an 'Eliza' program)? 11:25:43 implementing them 11:26:06 * blockhead is in the middle of writing a forth :D 11:26:29 I don't really see what is complex in DOES> 11:28:22 Implementing them was a major chuck of the talk yesterday. It was for a subroutine coded forth, written with a 'C' bootstrap stage. Essentially the C opened up a file, memory mapped it, and then started interpreting it. The amount that the C could do was fairly small, although it obviously had things like 'get next token' (in two different forms, one to handle whitespace delimited, and one for a particular delimiter (e.g. ") 11:28:55 ASau: have you written an forth system? 11:29:26 I have a good example of implementation. 11:31:20 And of course it is not C. 11:31:50 Though I don't understand how C implementation could make things more complex to understand. 11:32:09 With respect, that is not answering the question! Implementing the code associated with does> is probably the most tricky thing in a forth system. 11:32:40 Hmm. 11:32:46 What do you mean? 11:32:50 and the inner interpreter is like the easiest thing to implement - surprisingly 11:33:03 i need to by Thinking Forth 11:33:05 buy 11:33:07 Using does> is pretty easy, it is implementing it where the details get you. 11:33:11 Substituting call point in constructed words? 11:33:36 Nothing on amazon :/ 11:33:41 Or compiling code referenced by DODOES? 11:39:08 Maybe I've found what confuses you in DOES> implementation. 11:39:43 You should learn assembly-written Forth implementation. 11:41:02 OK. 11:42:04 Though... 11:42:23 it can be described in Forth itself. 11:42:23 What do you think is more tricky than does> ? 11:43:01 Terminal input. 11:43:34 It is more complex. 11:43:51 It involved input line editing. 11:44:34 ...involves... 11:46:11 DOES> is only unusual. It's not as complex. 11:47:24 Not always. For a hosted forth it can just be one call to the OS/library. From memory gforth is linked against libreadline. For a native forth I typically provide nothing more than 'delete last character', biund to both the Delete and Backspace keys. Of course I have the advantage of having a nice terminal program which enables me to edit things befor I send them. 11:47:44 ^biund^bound 11:49:05 I don't consider any external subroutines. 11:53:16 --- part: usa left #forth 12:02:45 what took me quite long in my implementation of dodoes was, how to get the address of the code after does from dodoes.. 12:03:18 Save it in a word. 12:03:39 but in which? 12:04:10 the code after dodoes itself is in the defining word 12:04:28 Let us consider : DEFINES run ; 12:04:34 DEFINES W 12:04:56 You should save in W pointer to run 12:05:54 yep. 12:06:07 just needed some time to understand that.. 12:06:13 i was looking at something like 12:06:25 : DEFINES CREATE DOES> run ; 12:06:35 See how it works. 12:06:46 and then read in the standard that CREATE isn't supposed to allocate any cells 12:07:04 but to save something, I'd have had to allocate a cell 12:07:35 networm, it has to allocate at the least some space in dictionary. 12:07:56 Let's see how it works. 12:08:05 DEFINES is called. 12:08:26 CREATE creates a word and reserves a space for code. 12:08:46 Otherwise your new word can not be called ever. 12:08:56 which I put the XT of DODOES in 12:09:08 DOES> makes changes in this reserved space. 12:09:36 networm, not only for DODOES, but for associated pointer also. 12:10:02 Or you have to make somewhere a custom DODOES 12:10:17 particulary for DEFINES 12:11:52 Noone makes you use constant amount of space for code field. 12:11:53 yes, makes sense. but in Moving Forth (I think) there was a solution which didn't need that extra cell 12:12:31 but I think I understand now how it works.. I just was confused by it at first. spent like half a day on implementing does> :) 12:12:34 --- join: imaginator (~George@georgeps.dsl.xmission.com) joined #forth 12:12:54 hi imaginator 12:12:56 Dobryjj vecher! 12:12:57 how goes the C-forth? 12:14:00 Ah, yes.. the chapter called "Demystifying DOES>".. and actually mystified it for me :) 12:14:01 networm, you really can compile custom DODOES when DOES> is executed. 12:14:43 it uses some trick where putting a CALL into the code field allows getting the address of code after DOES> out of the CPU's stack 12:16:55 Hmmm. 12:17:01 At run time? 12:18:21 yes 12:18:42 W is executed, and has a call of the code stored in DEFINES 12:19:16 or no 12:20:13 hi slava 12:20:15 W -> DEFINES -> DODOES 12:20:22 i think it calls like that 12:20:36 and DODOES gets the XT of DEFINES out of the CPU stack 12:20:47 and therefore needs no cell where to store it 12:21:20 When DODOES is executed everything it has are: return address and current interpreting address. 12:22:48 I.e. old IP and current IP. 12:23:06 so if postfix code can be represented as a directed graph, how are conditionals represented? 12:23:08 Stacks are for run time data. 12:24:31 ah, found it 12:24:33 http://www.zetetics.com/bj/papers/mov3-11.gif 12:24:42 DEUX is W, CONSTANT is DEFINES 12:25:08 so DODOES finds the address of DEFINES from the CPU stack 12:25:13 that makes sense to you? 12:25:14 :) 12:25:19 since that'S where it actually got called from 12:25:27 well, it didn't :P 12:25:50 but the title "Demystifying Forth" promised to make me understand it :) 12:25:51 good, was questioning my santity there for a second :p 12:26:00 s/Forth/DOES>/ 12:26:52 networm. That's what I called "custom DODOES". It contains DODOES code in DEFINES after DOES> 12:28:01 yes. i guess the JSR DODOES also needs more than one cell 12:28:35 I was speaking about this ITC DOES> : (DOCOL) () (run) (;) 12:28:56 and (DODOES) ('run) (body) 12:29:07 later for W 12:29:21 first was for DEFINES 12:30:31 Parentheses separate tokens. 12:31:16 yeah. so in that case, DODOES has no way to find DEFINES 12:31:32 unless it stores it somewhere inside W 12:32:44 You stored pointer to DEFINES as pointer to "JSR DODOES" that's contained in this DEFINES . 12:33:04 You've... 12:36:33 ah, true. 12:37:02 and the ('run) isn't needed since it is found out somehow inside DEFINES 12:40:05 It is IP value when JSR is executed. 12:41:07 ' W @ @ next-insttruction 12:42:09 ' W @ size-of-jsr-command + --- more correct. 12:42:47 As your ' returns CFA. 12:48:36 ok. so that's the extra complexity in the Moving Forth way of describing DOES>.. 12:49:02 instead of just storing ('run), it is derived by the location of the "JSR DODOES" 12:49:19 networm. My way is pretty well described there: 12:49:20 1. The fig-Forth solution. Fig-Forth reserved the first cell of the Parameter Field to hold the address of the high-level code. 12:49:23 so it was just a bad choice as Forth newby to learn from it 12:49:41 See http://www.zetetics.com/bj/papers/moving3.htm 12:49:58 yes, I read that.. and so I tried to not do the "fig-Forth solution" 12:50:18 but it seems, it is the standard solution, and the only one working without knowing the underlying HW 12:50:25 You're confused with "2. The modern solution." phrase. 12:51:37 I think "modern" is bad. 12:52:19 It require more machine code knowledge. 12:52:26 ...requires... 12:52:53 yep. so it's better for performance, but not for understanding the concept 12:53:39 I don't think it's better for performance. 12:54:14 You have the same nesting of indirect calls. 12:54:25 ...nesting level... 12:54:27 hm, so it saves one cell of memory.. 12:55:16 Yes. When you have many DODOES words you save memory. 12:56:25 Hmmm. It seems "modern" solution is worse in performance. 12:56:30 See: 12:56:49 1. FIG-Forth. XT -> DODOES 12:57:04 2. "Modern." XT -> JSR -> DODOES. 12:57:32 and that for every DODOES word.. 12:57:45 For the same performance you are to inline DODOES in each word. 12:58:40 i think i'll modify my code back to the fig-forth solution now :) 13:00:52 The most modern solution should be inlining custom DODOES routine into each defined word. 13:01:29 This will consume more memory but eliminate two indirections. 13:04:54 something else which confused me was: 13:05:18 warpzero: (DODOES) (build) (body) 13:05:27 er 13:05:28 W : 13:05:42 stupid : nick completion :P 13:06:21 i.e., when W is created, there might be code put into the data field 13:06:51 then when the code is added, there's no more cell free to store ('run) 13:06:54 networm. No. 13:06:54 W : (DODOES) ('run) (body) 13:07:22 can i help you networm? 13:07:24 W needs no knowledge how it's been created. 13:07:47 warpzero: sorry, I wanted to start a line with W: and xchat auto-completed it to your nick 13:07:56 But CREATE will always need to allocate that extra cell for the potential DODOES address. 13:08:13 madgarden. Yes. 13:08:38 I don't have a problem with it, but networm does. ;) 13:08:42 networm: well fix it 13:08:47 Your anti-Forth standard mixed CREATE and yep.. so that was the problem. ANS specifically adds this to the end of the description of CREATE: "CREATE does not allocate data space in name's data field." 13:09:34 the ('run) is technically not data space, IMO. 13:09:35 networm, that's in CF not in NF. 13:09:36 It's code space. 13:09:58 warpzero: done. nick-completion is disabled now :) 13:10:11 w: 13:10:31 :) 13:10:34 w: 13:10:45 i dont have a problem with nick completion on 13:11:02 Hmmm. I thought it is not a problem. Testing... 13:11:03 w: 13:11:06 hm, yes.. so the codefield hasn't a static length of one cell anymore 13:11:23 n: 13:11:27 w: 13:11:28 networm, you may consider it is parameter field. 13:11:32 W: 13:12:06 yes, i see. it is only code field from the view of the standard :) 13:12:11 Anyway, who gives a crap what ANS thinks? ;) 13:12:29 BTW, think more. 13:12:46 It may happen ANS does not specify length of code field. 13:13:08 yes.. but something requiring thinking = complicated 13:13:59 I don't really know, why you want single cell CF. 13:16:12 And I don't understand what makes such a fuss if CF has no static length. 13:17:20 6.1.0550 >BODY 13:17:21 to-body CORE 13:17:21 ( xt -- a-addr ) 13:17:21 a-addr is the data-field address corresponding to xt. An ambiguous condition exists if xt is not for a word defined via CREATE. 13:17:22 yes.. i just was confused by it. i don't see it as a problem anymore :) 13:17:58 Seems to imply that CREATE could be creating a variable length entry. 13:21:23 There is no guarantee that an execution token is a pointer to a word's body. 13:21:32 E.g., in a token-threaded Forth, it could be an index into a table of tokens. 13:21:43 >BODY resolves the 'token' (if any) into the actual body address. 13:24:31 Anyway. 13:24:58 Interpreting standards is for you. 13:25:05 We are not lawyers. 13:25:13 Yup. 13:25:22 * kc5tja just finished doing some research on the ZX Spectrum. 13:25:38 That is a machine that has serious graphics architecture deficiencies. :) 13:25:57 kc5tja. No. 13:26:00 It reminds me of the CGA or Hercules graphics cards when plotting pixels. :) 13:26:12 Oh, it looks pretty on the screen. 13:26:14 Those're not defects. 13:26:41 It's hard to think of them as anything but. 13:26:43 U880 run about 850 kHz. 13:26:43 they are memory optimzations 13:27:01 blockhead, you're right. 13:27:25 I could have done things a lot easier. 13:27:37 Now, I will say this much. 13:27:45 1 MHz Z80A had better graphical performance than 10 MHz 80(2)86. 13:27:57 At the same quality. 13:28:05 Using a look-up table eliminates nearly all the effective address computation, so it's not so much an optimization of memory as it is an optimization of hardware parts count. 13:28:12 kc5tja, how about the Jupiter Ace? Basically a Spectrum with a Forth OS. 13:28:29 ASau: And a Commodore 64 wiped the floor with the Z-80, because the 6502/6510 was twice as fast (per MHz) as a Z-80. But that doesn't mean anything. 13:28:45 madgarden: No, basically a ZX81 with a Forth OS. BIG difference. :) 13:28:53 The Spectrum wipes the floor with the ZX81. 13:29:06 ASau: I think the z80 was a great chip 13:29:13 Interestingly, it was after reading up on the Ace that I got inspired to consider my ForthBox. 13:29:31 kc5tja: well, yeah, being that it is color and has a more sophistacated OS 13:29:47 * kc5tja isn't saying the Spectrum is an unworkable design. CLEARLY it's workable! Lots of cool-looking games are available for it. 13:30:12 But I guarantee you, hands down, not a one of those games use the ROM routines for drawing, because the ROMs *compute* pixel addresses, instead of using lookup-tables. 13:30:22 blockhead: The hardware is fundamentally superior. 13:30:48 blockhead: The Spectrum has an ASIC that handles keyboard and video memory refresh etc. The ZX81 does everything with discrete component TTL. 13:31:04 The ZX81 also lacks a graphics mode. It's text-mode only. 13:31:24 ZX80 is graphics only. 13:31:27 But it DOES have a programmable character matrix. 13:31:34 kc5tja: there is a "hi res" graphics mode, actually :D 13:31:54 (hi res being 320 pixels in width) 13:32:40 Well, then the Jupiter Ace isn't even a relative of the ZX81 then. 13:32:56 Because I know for a fact that the Ace has text-mode only. 13:33:19 * blockhead never got to actually use a spectrum. Read about it. Ditto for the ace. I owned a zx81 so I know more about that one. 13:33:26 hi kc5tja 13:33:32 No graphics (but, again, programmable character matrix, so you can often "fake it" sometimes), no sound, etc. 13:34:01 Dobryjj vecher, chris-xp! 13:34:04 Dobryjj vecher, chris-xp! 13:34:37 dobryjj vecher! 13:35:32 * blockhead wishes his zx81 hadn't died. emulation just isn't the same :( 13:35:59 The Spectrum has ROM that works instead of character generator. 13:37:13 According to this site that I'm reading now, the ZX81 used the CPU to bit-bang the video modulator directly. 13:37:27 E.g., 75% of the CPU time was spent stuffing the video shift register. 13:37:34 This would probably be why it can do graphics. 13:38:05 (notes: Atari 2600 basically did the same thing; it got about 160 pixels across on the screen, effectively, though it had a slower CPU) 13:38:10 (clock speed wise that is) 13:38:17 yup 13:38:35 that's why they had the "fast" mode: stop sending video :D 13:39:05 then "slow" when you wanted to start sending video again. :) 13:40:02 AFAICT, the Spectrum does away with all that. The ULA in the Spec supports full DMA to the 'contended RAM' banks. 13:40:14 Yes. 13:40:38 ULA blocks video memory for some time 13:40:42 (I had to giggle when I read the difference between the contended and uncontended RAM; my brain kept "right-sizing" those terms into CHIP and FAST RAM) 13:40:46 in case of collision. 13:41:34 Most time CPU and ULA work independently. 13:44:18 This was the case for the Commodore Amiga too. 13:44:51 The Commodore 64, 128, Apple II-series, and Atari 8-bits all worked differently though. They chose to use the top-half of the clock cycle for the CPU access, and bottom-half for custom chip access. 13:45:00 Thus, there was never any memory contention. 13:52:30 Hm. 13:52:39 I may mistake. 13:53:26 It can be that CPU and ULA work on different fronts of clock impulse. 14:00:07 What's a good book for learning about the internals of the CPU? 14:00:25 the/a general 14:01:46 kc5tja: how did you learn so much about processors? 14:02:05 same question to ASau too if you don't mind :) 14:02:44 imaginator: Just reading good documentation over the years, which in general, is no longer available to the general public. 14:03:20 ASau: According to the Spectrum technical documents I found on the web, the ULA will arbitrate access of the CPU to the contended RAM. 14:03:41 imaginator. "Book is the source of Knowledge." (Maksim Gor'kijj) 14:03:56 It pretty much has to, since the Z-80 has 3 to 4 clocks per memory cycle. The 6502 can get away with such a simplistic half-n-half system because it has one clock cycle per memory cycle. 14:05:29 * kc5tja might consider building a primordial ForthBox kit for folks who are interested in building one. 14:05:53 A 65816-based computer, that borrows more from the ZX81 than the Spectrum (e.g., not a whole lot of graphical power). 14:05:55 neat! 14:06:13 Not sure what I'd call it though. 14:06:34 Nor am I sure what video resolutions it'd support. 14:06:48 I do want to keep it on VGA display devices if possible though, due to the simpler drive electronics. 14:06:48 I thought it was called forthbox? 14:07:11 Well, I could call it ForthBox, but then my current ForthBox ideas would have to move into the ForthBox II realm. :) 14:07:16 plus, as you said before, lots of vga monitors around 14:07:49 call it "kestral" then. (that just popped into my head for no reason) 14:07:56 Heheh :) 14:08:10 actually, I think a kestral is a bird of some kind 14:08:12 Heheh, the ForthBox Kestral. :) 14:08:14 Name it after birds. 14:08:34 say it out loud, it sounds good 14:08:34 kc5tja. There may be variations. I use "Spectrum" as general name for a family of ZX-compatible or not-so-sompatible boards. 14:09:15 ASau: Right, I understand. Timex/Sinclair systems were derived from ZX-machines, but aren't 100% equivalent (usually 100% backward compatible though, which is nice) 14:09:21 kc5tja. Some of them has no ULA but discrete logic. 14:10:20 kc5tja. Not really discrete but based on less powerful chips. 14:11:12 kc5tja. IIRC "Leningrad" is of such a kind. 14:11:37 *sigh* 14:11:38 blockhead: OK, I have an issue now. According to old-computers.com, the computer has 64x44 *pixel* "graphics" display. Is this true? Or is it a true 256x192 display? 14:11:42 man 14:11:56 are they ever gonna just make a X11 fbdev wrapper? 14:11:59 *sigh* 14:12:36 chris-xp: Probably not. :) 14:12:43 kc5tja: an issue? do you mean a question? 14:12:46 chris-xp, why? fb is slow 14:13:17 slava: faster than X11. 14:13:20 * blockhead re-reads 14:13:29 chris-xp, no way 14:13:33 chris-xp, fb = not accelerated 14:13:51 slava: and they're working on it. 14:14:00 in fact, I think they already got something there 14:14:08 DRI comes to mind, not sure if that applies though 14:14:18 64x44 pixel dispaly doesn't sound right, unless you use the invers space as a "Set" pixel and the space character as a "clear" pixel. 14:14:19 blockhead: Well, I'm getting conficting reports. You claimed that it had 256x192, as did some websites. However, still more are claiming 64x44. 14:14:20 dri is for 3d 14:15:27 but thats the basis for the acceleration :) 14:15:29 kc5tja: 'k. its's like this .... 14:15:40 the 3d provides fast stuff, not restricted to 3d 14:15:53 DRI uses 3d stuff, and it can use it to do accelerated 2d stuff 14:16:06 viewed as a character mode display, the display was 32 wide by 44 high 14:16:48 22 high. :) 14:16:52 But yes, go on. 14:17:10 kc5tja: no, you are right, 22 high. 14:17:27 There are 16 graphics 'characters' in the font, that much I am aware of. 14:17:37 Which can give rise to 64x44 'video mode.' 14:17:48 still, in that same character mode, you could use the "graphics characters" to get a 64x44 display. 14:17:55 but there is a third mode 14:18:03 But now I have to wonder, haven't there ever been hacks to actually pull off a true 256 pixel display? 14:18:12 Ahh, here we go. 14:18:28 using some sort of software trick, used by some zx81 games, to get 320x192 14:19:40 Well, here is my reasoning. 14:20:01 156, my mistake 14:20:05 256 14:20:09 If the computer is spending most of its time refreshing the display in SLOW mode, and there are 32 characters on the screen per line, that suggests that the CPU is fast enough to draw 256 pixel graphics. 14:20:10 not 320 14:20:34 I don't think it's so much a software trick as it is exploiting the actual hardware. 14:20:39 right, isnce the character generator is software anyway 14:20:59 so "trick" was bad word usage onmy part. you get the idea though 14:21:04 Yeah. 14:21:09 "on my" not "onmy" 14:21:09 are you saying that you can't put something on the screen, and just leave it there? 14:21:15 you always have to refresh? o.O 14:21:23 chris-xp: No. The CPU *is* the video chip in this case. 14:21:40 chris-xp: The Atari 2600 worked the same way, though with less resolution due to other factors. 14:21:53 more colors :D 14:22:01 oh man 14:22:04 slowness 14:22:27 No. It still only rendered "monochrome", even though you can change the foreground and background colors whenever you weren't busy stuffing the other registers. :) 14:22:40 oh :) 14:22:40 chris-xp: Yes, but cheapness. 14:22:46 brb 14:23:18 chris-xp: A computer with no need for customized logic is VERY cheap. The Sinclair computers were more than half the cost of its competitors during its most popular time. 14:24:03 kc5tja: or, you could stuff a second, maybe slower, chip in there. 14:24:24 kc5tja: use either I/O instructions or a dedicated framebuffer, and have the second chip do its own thing 14:24:26 from ROM :) 14:24:52 chris-xp. No need for second chi[. 14:24:59 ...chip. 14:25:31 chris-xp: of course, but this way, you can let the first proc worry about other stuff while the other one stuffs the video regs 14:25:34 chris-xp. One suffice pretty well. 14:25:48 ASau: well, depends on what you're doing :) 14:26:35 chris-xp. No doubt. 14:26:48 ASau: :) 14:26:55 * chris-xp would love a dedicated IRC terminal :) 14:27:00 chris-xp. The goal was the _cheap_ PC. 14:27:10 of course :) 14:27:28 man 14:27:30 And Sir Clive made it. 14:27:43 i would love a forthbox with eth connection 14:28:40 back 14:29:05 IRC terminal :) 14:29:25 Also The Spectrum is good example how you can get reasonably fast and good graphics. 14:29:31 At the same time. 14:29:41 And using rather slow CPU. 14:30:15 chris-xp: A dedicated IRC terminal would be one application for something that has no video chip. :) 99% of the remaining 25% of the CPU's time is spent waiting for the user to press a key, or for a message to come from the IRC server. 14:30:39 kc5tja: true :) 14:30:52 kc5tja: how about a dedicated simple HTML+image browsing terminal? 14:30:58 The problem, however, is you'll get pretty sucky ping times with it. :) 14:31:08 :) 14:31:27 with a HD, you could do "normal" (no jpg attachments) e-mails and usenet 14:31:37 actually, wihtout a HD 14:31:45 Well, ForthBox was originally going to have an IDE interface anyway. 14:31:48 (but a hd is nice for saving the emails) 14:31:54 nice 14:32:30 I've recalled a man with 1 MB RAM on his Speccy. 14:32:39 have the OS use fat32 and you can swap the drive between it and a regular computer 14:32:59 (ot is fat32 a pain to do?) 14:32:59 He held the whole floppy disk into RAM. 14:33:00 But, if I do decide to build this micro-ForthBox (ForthBox-0?), it'll probably be able to address only 64K of RAM for simplicity and minimum parts count sake. 14:33:05 or, not ot 14:33:26 kc5tja: would the drivers for internet take up too much of tht ram?? 14:33:33 blockhead: FAT32 is a pain. Plain vanilla FAT is pretty easy though. 14:34:01 kc5tja. No subdirectories. 14:34:09 ASau: FAT has subdirectories. 14:34:15 ASau: Ever since MS-DOS 2.0. 14:34:19 I know. 14:34:24 kc5tja: he meant just not use them, I think :) 14:34:28 Oh. 14:34:33 Well, that remains to be seen. 14:34:39 But if you have none of them things go much more simple. 14:34:43 * kc5tja believes in the Forth philosophy -- code what you need. 14:34:55 ForthBox was going to use block storage, though. 14:35:00 bbl - din 14:35:06 --- quit: blockhead ("Client Exiting") 14:35:14 * kc5tja had no extant plans to use filesystems. 14:38:08 Hmm... you mention blocks, and look what happens. :D 14:38:14 hello kc5tja 14:39:49 Howdy 14:40:04 i must look at the block words.. after all i named my forth block-forth :) 14:42:00 chris-xp: So, seriously, would you use a Forth box that supported only monochrome graphics and text, and only really offered 25% of the computer's theoretical performance for you, in the interest of being cheap to make and relatively easy to build? 14:42:16 kc5tja: Indeed. 14:42:27 kc5tja: parents yell at me daily for leaving my computer on. 14:42:49 kc5tja: and, I want to stay on IRC. 14:43:04 And would you be interested in paying a small price for it (enough to cover parts and shipping, plus a small profit, something like 5% to 10%)? 14:43:29 kc5tja: Indeed, depending on the price 14:44:02 Okay. Well, I'm just curious, because if I do make something like this, then I don't want to eat *all* the R&D costs. 14:44:11 :) 14:44:18 ships with FTS/Forth? 14:44:31 I know full well that it'll be a sink-hole for cash, but the shallower the hole, the better. 14:44:42 It'd ship with a dialect of FTS/Forth that was optimized for the 65816, yes. 14:45:29 cool 14:45:35 with eth support? :) 14:45:46 (thats what I'm mainly interested in 14:46:05 Ahh 14:46:09 Well, I don't know. 14:46:11 That depends. 14:46:18 Depends entirely on cost. 14:46:37 TCP/IP. Because I'd make it a dedicated IRC terminal 14:46:47 and maybe a second, dedicated web terminal 14:46:52 TCP/IP support probably wouldn't ship with the core code. 14:47:04 but the hardware specifications for the Ethernet support would definitely be included. 14:47:14 well, i can probably do that then, or steal it from you. 14:47:19 * kc5tja would probably release TCP/IP code as a ROM upgrade or something after the fact. 14:47:34 any storage device? 14:47:38 like, simple floppy? 14:47:39 IDE 14:48:06 It'll probably use compact flash though, because they consume less power, are silent, and are smaller and cooler. 14:48:20 costs? 14:48:23 for the flash? 14:48:28 No idea yet. 14:48:38 ok. 14:48:41 * kc5tja is still just thinking about the design of the system. 14:48:43 do you have an estimate for the cost? 14:48:59 Also, due to timing constraints involved with these I/O devices, expect the screen to go blank while loading or saving data to these devices. 14:49:05 No idea. 14:49:09 because, I work at mcdonalds, and have a car and cell phone to pay for. thus, limited funds. 14:49:22 kc5tja: Oh, no problem. 14:49:24 chris-xp: Cry me a river. I work two jobs, going on three, remember? 14:49:33 :) 14:49:48 lol 14:52:10 I think I'd like floppy, easy to download stuff on my computer and transfer it 14:52:28 Use null-modem line. 14:52:52 That would be exotic nowadays. 14:53:09 like, COM-to-COM cable? 14:53:26 or parralel? 14:53:42 It does not matter. 14:56:02 I think RS-232 trancievers have survived till now. 15:10:54 --- join: blockhead (default@dialin-203-tnt.nyc.bestweb.net) joined #forth 15:13:32 kc5tja: how many transistors in a Steamer 5? 15:13:39 (guess :) ) 15:13:53 5? 15:13:57 :) 15:13:59 Heh. 15:14:11 =) 15:28:13 Steamer 5? 15:28:26 kc5tja: erm, that might not be the name. 15:28:42 kc5tja: that 8-instruction 8-bit CPU with the 3-depth rotating stack 15:29:00 * kc5tja uses null-modem to transfer data from his laptop to his PC, because the floppy is borked, and it can't support a network card due to lack of suitable OS. 15:29:19 chris-xp: You mean the 8-instruction, 16-bit CPU? The Steamer-16? 15:29:26 ok, that might be it :) 15:29:33 but, then, that would be bad... 15:29:38 However many transistors are in a modest CPLD chip; it's not an actual chip, but rather, a program for a programmable chip. 15:29:40 how many transistors did it have though? 15:30:07 kc5tja: Actually, it was just me wondering how small an 8-bit CPU can get, while still being useful. 15:30:20 and I thought it was 16-bit. 15:30:24 er, 8-bit 15:30:35 Nope, Steamer is a 16-bit chip. 15:30:45 Ok. 15:30:59 woudln't make a good forth chip :) 15:31:18 However, I will say this much. Most minimal CPUs seem to be able to exist in 3000 to 4000 gates, so you figure, about 16,000 transistors seens reasonable. 15:31:34 coolness. 15:31:39 chris-xp: Actually, it'd *ROCK* as a Forth chip, except for one thing: it lacks a return stack. 15:32:07 The Steamer-16 has 1-cycle memory cycles, which easily puts it in RISC-class performance. 15:32:09 kc5tja: what was the instructions again, NOP @ ! LIT AND XOR and what else? 15:32:25 kc5tja: oh, well, you could use memory then, right? 15:32:28 NOP # @ ! + AND XOR ZGO 15:32:48 chris-xp: You have no choice. It's data stack is only 3 elements deep. :) 15:33:50 kc5tja, what is # ? 15:33:52 What is "#"? 15:33:55 Heh. 15:33:55 # = lit, i assume? 15:33:59 lol 15:34:02 For the purposes of running a real Forth system, nothing beats a Forth chip (with good sized data and return stacks on chip). 15:34:05 chris-xp: Yes. 15:34:10 Ok. 15:34:12 ASau: It's "load immediate", or literal. 15:34:19 I see. 15:34:23 Thanks. 15:34:26 n/p 15:34:52 hrm 15:34:57 chris-xp: The Steamer-16 is not Forth optimized, but as a human coder, I can do a lot with a chip like the Steamer-16. A *lot*. And i can do it fast. 15:35:09 The only thing that really sucks big-time with it is subroutine calling. 15:35:24 It's a huge performance hit to call a subroutine, because the whole operation must be emulated in software. 15:35:27 would an unsigned subtract be something like -1 xor add? 15:35:44 kc5tja: yeah... :( 15:36:12 chris-xp: add one. -1 xor 1 + + 15:36:19 chris-xp: It can be, if you remember to account for the missing 1 add between the xor and the other add. 15:36:28 Oh, ok, cool. 15:36:33 why the 1+ though? 15:36:54 ASau: It's not always necessary to do that though. You can optimize that extra 1 + out many times. 15:36:55 So you have only 0, not +0 and -0 15:37:11 aah, ok 15:37:29 chris-xp: It's also just plain how numbers work. 15:38:05 chris-xp, you can have : MINUS -1 XOR ; 15:38:26 Represent a number in binary, and take its 1's compliment. Add up all the binary digits, and represent it as a 2's compliment number, and you'll see you're "off by one." 15:38:46 chris-xp, in this case you have two zeroes, positive (all bits clear) and negative (all bits set). 15:38:47 * kc5tja notes the same thing occurs in 10's compliment too. 15:40:30 Yes, in case of ten complement you have "all 9" as negative zero. 15:40:43 i have some neat code for doing algebra with stack effect objects 15:41:53 Actually, all 9s represents -1. 15:42:10 Magic. :) 15:42:11 99 + 1 = 100, which is what one can expect. 15:42:52 You can make such equilibristic in any base. 15:43:39 Yep. 15:43:41 You have P complementary and P-1 complementary arithmetics. 15:43:44 There's nothing magical about 2's compliment. 15:44:07 The only thing magical about it is that it's possible to build electronic circuits to work with it. 15:44:11 (easily, at least) 15:44:11 Logical NOT is "take 1 complement" operation. 15:45:32 2 is taken as base because we have good bi-stable electrical devices. 15:45:38 ...elements. 15:45:51 Which is pretty much what I just said. :) 15:46:17 kc5tja, there're 3-based machines also. 15:46:51 kc5tja. They are slower as they use magnetic states, IIRC. 15:47:40 Of course they're very very old. 15:47:57 Ca. 1970-74. 15:48:55 Hehe.. trinary computers. :) 15:49:18 They have very interesting arithmetics. 15:49:35 Their digits are not 0, 1 and 2. 15:49:41 But -1, 0 and 1. 15:49:55 Heh. 15:50:19 So you have fast negation and subtraction. 15:50:44 Addition as well. 15:51:31 Also it is interesting to think in trinary logic. 15:51:52 "Positive-negative-unknown." 15:53:11 i got stack effect inference working for higher-order recursive functions!!! previously it was either recursive or higher order. 15:53:22 can i paste 9 lines of code? 15:53:42 You may. 16:13:53 better hurry 16:14:06 :) 16:18:21 --- part: imaginator left #forth 16:27:58 too late 16:28:10 Heheh 16:28:19 Well, I think I'm going to head out and grab some much needed food. 16:28:19 --- quit: qFox ("if at first you dont succeed, quit again") 16:28:22 * kc5tja is rather famished. 16:28:29 --- quit: networm ("Client exiting") 16:41:43 Come on, pizza! I'm a waitin'! 16:42:39 mmmmm, pizza 16:58:17 Nope. 16:58:40 Subway sandwich wraps. 16:59:51 mmmmmmm, subway :D that's good also. 16:59:59 I sure as hell better not get sandwich wraps... I ordered pizza! :P 17:03:06 wot kinda pizza? 17:03:50 stack pizza :) 17:05:06 return or data stack? :) 17:05:19 fp stack maybe :) 17:11:47 --- join: Sonarman (~matt@adsl-64-160-164-175.dsl.snfc21.pacbell.net) joined #forth 17:16:54 --- quit: ChanServ (kornbluth.freenode.net irc.freenode.net) 17:21:36 --- quit: warpzero (Remote closed the connection) 17:23:19 --- join: warpzero (~warpzero@dsl.142.mt.onewest.net) joined #forth 17:35:38 --- join: ChanServ (ChanServ@services.) joined #forth 17:35:38 --- mode: irc.freenode.net set +o ChanServ 18:00:32 ChanServ: OP ME BITCH! 18:00:35 :) 18:00:37 hi all 18:01:24 hey chris-xp 18:05:22 how are ya? 18:05:51 Hm. 18:06:18 all right 18:06:20 How do you think anyone to know how ty are? 18:08:25 --- quit: skylan (Read error: 104 (Connection reset by peer)) 18:13:00 The pizza was late. :-| 18:22:01 madgarden: bogus! 18:22:05 but was it good? 18:24:09 --- join: skylan (sjh@nwc57-207.nwconx.net) joined #forth 18:28:27 It was OK. I'm full now, at least. 18:29:01 Think I'm getting sick, feel a bit like pungent ordure. 18:29:05 "full" means drunk in Swedish. 18:29:57 Huh! Is "full" an actualy Swedish word, or does "full" in Swedish mean drunk? 18:30:49 "Full" means both "full" (as in, when you've filled something like a bucket) and "drunk". 18:31:06 "Jag är full" = "I am drunk", but "Hinken är full" = "The bucket is full". 18:31:34 Excellent! 19:04:47 --- quit: ChanServ (Shutting Down) 19:06:59 --- quit: Herkamire (kornbluth.freenode.net irc.freenode.net) 19:07:11 --- join: ChanServ (ChanServ@services.) joined #forth 19:07:11 --- mode: irc.freenode.net set +o ChanServ 19:07:45 --- join: Herkamire (stjohns@h000094d30ba2.ne.client2.attbi.com) joined #forth 19:19:29 'nn all 19:19:33 --- quit: blockhead ("Client Exiting") 20:12:13 --- quit: ChanServ (Shutting Down) 20:12:55 --- join: ChanServ (ChanServ@services.) joined #forth 20:12:55 --- mode: irc.freenode.net set +o ChanServ 20:37:25 Dobroe utro! 20:37:47 February is over! 20:37:55 Good luck! 20:37:57 --- quit: ASau () 20:47:10 --- join: hovil (~hovil@CommSecureAustPtyLtd.sb1.optus.net.au) joined #forth 20:53:40 ooo :) my birthday is in 8 minutes 20:53:58 Herkamire, my b'day is march 3rd :) 20:53:59 happy birthday! 20:55:41 Wow. So many people with birthdays so close to each other. 20:55:48 Aren't we all just one big, happy family! :) 21:13:48 --- join: snowrichard (~richard@adsl-068-209-159-248.sip.shv.bellsouth.net) joined #forth 21:25:23 --- quit: snowrichard ("Leaving") 21:35:09 --- join: andyb (~ball@dialup-67.73.155.137.Dial1.Chicago1.Level3.net) joined #forth 21:51:50 --- part: andyb left #forth 21:52:23 --- join: Nutssh (~Foo@gh-1063.gh.rice.edu) joined #forth 21:59:31 --- quit: Herkamire ("I'm off to bed") 22:04:52 --- join: Klaw (~anonymous@ip68-225-235-97.oc.oc.cox.net) joined #forth 22:06:40 --- quit: Klaw (Client Quit) 22:15:05 --- join: Serg (Serg_Pengu@212.34.52.140) joined #forth 22:35:12 --- quit: Serg () 22:37:52 --- quit: Sonarman ("leaving") 23:14:55 --- quit: kc5tja ("THX QSO ES 73 DE KC5TJA/6 CL ES QRT AR SK") 23:55:36 --- quit: Nutssh ("Client exiting") 23:59:59 --- log: ended forth/04.02.29