00:00:00 --- log: started forth/03.11.04 03:35:25 --- quit: warp0x00 (orwell.freenode.net irc.freenode.net) 03:41:41 --- join: warp0x00 (~warpzero@dsl.31.mt.onewest.net) joined #forth 04:58:47 --- quit: oooo (orwell.freenode.net irc.freenode.net) 04:58:47 --- quit: ianP (orwell.freenode.net irc.freenode.net) 04:58:47 --- quit: MysticOne (orwell.freenode.net irc.freenode.net) 04:59:31 --- join: oooo (o@virgo.bombsquad.org) joined #forth 04:59:31 --- join: ianP (ian@inpuj.net) joined #forth 04:59:31 --- join: MysticOne (mysticone@mysticone.usercloak.freenode) joined #forth 05:28:26 --- join: ASau (~ASau@158.250.48.196) joined #forth 05:28:44 Good evening! 05:28:54 Dobryj veczer! 05:29:36 moi 06:09:15 --- join: yasam (~sam@210-55-150-7.dialup.xtra.co.nz) joined #forth 06:13:35 hrm has anyone seen tcn lately ? 06:39:59 --- join: schihei (~schihei@pD9548ABF.dip.t-dialin.net) joined #forth 06:43:18 if I mentioned the logical operator 'inequivalence' would you immediately know what I meant? 06:44:21 != ? 06:44:25 i.e. is the name familiar? 06:44:38 you mean 'not equal' ? 06:45:23 i dunno what it is in forth lol 06:45:36 someone said to me that most people dont know the term inequivalence for XOR 06:46:08 true? (Im writing something) 06:47:22 The name is familiar. 06:47:36 But what class is it used upon? 06:47:48 haha fooled you 06:47:51 Boolean? Numeric? 06:47:56 Another? 06:49:24 nah not really :) 06:49:35 Boolean 06:49:50 but it is a generally known term you belive? 06:50:43 I had assumed so 06:53:01 It was used in soviet old school of impulse electronics. 06:53:28 It used to be usual. 06:53:50 Ca. 1975. 06:55:11 Also it was called "addition modulo 2" 06:55:37 ok, its just that if the term isnt immediately obvious then that may suggest 'XOR' isnt fully groked, if you know what I mean 06:56:12 yes addition modulo two is what we used in coding theory for some reason 06:57:03 if 'fully groked' a redundancy :) ? 06:58:14 ah well, Ill just add more material, thanks anyway 06:59:28 there is no XOR gate 06:59:54 ha? 07:00:26 :) 07:00:52 I took the spotted pill 07:00:54 "Impulse electronics" now is called "digital". 07:02:01 yasam: I've lost your idea, sorry. I've another prioritized task for now. 07:03:09 ok 07:06:02 on a different note: is ANSI forth considered harmful just because its a standard or because it sucks or both? 07:06:21 or none of the above? 07:07:05 I think, the reason is second one. 07:08:09 I think, the commitee had completely lost about portability. 07:38:55 * warp0x00 is away: metakarma - what goes around comes around comes around 08:02:35 --- part: yasam left #forth 08:52:49 yassam the ans forth standard does not describe the forth language but a language of the same name 08:52:51 -- chuck moore 08:53:10 ans forth is the CAMEL of forths 08:53:25 a camel being a horse designed by a commitee 10:43:34 --- quit: onetom (Remote closed the connection) 10:46:58 --- join: onetom (~tom@cab.bio.u-szeged.hu) joined #forth 12:26:52 --- quit: schihei (Client Quit) 12:35:45 --- join: schihei (~schihei@pD9E5CC0E.dip.t-dialin.net) joined #forth 12:53:16 --- join: fabian (~fabian@p508F1CD5.dip.t-dialin.net) joined #forth 12:53:42 Hello everybody. 12:54:37 Good evening! 13:01:23 Anybody here knowing something about retrolinux? 13:06:35 --- quit: warp0x00 (orwell.freenode.net irc.freenode.net) 13:06:35 --- join: warp0x00 (~warpzero@dsl.31.mt.onewest.net) joined #forth 13:06:35 Hello? 13:06:35 fabian: I don't know anything about retrolinux. 13:06:35 fabian: so you know, you often need quite a bit of patience in this channel 13:11:57 No problem ;-) 13:13:07 --- quit: warp0x00 (orwell.freenode.net irc.freenode.net) 13:14:48 --- join: warp0x00 (~warpzero@dsl.31.mt.onewest.net) joined #forth 13:19:07 --- quit: fabian ("leaving") 14:05:42 Good evening, Herkamire! 14:06:11 retrolinux is http://retro.tunes.org, I think. 14:06:52 It is someway connected to RetroForth project. IIRC. 14:07:30 greetings. 14:08:04 Dobryj veczer! 14:23:53 --- join: kc5tja (~kc5tja@66-91-231-74.san.rr.com) joined #forth 14:23:53 --- mode: ChanServ set +o kc5tja 14:48:46 dobry den 14:49:19 ASau: russian? 14:55:42 --- quit: schihei (Client Quit) 15:35:22 --- join: arke (~chris@ca-cmrilo-cuda1-c3b-66.vnnyca.adelphia.net) joined #forth 15:41:16 greeeeets 15:41:19 greets kc5tja 15:41:26 Greetings. 15:42:03 * kc5tja is just enjoying some thought-experiments with generating video. 15:42:11 :) 15:42:22 im reinstalling X 15:42:24 lol 15:42:30 lol 15:42:33 Dobryj noczer! 15:42:43 i uninstalled teh X rpm, now a bunch of stuff is missing 15:42:58 because i (in my insanity) installed teh src over teh rpm 15:43:01 privet ASau 15:43:09 kak dela? 15:43:20 oh the X source is fun ;) 15:43:28 Kak sazha bela! 15:43:39 english is good 15:43:46 --- nick: Herkamir1 -> Herkamire 15:44:02 Herkamir1: friggin 2 hour compile on Athlon XP 1200mhz with nice even 15:44:28 arke: not bad. I think it was 3 or 4 hours for me. 15:44:38 The last time I compiled X, it took two days. 15:44:41 mur: I'm reading various SML and (O)Caml docs... 15:44:54 It's not the compile time I mind. it's trying to get it to work right. 15:45:00 It was on a 450MHz K6-III. 15:45:19 Yes, two days to compile something, only to have it choke on the very last file is infuriating. 15:45:24 kc5tja: did you at least nice it? :) 15:45:30 kc5tja: haha 15:45:40 arke: No. I just let the computer sit for two days while it compiled. No need to nice it. 15:46:00 kc5tja: ack 15:46:08 what's "nice" as a verb? 15:46:13 kc5tja: you shoulda niced it ... might have only taken 1.5 days :) 15:46:19 Herkamire: lol 15:46:23 Herkamire: dunno 15:46:26 Herkamire: youneed to add "have" 15:46:30 Herkamire: i meant teh unix nice 15:46:32 kc5tja: sounds like about what my girlfriend's computer is 15:46:51 Herkamire: Sets the relative priority of a task. A high priority task will consume more CPU time, generally speaking. But in Unix(-clones), the concept of priority is "soft" -- it isn't absolute. Hence why "nice"-ing a task rarely ever does anything at all. 15:47:26 On a hard priority based system, like QNX or AmigaOS, priorities are vitally important, and can make huge improvements in throughput. 15:47:34 (depending on the task, of course) 15:47:34 ahhh. "nice" means it is supposed to be low priority in the multitasking 15:47:46 Right. The process is "nice" to the other processes in the system. 15:47:53 gotcha 15:47:57 But with a floating, dynamic priority system, it's virtually unnecessary. 15:48:30 I've never been terribly impressed with multitasking on linux or Mac OS X 15:48:45 linux is great most of the time, but that's only because I have two CPUs 15:49:03 when I do three intensive things at once my UI is slow 15:49:30 I want a system that automatically gives high priority to what you are looking at. 15:49:33 * arke punches XF86 in the balls 15:49:50 Herkamire: write a patch for teh kernel! 15:50:00 and can put enough priority on the music player so it never skips. 15:50:02 to nicen up 15:50:03 --- nick: arke -> {7{ 15:50:08 --- nick: {7{ -> {7} 15:50:10 *#$&^$*& the kernel 15:50:21 quite hard name to memorise 15:50:23 Herkamire: Linux's priority system grants higher priority to any process that is known to receive any kind of user input. 15:50:27 i woudlnt like to use such name 15:50:31 So what you're asking for is not the fault of its priority system. 15:50:41 kc5tja: cool 15:50:45 star hash dollar ampersand carret dollar asterisk et 15:50:49 <{7}> mur: testing teh freenode naming rules 15:50:50 grrrr 15:50:58 --- nick: {7} -> arke 15:51:09 RK, why test, it's said in the IRC RFC 1459 15:51:18 It is largely the fault of the fact that X Window System uses network sockets for virtually everything involving user input; therefore, it's really lame-ass network overhead you're dealing with. 15:51:20 rfc number might be wrong 15:51:28 mur: freenode doesnt comform to teh rfc, supposedly 15:51:44 how come? 15:52:04 * kc5tja isn't aware of a single IRC network today that conforms 100% to the RFCs. 15:52:05 dunno 15:52:15 kc5tja: ok, I could see that. 15:52:48 Herkamire: This is why MacOS X *flies* compared to X11. The display system is based on a scene graph, which minimizes interprocess communications when it comes to updating the screen. 15:53:17 sure would 15:53:22 no interprecess communication 15:53:26 But user input is still handled with normal message queues. 15:53:36 Well, there is IPC, but there's just a lot less of it. 15:53:45 just write to your own memory area for your window 15:54:00 Like, when moving a window, or resizing, etc., the scene graph renderer largely handles all the gory details of updating the screen, rather than the application. 15:54:45 yeah. I think that's pretty cool 15:54:49 I'm not sure I'm going to do it... but I think it's cool 15:54:54 And, as if that weren't enough, the scene graph renderer is in a single process; thus, there's no IPC when blitting video data to the screen. 15:55:00 * kc5tja is definitely going to do it. 15:55:02 :) 15:55:06 go 15:55:07 no 15:55:09 good night 15:55:16 night mur :) 15:55:25 night my finnish friend! 15:55:27 The Atari 7800 basically did the scene graph stuff in hardware. 15:55:36 dobrij noche, ASau 15:55:44 It implemented a "display list" in hardware, which was fetched under DMA control. 15:55:57 I just don't have very much video memory to spare 15:56:04 kc5tja: neat 15:56:13 Herkamire: You don't need video memory. In fact, you don't ever WANT to use video memory for this. 15:56:26 Writing to video memory is slow, slow, slow. 15:56:38 I have a 16MB card, and 6MB worth of pixels. I'd like to have a double buffer so thaht leaves me with 4MB for textures 15:56:43 Build the screen in regular RAM first, then just blast all X MB of it to the frame buffer in one fell swoop. 15:57:17 Herkamire: writing to video mem is slow because teh CPU has to divvy it up between itself and teh adapter ... that means it can only write/read between refreshes 15:57:30 * kc5tja nods 15:57:33 kc5tja: how long does it take to send 6MB to my graphics card? 15:57:46 Herkamire: rep stosd ... dunno :) 15:58:40 That depends on many factors. What video mode are you in? What's the video refresh rate? Are you using the blitter or the CPU? What bus speed is it? 32-bit? 64-bit? 64-bit-but-only-32-bits-being-used? 15:58:51 arke: Horrifyingly slow. Use explicit loop to transfer data. 15:58:59 why? 15:59:32 arke: Simple instructions execute faster, AND more instructions can be dispatched per clock cycle. REP STOSD is a single CPU instruction, thus it sucks up time in precisely ONE pipeline, for its entire duration. 15:59:47 ouch.... 15:59:53 tr00 15:59:59 Like I said, horrifyingly slow. :) 16:00:12 Good for when you're tight on memory, but otherwise...avoid it like the plague. 16:00:31 didnt think of that ... thats prolly why explicit loop is faster than teh loop instruction, right? 16:00:52 And, on x86 boxes at least, one can use the FPU registers to transfer data even faster than the CPU can transfer data with an explicit loop (80-bit registers versus 32-bit registers!). 16:00:54 kc5tja: well, its faster on 386- 16:00:59 kc5tja: iirc, they added pipelining with teh 486 16:01:05 arke: One of the reasons, yes. :) 16:01:17 kc5tja: nice... 16:01:31 kc5tja: i dont know how to use teh fpu. it seems waaay weird to me. 16:01:52 arke: Well, they've always had pipelining, but the pipeline stages were very coarse-grained (e.g., the bus interface unit would fetch the next instruction while the execution unit was running an instruction, and the MMU was processing page/segmentation data, etc). 16:02:00 arke: It's a stack processor. :D 16:02:29 (not a pure stack processor, but it is a stack processor) 16:03:05 tell me about it! teach me! :) 16:03:37 In the case of moving data around, you'd load the 8 FPU registers with data -- treat the video data as floating point numbers (the FPU won't generate an exception until you actually try to do math with them), then save them in another area of memory. The FPU never does any math on the data. 16:04:22 I have a flatpannel (apple studio display 17") I'm not sure how/if refresh rate enters into it. 16:04:36 Herkamire: It definitely does. LCDs must be refreshed just like CRTs. 16:04:41 Herkamire: modern monitors have higher refresh rates, i think 16:05:09 arke: Doesn't matter, when the pixel switch times are so slow, persistence of vision permits lower refresh rates, and reduced power levels, without adversely affecting video performance. 16:05:45 kc5tja: i know MMX uses teh FPU stuff. could you use MMX too? 16:05:57 Yes, you can. 16:06:08 Anything that loads those 80-bit registers with data can be used. 16:06:08 would it be faster? 16:06:32 I think it might be slightly faster on more modern processors, because they're optimized with all that multimedia buzz-word crap now-a-days. 16:06:39 But the FPU is no slouch at moving data around either. 16:07:13 X uses teh libc memmov 16:07:16 written in C 16:07:18 The PowerPCs can use AltiVec, which is similar to Intel's MMX in that it's SIMD instruction set. AltiVec registers are 128-bits wide, IIRC. 16:07:36 memmov() in glibc is usually optimized for the host processor on which libc was compiled for. 16:07:43 altivec is 128 bits. 16:07:47 im still waiting for intel to come up with 256-bit regs or such 16:07:50 memmov() is used so often, that it had better be. 16:08:16 arke: While working for Hifn, I dealt with a 1024-bit integer modular math coprocessor. 16:08:30 That was fun trying to write register dumps for that. :( 16:08:43 You simply HAD to use scientific notation for it. 16:08:43 :) 16:08:48 wow 16:08:53 1024.....WOW!! 16:08:55 Spokojnoj noczi, mur! 16:08:55 that's a lot of bits 16:09:03 There's not enough screen space to represent a single register value. 16:09:31 And the coprocessor was able to process data up to 3072 bits if you programmed it correctly. 16:09:32 talk about quick moving of stuff 16:09:54 (in case you couldn't figure it out already, it was used for encryption and decryption support hardware in network routers. :) ) 16:10:10 lol 16:10:14 that really needs it 16:10:24 When processing data at 2Gbps, you better believe it. 16:10:25 :) 16:10:39 PowerPCs and MIPS are both extremely fast processors, with highly respectible FPUs; but they're not THAT fast. :) 16:10:57 MIPS asm seems very weird 16:11:11 MIPS assembly is very, very, very, very, very, very simple. 16:11:17 kc5tja: teach :) 16:11:24 It's so simple, that your x86 knowledge is making it more complex than it really is. 16:11:24 kc5tja: you use floating point units for cryptography? 16:11:32 Herkamire: No, modular integer math. 16:11:37 thought so 16:11:45 kc5tja: teach :) 16:11:45 altivec is quite good for that I think 16:11:56 Herkamire: Only for small key sizes. 16:11:57 :) 16:12:09 arke: Each instruction has a fixed 32-bit size. 16:12:19 kc5tja: THATS the part that weirded me out alot 16:12:21 modular math I mean 16:12:30 There are usually (but not always) four fields: the opcode itself, two source register operands, and a destination register. 16:12:40 kc5tja: ooh, i get it 16:12:41 Herkamire: Again, not to 1024 bits of precision. :D 16:12:53 not exactly sure what you mean by modular. I was thinking dealing with numbers with more bit's than fit in the registers 16:12:59 1+3 = 0 16:13:35 arke: Well, it makes sense, and it greatly simplifies the instruction processing hardware. 16:13:49 Herkamire: Did you get that? :) 16:14:21 kc5tja: no 16:14:40 kc5tja: 2 bit registers? 16:15:06 Herkamire: In modulo-4 math, you have only for number tokens: 0, 1, 2, and 3. Thus, when adding, subtracting, etc. two arbitrary integers, the answer can only fit between 0 and 3, inclusive. 16:15:31 2bit 16:15:31 Herkamire: No. Restricting bits is one way of achieving a power-of-two modulo. But what if you wanted a modulo-5 or a modulo-25398 number? 16:15:56 I don't know how to do modulo-anything math 16:16:24 kc5tja: #define modulo base ??? 16:16:39 Herkamire: Encryption is powerful because the modulus of all arithmetic operations being performed is a prime number, which makes "undo"-ing the math virtually (in some cases, utterly) impossible. 16:16:51 arke: No, I can do modulo-5 math in base 10. 16:16:53 kc5tja: well, what about registers? how many, how called, special abilities, etc. 16:17:07 arke: Be specific -- what are you asking about? 16:17:26 kc5tja: what are teh mips regs, and how big are they, and what can they do? 16:18:29 arke: There are 31 general purpose registers (R0 is always zero in some models; it's an actual register in other models -- it's best to just assume it is zero). There is NO hardware stack pointer. 16:18:33 --- join: Sonarman (~matt@adsl-64-169-95-193.dsl.snfc21.pacbell.net) joined #forth 16:18:47 I don't know how to do modulo math for cryptography. I have a vague understanding that you use part of the key as the modulo 16:18:52 arke: You can largely treat them as you do registers in any other CPU; you can load/store them, do math on them, etc. 16:19:11 kc5tja: no stack? 16:19:12 Herkamire: Not always. It depends on your encryption algorithm. :) 16:19:17 arke: No hardware stack. 16:19:27 eck-ppht 16:19:41 kc5tja: yeah. I was reading about public key cryptography 16:19:44 arke: When invoking a subroutine, the previous PC is placed into a CPU register, which you are responsible for saving or restoring yourself if you need to. 16:19:58 arke: It makes perfect sense. 16:20:14 arke: Why waste time saving the PC on the stack, when you're only just going to return from the subroutine anyway? 16:20:20 tr00 16:20:22 hrm 16:20:52 I asume most time is spent in leaf functions (functions that don't call other ones) so there's no point in pushing/popping the return stack for these 16:20:57 arke: Remember, MIPS is a very minimal RISC architecture -- it is designed primarily to run C code, where stack frames are established not word-at-a-time, but whole frame-at-a-time, including return address storage if necessary. 16:21:08 Herkamire: Precisely. 16:21:29 And, the 3-operand register system is a big, big, big performance booster for asm coders and hardware implementers alike. 16:21:30 kc5tja: nice... 16:21:41 kc5tja: eep? 16:21:57 The basic RISC philosophy is that there are four basic phases to each instruction: instruction fetch, operand fetch, process data, and register write-back. 16:22:05 Note the key here: register write-back. 16:22:13 Not memory write-back. REGISTER write-back. ALWAYS. 16:22:19 :) 16:22:34 eep 16:22:36 Registers take effectively zero time to write out; memory takes at least four clock cycles (because of how slow RAM is). 16:22:51 This is why there are so many registers in a RISC. 16:23:08 I like RISC 16:23:13 how do you store to memory if theres only register writes? 16:23:15 you can do a lot of computing without touching memory 16:23:24 This is also why pipelining caught on big -- while one instruction is being fetched, another is having it's 2 operands fetched, another is having it's two operands processed, and the last is having its destination register written back to. 16:23:25 arke: fetch and store 16:23:37 well, intel is kinda braindead in having only 4 regs... 16:23:41 There are dedicated instructions for loading and storing data to memory. 16:23:54 arke: 8 to be specific, though one is a dedicated, hardware stack pointer. 16:24:15 well, 8 that you usually use 16:24:20 But also look at the complex and mind-boggling addressing modes it has too. 16:24:20 s/8/4/g 16:24:29 * kc5tja uses all 7. :) 16:24:31 that i could never understand... 16:24:33 ESI, EDI, and EBP are my friends. :D 16:24:46 kc5tja: ESI and EDI i usually keep for something 16:25:09 * kc5tja nods -- I use ESI, EDI, and EBP especially for pointers. 16:25:15 I like the abundance of registers on my PPC 16:25:30 * kc5tja nods -- MIPS and PowerPC are very similar architectures, from a software developer's perspective. 16:25:38 whats teh point of EBP? i know that gcc uses it for subs as a base argument pointer... 16:25:40 If you know MIPS, you know 80% of PowerPC, and vice-versa. 16:25:44 I haven't been doing asm for that long. But I've never run out 16:25:48 arke: That's the point. 16:25:54 aah. 16:25:59 a dedicated base register. 16:27:31 "Base" Pointer -- BP. :) 16:27:32 interesting. 16:27:32 Yes. 16:27:32 This is why the default segment for the EBP register is the stack segment, not the data segment (most people don't know that). 16:27:32 i do! :) 16:27:32 But since most OSes discard segmentation as quickly as they can, it usually isn't an issue. 16:27:32 its ugly. 16:27:32 very ugly 16:27:32 immensely ugly 16:27:32 I find segmentation to be a dream come true for m.e 16:27:32 me. 16:27:32 eep? 16:27:32 what's segmentation? 16:27:47 Herkamire: It's hard to explain fully here. 16:27:55 that's ok 16:27:57 Herkamire: a way of accessing memory in which you supply 2 registers, one of them points to an area, one to the specific place in the area 16:28:02 (very simple explanation :) ) 16:28:06 The simplest possible way for me to explain it is a segment is a logical address space. 16:28:43 The nice thing about segmentation in x86, though, is that you can only access those segments that exist in your global or local descriptor tables. 16:28:44 lwzx loads from the address at the sum of two registers 16:29:07 kc5tja: why do you find segmentnation to mbe a dream come true? 16:29:33 Herkamire: well, its not really like that 16:29:39 1. You can only access memory that you've been explicitly been granted access to, and without the need for supervisor/user mode distinction. 16:29:48 Herkamire: it left-shifts, the first register, then addds the two 16:29:55 2. Logical address spaces are ideal for object oriented operating environments. 16:30:12 3. It's a more logical method of imposing access restrictions on memory than paging. 16:30:15 sounds kinda like my vague understanding of virtual memory 16:30:28 arke: No, that's true ONLY in real-mode. 16:30:39 In protected mode, it doesn't do that at all. 16:30:41 kc5tja: yeah 16:31:04 in pmode, it looks in some table for the certain value of the left reg, then uses the area described in that table for that value 16:31:07 as a base 16:31:22 * arke hates the distinction between pmode and real mode 16:31:22 left reg == a dedicated segment register, always. 16:31:26 so it's a mapping of logical addresses (the ones you have in the registers) to real addresses according to a table and a register? 16:31:42 Herkamire: yep :) 16:31:45 Herkamire: Consider the following address mode: (r0+r1+offset) 16:31:52 That's basically segmentation, as far as you're concerned. 16:31:53 Herkamire: immensely complexicated, in my opinion 16:31:57 is that even a word? :) 16:32:02 As far as the hardware is concerned, it also checks that permissions are being met. 16:32:19 arke: Just "complex". 16:32:28 :) 16:32:48 But I don't find it to be overly complex at all. 16:33:00 well, its not hard to grasp 16:33:02 sounds pretty straight foreward 16:33:03 The segment table is read from only when it's first used. 16:33:04 or not that hard to use 16:33:13 but it can be made simpler 16:33:19 the segment register is offset or r0? 16:33:28 arke: Yeah -- ditch real-mode. there's no need for it anymore. 16:33:36 Herkamire: It can be thought of that, yes. 16:33:39 brb, dog 16:33:45 Note that there are several restrictions to using segments: 16:33:54 ack 16:34:01 ill stay another few minutes :) 16:34:02 1. The effective address in the segment must be less than the segment's limit -- otherwise, it's a privilege violation. 16:34:08 later 16:34:24 2. The segment must be accessible to your process; otherwise, it's a privilege violation. 16:34:42 3. A segment can be marked read-only or read/write for data segments. A write to a read-only segment is a privilege violation. 16:34:57 4. A code segment is only read-only. A write to a code segment is a privilege violation. 16:35:08 (you can get around 4 by mapping a data segment on top of the code segment, BTW) 16:36:15 cool 16:36:20 what's in the segmentation register? 16:36:33 A segment consists of a base pointer (which points into the virtual address space), a limit (which restricts how much of said memory you can access; limits are measured in bytes for 1MB or less, or pages for 4.2GB or less), an access rights byte, and a minimum privilege byte. 16:36:44 The x86 has 6 segment registers. 16:36:59 Each segment register has only 16 bits, 3 of which are used for privilege checking purposes. 16:37:15 Well, 2 of them are (4 privilege levels; 1 user, and 3 supervisor modes). 16:37:43 Bit 3 is used to indicate the local or global descriptor table. 16:37:53 So, each process can access 16,384 different segments. 16:38:07 so you can have 4 memory [logical <--> real] mappings at once? 16:38:25 Combine that with the fact that each segment can address up to 4.2GB of virtual memory, and you can see that the stock x86 can actually address quite a bit of virtual memory (64TB). 16:38:45 There is a code segment, stack segment, and four data segment registers. 16:39:01 brb 16:39:34 There is only one real virtual to physical memory mapping, but you can have several logical to virtual memory mappings, yes. Each segment register describes one possible mapping. 16:40:38 Unfortunately, x86-64 is disposing entirely of segmentation in 64-bit mode, and switching everything to the paging system. 16:40:47 Paging is nice, but segmentation is better for protection purposes. 16:40:52 I think, at least. 16:42:54 At any rate, I digress. With creative use of multiple threads, you can get many of the protection benefits of segmentation using heavy amounts of software parallelism. Linux is not a good model for such parallelism, but a light-weight, fixed-priority based OS is (like QNX; QNX just *rocks* on x86 platform!). 16:43:04 ok, so a segmentation register describes a mapping (logical to real) 16:43:16 and can you just load whatever value you want into the register? 16:43:34 Yes, it says that, "There exists an XYZ byte address range, that's located at ABC virtual memory address." 16:43:47 Then it's up to paging to actually map it to physical, concrete RAM addresses and do the virtual memory if needed. 16:44:16 No! That's the thing; the value you load into the segment register must have a valid mapping for it in your local (or global) descriptor table. 16:45:04 While the CPU won't choke if you load an arbitrary value into a segment register, the minute you try to access a memory location with that segment, it'll give a general protection fault (segmentation unit's way of saying, "Privilege violation"). 16:45:25 The upper 13 bits of the segment register is an index into a table. 16:45:36 And only the OS can access the contents of that table. 16:45:57 (The application can do it if and only if the OS grants the permission to do it; ironically, usually through a segment itself!) 16:46:41 sounds cool 16:46:48 It is. :) 16:47:16 Multic's segmentation inspired it, and although Intel's implementation isn't as powerful as Multic's, it is damn sweet. 16:47:20 so there's a table with all the segment mappings that there are 16:47:26 Yes 16:47:33 and you load the three segment registers with the segments you want to use 16:47:39 Yep. 16:47:42 nice 16:48:02 and if you want to use a fourth segment, then you change one of the segment registers to point to the table entry for that fourth segment 16:48:03 Switching segments has some overhead, as the CPU needs to reload information from the segment tables. But it's all transparent to the programmer. 16:48:23 I see 16:48:25 And once the data is loaded, it's never re-read from memory again. 16:48:53 You can kinda sorta get the same effect on the PowerPC too. 16:48:59 The PowerPC has segment registers too -- 16 of them. :) 16:49:18 They divide the program's address space into 256MB chunks (if you're in 32-bit mode). 16:49:31 So imagine a system with 16 256MB-max segments. 16:50:08 But, the segment registers also have their own privilege checking bits, and whatnot. Plus, they provide a mechanism to access 56-bits of virtual memory (80-bits for 64-bit PowerPC mode) 16:50:50 The critical difference is that what segment register to use comes from address bits 31..28, not from a specific segment register specification in the instruction. 16:51:13 This method is equally valid, as long as you're happy with 256MB maximum segments. :) 16:51:33 (of course, you can use multiple segment registers to logically coalesce two or more segments into one, as far as the software is concerned, but you get the idea). 16:52:25 As you might expect, only the OS can actually set the segment registers. Unlike the x86, though, you must invoke an OS service to change the segment mapping. 16:53:42 But with PowerPC's lightning quick subroutine call overhead, which extends to its system call overhead, it's not that much of an issue. In fact, I expect it is performance competitive with x86's hardware-based segment descriptor fetch operation. 16:54:23 (and, obviously, if you're running 64-bit software, address bits 63..60 are used to determine the segment.) 16:58:53 * Herkamire reads this twice 16:59:51 very interesting. 17:00:24 I didn't realize the top 4 bits of memory addresses determines the seg register 17:00:32 but it makes perfect sense 17:04:24 how do you get 56-bits of virtual memory? 17:04:29 I thought it was 32 17:05:48 for one ppc app to access more than 4GB of memory it would have to change the memory mapping 17:07:39 kc5tja: boo! 17:07:56 MysticOne: Heyas. :) 17:08:05 kc5tja: I drew you a picture! 17:08:09 are you saying that PPC can map memory up to 72PB into the 4GB virtual address space? 17:08:21 Herkamire: The segment registers have 8 bits for privilege protections. The remainder of the bits are used for other things, such as additional address bits. :) 17:08:51 Herkamire: So 28+24 = 52-bits. :) I meant 52 bits, sorry. :) 17:09:05 But for the 64-bit models, yes, that's precisely what I'm saying. 17:09:10 MysticOne: Heh 17:09:42 52-bits is for 64bit or 32bit CPUs? 17:10:56 32-bit 17:11:04 64-bit CPUs have an 80-bit virtual address space. 17:11:06 do the 64bit PPC still limit segments to 256MB? 17:13:33 No. 17:13:38 good 17:13:42 They take the segment values from 63..60. :) 17:23:28 ok, so an a 64bit ppc the low 4GB of virtual address space would have to be in the first segment register right? 17:23:53 As I understand it, yes. 17:24:04 I may be wrong. The interpretation of address spaces may be controlled by a configuration bit. 17:24:27 think there might be a 32bit addressing mode on 64bit ppcs or something? 17:24:29 In fact, now that I think about it, that may be the case -- you can select the process address space size on a process by process basis. 17:24:43 apple claims that their g5 is backwards compatible 17:25:30 Yeah, like I said, I recall there being some configuration bit in a CPU control register. :) 17:25:34 I just remembered it now. 17:25:43 ok. that explains everything 17:30:44 :) 17:30:46 back :) 17:30:49 whats up? 17:30:50 :) 17:30:51 :) 17:30:52 :) 17:31:27 Nothing much. I just finished explaining how the PowerPC uses segments, and how it differs from x86's segments. 17:33:26 yep, i read that 17:33:32 :) 17:34:32 wanna gimme a hand in doing my little tranny-simulator? 17:34:34 Which, BTW, if I design my 65816-based computer, I'm going to adopt a similar mechanism, whereby the top 4 bits of the 24-bit address space is used to extend the address range of the CPU. By how much, I'm not sure, but I'm thinking to 40 bits. 17:34:36 pleasE? :) 17:34:47 Well, that depends on what kind of a hand you want. 17:34:59 well, what kind of a hand can you give 17:35:00 ? 17:38:41 can I ask a question? 17:38:47 sure! :) 17:38:52 would it be too much bother for you to read it? 17:38:59 the whole point of IRC is to ask questions! 17:38:59 I don't want to impose... 17:39:13 Herkamire: JUST ASK!!!!! 17:39:14 :) 17:39:29 arke: just say what you want from kc5tja 17:40:25 kc5tja: well, I need to figure out just _how_ to do it. I'm gonna have parralel depedencies, and I have really no idea how to implement those 17:41:31 Neither do I, if you're implementing things on the transistor level. 17:41:48 That type of simulation often takes hours to complete for even non-trivial "chip" designs. 17:49:11 that's another reason I think chuck is a super genious 17:51:56 * Herkamire goes to add a feature to his forth editor 17:57:26 Heh 18:00:32 Well, the equations governing transistors are relatively simple, but the need to maintain multiple parallel states (at least three "nets" per transistor, as they're called; hence the term "net-list"), and the fact that transistors change their states so quickly requires a MASSIVE amount of calculations to run -- that's what makes the simulation slow. 18:00:55 It's better to emulate the system from a gate-level design. while you still have the parallel net issue to consider, it's MUCH faster. 18:03:48 kc5tja: so just have a collection of gates? 18:04:04 IF-ELSE, AND, NAND, NOT, OR, XOR 18:04:04 Yeah. That's how I'd do it. 18:04:22 No need for IF-ELSE; NAND, NOR, AND, OR, and XOR gates are all you really need. 18:04:42 NOR? 18:04:52 tr00 18:05:51 IF-ELSE, by the way, are called "multiplexors" in the industry. :) 18:06:12 They can be from 2:1 all the way up to 32:1 -- meaning, a 5-bit input controls which one of 32 other inputs is output. 18:28:17 --- join: TheBlueWizard (TheBlueWiz@ip-207-198-223-239.nyc.ny.FCC.NET) joined #forth 18:28:17 --- mode: ChanServ set +o TheBlueWizard 18:28:25 hiya all 18:28:37 y0 18:28:50 60 seconds already ... lets see how much longer he stays 18:29:16 hiya arke...still picking on me, eh? 18:29:27 :) 18:29:40 * TheBlueWizard smacks arke...just 'cause... 18:30:18 * arke smacks teh blue wizard d00dz0r without teh magic powers 18:31:55 * TheBlueWizard is not a "d00dz0r without magic power" 18:43:13 W/w 7 18:43:16 sorry 18:46:42 Howdy 18:46:52 hiya kc5tja 18:47:00 Just got back from eating some dinner. 18:47:14 good dinner? 18:47:36 Fettucini alfredo from Trader Joe's (frozen, but decently good), plus some tuna fish. 18:47:49 Kind of an "instant casserole" or however you spell it. :) 18:48:27 correct spelling....I see 18:49:13 Man, it's been too long since I did anything with Forth. 18:50:17 heh 18:50:55 I am also reveling at how bandwidths of the old 8-bit CPUs have progressed so far that you don't even need a dedicated video chip to produce moderately decent quality video anymore. 18:51:08 * kc5tja can produce a nice monochrome image with just a VIA chip now. 18:51:16 Though, dedicated video is still rather nice. :) 18:52:24 And with a 65816 system, I don't even think you need a video chip at all -- just a DMA channel to blast pixel data out the video port from memory raw. The CPU has more than enough bandwidth to control the horizontal and vertical sync functions. 18:52:39 76800 bytes is all you need for a nice 640x480 system with 256 colors. :) 18:54:20 hmm...is 10 MHz enough? 18:54:42 Not for that resolution -- 25.175MHz is required. 18:55:36 But if you double-up on the RAM (e.g., 2-byte wide RAM), you can drop the memory fetch clock rate to half that, which is 12MHz or so. The 65816 can be clocked to 16MHz safely, and those at CMD got it to 20MHz. 18:55:39 ah...I suspect so.... 18:55:59 Also, I found a *nice* fixed-palette 256 color system too. 18:56:06 RRmGGGBB would be the bit encoding. 18:56:23 RRm forms a 3-bit red field, GGG forms a 3-bit green field, and BBm forms a 3-bit blue field. 18:56:25 m? 18:56:37 Note the 'm' bit ("Magenta") is shared between the red and the blue. 18:56:49 It's the least significant bit for both, so it has the least amount of impact. 18:56:53 interesting 18:57:01 I've done some tests, and the results are *sharp*. 18:57:19 On my monitor, you can't see the discoloration in the yellows or cyans. 18:57:30 Let alone any other mixed color. :) 18:58:12 It's very close to having a true 512-color display. :) 18:59:10 of course one will need to do a full color spectrum analysis to ensure that the scheme can reasonably represent the desired color (like no "hole" in the spectrum, like missing orange band for example) 19:00:09 Since the maximum discoloration is only the least amount of blue possible (and even then, only every other color), I can say it has plenty of orange color combinations. :D 19:01:03 have fun with it then 19:01:17 Well, I would have to get the resources to build such a system first. :/ 19:01:49 that takes money, which you don't have much of :=/ 19:01:54 I think it's a neat idea, but the PC has millions of colors, and is a whole lot faster right now. :) 19:01:58 Nope. 19:02:01 Not yet, at least. 19:02:05 I'm saving up, slowly. 19:02:11 But I need to get my kit business going first. 19:02:18 yeah...and get a better job, etc. 19:02:26 kit business? 19:02:41 I want to start an electronics kit business. 19:02:51 Making various electronics kits and selling them via my parent's webstore. 19:03:54 One idea I had was a headphone guitar amplifier. 19:04:02 With basic distortion controls. 19:04:06 Nothing overly fancy. 19:04:30 hmm...you may be competing against the likes of Radio Shacks with those electronic wireboxes 19:04:52 electronic wireboxes? 19:05:56 kc5tja: where do you put the distortion and volume controls? 19:06:29 Well, if you purchase the kit without the case (which is how all kit companies basically sell such things anyway), then you can put them whereever you'd like. 19:06:41 But the case I'd make for it would have spots for the controls on it. 19:07:05 the kind that the kid would learn how to build electronic "devices", such as light signal, or whatever....like, "168 Electronic Projects" or something like that 19:07:37 Ahh. Nahh, the kit industry seems to be pretty niche stuff. 19:07:57 Diagnostic equipment, low-powered radio transmitters, clocks, etc. 19:09:20 yeah 19:10:47 The biggest problem with starting a kit business is the R&D that has to go into it. 19:11:13 R&D costs for even the simplest project can easily exceed $500 if you're not super careful. 19:12:27 I suppose the R&D includes the marketing research (is it salable), hm? 19:13:27 For me, no, because that's my parent's responsibility. 19:13:36 I mean, we work together, and the investment would have to be made by someone. 19:13:48 So it's not like I just build something and they find a way to market it. 19:13:55 It's just that it doesn't come out of my pocket, which is nice. 19:14:22 You know what, I'm just going to purchase an antenna analyzer, and make antennas and sell those as a beginning business. 19:14:33 Antenna kits are always nice, especially for us ham radio operators. :) 19:14:57 ah...that's good...then again, it does depends a lot on how it is presented (is it easy to build and use, from a neophyte's standpoint? things like that) 19:15:26 presented, packaged 19:15:32 Well, antennas are niche items too -- the dipole is the easiest to put up, of course, but the person likely to buy that would be a ham radio operator. 19:15:35 * kc5tja nods 19:16:25 well, I need to go...bye all 19:16:28 OKies. 19:16:34 Later :) 19:16:48 bye kc5tja 19:16:57 --- part: TheBlueWizard left #forth 20:37:29 kc5tja!! 20:37:30 :) 20:37:59 arke!!!! 20:38:32 whats up!!!???/ 20:38:59 * kc5tja is considering the possibility of selling antennas as a quick get-up-and-go measure for earning additional income. 20:39:41 kc5tja: how much design freedom do you have on your 65816 systems? 20:39:46 I'd like to sell electronics kits, obviously; but that requires a level of R&D investment that I just can't afford at the present time. 20:39:59 :) 12:53:59 --- log: started forth/03.11.04 12:53:59 --- join: clog (nef@bespin.org) joined #forth 12:53:59 --- topic: 'where people get together to talk about CVT, stirling engines, tesla turbines, data structure and algorithm design, and occasionally Forth' 12:53:59 --- topic: set by kc5tja on [Wed Oct 15 21:47:35 2003] 12:53:59 --- names: list (clog Sonarman arke @kc5tja warp0x00 onetom ASau MysticOne ianP oooo SDO_AMD skylan Herkamire slava njd TreyB mmanning mur @ChanServ) 12:54:41 Ok. 12:54:43 wtf are you dudes talking about 12:57:07 warp0x00: building computers from scratch 12:57:07 arke: well yeah i got that much 12:57:07 but y? 12:57:07 warp0x00: the ACTUAL from scratch, not like get a HD, CPU, and CDROM drive, and put it in a case 12:57:07 warp0x00: because its neat :) 12:57:07 arke: o ... then y not design your own core too? 12:57:07 $$$$ 12:57:07 for design or for fab? 12:57:07 Besides, ever try to solder a 144-pin QFP package with 25 mil centered pins? 12:57:07 Both. 12:57:07 kc5tja: eeeck! 12:57:07 well design: www.opencores.org 12:57:24 The 65816 is nice because it is reasonably fast, is only 40 pins, has a nice, convenient 8-bit databus (and yet is still performance competitive with a 68000 clock for clock!), and is easy to assemble. Plus, the chip costs a monsterous $5.50 in quantities of one, versus $25 for a FPGA. 12:57:36 Open-cores is nice, but that doesn't help the home builder. 12:57:52 heh 12:58:27 how much DOES it cost to fab a core? 12:58:31 You need to purchase (a) the chip programmer, (b) the chip itself, and (c) build the PC board to prototype with, and (d) the oven you'll use to assemble all the surface mount components because sockets for FPGAs cost $100+ (more than 4x the cost of the chip it's socketing!). 12:58:40 warp0x00: $500,000 isn't out of the question. 12:59:01 OUCH!! 12:59:10 jesus christ 12:59:10 I assume by fab a core, you mean actually create a chip like what Chuck Moore is doing. 12:59:29 no i mean like 12:59:36 $50,000 can probably get you a prototype run if you use wholly outdated fabs. 12:59:37 if you already have a core design 12:59:39 and you want a chip 13:00:15 aiee! 13:00:25 Well, other than fabbing a chip, the only other alternative is to use programmable logic, like an FPGA. 13:00:41 whats an FPGA? 13:00:54 FPGA chips, themselves, are relatively inexpensive. At $25 a pop, you can do a lot with them. But, there again, there are a LOT of pins, they're VERY small, and it's not conducive to home-brewing. 13:00:59 Field Programmable Gate Array 13:01:31 Also, another problem with FPGAs is, you can purchase 30k-gate chips, but that doesn't mean you can use all 30k gates. 13:01:36 It all depends on what you want to do. 13:02:07 i would've though just fabbing something would be cheaper 13:02:14 I would like to point out also that FPGAs can take up to 5 to 10 seconds to "boot", as they load their programming from a serial EEPROM chip. 13:02:44 Fabbing means to actually etch a new wafer, from which you can get, maybe, 100 chips or so. 13:02:55 Programming is a much cheaper solution for one-off designs. 13:03:09 If you can put up with the 10-second reset times. :) 13:03:16 well 13:03:29 for testing & design it would be worth it? 13:03:29 Fabbing also takes about 3 to 6 months to go from design (Verilog or VHDL) to chip. 13:03:37 Maybe. It depends. 21:00:27 what do you have to do to go from VHDL to chip? 21:00:28 When I worked at Hifn, we couldn't use FPGAs to test our chips -- they had over 6 million gates on them. 21:00:52 couldn't you just test parts of the chip? 21:00:57 warp0x00: I'm not 100% positive, but first you need to locally simulate your design, because whether the chip works in silicon or not, you're going to plunk down a minimum of $25K to get the fab run done. 21:01:02 No. 21:01:31 what do you mean 'locally simulate' 21:01:37 The chips I was responsible for testing were highly integrated devices, and each component was tightly intermeshed to allow extremely high performances. 21:01:44 You simulate a chip on your computer. 21:02:07 simulate the VHDL or the silicon? 21:02:12 In Verilog or VHDL, you basically build a test harness for your "chip", for it to run in. 21:02:13 Both. 21:02:43 how do you simulate silicon? 21:02:43 You run a simulation before you submit a design to verify it's conceptual correctness, then you run the physical chip against the simulation to verify production correctness. 21:02:56 Verilog or VHDL development environments ship with a simulator. 21:03:07 You run your program through that. 21:03:34 i guess i don't understand the transition from VHDL to silicon layout 21:03:50 This is the flow: 21:03:55 1. Design your chip in Verilog. 21:04:05 2. Simulate it to make sure it works. If it doesn't, go back to step 1. 21:04:16 3. Submit chip to fab. Pay $50K. 21:04:24 4. Wait 6 months (or so). 21:04:44 5. When chip comes back, plug chip into circuit board. Test the *actual* chip results against the simulation to make sure the fab didn't screw it up. 21:05:10 6. If the fab screwed it up, you MIGHT be able, if you're lucky, to get a free second fab run. THIS IS RARE. Be prepared to pay another $50K for a second run. 21:05:43 7. Once everything is working, order production quantities to amortize development costs, and pray to your favorite deity that you'll sell them all. 21:06:33 Oh, I forgot to mention: 6a. If the fab didn't screw anything up, and the chip still doesn't work in the real-world, go back to step 1. 21:06:37 do you submit the actual verilog/vhdl to the fab? 21:06:44 (we had to do this a couple of times at Hifn. It hurts. :( ) 21:06:47 Yes. 21:06:56 oic 21:07:14 $50K for what kind of process 21:07:34 Then their compilers will reduce the program to a gate-level layout. From there, they use standard libraries (the electronic equivalent of ANSI C's standard library, sort of) to create a transistor-level layout. 21:07:44 warp0x00: I wouldn't recomend designing your own chip 21:08:04 From there, they proceed to slice, polish, dope, etch, dope again, etch again, metalize, polish again, scribe, cut, then package all your chips. 21:08:10 Herkamire: specially scince i don't know anything about it... thanks for the tip :P 21:08:25 hehe :) 21:08:32 It's quite an involved process. 21:08:33 $50K for what kind of process? 21:08:40 I just explained it above. :) 21:08:49 yeah but i mean 21:08:51 like 21:09:04 etching process equivalent to what cpu 21:09:31 warp0x00: what sort of chip were you thinking of making? (if you were so endowed with knowledge and money) 21:10:01 Hifn paid $500K per fab run -- with over 6 gates transistors on the chip (roughly 20 million transistors), it'd be closest in complexity to a Pentium IV chip. 21:10:28 Herkamire: uh... its kinda complex 21:10:29 Hifn paid $500K per fab run -- with over 6 gates on the chip (roughly 20 million transistors), it'd be closest in complexity to a Pentium IV chip. 21:10:45 Sorry...X-Chat didn't delete the word "transistors" like I expected it to. >:/ 21:10:52 kc5tja: you mean 6 million gates 21:10:58 Yes. 21:10:59 Thank you. 21:11:09 The second mistake was definitely my fault. :) 21:11:11 kc5tja: so then what does $50K get you 21:11:30 Probably something with about 4000 gates on it, but you get a bigger batch of chips from the wafer. 21:11:53 The etching process really doesn't care about what circuit you put on the chip. 21:11:59 It could be digital, analog, CPU, memory, whatever. 21:12:01 well 21:12:02 i mean 21:12:29 All the chip company cares about is that the design fits onto the wafer's photographic masking machine, and that it can be scribed easily in rectangles or squares. 21:12:43 wouldn't you be able to get chips made w/ a bigger process for cheaper? 21:12:49 Not necessarily. 21:13:07 The bigger/better processes cost more because they use more exotic equipment, higher-grade materials, and are more labor intensive. 21:13:21 no i mean like 21:13:36 one that would produce a slower chip (bigger in microns) 21:13:47 Well, I just said that, but in reverse. :) 21:13:57 Yes, a lower-grade process will be cheaper. 21:13:58 --- join: tathi (~josh@pcp02123722pcs.milfrd01.pa.comcast.net) joined #forth 21:14:08 cheaper than $50K *g? 21:14:10 But the silicon wafer is still the primary cost determining factor. 21:14:34 I think Chuck Moore said he can get chips fabbed at $25K. That's the cheapest I've heard, and he hasn't told me where he gets them done that cheaply. 21:14:42 Most prices I've been quoted start at $50K or so. 21:14:52 oic 21:14:53 okay 21:14:54 MOSIS I think he uses. 21:14:55 uh 21:15:00 IIRC. 21:15:06 At least, that's what he last used. 21:15:25 when the fab goes from VHDL/verilog to silicon with their compilers and whatnot 21:15:32 But even there, the large 1.2um technology fabs are no more -- they've all been phased out. 21:15:32 can you do that step yourself? 21:16:08 If you had all the details about their fab process, and you paid $5K for a software license for said compilers (yes, they really do cost that much) per person who's going to use it, then yes. 21:16:18 (prices are rediculous for such software. >:( ) 21:16:25 And they're buggy as hell too. 21:16:28 none GPLed eh 21:16:32 Nope. 21:17:05 why would you need all the details of their fab process 21:17:58 You need to know the smallest feature size in both the X and Y directions their photomasks can support, how long they dope the wafers for to calibrate the depth of doping, minimum distances between transistors or other components to prevent electron bleed-through, etc. 21:18:16 i mean what would you do if you needed an analog part on your chip 21:18:22 Let's just say that it is definitely NOT an industry I'll be starting in my home. :) 21:18:48 warp0x00: You would purchase that $5K software from the chip fabrication plant. :) 21:18:59 Or build your own, like Chuck did. 21:19:14 built his own software 21:19:14 But I lack the patience or know-how to do that (I note that Chuck's software evolved over a period of 10 years at least). 21:19:18 or his own fab? 21:19:22 Software 21:19:26 OKAD-II 21:19:43 who is this chuck person 21:19:47 And no, it's not publically available; but I believe you can purchase a copy from him, though he hasn't given a price. 21:19:53 Chuck Moore invented Forth. :) 21:20:07 oic 21:20:31 He's currently in the business of designing Forth CPUs for other companies. 21:21:13 --- quit: tathi ("leaving") 21:21:15 has anyone made a clockless chip yet? 21:21:35 Chuck Moore -- both the MuP21 and I21 are "asynchronous logic" chips. 21:22:00 Jeff Fox then took the MuP21 design and refined it himself to produce the F21, currently the most performance you can get in a P21-compatible chip. 21:22:03 are you a chuck moore fanboy or something 21:22:09 I'm stating facts. 21:22:14 lol 21:22:20 yes but you know so many of them 21:22:27 about one person 21:22:29 I like to keep current. 21:22:38 Well, it's easy because he's the only person really to do these things. 21:22:51 whats the P21 like then 21:23:09 I think the best way to answer that is to consult the Ultratechnology.com website. 21:23:19 There are streaming videos that discuss various aspects of the chip. 21:23:27 Both by CM himself and by Jeff Fox. 21:23:28 "_ 21:23:30 :) 21:23:37 CM is a genius 21:24:00 Or a looney -- there is often little distinction between the two. 21:24:03 Mommy, I wanna be like Chuck Moore when I grow up! 21:24:12 But I like what he does precisely because he is eccentric. 21:24:20 Forth is to computer science as Jazz is to music. 21:24:34 And I'm not talking about "Light jazz" or "smooth jazz." I'm talking real jazz. 21:24:50 uh 21:24:54 these chips run forth 21:24:55 lol 21:25:00 that makes me lol 21:25:00 Yes. :) 21:25:08 ACK 21:25:18 I did say that his CPUs run Forth above. :) 21:25:25 whats teh find command to find files which have "libgcc" occuring in them in /usr? 21:25:28 and print them? 21:25:32 are there any more ... uh normal clockless chips that run like assembly 21:25:39 clockless? 21:25:41 and not forth 21:25:47 yeah clockless 21:25:49 as in having no clock 21:26:09 arke: It's some combination of strings and grep; I forget which options though. 21:26:36 arke: man find , look for exec per file , man string 21:26:39 warp0x00: There is an asynchronous logic ARM-clone that was made at a university once. But no other development has been done on it. 21:27:02 is asychronous logic == no clock signal 21:27:12 ? 21:27:41 http://www.eetimes.com/story/OEG19981007S0013 -- I stand corrected. Apparently, it's a commercial core now. 21:27:44 Yes 21:28:13 * warp0x00 always though clocks were stupid 21:31:08 They serve a useful purpose. 21:31:31 * warp0x00 doesn't think so 21:31:34 Clocked digital circuits are cheaper to make (less gates), and have guaranteed timing constraints. 21:32:09 I feel that asynchronous buses are the bomb though -- the 68000's bus interface is utterly fantastic. 21:32:33 But even the synchronous bus interface of the 6502 and 65816 are joys to work with because of their sheer simplicity. 21:32:39 imho everything should be asynchronous except for time keeping 21:33:05 arke: find /usr -name libgcc or something like that 21:33:05 Well, it'd be hard to maintain performance in poor environmental conditions. 21:33:27 Cold semiconductors run slow, hot semiconductors run slow -- there is an optimum temperature range for chips to run at. 21:33:29 kc5tja: what do you mean 21:33:38 well yeah 21:33:54 but a clocked chip will just fail when the temp makes it go slower than the clock 21:34:25 True. But said chip will still be more expensive because of the gates. 21:34:57 That's why a stack CPU is so nice -- it has so few transistors in it (I mean, c'mon -- 4000 gates is nothing), that the cost is negligable to add asynchrony to its design. 21:35:23 arke: find /usr -name '*libgcc*' perhaps? 21:35:31 got it:) 21:35:32 thanks 21:35:52 However, I will agree -- given the choice between a clocked and non-clocked design, I'll take non-clocked anyday. As that EE Times article suggests, the RF emissions reductions alone would be more than worth it for me. 21:36:07 kc5tja: well i mean 21:36:08 * kc5tja even was going to experiment a bit with asynchronous logic some day. I've always been fascinated by it. 21:36:23 kc5tja: itt if i was gunna design a chip it would be really fucking simple 21:37:14 --- quit: Herkamire ("goodnight all. see you tomorrow") 21:37:21 The only architecture simpler than a stack CPU is a "move" architecture. But move-architectures aren't as easy to program as stack CPUs. 21:37:30 move? 21:37:52 explain 21:37:56 The only instruction supported by the CPU is "move r1,r2", where r1 and r2 either do things when loaded or read from, or are general purpose registers. 21:38:15 So, to add two numbers, you could use something like this: 21:38:21 adder1 := r0 21:38:24 adder2 := r1 21:38:27 r2 := adder_result 21:38:48 on 21:39:03 oh 21:39:05 yeah ive heard of that 21:39:16 This design just screams for asynchronous design too, because the CPU can be hauling butt with its MOVE instructions, but the individual execution units can be slower. Lots of activities can be going on in the background. 21:39:40 And when reading from a register that isn't ready yet, the asynchronous design will naturally make it wait. :) 21:40:30 I HAVE TO CODE SOMETHING!! REALLY QUICK!! 21:40:36 so how is stack simpler than just vvery risc 21:40:36 somebody gimme an ide 21:40:38 idea 21:40:46 arke: quicksort 21:40:57 eep 21:41:00 no an actual app 21:41:32 arke: an app that quicksorts something 21:42:50 warp0x00: A stack machine's instructions do not need to specify source or destination registers; these are implicit. Each instruction fetches its data from the data stack, and leaves them on the data stack. The sole exceptions are the instructions which pushes a literal, or >R and R>. 21:43:21 Therefore, it's common for a 16-bit MISC-architecture stack CPU, for example, to have 3 to 4 instructions *per* fetched 16-bit word. 21:43:55 Assuming 4-bit instructions, this means one cycle to fetch, and four cycles to execute. Therefore, without the aid of a pipeline, the CPU comes very, very close to matching the RISC's 1-instruction-per-cycle goal. 21:44:56 But, due to the reduced data path loading inside the chip, the chip can be driven to exceptionally high clock speeds (or when asynchronous, insanely high speeds; the MuP21 executed instructions at a peak 500MIPS!), so that extra .25 cycle/instruction overhead is easily made a non-issue. 21:45:20 The reduced gate count makes for almost no heat dissipation when in actual operation too, especially compared to a more traditional RISC. 21:45:48 When the PowerPC is claimed to draw no more than 4W of power, the MISC chips are claimed to draw no more than 10mW -- more than two orders of magnitude less power. 21:46:16 RISCs can be made superscalar, but MISCs can have their execution rates driven through the roof. 21:46:31 The need for both pipelining and superscalability is eliminated. 21:47:00 hmm 21:47:25 problem is the whole stack based thing wouldn' 21:47:27 Also, subroutine overhead is negligable too. MISC chips often have only a 2-cycle penalty to invoke a subroutine (one for the call, one for the return). 21:47:29 t work for my purposes 21:47:45 Why not? 21:47:50 (just curious) 21:48:40 it just wouldn't *g 21:48:50 it takes some large amount of explaining 21:49:09 I wish everything I did used a stack. It'd make much of my programming life easier. 21:49:30 Heck, I wish I had a computer that just plain ran Forth as its host OS. I don't even care if it used the host CPU efficiently. 21:49:33 mine would require registers 21:49:42 buy a mac 21:49:45 OF is forth 21:49:51 warp0x00: But OF isn't its OS. 21:49:58 you could make it be 21:50:30 Besides, $3000 for a machine that my existing PC is already capable of matching (for my needs) is just a waste of money that I don't have. 21:51:04 * arke wants a mac 21:51:20 how do you tell gforth to load a file? 21:52:09 oh, nvm, got it :) 21:55:16 I think a true Forth-box would need to be ultimately hackable. 21:56:06 This would mean a custom stack CPU (which is very easily put into an FPGA), with custom peripheral devices on the motherboard, all fully and openly documented (this would be a nice use of opencores.org) 21:56:54 Ideally, I'd like to use asynchronous logic of course, but I think a clock would be the simplest solution to implement. 22:03:08 kc5tja: gimme a gforth word that: 22:03:46 says something, gets user feedback, sees if feedback is an existing file, YES: open file, call word NO: error exit 22:04:10 i dont get gforth :) 22:04:23 huh? 22:04:30 There is no word to do that. 22:04:36 eck 22:04:37 make one 22:04:48 eck 22:04:51 alright 22:05:06 Okay, hold on a moment. 22:05:38 You really want it to open the file and then call another word? 22:05:59 what should i have it do instead? :) 22:06:08 how do i get a string from stdin? 22:06:09 Well, what word would you have it call? 22:06:12 (teh word) 22:06:17 I told you before: ACCEPT. :) 22:06:42 : get-file ." Please enter filename: " ACCEPT ; 22:06:56 no, you have to provide a buffer for it to ACCEPT into. 22:07:03 ack. 22:07:03 CREATE someBuffer 22:07:09 100 ALLOT 22:07:22 : get-file ." Please enter filename: " someBuffer 100 ACCEPT ; 22:07:38 The result of ACCEPT is the length of the string actually placed in the buffer. 22:07:51 Forth doesn't deal with high-level strings like BASIC or Perl does. 22:07:57 ok :) 22:08:26 C string = "........\0" 22:08:36 S string = len "......" 22:08:37 right? 22:08:58 Well, more or less. 22:09:08 Modern ANSI Forths use two values on the stack to describe a string. 22:09:14 An address, and a length. 22:09:19 (usually in that order) 22:09:27 (note the someBuffer 100 above) 22:11:28 well, i guess i can just make some nice string-handling words really quick 22:11:29 :) 22:12:37 Here's an untested implementation for your request: 22:12:52 : openError ." File didn't open; does it exist?" cr ; 22:13:01 : exists? r/o bin open-file 0= ; 22:13:07 create fnbuf 100 allot 22:13:17 : filename fnbuf 100 accept fnbuf swap ; 22:13:25 : prompt ." Please enter a filename: " ; 22:13:45 : FileOpen prompt filename exists? IF execute ELSE openError THEN ; 22:14:08 Usage: : test ['] someWord FileOpen ; 22:14:19 note that someWord is responsible for closing the file there-after. 22:14:29 Oops -- I forgot a swap in FileOpen 22:14:32 It should read this: 22:14:49 : FileOpen prompt filename exists? IF SWAP EXECUTE ELSE openError THEN ; 22:15:12 someWord is called with the filehandle on the data stack. 22:22:35 night 22:22:38 --- quit: arke ("leaving") 22:24:54 Hmm...I wonder how asynchronous logic would work in a delta-sigma pulse-width modulated 1-bit DAC application.... 22:25:42 It seems pretty easy to make a D-S modulator, but to get 16-bit precision at 10kHz frequency, you need 655.36MHz clocking for it. 22:28:48 --- quit: Sonarman ("leaving") 22:46:22 Well, I'm off to bed. 22:46:31 --- quit: kc5tja ("THX QSO ES 73 DE KC5TJA/6 CL ES QRT AR SK") 23:59:59 --- log: ended forth/03.11.04