00:00:00 --- log: started forth/04.07.10 00:07:40 --- join: arke (arke@melrose-251-251.flexabit.net) joined #forth 00:07:45 hi :) 00:08:37 hello 00:09:22 kc5tja: you didnt reply to my email :) 00:09:28 hi foobar 00:12:27 --- quit: Herkamire ("bed") 00:13:07 kc5tja may be 9asleep 00:13:41 naah, he'd be loged off 00:13:48 hes probably fetching food or reading a bok 00:13:54 bok bok 00:14:05 ah i got nothing, n/m 00:14:54 book* 00:15:43 he was discussing K and J languages earlier 00:17:24 similar to APL 00:18:44 hmm 00:18:48 forth is better. 00:18:52 hugh, i have spoken. 00:19:12 sorry, theres just something VERY intriguing about sitting on the toilet with grampas old laptop playing with pygmy 00:19:39 someday he would like to add J's matrix-handling powers to forth 00:24:20 --- quit: arke ("bye") 00:24:41 laptops rule! i'd hate to go back to a desktop machine 01:02:25 on the phone 01:18:54 --- join: qFox (C00K13S@cp12172-a.roose1.nb.home.nl) joined #forth 01:48:12 * aum waits for a wristwatch running forth, with GSM and 802.11, plus neural interface 01:55:02 Well, I think I'm going to go to bed. 01:55:14 That was a really long phone call. :/ 01:56:04 --- quit: kc5tja ("THX QSO ES 73 DE KC5TJA/6 CL ES QRT AR SK") 02:51:30 --- join: Serg (~z@193.201.231.126) joined #forth 02:51:50 re.. 02:52:48 --- quit: Serg (Client Quit) 03:10:35 over to you, 4onetom_ 03:11:12 --- part: foobar left #forth 04:13:14 --- join: crc (crc@0-1pool176-15.nas6.philadelphia1.pa.us.da.qwest.net) joined #forth 04:28:01 --- join: Topaz (~top@spc1-horn1-6-0-cust217.cosh.broadband.ntl.com) joined #forth 04:28:52 Hello Topaz 04:28:53 --- join: T0paz (~top@spc1-horn1-6-0-cust217.cosh.broadband.ntl.com) joined #forth 04:49:02 --- quit: T0paz ("Leaving") 04:49:07 lo 04:53:44 What's up? 05:03:24 tis thundererering outside :D 05:04:43 It's clear (and HOT) where I'm at :-) 05:05:02 At the moment, I'm starting to work on my assembler again... 05:06:09 i'm going to play with postgresql some more i think 06:09:44 --- join: snowrichard (richard@adsl-068-209-159-248.sip.shv.bellsouth.net) joined #forth 06:09:54 * crc greets snowrichard 06:09:57 hi 06:10:13 --- join: I440r_ (~mark4@168-215-246-243.gen.twtelecom.net) joined #forth 06:10:33 I think the dpans94 document could cure my insomnia pretty quick 06:11:04 Hi snowrichard, I440r_ 06:11:13 ! 06:11:18 snowrichard: :) I take it you're not an ANS fan? 06:11:53 I have a limited attention span. I don't think I could sit here long enought to read the whole thing 06:12:15 * Robert is not so sure any sane person would. 06:12:31 who said I was sane :) 06:14:12 Hm, right, you DO hang in #forth... 06:15:05 think I'll go get another ~==== 06:17:38 * Robert interprets that as a hairy snake, or possibly a joint. 06:24:21 lol 06:30:41 no joints since august 2003 06:30:54 just a cigarette 06:31:55 and coffee refill ~0) 06:32:11 :) 06:32:24 * Robert thinks about what else a Forth system might need. 06:32:31 a coffeepot 06:32:48 Hm, yes, I'll implement one of those. 06:32:59 : quit ." ~O)" recurse ; 06:33:17 coffee not found, operator halted 06:34:13 my kitten won't sit anywhere else in the room but my lap 06:34:46 How cute..and possibly annoying in the long run. :) 06:35:30 what is annoying is when she walks on the keyboard 06:37:08 is that recurse tail optimized so you don't blow the stack? 06:37:56 Nope. 06:38:00 And I blame I440r_ for that. 06:38:21 My sister's hamster sometimes gets to walk on my keyboard, but it can't even press the keys down. :) 06:38:55 I had a hamster once but it died an untimely death being transported in a hot car 06:40:55 :( 06:41:12 My sister's first hamster ran into a hole in the wall and never returned. 06:41:25 freedom 06:42:28 lol 06:42:38 #hamster 06:42:52 we dont need no stinkin recursive coffee! 06:43:54 You don't like tail recursion, do you? 06:43:59 we have a new resident who is a bit of a redneck and he has a great sense of humor 06:44:45 Nice. Does he use Forth? 06:44:55 he doesn't use computers 06:45:05 Oh... :) 06:45:21 just had a good laugh listening 06:45:42 tail optimizations are good when done BY HAND 06:45:48 isforth has a word to do just that 06:45:58 goto? 06:46:01 yes 06:46:13 Can you goto to the current word? 06:46:16 i might add ;goto :) 06:46:19 yes 06:46:31 erm maybe not lo 06:46:52 err i probably wont add ;goto 06:46:55 could call it spaghetti 06:47:14 goto isnt like goto in basic 06:47:18 basic had NOTHING BUT goto 06:47:31 goto just converts a call/ret into a jmp 06:47:37 yea 06:47:39 actually into a jmp/ret lol 06:47:49 the exit is still compiled in by ; 06:47:56 actually, i can make it NOT compiled in 06:48:13 goto can set a flag and ; can test the flag and only compile the exit if there was no goto 06:48:32 but why add that extra complexity 06:48:45 who cares about 4 bytes of code that will never be executed lol 06:49:17 Coding stuff without subroutine calls is pretty annoying. 06:49:51 basic had goto and gosub/return 06:50:33 I wrote a preprocessor for the Coco Basic one time. 06:50:38 to add structure 06:50:56 used the : to indent 06:50:56 :) 06:51:07 one of microsofts old basics was coded in forth 06:51:11 might have been quickbasic 06:52:01 the coco floppy only held 156K 06:52:29 Cool. 06:52:34 I440r_: I wasn't refering to BASIC 06:52:39 40 tracks single sided 06:52:40 oh 06:52:50 brb 06:52:54 I440r_: But I had a bet with a guy, about how much RAM you need for writing a PONG game. 06:53:12 I440r_: He didn't think 40 bits was enough. The fool. 06:53:39 And that machine we simulated (4-bit) had no subroutine calls or indirect jumps. 06:53:40 the kim-1 chess program ran with 1.1K 06:53:52 That's pretty good. :) 06:53:59 Including an AI player? 06:54:13 it played ok 06:54:23 slow, 06:54:35 1 mhz clock 06:55:01 What computer? 06:55:06 6502 single board 06:55:19 1977 06:56:32 6502 is like 284562865429 * better than a z80 06:56:34 Nice. 06:57:10 not much real estate for your stack though 256 bytes 06:57:23 that helps 06:57:34 your not likely to use recursion when you have limited stack :) 06:58:04 6052s are fun... 06:58:09 65816s are better though :D 06:58:32 Steve Wozniak bought a copy of my assembler 06:59:35 back when he was still working in his garage :) 07:00:26 Heh, neat. 07:01:02 talked to him on the phone 07:01:11 So we have (in part) you to thank for that IMB/Microsoft won the war. ;) 07:01:36 this was before there was a pc remember 07:01:49 Yes, I'm just kidding. 07:02:11 my dad's uncle patented Ti 07:02:15 's first calculatore 07:02:25 Jerry Merryman 07:02:42 --- quit: Topaz ("Leaving") 07:02:49 * Robert has a TI-82.. with a BASIC interpreter *shrug*. 07:03:08 I had an HP-41C one tiem 07:03:10 time 07:03:38 it was RPN notation with alphanumeric capabilities 07:04:47 Nice.. Never had any HP calc. 07:05:32 sold it when I was on my way out of the navy 07:07:44 I had a little rinkydink pocket pc with basic from Radio shack too 07:09:41 --- quit: snowrichard ("Leaving") 07:19:55 --- join: snowrichard (richard@adsl-068-209-159-248.sip.shv.bellsouth.net) joined #forth 07:23:52 --- quit: snowrichard (Client Quit) 07:27:10 it was a hard long fight, but finally both me and the stairs are red now, but he got more! 07:28:47 :D 07:29:07 So back to Forth now? 07:29:25 can i take a break first? 07:29:33 any idea how much work it is to paint a goddamn stairs? red? 07:29:47 i kinda underestimated it, took me 5 hours straight 07:30:40 that includes leaning against the stairs and then against the wall forcing you to clean the wall asap without making an even bigger stain 07:30:54 btw, red + white makes pink. 07:30:55 :p 07:32:40 >:) 07:33:33 but you know whats worst 07:33:43 i taped the sides of the walls where i had to paint 07:33:55 so i wouldnt go paint the walls in corners and such 07:34:09 but at one point i went over the tape (wasnt very wide) 07:34:11 just a little 07:34:17 but i knew you'd see it for ever and ever 07:34:23 and you cant just rip off the tap 07:34:24 e 07:34:29 because ... well duh 07:34:41 and you cant wait till you can, because by then it'll be there, for ever and ever 07:34:53 so you go get paintremover and some cloth 07:35:22 but the stain is so close o the rest of where you painted that the cloth drags thru it, polluting more 07:35:27 aaaaargh 07:35:33 Poor, poor qFox. 07:35:52 But at leat you found something that's worse than working in F. 07:36:01 agreed 07:36:23 physical labour < mental labour 07:37:38 Heh. 07:37:46 That can be interpreted in many ways. :) 07:37:47 anyways, i have been thinking, and i think i've thought of how to do it 07:38:12 so at least i can code and be in my own happy place for a while now :p 07:38:26 :D 07:39:05 i'll define a misc set of machine forth words 07:39:21 and use that as a basis, threading everything else 07:39:45 i'll use F's own execute 07:40:08 Sounds nice... 07:40:17 one of the walls i hit last night 07:40:25 was the fact that i'm using a different stack then F 07:40:42 so i couldnt just use DUP and stuff like that, since they would not have the effect i need :) 07:42:31 it wont be particulary fast, but whatever 07:42:37 Hehe 07:42:47 Have fun ;) 07:42:55 muhu 07:43:12 If you want you could code a MachineForth -> native code compiler. 07:43:33 nah thats ok 07:52:07 --- join: onetom (~tom@novtan.bio.u-szeged.hu) joined #forth 07:52:09 --- quit: onetom_ (Read error: 54 (Connection reset by peer)) 08:09:40 --- quit: I440r_ (Read error: 110 (Connection timed out)) 08:30:50 --- join: I440r_ (~mark4@168-215-246-243.gen.twtelecom.net) joined #forth 08:32:29 --- part: qFox left #forth 08:32:29 --- join: qFox (C00K13S@cp12172-a.roose1.nb.home.nl) joined #forth 08:50:02 --- join: Serg (~z@193.201.231.126) joined #forth 08:51:12 hi ! 08:51:20 did anyone crack w/ debugger ? 08:51:32 Nope 08:51:36 i need to remove 30-second limit from old Fraunhofer MP3 coder 08:52:48 i set breakpoint on ExitProcess in Numega SoftICE, it breaks... but how can i go back by callstack and find the 30sec check ? 08:52:56 * crc finally made progress on the RetroForth assembler 08:53:31 Nice 08:54:27 This is going to take quite a bit of time to write... 08:58:57 --- quit: crc (Read error: 104 (Connection reset by peer)) 09:00:10 --- join: crc (crc@0-1pool176-20.nas6.philadelphia1.pa.us.da.qwest.net) joined #forth 09:06:13 --- nick: TomasuDlrrp -> Tomasu 09:06:15 * Tomasu is back (gone 10:28:37) 09:20:21 * Tomasu is away: Just casue 09:29:20 --- join: Herkamire (~jason@h000094d30ba2.ne.client2.attbi.com) joined #forth 09:33:22 --- quit: Serg () 09:39:36 --- quit: crc (Read error: 110 (Connection timed out)) 09:41:53 * Tomasu is back (gone 00:21:31) 10:01:51 --- join: kc5tja (~kc5tja@66-74-218-202.san.rr.com) joined #forth 10:01:59 --- mode: ChanServ set +o kc5tja 10:34:39 --- quit: I440r_ ("Leaving") 10:41:22 --- join: snowrichard (richard@adsl-068-209-159-248.sip.shv.bellsouth.net) joined #forth 10:41:27 hello again 10:42:28 Hi snowrichard 10:43:04 got my little peer to peer voicemail program working with a Glade Gui 10:47:36 --- join: tathi (~josh@pcp02123722pcs.milfrd01.pa.comcast.net) joined #forth 10:48:02 * snowrichard greets tathi 10:49:14 Hi snowrichard 10:51:27 learning sockets programming and gtk 2.0 10:51:57 Is gtk worth learning? 10:52:23 it seems to be a lot easier to use than java swing. that is the only other toolkit I have tried. 10:52:54 I rather like gtk 10:53:11 --- join: SDO (~SDO@67-23-111-213.clspco.adelphia.net) joined #forth 10:53:24 Well, a lot of the little glue macros aren't documented...but you can usually just guess those. 10:53:31 OK, I had to do some MFC at school. 10:53:52 as in Micro$haft? 10:55:08 I had Visual C++ for Windows once. 10:55:13 did not get far 10:55:34 excuse me C not C++ 10:56:02 Was in the programming class... When I should do some graphics stuff I couldn't find any good way to get a framebuffer to work with. 10:56:07 So I left and never returned. 10:56:26 drop or just leave? 10:56:44 Just didn't show up anymore. 10:56:56 But the teacher was nice. 10:56:57 doesn't help the gpa 10:57:19 He gave me a good grade anyway. That course was for braindead monkeys anyway. 10:57:34 So by just showing I understand what a computer is I passed. 10:57:44 you mean a MCSE? 10:58:16 No, it was just an ordinary programming class in high school, and they happend to use Visual C++ 10:58:36 The morons in the government forces ALL school to teach GUI programming. 10:58:43 when I was in High school there weren't even PC's yet 10:59:15 So then I guess the teachers knew at least a little bit about what they were teaching. 11:00:08 in my networking curriculum the teacher and I both took the Novell CNA and he flunked it. I think I missed 1 question 11:00:30 they said it was the highest score they had seen at that testing center 11:01:23 Hehe... People still haven't got used to computers. 11:01:51 i need a sandwich be back in a bit 11:01:56 OK, see you 11:02:09 * Robert is trying to hack together a Makefile 11:15:32 make? eeew 11:16:55 Hehehe. 11:17:23 It gets worse - I'm using C (just like, ehm, certain other persons in here). 11:17:43 if C is the right tool for the job, then why not use it? 11:18:00 i'm opposed to C being used to write programs like evolution and apache though. 11:18:15 evolution? eeew ;) 11:18:32 I'm apposed to programs like evolution 11:18:35 yeah, its so bloated 11:19:16 There's nothing too wrong with make. 11:19:33 using tab -vs- spaces for syntax 11:19:37 tathi: except it's handling uf subdirectories 11:19:48 Yeah, as long as you don't use it recursively. 11:19:52 ant has some nice concepts 11:19:53 But that's not so hard to work around. 11:20:00 but they don't implement them well enough 11:20:07 I was looking at ant recently, looked neat. 11:20:22 Well, for some part of this projects (dealing with SDL graphics) I think C does a good job, but for others (a Forth VM) I'd rather use something else. 11:22:31 --- quit: snowrichard ("Leaving") 11:26:43 --- nick: lalalim_ -> lalalim 11:36:48 Robert: i also made tile forth a friend of sdl graphics 11:37:02 Robert: what r U using it 4? 11:38:25 Dude, I used Evolution, and good grief, I've *never* said this before, but I actually overwhelmingly prefer Outlook to Evolution. Overwhelmingly. Evolution is BBBAAAAAAADDD. 11:38:51 --- join: I440r_ (~mark4@168-215-246-243.gen.twtelecom.net) joined #forth 11:39:33 Well, I think some pretty massive changes will be made to the FTS1001 microprocessor design. 11:39:36 onetom: You mean SDL? A game. 11:39:47 I'm really glad I played with this architecture in an emulator before committing to hardware. 11:39:56 There are a number of things I'm going to do differently. 11:40:15 First, you can pretty much kiss the XOR-masked effective addresses goodbye. 11:40:48 It's just too hard for people to grok 11:41:04 hehe 11:41:26 so no more free jumps? 11:41:34 I have not yet decided if I'm going to use PC-relative addressing or not. I'd LIKE to, but it does introduce an additional layer of logic. 11:42:11 kc5tja: Nope. 11:42:47 While free jumps were nice for streamlining fetching of subsequent instructions, it made it such that a jump to anywhere else suffered a one cycle penalty (this includes CALLs and returns too). 11:43:07 So I'm going to invest the transistors to make calls/returns faster, which as a natural consequence, makes all branches faster. 11:43:21 Note that jumps CAN still appear in any slot though. 11:43:30 Even though the assembler doesn't put them there. :) 11:43:55 The next big change is how the P register is interpreted. 11:44:22 The contents of the P register will most likely point at the *currently* executing instruction, rather than the *next* instruction. 11:44:29 Robert: yup, i meant sdl. &what kinda game? 11:44:40 This also contributes to making calls/returns much faster. 11:46:04 The P register will have a dedicated +1 adder circuit bound to it to facilitate this. More transistors, yes, but also much faster instruction. 11:46:17 And finally, the various entry points for interrupts will all disappear. 11:46:26 Reset will force the P register to $00000000 as it currently does. 11:46:34 onetom: You go aroud in the solar system. :) 11:46:46 However, IRQ and NMI interrupts will cause the contents of the P register to be logically *exchanged* with another register, IP. 11:47:26 The contents of the data and return stacks are left completely unchanged. 11:48:14 Interrupt response times are guaranteed to not exceed five clock cycles. 11:48:25 (and can be as little as one clock cycle). 11:48:47 The reset code is responsible for initializing the initial value of the IP register. IP maintains itself thereafter. 11:49:08 * Tomasu is away: Just casue 11:49:34 A new instruction will be added to the CPU to support returning from the interrupt handler to the mainline code ("xip"), which merely (logically) exchanges the IP and P registers. 11:49:46 Hence, an interrupt handler is not a subroutine, but rather, a co-routine. 11:50:20 [20:42:11] kc5tja: Nope. 11:50:24 hearing voices? 11:50:25 :p 11:50:36 when they say jump, dont. 11:50:38 11:30 < qFox> so no more free jumps? 11:50:56 i know ;) 11:50:57 I'm hearing yours. 11:51:11 jump 11:52:01 anyway, this is one of the reasons why I wrote the CPU emulator -- to learn what needs to be fixed before I commit the thing to actual hardware. 11:52:23 Robert: it sounds very serious, coz i suppose its gonna b realistic, right? 11:52:53 Somewhat, I hope. 11:53:13 As much as my programming skills and CPU power allows. ;) 11:53:41 as long as no file reading is involved, you'll be fine :p 11:56:02 * qFox out 11:59:07 qFox: ? 12:08:20 --- join: snowrichard (richard@adsl-068-209-159-248.sip.shv.bellsouth.net) joined #forth 12:11:16 --- quit: snowrichard (Client Quit) 12:16:26 maaan. I *liked* the XOR-mask branch stuff. 12:17:37 Well, I can certainly keep it. 12:17:48 But it seems hard for people to understand. 12:17:55 I like it too 12:18:12 yeah, I can see that. 12:18:17 It was neat though :) 12:18:27 Well, I'll keep it, I guess. 12:18:40 Whatever seems to make the most sense... 12:18:50 I mean, you two are the only other people who've come the closest to actually doing anything with the emulator, so you get priority. :D 12:19:03 yay :) 12:19:14 --- join: snowrichard (richard@adsl-068-209-159-248.sip.shv.bellsouth.net) joined #forth 12:19:18 * Robert feels guilty 12:19:36 Robert: Why? 12:19:53 we had our dinner a bit early today. barbecue pork and chicken with rice 12:19:53 I don't see what's so complicated about it.... the branch tarked is IP xor MASK 12:20:02 mask is the bits that are left in the instruction 12:20:22 s/tarked/target 12:20:41 kc5tja: Because I haven't been very active on the Kestrel front... 12:20:51 But I stand by my decision to make P point to the currently executing instruction instead of the next. 12:21:10 Robert: Well, don't worry about it. Kestrel is NOT yet ready for prime time. Lots of things are still changing. 12:21:24 what's the logic behind that? 12:22:20 tathi: If P were specified to point to the next instruction, then any branch instruction would take two cycles. In cycle 1, the value P+1 is evaluated while concurrently fetching the instruction at P. In cycle 2, P := P+1. :) 12:22:59 With P pointing to the current instruction, then P and the address bus can be loaded from the same source, fetching the desired instruction packet concurrently to loading P. 12:23:11 Then P+1 can be evaluated while the fetched instruction is evaluating. 12:23:28 Thus allowing true, 1-cycle control flow. 12:23:45 one-cycle control flow is cool 12:24:21 Herkamire: And I think this is why PowerPC lacks a post-increment update on registers. Notice that the scheme I just described with the program counter is essentially how PowerPC's "load and update" system works. 12:24:49 Only in my system, the offset is fixed at the value '1'. :) 12:25:34 --- quit: snowrichard ("Leaving") 12:26:09 heh. It _constantly_ annoys me that PPC lacks a post-increment update. 12:26:33 Yeah, my A, B, and R registers do proper post-incrementing. 12:26:38 But it's not a requirement for the PC register. 12:26:42 right 12:27:11 Actually, I'm quite surprised with how stable the FTS1001 design actually is. 12:27:47 I mean, the XOR mask issue was for the benefit of the human programmers, and had no concrete technological consequence. 12:27:52 --- quit: I440r_ (Read error: 104 (Connection reset by peer)) 12:28:12 There is a certain nicety to being able to use absolute addresses right in the encoding though. :D 12:28:40 I figured that since I no longer depended on the "implicit jump", I could do away with the XOR mask idea. 12:29:03 yeah, that makes sense then. 12:29:37 And then there is the interrupt handler support in the FTS1001 design. Man, I'm so glad I didn't start to implement the old approach in the emulator yet. I *LIKE* the co-routine idea A LOT. 12:29:50 It simplifies the interrupt-related logic a huge amount. 12:30:02 :) 12:30:40 Leave the data and return stacks as-is, and just switch between which instruction pointer to use. P for regular program instructions, and IP for interrupt handling instructions. One new instruction is needed to toggle between them. 12:30:53 how have you gotten rid of the implicit jump? 12:30:55 P and IP both become special purpose registers as a direct result. 12:31:16 Herkamire: A separate state machine in the electronics will monitor when to fetch the next instruction. 12:31:31 kc5tja: ok 12:31:52 kc5tja: does that make it faster? 12:32:23 kc5tja: or do you still need a cycle to fetch the next instruction word? 12:34:36 Well, in my naive implementation, it'll be about as fast as the old scheme, but it'll be intelligent about which instruction pointer to use to fetch instructions with (which the old scheme couldn't deal with at all), and allows the optimization of fetching the next instruction one cycle early *IF* the last instruction in a slot is not a memory accessing instruction. 12:35:26 Here's my plan for the FTS1001 CPU: 12:36:04 * The FTS1000 "CPU" is just the raw execution engine. Instruction pointer, two stacks, three address registers, minimum instruction compliment to deal with these resources. Have a nice day. 12:36:55 The FTS1000 defines the "base architecture" on which all other CPUs in the same family are built on (e.g., like the PowerPC 601 was for all the 32-bit PowerPCs, and most of the 64-bit PowerPCs). 12:37:26 It also has the S! and S@ instructions to set and fetch special purpose registers. However, no SPRs are defined for the FTS1000. 12:37:54 * The FTS1001 CPU is FTS1000-compliant, but supports interrupt handling and partial address decoding. 12:38:27 This way, it makes it easy to document, I think, too. 12:38:48 I can just write a single document on the FTS1000, and a separate, smaller, document for the FTS1001 that just details its differences. 12:39:17 This also lets me expand the line up even higher: the FTS1002 need not have the same interrupt handling facilities as the FTS1001. This lets me implement memory protection if I wanted to, for example (And I will, but not that soon.) 12:39:43 So, basically, what I have running in my CPU emulator is an FTS1000. 12:39:59 (if that makes any kind of sense. :D) 12:40:34 cool cool 12:40:56 how are the three address registers used? 12:41:04 However you want. 12:41:14 wow 12:41:19 I devote almost half the opcode space to working with them in as orthogonal a manner as I could muster. 12:41:30 A, B, and the top of the return stack, R, are all used as address registers. 12:41:39 My design goal was to facilitate 3-operand *vector* operations. 12:41:55 that sounds very powerful 12:42:03 "A" is also used to address the CPU's SPRs too. 12:42:17 A! S! 12:42:18 or 12:42:22 A! S@ 12:42:36 I see 12:42:57 I am very glad I implemented at least A and B though -- they *GREATLY* simplified the implementation of displaying font data to the screen. 12:43:23 will stores/fetches using the address on the return stack pop the address off the rstack? 12:43:29 No. 12:43:36 R is considered just another address register. 12:43:58 neat 12:44:04 There is no R! or R@ instruction though, like there is for A and B. So : R@ R> DUP >R ; but other than that... it's the same. 12:44:34 right 12:45:07 what incrementing/decrementing stores/fetches do you have? 12:45:11 For this reason, I consider R to be a "destination"-optimized register, while A and B are considered "source" registers, since things like A@ N + A! are quite common. 12:47:04 Herkamire: Now, the first generation of the Kestrel is entirely CPU-bound -- the CPU does everything. 12:47:31 Future models will actually have an expansion interface (assuming there is demand for such a future model). 12:47:55 what sort of things could it be expanded to do? 12:48:12 are we talking new instructions? joysticks? 12:48:28 I mean is there a store that increments the address and stores? 12:48:28 The I/O architecture will be based a mainframe concept of "channels." 12:48:56 The memory accessors are: @A @B @R @A+ @B+ @R+ !A !B !R !A+ !B+ !R+ 12:49:29 ahh, that's what I was looking for. so they all have post-increment stores and fetches? 12:49:36 Yes. 12:49:44 cool 12:49:51 how many instructions do you have now? 12:49:55 As far as expansion, it'll be expandable with plug-in cards. 12:49:59 About 48 or so. 12:50:53 Each card is dumb -- no bus master circuitry on it at all. 12:51:26 Instead, high bandwidth access to main system memory will be through a coprocessor specialized to the task. Memory fetches are expected to be approximately as fast as a normal DMA channel would be. 12:52:23 This satisfies my goal of having the system be trivial for users to hack and build cool things with EASILY and AFFORDABLY. 12:53:18 yay :) 12:53:24 (since each slot will be under the control of the program running on the I/O processor(s), the CPU is free to do other things while the I/O processor's program blasts data to the appropriate devices) 12:53:44 So I can build a video card, for example, without having any frame buffer memory on it at all. :) 12:54:20 For the first-gen Kestrel, you might actually see shades of this architecture already, since I've yet to design the video hardware. 12:55:00 Imagine a Kestrel having 8 serial ports that can run at 115200bps each, but not a single UART anywhere in the system's I/O map! :D 12:56:22 And how about a printer port that sends data to the printer independently of whatever the CPU is doing? 12:57:43 Of course, the option for CPU-based I/O will always remain. 12:58:00 But having a dedicated I/O coprocessor (or set thereof) is an awfully powerful concept. 12:59:03 I expect I/O coprocessors to be a transport triggered architecture though. Stack is just too slow for that application. 13:01:23 sounds like you have plenty to keep you busy for a while 13:01:55 sounds awesome 13:03:57 I said I was sick of the PC architecture. 13:04:00 I fucking meant it. 13:04:11 :) 13:04:17 so people could make plugin cards that would add to to the i/o proccessor? 13:04:23 eg a graphics card 13:04:29 I WANT MY AMIGA BACK, and I want it better than it was before! KESTREL! 13:04:52 Yes, the I/O processor would reside on the motherboard as a standard part of the computer. 13:05:16 The plug-in card just provides additional register space that the I/O processor can bit-bang or blast data to. 13:05:41 sounds awefully cool 13:06:25 The spirit of the Amiga *will* live in this computer. Without any doubt. 13:07:47 nice that you're actually doing something about it. 13:07:56 I have a dream of selling complete computer systems to libraries for $200-$400 per computer 13:08:01 simple, cheap hardware 13:08:08 efficient OS 13:08:10 humane interface 13:08:26 simple, consistent, fast, discoverable interface 13:08:33 for all that Chuck and Jeff claim that they've "solved the software problem", they both still seem to mostly be using windows... 13:08:50 tathi: yeah, that really pisses my off 13:08:58 Herkamire: Interestingly enough, one thing I'm thinking of doing is selling micro-mainframes built on the Kestrel architecture that sit in people's basements, but which provide for a number of terminals. 13:09:52 what sort of terminals? 13:09:57 The Kestrel architecture is turning out to be amazingly flexible and scalable. 13:10:02 how big wolud the mainframes be? 13:10:17 Herkamire: Well, whatever you want, but me personally, graphical. Something I can watch videos on and stuff. 13:10:59 Herkamire: I would expect such a mainframe to be the size of a typical home entertainment system (less TV). Not too big. 13:11:00 I can imagine it being setup so that as far as most users are conserned, the computer is like a router. 13:11:36 like a VCR? or like the pile (VCR, sterio, DVD, tape deck) 13:11:56 (2' cube) 13:11:58 I'm thinking a VCR + stereo amplifier in height. 13:12:03 cool 13:12:28 Although, the idea of building it cylindrically (like a Cray supercomputer!) has a LOT of technological advantages I might be able to use. 13:12:38 you thinking multiple CPUs etc? 13:12:42 Yes. 13:13:24 can rich dorks have wireless terminals? 13:13:48 Multiple CPUs, lots more I/O processors, running a version of Dolphin OS by default, gobs of harddrive space, and lots of RAM. 13:14:04 If it can talk to the I/O processor, you can have whatever terminal you want. 13:15:06 sounds great 13:16:03 maybe that would be a better architecture for what I'm envisioning 13:16:38 I want to create cheap little computers with a humane interface 13:17:42 oh, I did say that already 13:17:47 Heh :D 13:18:04 it might work well to have more of a main-frame deal at libraries 13:18:51 Yeah -- it'd be easier to maintain, I'd envision. 13:18:57 yaeh. 13:19:02 but I want to start small 13:19:08 Yep. 13:19:11 Well, I certainly am. 13:19:21 A C64 clone is about as small as you can get. :D 13:19:39 I want to be able to sell computers to people for cheap, show them how to use it in one sitting. 13:20:17 * kc5tja nods 13:20:24 hopefully I can make the interface good enough that people won't need more training than reading what comes on the screen when they turn it on 13:20:26 Hey, I just had a mini-epiphany. 13:20:50 The typical keyboard sequence that people use for entering control-key or alt-key commands is ALT\, key\, key/, ALT/. 13:20:58 (substitute CTRL for ALT as appropriate) 13:21:03 right 13:21:10 That's the same thing as just entering a humane command. 13:22:01 Therefore, there is no real need for a program to trap and handle those kinds of commands. 13:22:14 (unless it wants to by circumventing the system's normal keyboard handler, but I digress) 13:22:45 ;) 13:22:47 :) 13:23:45 I saw two slightly different types of input. one where you wait for the quasi-mode to end (when they release the key) and one with one-letter commands that execute when they press the (eg comma) key 13:24:03 ? 13:24:13 I don't remember seeing that. Is this in THE? 13:24:26 don't know 13:24:42 sorry, by "saw" I meant "envisioned" 13:25:10 V^I 13:25:22 V^I? 13:25:24 :) 13:25:47 sorry, couldn't help NLP terminology. visual internal 13:26:10 Ahh 13:26:23 Oh, meaning "V", TAB, and command executes? 13:27:09 no, vi means visual internal representation (in the brain) 13:27:15 means pictures in your head 13:27:30 Never seen that used that way. To me, VI is VIM 6.3.013. :D 13:27:35 (as of today, at least) 13:27:57 Heh. I'm all the way back at 6.1 13:28:14 yeah, it's NLP notation. V supersrcript I 13:28:23 I think that's it anyway 13:28:30 anyway, back to computers 13:28:32 I think I'm pretty sure that I will not be using blocks for my primary means of storage for the Kestrel. Believe it or not. 13:29:00 I was thinking herkforth would maybe have two quasi-modes. one where each key is a command, and one where a string of characters is interpreted as a command when you end the quasimode. 13:29:15 so you could hold down say control, and hit keys to move the cursor, save, print etc 13:29:25 or you could hold down alt, type "print" and release it 13:29:27 Right, and key repeat would work as expected. 13:29:59 key repeat? 13:30:08 Hold down H, and you get HHHHHHHHH.....etc. 13:30:38 yeah. although I think I'm going to try raskin's idea of tapping then holding to get key repeat 13:31:09 So, basically, double-clicking a key to initiate a repeat, and it repeats for as long as held? 13:31:17 right 13:31:21 I wasn't aware of that. 13:31:27 Good idea, though. 13:31:31 well, I think he says triple-tap though. 13:31:35 no time limit 13:31:35 it might have been that you hold it on the third press. I don't remember 13:31:47 just can't have any other key press/releases in between. 13:32:01 Right. Makes sense. 13:32:06 He says his cat hasn't managed to trigger key-repeat with that in place :) 13:32:08 it has advantages, and no disadvantages that I can think of besides learning a new habbit 13:32:24 lol 13:32:47 it gets rid of the whole delay before repeat thing 13:33:03 Yep. 13:33:16 so you can get it repeating sooner, and you don't get repeats when you don't want them. 13:33:36 (except of your cat is very cool I guess ;) 13:34:02 You can control the speed of repeating that way too. 13:34:11 oooo 13:34:11 TAPTAPHOLD -- really fast. 13:34:14 I hadn't thought of that 13:34:17 TAP....TAP....HOLD -- slow repeat. 13:34:24 wow 13:34:50 hi 13:34:57 kc5tja, hows the implementation of TYPE? 13:35:28 slava: Actually, I haven't started it yet. I spent most of yesterday working on the assembler and refining it so it's easier to make proper ROM images now. 13:35:39 But my biggest problem is determining the ideal way to pack strings. 13:37:33 I thought you weren't going to pack strings? 13:38:04 I said I might not pack strings, if I recall correctly. 13:38:20 one char per 32-bit cell? 13:38:48 For the block editor, it can waste 4KB of space on a single block, but when writing a block's contents back out to storage, you better believe I'm going to pack it. :D 13:39:04 it would greatly simplify a lot of code, but bloat the forth somewhat. but since your code is so compact, and you're using ordinary SDRAM... 13:39:23 yes, for disk storage pack it 13:39:31 Well, I suppose I can offer two kinds of TYPE; TYPE for unpacked strings and PTYPE for packed. 13:39:33 but for strigns in memory, and s" ." and such, why not 1 char/cell? 13:39:46 the block editor should just pack/unpack on save/load 13:39:55 and everything is done with unpacked strings -- only one TYPE 13:39:57 slava: Well, on block edit and unedit. :) 13:40:04 kc5tja, you know what i mean :) 13:40:08 Blocks are managed as a data cache. 13:40:32 ok, with the intention of using it for data as well as source? 13:40:38 Yes. 13:40:44 256 words per block (1KB). 13:40:50 in that case packed-type might be useful. 13:40:58 Well, and also for things like: 13:41:01 brb pizza :-P 13:41:14 ." BoxForth Release 0.0.1" CR 13:41:26 ." Copyright (c) 2004 Samuel A. Falvo II, et. al." CR 13:41:38 ." Type LICENSE and AUTHORS for more information." CR 13:42:04 And, of course, the body of the license and authors would be embedded in ROM to satisfy LGPL requirements. 13:43:04 I was thinking of naming the words TYPE for the general purpose print word, and ATYPE actually, for ASCII-TYPE. 13:46:26 one would unpack, the other would just emit cells? 13:49:45 Yeah, ATYPE would type an ASCII-packed string, while TYPE would type a Unicode string (why the heck not?). 13:50:56 And this is one more reason to move away from rigid blocks: a typical source block is 64x16 characters -- but, what if we want to use Unicode characters? Either you sacrifice the number of characters in a block, or you use larger blocks. 13:51:21 With 4K blocks, 75% of the space will always be wasted unless you pack non-Unicode text. 13:51:31 So you end up wasting a lot of space. 13:51:39 I like the idea of VLIRs. 13:52:41 herkforth wasts a lot of space with blocks too 13:52:48 Which I'm just going to call segments, because that's what they actually are. 13:52:57 especially since I only use the first line of the shadow blocks 13:53:22 I don't -- I usually use several lines in shadow blocks. 13:54:17 I never build anything into herkforth to allow you to see or edit the shadow blocks (except it displays the first line) 13:56:04 I have 58 source blocks 13:56:15 and 13K worth of source tokens in them 13:57:32 So you have about 20% utilization then. 13:57:38 (aka 80% internal fragmentation) 13:57:45 heh 13:58:35 I use an average of 29 characters in each shadow block... 14:13:40 Well, now, I just found a fairly substanial bug in GForth. 14:13:44 POSTPONE S" is broken. 14:26:24 --- join: TheBlueWizard (TheBlueWiz@207.111.96.24) joined #forth 14:26:24 --- mode: ChanServ set +o TheBlueWizard 14:26:31 all hiya 14:27:48 TheBlueWizard hello :) 14:29:31 Robert hej :) 14:31:12 Wow. You remembered. :) 14:35:37 kc5tja hiya....yup, I remember each one's known locale :) 14:36:07 TheBlueWizard: So... what's 1tom's greeting? 14:36:39 dunno what's Hungarian word for hello though 14:37:11 Well, I think using his own dialect of English is close enough. 14:37:37 Something like "hi r u k?" 14:37:49 TheBlueWizard: I meant word ordering. 14:38:26 szia, szervusz 14:38:28 Robert: lol 14:38:49 onetom: Oh, thanks. :) 14:38:49 but we also use heló 14:38:57 onetom: hmm...which is considered more informal? 14:39:11 szia 14:39:31 kc5tja: ah...I just reprogrammed myself to greet everyone here the Forth way ;) 14:39:32 but its a very modest & kind version 14:40:01 ok... done 14:40:11 onetom szia! :) 14:41:03 TheBlueWizard: :) 14:41:10 but probably we use heló/helló or csá/csááá similary lot 14:41:33 oh? 14:41:37 hmm... 14:41:42 csá looks like the Swedish "tja" (short for tjena) 14:41:53 Also a greeting. 14:41:55 sounds like Hungarian greeting is a bit complicated 14:41:57 aha 14:42:20 csá comes from csáó (ciao -- italian) tho 14:43:32 while szia comes from szervus - afaik - what is the latin servus (~= im, your servant ~= at your service) 14:44:35 clear 14:44:38 oops 14:49:17 hmm...so presumably szia / szervus is rather native Hungarian word (since it must be old already), while the other words are more modern 14:55:07 * TheBlueWizard decides to stick with szia for Hungarian greeting 14:55:26 keep my life simple and friendly 14:57:37 This is SO WEIRD. 14:58:00 At the GForth prompt, 34 word Hello world!" count type will, in fact, print "Hello world!" 14:58:37 But in my program, if I have: : foo '" Hello world!" type ; it will print Hello world!" type ; 14:58:40 Wha!? 14:58:44 * kc5tja MUST be going insane... 14:59:03 How can 34 word count deliver two different results depending on whether the program is in interpret mode or not? 15:01:19 kc5tja: maybe you're experiencing a powerful psionic attack from Cthulhu ;) 15:11:15 --- quit: SDO (Connection timed out) 15:11:18 --- join: SDO (~SDO@67-23-111-213.clspco.adelphia.net) joined #forth 15:28:19 TheBlueWizard: Doubtful. >:/ 15:29:41 :) 15:29:42 re SDO 15:35:54 * kc5tja sighs 15:36:10 hmm? 15:36:35 I can't explain it. 15:36:45 I did manage to fix the string length problem, 15:36:49 but now I'm having other issues. 15:39:43 howdie 15:41:08 I can't bloody explain this either. 15:41:11 In my test program, 15:41:23 : go_reset '" Hello world!" type cr ;' 15:41:45 it prints one copy of the string (slightly mangled, but clearly a single string). 15:42:04 But in the other test that I have, it prints TWO COPIES of each string. 15:42:07 ?!?!?!?!?!?!?!?!?!?!?!?!?!??! 15:42:10 WTF?!?!?!??!?!?!?!? 15:42:12 * kc5tja sighs 15:42:45 hmm... 15:49:38 OK, got it. 15:50:28 Now, my next question is what am I going to call this. 15:51:19 I'm thinking of just Kestrel Forth 0.1.0. 15:52:32 you feel you've reached a certain significant milestone? 15:55:03 Not yet. 15:55:14 But now that I have basic TYPE capability finished, I can now display a banner. 15:56:24 It shows the following right now: 15:56:30 Kestrel OS Release 0.1.9 15:56:53 but I'm thinking maybe I should reserve Kestrel OS for a more sophisticated product (e.g., Dolphin). 15:59:36 I do wish it were a bit faster rendering the text though. 16:02:01 * TheBlueWizard nods 16:02:54 that's why I thought some sort of special kind of loop (at instruction level, of course) might help with text rendering 16:03:06 hey 16:03:07 but it's your baby :) 16:03:16 slava hiya 16:04:17 TheBlueWizard: Don't forget that the emulator is not written in hand-crafted assembly language either. GForth may be fast for a direct-threaded Forth on x86, but it's still 5x slower than fully optimized C! 16:04:45 And then I'm sure I could continue to optimize my text rendering code substantially too. 16:05:51 --- quit: SDO (Read error: 110 (Connection timed out)) 16:06:00 kc5tja, you got TYPE working? 16:06:22 kc5tja, packed or unpacked strings? 16:06:22 slava: Finally. 16:06:24 Unpacked. 16:10:36 Hey... I struggled for an hour with the word lookup code after I made some changes. Guess what the error was? The doconstant word (which was frequently used before that) was completely wrong! 16:11:08 kc5tja: I know...but I'm thinking about execution strictly from Kestrel's viewpoint (and from projected reality, of course)...is it sufficient? etc... 16:13:01 TheBlueWizard: It was plenty sufficient for the Macintosh. 16:13:08 Remember the real CPU will be running at 25MHz. 16:13:25 My emulator is effectively running at 0.42MHz *best case*. 16:13:45 And for that matter, the Atari ST ran at 8MHz, and its text output was also adequat.e 16:13:48 adequate even. 16:14:51 There. Improved text output speed by some 50% by fetching character data via the A register, and changing EMIT to save and restore the A register (since it uses it). 16:15:29 it's now about as fast as a TI-99/4A at updating the screen. :) 16:16:30 heh...ok...I'm just tossing my thoughts around...consider me a moron if you like 16:18:38 can someone /dns slava for me and tell me his ip ? 16:19:08 /dns slava 16:19:16 69.198.144.227 16:19:23 Unknown command DNS. 16:19:36 thanx 16:19:43 I /dns slava and got the same IP 16:19:49 TheBlueWizard: No, you're not a moron. It's just that people expect the simulator to run blindingly fast -- at or near hardware speeds, and it's not. 16:20:34 The purpose of this particular emulator is to verify the correctness of my conceptual design. 16:21:22 I never expect that at all...I am just looking for effective architecture and utilization...it is a lot easier to fix things early on, before the design get cast into silicon (stone) 16:21:34 * kc5tja nods 16:21:53 kc5tja: I don't know if this is useful... (you're probably doing it already) but in herkforth, before I had any string support at all, I made a word emit4 that took a cell with 4 bytes in it. 16:21:59 split it up and EMITed them 16:22:13 so, if text rendering is deemed not effective enough from a certain standpoint, then redesign the CPU to support that, etc. 16:23:06 TheBlueWizard: Well, since the emulator runs some 60 times slower (estimated) than actual hardware, I won't be able to answer that specific question until we are at the hardware level. 16:23:13 Or, at least, until I have a faster emulator. 16:24:30 OK, just ran "time gforth os1.ef" to see how fast it updated the screen and rendered the text. 16:24:35 can't you put in cycle counting and then make some timing calculation to ascertain the performance thereof? 16:24:55 Including the slop that results from me having to tupe RUN, CTRL-C, and BYE, it comes to an average of 7.25 seconds. 16:25:27 If the emulator runs at 1/60th (est.) the speed of pure hardware, then the whole screen would update in about 0.121 seconds. 16:25:55 Yeah, I was going to do that. But I did the above test to establish some kind of expectation. 16:26:05 ok 16:26:13 kc5tja: how much room do you think there is to speed it up? 16:26:15 Still, I consider a full-screen update plus text printing in about 1/8th of a second to not be TOO bad. 16:26:35 Herkamire: TYPE calls EMIT numerous times, once per character. 16:27:10 If I re-organize the font data layout, and sacrifice EMIT's speed to speed up TYPE's, I could get TYPE to run a bit faster. I'm not sure by how much though. 16:27:12 kc5tja: I thought you were working from packed strings 16:27:28 (And I don't mean "not a whole lot," but I really don't know how much it'll speed it up.) 16:28:19 Herkamire: No. I am keeping things fairly simple at this point. 16:29:11 I will implement packed strings if I need them in the future. 16:29:33 For now, I'm trading space for rapid progress. :) 16:30:04 :) 16:30:22 I see :) 16:30:47 though I feel text rendering would be a critical function of any OS :) 16:31:48 TheBlueWizard: he has text rendering, just no handling for packed string 16:32:31 Remember that a Commodore 64 had just barely enough horsepower to update a 320x200 monochrome bitmapped display -- it took the C64 just a hair over half a second to clear a bitmapped screen. 16:32:54 I'm clearing a 640x480 screen, 8 bits per pixel!! 16:33:20 We're talking a difference of 8000 bytes versus 307,200. :) 16:33:54 point taken 16:33:57 That is a 38.4x ratio -- meanwhile, the CPU is running at best at 25MHz -- *TECHNICALLY*, my CPU is underpowered for a screen of this size. 16:34:03 :) 16:34:33 However, I'm counting on its wide word width to update the screen in such a way so as to give me a 4x advantage. 16:35:23 Besides, you can't argue -- for a computer of this nature, it blows the doors of the Sinclair ZX-80!! :D 16:36:58 OK, I have a clock step counter implemented. Now I'm going to add a bogus I/O port register which, when written to, causes the emulator to dump the current step counter value. 16:37:00 kc5tja: when you render text, it covers over anything there right? 16:37:49 lol...I remember playing with Sinclair ZX-80...unbelievably primitive 16:38:02 even back then :) but dirt cheap 16:40:51 Herkamire: Currently, yes. 16:42:46 You know, maybe my emulator is actually going a bit slower than I anticipated. 16:43:07 even if I account for noise, the full screen update is occuring in roughly 6 to 7 seconds. 16:43:13 That is 76800 words to write out. 16:43:35 Let's ignore subroutine call overhead for a bit -- to write a word out to the screen, the CLEAR word performs basically DUP !A+ -- two instructions. 16:43:38 anyone here use bigforth? 16:43:59 So we're looking at about 22,000 instructions per second -- e.g., this emulator MAY be running at 22kHz. :D 16:44:11 We'll see once the full stopwatch code is in. 16:44:35 aum: Nope. I think someone here does, but I haven't seen him join in awhile. I can't remember his name though. It starts with an S. 16:45:15 does anyone here code for fbsd ? 16:45:23 i'm noticing the raw speed of bigforth, way faster than any other forth i've seen so far - makes gforth look like it's written in java 16:45:57 haha 16:46:53 and i thought gforth was fast 16:47:54 does bigforth run on freebsd? 16:49:49 BigForth performs native code compilation and also incorporates a lot of optimization. 16:50:01 With few exceptions, BigForth regularly competes with GCC -O3. 16:50:20 BigForth employs RAFTS-style optimization. 16:51:10 is it complicated? 16:51:13 more complicated than gforth? 16:53:15 OK, the numbers are in. 16:53:27 To clear the screen and print the banner and cursor, it takes 348,469 clock cycles. 16:54:12 It takes approximately 6 seconds to render this, so we're looking at 58kHz effective clock speed. 16:54:49 (which is awfully close to my revised prediction! The excess factor of 2 makes sense when you consider that a call and return each take one clock cycle.) 16:55:20 Therefore, the hardware is expected to operate a good 430.46 times faster than the emulator. 16:55:29 (on my box) 16:55:36 great :) 16:56:05 It will clear the screen and render the text and cursor in about 14milliseconds. 16:56:15 That translates to about *cough* 72 frames per second. :D 16:56:17 mmhmm...that's good then :) 16:56:24 TheBlueWizard: I'm sorry, were you saying something? :D 16:56:50 * kc5tja is glad he put the counter in. Makes macro-profiling a bit easier. 16:57:02 I do need a more precise way of measuring time elapsed though. 16:57:04 well...maybe I doth worry too much lol 16:57:09 Heheh :D 16:57:35 then again, good thing I made a comment about cycle counting 16:58:23 and it's now in :) 16:58:41 Yep. 16:58:50 bigforth looks nice 17:12:35 Wow. Code size is STILL under 1Kwords! 17:12:41 930. 17:12:42 :) 17:13:05 (remember: 512 words are used by the bitmapped font information!) 17:20:39 i dont fucking understand it 17:20:50 i do an ioctl on stdin to test if its a tty 17:21:00 then i do the same on stdout and the syscall BARFS 17:21:11 if i flip the order of the call the SECOND syscall barfs 17:28:28 I440r: Test to see if calling the ioctl on the same file handle twice barfs. I assume by barf, you mean segmentation fault, right? 17:49:49 Time for a screen shot... 17:53:04 something like that 17:53:06 http://www.falvotech.com/img/boot-test-1.png 17:53:25 when stepping thru it in gdb i get a "program terminated with error 066" whenb i try step the second syscall 17:53:35 brb trying twice on same fd 17:53:45 kc5tja, beautiful! 17:54:28 slava: :) 17:54:38 Of course, it doesn't actually DO anything just yet. 17:55:21 I don't have keyboard functionality, so there is as-yet no means of typing anything. And of course, no software to drive said keyboard either. 17:55:23 kc5 !!!!!!!! 17:55:24 no! 17:55:26 it doesnt! 17:56:44 i can check stdin twice 17:56:47 i can check stdout twice 17:56:52 i cant check stdin and stdout 17:57:04 no matter what oder i do that in it craps out on the second call 17:57:38 I don't know. I've never heard of such a thing. 17:58:12 err no i lie 17:58:20 wait 17:59:48 i cant chek fd = 1 17:59:51 at all now 18:00:09 * slava 's fbsd box melts down from I440r's experiments :) 18:00:35 I440r, actually you're connected to the gateway, my workstation runs the same OS on almost identical hardware :) 18:00:53 :) 18:01:04 im homing in on the problem nbow i think 18:01:20 stdout is fd 0 yes ? 18:01:25 stdin is fd 1 ? 18:01:41 yes 18:01:45 you sould know this :) 18:02:37 err...stdin,stdout,stderr = 0,1,2 I thought. 18:02:43 I thought stdin = fd 0 and stdout = fd 1 18:03:18 tathi: that's what I thought....when in doubt, look inside stdio.h to make sure 18:03:24 Yes, stdout is FD 1; The bash trick of merging stderr and stdout into a single stream, 2>&1, implies this is the case. 18:04:26 that's at bash level...the programs themselves don't know that 18:04:41 The > and & operators in Bash take file descriptor integers as inputs. 18:05:09 I could do weird things like 2>&4 3>&1 if I wanted to (with bizarre results, admittedly, but...) 18:05:34 yeah, inetd (I think) uses 5 and 6 for net input/output. 18:05:37 or something like that. 18:05:54 you can do stuff with bash scripts with redirecting those fds 18:06:49 hmm...wasn't aware of the reservation of higher fd numbers 18:08:47 --- join: SDO (~SDO@67-23-111-213.clspco.adelphia.net) joined #forth 18:10:35 --- join: Sonarman (~matt@adsl-64-160-164-3.dsl.snfc21.pacbell.net) joined #forth 18:10:47 --- join: doublec (~doublec@coretech.co.nz) joined #forth 18:11:19 doublec! 18:11:31 doublec, i'm working on .s (and hence datastack and callstack accessors) 18:11:49 SDO: http://www.falvotech.com/img/boot-test-1.png -- it's not quite functional yet, but man, it sure is getting there. :D 18:11:51 hi slava 18:12:03 doublec, see kc5tja's work above, its neat :) 18:12:07 cool, hows it all going? I see you've moved factor to sourceforge now. 18:12:17 doublec, i'm going to import to cvs in a few days. 18:12:18 aum: Sonarman is the name of the person who also uses BigForth. 18:12:27 doublec, i'm very close to having .s and see... 18:12:28 where can I see about kc5tja's work? 18:12:40 doublec: See my post to SDO above. 18:12:47 ok, thanks 18:13:22 Is that a native forth os? 18:13:32 kc5tja: ok, thx 18:13:41 doublec, he's making his own cpu too 18:13:46 very cool! 18:13:55 doublec: It's not functional, but yes. It's just the banner right now. The next step is to release what I have as 0.1.9, then start working on keyboard input. 18:14:06 are there any forth accelerator PCI cards available 18:14:07 ? 18:14:10 doublec: http://www.falvotech.com/kestrel.html 18:14:10 doublec, the garbage collector completes a collection but then the interpreter dies. i haven't looked into this today yet. 18:14:32 aum: None. 18:15:06 aum: poingie uses bigforth too 18:15:28 is bigforth bigger than gforth? 18:15:32 i'm madly impressed with bigforth's speed 18:15:35 similar size 18:15:38 doublec, vm: 16kb, image: 60kb 18:15:43 sounds good slava. I've not had much chance to hack on the continuation web server code lately due to work but should be able to get back into it this week. 18:15:50 doublec, cool, no problem 18:16:45 doublec, for now, the hashtable? word will just check of the operand is a vector, and if each element is a list of conses. 18:17:23 slava, sounds like a reasonable approach. 18:17:27 i still need to find a better solution to this, and polymorphic words. 18:17:39 doublec, the native implementation of = hashcode and unparse are ugly 18:17:43 since they dispatch on type 18:17:48 polymorphic words are an interesting idea. 18:18:24 Is that words that dispatch on type? 18:18:40 yes 18:19:09 * TheBlueWizard views kc5tja's screen shot, and notes that a period should be omitted from "et"...e.g. "et al." (which is an abbreviation for "et alii") 18:19:16 here is the current 'unparse', its rather clumsy: 18:19:16 : unparse ( obj -- str ) 18:19:17 [ 18:19:17 [ t eq? ] [ drop "t" ] 18:19:17 [ f eq? ] [ drop "f" ] 18:19:17 [ fixnum? ] [ fixnum>str ] 18:19:19 [ string? ] [ unparse-str ] 18:19:21 [ drop t ] [ drop "#" ] 18:19:23 ] cond ; 18:20:35 If you could write words that dispatched on the type of 'obj' you'd have these in seperate words right? 18:20:53 and then when adding types you'd only need to add a new word implementation rather than modifying unparse all the time. 18:20:58 yes. 18:21:14 i don't envision adding many times, but having the same 'type-switch' replicated in =, hashcode, unparse and possibly other words strikes me as inelegant. 18:21:19 s/times/types/ 18:21:25 yes 18:21:52 the forth philosophy is to have string=, vector=, and so on. i will have this but a generic '=' is useful, for hashtables as such where the keys can be anything 18:22:20 --- mode: ChanServ set +o I440r 18:22:50 TheBlueWizard: Thanks. I will make the change when I update the site again tonight. 18:23:32 kc5tja, to make the banner more authentic, eventually it should say '34k FORTH memory used, 32245k free' or something :) 18:24:12 slava: hehe -- good idea. :D 18:24:31 Actually, the way C64's BASIC did it was it said "64K RAM System 38911 Bytes Free." 18:24:56 So I should ahve some code to auto-detect installed RAM size, and then determine space free and display it like that. :D 18:25:04 kc5tja, its been a long time since I used a C64 :) 18:25:24 hehe :D 18:25:40 Well, I don't want to be a COMPLETE rip-off of the C64. 18:25:47 --- quit: qFox ("meh ircii's netsplit detection appearantly sux ^^") 18:25:47 Remember, the other computer inspiration for this box is the Amiga. 18:25:56 kc5tja: my pleasure...I can read some Latin, which helps a lot :) 18:25:57 kc5tja, last i checked, c64 didn't have a FORTH in rom :) 18:26:06 --- quit: SDO (Connection timed out) 18:26:12 kc5tja, i don't think using a c64-like font and color scheme and banner is a rip off, as much a tribute :) 18:26:12 slava: That is correct. 18:26:43 i'd like to try coding a line numbered basic in kesterel forth one day 18:27:01 :) 18:27:27 That would definitely make the system more approachable for those who don't like Forth. 18:28:26 --- quit: doublec ("Leaving") 18:29:04 well, I must go...bye all 18:29:12 TheBlueWizard: Ciao. 18:30:00 oops...I should've said: all bye 18:30:09 kc5tja bye 18:30:12 I did discover something though -- at my CPU's current rate of instruction execution, my 25MIPS throughput will be approximately equal to a 100MHz 68000 or 68010 processor. 18:30:34 that's 4x faster than your previous estimate! 18:30:38 niec 18:30:39 Yes. 18:30:40 nice* 18:30:50 Because the 68000 takes 4 cycles to execute a single instruction. 18:31:07 Mine takes at most 2, and USUALLY 1. 18:31:13 how does the '010 and '020 differ from the 68k? 18:31:15 (I'm including instruction fetch times) 18:31:17 ooh...nice! and that beats 65816's speed, me thinks 18:31:18 i know 030 added a cache and MMU. 18:31:33 TheBlueWizard: Yes. It makes the 65816 a snail in comparison. 18:31:42 i had an 040 mac at one stage, it was reasonably zippy 18:31:48 The 010 had the same timings as the 000, but added support for loop mode. 18:31:50 --- join: snowrichard (richard@adsl-068-209-159-248.sip.shv.bellsouth.net) joined #forth 18:31:58 I'm not sure how the 020 timings differed. 18:32:02 so you're smash glad that you ditch 65816 after all :))) 18:32:20 oh i think i remember -- the 68k was limited to a 24bit address bus. the 020 had a 32 bit address bus 18:32:43 some early mac programs used the high 8 bits in a pointer as a 'tag' 18:32:47 slava: Right. But I think the 020 also did have some improved 16-bit instruction timing too. I don't remember. I never actually had one. :) 18:32:48 020 timing is more complicated unfortunately (I have a tech book on 020 with lots of timing info on selected instructions) 18:32:56 Yeah. 18:33:06 And its addressing modes are just plain retarded. :? :? 18:33:19 Doubly-indirect addressing modes -- who in the world would ever use one of those? 18:33:45 I suppose they would come in somewhat handy on the Macintosh, where it used pointers-to-pointers all over the place for dynamically managing its RAM. 18:33:48 But still... 18:33:51 That was the exception, not the norm. 18:34:03 the extended indirected addressing is definitely a retarded addition (though the scaling part is much better from programming standpoint) 18:34:24 agreed 18:34:42 anyway...gotta go...all bye! 18:34:52 re snowrichard 18:34:57 --- part: TheBlueWizard left #forth 18:34:57 hi 18:35:24 took a long nap after the barbeque dinner :) 18:35:28 snowrichard: http://www.falvotech.com/img/boot-test-1.png -- it's not functional, but it's progress. And it sure looks impressive. :D 18:37:32 kc5tja, what is your opinion on stack overflow/underflow checking? 18:37:36 is the safety worth the overhead? 18:37:58 slava: It is hard to say. I think it should be an option. 18:38:00 i might try to do some mmap thing where the stack is surrounded by non-accessable pages 18:38:06 slava: *nod* 18:38:10 that's how gforth does it. 18:38:25 Personally, however, I've never exceeded 11 items on the data stack. 18:38:51 And I think the deepest I've gone on the return stack was 9 items. 18:39:33 But that is just me. 18:39:38 i tend to write recursive code 18:39:56 for instance my routine to append two lists is not tail-recursive, and this is sometimes used with long lists. 18:40:12 * kc5tja nods 18:40:20 in java factor, the stack automatically grew, but i'm not going to have the overhead of this in the native variant. 18:40:24 Yeah, I will be generally avoiding recursion, except for tail-recursive routines. 18:41:39 It's funny -- you are working with lists, while I'm working with vectors. :D 18:45:03 brb -- grabbing some grub. 18:55:56 .s works 18:55:57 :) 19:02:24 Back 19:03:14 Congrats. :D 19:30:31 * Tomasu is back (gone 07:41:23) 19:35:53 --- quit: tathi ("laters") 19:36:23 we almost have two new versions of isforth 19:36:25 one for ppc 19:36:33 the other forth x86 bsd :) 19:36:36 Cool :) 19:37:43 theres no ppc bsd yet, they didnt get that working fully hehe 19:37:45 but soon!' 19:38:08 I440r: Yeah there is -- it's called MacOS X. :) 19:38:20 lol 19:38:34 dont let the bsd ppl hjear you say that hehe 19:38:42 pfft 19:38:45 It's their delusion. 19:38:45 lol 19:43:25 --- quit: snowrichard ("Leaving") 20:14:36 --- join: snowrichard (richard@adsl-068-209-159-248.sip.shv.bellsouth.net) joined #forth 20:15:34 --- quit: snowrichard ("Leaving") 20:17:09 kc5tja, what's next after text output? 20:17:26 I need to start planning on getting keyboard input working. 20:17:39 An interpreter is useless without input to interpret. :-) 20:17:48 yu[ 20:17:49 yup* 20:17:57 this means KEY? and KEY right 20:18:04 Something like that, yes. 20:18:30 I did just receive notification that the MISC concept is still patented. 20:18:37 I440r: forgetting OpenBSD and NetBSD, are we? :P 20:18:50 --- join: jDoctor (~rex@pcp08550359pcs.manass01.va.comcast.net) joined #forth 20:18:51 I was not aware that the MISC architecture was patented by Patriot Scientific. 20:19:35 I440r, will the fbsd port be a whole new fork, or just a few ifdefs? 20:19:41 whaaat?? 20:19:52 don't say the word ifdef around I440r 20:19:55 Herkamire: Yep. 20:19:59 kc5tja: is the stuff you're doing under patent? 20:20:00 heh 20:20:04 Herkamire: Yes. 20:20:15 Sonarman, if it runs in free will it not run in open/net ? 20:20:16 and how is that unique and unobvious? 20:20:29 thers no such thing as ifdef 20:20:29 there's books about stack computers 20:20:43 I440r: i was referring to your saying that there's no ppc bsd 20:20:45 kc5tja: what are you going to do? 20:20:50 when does the patent expire? 20:20:51 Herkamire: It was unique and non-obvious back in 1990. So the patents are close to running out. But they haven't yet, and PS is now on a lawsuit binge to try and get revenue into their company. 20:20:53 I440r, so it will be a separate fork? 20:20:56 Only , unlike SCO, it has a valid claim. 20:20:56 sonar oh! 20:21:03 yes and no :) 20:21:13 thera are very few files taht are actually different 20:21:28 1990? 20:21:37 Herkamire: Assuming the patent isn't renewed, it's guaranteed to be expired by 2010. 20:21:44 jDoctor, what changes did you want to make to kaffe? 20:21:45 It may be as soon as 2007. 20:21:56 kc5tja, what does this mean for kestrel development? 20:22:26 I don't see how it's unobvious if stack based languages were all the rage in the '80s 20:22:30 I will continue on course for the time being. In the mean time, I will contact Chuck Moore to find out more details. Although he hasn't replied to my last e-mails on the subject. 20:22:38 cahnges to kaffe. the compiler, numbre un 20:22:42 and the VM 20:22:48 not much about the lang itself 20:22:59 Herkamire: It's not an issue of stack-based versus non-stack-based languages. It's an issue of HOW the microprocessor fetches and decodes instructions. Literally nothing has been done like it before. 20:23:00 jDoctor, i'm not sure kaffe is a good base 20:23:08 jDoctor, how much did you want to change from the stock kaffe? 20:23:18 kc5 he has been very very silent on the subject i believe, i think he is just "waiting" :) 20:23:30 kc5tja: packing 5 in one cell? 20:23:31 he might not want to "chat" with anyone on the subject at all 20:23:36 kc5tja: what part of it? 20:23:38 I440r: Well, I'm not soliciting his views on it. I'm soliciting his advice on what to do. 20:23:46 right 20:23:54 I440r, any progress on kernel.com etc? 20:23:57 Id wanna make it so that it only loads what it needs to do the job. something not editable in jvm 20:24:02 and any answer he gives to that might be an indication at to his intended course of action 20:24:07 I440r, let me know when you're done so i can shut down sshd 20:24:08 Herkamire: Packing five in a cell, PLL-based clock multiplication (which I'm not doing, but Intel, AMD, and PowerPC are all doing), etc. 20:24:13 kc5tja: could you still make a forth machine with the same instructions? 20:24:14 slava ok 20:24:19 not long now :) 20:24:21 jDoctor, well the jvm is just 255 instructions thats it 20:24:26 you know.. java's way of rolling out the red carpet just to say "hello world" is gay 20:24:33 jDoctor, this is a library issue 20:24:34 is there any way you can make it auto shut down when i log out ? 20:24:42 I440r, well its no biggie :) 20:24:45 Herkamire: Yes, but code density won't be nearly as good. It'd resemble the Novix design more than anything else. 20:24:57 Although I've been considered, if necessary, I'll switch to a transport-triggered architecture. 20:25:03 considering even 20:25:06 how long would the patent last if they did renew it? 20:25:08 but, slava , this is what I could fix. dynamically 20:25:19 jDoctor, seems like you want to write your own library 20:25:33 jDoctor, or, avoid loading silly .jar files and .class files on startup, and memory-map an image file 20:25:45 Herkamire: Depending on when they filed it, either 17 or 20 years. Hence, at the earliest, the patent will expire in 2007, and at the latest, 2010. *IF* my information is correct. 20:25:55 see, you make a program that works with the old libs and junk. then you compile the same program so that it is one huge class. it "sucks' everythign out of teh libs it needs and writes all that code in the single class 20:25:57 I still have to verify the patent approval date. 20:26:19 jDoctor, you should work in forth instead :) 20:26:22 i see a difference between the linux version of gdb and the freebsd version 20:26:26 if you do 20:26:28 why is that a bad idea?! 20:26:28 int 0x80 20:26:30 nop 20:26:31 I440r, the fbsd one is old 20:26:40 dude, slava , it makes it so that you can have different foundations 20:26:43 in linux you NEVER SEE the nopo 20:26:45 Normally, I wouldn't be so concerned, but if Patriot Scientific is suing companies left and right (and has already won five suits), then I don't want anything to do with MISC until the dust settles. 20:26:48 you don in fbsd 20:27:05 kc5tja, could you just license the patent? 20:27:08 if you "single step" a syscall in linux you dobule step 20:27:14 jDoctor, not sure what you mean? 20:27:18 grr 20:27:32 slava: That is always a possibility. Would you be willing to pay a portion of the license fee though? It'll necessarily increase the cost of the Kestrel appropriately. 20:27:40 kc5tja, by how much though? 20:28:12 slava: One has to contact the company to negotiate a deal, get contracts signed, hire lawyers and retain them, etc. I have no idea, and I won't know, until I sit down and do the research fro real. 20:28:20 ok 20:28:21 Frankly, I'd rather just investigate a different approach first. 20:28:37 ok ok. so notice that all the classes in java are file oriented, mostly. and we use like all sorts of files, jars.. all that ugly stuff for java. but what if you make somethin WORK using the great libs in teh foundation, then recompile the same program to where it is one class, with many nested inner classes (the classes pulled out of the parts of the libs it uses) 20:28:37 kc5tja: :( about this 20:28:58 slava: , in other words, its all of the foundation needed to run the program built in the program 20:29:09 slava im out, too tired to debug error :) 20:29:17 i made progress today thanx to tathi :P 20:29:58 slava: I wouldn't be worried about it, frankly. I can guarantee you that, worse comes to worse, any new CPU architecture I design patently will not fall below one instruction per cycle performance. Period. Even if I must sacrifice memory to do it. 20:30:30 I440r, ok, sounds good 20:30:35 jDoctor, static linking? 20:30:43 :) 20:30:45 yah dude 20:31:22 kc5tja, i think its funny that bigforth uses a mix of source files and block files 20:31:44 slava: :) 20:31:47 kc5tja, and they have a block editor with a horizontal scroll bar that flips through blocks :) 20:31:56 * kc5tja nods 20:32:17 one thing i don't like about block editors is that all the ones i tried act like they're in 'overwrite' mode all the time. 20:32:25 * kc5tja isn't going to use blocks for source storage. But the filesystem used isn't going to be traditional either. 20:32:27 which makes sense, but means that inserting text in the middle of a line is a pain 20:32:37 kc5tja, i thought kestrel would use blocks? 20:32:46 kc5tja, or is that the ROM? 20:32:55 slava: Mine doesn't. Mine, being based on VI, can be in either insert mode or overwrite (aka "replace") mode, at will. 20:33:03 slava: I could do this on the language side and jsut make a java analyzer that looks at the java, and pulls all the needed things into one class 20:33:11 jDoctor, gcj does this 20:33:18 jDoctor, it starts faster etc 20:33:21 slava: I'm not going to use blocks for storage because of certain issues with space efficiency and flexibility in writing more sophisticated software like Internet applications. 20:33:26 but runs slower 20:33:37 kc5tja, ok 20:33:47 why would it run slower, slava ? 20:33:52 I'd love to use them, but I have to consider my other goals too. :) 20:34:15 jDoctor, it uses a poor gc and if it has to load bytecode on the fly it cannot compile it 20:34:22 kc5tja, what kind of FS would you use? 20:34:29 Fully custom. 20:34:41 with special features for forth source? 20:34:41 Objects are still referenced by number, so you still have things like 25 LOAD and such. 20:34:50 But object 25 contains the related source in its entirety. 20:34:53 good 20:34:54 that's handy 20:35:04 so variable-sized blocks :) 20:35:17 slava: yes, basically. 20:35:57 Although i'm still not 100% sure what the finished API will be like, but it'll at least allow manual reading and writing of whole segments into and out of memory. 20:35:57 the thing I was aiming for, slava , was to let programmers have their favorite foundation.. they can edit it and add things to it so they cant program faster, but at the end, they compile with this "static linking" so that they could share the compiled program and it still runs on everyone else's vm 20:36:12 can program faster* 20:36:45 that way, slava , when someone complains about something in the foundation? they can make their own 20:37:37 thing is that you cant play all that much with Sun's vm. kaffe is the closest thing to it 20:37:47 well kaffe is huge and complex 20:38:06 if you want a nice and clean interpreter to start with and add stuff to i suggest forth :) 20:38:13 --- join: snowrichard (richard@adsl-068-209-159-248.sip.shv.bellsouth.net) joined #forth 20:40:15 --- quit: snowrichard (Client Quit) 20:40:36 yah I could do teh same idea in like any lang 20:40:42 even factor could use that idea 20:41:13 it already does, you can load the interpreter, undefine a bunch of words, and save an image that's more compact :) 20:42:07 well thats the basis. not as pretty. one thing about this "foundation of your flavor" deal is that its suddenly hard to work with others 20:42:21 cause .. what if their "ComponentBlah" is different? 20:42:36 now the contract is screwed etc. 20:44:27 i got : and ; working in native factor, i think the definitions look kind of funny though: 20:44:27 : : scan "in" get create f ; parsing 20:44:28 : ; nreverse cons swons [ uncons define ] [ swons ] each ; parsing 20:45:09 its vaugely similar to a forth : and ; (for a meta-compiled forth that is). 20:46:01 you should make an export command' 20:46:09 that does just the cool thing I mentioned 20:46:34 well actually 20:46:38 it doesnt help factor 20:49:23 actually, slava , you could go as far as making binary executibles from factor. 20:50:11 dang. C (gcc optomized) does the recursive fibinocci 2x faster than herkforth 20:50:30 what processor? 20:50:43 jDoctor, i'm not sure that can be done portably. 20:50:43 then I tried gcc -O9 instead of gcc -O2 and it went a little slower... 20:50:47 G4 20:50:54 i think gcc -O4 and above is all the same stuff 20:51:06 err i didnt think ther was a -O4 20:51:22 i thunked it was -O1 O2 O2 Os 20:51:27 erm O3 even 20:51:43 dude, slava , it would be as portible as the factor interpretor 20:51:58 -O9 added 250ms 20:52:16 jDoctor, no it wouldn't. outputting a new binary is platform-specific 20:52:22 Herkamire, what argument are you running it with? 20:52:25 hehe but you dont need to 20:52:34 yuo just make the interpretor start running code on start 20:52:41 jDoctor, making a new image? 20:53:00 and so its like the factor interpretor, recompiled just to start running the app ... 20:53:03 get it? 20:53:45 slava: 40 20:53:58 gforth: 47s 20:54:07 herkforth: 13.5s 20:54:08 it'd have built in colon defs, and would start one word as soon as it is done loading into mem 20:54:24 gcc: 6.8s 20:54:43 Herkamire, can you post the C code i want to try it 20:55:08 int fib(int i) { 20:55:08 if(i < 3) return 1; 20:55:08 return fib(i-1) + fib(i-2); 20:55:08 } 20:56:19 Herkamire, 2.2 seconds here 20:56:27 gcc 3.4, -O4 -march=pentium4 -fomit-frame-pointer 20:56:30 fib(40) 20:56:46 use -pipe too. :) 20:56:47 hehe 20:57:04 we wouldnt want gcc taking an hour or 2 to compile that now would we ? 20:57:32 how long does it take to calculate the 40th fib ? 20:57:35 how do you start a C file? 20:57:36 using that code 20:57:39 Herkamire: The patent was approved in 1995. So add five years to each of my estimated expiry dates. 20:57:48 I440r, 2.2 seconds on my machine 20:57:49 pentium 4 1.8ghz 20:57:54 * jDoctor scrathes his head... 20:58:11 jDoctor, gcc file.c -o file 20:58:12 ./file 20:58:19 no no 20:58:21 I'm not that dumb 20:58:25 its teh lang itself 20:58:27 ok, java does fib(40) in 3.1 seconds 20:58:27 int main.. 20:58:27 fuck 20:58:33 that's only 33% slower than optimized C. 20:58:43 kc5tja: that's aweful 20:58:45 aaw. is slava giong to cry? 20:58:58 jDoctor, i was aware of this fact :) 20:59:20 slava: that's amazing 20:59:26 how does java get that fast? 20:59:33 is this j 1.5? 20:59:34 are you using a java->native compiler? 20:59:39 lol that beats isforth hehe 20:59:49 my recursive one aint finished yet :P 21:00:08 00:00:31.688 21:00:10 lol 21:00:16 Herkamire, this is sun jdk 1.4.2 21:00:24 slava! how long woluld that take in java ? 21:00:27 Herkamire, java->native compilers run slower 21:00:30 using the same algorithm ? 21:00:37 slava: does it compile to native x86 code? or does it emulate the VM all the time? 21:00:44 Herkamire, it compiles to native code 21:00:55 I440r, i used Herkamire's algorithm above, it ports trivially to java. 21:01:17 slava: oh, no wonder you can stand java 21:01:18 ooh 3.1 seconds 21:01:29 : (fib1) 21:01:29 dup 1 > 21:01:29 if 21:01:29 dup 1- (fib1) swap 2- (fib1) + 21:01:29 then ; 21:01:30 I've never had a java interpreter that produced native code 21:01:31 thats the one i used 21:01:35 i think thats the equiv. 21:01:44 Herkamire, apple java in macos x does 21:01:57 hrm not really 21:02:05 but close ennuff 21:02:30 what result did you get 21:02:43 I440r: that looks slightly different. what do you get for "40 fib ." ? 21:02:53 a wrong answer 21:02:57 lol 21:02:59 i get 102334155 21:03:09 which i believe is 39 or 41 fib i forget 21:03:20 tho ive seen alot of sites post that value as 40th fib 21:03:55 i should really do dup 1 > if exit then blah blah 21:04:03 I get 102334155 21:04:12 thats the same result. 21:04:24 Herkamire: Yeah, pity. I guess it is time to explore some serious transport-triggered architecture then. >:) 21:04:40 --- join: foobar (fooboo@dialup-4.153.67.70.Dial1.Atlanta1.Level3.net) joined #forth 21:05:06 : (fib3) 21:05:06 0 1 rot 1 21:05:06 do 21:05:06 tuck + 21:05:06 loop 21:05:07 nip ; 21:05:14 that code blows the recursive method away :P 21:05:30 the native factor just hangs when doing 10 fib 21:05:35 even though 9 fib finishes instantly 21:05:37 something's messed up 21:05:49 What are you measuring? 21:05:53 slava maybe 10 fib overflows the stack 21:05:59 I think patents should last 3 years 21:06:07 no, i'm retarded 21:06:09 look at this 21:06:11 40 fib recurses one hundred and thirteen MILLION times 21:06:16 Herkamire: Well, 10 years I think is OK. But 17 to 20 is way too long. 21:06:18 10] 9 . 10 . 21:06:18 9 21:06:18 80 21:06:28 80?! 21:06:50 Sounds like a number conversion error. 21:07:13 you don't think 3 years would be enough to satisfy investors? 21:07:29 Herkamire: No. It often takes longer than that to develop and fully market a product. 21:08:02 10 years would be ok 21:08:04 I think they should last as long as you want.. I just also think patents shouldnt allow some of the rules they allow 21:08:05 I guess 21:08:25 kc5tja, yeah, i haven't tested those words enough 21:08:38 kc5tja, the curplit is *! 21:08:38 26] 1 2 * . 21:08:39 16 21:08:42 ugh 21:09:01 how long does it take a business to establish a reputation as The source for something. 21:09:21 like kleanex or scotch tape 21:09:32 --- join: fridge (~fridge@dsl-203-113-230-147.NSW.netspace.net.au) joined #forth 21:09:41 Herkamire: That depends. Usually the first to market wins. 21:09:51 But it all depends on who does the better marketing. 21:10:13 but if you are first to market by a couple years I think that would be enough 21:10:52 being first is a huge huge huge marketing advantage 21:11:17 people use your name and the name of what you make interchangably 21:11:30 Herkamire: I'm not arguing, but sometimes it can take longer to become *stable* in the market-place. 21:11:45 And that's what investors are looking for. It's not so much a competitive advantage, they want =stability=. 21:11:47 yeah, I have no idea how long it takes 21:11:51 lol this channel rocks now, even tho we spend a huge ammount of time on BS or "idle" we have quite a few active members 21:12:09 heh 21:12:13 ok, 40 fib in native factor takes 55 seconds haha 21:12:20 :) 21:12:23 slava: Not bad! 21:12:27 man i spent iover a year in here with NOBODY else here lol 21:12:38 I440r: Hey, I was here... 21:12:41 slava factor beats isforth :P 21:12:45 kc5tja, if it didn't do runtime type checks it would be as fast as gforth 21:12:51 kc5 no. i was here a year prior to that 21:12:52 I440r, really? 21:12:54 literally 21:12:57 yea 21:13:07 i had a few ppl do flyby's 21:13:09 I440r, why is isforth so slow? :) 21:13:11 aum was one heh 21:13:12 * kc5tja tests the "Kestrel" with the non-recursive version of Fib. 21:13:18 slava direct threaded 21:13:21 What is the definition of TUCK again? 21:13:23 speed isnt my #1 concern 21:13:38 I440r, mine is indirect threaded 21:13:45 kc5tja, ( a b -- b a b ) 21:13:51 slava: Thanks. 21:13:58 you also have code and data in different memory areas 21:14:07 all my space is +rwx 21:14:12 oh 21:14:33 isforth is plenty fast ennuff :) 21:14:33 heh 21:14:53 if you get the code right on isforth and are able to port it to elsewhere it will FLY!!!! 21:18:32 --- join: [Forth] (~Forth@216-110-82-1.gen.twtelecom.net) joined #forth 21:19:10 now to go zzz 21:19:14 nite nite 21:19:22 umm...guys....Kestrel can yield 40 FIB in about 187 microseconds. :D (non-recursive) 21:20:31 Oh well. 21:21:08 isforths itterative method does 90 million calculations of 40th fib in like no time flat 21:21:59 I'm sure. But I had a cycle-accurate clock running on the code, and I measured it at 187 microseconds. 21:22:19 (the nice thing about having your own CPU emulator is that you can do things like that. :D) 21:22:41 heh 21:23:04 Anyway, goodnight I440r 21:23:20 tnx :) 21:23:33 Now, on to more important things, like how the heck to get around this stupid patent. 21:23:36 :D 21:24:16 oh! apparently I had bad code. 21:24:43 I just rewrote recursive fib in herkforth (using i440r's example) and now it's 7.85 secconds 21:26:08 gcc is 6.82 secconds 21:26:16 nice 21:26:26 what clock is your ppc 21:26:34 450MHz 21:27:02 is it a software patent? 21:27:15 that's pretty damn good considering I haven't done any optomizing 21:27:17 foobar: No, it's a hardware patent. 21:27:22 ok 21:28:11 imagine if patents lasted forever; we'd be paying royalties on the wheel 21:29:06 I'm not sure why the code generates the same answer... but it seems to 21:29:28 foobar: Yeah. 21:30:03 patents are far to long for computer stuff 21:30:50 I don't see how a computer thing could be stable regardless of patents, because the world might move on any year 21:33:38 using a laser pointer to amuse your cat is patented 21:34:47 go to http://patft.uspto.gov/netahtml/srchnum.htm 21:35:16 5,443,036 21:36:15 hmmm.... maybe gcc isn't so good 21:37:45 I just made an optomization (a word 2<=; which exits if TOS is 2 or less) and now herkforth does the recursive fib faster than gcc 21:38:29 and I can think of another way to make it faster with asm 21:38:49 maybe not much.. I don't know 21:41:23 damned impressive if it's faster than gcc with the same algorithm! 21:41:52 even iForth by Marcel Hendrix isn't that fast 21:52:45 probably just means that gcc optomizer for PPC isn't all that 21:54:33 Herkamire: GCC is only REALLY good for x86. 21:54:37 Due to how many people use it. 21:54:53 If you think GCC is bad for PowerPC now, though, imagine what it was like before Apple improved it! 21:58:31 :) 22:02:49 grrrr 22:02:52 bug hard to find 22:03:01 maybe I'm out of memory again. I know I was getting close. 22:27:07 heh, I wasn't out of room. just my word to allocate another source block doesn't work 22:27:27 --- join: lalalim_ (~lalalim@pD95EAA0B.dip.t-dialin.net) joined #forth 22:30:18 --- quit: lalalim (Read error: 60 (Operation timed out)) 22:33:36 :) 22:39:51 using the top cell in the return stack as an address register is brilliant brilliant brilliant 22:42:20 maybe I should do it :) 22:53:13 Hehe :D 22:53:37 I'll ask about the patent implications on the NOSC mailing list. Maybe someone there would have more information. 22:53:44 gotta stop programming when I'm tired. 22:53:51 * kc5tja too 22:53:53 I swear I'm making more bugs than good code 22:57:43 OK, here's what I've found out so far. 22:58:10 I think if I use 5-bit register fields, I can specify three transport connections per instruction word. 22:58:28 Using software pipelining techniques, I can get an average 1.0 to 1.5 clocks per Forth primitive. 22:58:46 Pipeline depth averages about 2 -- one to load the values into a functional unit, and one to retrieve its value. 22:59:19 So far it looks like it is doable. 22:59:31 that sucks you have to make it more bloated to avoid a patent 22:59:41 The problem is that of code density. Since it can take up to four or five moves (each 10 bits in size), it's clear that code density will suffer significantly. 22:59:46 that seems so wrong 23:00:04 Well, I'm not giving up on the MISC core. 23:00:11 I'm going to persue its development as-is. 23:00:33 My current research into TTAs is a back-up plan in case I am approached with a cease-and-decist request. 23:00:45 oh 23:00:55 "request" :) 23:01:34 And, currently, TTAs are still so "experimental" that I think if I were to offer a commercial TTA processor, it wouldn't be challenged legally. 23:01:44 I *think*. I haven't seen anyone anywhere reference a patent for a TTA. 23:02:43 But, it is always good to have backup plans in case something happens. :) 23:23:45 oooooh 23:24:03 that's my bug. I didn't define swap in the kernel, but tried to use it there 23:24:33 how can you code without swap 23:24:50 do things in the right order in the first place 23:25:00 rstack 23:25:51 do you have dup? 23:26:10 yes 23:26:15 swap isn't that useful 23:26:15 what others? 23:27:00 rot? 23:27:17 herkforth's core words: interpret load w | dup drop _rlm>a a lit token>cfa ct-data ct-exec ct-comp ct-number ct-lit ct-mini ct-mini-lit ct-data-lit ct-const ct-const-lit ct-const-def ct-def color-table flush ; _start ct-noop 23:27:39 what is ct-? 23:28:49 branch table 23:29:11 oh, ct stands for color table 23:29:21 the words are handlers for the different colors 23:29:31 color-table is the actual table 23:29:45 that's the compiler 23:29:50 oh ok 23:32:19 oops, I stripped commas from those words 23:33:16 herkforth's core words: interpret load w, | ,dup ,drop _rlm>a a, ,lit token>cfa ct-data ct-exec ct-comp ct-number ct-lit ct-mini ct-mini-lit ct-data-lit ct-const ct-const-lit ct-const-def ct-def color-table flush ,; _start ct-noop 23:33:43 ok ;) 23:33:55 I can't live without my SWAP. 23:35:03 yeah, I need swap sometimes. 23:35:15 but I didn't have much trouble writing the core 23:35:22 especially with asm where I needed it 23:35:35 that's cheating :) 23:36:51 I440r: how did you figure out the 40 fib requires 113,000,000 recurses? 23:37:00 s/tge/that 23:37:35 Sonarman: I440r is sleeping. 23:42:07 kc5tja: Ok :) 23:50:47 can't really write an ELF file for ppc without some PPC instructions in there now can I? 23:51:25 I don't know. 23:51:33 But I'm still thinking on that TTA stuff. 23:52:00 Sonarman: I think he read it somewhere 23:52:17 If I do the TTA architecture, then I can structure the software around a more traditional Forth environment, where colon definitions are just arrays of subroutine calls. Even Forth "primitives" are just calls to subroutines in the kernel. 23:52:48 In short, a proper, subroutine-threaded architecture. 23:53:01 would the primitives of the cpu still be stack-based? 23:53:01 kc5tja: would that be slow? 23:53:20 It certainly would be slowER, but it won't be slow. 23:53:35 You're already doing this with your PowerPC code, no? 23:54:04 what? 23:54:20 I don't see how herkforth could be written in herkforth without generating ppc code 23:54:35 Herkamire: Stop. 23:54:42 You're confusing two separate threads of conversation. 23:54:46 lol 23:54:49 oh, I read wrong 23:55:07 ?undefined context error 23:55:07 ;D 23:55:14 hehe 23:55:35 Your core primitives are defined as subroutines in Herkforth, right? 23:55:35 kc5tja: you're asking if I do subroutine-threaded? 23:56:06 um... some are macros that compile ppc instructions, some are subroutines 23:56:24 OK, so you're doing a more Moore-ish machineForth hybrid type thing then. 23:56:27 as a general rule, anything that compiles to one or two instructions I made a macro, and others subroutines 23:56:47 * kc5tja nods 23:56:54 with some exceptions 23:57:00 Yeah. 23:57:04 notably flow control 23:57:16 With a TTA, a single "RISC" operation would take two instructions (maybe three in some rare cases, but usually two). 23:57:36 and a few used to compile things in the kernel (since it cannot call something not in the kernel) 23:57:58 Right. 23:58:13 --- quit: jDoctor ("leaving") 23:58:33 Now what I'm thinking might be neat is that a TTA could actually implement a direct-threaded Forth environment fairly easily. 23:58:41 I lose the ability to inline machine language. 23:58:55 well, I found my stupid bug 23:59:10 But even so, the performance gains and space reductions might be well worth it. 23:59:59 --- log: ended forth/04.07.10