00:00:00 --- log: started forth/10.05.14 00:17:06 --- join: ASau` (~user@77.246.231.35) joined #forth 02:01:38 --- quit: crc (Ping timeout: 264 seconds) 02:51:46 --- quit: ygrek (Ping timeout: 245 seconds) 02:57:07 --- join: ygrek (debian-tor@gateway/tor-sasl/ygrek) joined #forth 03:15:11 --- join: crc (~charlesch@184.77.185.20) joined #forth 03:23:38 --- join: ygrek_ (debian-tor@gateway/tor-sasl/ygrek) joined #forth 03:23:51 --- quit: ygrek (Ping timeout: 245 seconds) 04:16:46 --- quit: probonono (Ping timeout: 245 seconds) 04:19:13 --- join: probonono (~User@unaffiliated/probonono) joined #forth 04:33:54 Ha! 04:34:14 "0 if" crashes. 04:35:05 All thanks to forth "programmers" who didn't learn anything about types since 70s. 04:52:23 --- join: proteusguy (~proteusgu@zeppelin.proteus-tech.com) joined #forth 05:49:18 --- quit: proteusguy (Quit: has left the planet!) 06:26:06 data, return, fp-data (sometimes), control-flow 06:30:12 locals :p 06:43:51 --- quit: ygrek_ (Ping timeout: 245 seconds) 06:53:08 --- quit: zashi1 (Ping timeout: 248 seconds) 06:57:12 --- join: ygrek_ (debian-tor@gateway/tor-sasl/ygrek) joined #forth 07:09:43 <_I440r> brb 07:09:45 --- part: _I440r left #forth 07:13:41 --- join: I440r (~mark4@baldr.openesque.com) joined #forth 07:13:41 --- mode: ChanServ set +o I440r 08:17:55 --- quit: ASau` (Quit: off) 08:19:07 --- quit: crc (Ping timeout: 258 seconds) 08:20:54 --- join: crc (~charlesch@184.77.185.20) joined #forth 08:45:56 --- quit: Kumul (Ping timeout: 260 seconds) 08:48:38 --- join: kar8nga (~kar8nga@jol13-1-82-66-176-74.fbx.proxad.net) joined #forth 09:10:19 ASau: Not in forth hardware. 09:51:17 Hmm. Not sure about your "3 project". What are you going to do with it? 09:51:46 --- quit: docl (Ping timeout: 245 seconds) 09:52:25 Just try to make it fun. 09:52:27 :) 09:53:41 http://en.wikipedia.org/wiki/Ternary_computer 09:53:43 Dang. 09:53:46 That has been done before too. 10:02:23 I don't see what this buys you in an FPGA based on binary logic. You'll have to use two bits to represent every "terbit," so you will be throwing away information carrying capacity. 10:02:45 This would just be a learning exercise? 10:02:47 I am not going to do ternary arithmetic. 10:03:02 Yeah it will be a learning exercise. 10:03:15 I am not currently planning on ternary arithmetic though. 10:03:19 Oh, ok. I just read the link you posted and figured you'd be doing that. 10:04:33 I could do ternary arithmetic. 10:04:40 That would be something crazy. 10:04:41 :D 10:10:13 This somehow makes me think of fuzzy logic. Instead of just "yes / no" you have "yes / no / maybe." Your three operand thing doesn't fit that paradigm perfectly (I think fuzzy logic quantifies the "maybe"), but maybe you could think around that area a while and come up with some ideas. 10:10:42 Well, my branching opcode will be <, >, == 10:10:53 So I can do branch ifless, ifgreater, ifequal 10:10:54 :D 10:11:11 FORTRAN did that too. 10:11:24 xD 10:13:36 But FORTRAN does it in software, of course - it doesn't *presume* an instruction level ability to do that. 10:14:06 Maybe I will use ternary arithmetic as well. 10:14:09 THat would be interesting. 10:14:11 And fun. 10:15:32 what about a != ? 10:15:54 also branch on zero, branch on NON zero ? 10:16:39 "if" for example would be a branch on false (false == 0) 10:16:46 I440r: You would but hte != in both the < and > slots. 10:16:50 And null in the == 10:17:04 ok so you DO have a way to do it :) 10:17:09 just chekkin :) 10:17:14 ^^ 10:17:18 My processor can branch or call unconditionally or on =0, !=0, and <0. 10:17:34 oh kind of like arm that can put any condition code on any opcode>? 10:17:52 @I440r: you aimed that at me? 10:17:58 Or Deformative? 10:18:07 you 10:18:31 I can only conditionalize cells, which are used for jumps and calls. 10:18:39 I can't conditionalize 5-bit opcodes. 10:18:41 thats actually one feature of teh arm thats both VERy confusing and VERY powerful. instead of branching round 2 or 4 opcodes you make them conditional :) 10:18:53 kk 10:19:25 If a cell contains three five-bit opcodes then that cell executes unconditionally. 10:19:52 Yes, I read a lot about predication while contemplating this processor design. 10:20:24 I just wasn't willing to widen the opcodes enough to make every one of them conditionable. 10:21:08 It would be a relatively easy step for me to go from five bits to seven, have two opcodes per cell instead of three, and use the extra bits to specify the conditions I'm currently using. 10:21:22 But the ARM can do a larger number of conditions, can't it? 10:25:57 --- quit: ASau (Remote host closed the connection) 10:26:19 --- join: alex4nder (~alexander@173.152.118.178) joined #forth 10:26:24 hey 10:27:11 --- join: ASau (~user@83.69.227.32) joined #forth 10:28:17 Deformative: Ok, I went and looked at the Wikipedia article on fuzzy logic. You should read that - there may be something of interest there. 10:28:44 --- join: qFox (~C00K13S@5356B263.cable.casema.nl) joined #forth 10:29:13 Will do, thanks. 10:29:19 Instead of a true or false flag on the stack you'd have a "truth value," and somehow the behavior of yoru branches, calls, etc. would be driven by that. 10:29:53 Obviously fuzzy processing already does this, but I think the interesting part would be to see to what extent you could use the hardware in the fpga to assist / accelerate that processing. 10:29:56 Yep. 10:30:01 Well, I have some stuff I need to do today. 10:30:06 So talk to you later. 10:30:08 Something like that would play well to your profs too. 10:30:11 Later. 10:31:35 Real quick, I was planning on having one stack with the alu attached, the other would be return and prefetched, I haven't decided what to put on the third stack. 10:31:43 Any ideas that come to mind? 10:32:40 I'm about to drive back to work from lunch - I'll post anything that comes to mind. 10:32:51 Ok. 10:32:58 I will probably sign off around 3:00 or so. 10:33:02 est 10:33:07 So 1.5 hours. 10:33:13 If not, we can talk later. 10:33:14 o/ 10:37:29 deformative: loop stack maybe? it helps to keep the top entry of that cached in regs, as well 10:48:38 give the third stack to the user? 10:49:06 dont dedicate it to the internal workings of the processor. make it a limited size user stack! 10:49:35 --- quit: kar8nga (Remote host closed the connection) 10:55:17 segher: All entries are cached in registers. 10:55:25 It is a big shift register. 10:55:34 That shifts by wordsize. 10:55:39 I440r: Seems like a good idea. 10:55:46 But really all the stacks are available to the user. 10:55:55 They just have some extra perhipials hanging off of them. 10:56:00 Which are useful. 10:57:39 How about making it a queue instead of a stack and optimizing the hardware to run event-driven simulations? As you process events you determine what future events will arise from them, create tigger records for those events, and put the records in the queue. 10:58:27 Interesting. 10:58:35 Then you pull the next record up from the queue, advance time to that called out by the record, and process it. 10:58:56 I can make the 3rd stack my io controller. 10:59:00 For this to work efficiently you need the queue to be a priority queue, since you might add an event that happens earlier than the events you put in earlier. 10:59:04 Rather than memory mapping. 11:00:13 That will probably be easier than what I just suggested. Once I remembered it had to be a priority queue the "hardness factor" jumped up. 11:01:01 you can use the third stack for stack shuffling on the other two :-P 11:01:18 Yes, I can use all the stacks for that. 11:01:40 All stacks have move-to and copy-to 11:02:04 oh heh 11:02:16 isn't that expensive though? 11:02:47 or don't you mean they are addressable stacks 11:02:52 --- join: safe_bird (~mouratov@95.105.2.102.dynamic.ufanet.ru) joined #forth 11:03:25 Yes, that sounds expensive. 11:03:27 It is expensive. :) 11:03:38 Hello, everybody. I'm having a problem with extending Jonesforth again. 11:03:43 hi, Deformative :-) 11:04:11 Hi safe_bird. 11:04:51 jonesforth? that's that very buggy thing written by someone who doesn't yet have much (if any) experience with forth, right? 11:05:21 safe_bird: forget jonesforth, it should die. 11:05:44 segher: you remember correct. 11:06:56 I'm trying to make control structures like IF-THEN-ELSE work in immediate mode. Jonesforth has a :NONAME function, which I try to use to store temporarily compiled words. 11:07:00 With no luck :-) 11:07:33 safe_bird: better get real Forth rather than something Forth-like. 11:07:36 I'm a beginner to Forth and jonesforth helped me to understand how Forth works from the inside a bit. 11:07:58 ASau: I'm just tinkering with a minimal Forth system :-) 11:08:14 again, jonesforth isn't even a Forth system. 11:08:33 Let's call it "Jonesforth" then 11:08:36 it deviates so much that its author or maintainer was hard to communicate. 11:08:37 safe_bird: ASauis always like this 11:08:39 Just so you know. 11:09:31 safe_bird: see mutual intelligibility criterium, if you're interested in languages. 11:13:16 Then tell me, ASau, how would you solve such a problem in a real Forth system: 11:13:51 I want IF-THEN-ELSE to work in immediate mode. 11:14:16 For that I want to compile a temporary word somewhere and then run it. 11:14:30 What do you mean "immediate" mode? 11:14:37 There's no such mode in Forth. 11:14:53 Mmm :-/ Perhaps its called STATE 0. 11:16:06 or "interpretation state" 11:16:13 interpretation mode? 11:16:26 In interpretation mode you should use [if] [else] [then] 11:17:16 See 15.6.2.2532 [IF] TOOLS EXT 11:17:29 Can you provide me a small example on how those work? I want to be able to run stuff like "1 IF 5 DUP + THEN 8 . ELSE" 11:17:53 Alright, googling. 11:18:27 Your expression is incorrect. 11:18:37 What do you mean? 11:19:23 The second part of your question. 11:19:30 safe_bird: :NONAME 10 10 = IF 1 . ELSE 2 . THEN CR ; EXECUTE 11:19:31 I am very sorry for my poor English, 11:20:00 Use "marker temp : test ." test" cr ; test temp" 11:20:10 what I wanted to say is that I wish to be able to feed such expressions into interpreter and get results 11:20:45 See above, use [if] [else] [then] 11:20:47 ASau: no MARKER in jonesforth 11:20:59 crcx: so worse to jonesforth 11:21:02 Yeah, crcx. What I wish is to wrap that construction into a more consice form. 11:21:14 *concise 11:21:41 10 10 = [IF] 1 . [ELSE] 2 . [THEN] CR 11:21:42 It should look exactly as IF-THEN-ELSE looks inside colon definitions 11:22:23 ASau: no [IF] [ELSE] [THEN] either 11:22:39 crcx: even worse to jonesforth. 11:23:06 ASau: I'm trying to define those [IF], [THEN], [ELSE] in jonesforth 11:23:20 well... 11:23:27 It isn't trivial task for a beginner. 11:23:47 You'd better get real Forth that provides these elementary tools already. 11:23:50 to do so I construct a temporary word 11:24:41 ASau: I am determined to do this in Jonesforth :-) It's a pity that you are incapable to help. 11:24:59 Sure thing, I will take a look at some real Forth systems. 11:25:06 Like gforth maybe. 11:25:27 But right now I am interested in figuring out how to extend Jonesforth. 11:26:24 safe_bird: if you refuse to receive help, it's you refusing to receive it. 11:26:26 ASau: I don't need those tools available. I want to implement them. 11:26:41 safe_bird: go read some code for existing Forth implementations. 11:26:44 there are many that properly support that. 11:26:51 alex4nder: great suggestion, alex4nder! 11:27:09 would you suggest some particular implementation? 11:27:12 alex4nder: there's a catch, jonesforth is "different" 11:27:38 safe_bird: there're not so many of them. 11:27:45 ASau: I know, but if he's going to know enough to implement the feature, he's going to have to learn how to do it inside JonesForth 11:27:47 You can go with gforth if you like. 11:28:24 Yeah, gforth seemed like a popular, well mantained and documented system. 11:28:26 safe_bird: gforth is probably fine, I think pforth supports that 'feature' 11:28:33 I will sure take a look at it. 11:28:41 Thanks. 11:29:30 alex4nder: there's nothing to think of, it does. :) 11:30:21 ASau: I'm not sure you and I are both speaking the same style of English. :D 11:30:37 Actually, I thought it was trivial to implement this feature. 11:30:51 Just compile a temporary word somewhere and then EXECUTE a token. 11:31:14 It isn't quite trivial. 11:31:20 My problem is: I can't figure out how to compile words which compile words. 11:31:26 You have to solve reentrancy problem. 11:31:36 See "postpone" 11:31:39 yah 11:31:47 you're wasting your time implementing this, without programming something else first. 11:33:26 I don't understand what you mean by "reentrancy problem" 11:33:33 Could you, please, be a bit more specific? 11:33:51 googling for "postpone" didn't get me a quick answer 11:33:59 safe_bird: I'm sure that it is hard to explain it to you. 11:34:13 Alright. 11:34:41 Don't waste your time on a rookie. I will try to figure it out myself. 11:34:49 You should get real Forth and try solving some real problems in it, 11:34:49 rather than reimplementing everything from scratch. 11:35:06 It is easier way to understand how the stuff works inside. 11:35:25 I don't want to solve real problems. What I wish is to solve this particular entertaining task. 11:35:31 Sooner or later you'll encounter internal problems. 11:35:47 I will sure look into real Forths, thanks for a suggestion. 11:40:09 asau: defining [IF] [THEN] [ELSE] in an ISO Forth system *is* trivial 11:40:27 the standard contains portable definitions for them in the appendix, eh :-) 11:40:43 segher: ha! 11:40:48 segher: I don't need nested control structures even. It should be simple. 11:40:49 I've forgot about that. 11:41:39 safe_bird: you may be interested in my compile-only-words-in-interpret-mode implementation 11:42:24 Sure, segher. I would gladly take a look. 11:42:27 it switches to a temporary buffer when e.g. IF shows up, and then when the structure is closed (that is, THEN ) it executes it 11:42:33 sec 11:42:50 Yes, this is how I planned to solve this. 11:43:04 isforth doesnt have any conditional compilation words but adding them there would be trivial too 11:44:53 i make STATE a counter; any such structure word increments it, ] sets it to something big 11:45:12 To make nested structures possible? 11:45:18 yes 11:45:31 Can I have a look at the implementation? 11:45:36 to make it work correctly in the interpret thing 11:45:37 Where do you store compiled words? 11:45:48 In the dictionary after HERE? 11:45:59 the temporary thing is stored in a statically allocated buffer 11:46:08 storing it at HERE won't work 11:46:47 I've tried defining a temporary word in the main dictionary, then moving HERE back where it was before defining. 11:47:28 then i have : +comp state @ 1 state +! IF EXIT THEN here there ! comp-buffer dp ! compile docol ; 11:48:10 : -comp -1 state +! state @ IF EXIT THEN compile exit there @ dp ! comp-buffer execute ; 11:48:42 and then i add +COMP to the start of IF , and -COMP to the end of THEN , etc. 11:49:01 very similar to this: 11:49:03 http://www.cmplngfrth.tk/allowing-control-structures-in-interpret-state 11:49:10 probably 11:49:39 you can also look at how mitch bradley's Open Firmware does it 11:49:50 My current problem: I can't figure out how to compile words which compile another words while running 11:49:53 (open firmware requires it, that's why i implemented it) 11:50:11 postpone bla 11:50:18 Yeah, I've tried looking into OpenFirmware, but didn't understand a bit. 11:50:26 it's big 11:50:30 Yes. 11:50:39 And poorly documented. 11:50:55 Well, at least it doesn't explain "trivial things" 11:51:01 and old, and didn't get rewrites a lot 11:51:17 it's pretty well documented imho 11:51:25 better than gforth, in any case ;-) 11:51:52 Why don't you like Jonesforth as a toy implementation to tinker with? 11:52:06 it's buggy as hell 11:52:07 At least I could understand most of it in 2 days. 11:52:10 and very very non-standard 11:52:16 for no reason at all 11:52:25 I've noticed some things that very possibly might be bugs. 11:52:59 But it allowed me to understand indirect threaded code, for example 11:53:06 so it's terrible as an educational example implementation 11:53:10 And how compiler/interpreter work in Forth. 11:54:12 even if it's nonstandard and buggy, it helped me to understand things I couldn't grasp from studying bigger Forths 11:55:53 maybe you should find MAF/PAF then :-) 11:56:35 What is that? (google didn't help) 11:56:57 Ah, found MAF 11:57:29 I will certainly investigate into it, thanks! 11:58:33 maf/paf is an implementation of forth _in forth_ 11:58:50 so not very efficient or anything, but very educational :-) 11:59:42 --- quit: alex4nder (Quit: leaving) 11:59:56 1am here. Good night, everyone, and thanks for useful pointers. 12:00:58 --- quit: safe_bird (Quit: Leaving.) 12:11:24 --- join: Pusdesris (~Joe@c-76-112-68-135.hsd1.mi.comcast.net) joined #forth 12:14:41 --- quit: Deformative (Ping timeout: 245 seconds) 12:15:28 --- join: docl (~luke@216-161-87-126.ptld.qwest.net) joined #forth 12:22:11 --- quit: Pusdesris (Ping timeout: 245 seconds) 12:44:23 --- quit: ASau (Remote host closed the connection) 12:45:18 --- join: ASau (~user@83.69.227.32) joined #forth 12:57:00 --- join: kar8nga (~kar8nga@jol13-1-82-66-176-74.fbx.proxad.net) joined #forth 13:12:46 --- join: alex4nder (~alexander@dsl093-145-168.sba1.dsl.speakeasy.net) joined #forth 13:13:02 hey 13:17:14 --- quit: docl (Ping timeout: 264 seconds) 13:42:20 --- quit: gogonkt (Quit: Lost terminal) 13:44:56 --- join: gogonkt (~info@218.13.55.20) joined #forth 14:11:44 --- join: mre (~Agent@203.109.161.103) joined #forth 14:25:31 --- quit: ygrek_ (Ping timeout: 245 seconds) 14:29:34 --- join: ygrek_ (debian-tor@gateway/tor-sasl/ygrek) joined #forth 14:30:52 --- quit: qFox (Quit: Time for cookies!) 14:40:36 --- quit: kar8nga (Remote host closed the connection) 14:50:06 --- quit: ygrek_ (Ping timeout: 245 seconds) 15:27:51 --- quit: ASau (Remote host closed the connection) 15:32:49 --- join: ASau (~user@83.69.227.32) joined #forth 16:25:48 --- join: arquebus (~shintaro@189.221.9.134.cable.dyn.cableonline.com.mx) joined #forth 16:26:36 --- join: Deformative (~ad6dc513@gateway/web/freenode/x-watyrklnrefcxnai) joined #forth 16:26:54 Hey KipIngram, this is pretty interesting. 16:26:56 http://www.forth.org.ru/~dssp/msdos_e/papers/daf.txt 16:27:07 The first bit is interesting, then it gets boring. 16:27:32 Well, I need to go now. 16:27:34 Talk to you later. 16:27:41 --- quit: Deformative (Client Quit) 16:32:02 --- part: arquebus left #forth 17:23:06 --- join: docl (~luke@216-161-87-126.ptld.qwest.net) joined #forth 17:33:16 --- quit: mre (Ping timeout: 260 seconds) 17:50:58 --- join: mre (~Agent@203.109.161.103) joined #forth 18:11:07 --- quit: ASau (Ping timeout: 276 seconds) 18:22:54 --- join: ASau (~user@83.69.227.32) joined #forth 18:31:39 --- quit: segher (Ping timeout: 240 seconds) 18:43:30 --- join: segher (~segher@84-105-60-153.cable.quicknet.nl) joined #forth 18:51:50 --- quit: segher (Read error: Connection reset by peer) 18:52:08 --- join: segher (~segher@84-105-60-153.cable.quicknet.nl) joined #forth 19:03:42 --- join: Lan (~Nalras@adsl-72-50-89-24.prtc.net) joined #forth 19:05:01 --- nick: Lan -> Kumul 19:27:14 --- join: pnq (~gaiug@AC83C149.ipt.aol.com) joined #forth 19:54:26 --- quit: maht (Ping timeout: 246 seconds) 19:59:29 --- join: maht (~maht__@85-189-31-174.proweb.managedbroadband.co.uk) joined #forth 20:01:23 --- quit: cataska (Ping timeout: 258 seconds) 20:02:09 --- join: cataska (~cataska@210.64.6.233) joined #forth 22:03:18 --- quit: docl (Ping timeout: 240 seconds) 22:27:54 --- join: docl (~luke@216-161-87-126.ptld.qwest.net) joined #forth 23:05:36 --- quit: mre (Ping timeout: 252 seconds) 23:31:35 --- join: mre (~Agent@203.109.161.103) joined #forth 23:40:50 --- join: kar8nga (~kar8nga@jol13-1-82-66-176-74.fbx.proxad.net) joined #forth 23:59:59 --- log: ended forth/10.05.14