00:00:00 --- log: started forth/04.09.21 00:01:56 I still don't see the need for 8 instruction forms just for the 32-bit instruction length. :) 00:02:07 (BTW, are you planning on also emulating the Thumb instructions too?) 00:02:18 kc5tja: what do you mean instruction forms? 00:02:36 Herkamire: The PowerPC has something like 4, maybe 5, different physical bit-level encodings for instructions. 00:02:37 like where the operands are encoded into the instruction? (and how many operands) 00:02:48 more than that 00:03:06 I strongly doubt that. 00:03:17 I wrote the assembler in herkforth... 00:03:26 The last I looked in the PowerPC Platform Reference, I saw only a small handful of distinct binary encodings listed. 00:03:39 block transfer, two families that do multiply, status reg transfer, halfword/signed transfer, 00:03:52 (7 so far) 00:04:08 jim: The halfword transfers are different binary encodings than full-word transfers? 00:04:15 I have a word to compile each form that I use. I have 7 such words. 00:04:17 (if so, WHY?! That's rediculous.) 00:04:40 umm, I have no idea for why :) 00:04:49 but two are to handle the switched order of operands for "logical" operations. 00:04:52 --- join: zardon (~zardon@S0106000d6151238b.gv.shawcable.net) joined #forth 00:05:00 so you could call it 5 forms I suppose. 00:05:06 hello 00:05:11 Herkamire: That's more like it. :) I do consider them the same forms. 00:05:20 Although I also see your point of view too. 00:05:20 there's also cmp though. which does not use one of those 00:05:38 sc is different 00:05:46 ppc asm?~ 00:06:07 zardon: yeah, we're talkng ppc asm 00:06:10 nice 00:06:15 lets get it on~~ 00:06:15 RISC in general. 00:06:17 the halfword/signed stuff have less options than the full word 00:06:28 * kc5tja was shocked to learn that it had 7 forms, and ARM has at least 8. 00:06:40 The S/390 CPU has *4* forms. Period. :) 00:06:42 but actually, the bit forms between the two are -very- similar 00:08:04 I rather like how the S/360 instruction set behaves. There are two bits dedicated specifically to telling the CPU how long the instruction is. :) 00:08:09 (e.g., which form it uses) 00:08:30 Which is nice, because many CPU instructions have a short and long form. 00:10:26 --- quit: mur (Read error: 110 (Connection timed out)) 00:12:00 kc5tja: ppc asm has many forms if you cound the reserved bits they stick here and there 00:12:10 but it's pretty easy to lump them in with a field 00:13:25 I find that PPC's instructions are very regular, even considering reserved fields. 00:14:23 i have spent alot of time working with regularity it hopes of getting a simple disassembler 00:17:50 Dude, all I can say is, even with 8 instruction forms, it's still way, way, WAY, **WAY** better than x86. 00:18:04 Criminey, except for 8 basic ALU operations, literally *each* instruction is almost its own form. 00:18:08 *sighs* 00:18:30 it looks like there is a great deal of similarity between at least those two instruction families 00:19:18 Which two instruction families are you referring to? 00:19:41 390/360? 00:19:43 Anyway, all I can say is that the Kestrel's CPU is likely to be an ARM-class processor (quite likely an ARM9). 00:19:46 also, SoftWareInterrupt and Undefined are two families, and there are three coprocessor-supportive families 00:20:03 the full-word and half-word transfers 00:20:09 jim: Ahh, gotcha. 00:21:54 there are also some similarity between that and the data processing (and, or, xor, move, add, add w/carry, sub, sub/borrow, tst, teq, cmp cmn, others I'm forgetting) 00:22:11 all those in parens are in the data processing family 00:22:15 zardon: The S/360 has something like 254 instructions, and all conform to the RR, RI, RX, or XI (<-- unsure about the last one, but it seems right.) 00:23:40 The modern Systems 370+ all have more than 254 instructions, and make extensive use of prefix bytes. Which, I suppose, adds another chunk of 4 "forms". But I don't consider those forms per se -- whether the opcode is one or two bytes long is an implementation detail to me. 00:24:25 the one thing I really liked about the arm, is that every instruction is conditionally executed, on one of 15 different conditions (one of which is "always") 00:24:34 Right. 00:24:42 That's one area in particular that I need to learn more about. 00:24:51 Does each flag also have a compliment? 00:25:09 ok, here's the deal: 00:25:09 How does one test for compound conditions (e.g., greater than or equal to)? 00:25:19 wait, I have a better idea 00:26:08 there are four bit flags in the CPSR that are used to find the condition, zero, carry, sign, overflow 00:26:54 and the following colon definitions are what I use in the simulator to calculate whether the instruction should be run: 00:27:24 : ALWAYS-CONDITION 1 ; 00:27:24 : EQ-CONDITION ZERO-BIT ; 00:27:24 : NE-CONDITION ZERO-BIT NOT ; 00:27:24 : CS-CONDITION CARRY-BIT ; 00:27:25 (And, IIRC, those four flags are laid out in exactly the same order as in the 6502, since the ARM engineers were absolutely [and rightly] enamored with the 6502's simplicity. But, I digress.) 00:27:41 : CC-CONDITION CARRY-BIT NOT ; 00:27:41 : MI-CONDITION SIGN-BIT ; 00:27:41 : PL-CONDITION SIGN-BIT NOT ; 00:27:52 : VS-CONDITION OVERFLOW-BIT ; 00:27:53 : VC-CONDITION OVERFLOW-BIT NOT ; 00:28:13 : HI-CONDITION CARRY-BIT ZERO-BIT NOT AND ; 00:28:13 : LS-CONDITION CARRY-BIT NOT ZERO-BIT OR ; 00:28:26 : GE-CONDITION SIGN-BIT OVERFLOW-BIT = ; 00:28:26 : LT-CONDITION SIGN-BIT OVERFLOW-BIT = NOT ; 00:28:26 : GT-CONDITION ZERO-BIT NOT SIGN-BIT OVERFLOW-BIT = AND ; 00:28:26 : LE-CONDITION ZERO-BIT SIGN-BIT OVERFLOW-BIT = NOT OR ; 00:28:29 OK, but I'm confused. Why are you posting all this level of detail? 00:28:38 I just don't see the point of all this yet. 00:28:48 you posed the question :) 00:28:55 I know I posed the question. 00:28:58 you said you needed to know 00:28:58 It's the answer that I'm confused about. 00:29:12 I don't see how the answer you give answers my question. 00:29:34 one of these words is selected by a 4-bit field at the top of the instruction 00:29:42 GOTCHA. 00:29:50 and that's how the condition code is selected 00:29:51 OK. So there are no predicate bits or anything like that. 00:29:54 Just pre-defined condition codes. 00:30:10 * kc5tja thought that there were predicate bits that could be individually set. 00:30:19 I'm not sure what predicate bits are... 00:30:29 1-bit 'registers' which are either true or false. 00:30:34 but there are the zero, carry, sign and overflow bits 00:30:34 You set them with a CMP-like instruction. 00:30:43 yes, those are there. 00:31:08 CMP P4, R4 LE R3 ; P4 is set true if and only if R4 <= R3. 00:31:20 JMP P4,DoSomething ; jump only if P4 is set. 00:31:35 AND the top few condition codes can be used to predicate on just a single one of those 00:32:00 But...wait...there is only a 4-bit predicate field. 00:32:05 yes 00:32:10 That means only one of the 16 pre-defined condition codes can be used. 00:32:14 yes 00:32:19 All 16 are predefined, counting your :-definitions above. 00:32:31 Yet you also claim that there are programmable predicate registers too. 00:32:32 How? 00:32:38 There is no room to use them! 00:32:54 no, I don't know what predicate registers are :) 00:33:01 --- join: snowrichard (~richard@adsl-068-209-159-248.sip.shv.bellsouth.net) joined #forth 00:33:05 hello 00:33:11 here's what I'm saying: 00:33:32 I explained them above, and you said, "yes, those are there." 00:33:51 - there is a single register in the chip, 32 bits, four of which are zero, carry, overflow, sign 00:33:53 Predicate registers are just a set of 1-bit registers, loaded by compare instructions. 00:34:13 Fine -- I already know about those. 00:34:14 :) 00:34:14 no, this isn't that precisely 00:34:24 OK, That's what was misleading to me. :) 00:34:50 wht I thought you meant is these bits 00:35:00 No, those are condition flags registers. 00:35:09 err....condition flags. 00:35:14 ok, good enuf 00:35:21 They're not registers as such, because you cannot directly load them with programmable values. :) 00:35:57 well, you actually can, but doing so isn't good form... there is MRS and MSR instructions 00:36:17 but they are not -assignable- 00:36:55 meaning you can't say "I want this bit to hold the result of R6 > R7" 00:37:15 --- quit: snowrichard (Client Quit) 00:37:29 --- join: proteusguy (~proteusgu@68-114-24-230.cpe.ga.charter.com) joined #forth 00:38:15 --- join: snowrichard (~richard@adsl-068-209-159-248.sip.shv.bellsouth.net) joined #forth 00:39:24 jim: Well, that's what I mean. Predicate registers are true *registers* -- you can load any value you like into them, as long as it's a single bit. :) 00:39:46 But, anyway, that's neither here nor there. 00:39:52 hehe :) anything you want, as long as it's 1 or 0 00:40:01 it might be there, but it's not here :) 00:40:08 ARM clearly shows its 6502 heritage here, which is plenty good enough. 00:40:43 not just 6502 00:40:48 But they called the top 4 bits a "predicate field," which led me to believe they used proper predicate registers instead of fixed interpretation of control codes. 00:41:47 I had never heard of predicate regs before now 00:42:38 They are used high performance RISC and VLIW processor architectures. 00:43:02 PowerPC doesn't have true predicate registers, BUT, it does have assignable fields in the control register, which basically does the same thing. 00:43:30 The need to have distinct predicates is to allow better compiler optimization of code and to minimize pipeline interlocks. 00:43:34 Hence, faster code. 00:45:48 btw, except for "AL" (always), the colon defs are in order of numeric code assigned, starting from 0 (so EQ is 0, NE is 1, ... , GT is C. LE is D and ALways is E 00:46:16 ) 00:46:55 What is F? 00:47:21 not assigned afaik 00:47:30 Interesting. And wise. 00:47:43 It gives them an "escape" to use for additional instruction forms if they want. 00:48:08 they already have that, in the form of the undefined family 00:48:14 --- nick: mur_ -> mur 00:48:26 and you don't sacrifice the functionality of the condition field to get that 00:48:35 You can never have too many back-doors. :) 00:49:01 One way the undefined family is used, is for coprocessor instructions 00:49:22 So there is one undefinied family, and three dedicated just for coprocessors? 00:49:27 So a total of four "undefined" families? 00:49:28 yes 00:49:48 well, the coprocessor stuff is not undefined, they're specific 00:50:02 they do things like transfers between coprocessors 00:51:11 I think the way it works, is if you have an undefined instruction, each coprocessor has a chance to say "I don wanna run that" 00:52:36 you asked about whether I'll be simulating the thumb instruction set, and the answer is in the far, distant future, maybe :) 00:52:46 Gotcha. 00:52:52 I heard a lot of bad things about the Thumb set anyway. 00:53:01 Primarily, that it is a major pain to work with. 00:53:17 it doesn't look easy to me either 00:53:23 If I make an ARM-based Kestrel, which seems highly likely in the future, I will be using only the 32-bit instruction set of the ARM. 00:55:04 I just looked closer at the instruction that switches between them, and it looks like it has another use: 00:56:17 you can use it as a "branch to the place in that reg"; bit0 of that reg determines if thumb or arm 00:57:01 which makes it useful for arm too; I thought it switched always but it doesn't 00:57:53 * kc5tja nods 00:57:59 Just don't have an off-by-one error while branching. :) 00:58:12 I assume that bit 1 of the operand is ignored then. 00:59:09 so that gives you 4 or 5 ways to branch: using branch, using branch with link, using branch & exchange, using a LDR instruction whose dest is the program counter, using a data processing instr whose dest is the program counter 00:59:25 What does branch and exchange do? 00:59:47 jumps to the location in a particular register 01:00:10 bit0 of that reg determines arm or thumb 01:00:13 But what does it exchange? 01:00:14 :) 01:00:45 * jim wonders if there will be a leg coprocessor, and a toe 01:01:14 Somehow, ARM processors in Palms seems like a natural fit. 01:01:15 :) 01:02:10 while this isn't too much of a hinderance, arm does not have call or ret 01:02:25 Neither do any RISC machines. 01:02:37 well, the novix did :) 01:03:33 set hi bit, that was a call... the last instruction set a certain bit, that was (among everything else) a return 01:03:39 I'm not sure I would classify that as a RISC though. :) 01:03:41 --- quit: Herkamire ("I'm going to fall asleep instantly I think") 01:03:48 kc5tja: all jumps? How does one get the instruction pointer for a return jump? 01:04:08 Jump "And link" instructions. They store the "return" address in a register of some kind. 01:04:10 imaginator: there is a branch with link 01:04:47 You can branch back to the return address by either an explicit "branch to link" (PowerPC; note not the same as branch and link), or by reloading the PC directly with the return address (e.g., ARM). 01:05:02 if the subroutine called is to nest, you push the link reg onto a return stack whose pointer is a register you can specify 01:05:35 you could use the branch and exchange to do the return 01:05:37 More generally, RISC machines do not have push-down stacks. They can all be implemented purely in software. 01:05:55 jim: I still don't know what BAX (for lack of better name) is exchanging though. 01:06:20 the exchange part must refer to allowing you to switch to thumb 01:07:44 thats it i believe 01:08:36 but anyways, that other part is all I know about the condition codes 01:09:55 Speed is sometimes claimed as a benefit of RISC. What is particular makes RISC perform better than CISC? 01:10:02 is/in 01:10:58 since the instruction set is reduced, it does less in each instruction. maybe as a consequence you can clock it faster 01:11:20 it's also arranged in different ways 01:11:59 for example, some chips have specific bits that always do certain things no matter the instruction 01:12:26 the best example I know for that is the novix 01:17:16 it had a special forth with a smart compiler that could detect adjacent low-level words and combine them into single instructions 01:17:40 Since the instruction is reduced, it uses less transistors to get the job done, and therefore, can be clocked faster while still consuming less power. 01:18:57 --- quit: zardon ("leaving") 01:18:58 ahh, I see... and novix is also a great example of that... it had 4000 transistors 01:19:05 thanks jim and kc5tja for explaining 01:19:18 n/p 01:19:29 n\p 01:19:35 Well, it's also how you arrange them too. 01:19:47 The 6502 has about 4000 transistors too. (more or less) :) 01:19:53 But it won't touch a Novix. 01:19:57 No matter how hard you try. 01:20:01 not a chance :) 01:20:37 the novix also had separate hardware memory interfaces for main mem, data stack and return stack 01:20:49 yep. 01:21:01 ultimate Harvard architecture. 01:21:03 so it could scream 01:21:50 At the time, Jeff was talking about novixes that could be clocked at 1/4 the speed of a cray 01:22:45 That'll be in the 20MHz to 50MHz range, depending on the Cray model at the time the Novix came out. 01:23:19 so my 2.8g intel is already faster? :) 01:23:55 Your 2.8GHz Intel CPU is about 3x faster than the latest Cray supercomputer, in terms of non-vector Integer performance. 01:24:06 You're not going to beat it at vector operations though. :) 01:24:30 for that, I'd need a good video card :) 01:24:59 Actually, your video card alone can probably approach a modern Cray with quite a bit of respect. 01:26:37 but only windows drivers know how to access that stuff 01:28:35 btw, you want to see this simulator while it's in progress? 01:29:03 I have the tla commands you'd need in front of me 01:29:18 I'm at work now. 01:31:34 Just out of curiosity, why did you decide to write an emulator for the ARM? Or at all? :) 01:33:28 I went to an SVFIG meeting about a month or two ago, and C H Ting was there, talking about the instruction set... they were talking about playing with the chip and some people had evaluation boards but the tools were only available thru windows 01:33:59 Gotcha. 01:34:21 so I decided to write a simulator people at the meeting could use to decide if they liked it 01:35:15 and if it were portable enough to other (standard) forths, it would be easy to get running on their favorite flavor 01:36:20 * kc5tja nods 01:36:26 Speed be damned, it will work. :) 01:36:51 heh, the simulator is probably not the most efficient fish in the sea 01:37:37 but it uses standard words 01:37:51 * kc5tja nods 01:37:59 Get it right first. Make it fast later. 01:39:36 * kc5tja just wishes that there was a good DIP-packaged processor that us hackers can use. 01:39:46 I really don't like the idea of hacking with surface mount components. 01:41:36 yeah, that stuff is -not- easy to work with 01:44:53 --- quit: imaginator ("sleep") 01:50:38 The evaluation board is pretty nice tho, it has an arm chip, a serial port and a JTag debugging interface, as well as direct digital ins and outs and on the board I saw, several analog ins and outs too, all brought out to pins you could wirewrap to 01:57:00 --- quit: mur (Read error: 60 (Operation timed out)) 01:57:01 brb -- lunch -- making food 01:57:16 Lunch? Heh. I just had lunch. 02:03:37 --- quit: Frag-101 (Remote closed the connection) 02:15:26 back 02:15:31 Hi 02:15:32 Yep, Lunch. :) 02:15:43 Odd time for lunch, isn't it? 02:15:47 Gee, Robert -- we're almost on the same schedule. :) 02:15:54 Robert: I work graveyard shift now, remember? 02:16:01 Oh.. right. 02:16:06 --- join: Frag-101 (XINU@12-222-128-22.client.insightBB.com) joined #forth 02:16:19 :) 02:16:25 * Robert will leave for school in a while. Overslept, so missed the lectures. 02:16:36 doh 02:16:41 TIme to get to the labs, then? :) 02:16:43 kc5tja: would you like an email with an intro and pointers? 02:16:45 No big loss. 02:17:01 jim: Intro to the ARM emulator? Sure. 02:17:08 ok, address? 02:17:23 Endless "ONE IS AN INTEGER AND YOU NEED TO USE YOUR MOUSE TO PROGRAM" rants in the Java class, and pretty basic math in the algebra class. 02:17:49 NEED to use your mouse to program -- in JAVA?! 02:18:05 Yes! We have to use some silly tool 02:18:08 I use my mouse for annoying cats :) 02:18:11 * kc5tja doesn't know whether to laugh or cry. 02:18:32 jim: They chase the pointer on the screen? :D 02:18:32 kc5tja: And you're not even forced to DO it. 02:18:43 Speaking of which, I still haven't made the homework until today. 02:19:08 Because the idiots won't hand it out, and the book they refer to was out of stock, and when it returned I couldn't afford it. 02:19:11 I know this one cat, it chases laserpointers :) 02:19:12 You should tell her how to do the homework using only the keyboard. 02:19:35 jim: Every cat does that in my experience. 02:19:57 it was a first for me 02:20:06 Hehe D 02:20:07 :D 02:20:13 Cats, I find, *love* laser pointers. 02:20:19 Heck, *I* like laser pointers. :D 02:20:35 I need to get one.. Still have some optics experiments to do 02:20:38 just have to be cautious about the angle 02:20:55 * kc5tja wishes he had one. Don't know what I'd use it for, and I certainly cannot justify the expense. But, still . . . the GEEK factor! 02:21:20 Yeah, they're pretty geekish again. 02:21:30 When all the little kids threw away theirs ;) 02:21:50 * kc5tja actually has a more noble expense coming up at some point, I think. 02:22:02 I'd like to make a computer-controlled one. 02:22:14 Imagine PSK31 over laser ;) 02:22:26 Robert: Hey, any old LED would work for that. :D 02:22:40 Yeah, I know... I will do that first. 02:23:02 Although, if I were to implement a free-space optical network of some kind, I'd definitely make it at least 9600bps. 02:23:10 But you can't get a mrad beam from a LED 02:23:14 Probably push it to 115200bps, frankly. 02:23:21 mrad? 02:23:32 Divergence..millirad 02:23:35 ian 02:23:51 While my LEDs have at best like +/- 10 degrees 02:24:00 * kc5tja is planning on moving his compact flourescent to his overhead lamp, and replacing his table lamp with a home-brew LED lamp, powered by rechargable batteries, and solar recharged (long term goal) 02:24:31 Oh, well, that's what lenses are for. The laser diodes just have lenses built in to them. :) 02:25:04 Well, I have no idea how to build a good external lens system. 02:25:17 Probably would cost way more than a laser pointer anyway. 02:26:38 --- join: mur (~mur@mgw2.uiah.fi) joined #forth 02:30:27 Fun. The Internet services of my bank will only work with Windows. 02:30:30 THAT is security 02:30:37 :) 02:30:38 yes 02:30:45 Time to not use the automated systems anymore. 02:30:49 do yo uuse sparbank? 02:30:50 Oh, hi mur 02:30:57 mur: No, Handelsbanken. 02:31:02 oh 02:31:04 evilness 02:31:05 Alternatively, you could run their software under WINE. :D 02:31:11 They're all evil. 02:31:18 kc5tja: Heh... Naaah ;) 02:31:37 Hrm, got to look up how much they charge for NOT using the Internet. 03:18:11 --- join: mur_ (~mur@mgw2.uiah.fi) joined #forth 03:19:00 --- quit: mur (Read error: 60 (Operation timed out)) 03:43:52 --- join: crc (crc@129-pool1.ras11.nynyc-t.alerondial.net) joined #forth 04:07:05 --- quit: crc (Client Quit) 04:21:10 --- join: wossname (~wossname@rn-v1w5a06.uwaterloo.ca) joined #forth 04:26:48 --- quit: Frag-101 (Read error: 110 (Connection timed out)) 04:55:43 --- quit: wossname (Read error: 113 (No route to host)) 05:07:40 --- join: wossname (~wossname@rn-v1w5a06.uwaterloo.ca) joined #forth 05:17:33 --- quit: warp0b00 (Excess Flood) 05:18:17 --- join: warp0b00 (~warpzero@mi065.dn185.umontana.edu) joined #forth 05:38:40 --- quit: warp0b00 (Read error: 110 (Connection timed out)) 05:42:02 --- join: warp0b00 (~warpzero@mi065.dn185.umontana.edu) joined #forth 05:51:38 --- quit: warp0b00 (Excess Flood) 05:52:21 --- join: warp0b00 (~warpzero@mi065.dn185.umontana.edu) joined #forth 05:56:13 --- quit: ianp (Read error: 60 (Operation timed out)) 05:56:48 --- quit: snowrichard ("Leaving") 06:06:23 --- quit: warp0b00 (Excess Flood) 06:07:13 --- join: warp0b00 (~warpzero@mi065.dn185.umontana.edu) joined #forth 06:15:02 --- quit: warp0b00 (Excess Flood) 06:15:57 --- join: warp0b00 (~warpzero@mi065.dn185.umontana.edu) joined #forth 06:19:50 --- quit: warp0b00 (Excess Flood) 06:20:38 --- join: warp0b00 (~warpzero@mi065.dn185.umontana.edu) joined #forth 06:31:14 --- nick: arke|zZzZ -> arke 06:38:29 --- quit: warp0b00 (Excess Flood) 06:41:42 --- join: warp0b00 (~warpzero@mi065.dn185.umontana.edu) joined #forth 07:02:33 Hey, I'm on my way home. I'll be back at keyboard shortly. 07:25:50 --- quit: warp0b00 (Excess Flood) 07:33:27 --- join: warp0b00 (~warpzero@mi065.dn185.umontana.edu) joined #forth 07:34:21 --- quit: warp0b00 (Excess Flood) 07:35:30 --- join: warp0b00 (~warpzero@mi065.dn185.umontana.edu) joined #forth 07:40:29 --- quit: warp0b00 (Excess Flood) 07:41:13 --- join: warp0b00 (~warpzero@mi065.dn185.umontana.edu) joined #forth 07:44:26 --- quit: mur_ (Remote closed the connection) 07:45:16 --- join: mur (~mur@smtp.uiah.fi) joined #forth 08:10:37 --- quit: warp0b00 (Excess Flood) 08:14:19 --- join: Frag-101 (XINU@12-222-128-22.client.insightBB.com) joined #forth 08:18:18 --- join: warp0b00 (~warpzero@mi065.dn185.umontana.edu) joined #forth 08:18:26 --- quit: warp0b00 (Excess Flood) 08:19:23 --- join: warp0b00 (~warpzero@mi065.dn185.umontana.edu) joined #forth 08:26:52 --- quit: warp0b00 (Excess Flood) 08:27:48 --- join: warp0b00 (~warpzero@mi065.dn185.umontana.edu) joined #forth 08:34:05 --- nick: proteusguy -> proteusguy-lunch 08:35:20 --- join: mur_ (~mur@kyberias.uiah.fi) joined #forth 08:45:52 --- quit: mur (Read error: 110 (Connection timed out)) 08:51:24 --- quit: warp0b00 (Excess Flood) 08:52:11 --- join: warp0b00 (~warpzero@mi065.dn185.umontana.edu) joined #forth 08:56:50 --- quit: warp0b00 (Excess Flood) 08:57:42 --- join: warp0b00 (~warpzero@mi065.dn185.umontana.edu) joined #forth 09:12:26 --- join: arke-school (apache@11.198.216.81.dre.siw.siwnet.net) joined #forth 09:13:46 --- nick: proteusguy-lunch -> proteusguy 09:25:00 --- join: tgunr (~davec@vsat-148-63-4-107.c001.g4.mrt.starband.net) joined #forth 09:31:42 --- nick: proteusguy -> proteusguy-adios 09:33:41 --- join: qFox (C00K13S@82-169-140-229-mx.xdsl.tiscali.nl) joined #forth 09:44:11 --- quit: mur_ (Remote closed the connection) 09:45:14 --- join: mur (~mur@kyberias.uiah.fi) joined #forth 09:47:01 --- quit: qFox ("this quit is sponsored by somebody!") 09:48:38 --- join: qFox (C00K13S@82-169-140-229-mx.xdsl.tiscali.nl) joined #forth 09:59:55 --- quit: arke-school ("CGI:IRC (EOF)") 10:19:07 --- join: Herkamire (~jason@h000094d30ba2.ne.client2.attbi.com) joined #forth 10:19:07 --- mode: ChanServ set +o Herkamire 10:31:26 well, what do you know! the pearpc-dev list had a decent explanation as to why I can't store to the framebuffer 10:32:12 aparently I'm getting the real, physical addrress to the frame buffer, but pearpc has address translation on (by default anyway) so I can't just store there 10:33:39 --- quit: warpzero (Read error: 110 (Connection timed out)) 10:34:27 --- join: warpzero (~warpzero@dsl.103.mt.onewest.net) joined #forth 10:45:36 --- join: mur_ (~mur@uiah.fi) joined #forth 10:51:57 --- quit: warp0b00 (Excess Flood) 10:56:59 --- join: Topaz (jonny@spc1-horn1-6-0-cust217.cosh.broadband.ntl.com) joined #forth 10:57:13 --- quit: mur (Read error: 110 (Connection timed out)) 11:00:24 --- join: warp0b00 (~warpzero@mi065.dn185.umontana.edu) joined #forth 11:38:55 --- quit: wossname (Read error: 113 (No route to host)) 11:44:17 --- quit: mur_ (Remote closed the connection) 11:45:33 --- join: mur (~mur@mgw2.uiah.fi) joined #forth 11:53:05 --- join: proteusguy (~proteusgu@68-114-24-230.cpe.ga.charter.com) joined #forth 11:54:07 --- quit: proteusguy-adios (Read error: 104 (Connection reset by peer)) 12:02:30 --- join: wossname (~wossname@rn-v1w5a06.uwaterloo.ca) joined #forth 12:09:32 --- join: _proteus (~proteusgu@68-114-24-230.cpe.ga.charter.com) joined #forth 12:10:07 --- quit: proteusguy (Read error: 104 (Connection reset by peer)) 12:14:08 --- join: tathi (~josh@pcp02123722pcs.milfrd01.pa.comcast.net) joined #forth 12:20:29 --- nick: _proteus -> proteusguy 12:26:18 --- join: arke-school (apache@11.198.216.81.dre.siw.siwnet.net) joined #forth 12:43:05 --- join: mur_ (~mur@uiah.fi) joined #forth 12:43:43 --- quit: mur (Read error: 60 (Operation timed out)) 12:45:20 --- quit: proteusguy (Read error: 54 (Connection reset by peer)) 12:51:49 --- quit: arke-school ("CGI:IRC (EOF)") 12:52:07 --- join: arke-school (apache@11.198.216.81.dre.siw.siwnet.net) joined #forth 12:52:11 --- join: proteusguy (~proteusgu@68-114-24-230.cpe.ga.charter.com) joined #forth 12:56:57 --- quit: arke-school (Client Quit) 13:05:15 lol :) look at this idea for the PearPC logo: http://www.damos.ch/pearpc1.jpg 13:05:15 --- quit: proteusguy (Connection reset by peer) 13:06:54 --- join: proteusguy (~proteusgu@68-114-24-230.cpe.ga.charter.com) joined #forth 13:08:20 --- quit: Robert ("Suicide (...I hope not)") 13:15:24 --- quit: tgunr ("Leaving") 13:19:22 * qFox mumbles apple 13:22:11 --- quit: Frag-101 (Remote closed the connection) 13:27:04 * fridge loudly exclaims banana 13:48:55 * tathi proclaims kumquat from the rooftops 13:50:15 * Herkamire mumbles eggplant under his breath 14:02:39 --- quit: warp0b00 (Excess Flood) 14:03:48 --- join: warp0b00 (~warpzero@mi065.dn185.umontana.edu) joined #forth 14:08:07 --- quit: warp0b00 (Excess Flood) 14:08:53 --- join: warp0b00 (~warpzero@mi065.dn185.umontana.edu) joined #forth 14:18:16 --- quit: qFox ("this quit is sponsored by somebody!") 14:21:38 --- join: tgunr (~davec@vsat-148-63-4-107.c001.g4.mrt.starband.net) joined #forth 14:31:32 --- quit: juhammed (Read error: 104 (Connection reset by peer)) 14:35:57 --- join: juhammed (~o@dsl-olugw3p33.dial.inet.fi) joined #forth 14:48:04 --- quit: proteusguy ("The #python split is remarkably silly...") 14:57:01 --- join: arke-school (apache@11.198.216.81.dre.siw.siwnet.net) joined #forth 15:00:36 --- quit: arke-school (Client Quit) 15:01:55 --- quit: wossname (Read error: 110 (Connection timed out)) 15:06:44 --- join: Robert (~snofs@c-bf5a71d5.17-1-64736c10.cust.bredbandsbolaget.se) joined #forth 15:10:01 hmm, here's a stupid challenge, heh 15:10:05 writing a USB stack in FORTH 15:10:11 USB? 15:10:15 That's too modern for me. ;P 15:10:28 well, i want to bitbang USB with a uC 15:10:39 But I will do my best to code some utterly useless project in Forth. 15:10:45 haha 15:11:05 Perhaps an IR transmitter that I can place in the woods, and it will send me "DUP DROP DUP DROP" in morse. 15:11:25 i could write a USB stack in assembly, but my brain is still recovering from my last assembly project 15:11:49 (the game-of-life in assembly was harder than I anticipated, with the cells bit-packed into bytes) 15:11:51 Heh, which is? 15:11:57 Oh, fun. 15:12:03 works :D 15:12:04 bit slow though 15:12:05 Trying to get a fast implementation? 15:12:17 Or just a large field? 15:13:03 well, 20x24 field (not exactly large) 15:13:13 16mhz AVR, 512 bytes of SRAM 15:13:42 i bit-packed the field into 60 bytes 15:13:44 May I ask why the hell you implemented game of life on an AVR? 15:13:51 Even I think that's weird. 15:13:55 i also have a homemade 480-LED matrix attached to it :D 15:14:31 i have a horrendously bad video somewhere 15:14:52 http://81.99.124.217/test.avi 15:15:06 apologies, the webcam that took it doesn't have a constant framerate (which is a bit silly) 15:15:13 so it looks dreadful :D 15:15:35 the first 8 rows aren't working in that picture, but i've now wired up 5 of them 15:16:03 the pattern being the 'pulsar' 15:17:23 OK, one sec. 15:18:05 debugging it was interesting... it either works or it doesn't ;) 15:18:23 but fortunately, after correcting a few silly mistakes, the former prevailed 15:19:46 bzip2 is really good, you know. 15:19:56 My IRC logs compressed to just 50MB 15:20:29 (downloading the video) 15:20:33 running out of disk space? ;) 15:20:50 On my cryptoloop, yes. 15:21:10 I plan to store ~2.5 years of IRC logs there, among other things. 15:21:18 I do NOT want other people to read my IRC logs. 15:21:33 i want to try a steganographic filesystem sometime 15:21:51 (although it has inherent disadvantages, such as the likelihood of overwriting data accidently) 15:22:06 though not an issue if you always log-in 15:22:25 Wow. That game of life looks cool 15:22:29 Congratulations on that :) 15:22:34 haha, thanks 15:22:49 the matrix is completely portable 15:22:57 (it's lying on a piece of wood, but isn't held down) 15:23:06 supported entirely by the wires 15:23:23 Yay. 15:23:46 just i very foolishly only bought exactly the right amount of mosfets (64) 15:23:49 and i lost 3 ;) 15:23:54 so 3 rows currently have no drivers 15:24:21 Heh. 15:24:57 You should see this (the IRC/webserver computer), it's full of dead MOSFETs 15:25:05 They're too cute to throw away, so I keep them. 15:25:15 Maybe one day I get a nice idea for a transistor cemetary. 15:25:22 haha 15:25:28 the mosfets i got are insanely small 15:26:08 http://bots_by_jbs.solarbotics.net/sot23_transistors.jpg 15:26:13 (not my picture) 15:26:15 they're rather easy to lose 15:26:16 Oh, SMD stuff? 15:26:37 I have a pretty large heap of 2N7000s, in TO92 packages 15:36:58 --- quit: warp0b00 (Excess Flood) 15:38:25 --- join: warp0b00 (~warpzero@mi065.dn185.umontana.edu) joined #forth 15:46:27 --- quit: tathi ("volleyball") 16:13:51 --- join: saon (Ecoder@c-24-129-95-254.se.client2.attbi.com) joined #forth 16:17:32 --- quit: Topaz ("Leaving") 16:29:22 --- quit: warp0b00 (Read error: 104 (Connection reset by peer)) 16:32:24 --- quit: fridge (Read error: 110 (Connection timed out)) 16:33:36 nice! 16:33:51 qemu emulates ppc! 16:34:07 I can't seem to read from the terminal with it 16:34:14 but I can write to the frame buffer 16:34:23 (I'm just running my fractal generator) 16:34:30 it's _way_ faster than pearpc 16:34:50 :) 16:46:59 --- nick: arke -> bent 16:47:33 --- nick: bent -> crw 16:47:49 --- nick: crw -> bent 17:00:48 --- join: Sonarman (~matt@adsl-64-169-92-234.dsl.snfc21.pacbell.net) joined #forth 17:00:57 --- join: warp0x00 (~warpzero@mi065.dn185.umontana.edu) joined #forth 17:01:29 argh 17:01:36 direct link to dpans, anyone? 17:01:53 nervermind 17:08:26 --- quit: warp0x00 (Client Quit) 17:09:17 --- join: proteusguy (~proteusgu@68-114-24-230.cpe.ga.charter.com) joined #forth 17:12:55 --- join: warp0x00 (~warpzero@mi065.dn185.umontana.edu) joined #forth 17:15:03 --- quit: saon ("Leaving") 17:22:39 --- quit: warp0x00 ("Lost terminal") 17:23:15 --- join: warp0x00 (~warpzero@mi065.dn185.umontana.edu) joined #forth 17:26:06 --- quit: Sonarman (Read error: 110 (Connection timed out)) 17:37:47 Woo, got my tcp Forthy going this afternoon. 17:39:39 hi madgarden_ 17:40:00 hi slava 17:40:34 --- nick: madgarden_ -> madgarden 17:46:16 --- quit: warp0x00 ("Lost terminal") 17:58:54 madgarden, wanna see a mad flood? 17:59:04 ( 1 ) heap-stats. 17:59:04 word: 48704 bytes, 1522 instances 17:59:04 cons: 246256 bytes, 30782 instances 17:59:04 t: 8 bytes, 1 instances 17:59:04 array: 10256 bytes, 120 instances 17:59:06 vector: 1904 bytes, 119 instances 17:59:16 string: 253328 bytes, 4335 instances 17:59:19 sbuf: 64 bytes, 4 instances 17:59:21 port: 168 bytes, 3 instances 17:59:22 bignum: 48 bytes, 3 instances 17:59:24 float: 112 bytes, 7 instances 17:59:57 What's that a dump of? 18:00:06 memory allocation breakdown 18:00:12 For what application? 18:00:14 factor 18:00:24 Running anything? 18:00:37 no, just all the library code etc 18:00:42 Ahh. 18:00:47 Check out my cheap and dirty directory listing... 18:00:47 "dir >temp.txt" system "temp.txt" file.read . 18:00:47 Heh. 18:06:02 im rapidly coming to the conclusion taht the morons who do MUD games are just that.. M O R O N S! !!! 18:06:19 Who "do" them? 18:06:20 if it takes me more than two fsckings econds to see how to connect to a mud game im not instersted 18:06:30 i play mud games but im looking for a new one 18:06:48 I440r, you wre go 18:06:51 ive been to 5 or 6 pages and not a fucking one of them have their games URL and port prominantly displayed 18:06:59 ? 18:07:00 you were gonna write your own mud server? 18:07:04 yes 18:07:09 eventually 18:07:23 in C++? 18:07:29 and when i do the FIRST thing you will see on its web page is how to fucking connection 18:07:31 fuck no 18:07:39 oh you were gonna use algol-68 thats right 18:08:08 --- quit: mur_ (Remote closed the connection) 18:08:13 I've also wanted to make a MUD, or just another text adventure. 18:08:44 that would be fun to code 18:09:01 --- join: mur (~mur@uiah.fi) joined #forth 18:09:25 Yea, for sure. 18:09:40 I wrote a few text adventures when I was a kid... they are quite fun. You get to use your imagination. 18:13:25 --- join: snowrichard (~richard@adsl-068-209-159-248.sip.shv.bellsouth.net) joined #forth 18:15:25 > snowrichard enters. He is wielding a large, rusted broadsword, and carries a worn leather pack from which the jingling of gold issues forth temptingly. 18:16:25 rub the lamp. (Nothing happens) 18:16:57 :D 18:17:04 > arke enters. He is dressed in a green tunic and carries a large bow. 18:17:30 "My, that's a rather girlish bow you have on, sir!" exclaims the drunken sailor. 18:17:57 > madgarden enters. He is wearing a leather police hat and a G-string. He cracks his whip and exclaims, "come here, arke boy!" 18:18:08 > "This is not a dress bow, it is for shooting arrows, you insensitive clod", exclaims arke 18:18:30 > arke is unaffected by the seduction attempt. 18:18:43 > slava enters. He enters with a 12 year old boy, also naked. 18:18:52 :-& 18:19:01 > slava exclaims, `jim banned me from #kiddiepr0n!' 18:19:46 > arke offers the third door on the left, which leads to a bordell 18:20:09 : ?mandel-step >r dupd sq + dup abs 2 < [ r> pred dup CHAR: \s > ] [ r> f ] ifte ; 18:20:09 : mandel-step [ ?mandel-step ] [ ] while >char write 2drop ; 18:20:09 : mandel-x rect> dup CHAR: ~ mandel-step ; 18:20:09 : mandel-y 75 [ dupd 25 / 2 - >float swap mandel-x ] times* drop ; 18:20:11 : mandel 21 [ 10 / 1 - >float mandel-y terpri ] times* ; 18:20:48 > arke threatens to shoot slava with his large bow if slava does not stop talking in the evil tongue of type-safety 18:20:56 lol 18:20:57 --- quit: mur (Remote closed the connection) 18:21:05 --- join: wossname (~wossname@rn-v1w5a06.uwaterloo.ca) joined #forth 18:21:13 my java is getting cold 18:22:03 slava: I don't follow this bit: ">r dupd sq +" 18:22:06 > slava removes his wig to reveal a drilled hole in his cranium and exclaims "arke, i need my daily medication. can you pour this in?" and hands arke a bottle of rubbing alcohol 18:22:09 > wossname enters. He is dressed in a mail shirt, under which he wears a thick leather 3-piece suit. In his belt is a long sheats. 18:22:13 --- join: mur (~mur@uiah.fi) joined #forth 18:22:15 Herkamire, i stropped the stack comments ;) 18:22:19 Herkamire, dupd is >r dup r> 18:22:31 sq is dup * 18:22:38 :o 18:22:45 sheath* 18:23:06 > arke pours the alcohol into the hole, and hands back the bottle 18:23:08 > the lights suddenly go out as mur enters! 18:23:12 ?mandel-step ( x y -- ... 18:23:17 > arke says, "I'm off to work. I will see you later. " 18:23:22 > #forth is likely to be eaten by a grue 18:23:23 > arke leaves due south. 18:23:27 --- nick: bent -> bent|work 18:23:31 :( 18:24:07 got something installed on my web server here finally 18:24:20 php-nuke 18:24:25 slava: what's on the stack when you call ?mandel-step? 18:24:44 : ?mandel-step ( a z c -- a z c ? ) 18:24:44 : mandel-step ( a z c -- ) 18:24:44 : mandel-x ( x y -- ) 18:24:44 : mandel-y ( y -- ) 18:24:44 : mandel ( -- ) 18:24:53 i'm rewriting it right now to be more clear and also to do interactive zooming 18:24:59 (the output is ascii) 18:24:59 what's a? 18:25:03 onec that is done i'm porting to sdl 18:25:36 : mandel-x ( x y -- ) 18:25:37 rect> dup ... 18:25:49 rect> makes complex # with real part x, imaginary part y 18:26:10 its dup'ed then ~ is pushed, so the first time through ( a z c ) is {x,y} {x,y} ~ 18:26:38 oh, I get it 18:26:38 --- join: hefner (~hefner@pool-151-196-21-226.balt.east.verizon.net) joined #forth 18:26:44 hi hefner 18:26:50 hey there 18:26:59 you're in #forth but not in #lisp? 18:27:14 unless this is another hefner :) 18:27:17 what's c? 18:27:23 Herkamire, a character 18:27:26 my brother is learning lisp for emacs extensions 18:27:37 and a is the constant that you add in every iteration? 18:27:41 that's really confusing. 18:27:47 Herkamire, c gets decremented by the ?mandel-step 18:28:20 I've always seen the formula written as: Z_n+1 = Zn^2 + C 18:28:28 slava: yeah, dunno why, don't feel like #lisp 18:28:44 so I thought a would be the Ascii character, and z and c would be from the formula 18:28:50 anyway, I understand your code 18:29:08 seems silly to use complex types though 18:29:16 hehe why? 18:29:23 you think its simpler to implement using reals? 18:29:27 it's gotta at least double the execution time 18:29:37 true 18:29:46 probably way more 18:30:03 eventually there'll be a SufficientlySmartCompiler(tm) 18:30:04 you really don't want to have to compute a square root every iteration 18:30:31 x86 has it on-chip, so its not too slow 18:30:43 70 clock cycles on a pentium 18:30:59 that's a hell of a lot more than nothing 18:31:03 yes 18:31:15 70 cycles is peanuts tho 18:31:46 wossname: not when you're executing millions of times 18:31:54 still peanuts 18:32:31 oops, I mean billions 18:32:57 fullscreen to 1000 iterations, would be about a billion 18:33:04 how many sqrt per pixel? 18:33:08 well, less I guess because you don't do every pixel to max iterations 18:33:24 wossname: 10 to 2000 depending on how far in you go 18:33:39 maybe more in places 18:33:54 yow, i've never seen a mandelbrot written with such a high cost 18:34:07 wossname: what are you talking about? 18:34:20 a billion might be high. 18:34:31 but I bet it gets up to that when you zoom way in 18:34:37 :( 18:35:26 ok, so say it's a quick one. average iterations 100 18:35:32 screen 1024x768 18:35:52 so 78M iterations 18:36:34 so that's an extra 5.4G cycles 18:36:42 too much time 18:36:46 that's a noticeable amount of time 18:36:52 wossname: what's too much? 18:37:03 that would more than double the time it takes to render 18:38:02 a mandelbrot iteration is 3 multiplies, 3 adds and a compair 18:39:17 sorry, hat's 4 mul, 4 add 18:39:54 Herkamire, how accurate is your fixed point algorithm? 18:40:18 16 bits above and below the decimal point 18:40:25 that's just a toy 18:41:05 is fp better? 18:41:55 probably 18:44:45 --- join: Sonarman (~matt@adsl-66-124-254-223.dsl.snfc21.pacbell.net) joined #forth 18:44:57 hi Sonarman 18:45:06 hi 18:49:28 hefner, you work on the clim listener? 18:49:37 slava: yes indeed 18:49:45 hefner, got some cool screenshots? :) 18:49:56 slava: probably.. 18:49:57 * hefner looks 18:58:41 --- quit: Sonarman (Read error: 104 (Connection reset by peer)) 19:16:11 floating point math is supposed to be faster than integer math on ppc 19:17:59 --- join: zruty (~chuck@64-121-15-14.c3-0.sfrn-ubr8.sfrn.ca.cable.rcn.com) joined #forth 19:18:45 hi zruty 19:19:06 hey 19:19:39 slava: http://userpages.umbc.edu/~hefner1/listener-screenshots.html 19:20:20 slava: (I put together an index of all the screenshots lying around the directory) 19:22:10 that's really cool 19:22:17 http://userpages.umbc.edu/~hefner1/mcclim-is-fun.png 19:22:20 i like that :) 19:22:32 I haven't learned floating point asm yet, but here's basically how mandelbrot works in asm 19:22:35 mand_loop: 19:22:38 mull xx, x, x 19:22:40 mull yy, y, y 19:22:43 add xxyy, xx, yy 19:22:46 cmpi xxyy, 4 19:22:48 mull y, y, x 19:22:50 mulli y, y 2 19:22:53 sub x, xx, yy 19:22:56 add x, x, cx 19:22:58 add y, y, cy 19:23:01 blt mand_loop 19:24:36 this won't actually work because it's integer math 19:24:53 i made some words to support C-style enums 19:24:58 have you ever thought of similar? 19:25:00 ENUM= 0 19:25:02 ENUM: red 19:25:04 ENUM: green 19:25:07 ENUM: blue 19:25:08 same as 19:25:10 : red 0 ; 19:25:11 : green 1; 19:25:13 : blue 2 ; 19:25:28 I've seen it done like so: 19:25:29 i need this for the FFI, to ease translation of .h files. but i guess it might be useful on its own some time 19:25:40 0 enum red enum green enum blue ... 19:25:48 : enum dup constant 1+ ; 19:26:19 oh there's an idea 19:26:23 i was using a variable to hold the count 19:26:27 its simpler to have it on the stack 19:26:30 just drop it at the end 19:26:31 yep 19:26:35 yeah, drop at the end 19:27:40 it should be the same number of instructions to do the above in floating point. You'd probably need to load 2 and 4 into registers 19:29:51 once i work on my compiler some more i'll look into making a fast implementation of mandelbrot :) 19:30:03 xxyy and x could share a register if I reorder the instructions 19:30:42 ppc has 32 registers? 19:31:20 32 int registers 19:31:23 32 fp registers 19:31:27 32 vector registers 19:31:35 several special purpose registers 19:31:50 (not all have vector) 19:32:33 --- quit: snowrichard ("Leaving") 19:33:41 at some point after I get my os going well on it's own, I'm going to write an awesome mandelbrot generator 19:33:48 slava, I made an enum that behaves like this: 19:33:48 0 enum{ RED GREEN BLUE } 19:34:08 is that limited to one line? 19:34:56 Of course not. 19:35:08 0 19:35:08 enum{ 19:35:08 RED 19:35:08 GREEN 19:35:08 BLUE 19:35:09 } 19:35:12 if you like 19:35:32 my parsing words can only read ahead within the line 19:35:35 i might change that 19:36:00 You should. It's infinitely useful. 19:36:10 well i don't have many parsing words 19:36:52 I've just got a few. I think I'll add another one for backing up the input. 19:37:09 an "unget" I suppose. 19:37:44 what for? 19:38:30 Well, I may want to reparse something. I might want to do interpretive loops. etc. 19:38:49 loops in interpret mode? 19:38:56 state* 19:44:26 Yep, sure, it would allow such things. 19:44:46 madgarden, i don't have interpret state 19:45:14 Well I didn't say that *you* should be able to unget your input. :P 19:45:22 so i can't have stuff like 19:45:25 : foo ... ; immediate 19:45:35 0 foo bar ( pass 0 to foo and have foo read bar ) 19:51:22 Right. 19:58:53 good night 19:58:56 night! 20:00:27 check this out: 20:00:52 http://paste.lisp.org/display/2749 20:00:56 this is the SDL interface so far 20:01:06 its messy and there's a fair bit of redundancy in the FFI declarations. 20:01:19 i'll be cleaning that up over the next few days, and adding more SDL functions 20:14:25 --- join: mur_ (~mur@kyberias.uiah.fi) joined #forth 20:16:01 --- quit: mur (Read error: 60 (Operation timed out)) 21:09:28 --- join: zardon (~zardon@S0106000d6151238b.gv.shawcable.net) joined #forth 21:20:15 --- quit: mur_ (Remote closed the connection) 21:20:45 --- join: mur (~mur@mgw2.uiah.fi) joined #forth 21:51:17 --- quit: wossname (Read error: 110 (Connection timed out)) 21:52:06 back 21:52:09 --- nick: bent|work -> bent 21:54:56 My parsing words can only read ahead within the current *buffer*. For interactive stuff, it's a line. For blocks, it's a block. 21:57:51 kc5tja: was that meant in the /query..? 21:59:08 --- join: I4404__ (~mark4@216-110-82-203.gen.twtelecom.net) joined #forth 22:12:11 No. 22:15:38 --- quit: I440r_ (Read error: 110 (Connection timed out)) 22:23:02 --- quit: tgunr (Read error: 104 (Connection reset by peer)) 22:24:46 --- join: tgunr (~davec@vsat-148-63-4-107.c001.g4.mrt.starband.net) joined #forth 22:25:24 --- quit: zruty ("leaving") 22:26:57 hiya everybodyh 22:27:06 hello 22:31:17 --- join: mur_ (~mur@uiah.fi) joined #forth 22:39:05 whats up? 22:40:18 --- quit: mur (Read error: 104 (Connection reset by peer)) 22:49:48 --- quit: tgunr (Read error: 104 (Connection reset by peer)) 22:51:02 --- join: tgunr (~davec@vsat-148-63-4-107.c001.g4.mrt.starband.net) joined #forth 23:48:40 --- join: mur (~mur@uiah.fi) joined #forth 23:58:55 --- quit: mur_ (Read error: 238 (Connection timed out)) 23:59:59 --- log: ended forth/04.09.21