00:00:00 --- log: started forth/04.04.08 00:45:11 how else one may spam bad guys ? 00:45:20 sms ? fax ? 00:48:34 snail mail? 00:49:31 why not let the spammers spam each other? get all their names, addresses and e-mails and circulate them to all othe spammers. 00:53:43 --- quit: Herkamire (Read error: 60 (Operation timed out)) 00:58:59 --- quit: Serg () 01:56:14 bye for now. See you all later. 01:56:22 --- part: yeoh left #forth 03:08:53 --- join: yeoh (~yeoh@219.95.6.105) joined #forth 03:41:43 --- quit: yeoh ("Client exited") 04:14:18 --- join: qFox (C00K13S@cp12172-a.roose1.nb.home.nl) joined #forth 04:43:56 --- join: far- (~far@tony11-1-228.inter.net.il) joined #forth 04:44:01 hello 04:44:07 forth is a low level programming language? 04:50:14 Kind of. 04:54:50 Forth binary files are smaller than Assembly binary files? 04:56:27 ? 04:58:40 Depends. Usually not. 04:59:00 depends on what? 04:59:08 How you write the program... 04:59:21 But if you want speed and small size, use assembly language. 04:59:39 i dont want speed, only small size 04:59:59 are you sure there isnt another language that its binaries are smaller than asm binaries? 05:00:24 Some sort of self-decompressing program... 05:01:05 --- join: segher (~segher@blueice3n1.de.ibm.com) joined #forth 05:01:07 You _can_ make small Forth binaries if that's your design goal. 05:01:19 But if the program is small, I wouldn't bother. 05:01:29 it's hard to make huge binaries, even 05:01:35 smaller than the eqvivalent in asm? 05:03:12 I guess that's not impossible, in some cases. 05:03:14 Try 05:03:41 so the smaller size i can ever get will be in asm program? 05:03:53 are you sure? 05:04:10 No. 05:04:21 ? 05:04:26 Why do you need the smallest possible program anyway? 05:04:40 for research 05:04:55 of course. in the worst case, you can write a custom forth inner interpreter in asm. but that is a lot more work... the interesting question is, how do you make a small program with *reasonable* effort. 05:05:29 i dont care to write 10000 lines for a program that i can write 10 lines in c 05:05:46 the compiled file-size is important to me 05:06:08 so you know what is the programming language im looking for? 05:06:42 asm. 05:07:03 anything you can do in any other language, you can by definition also do in machine code. 05:07:39 ok and is there a way to compress a asm binary data inside the memory? so it will take less space? 05:07:58 Sure. 05:08:18 Just compress the program, and have a small decompressing routine in the beginning. 05:08:28 nice 05:08:35 But you'll have to have rather large programs for that to pay off 05:08:50 the compressing concept is only for asm or for anything in memory? 05:09:00 my programs are small- 100bytes 05:09:01 Anything. 05:09:17 100 bytes? Then I'd go with an assembly language program. 05:09:48 If you spend a number of hours, you can usually chop off a number of bytes 05:10:23 by better coding? 05:10:38 by evil and/or clever tricks 05:11:03 you said i should use asm. with or without the compress? if its 100bytes 05:12:11 whatever is smallest 05:12:19 what's your target cpu? 05:12:54 x86 05:13:01 intel 05:13:25 a small decompressor might help, then 05:14:00 you know where i can read about memory data compressing/decompressing ? 05:16:22 get a good book, i'd say. and/or study other people's code. no, there is no easy or fast way to learn stuff like this. 05:19:34 ok thanks 05:20:50 --- quit: far- () 05:22:25 --- quit: OrngeTide (Remote closed the connection) 05:27:48 --- join: OrngeTide (orange@rm-f.net) joined #forth 05:52:42 --- join: yeoh (~Yeoh@219.95.8.170) joined #forth 06:15:55 --- join: Downer (Downer@82.70.9.103) joined #forth 06:17:43 --- part: Downer left #forth 06:23:19 --- join: networm (~networm@L0658P25.dipool.highway.telekom.at) joined #forth 06:23:23 hello 06:23:46 hello networm. 06:28:11 --- quit: yeoh (Remote closed the connection) 06:34:23 hi! 06:34:42 Hi 06:56:44 So what the forth is going on today? 06:59:30 --- join: yeoh (~yeoh@219.95.8.170) joined #forth 07:12:07 --- join: Serg (~z@212.34.52.140) joined #forth 07:14:07 --- join: proteusguy (~proteusgu@workstations.pinnaclesports.com) joined #forth 07:22:38 --- quit: Serg () 07:29:29 --- quit: yeoh ("Leaving") 07:43:08 --- join: tathi (~josh@pcp02123722pcs.milfrd01.pa.comcast.net) joined #forth 08:14:22 --- join: OrngeTid1 (orange@rm-f.net) joined #forth 08:14:22 --- quit: OrngeTide (Read error: 54 (Connection reset by peer)) 08:48:10 --- join: Frek (~anvil@h33n2fls31o815.telia.com) joined #forth 08:48:52 --- quit: Frek (Client Quit) 08:49:28 --- quit: tathi ("leaving") 08:50:19 --- quit: networm (Read error: 113 (No route to host)) 08:51:10 --- join: networm (~networm@L0632P25.dipool.highway.telekom.at) joined #forth 09:27:53 --- join: OrngeTide (orange@rm-f.net) joined #forth 09:32:09 --- quit: OrngeTid1 (Read error: 54 (Connection reset by peer)) 10:14:26 --- join: tathi (~josh@pcp02123722pcs.milfrd01.pa.comcast.net) joined #forth 10:19:14 --- join: Herkamire (stjohns@24.91.225.238) joined #forth 10:34:05 --- join: thin (thin@bespin.org) joined #forth 10:43:32 --- join: kc5tja (~kc5tja@66-91-231-74.san.rr.com) joined #forth 10:43:39 --- mode: ChanServ set +o kc5tja 10:44:54 Well, I have received a couple of datasheet views for the FTS1001 design, but nobody has responded, save one, who was apparently looking for a couple of chips to implement the asynchronous bus I had come up with. 10:45:47 So now that my learning experience with the FTS1001 is finished (insofar as learning Verilog and how to use it to produce a working behavioral model), I suppose now I can work on some more sophisticated projects. 10:46:11 At this time, the FTS1001 is likely to not make it to production. 10:46:25 (Not as a discrete component, at least) 11:30:43 --- quit: tathi ("leaving") 12:16:33 --- join: wossname (wossname@HSE-MTL-ppp60965.qc.sympatico.ca) joined #forth 12:32:14 --- quit: segher ("Leaving") 13:44:49 --- join: slava (~slava@CPE00096ba44261-CM000e5cdfda14.cpe.net.cable.rogers.com) joined #forth 13:44:50 hey 13:58:12 re sl4v4 13:59:12 Hello. 13:59:18 greets 14:00:22 ianp, what's with the 31337sp34k? 14:02:31 slava: n07h1|\| 14:13:20 --- quit: wossname ("njoy") 15:01:06 --- join: Sonarman (1000@adsl-64-160-164-6.dsl.snfc21.pacbell.net) joined #forth 15:42:34 Ah, _finally_ a QSO! And then I had to reply to a CQ DX from a neighbour country. ;) 16:01:18 --- quit: proteusguy ("Leaving") 16:25:11 Band conditions are bad today? 16:30:44 Not really. People just seem to avoid me. 16:31:37 It's funny, this guy had the same rig as I have, IC730. His was on max power (100W), mine on min power (5W). I got a 599, he got a 579. 16:41:48 Heh 16:42:10 Well, I decided to start working on the Kestrel's custom bus interface chip design today. 16:42:56 OK. :) 16:43:02 Good night 16:43:11 The UART didn't generate all that much interest. I got more interest in my asynchronous bus design (which can be said to be equivalent to the Wishbone bus). 16:43:20 73 Robert 16:43:22 --- quit: networm (Read error: 60 (Operation timed out)) 16:50:25 e e 16:51:42 kc5tja> this might be a very silly question, but how do i call an XT while code is running? 16:51:57 in that p24.... (althoug i guess it'll go for any cpu) 16:52:08 i dont know how to call an address on the stack 16:52:08 the std forth word is EXECUTE 16:52:17 yea i know, but in machine forth 16:52:34 i cant access the I and P registers directly with instructions 16:52:40 Transfer it to the return stack, then "return". 16:52:42 so i cant either change or save them 16:52:56 kc5tja> yes but how will i return to my code? 16:53:09 Make it a subroutine. 16:53:13 : EXECUTE >R ; 16:53:25 no i'm in machine language 16:53:28 not in forth yet 16:53:32 That *IS* machine language. :) 16:53:36 no i mean 16:53:42 um like 16:53:49 That is machine-Forth for EXECUTE. 16:54:04 but, where will the ret go to? 16:54:07 When execute is called, the return address for your code is already on the return stack. 16:54:26 >R places the desired subroutine address on the return stack as well. 16:54:37 The ; "returns" to the desired subroutine. 16:54:43 yes, but what about P? the next instruction 16:54:44 oh 16:54:47 When that subroutine is finished, it'll return to your original code. 16:54:54 well thats all nice, but how do i call P 16:55:02 I JUST TOLD YOU!! 16:55:06 ' p EXECUTE 16:55:08 because i dont believe i can do that legimitly 16:55:18 I challenge you to prove yourself wrong. 16:55:21 kc5tja... there's no instruction to get P 16:55:24 in the p24 16:55:29 how do i get the register value? 16:55:30 :\ 16:55:35 Dude, CALL places the return address on the return stack. 16:55:48 oh 16:55:53 * qFox sees light 16:56:00 How do you think RET works? :) 16:56:06 well lets see 16:56:12 It's called a "return stack" for a reason. :) 16:56:16 yes i know 16:56:23 but i didnt know how to get the P 16:56:25 thats all 16:56:33 but didnt think of calling call that would ret 16:56:37 By P do you mean the contents of the instruction pointer? 16:56:49 contents of the next instruction pointer yes 16:56:52 but i get it 16:56:55 Or do you mean the addrses of the procedure? 16:57:10 nonono look 16:57:19 my eval.word will call (') 16:57:26 (ok just call it tick) 16:57:31 tick will return the xt 16:57:43 Ok 16:57:44 then the code will execute that 16:57:49 but i just didnt know how to get back to that code 16:57:50 Ok. 16:57:57 * kc5tja slaps his forhead! 16:57:59 but now i do :) 16:58:08 Good. 16:58:10 :) 16:58:15 I was going to cry if you still didn't get it. :D 16:58:46 well i never thought about calling a function that pushed something on the return stack, then ret to it 16:59:12 i just couldnt figure it out, i mean i knew i had to push ret, but that would not get me back to my original postition :) 16:59:23 * kc5tja nods 16:59:26 ohwell 16:59:27 sleep now 16:59:28 nite 16:59:33 (yes, "early" ;) 16:59:33 Goodnight. 16:59:38 Man everyone is going to bed here. :) 16:59:54 follow the lead :p 17:00:03 It's mid-day here. 17:00:06 17:00. 17:00:08 big deal 17:00:12 its mid-night here :p 17:00:20 almost 17:00:32 --- quit: qFox ("if at first you dont succeed, quit again") 17:00:43 Bahh! 17:00:48 Midnight SchmidMight! 17:00:58 Try going to bed at 4AM, only to go back to work at 9AM. :D 17:08:19 : ENTER >R ; \ I already have it in my system *** ENTER already defined, cfa=4001810h(67115024) ok[Dec] 17:08:22 : 1-20 1 BEGIN DUP 21 < WHILE >R 2R@ SWAP ENTER R> 1+ REPEAT DROP RDROP ; ok[Dec] 17:08:24 : foo 1-20 . ; 17:08:27 foo 17:08:27 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ok[Dec] 17:08:31 that's cool :) 17:10:55 ? 17:12:18 look at the definition of foo, and look at what it does 17:12:40 (this is from comp.lang.forth) 17:13:46 1] : foo 20 count . ; 17:13:47 2] foo 17:13:47 [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ] 17:44:04 --- join: yeoh (~yeoh@219.95.0.191) joined #forth 17:45:38 hi yeoh 17:45:54 hi Sonarman. :) 18:15:29 Fear not, for I have R> ! 18:17:41 hehe... what? 18:18:50 have you gone... mad? :) DIE SONARMAN 18:20:54 OK, off cooking -- back in a bit. 18:24:01 :O 18:24:22 How do you pronounce R> ? 18:24:40 First syllable: Arr 18:24:45 Second syllable: > 18:25:20 ['] CRASH R@ ! 18:26:02 It's the closest thing to "returned" that I could think of. 18:27:12 you could always just say that you have ; :-Q 18:27:34 I have semicolon? 18:27:42 No, I have a full colon, thank you! 18:27:56 Well, it's not full... 18:28:01 Intact! 18:29:38 Well then, I think that gives us a reason to PARRTAY! Here, have a party hat. *twang!* Haha! Gotcha! I pulled the elastic string and it hit you! 18:30:09 --- join: ianp` (nobody@c-24-13-109-164.client.comcast.net) joined #forth 18:30:13 Am I the most cleverisherest prankster ever! 18:31:07 Ow! Just don't hit my colon, dammit! 18:31:23 I imagine that would really smart. 18:32:29 Not as much as resetting your return stack would! Let me demonstrate... *ZHING!!!* 18:33:47 * madgarden empties colon on Sonarman. 18:33:50 Now you've done it! 18:34:03 now... i wish i could figure out what the hell ALITERALs are on bigFORTH 18:34:08 How that "return stack" for you? ;) 18:34:33 Hmm, don't have bigForth here. 18:34:55 it's fun :) 18:35:13 What's so big and fun about it? 18:36:12 it's fun because there's so much to discover about it, and it's big because... because Bernd Paysan said so! 18:36:38 Bernd Paysan, that crazy guy! 18:36:55 --- join: tathi (~josh@pcp02123722pcs.milfrd01.pa.comcast.net) joined #forth 18:37:12 Does it let you create turnkey apps? 18:37:20 apparently 18:37:38 i haven't tried it, but it says so on the website 18:38:15 Hmm, I wonder how it compares to Win32Forth. 18:38:27 http://www.jwdt.com/~paysan/ <-- hit the fancy-schmancy Enlightenment button labeled bigFORTH there 18:39:01 :) 18:40:25 Oooh, it has OpenGL bindings? 18:40:42 yes, and cool demos! 18:41:26 TEH!!1 18:42:10 Hey, I think I have actually installed this before at some point. 18:42:29 in my experience, it works better on Linux than on Windows 18:43:21 either way, it's still pretty quirky 18:44:11 Quirky how? 18:45:22 subtle bugs, weirdnesses in the editor, strange window focus behavior on X, slight latency between click and response 18:46:38 and very little documentation and comments :) 18:46:38 Huh. What's the deal when I run it? It drops me into what appears to be the interpreter, but it's a bit goofy. 18:46:55 you running xbigforth on Linux? 18:47:07 No. 18:47:21 don't run bigforth.exe, run xbigfalfskaf.asfxexe 18:47:32 --- join: blockhead (default@dialin-150-tnt.nyc.bestweb.net) joined #forth 18:47:37 sorry, fingers got lazy. you know what I meant :) 18:48:24 and the neat OpenGL dragon demo doesn't work right on Windows, at least in my experience 18:48:35 Run WHAT? 18:48:50 xbigforth.exe :) 18:49:00 Don't have that. 18:49:03 There's MINOS though. 18:49:06 And THESEUS. 18:49:11 Whatever that is. 18:49:31 you sure there's no xbigforth.exe? generic application icon? 18:50:07 Nay. 18:50:14 MINOS seems to work OK though. 18:50:20 Hmm, neat screen viewer. 18:50:41 cool. i guess there's been an update since the last time i tried it on Windows 18:51:02 --- quit: tathi ("leaving") 18:51:04 "29mar94py" 18:51:19 Is that some sort of Forthy convention? 18:51:19 that's just that particular screen :) 18:51:33 oh, it's a bigForth convention :) 18:51:41 I've seen it in other places. 18:51:50 Like, Blazin' Forth. 18:52:01 oh yeah! 18:52:26 well, it's a good timestamp format IMO 18:52:29 What's py? 18:52:38 Yes, I shall steal it. 18:52:58 py is Bernd Paysan's ID 18:53:06 "ID"? 18:53:19 How is that his ID? 18:53:26 In what was was it determined? 18:53:26 he just chose it, i guess 18:53:51 i suppose that it's usually one's initials, but bp was already taken by one of the volksFORTH authors 18:54:07 Hmm. 18:54:17 I wonder if there's a PP. 18:54:46 or PU 18:54:56 I am not stinky. 18:55:04 Hmm, I don't like his Forth formatting style much. 18:55:21 yeah, it's one of the "quirks" :) 18:55:44 Like, make up your mind, Bernd! 18:56:45 you can't blame him-- he is crazy, after all 18:57:04 Seems that most -- if not all -- Forthers are. 18:57:40 well, i was just joking 18:57:57 I wasn't! 18:58:58 HEE HEE HO HO CRAZY HA HA HEAR THAT, ABE? HE SAYS WE'RE CRAZY! NOW THE UNION NEEDS MORE FIREPOWER IF IT WANTS TO DEFEAT THE CONFEDS. 18:59:30 Wow, that was loud. I hear you. 19:00:00 Alt 19:00:07 whoops 19:00:56 how annoying it is to accidentally press ^J when ^K was meant! 19:01:13 I want to make a screen editor with a fricking bigass font, like 10x10 pixel characters at 640x480. 19:01:42 ^K 19:01:56 : ^K ^J ; 19:02:00 problem solved! 19:02:33 testing testing madgarden is a donkey butt 19:02:46 madgarden, the editor defines key bindings as forth words? 19:02:49 ( | ) 19:03:00 hmm... seems that should have been: : ^J ^K ; 19:03:01 slava, what editor? 19:03:21 Sonarman, indeed you are correct. 19:03:23 i'm uncertain as to what i should add next to factor 19:03:39 slava, what else does it need? 19:03:49 nothing so far, that's the point :) 19:03:52 a debugger would be nice 19:05:19 write a factor-style interface to SWT :) 19:05:20 Does it have a nice hyperlinky "syntax" colored editor? 19:06:27 does factor have real-time sound synthesis? :D 19:08:14 the 'factor IDE' is planned 19:08:59 I have been thinking more about syntax hilighting for Forth code. 19:09:17 And *not* colorForth as a way of describing the source. 19:09:26 what ideas have you come up with, mad? 19:09:35 Your stack flow, parsing words, immediate words, could all be described with colours. 19:09:53 The flow of the program would be more instantly recognizable. 19:10:22 sounds good! 19:10:50 And, why does : EXECUTE >R ; give me an exception in FICL? 19:11:18 Sonarman, still pondering how to handle things like control flow words, especially if they take parameters. 19:11:43 But, I figure there'd be about 5 or 6 colours used... maybe more of you transition between them for certain combined cases. 19:11:46 here is my idea for a factor IDE 19:11:52 its based on the 'inspector' 19:11:59 madgarden: maybe ficl scans for what seems like unbalanced return stack manipulation? 19:12:00 each object has an editor 19:12:19 the inspector calls up either a custom editor for an object, or just a list of slots where you can edit the slots 19:12:46 so the editor for a word is a structure editor, editor for a list is a list control, editor for a string is a text field, etc 19:12:50 and its all database-backed 19:13:15 Sonarman, could be. That bastard FICL! 19:13:52 slava, "slots?" 19:14:05 madgarden, think fields in a structure 19:14:10 Ahh. 19:14:15 CELLS. :P 19:14:27 also the inspector will be UI-independent 19:14:35 i have a basic inspector with command line and html UI already 19:14:54 also i want my editor to edit tokenized source -- a 'structure editor'. 19:15:11 so that its impossible to write code that doesn't parse 19:16:19 Hmm. 19:16:47 Sounds interesting. 19:17:33 And yes, a Forth editor could easily have checking for most words, I think. 19:17:46 in my case there are no parsing words 19:17:50 Here's what Minforth does: 19:17:50 0 0 - : call >r ; ok 19:17:50 0 0 - 10 ' dup ok 19:17:50 2 0 - call ? Address alignment exception in CALL 19:18:02 slava, yours is 100% RPN, isn't it? 19:18:12 madgarden, with a few exceptions 19:18:30 madgarden, there are a handful of 'hand coded' parsing words, like : 19:19:18 it used to be no parsing words, but "square" [ dup * ] define looked ugly :) 19:20:09 Hmm. 19:20:27 There is no compile mode either, correct? 19:20:41 100% RPN with some exceptions :) 19:20:46 does : foo 10 ['] dup call ; work? 19:21:10 Win32Forth... gah! 19:21:10 : goto 19:21:10 >r ; ok 19:21:10 1 ' dup ok.. 19:21:10 goto 19:21:11 EXCEPTION: ACCESS_VIOLATION 19:21:49 ' dinner call 19:22:12 madgarden: ' probably gives you a pointer to the dictionary entry 19:22:29 an XT is not nessesarily the CFA 19:22:59 Ahh. 19:23:37 madgarden, some words are sort-of evaluated at compile time, but its implicit. 19:24:12 the internals of the interpreter are more like lisp than forth actually. 19:24:23 Those could be coloured differently in the editor. 19:25:06 "implicit" hiding of programming features can make it hard to understand. 19:26:46 the 'compling words' are those that would behave the same if they're evaluated at compile or runtime. 19:27:37 for example, : twice ( code -- ) dup >r call r> call ; 19:27:43 [ "hello world" . ] twice 19:27:45 "hello world" 19:27:46 "hello world" 19:27:47 etc. 19:27:53 suppose you have: 19:28:03 : foo 1 2 3 [ + ] twice ; 19:28:14 it doesn't matter if 'twice' evaluates at runtime, or if it is expanded at compile-time into: 19:28:18 : foo 1 2 3 + + ; 19:29:02 in fact, while control structures are implemented by passing around linked lists, in compiled code there is no such thing, after all the transformations are done. 19:30:08 I see. 19:30:45 Why don't you have pure RPN syntax, and go for something like this? 19:30:46 "foo" : 1 2 3 [ + ] twice ; 19:31:08 the forth way looks nicer i guess. 19:31:30 Well... actually, the pure RPN way is more intuitive. 19:31:41 Especially once you know the simple syntax. 19:31:42 its just syntax sugar. 19:31:43 0] ": foo bar baz ;" parse . 19:31:44 [ "foo" # define ] 19:32:01 Syntactic sugar that's not needed, IMO. 19:32:22 Not sure what values you're trying to capture by doing it this way. it seems to detract from the system's purity. 19:35:45 i'm thinking of writing a little structure-aware line editor that can be used from the command line, as a neat hack :) 19:40:23 :) 19:41:08 i've got it--the debugger is just a continuation editor! 19:45:12 Continuate THIS! 19:45:17 Oh, wait . . . wrong movie. 19:46:08 i wonder if the stack effect of code that uses continuatiosn can be deduced, by looking at the program globally. 19:48:24 i think i shall now try to understand the bigForth dynamic memory manager 19:48:27 Are continuations actually needed for anything, or are they just trendy and hip with the cool kids? 19:48:29 key word: try 19:49:54 madgarden, i use them for co-operative multitasking 19:50:10 or loops that pass values between each other 19:50:13 madgarden: That depends on your point of view. It's a question that cannot be answered. Like atoms in nature, continuations just "are". 19:50:51 Ok, but how useful "are" they? 19:51:12 Well, continuations ultimately form the core of multitasking. 19:51:33 It's basically a saved stack frame, non? 19:52:00 More generally, it's just the program state itself. 19:52:06 (which necessarily includes the stack). 19:52:15 used sparingly, they simplify code. 19:53:07 for example, a blocking read word for a GUI console might save a continuation somewhere; when input is provided by the user, the event queue restores the continuation and the read word returns to its caller as if nothing happened. 19:53:25 so you can implement a read/eval loop 'spliced' into an event queue. 19:56:52 Seems to me that you could do this (very simply) in Forth by tossing a new return value on the stack in the middle of whatever's currently executing. 19:57:38 madgarden: That return address is called a "partial continuation;" it differs from a complete continuation in that only the local state of the stack is affected, not the whole state of the program. 19:57:49 And in most cases, partial continuations are all you really need. 19:58:38 A full continuation being an entire stack/register swap... 20:00:17 right? 20:00:24 yes. 20:00:33 Stack, register swap, AND program state, yes. 20:00:51 in factor, a continuation is a datastack/callstack pair. 20:01:56 kc5tja, have you done any work on FTS/forth lately? 20:04:13 What is "program state" if not the stacks and registers? 20:04:42 in forth, the interpret/compile flag i guess 20:05:23 Right, any global variables, etc. 20:05:27 no 20:05:32 globals are not usually part of it 20:05:51 USER globals. 20:06:04 the current environment pointer is. 20:06:09 but variable values are not. 20:09:41 Hmm... I have this urge to "port" a Choose Your Own Adventure book to Forth. 20:10:30 YOU DECIDE TO BECOME A WORD. WHAT KIND OF WORD DO YOU BECOME: 20:10:37 - IMMEDIATE 20:10:39 - STATE-SMART 20:10:42 - COMPILE-ONLY 20:10:44 - NO-NAME 20:10:51 Heh! 20:11:14 slava: you forgot to include what screen to load for each decision! :) 20:18:23 Yes! 20:18:25 I have... 20:18:34 "The Third Planet from Altair" 20:18:42 "Gorga, the Space Monster" 20:18:51 "Space and Beyond" 20:19:03 and "House of Danger" 20:20:49 Hmm, that's way more typing than I'm prepared to do. 20:21:08 get a scanner and write an OCR system... in Forth@ 20:21:11 Forth! 20:21:26 that would be scary :) 20:21:39 That's also way more typing than I'm prepared to do. :) 20:22:04 then write a speech-recognition system... in Forth! 20:22:34 Hmmm...both of which rely extensively on neural nets. 20:22:45 In all honesty... the only thing that makes that *scary in Forth* is not using variables, and not having dynamic memory allocation (not that you cann't, but you know). 20:22:52 local variables, that is. 20:23:09 local variables are unnecessary, but memory management... :) 20:23:32 i don't consider ALLOT/FORGET to be on par with a generational incremental GC :) 20:23:49 local variables are unnecessary, as long as you're not trying to write some intensely convoluted algorithm. 20:24:12 Don't you mean ALLOT and - ALLOT? :) 20:24:21 slava: That's because it's not. It's more comparable to the memory management inferencing engine that ML uses to minimize its need to dynamically allocate memory in the first place. 20:25:46 'nn all 20:25:56 --- quit: blockhead ("Client Exiting") 20:26:01 kc5tja, though I *am* going to make that text adventure, dammit. 20:26:12 Hehe :D 20:26:15 I'll remake the first one I ever did. It was 3x3x3 rooms. 20:26:46 "Dungeonquest" I so imaginatively named it. 20:27:00 OOOoooo....myst-EEERY-ous. :D 20:27:11 bigforth seems to use a mix of blocks and files. 20:27:14 (you'd understand the inside joke if you regularly read Sluggy Freelance. :D) 20:27:31 Not so mysterious as the mysterious "Red room," "Green room," and "Blue room" that it contained! 20:28:35 a single-user wiki with support for styled text and embedded code... 20:28:41 I think I'll also add sound effects. :D They seemed to work nicely in some of the Infocom games such as Lurking Horror and Sherlock Holmes. 20:28:45 Wait, let me guess -- your goal was to combine the rooms to produce the white room. :) 20:28:50 (with black curtains) 20:29:14 but to do that, you had to first deduce a topological homeomorphism between the rooms, in order for them to be combinable ;) 20:29:31 kc5tja, heh... no, nothing so obvious. Actually, you had to put on a magic amulet in one of the rooms, and there was know way you could know which room it was. Pick the wrong room, and you died! 20:30:44 Well, THAT'S no fun... :D 20:31:07 Heh no... 20:31:43 But, at least you got to fight a bunch of trolls and orcs on the way down. You even had an elf and a wizard as buddies who wandered around doing stuff on their own. 20:32:12 I thought it was pretty damn cool when I wrote it, but I was about 11 or 12. :) 20:35:28 :P 20:35:59 hsa anybody used bigforth before? 20:36:01 It's a perfect project for my current Forth abilities. ;) 20:36:08 slava, I used it about an hour ago. 20:36:26 I though the screen viewer was neat. Then I exited it. :P 20:36:49 its sort of like what i want to achieve 20:37:07 Forth with a GUI library? 20:37:25 And OpenGL bindings? 20:37:39 well, an integrated development environment 20:37:48 it won't be a GUI, but a styled-text-CLI-with-hyperlinks ;) 20:38:25 I guess I've not seen the IDE aspects of bigForth. 20:39:08 well, the browser, the editor, its all integrated in some sense :) 20:40:09 Heh. 20:40:11 Debugger? 20:40:43 I'd love to see a Forth with an MSVC-like debugger. 20:40:50 msvc? 20:40:58 M$ Visual C. 20:41:08 yea 20:41:13 whats so good about its debugger? 20:41:20 It's the environment I'm most familiar with for development. 20:41:35 sheesh... kids these days 20:41:50 i read sluggy! 20:42:28 --- part: thin left #forth 20:42:28 Well, it pretty much has everything you need, and it works well. Breakpoints, various forms of stepping, watch window, memory dump, stack trace, etc. 20:42:41 disassemble 20:43:28 I actually kind of like MSVC for C development. It's not at all bad. One of the few products from Microsoft that (a) actually works, and (b) is actually half-way convenient to use. 20:43:37 And implementing all of this on a Forth system should be so much more straightforward than C/C++. 20:43:42 Though I have to admit, I still prefer VI/ctags over it. 20:43:50 ctags? 20:44:06 ctags rocks. 20:44:08 i adopted it to forth 20:44:24 A program that understands the structure of a C program to extract the location of all the identifiers and (optionally) type information, so that you can use Emacs or VI to *rapidly* jump to certain symbols. 20:44:33 slava: Nice. :) 20:44:41 For Forth, I normally just use search though. 20:44:49 I haven't had a reason to use ctags for Forth yet. 20:44:53 > cat ~/.ctags 20:44:53 --langdef=forth 20:44:53 --regex-forth=/^:[ \t]*([!-~]+)[ \t]*/\1/d,definition/ 20:44:53 --langmap=forth:.factor.lsd 20:45:03 except the --langmap will need changes :) 20:45:33 Hmm. Well, sounds neat, but I wouldn't call that an IDE. ;) 20:45:56 The MSVC debugger is king for me... it's saved my butt many many times. 20:46:34 Ironically, that's the one thing I feel needs the most improvement. 20:46:35 Then again, I have been using MSVC for the past 7 years. 20:46:57 How so? 20:47:32 The MSVC debugger is nice overall, but it sucks baboon balls when it comes to debugging assembly language code. :( And the memory "watch" functionality and memory dump functionality often get out of sync with the code you're stepping through. 20:47:47 Even for C code. 20:48:44 Which version of MSVC were you using? 20:48:56 And what do you mean by "out of sync?" 20:48:56 MSVC 6.2 or some such. 20:49:18 A variable's address will be 0xDEADBEEF, but monitoring or dumping 0xDEADBEEF *won't* display the variable's contents. 20:49:43 I've never witnessed this effect. 20:50:00 It's been a rather consistent tool for me. 20:50:05 I have. It was a repeated occurance when I was working at Hifn to debug potential problems with chips (which turned out more often than not to be software issues) 20:51:16 Anyway, I think Forth could gain some major acceptance if such an IDE Forth was available, with a cool hyperlinking editor to boot. 20:51:51 That is, if it was free. :) 20:52:14 I imagine Swiftforth is something like this, though I haven't used it personally. 20:54:33 I don't know. 20:54:46 Win32Forth has an IDE. 20:55:50 What IDE? 20:56:09 text debugger? 20:58:54 Having installed Win32Forth, and gotten to this point, you are probably 20:58:55 starting to become familiar with the hyper-text editor/browser (and now 20:58:55 also debugger) integrated into Win32Forth. 20:58:55 It's FAQ says that is has a hyper-text editor/browser and debugger. And WinEd, the editor. 20:59:26 Oop there earlier three lines were quotes from its help file. 21:09:20 here is something you guys might like 21:09:28 consider the stack effect of a function to be a pair (in,out) 21:09:40 define x*y to be the stack effect of first executing x, then y 21:09:49 this forms a very strange algebra indeed 21:10:09 however, if you define alpha((in,out))=out-in, 21:10:16 then alpha(x*y)=alpha(x)+alpha(y) 21:10:40 i'm trying to think of other such mappings from stack effects into simpler algebras... 21:10:56 slava: I'm sorry, but you horrifyingly complicated the first case. 21:11:02 x*y is simply the act of concatenation. 21:11:11 What the *heck* does alpha(x) actually *do*? 21:11:19 yes but x and y are not programs here, they're pairs of numbers. 21:11:28 You didn't define that. 21:11:30 [1,2]*[2,1] == [1,1] 21:12:10 So x and y are the *number* of items on the stack, not the stack effects themselves. 21:12:17 yes 21:12:41 So alpha(f) is the logical inverse of f. 21:14:25 if you define beta(in,out) = min(in,out), then there is a 1-1 relation from (in,out) to (alpha,beta) pairs, but i cannot think of a simple formula for beta(x*y) in terms of beta(x) and beta(y). 21:14:30 this isn't going anywhere :) 21:18:28 night. 21:18:30 --- quit: slava ("Leaving") 21:23:14 Oh...kay... 21:23:37 If that's meant to simplify things, then I'm sorely inadequate for programming. :) 21:28:07 Anyway, I'm going to go back to work on my FTS1002 chip design. 21:28:14 This thing is going to be sweet when it's done. 22:08:36 --- join: Serg (~z@212.34.52.140) joined #forth 22:27:39 --- quit: yeoh ("User pushed the X - because it's Xtra, baby") 22:41:03 --- quit: Sonarman ("leaving") 23:26:39 --- quit: kc5tja ("THX QSO ES 73 DE KC5TJA/6 CL ES QRT AR SK") 23:29:33 --- quit: Serg () 23:59:59 --- log: ended forth/04.04.08