00:00:00 --- log: started forth/03.09.18 00:05:12 --- quit: Grant_P (Read error: 110 (Connection timed out)) 00:36:29 --- join: gilbertbsd (~gilbert@fl-nked-ubr2-c3a-37.miamfl.adelphia.net) joined #forth 00:36:51 A B program is implemented as a reverse Polish threaded code interpreter: 00:37:01 that sounds very much like a language I've heard of ... 00:37:07 just can't put my finger on it :| 00:37:13 http://cm.bell-labs.com/cm/cs/who/dmr/kbman.html 02:59:35 --- log: started forth/03.09.18 02:59:35 --- join: clog (nef@bespin.org) joined #forth 02:59:35 --- topic: 'Welcome to the most versatile and extensible and l33t programming language (which incidentally started out as a prank) ---- Forth forum: forum.forth.bespin.org ---- Talk to us about all of your ANS/Color/whatever Forth needs .... and don't forget to say Moo.' 02:59:35 --- topic: set by arke on [Tue Sep 16 22:34:22 2003] 02:59:35 --- names: list (clog Grant_P skylan onetom _arke_ njd rpc ianP I440r-wrk @ChanServ Robert TreyB) 03:37:52 --- join: Serg_Penguin (Serg_Pengu@212.34.52.140) joined #forth 03:38:06 --- quit: Serg_Penguin (Client Quit) 04:51:36 --- join: Serg_Penguin (Serg_Pengu@212.34.52.140) joined #forth 04:52:48 --- join: Grant1 (~pyromania@202.59.99.234) joined #forth 05:08:26 --- join: hovil (~matt@CommSecureAustPtyLtd.sb1.optus.net.au) joined #forth 05:11:03 --- quit: Grant_P (Read error: 110 (Connection timed out)) 05:12:43 --- quit: Serg_Penguin () 05:13:55 --- join: Serg_Penguin (Serg_Pengu@212.34.52.140) joined #forth 05:14:03 --- quit: Serg_Penguin (Client Quit) 05:14:57 --- quit: Grant1 (Read error: 104 (Connection reset by peer)) 05:17:24 --- join: SDO (~SDO@co-trinidad1a-42.clspco.adelphia.net) joined #forth 05:39:58 --- quit: hovil ("No windows for this server") 05:46:55 --- join: mur (~mur@h31n2fls31o965.telia.com) joined #forth 05:52:02 Terve, mur 05:52:14 Today mur's IRCing from Sweden ;) 05:56:53 today i was feeling shittyu 05:57:03 i shoudlnt have started working in pairs 05:57:06 i want to change subject 05:57:10 Hm? 05:57:10 of the "poster" 05:57:22 school work 05:57:27 we are doing poster 05:57:31 Oh.. 05:57:34 ended 1/2 of the part 05:57:49 next perioid of the course we'll be working on computer 05:58:02 the person (telling about others in school is a bit hostile environment :) 05:58:47 anyways he's maintaining hardly resolving / unresolving array of thoughts in poster and he cant put them down to some decent amount of .. which woudl be required by the poster 05:59:03 Ehm, OK. Poor little mur having to work with such a person 05:59:06 ad it's hard to work, i want to do some political 05:59:10 yes 05:59:13 sad world 05:59:27 i coudl ask to do someting else next part of it 05:59:31 if it's possible 05:59:31 :P 05:59:34 Hehe. 06:00:31 visited btw new restaurant (where you get cheap student meals also) nearby. it's very nice place. i will visit it again. tomorrow they'd have has vegetarian (not sure if those are for real) some paprika mushroom pizza. i dont like to eat mushrooms. 06:00:47 cleared screen. in school anyways. 06:00:49 ;) 06:01:56 --- quit: mur ("Changing server") 06:03:06 --- join: mur (~mur@h31n2fls31o965.telia.com) joined #forth 06:04:59 wb 06:05:13 * Robert likes to eat mushrooms. 06:05:18 Don't you even like kantareller? :) 06:05:27 not any type 06:05:41 i coudl draw them, they look nice, but i dont like they feel in mouth 06:05:41 :( 06:06:51 hehe to the topic 06:07:30 Bleh. 06:07:34 tomorrow we have freehand drawing 06:07:49 practising style 06:07:54 i took nice digiphotos 06:07:54 I'm not that good at drawing stuff. :/ 06:07:59 me neither 06:08:22 next week we have superbooked living human drawing 06:08:24 :P 06:08:40 starts 8.30 and 30 min dinner break and ends 16.30 06:08:43 Heh. 06:08:49 Have you hired a naked lady? 06:08:53 => 1.5 hours more than normally 06:09:05 minus the coffee etc breaks 06:09:15 <_arke_> mur: terve. 06:09:22 terve rk 06:09:38 --- nick: _arke_ -> arke 06:09:42 i think Rk might mean riffle in finnish military abbreviations 06:09:56 not sure,but iirc 06:10:21 rifle? 06:10:23 hehe 06:10:33 yes, i've got a big rifle. 06:10:43 well military one 06:10:53 something like rk m-86 what ever 06:11:08 hehe 06:11:23 i dont remember models and dont care to 06:11:34 * arke eyes Robert 06:11:44 Robert: i just remembered... 06:11:49 m-86 implies a mauser 06:11:55 not sure what teh rk would be 06:12:02 M8 6 06:12:16 might have some interesting ideograms if you think teen way 06:12:49 Robert: i wanted to tell you that your parsing list is 18 bytes, without loops, and mine is 16 bytes, WITH loops 06:12:53 the mil officers (all around world) have so unimaginary way to name stuff with M representing word model and year number 06:13:10 so m03 riffle woudl be this year model of civil killer 06:15:43 Robert: also, my init code is smaller 06:16:42 Ehm. 06:16:51 What init code? 06:17:22 the code that every compiled proggie that you produce has at the beginning 06:17:36 OK. What does your look like? 06:18:07 mov bx, 0x9090 ; actual adress is filled in later 06:20:55 Robert: but either way, what is that extra byte in your token list? 06:22:57 oh, nevermind. 06:23:00 i found it :) 06:25:25 Eh. 06:25:52 Can you paste your full initialization code, please? 06:25:53 hm 06:25:58 For the brainfuck program. 06:26:50 this is the init code for the compiled program, not the actual compiler 06:27:08 I know. 06:27:11 Paste it. 06:27:18 (For the compiled program= 06:27:19 ) 06:27:24 mov bx, 0x9090 ; actual adress is filled in later 06:27:26 xor ax, ax 06:27:46 And then? 06:27:52 mov cx, 0xffff ; any better way to do that? 06:28:06 rep stosw 06:28:08 ack! 06:28:10 wtf 06:28:14 That'll crash everything. 06:28:15 its mov cx, 0x00ff 06:28:18 Oh. 06:28:24 :D 06:28:54 erm, damn, i forgot something 06:28:59 cx = 0xff 06:29:00 mov di, bx 06:29:04 When the program starts. 06:29:11 And ax is usually 0. 06:29:22 So those instructions aren't needed. 06:29:36 oh fun! 06:29:44 bx is 0 at the beginning. 06:29:48 dx is undefined. 06:29:54 di = 0xfffe 06:29:55 well so you'd think! 06:30:01 si = 0x0100 06:30:11 but wait until the processor / os developers have something to say 06:30:20 bp = 0x09xx (where xx is undefined). 06:30:40 wow, i can cut out major bytes that way! 06:31:33 * mur bytes arke a bit 06:31:41 7 bits left 06:31:47 :) 06:33:00 :) 06:33:07 and ax, ax = 2 bytes, no? 06:33:18 test ax = 1 byte, but does the same, no? 06:33:24 Eh. 06:33:28 You can't do that. 06:33:33 What are you trying to do? 06:33:36 damn. 06:33:48 and ax, ax; jz .eof 06:34:08 i count 5 bytes there. must be less. 06:34:11 That's a good way, and so is "or ax,ax" which I prefer to use. 06:34:15 I count 4 bytes. 06:34:20 or ax,ax ; 2 bytes 06:34:21 and ax, ax = 2 06:34:23 jz .eof ; 2 bytes 06:34:26 jz = 1 06:34:28 .eof = 2 06:34:30 No. 06:34:35 8-bit relative offset. 06:34:40 In the jump. 06:34:50 oh. 06:34:52 sw33t 06:35:00 4 bytes, then. 06:35:06 but the and part is still 2 bytes 06:35:22 isnt test ax the same as cmp ax, 0????????? 06:35:27 i can't bite you 6 more bytes, how'd you manage with one bit?! 06:35:34 You can't do "test ax". 06:35:43 erm 06:35:47 what does test do? 06:35:53 test 06:36:00 i think i migght have something else in mind here .... 06:36:03 arke: It's just like AND, but without storing the result. 06:36:21 erm 06:36:23 so 06:36:23 arke: So "and ax,bx" and "test ax,bx" sets the same flags, but test doesn't modify ax. 06:36:37 test ax, bx = 2 bytes tho, right? 06:37:26 Yes. 06:46:04 damn. 06:46:17 any one-byte way to do that? 06:49:13 gotta go to school, later 06:49:33 go school later 06:49:42 excuse with forth script 06:50:03 like perl's haxors /24sfepamfe/#@idfn24 06:50:10 (#)(%/)#(/%)"(&€"=)&#(=)#(%=)#(%=)#(%ASFS 06:50:29 then you can say, "but it is valid code, how can you blame about it?" 06:56:05 bad joke :P 06:56:13 Robert: school's over? 06:58:06 --- quit: arke (Read error: 60 (Operation timed out)) 06:58:14 Yes. 07:05:55 --- quit: mur ("cd-rw todo") 09:09:41 --- join: Herkamire (~jason@h000094d30ba2.ne.client2.attbi.com) joined #forth 09:15:05 Hi Herkamire 09:32:45 hi Robert :) 09:33:57 I am soon to celebrate my 500th commit to my personal repository 09:34:03 I'm at 499 09:37:03 Heh, congratulations :) 09:40:43 and how old is your project ???? heheh 09:44:32 almost 8 months I think. 09:44:51 that's commits for the whole repository though. 09:45:03 but most are my forth project 09:46:43 the repository has been running since: 12 Jul 2002 09:48:09 that's still averaging more than a commit per day :) 09:51:33 Heh. 09:52:05 That's pretty much, more than my yearly backup of the projects/ dir ;) 09:52:59 yearly? 09:53:13 I try to backup every week 09:53:37 I'm so lazy. 09:53:56 And "backuping" usually means putting it on the web server, which is on the same HD. 09:54:39 same HD isn't backing up, unless you are just trying to protect against deleting stuff by accident 09:55:13 my major concern is HD corruption or lightning or something. 09:55:54 Yeah... I just need to find somewhere to backup to. 09:56:03 Or, well.. I do have a couple of shells. 09:56:08 They probably don't mind. 09:56:55 I really like having my own server :) 09:57:07 This computer is my server, heh. 09:57:21 On a semi-stable 0.5mbit line.. hooray. 09:58:34 eventually I will have two servers that automagically backup onto eachother. (probably hourly) 09:58:48 but for now it's manual, and just between the server and my home computer 10:46:12 --- join: tathi (~josh@pcp02123722pcs.milfrd01.pa.comcast.net) joined #forth 11:25:02 --- join: squire (vikas@61.1.138.83) joined #forth 11:27:49 --- quit: squire ("Client Exiting") 12:22:02 --- join: bashfire (~bashfire@pD95458DE.dip.t-dialin.net) joined #forth 12:25:56 terve 12:33:09 Hyvää iltää 12:33:32 ää? 12:34:47 btw is there still a forthofftopic#? 12:35:08 No idea. 12:35:22 I think off-topic discussions are allowed in here again, when thin is away. :) 13:07:02 --- quit: tathi (""rebooting"") 13:15:41 --- join: thin (thin@bespin.org) joined #forth 13:17:54 --- topic: set to 'forth did not start out as a prank, are you thinking of a different language?' by thin 13:18:04 --- quit: thin (Client Quit) 13:31:59 Heh. 13:38:18 --- quit: Herkamire ("life, liberty and the persuit of happiness") 13:42:08 Robert: hey what? 13:43:49 "heh", i said. 13:44:03 I was just suprised by thin's appearance. 13:45:09 why surprised? 14:22:05 --- join: wossname (wossname@HSE-QuebecCity-ppp80661.qc.sympatico.ca) joined #forth 14:34:38 Yay. 14:34:40 I love Forth. 14:34:49 Spent 2 hours debugging 3 lines of code. 14:34:55 @$#! 14:34:58 Hi wossname 14:35:10 hi robert 14:35:19 i hope your lines of code had many symbols 14:35:53 lol 14:35:56 you moron 14:36:05 :P 14:36:24 is @$#! a valid word ??? "_ 14:36:28 what does it do ??? heh 14:36:30 I440r-wrk: Worst thing of all, I ripped those 3 lines off from isForth!! 14:36:35 lol 14:36:36 what 3 lines 14:36:50 I440r-wrk: ;code does> ,call 14:37:01 thats more than 3 lines 14:37:07 ;code is tricky :) 14:37:11 does> uses ;code 14:37:15 Nah. 14:37:16 do you have them working now ? 14:37:19 Yep :)) 14:37:30 you need ;uses too 14:37:36 i think ;uses is more efficient than does> 14:37:58 : (;code) r> last 2+ @ 1+ dup>r 2+ - r> ! ; 14:38:35 : does> (compile) (;code) (,call) (does) ; immediate 14:38:45 (does) is dodoes btw 14:38:52 figured that heh 14:39:03 Which is ported from isforth and converted to 16 bits. 14:39:13 Now things work fine. 14:39:13 thers a reason they are called "do" words - dovariable, doconstant etc 14:39:48 Well, I just put parens around do-words... looks nicer :P 14:39:52 Anyway 14:40:04 parens implies primatives to a word 14:40:17 which isnt wrong, just isnt as right here as it could be :) 14:40:23 like (lit) 14:40:28 which some people call DOLIT 14:40:29 lol 14:41:12 I really got to love even more Forth now, when does> etc., for/next, begin/until/repeat, could be implemented in like 8 lines. 14:41:25 * Robert would like to se the gcc developers do that. 14:42:27 its begin/until and begin/while/repeat and begin/again 14:42:47 they could do it in 8 lines 14:43:01 but they would have 20489652904886290475 lines underneath those 8 lines :) 14:43:33 Hehe. 14:43:59 Here I just have branch/?branch/?nbranch to support those definitions. 14:44:12 And >r r> for for/next 14:44:23 ?nbranch is 0branch 14:44:26 not ?nbranch 14:44:32 Bleh. Here it is! 14:44:39 0branch is the same as ?branch but with the opposite sense 14:45:12 I made up my own names, heh. But I happend to re-invent "param" which I later saw existed in isForth. 14:45:28 With the same function even. First time that happend ;) 14:46:16 same name ? 14:46:27 Yeah, and same function. 14:46:41 Same function but different name happens often ;) 14:46:42 i invented it too but MrReach told me at the time that there already existed a word to do that with a different name but i didnt like the name 14:46:46 so i stuck with param :) 14:46:53 Heh. 14:46:56 ill te you why 14:47:14 ytou have seen my code and when you need a function you "invent" it from memory without knowing it 14:47:25 im posative that alot of isforth was "invented" by me in that way 14:48:27 Heh 14:48:43 I had never worked with those parts of the code. 14:48:52 High-level words with params. 14:49:08 But sure, it might be possible 14:51:17 yup - but all it takes is for your eye to scan over the code 14:51:30 you can be scrolling at full speed and your brain DID register everything on that page 14:53:39 Hah, no explanation is too unlikely for you to claim copyright to my ideas :P 14:56:10 --- quit: skylan (Read error: 113 (No route to host)) 15:13:58 --- join: randolm (wossname@HSE-Sherbrooke-ppp79557.qc.sympatico.ca) joined #forth 15:17:54 --- quit: wossname (Read error: 104 (Connection reset by peer)) 15:18:01 --- nick: randolm -> wossname 15:22:00 --- join: randolm (wossname@64.229.237.190) joined #forth 15:32:24 --- join: arke (~rk@ca-cmrilo-docsis-cmtsj-b-36.vnnyca.adelphia.net) joined #forth 15:36:44 --- quit: wossname (Read error: 110 (Connection timed out)) 15:47:45 --- quit: randolm (":l^__^--") 16:08:44 --- join: kc5tja (~kc5tja@66-91-231-74.san.rr.com) joined #forth 16:08:44 --- mode: ChanServ set +o kc5tja 16:18:48 Hi 16:18:57 Howdy 16:19:08 * kc5tja is doing some design work on FS/Forth, now that I have the chance. 16:19:11 It's late here, 1:20, and school starts 8.30 tomorrow. Damn. 16:19:21 * kc5tja knows that feeling well. 16:19:22 Too much Forth coding, heh. 16:19:59 * kc5tja thinks his target compiler will be dreadfully simplified over its previous incarnation for DOS. 16:20:59 * kc5tja just wrote what I believe to be the core of the colon compiler, which is only three blocks in size: one for the colon compiler's main loop which also includes the code to scan the Forth wordlist, one to support compiler-words in the host's dictionary, and one to properly handle number conversion for compiling literals. 16:22:00 s/target compiler/Linux's FS/Forth target compiler/ 16:24:04 I make extensive use of return stack manipulation -- helps me to effect control-flow without a whole lot of IF statements and the like. 16:24:33 But I'm not sure I like it yet; manipulating the R-stack explicitly in code can be useful, but I'm wondering if what I did was an abuse. 16:25:06 So I'm not going to actually code it up yet. I'm going to sleep on it for a few days, and try designing several different versions so that I can compare them against each other. 16:25:53 y0 16:26:03 But, the problem with IF statements is they take up space in the source code, for not only the keywords but also the code to place sentinels on the stack. And the existance of those sentinels complicates stack management somewhat. 16:26:28 kc5tja: hows the stack like inside an if block, anyway? 16:26:33 So, exactly which is "simpler" is a matter of perspective, I guess. But I'm going to try both ways, then decide on a case-by-case basis. 16:27:19 arke: Like it is anywhere else; IF consumes its argument in my version of Forth, leaving whatever was beneath accessible. 16:27:38 aah 16:27:40 so 16:27:53 ( blah blah condition -- blah blah ) 16:27:57 Yes 16:28:43 aah fun :) 16:29:08 But in my code, I have constructs like this (note the declarative nature of it): 16:29:40 : forth? word literal ; 16:29:58 : word defined $e8 c, a, r> drop ; 16:30:20 : defined last -found? r> drop ; 16:30:37 : -found? begin dup table1 < if exit then check 4- again ; 16:30:44 : check length name ; 16:31:02 : length dup h@ here @ <> if r> drop exit then ; 16:31:05 and so on. 16:31:36 you use the return stack lots 16:31:58 The R> DROP statements effect the conditional control-flow I need to write what I want to say: : word defined $e8 c, a, r> drop means "a word is defined as $E8 followed by its address. Skip literal number interpretation." 16:32:20 No, actually, I don't. But I'm beginning to suspect I am not using it enough in my general-purpose Forth coding. 16:32:43 I'm using it a lot here only because the control flow would be damn complicated if I used regular IF statements and sentinels. 16:33:06 r> = psp to rsp, right? 16:33:30 Pop from R-stack -- so it moves the top of R-stack to D-stack. 16:33:41 aah 16:33:47 :) 16:33:57 : rdrop r> drop ; 16:33:58 :) 16:34:02 Heh. 16:34:21 You'd want to make that a macro instead ;) 16:34:39 : rdrop compile r> compile drop ; immediate 16:34:41 Something like that. 16:34:45 arke: Not quite, but the same idea. 16:34:47 Otherwise things will go wrong. 16:34:56 Anyway, I have to go to bed. 16:35:02 5 hours left to sleep... :) 16:35:09 Robert: Get some rest. 16:35:13 whats the compile thing? 16:35:14 I will, night. 16:35:17 * kc5tja knows what it's like to get 3 hours sleep before class. 16:35:19 It's not fun. 16:35:22 laters. :) 16:35:26 night 16:35:38 yeah, whats compile and immediate? 16:36:15 arke: Anyway, manipulating the R-stack as a first-class object like that allows me to produce some moderately English/declarative-style source code, and the core of the compiler loop plus the Forth dictionary search code all fits on 14 lines -- easily within a single source block. 16:37:23 arke: compile is a word that takes the next word in the input stream, and causes it to be compiled into the current definition instead of executed, even if the word is immediate (which R> always is, and DROP sometimes is). 16:41:04 arke: A word marked immediate has a flag set that tells the compiler to, unless otherwise directed (with POSTPONE or COMPILE, as shown above), execute the word rather than compile it in place. 16:42:16 IF, ELSE, and THEN are immediate words, for example -- instead of compiling a call to IF (which doesn't make much sense), the code for IF is executed "immediately," which usually causes the appropriate machine language instructions for condition testing and conditional branching to be emitted into the generated machine language. 16:43:57 Well, I gotta cruise. Aikido time, and I have to take a shower first. 16:44:04 --- quit: kc5tja ("THX QSO ES 73 DE KC5TJA/6 CL ES QRT AR SK") 16:53:47 --- join: TheBlueWizard (TheBlueWiz@pc1bdn1d.ppp.FCC.NET) joined #forth 16:53:48 --- mode: ChanServ set +o TheBlueWizard 16:53:58 hiya all 17:22:31 y0 17:24:14 why would : rdrop compile r> compile drop ; immediate be better than : rdrop r> drop ; 17:25:42 arke: cuz when the rdrop is *called*, the return address is pushed on the R stack, and thus perform the undesired behavior 17:30:07 --- join: I440r (~I440r@sdn-ap-010txhousP0477.dialsprint.net) joined #forth 17:31:13 hiya I440r!!!! :))) 17:32:22 hi :) 17:34:29 http://www.tripointglobal.com/Controls/default.htm 17:34:43 will look at it in a bit 17:35:08 :) 17:41:44 I440r: y0 17:42:09 hi 17:42:12 TheBlueWizard: oh, that makes sense. thanks! 17:42:53 I440r: how does isforth handle compiled and immediate code? 17:44:09 find returns a flag 17:44:19 and an tx 17:44:21 erm xt 17:44:26 hm? 17:44:31 the flag is -1 for non immediate words and 1 for immediate words 17:44:45 interpret will either compile or execute based on the current state and that flag 17:44:49 it xor's the flag with state 17:45:02 and the result is either zero or non zerp 17:45:11 meaning execute or compile 17:45:32 erm 17:45:45 i meant, how does it compile/execute, and how does it interpret? 17:46:44 an interpret is an execute 17:47:04 erm 17:47:05 i meant 17:47:08 find returns an execution token and we jump to that address if were in interpret mode or if the word is immediate 17:47:50 and calls otherwise? 17:48:06 comma 17:48:45 ? 17:49:12 , <-- 17:49:21 hem??? 17:49:22 if were in compile mode we COMMA the xt 17:49:29 store it? 17:49:49 no 17:49:51 NOT ! 17:49:53 , 17:49:55 comma 17:50:05 erm 17:50:15 make a new place in memry for it, and then store it? 17:50:45 : , here 1 cells allot ! ; 17:50:48 or something 17:51:03 what do all of those do? :P 17:51:20 allot = ( num -- address ), i know that 17:51:29 cells = 4 17:51:37 dont you know what here is ? 17:51:39 (in 32 bit :)) 17:51:41 nope. 17:51:55 i never use cells but everyone else does these days 17:52:01 its not even in isforth 17:52:27 portability :) 17:52:29 what does here do? 17:52:54 erm - here is like $ in assembler 17:53:04 its teh next address were going to compile into 17:53:28 so 17:53:57 blah $ blah $ would give me, lets say, 0x1111 and 0x1119? 17:54:03 or 17:54:03 no 17:54:04 heh 17:54:11 erm 17:54:37 bah, i dont get it :P 17:56:05 you dont understand fopr sure heh 17:56:09 do you know what 17:56:12 jmp $ 17:56:15 does in asm ? 17:56:19 infinite loop 17:56:27 what does $ mean tho 17:56:36 its the address currently being compiled into 17:56:38 $ is the address of the current line 17:56:42 thats what 'here' is in forth 17:56:47 but 17:56:52 how does that apply here? 17:56:57 as in 17:57:04 hm ... wait 17:57:07 , <-- comma IS forths compiler 17:57:25 it stores the top of stack at here and allots the space 17:57:46 ooh 17:57:48 hrm 17:57:48 so 17:57:57 : constant create , does> @ ; 17:58:13 : constant create here cell allot ! does> @ ; 17:58:19 ooh 17:58:20 so 17:58:46 basically, here would point to the next available space that the compiler/whatever is going to dump crap to 17:58:48 is that right? 17:59:02 its called the dictionary :) 17:59:21 the variable dp holds that address 17:59:30 but the word here returns it 17:59:43 : here dp @ ; 17:59:58 right 18:00:11 but sometimes dp is a hidden variable that you cant actually toucn 18:00:19 like you cant usually do 5 fp ! 18:00:22 erm dp 18:00:31 and where you can you shouldnt 18:00:58 hmmm 18:01:23 im thinking of how exactly im gonna store stuff, as well as how im gonna look it up quickly 18:03:47 right''''''''''''''' 18:03:52 ''? 18:04:07 sorry, im messin with my kbd and i didnt mean for that to happen heh 18:04:12 lol 18:04:16 hmm 18:05:53 keep the crap dump, with "internal crap allocator", then dump everything in it, from definitions to table entries :) 18:05:56 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 18:05:56 }| 18:06:02 gicrf iy 18:06:04 argh 18:06:06 fixed it 18:06:29 :) 18:27:24 gotta go...bye all 18:28:55 I440r-wrk: by the way, the website you mentioned earlier looks cool 18:29:06 thats teh stuff i work on :) 18:29:29 ah :) 18:30:01 totally l33t 18:30:04 :) 18:30:18 well, gotta go now...bye 18:30:25 --- part: TheBlueWizard left #forth 18:36:22 --- join: gilbertdeb (~gilbert@fl-nked-ubr2-c3a-37.miamfl.adelphia.net) joined #forth 18:40:21 --- join: kc5tja (~kc5tja@66-91-231-74.san.rr.com) joined #forth 18:40:21 --- mode: ChanServ set +o kc5tja 18:40:27 --- join: gilbertbsd (~gilbert@fl-nked-ubr2-c3a-37.miamfl.adelphia.net) joined #forth 18:41:28 re 18:41:37 aloha 18:41:43 * kc5tja doesn't have aikido today after all -- closed until next week or so. 18:42:10 kc5tja ever read about B's implementation? 18:42:32 No; never was particularly interested in B. 18:43:59 A B program is implemented as a reverse Polish threaded code interpreter: The object code consists of a series of addresses of interpreter subroutines. \ 18:44:12 I was surprised to see something that Forthy so close to B. 18:44:18 to *C 18:56:14 * kc5tja nods 18:56:36 Wow. I'm totally and utterly impressed with myself at the present moment. 18:56:58 * kc5tja just wrote the core colon compiler for FS/Forth, and it worked first-time, despite heavy, heavy R_stack manipulations. 18:57:15 --- quit: gilbertdeb (Read error: 110 (Connection timed out)) 19:31:13 kc5tja: whoohoo! 19:31:34 kc5tja: how lovely to have your company in this very great channel 19:31:43 bah. im sounding like a retard :) 19:36:34 Heheh :) 19:36:42 Sorry; I'm web browsing at the moment. 19:36:51 Trying to clean some code up too. 19:37:29 --- join: Herkamire (~jason@h000094d30ba2.ne.client2.attbi.com) joined #forth 19:37:47 Zzzzz 19:37:49 --- quit: gilbertbsd ("Told you I could quit any time!") 19:47:04 Yeah. Zzzzz. :) 19:47:07 Fell asleep at keyboard. 19:49:37 :) 19:49:40 hmmm. 19:50:16 how would i best deal with immediate code when im natively compiling? 19:51:07 Not enough information to answer that question. 19:51:43 im writing a proggie which creates COM files from forth source code. 19:52:18 Is the proggie itself written in the same dialect of Forth as you're target compiling? 19:52:21 what if they have, lets say, : blah cheese ; immediate, how would i best deal with that? 19:52:38 kc5tja: its written in asm :) 19:53:06 DOS asm, to be exact 19:53:08 The best solution is to write a Forth environment in asm, which can compile the Forth software you want, and save a "turnkey" copy of itself as a COM file. 19:53:27 thats exactly what i dont want to do :P 19:53:37 You really don't have much of a choice. 19:53:52 The purpose of an immediate word is to physically extend the compiler itself. 19:54:33 i was thinking having an "immediate stack", which changes the immediate code for : and ; to save the return address on the immediate stack. 19:55:20 The only alternative I can think of is to write the compiler so that it can execute said immediate words at compile-time -- but after doing that, you've got 75% of a Forth environment anyway -- may as well go full bore. 19:55:32 I really don't see how that would help the situation at all. 19:57:19 kc5tja: in forth terms, a : rdrop compile r> compile drop ; immediate would convert to a : rdrop r> r> drop >r ; 19:57:25 eh 19:57:25 no 19:57:33 well, sorta 19:57:34 :) 20:02:12 Yes, that's one way to implement it. 20:02:26 alright :) 20:02:27 * kc5tja has defined : 3rdrop r> r> r> r> drop drop drop >r ; in his target compiler. 20:02:45 But that doesn't always guarantee a clean conversion of immediate words to non-immediate form. 20:02:49 For example, IF. 20:03:14 if is treated as a special compiled word. 20:03:16 : if postpone cmp, $74 C, HERE 0 C, ; immediate 20:03:29 er hm? 20:03:39 That's the code typically found for the IF word. 20:03:53 whats postpone and cmp, 20:03:57 and $74? :P 20:04:04 "postpone cmp," generates the appropriate comparison instruction (usually OR EAX,EAX or some such). 20:04:10 $74 is the x86 opcode for JZ 20:04:27 C, places that opcode at the current compile point (e.g., HERE). 20:05:01 HERE 0 C, compiles a 0 offset for the JZ (so it defaults to JZ $+4), but the address of the operand is left on the data-stack for later fixup by either ELSE or THEN. 20:05:30 0 == +4?? 20:05:32 As you can see, IF (as simple as it is) is not able to be cleanly un-immediated. :) 20:05:55 well, since im treating IF as a special case, it shouldnt be that hard. 20:06:09 Herkamire: It's PC relative. After fetching the instruction operand, PC points just after the JZ instruction (since it's two bytes, I should have said $+2 instead). 20:06:18 arke: don't do special cases. do proper immediates. 20:06:30 Herkamire: read above convo. 20:06:31 Herkamire: He's apparently not making a full Forth environment. 20:06:47 immediates are so easy. 20:07:01 the word "immediate" just sets a flag in the last dictionary entry. 20:07:07 Herkamire: not if you have to compile them, with super-small binaries 20:07:23 and then you just have to add a tiny bit to your word that compiles things to check the flag, and call the word that executes stuff instead. 20:07:41 compile what? 20:07:57 Herkamire: i have to compile EVERYTHING 20:08:06 immediates are often used for optimizations (sometimes to make stuff smaller, sometimes faster (or both)) 20:08:07 :) 20:08:28 thats when you have a forth environment though 20:08:38 kc5tja: that's neat. in PPC if I do a relative branch to 0 it doesn't go anywhere (just spinnnnns) 20:08:44 im not making an environment, just a proggie that spits out pure binaries 20:09:01 arke: it's just as easy in asm 20:09:09 Herkamire: That's because the PowerPC keeps an opcode address associated with each instruction in the pipeline. I can do that sort of thing. :) 20:09:15 s/I can/It can/ 20:09:21 Herkamire: im writing this thing in asm :PO 20:09:22 :) 20:09:36 cant you do that with x86? 20:09:45 jmp 0x00??? 20:09:52 oh 20:09:56 wait 20:09:59 kc5tja: I'm not saying you should. I just think it's interesting that a relative branch on x86 goes one instruction further than a relative branch on PPC 20:10:00 * arke thinks 20:10:33 arke: You can freeze the CPU in x86 too -- just say "JMP $", which is encoded as -4 20:10:41 E.g., the PC OFFSET is -2. 20:10:45 Dang it, there I go again. 20:10:48 Make that -2. 20:11:03 kc5tja: yes, thats fun 20:11:08 kc5tja: well, its fun in DOS 20:11:09 I like having IF create a spin loop if I don't put in THEN 20:11:23 because I know what it is :) I know I either messed up the return stack, or forgot a THEN 20:11:50 arke: what difference does it make that you're writing it in asm? 20:11:59 Herkamire: Well, it's just as easy to do in x86 as it is in any other environment (except only 680x0, which traps when you try to do something like that). 20:12:03 Herkamire: erm, i thought that was what you're implying :) 20:12:23 what does IF do to the return stack? 20:12:31 arke: Nothing at all. Ever. 20:12:32 arke: I wrote my forth kernel in asm too 20:12:47 Herkamire: mine is not a forth kernel though!!!!! 20:12:48 :P 20:12:54 ooooops. I meant data stack! 20:13:01 :) 20:13:18 arke: what is it? 20:13:24 forth compiler? 20:13:27 yes! 20:13:31 same thing 20:13:36 no!~ 20:13:37 Well, it's not Forth if it can't handle immediate words. 20:13:43 It could be a Forth Subset though. 20:13:49 it can handle them, just in a different way 20:14:09 How? 20:14:45 arke: I really think that you will want immediates 20:14:51 they really help in creating small binaries 20:15:09 how? i would have to include an interpreter. 20:15:19 you need an interpreter anyway 20:15:27 or a compiler or whatever you call it. 20:16:48 not in the actual binary. 20:17:25 (afai can tell) i could completely simulate a immediate by just giving immediates a separate return stack 20:17:48 Immediate words are not called at run-time though! 20:17:52 They're called at compile-time. 20:18:00 hm? 20:18:05 then how would that work? 20:18:18 : rdrop compile r> compile drop ; immediate 20:18:44 : ] begin word compilerWord? IF execute ELSE ForthWord? IF Compile, ELSE Number, THEN THEN again ; <-- Forth compiler (inspired by Pygmy Forth) 20:18:45 how would that be called at compile time? it wouldnt know where the stack is, or anything.. 20:19:00 Yes it does. 20:19:10 The word uses the compiler's data stack and return stack. 20:19:24 See my definition of ] above. 20:19:27 bleh 20:19:34 i dont get it :) 20:19:48 Think about it. 20:19:59 You're special-casing IF to compile condition branches at compile-time, right? 20:20:19 and ELSE, and THEN, and BEGIN, and AGAIN, and UNTIL, and WHILE, and . . . 20:21:07 The compiler is already aware of the Forth environment's word list, so instead of creating this monsterously huge special-case table, it simply searches this wordlist for compiler words instead. If they exist, the compiler invokes them directly. 20:21:34 hwo would it know about the value at compile time tho? 20:21:36 It's just a glorified compiler look-up table that happens to use the Forth's own dictionary as its mechanism. 20:21:47 How would what know what value at compile-time? 20:22:29 --- join: LOOP-HOG (TofuMonste@207.191.240.159) joined #forth 20:23:03 wb LOOP-HOG 20:23:08 tanks 20:23:18 who b in a chatting mood? 20:23:42 * kc5tja is currently hacking on FS/Forth 20:23:51 I AM!!! 20:24:07 i wanted to get some input on MUSH 20:24:12 I440r: can you explain the how-immediates-work-at-compile-time thing to me? 20:24:25 i mean MUCK 20:24:35 like tinyMUCK 20:26:11 do you know what it is? 20:26:18 i dont :) 20:26:32 it is a MUD programmed in Forth 20:26:38 i was thinking of trying it out 20:26:41 :) fun 20:26:44 i probably will anyway 20:26:48 dont knwo anything abou tit tho 20:26:54 about it* 20:26:54 i have a few urls 20:26:54 lol 20:27:05 arke: Freudian tit? :) 20:27:19 http://dragon.muck.com/ 20:27:33 http://www.evermore.com/pegasus/ 20:27:44 http://www.furry.com/index.shtml 20:28:13 its different from other rpgs though 20:28:30 they don't level, its much more like collaborative storeytelling 20:28:39 its nongraphical 20:29:05 heck i don't really like any of the commercial online RPGs 20:29:41 i was going to gleen google for more and then try to decide which one to join 20:30:14 I wonder if they will let me be a groundhog 20:30:30 arke: an "immedaite word" is simply a word that the compiler executes when in comes to it in the source (even if it's within a definition) 20:30:55 arke: Hence it's qualifier: an immediate word always executes immediately. 20:30:59 LOOP-HOG: discworld is a great mud 20:31:43 kc5tja: i still dont get it :P 20:31:52 hm 20:32:02 I440r: how does isforth compile immediate words? 20:32:11 a quite simple way to implement immediates is to have a flag in the dictionary that says if it's immediate or not. then when the compiler comes to a word in a definition, it must check the flag. if set execute the word, otherwise compile a call to it. 20:32:35 arke: you're thinking too much. it's not complex. 20:33:03 Herkamire: i dont get how the immediate word has access to whatever is on the stack whcih it modifies 20:33:27 in most forths, when the compiler/interpreter sees this: : me if . then ; 20:33:39 arke: one of the registers is a pointer to the stack right? 20:33:51 arke: are you cross compiling? 20:33:52 arke: IT DOESN'T. 20:33:54 psp is sp, with top of stack in bx 20:34:13 Herkamire: no, DOS .com creates DOS .com files 20:34:23 arke: As an immediate word, it only knows what the compiler knows: where the current location to compile to is (HERE), and whatever environment the compiler currently has. 20:34:55 arke: to create nested control structures (like: : bt if bla if bla then then ; 20:35:01 you will need a stack 20:35:19 --- join: LOOP-HOG2 (TofuMonste@207.191.240.10) joined #forth 20:35:27 flakey line 20:35:35 kc5tja: then how would it drop the to rstack? 20:36:12 arke: Then how would what drop what to what r-stack? Your questions are not making sense. 20:36:12 arke: immediates don't need access to any particular stack, but some (like if/then for/next do/loop etc) need a stack to store address of the begining of the construct 20:36:29 Immediate words are compiler words -- their job is to compile stuff. 20:36:44 exactly. immediates are for compiling instructions 20:36:46 Compilers don't know anything about the code that will eventually be run; hence, neither do immediate words. 20:36:53 wwwwaaaaaiiiiitttt 20:37:00 so 20:37:25 downloading GMUD now 20:37:25 : rdrop compile r> compile drop ; immediate actually just compiles r> and drop into the code? 20:38:10 we define a word like IF to compile instructions to compaire the top of stack with zero, and then compile a relative conditional branch. it also needs to store the current code address somewhere so that THEN can fix the relative branch to go to the right place. 20:38:32 this definition for IF must be executed at compile time. 20:38:43 : bla if . then ; 20:38:51 : if postpone cmp, $74 C, HERE 0 C, ; immediate 20:39:05 when the compiler gets to the "if" above, it must execute if so it can compile what I mentioned. 20:39:13 what exactly do each postpone and cmp, do? 20:39:24 when it gets to THEN it must execute then, so that THEN can fix the branch compiled by IF. 20:39:39 when it gets to ; it must execute that to compile instructions to return. 20:39:56 Herkamire: does IF put the return address for THEN onto the rstack? 20:40:08 no 20:40:23 www.fur.com/tapestries/ LOL!!!! 20:40:32 IF usualy puts the address of the relative branch instruction on the _stack_ (not rstack) 20:40:35 I'm sorry i found that :^) 20:41:19 aaaaaaaaah 20:41:31 i get it now :) 20:41:40 and in compiled words, the word "compile" is ignored, right? 20:41:42 thats the problem with Forth, you can do ANYTHING with it :^P 20:42:05 arke: Postpone compiles the following word (which is assumed to be immediate) as if it were NOT immediate. 20:42:30 arke: So, in the above definition for if, postpone cmp, allows if to invoke cmp, as part of its behavior. 20:42:47 Without the postpone, cmp, would execute when IF was compiled. :) 20:42:59 kc5tja: what does cmp, do then? 20:43:07 (versus when the word that *uses* if is compiled) 20:43:33 arke: That's some bullcrap word I made up which, hypothetically, compiles the opcode bytes for "or eax,eax" or, for 8086, 'or ax,ax'. 20:43:46 (largely because I couldn't remember the opcode bytes) 20:44:09 i like it :) 20:44:22 but 20:44:30 wait 20:44:35 i think i'll find another theam 20:44:49 : cmp, $(or ax) $(ax) ; 20:44:53 :) 20:46:53 whats the behaviour for 'compile' in a compiled word? 20:48:06 I commited revision 500 in my personal repository :) 20:48:27 * Herkamire will have martinelli's to celebrate tomorrow 20:49:29 arke: It compiles the following word in the word currently being defined, not in the compiler word itself. 20:49:46 so 20:50:04 in a compiled word, it doesnt make a difference if you have compile drop or drop ???? 20:50:19 MUF is Multi User Forth, its what MUCKs are programmed it 20:50:22 http://www.rdwarf.com/mink/downloads/bell.muf.html 20:50:27 brb 20:51:38 arke: It makes a hhuuggee difference. 20:51:48 Suppose we have the following words: 20:51:56 : plus compile + ; immediate 20:52:02 : sum 1 2 3 plus . ; 20:52:06 : sum2 1 2 3 + . ; 20:52:15 oops 20:52:19 : sum 1 2 plus . ; 20:52:22 : sum2 1 2 + . ; 20:52:42 sum and sum2 not only produce the same results, but actually have identical code in their definitions. 20:53:09 This is because plus /compiled/ + into the current definition. 20:53:39 what would happen if plus was not immediate? 20:53:48 It doesn't need to be. 20:54:03 Well, I see what you're saying. 20:54:19 : sum3 1 2 compile + . ; 20:54:19 An immediate + compiles an actual add instruction, while the COMPILE'd word is a subroutine call to the + routine. 20:54:26 arke: That will crash. 20:54:31 how come? 20:54:32 --- quit: LOOP-HOG (Connection timed out) 20:54:39 You're getting horribly confused between the current word and the current definition. 20:54:46 They are not the same. 20:55:00 The current word is the word that is currently executing. 20:55:10 The current definition is the word that is actively being created. 20:55:27 why would sum3 crash though: 20:55:28 ? 20:56:20 Because as soon as you execute it, you put 1 and 2 on the data stack, and then it will attempt to compile "+" into the current definition (which there is none!!), and then it'll print the '2', leaving only 1 on the stack. 20:56:41 oooh 20:56:47 so 20:57:06 in a compiled word, compile and the word it refers to is ignored! 20:58:22 No. But the end result is definitely not what you thought it was. 20:58:37 There are very few (any?) do-nothing words in Forth. 20:58:50 Unless you define it yourself to do nothing, assume a word does something. Always. :) 20:58:51 : nop ; 20:59:00 :) 20:59:30 so how would i compile compile ? i would think to not compile it at all ... 20:59:31 :) 21:00:25 That is Forth system dependent; there is no one answer to that. 21:00:35 alright. 21:00:38 --- join: LOOP-HOG (TofuMonste@207.191.240.132) joined #forth 21:00:39 Some (like Pygmy) let you say "COMPILE COMPILE COMPILE FOO" 21:00:45 thanks alot :) 21:00:50 kc5tja: wow ... 21:00:56 Others will behave like the kid in Poltergeist if you do something like that. 21:01:42 my kernel does persistant variables :) 21:01:47 arke: Yeah, Forth is a monsterously powerful language under the hood. Once you understand the compiler, you understand virtually everything about that particular Forth. 21:02:02 Herkamire: I wish I could do that. That's the ONE thing I *love* about ColorForth. :) 21:02:03 unfortunately I can't create, edit or see them in the editor yet :) 21:02:18 heh, im gonna be a guru once im done :) 21:02:35 persistant vars 21:02:35 I should go to bed now, but I can't resist turning a couple things (cur-block and cursor-position) into persistant variables 21:02:35 arke: Don't feel bad for not getting this at first, and be prepared to make a lot of mistakes. 21:02:35 ? 21:02:49 Even Chuck Moore took 15 years of coding to get Forth to the level we know it as today. 21:02:53 i am prepared :) andn used to making mistakes, too 21:02:58 arke: that's why I wanted you to write a forth. you learn soooo much 21:03:00 chuck is a great man... 21:03:32 i hope to someday meet him in person 21:03:32 * kc5tja burned 635MB worth of his videos from Ultratechnology onto a CD-ROM here. 21:03:40 maybe i can get his autograph 21:03:43 yeah :) that's what's great about programming is learning new concepts, and especially new ways of thinking 21:03:49 I have 270MB of videos left, but I'm not going to burn the "Disk 2" until I can fill it up with something useful. 21:03:51 --- topic: set to 'well, theres a prank which says forth is a prank, which is obviously a prank, but then again, theres a prank saying that C is a prank as well .... gosh, im using the word prank alot :)' by arke 21:04:07 i have a disk or two that Jeff Fox sent me a few years ago 21:04:22 Jeff Fox? isnt he a comedian? 21:04:23 :P 21:04:31 arke: That's Jeff Foxworthy. 21:04:33 Different person. 21:04:39 different Jeff 21:04:41 heh 21:04:51 this jeff designs forth chips, iirc 21:04:54 the quick brown fox jumped over the lazy dog 21:05:38 arke: If you're up for some really heady philosophical discussion, go to the http://www.ultratechnology.com website, click on "Streaming Videos," then click on "1x Forth". Then review some of the other videos. That'll give you some extremely handy insights into Forth philosophy. 21:06:00 i dont knwo if im ready for that :) 21:06:30 arke: Well, at least check out his video on OKAD II. That'll give you some idea as to how powerful Forth can be. :D 21:06:43 did anyone else read the Feb 2003 Red Herring article about Moore's Law, and also the very-obvious implication intent to discuss how today's machines do just fine, and we still use more 8008 machines than anything? So that today's hardware will be around 30-40 years still being used, at least for some imbedded applications? 21:06:53 gosh, immediates are a great concept (now that i finally understand them) 21:06:56 i wonder what Jeff and Chuck are doing these days? 21:07:15 I think Chuck is looking to pay bills, and Jeff is making money :) using forth I hope. 21:07:36 I think we should all send 100 bucks each to Chuck as a 'thankyou!' letter. 21:07:39 i heard chuck comes here sometimes... 21:07:45 SDO: :) 21:08:04 really? 21:08:12 Last I heard that is true. 21:08:17 is that true? 21:08:18 if i ever get a job i will send chuck a thank you letter :^) 21:08:23 i heard his nick is cmoore 21:08:25 -1 21:08:28 ive got a job! 21:08:30 but 21:08:38 arke, do you? What do you do? 21:08:48 SDO: bus boy ... :( 21:08:48 I'm unemployable, and looking now for work for the first time in 8 years. 21:08:53 arke, ouch 21:09:05 SDO: wow, thats even worse than i440r :P 21:09:07 :) 21:09:19 SDO: what did you live off of? 21:09:20 my resume says "dont hire me" 21:09:29 arke, it sucks, but I'm going to have to make some money here somewhere, I'm running out of $$$ 21:09:34 LOOP-HOG ;) 21:10:31 sdo i just got out of that hole 21:10:34 phew! 21:11:01 anyway, it was a very interesting read about Moore's Law in the Feb 2003, and 8008 as well as 6502 processors and their future. The article even went so far as we have not exploited those processors yet to the fullest. 21:11:02 yay! now my forth editor comes back up exactly the way you left it (when you pressed S to save a bootstrap) 21:11:11 Herkamire :) 21:11:12 SDO: The reverse is true from what I understand; Chuck is working on the 25X chip, and Jeff is doing contract work. 21:11:36 kc5tja, I heard that the 25x chip was costing tons of money and chuck was looking for some $$$. 21:11:39 arke: Chuck comes when invited. He only came uninvited twice that I'm aware of. 21:11:42 And jeff is out doing work making $$$ 21:11:45 Jeff Fox, however, does sporadically visit. 21:12:12 anyway, I hope they do well, I chatted a few years ago with both, and they are both really nice folk. 21:12:15 maybe if i can get 20million dollars i can make something like GBA except that it plays online RPGs with the 25x 21:12:21 SDO: Chuck got commercial interest in the 25X (which I believe they upped the specs to the 50X, IIRC). 21:12:28 kc5tja, cool. 21:12:32 SDO: This was the last post by Chuck Moore on the ColorForth mailing list. 21:13:07 kc5tja, that is good to hear, I'm hoping the world turns back to FORTH and low level simplicity and gets out of the dillusional aspect of doing crazy layers on top of each other that makes my head spin. 21:13:08 What job does Jeff Fox have now? 21:13:14 don't know. 21:13:17 i hope that he can finally get some chips into production, that would be great 21:13:37 LOOP-HOG: I agree. 21:13:42 Heck, I'd be happy with a single F21 chip 21:13:47 That thing is neat-o. :) 21:13:55 I got a jolt of interest again in FORTH when I realized that indeed 30 years later we have chips that control our world and the P4 and other 'more powerful' chips only complicate it. 21:13:59 kc5tja: we need to invite him then! 21:14:00 :P 21:14:11 Though, I'd probably use 3 of them -- one for red channel, one for green channel, and one for blue, to handle 4096-color display on the SVGA monitor. 21:14:12 if we could get f21 chips then we could put them into VMUs and then put them on our keychains 21:14:23 We need to send him 100 bucks each and give him a hug, he deserves it. 21:14:31 SDO: i agree!!! :) 21:14:38 LOOP-HOG: VMU? 21:14:56 SDO: I'll do that when I can afford to. :) 21:15:12 Visual Memory Unit, its a tiny computer that keychain sized that is used for save-games for a Sega Dreamcast 21:15:17 Right now, my unemployment is no more, so I'm really scrambling to scrape up some cash. 21:15:27 it has a crappy lcd screen, a few ports, a joypad and like 2k ram 21:15:31 --- topic: set to 'somebody think of a reason for inviting our master and lord to this inferior place so that he may enlighten us ..... am i sounding completely stupid? i thought so too.' by arke 21:15:43 i always wanted a keychain computer that could be very powerful 21:15:50 me too! 21:16:15 --- topic: set to 'somebody think of a reason to invite Chuck Moore to this channel so that he may give another online fireside chat.' by kc5tja 21:16:26 LOOP-HOG: probably one with a USB port and some wireless thingy, and all kinds of nice features, and you can use it for anything :) 21:16:26 i'll get the logs 21:16:31 i just read the previous one 21:16:43 and it ended with the idea of doing another one soon 21:16:46 but it never happned 21:16:47 arke: Try to keep the references to religions down to an absolute bare minimum -- we're already considered "religious fanatics" by the majority of the computing industry. We don't need more criticism. 21:16:54 kc5tja: you got a job? 21:17:05 i would like to cram a bunch of stuff into it, like a Lithium Ion Polymer Batter and an LCD Flashlight 21:17:06 Herkamire: No, of course not. 21:17:28 LOOP-HOG: LCD flashlight? You mean LED? 21:17:31 kc5tja: you said "my unemployment is no more" 21:17:31 kc5tja: gladly. 21:17:37 * arke is an atheist 21:17:38 * kc5tja notes LCDs absorb light, not emit it. :) 21:17:41 yes LED, oops 21:17:48 btw, anyone here know how to make 'bulk' mail in Yahoo.com automatically empty? I am getting HUGE spam in Yahoo now. 21:17:53 M$ 'update' spam. 21:18:01 Herkamire: My unemployment _checks_ are no more. <-- clarification 21:18:12 kc5tja, :( sorry to hear that. 21:18:19 Time for SDO to bust a nut and make some money. 21:18:25 kc5tja: ooooh. right. 21:18:30 never had those 21:18:34 it would be fun to collaboratively design a sort of computer swiss army pocket knife 21:19:02 SDO: No clue. I am also getting horrendous amounts of spam. SO much so, I turned off the bulk mail feature, and I just manually empty my trash periodically. 21:19:20 kc5tja, I'm getting 1.9 megs per hour now. 21:19:23 Making mail bounc. 21:19:25 :( 21:19:31 SDO LOL 21:19:35 I use it for fleebay, and as of today, that makes things not good. 21:19:39 SDO: I'm getting about 750K per hour. 21:19:52 SO I feel your pain. :/ 21:19:58 * kc5tja checks mail very frequently as a result. 21:20:15 I direct all business-sensitive communications to my business accounts anyway, though. 21:20:49 I'm going to switch over to my business account as a result cause starting this morning I'm getting HUGE volumes of spam. 21:21:00 I am overwhelmed, sometimes 18 messages in 15 minutes. 21:21:29 SDO: i get the same for my hotmail account (which i never use, just keep for spam :) ) 21:21:33 i know it wouldn't help but if i could organize a raid on the diety of spam on some MUCK it would make me feel better 21:22:46 I just got 455 k in spam since I mentioned this problem here, 5 mins ago. 21:22:53 --- quit: LOOP-HOG2 (Connection timed out) 21:23:39 I think we should invite charles here to discuss moore's law and how old CPUs are still being used, and how this shows that indeed we are on the right track. 21:23:44 Oh wait, that is a given. 21:24:15 Well, remember that Moore of Moore's Law is not Chuck Moore. :) 21:24:31 Otherwise, it would be interesting to have another fireside chat. 21:24:47 If video cannot be arranged, then IRC would just have to do. 21:24:54 I know :) silly. 21:24:56 Though, I do wish we had a video setup of some kind. 21:27:37 Moore is Intel guy. 21:27:37 Moores law cannot go forever 21:27:37 kc5tja: you mean, web cam conversation or such? 21:27:37 LOOP-HOG: There is evidence showing that Moore's Law is accelerating. 21:27:37 they can't make computers smaller than atom size 21:27:37 you can't make a computer smaller than an atom 21:27:37 arke: Any kind of video where he can give a presentation, show the contents of his computer screen, slides, whatever. 21:27:37 then where does the software bloat go? 21:27:37 LOOP-HOG: Quantum computing theory says you can. 21:27:37 Its just too far fetched for me to buy into it 21:27:37 then how can you make a computer smaller than a quark? 21:27:40 loop me too bu then radio was too far fetched 300 years ago 21:27:49 sometime its going to have to stop, they are either going to have to start to strip away the fat or they are going to have to goto parallel computers, or something 21:27:50 you would hve been burned at the stake 21:28:34 I440r, 'good' radio is too far feltched today for hte masses, and so is 'good' computing. 21:28:58 does XM save radio? maybe it does for awhile? 21:29:04 i've never tried it though 21:29:09 we need a efficient forth-based chip with EXACTLY 256 instructions. none of that intel 2-byte opcode only when we feel like it crap :P 21:29:24 xm is great if you listen to country and western 21:29:31 their blues channel is full of jazz however 21:29:36 morons 21:29:49 LOOP-HOG: Does it matter at that point? If you have a computer the size of an atom, you can have such massive parallelism (which a single qubit is already massively parallel!) that performance will skyrocket. Our computers are now 1cm wider! That translates to 3.38x10^308 polygons per second! Woohoo! 21:29:56 I440r, just go the #mp3blues channel and download all the blues you can shake your finger at. 21:30:23 yea. it would only take me 3 days to download 1 mp3 21:30:35 or tune into www.kexp.org and there EXCEPTIONAL archiving of shows, the are a radio station in Seattle at the UW. 21:30:41 LOL 21:30:47 oh, you're on dialup, sorry. 21:31:12 I'd like a Forth chip where the instruction is exactly the same as plain old forth, no strining 3 or 4 instructions to get @ 21:31:14 well, if you put up a PO box in private to me, who knows what you may get in your box someday? 21:31:33 arke: No, we need an efficient FOrth-based chip, period. 256 instructions is awfully excessive to me. No more than 64 are needed, and 32 is proven to be quite powerful. 21:32:02 those 32 instructions could be built on 21:32:08 in a FORTHlike manner 21:32:08 what we need is a basic FORTH with a community effort for a toolbelt aproach for different 'needs'. 21:32:09 it might be ok to use 256 instructions if some of those instructions actually refered to groups of instructions cashed on the chip 21:32:10 arke: Besides, it's impossible to predict future needs, so it's always good to have open opcode spaces. Witness the evolution of MuP21 to i21 to F21. 21:32:12 kc5tja: 256 is good, because it allows for exactly one byte. this also offers more registers, and more possibilities to use them. 21:32:25 arke: Forth processors don't have registers. 21:32:31 arke: They have a data stack and a return stack. :) 21:32:34 like 0-63 are primitives, and 64-255 are colon definitions 21:32:35 kc5tja: thats why you think ahead :) 21:32:38 dont they have an address reg >? 21:32:43 kc5tja: oh, they should have registers as well. 21:32:59 why would you want registers? The stacks act as such. 21:33:10 I440r: MISCs have address registers in particular, but that's a concession to simplify the internal circuitry. Chuck admitted that he didn't want to make it that way, but it was electronically simpler to do it that way. 21:33:35 kc5tja: SP, RP, IP, FLAGS are the given 21:33:38 * kc5tja notes also that you cannot perform arithmetic with the A or B registers, except to add one to them by way of a memory dereference (e.g., it's faster to A@ 1+ A!, literally). 21:33:48 arke: Nope. 21:33:57 it seems to me like MISC instruction language is a hybrid of Forth and Assembly 21:34:11 kc5tja: i meant, those are the least you need. 21:34:13 arke; F21 has an instruction pointer, the data stack is on-chip, as is the return stack, and the A register. Hence, it only has two "registers" per se; IP and A. 21:34:22 crap, I just got another 298 k of spam. 21:34:24 This is insane. 21:34:24 Flags isn't needed. 21:34:31 hm. 21:34:39 * kc5tja points to the DEC Alpha, which did not have a FLAGS register. 21:34:41 kc5tja: those would all be nice though. 21:34:47 * kc5tja shrugs 21:34:51 I personally disagree. 21:34:51 time to change your email address and then give it to your friends? 21:34:52 Complexity. 21:34:57 kc5tja: well, not _direct_ access to FLAGS 21:35:17 arke: Alpha's had a compare instruction which set the whole contents of a register depending on the condition. 21:35:28 cmp.ge r1, r2, r3 would set R1 to -1 if r2 was greater than r3. 21:35:42 LOOP-HOG, yes it would seem so. 21:36:06 SDO: Have people contacted you yet for spamming them? 21:36:24 * kc5tja has had a couple of spammers forge my e-mail address, and I got blamed (and blacklisted) for spamming others. 21:36:47 kc5tja: wow, thats pretty bad spamming htere :) 21:36:59 dang! 21:37:29 Yep 21:37:57 I really wanted to make a virtually spam-proof e-mail subsystem replacement for our Internet e-mail. 21:38:03 kc5tja, nope. 21:38:11 But I realized it really wouldn't solve much of anything. 21:38:14 what gets me about hotmail is the tabloid nature of it all 21:38:29 If Yahoo! would empty or have a preference to empty trash/bulk mail automatically immediately, I would have no problems. 21:38:35 LOOP-HOG: Spam is always tabloidy. 21:38:39 Bulk Yahoo! filters it out, but it sits there and overflows the box. 21:38:40 :( 21:38:54 Mine is all M$ 'updates', each one is like 140k 21:39:02 i'm not talking about the spam, i'm talking about MSN Hotmail news 21:39:03 * kc5tja nods 21:39:11 LOOP-HOG: ahh 21:39:48 can you kill the m$ updates? 21:39:54 Hmm...I suppose I should actually work on my website and prepare for tomorrow. Tomorrow is when my first advertisements go live. 21:40:20 can we see them? 21:40:50 zzz time.... 21:40:55 --- quit: I440r () 21:41:21 God, I love Forth. 21:41:22 :) 21:41:33 --- quit: Herkamire ("goodnight boys") 21:41:50 I'm about 33% through with the target compiler's core compiler, and it's only 3.3KB in size. 21:42:03 (on a 16-bit Forth, it'd take up around 1.5KB or so) 21:42:12 kool 21:42:30 :) 21:42:45 I predict the whole thing will be around 4.5KB when I'm done with it. 21:42:57 thats good 21:43:11 That's not counting the memory I reserve for the code space, the forth dictionary, nor the compiler dictionary. 21:43:26 But those are fixed, pre-allocated resources. 21:43:36 * kc5tja is really pleased with the results of his system so far. 21:44:50 i'm going to go try to find a MUCK to muck around in, it might take a week or so to decide 21:44:58 so, i'll see you guys later 21:45:04 later 21:45:09 LOOP-HOG have fun muckin 21:45:10 --- quit: LOOP-HOG () 21:45:18 bbl, think forth 21:45:40 SDO: Believe me, I'm thinking Forth every day. 21:45:46 It's just that I rarely have time to hack on it. :/ 21:50:50 :) 21:52:27 Slowly, I work my way towards a completely self-hosted system though. 21:52:36 It'll just take some time. 21:52:46 I look forward to using it. 21:52:50 laterz! 21:53:04 latez 21:53:04 That depends on whether it'll run on your hardware or not. :) 21:53:11 Anyway, 73 SDO 21:58:03 kc5tja: quick asm question that always confuses me 21:58:12 if i have cmp ax, bx 21:58:27 will jae jump then ax >= bx or when bx >= ax? 21:59:43 I believe it's if BX is >= AX, but I'm not sure on that. 22:01:08 I won't be sure about that until I implement some kind of conditional logic in FS/Forth. :) 22:08:16 --- quit: arke (Read error: 60 (Operation timed out)) 22:08:34 Well, I think I'm going to head out myself. 22:08:50 --- quit: kc5tja ("THX QSO ES 73 DE KC5TJA/6 CL ES QRT AR SK") 22:13:45 --- join: Serg_Penguin (Serg_Pengu@212.34.52.140) joined #forth 22:13:45 hi 22:29:34 --- quit: rpc (".") 22:41:33 --- quit: Serg_Penguin () 23:03:26 --- join: Serg_Penguin (Serg_Pengu@212.34.52.140) joined #forth 23:37:45 Privet 23:38:56 hi 23:39:02 what's in sch00l now ? 23:45:30 Programming 23:46:13 yeah. cool 23:46:18 what language ? 23:46:25 what level ? 23:46:32 Forth... but I'm supposed to do MSVC++ :( 23:46:36 At a very basic level. 23:46:46 But I'm playing with my Forth. 23:47:00 kr00to ;)) 23:47:41 means 'cool' about a thing or 'tuff' about a man ;)) 23:48:03 give em a forth lesson ;)) 23:48:22 'sea battle' w/ commandline console, heh 23:51:02 Hehe :D 23:59:59 --- log: ended forth/03.09.18