00:00:00 --- log: started forth/04.08.15 00:07:07 --- join: mur_ (~mur@smtp.uiah.fi) joined #forth 00:19:39 --- quit: mur (Read error: 110 (Connection timed out)) 00:47:40 --- quit: mur_ (Remote closed the connection) 00:48:11 --- join: mur (~mur@smtp.uiah.fi) joined #forth 03:50:49 --- join: mur_ (~mur@smtp.uiah.fi) joined #forth 03:53:11 --- quit: mur (Read error: 60 (Operation timed out)) 03:55:34 --- nick: mur_ -> mur 04:38:02 --- join: mur_ (~mur@uiah.fi) joined #forth 04:46:57 * Tomasu is back (gone 04:55:30) 04:50:07 --- quit: mur (Read error: 110 (Connection timed out)) 05:17:05 * Tomasu is away: dlrrp 05:17:10 --- nick: Tomasu -> TomasuDlrrp 05:49:43 --- join: FlamingRain (~Ecoder@c-24-129-95-254.se.client2.attbi.com) joined #forth 06:08:05 --- join: mur (~mur@smtp.uiah.fi) joined #forth 06:20:25 --- quit: mur_ (Read error: 110 (Connection timed out)) 06:34:24 --- quit: mur (Remote closed the connection) 06:34:57 --- join: mur (~mur@smtp.uiah.fi) joined #forth 06:54:48 --- join: solar_angel (~jenni@MTL-ppp-157567.qc.sympatico.ca) joined #forth 07:12:35 --- quit: FlamingRain ("Leaving") 07:30:32 --- join: Topaz (jonny@spc1-horn1-6-0-cust217.cosh.broadband.ntl.com) joined #forth 08:12:04 --- join: mur_ (~mur@kyberias.uiah.fi) joined #forth 08:24:37 --- quit: mur (Read error: 110 (Connection timed out)) 09:24:29 --- join: I440r_ (~mark4@216-110-82-59.gen.twtelecom.net) joined #forth 09:25:42 --- join: mur (~mur@mgw2.uiah.fi) joined #forth 09:34:35 --- join: FlamingRain (~Ecoder@c-24-129-95-254.se.client2.attbi.com) joined #forth 09:36:09 --- quit: mur_ (Read error: 110 (Connection timed out)) 09:39:02 --- quit: I440r (Read error: 110 (Connection timed out)) 09:41:59 --- join: crc (crc@0-1pool101-21.nas51.philadelphia1.pa.us.da.qwest.net) joined #forth 09:47:02 --- quit: FlamingRain ("playing on my slackware box some more") 09:58:32 --- quit: crc (Client Quit) 10:37:44 --- quit: I440r_ (Excess Flood) 10:37:45 --- quit: I4404__ (Read error: 54 (Connection reset by peer)) 10:37:54 --- join: I440r_ (~mark4@216-110-82-59.gen.twtelecom.net) joined #forth 10:38:17 --- join: I4404__ (~mark4@216-110-82-206.gen.twtelecom.net) joined #forth 10:51:50 --- join: superdupr (d4v1d@cnq5-156.cablevision.qc.ca) joined #forth 11:15:49 --- join: mur_ (~mur@kyberias.uiah.fi) joined #forth 11:24:34 --- join: FlamingRain (~Ecoder@c-24-129-95-254.se.client2.attbi.com) joined #forth 11:27:35 --- quit: superdupr ("yhahiou") 11:28:16 --- quit: mur (Read error: 110 (Connection timed out)) 11:48:42 --- join: crc (crc@0-1pool36-159.nas35.philadelphia1.pa.us.da.qwest.net) joined #forth 12:10:04 --- quit: FlamingRain ("Leaving") 12:14:48 --- nick: mur_ -> mur 12:28:16 --- quit: crc (Client Quit) 12:40:48 hi 12:41:26 --- quit: slava (Remote closed the connection) 12:42:54 --- join: mur_ (~mur@mgw2.uiah.fi) joined #forth 12:46:54 --- join: slava (~slava@CPE00096ba44261-CM000e5cdfda14.cpe.net.cable.rogers.com) joined #forth 12:46:56 hi 12:47:13 Hi slava 12:48:05 Robert, this is the best windows screenshot i've seen: http://www.rutherfurd.net/tmp/jedit2.png 12:51:00 Hehe. :) 12:51:07 Neat... almost. 12:51:51 --- quit: mur (Read error: 110 (Connection timed out)) 12:52:45 i've got a few with the obligatory '0% system resources free' and some other fun ones 13:34:46 --- join: Herkamire (~jason@h000094d30ba2.ne.client2.attbi.com) joined #forth 13:35:12 hi folkes :) 13:35:18 I'm back from vacation :) 13:35:28 hey 14:41:16 --- join: MrReach (~chatzilla@209.181.43.190) joined #forth 14:41:16 --- mode: ChanServ set +o MrReach 14:50:05 --- join: thefox (~fox@adsl-68-122-3-81.dsl.pltn13.pacbell.net) joined #forth 14:50:29 --- join: imaginator (~George@georgeps.dsl.xmission.com) joined #forth 14:59:51 --- quit: solar_angel (Read error: 104 (Connection reset by peer)) 15:00:57 hi thefox, imaginator 15:01:13 hi slava 15:05:34 --- join: FlamingRain (~Ecoder@c-24-129-95-254.se.client2.attbi.com) joined #forth 15:20:31 --- quit: FlamingRain ("Leaving") 15:21:35 --- quit: madgarden ("*frotz*") 15:23:54 --- join: madgarden (~madgarden@Kitchener-HSE-ppp3576090.sympatico.ca) joined #forth 15:41:14 --- quit: MrReach ("ChatZilla 0.9.61 [Mozilla rv:1.7b/20040421]") 15:41:17 hi 15:47:53 --- quit: arke (Read error: 110 (Connection timed out)) 16:03:54 --- quit: thefox () 16:09:24 --- nick: TomasuDlrrp -> Tomasu 16:09:29 * Tomasu is back (gone 10:52:24) 16:10:00 --- join: jDoctor (~rex@pcp08550359pcs.manass01.va.comcast.net) joined #forth 16:10:37 hi all 16:12:24 just went shootin 16:12:29 now i got all kindsa guns to clean 16:12:30 lol 16:17:00 --- join: FlamingRain (~Ecoder@c-24-129-95-254.se.client2.attbi.com) joined #forth 16:18:01 I440r_: shooting for fun or for food? 16:18:29 fun 16:18:36 shootin holes in paper 16:21:04 --- join: skittle (XINU@12-222-128-22.client.insightBB.com) joined #forth 16:24:16 --- join: doublec (~doublec@coretech.co.nz) joined #forth 16:24:56 I can put holes in paper at home ;) 16:26:41 hi doublec 16:28:51 hi slava 16:28:55 doublec, brb 16:35:25 --- join: arke (~chris@wbar8.lax1-4-11-100-108.dsl-verizon.net) joined #forth 16:38:43 --- quit: arke (Client Quit) 16:43:01 doublec, i should have some i/o funkiness to show you shortly 16:43:27 slava, cool. I look forward it it. 16:43:43 slava, I've committed the parser combinator library btw. I still need to update the parser-combinator docs though. 16:44:01 slava, and then I'll do some more work on the cont-responder. 16:44:12 doublec, cool. 16:44:27 --- quit: Topaz (Remote closed the connection) 16:44:34 doublec, i got some awesome ideas yesterday about a set of words for doing polymorphism in factor. 16:45:51 slava, sounds great. 16:47:45 doublec, it will be single-dispatch on top of stack 16:48:19 slava, so different words can run depending on the type of object on the stack? 16:48:22 yes 16:48:49 it will be predicate-based dispatch but i have some optimization ideas. 16:48:51 that would be nice. In parser-combinators.factor you'll see some polymorphic words where I dispatch on the type to allow the parsers to parse strings or lists of tokens. 16:49:13 (using cond of course. polymorphic words would be so much nicer) 16:49:44 it will look like this; 16:49:46 GENERIC: foo 16:49:52 METHOD: list? foo ... ; 16:50:13 the predicate words like list? will be defined usign a special defining word: 16:50:23 CLASS: cons? list? ... ; 16:50:38 neat! 16:50:44 there is a reason for CLASS: 16:51:00 it will try to do a topological sort on the predicates in order of precedence to minimize the number of checks 16:51:33 for example if you have a word that specializes on list? and alist?, it will only check these predicates if the word is given a cons 16:51:57 sounds good. 16:52:05 specializing on built in types like cons? will just lookup the type # in a 'vtable' 16:52:24 this will all be realized with word properties, and i think its pretty clean. i need to think a bit more then code it 16:52:31 should be < 150 lines or so 16:53:03 sounds like a really good idea. 16:53:23 so far these ideas will replace cond's that switch on built in types and alist? hashtable? and other such 'intentional types' 16:53:30 i also have an idea to replace the ad-hoc polymorphism in streams 16:54:16 along with CLASS:, another defining word for predicates that check a 'traits' slot in a hashtable 16:54:41 and then optimizing the case of specializing on this type to looking up the method in the traits of the object 16:55:04 something like this: 16:55:18 STRUCT: fd-stream? 16:55:33 METHOD: fd-stream? fread ... ; 16:55:48 and the actual generated definition of 'fread' would be roughly this pseudo-code: 16:55:51 if top of stack is a hashtable 16:56:20 call fread quotation in traits 16:56:27 instead of checking for each stream type in turn 16:56:46 cool! 16:56:58 right now there is a lot of unnecessary duplication of intent in streams 16:58:33 what's nice is that this will require no changes to the C core (and I won't be adding it to java factor). 16:59:04 also note there is no inheritance here 16:59:19 the class predicates don't really 'inherit' they just determine subsets the predicates apply to 16:59:39 Similar to the Cecil programming language which uses predicate based dispatch. 17:00:34 this is like a minimal subset of OOP. 17:01:05 I like it. It'll be interesting to see how it works out. 17:02:41 i'd prefer if most words continued taking simple objects though. its much eaiser to test that wy 17:02:50 than having to construct some complicated object tree first 17:03:15 this will be for things that *really* need the complexity of polymorphism. 17:07:50 --- join: mur (~mur@smtp.uiah.fi) joined #forth 17:10:45 --- join: Robert__ (~snofs@c-bf5a71d5.17-1-64736c10.cust.bredbandsbolaget.se) joined #forth 17:10:50 --- join: Herkamir1 (~jason@h000094d30ba2.ne.client2.attbi.com) joined #forth 17:10:51 --- join: skylan_ (~sjh@vickesh01-4897.tbaytel.net) joined #forth 17:19:52 --- quit: skylan (Connection reset by peer) 17:20:10 --- quit: mur_ (Read error: 110 (Connection timed out)) 17:22:40 --- quit: Robert (Read error: 110 (Connection timed out)) 17:24:03 --- quit: Herkamire (Read error: 110 (Connection timed out)) 17:29:48 doublec, what do you have planned for cont-responder? 17:35:25 doublec, i have some feedback on the lazy eval code 17:35:47 dup swapd == tuck 17:35:57 [ ] = == not (or just reverse branch order) 17:36:30 i think lcurry and lcurry2 should not be defined 17:36:44 when doing mutually recursive words, instead of : foo ; use DEFER: foo 17:40:15 doublec, the parser combinators look nifty 17:51:42 --- join: tathi (~josh@pcp02123722pcs.milfrd01.pa.comcast.net) joined #forth 17:52:24 --- quit: tathi (Client Quit) 17:55:31 I440_, there he is! 17:57:20 slava, I'm back. 17:57:38 slava, thanks for the feedback, I'll make the changes. 17:58:05 I'm still considering some of the changes to make to the parser code. For example, <&> will combine two parsers but often you want to do more. So I might do one that combines a list of parsers, etc. 17:58:21 what kind of parsers do you plan on doing with this? 17:58:58 I defined curry1 and curry2 so it's explicit that I'm doing code merging rather than list consing. But that's probably just because I'm more used to closures and currying maybe :) 17:59:15 I want to do xml-rpc for a start. 18:00:04 the thing is, in a concatenative language code merging *is* consing 18:00:25 to me it looks like defining : make-cons cons ; :-) 18:00:37 yes, I should just change it and get used to it :) 18:01:01 i'm looking forward to seeing the xml parser done in this fashion! 18:01:09 will it generate one huge quotation? 18:01:14 Yep 18:01:21 cool. 18:01:25 But from lots of sub-quotations. So you can re-use portions of it. 18:01:27 hey here's an idea 18:01:35 instead of having the p* polymorphic words 18:01:41 do parametric polymorphism 18:01:54 have the quotation generators look at variables containing words for doing operations on 'what is being parsed' 18:02:12 then a list parser generator wraps this in a namespace with these variables set to list words, same for strings 18:02:38 this will get rid of some type check overhead at runtime. 18:02:47 nice idea. I'll try it out. 18:02:56 usually for each parser you know ahead of time if it will be list/string anyway 18:03:01 i mean parsing an xml list doesn't make sense 18:03:04 yes. 18:03:27 there's no way to avoid consing quotations at runtime is there? 18:03:35 because this rules out compilation 18:03:41 of any kind 18:04:02 A way around this is to define as much of the quotation in a word and just use the quotation portion that conses the arugments and calls the word. 18:04:10 Most of my code is unoptimised in this respect. 18:04:23 ok 18:04:33 Or is there a way of generating the quotation at compile time and have it assigned to a word so it can be compiled? 18:05:09 well there is no 'compile time' 18:05:18 An advantage of the consing quotations is you can have dynamic parsers. For example a validating xml parser that checks the end tag is the same as the opening tag. The parser itself can check the actual tag is correct. 18:05:30 ok 18:05:38 don't worry about it for now 18:05:44 no x86 compiler exists yet anyway :-P give it a year. 18:05:49 :) 18:06:20 for the cont-responder I'm going to add more callback functionality for HTML forms. 18:06:27 cool! 18:06:35 do you plan working on the eval responder? 18:06:37 Currently doing forms is a pain so I wan't to make more of it more automatic and have 'components' that can be re-used. 18:06:49 sounds great 18:07:25 yes, I plan to add to the eval responder it and make it more full featured. Hopefully even usable as a way of doing patches or modifying a system at runtime. 18:07:52 i can't wait until this damn i/o multiplexing works ;) 18:07:56 I actually use the browser and inspect responders a lot when developing to look up words and find functionality. 18:08:13 cool 18:08:15 yes, that'll be cool to see that going. 18:08:28 Is it requiring many changes? I suspect it probably does. 18:08:52 well, none outside the i/o code in C and the implementation 18:09:42 select() is kind of lame 18:09:43 cool 18:09:54 The win32 version is even worse. 18:10:06 Even WaitForMultipleObjects only allows waiting on 64 handles at most. 18:10:09 i want to avoid OS-specific hacks for now. 18:10:19 Have you looked at poll? 18:10:23 windows users can use cygwin, unless somebody volunteers to do win32-specific code 18:10:29 no poll on mac os x! 18:10:34 laughable 18:10:36 but what can you do... 18:10:38 ahh, pity. 18:11:44 --- quit: imaginator (".") 18:12:23 --- quit: FlamingRain ("Leaving") 18:12:46 i want to encourage people to hack on the C VM. i'll write a guide describing its workings and layout 18:13:23 slava, it has an easier interface for specifying events for specific file descriptors and more things you can watch for. I think. 18:13:33 I remember the Io programming language discussing switching to it. 18:16:25 there is a problem here 18:16:59 close can result in i/o (flushing the stream) but close is usually used outside the >c/c> scope 18:17:04 fclose rather 18:17:16 i guess it should just ignore errors instead of throwing? 18:17:41 I think most libraries I've used ignore errors on close. 18:18:05 AN explicit flush could be used if it is important to catch the error? 18:18:37 yes 18:19:00 an interesting discussion on the advantanges/disadvantages of select and poll: 18:19:03 http://www.usenix.org/publications/library/proceedings/usenix99/full_papers/banga/banga_html/node3.html 18:19:49 how hard is it to add new primitives to call other C libraries? 18:21:00 memory management and unboxing stack parameters will be tedious 18:24:13 with 'parsing' words, I wonder if it would be possible to do a word that allows you to enter BNF or some other grammer notation, that calls that generates factor code to do the parsing using the parser combinators. Then you could have 'inline' BNF notation. 18:24:35 there is code in the gforth distro for this. 18:24:42 that's pretty cool. 18:25:47 ok, i think i've got the new i/o code working in some sense 18:26:18 i haven't tested it when reading/writign on the same fd though, i'll do that 18:26:21 i bet it breaks 18:27:33 heh, so confident! 18:38:11 * Tomasu is away: Just casue 18:40:17 --- join: TheBlueWizard (TheBlueWiz@207.111.96.150) joined #forth 18:40:17 --- mode: ChanServ set +o TheBlueWizard 18:40:21 hi TheBlueWizard 18:46:47 doublec, ping 18:46:58 doublec, any idea why opening files for writing seems to create them with random permissions? 18:47:01 slava hiya 18:47:06 sometimes r--------, sometimes rw------- 18:47:18 slava, nope that's definitely odd. 18:49:48 slava, are you using 'open'? 18:49:54 yes 18:50:00 slava, if so what are you passing as the 'mode' parameter? 18:50:34 (and are you passing O_CREAT)? 18:50:56 if(write) 18:50:56 mode = O_WRONLY | O_CREAT | O_TRUNC; 18:51:48 Is that 'flags' (the second arg) or 'mode' (the third arg) to open? 18:52:09 mode should be S_IRUSR, S_IRWXU, etc. 18:52:24 oh shit 18:52:28 i didn't specify mode at all 18:52:33 :) 18:52:38 what should it be? 18:52:58 It specifies what the permission will be 18:53:09 0600? 18:53:10 S_IWRITE | S_IREAD will be user has read/write 18:53:17 how do i use the current umask? 18:53:28 some people would like 644, some would like 660... etc 18:53:34 It's only valid for O_CREAT and is ignored for any other flags. 18:53:41 Hmm, not sure. 18:54:40 according to man umask it's handled correctly by open. 18:55:22 Specifically, permissions in the umask are turned off from the mode 18:55:23 argument to open(2) (so, for example, the common umask default value 18:55:23 of 022 results in new files being created with per- missions 0666 & 18:55:23 ~022 = 0644 = rw-r--r-- in the usual case where the mode is specified 18:55:23 as 0666). 18:59:05 --- join: crc (crc@0-1pool104-24.nas52.philadelphia1.pa.us.da.qwest.net) joined #forth 18:59:52 * Tomasu is back (gone 00:21:42) 19:00:18 doublec, so can we pass 0666 as the mode? 19:00:23 or is that dangerous? 19:00:35 hey crc 19:00:39 Hi slava 19:01:16 I usually just make it read and write, 0600. 19:02:05 doublec, update cvs. terminal and file i/o should work, network sockets are broken 19:02:25 cool, I'll give it a try. 19:03:54 slava, then again 0666 is what 'cat' seems to use. 19:05:45 doublec: check your umask...it may be the reason why 19:08:11 TheBlueWizard, yes my umask is 022. So cat seems to use 0666 in its open call which takes into account the umask makeing it the rw-r--r-- value. 19:08:21 I think that's how it works anyway :) 19:09:13 makes sense 19:09:59 slava, I updated cvs and things seem to work fine. 19:10:27 this is pretty ugly: 19:10:30 return tag_cons(cons( 19:10:30 tag_object(from_c_string(inet_ntoa(clientname.sin_addr))), 19:10:30 tag_cons(cons( 19:10:30 tag_fixnum(ntohs(clientname.sin_port)), 19:10:30 tag_cons(cons( 19:10:34 tag_object(port(new)))))))); 19:13:14 --- join: mur_ (~mur@uiah.fi) joined #forth 19:25:27 --- quit: mur (Read error: 110 (Connection timed out)) 19:37:39 gotta go...all bye! 19:38:10 --- part: TheBlueWizard left #forth 20:42:02 --- join: arke (~chris@wbar8.lax1-4-11-100-108.dsl-verizon.net) joined #forth 20:42:04 hi 20:42:11 Hi arke 20:42:29 hi Charles Childers 20:43:15 * crc is tired 20:44:02 :) 20:44:13 * crc has been testing & debugging RetroForth/Native, the 7.2 codebase, and studying 64 bit integers 20:44:16 crc: hows retroforth doing? 20:44:26 heh, that answers my question :) 20:44:54 The Native port *seems* to be working now 20:45:06 I'm cleaning up the boot sector right now 20:45:11 cool. 20:45:12 cool. 20:45:14 uuh 20:45:15 Lots of changes there :-) 20:45:19 :-) 20:45:22 ACK :) 20:45:25 hmm 20:45:37 does it support multitasking, memory protection, vm86? 20:45:45 New (more reliable) method of A20, etc 20:45:48 No 20:46:07 Multitasking is coming (preemptive) 20:46:24 vm86 is possible, but I don't see a lot of use for it at this point 20:46:33 VESA calls dude 20:46:36 NO PROTECTION ON MEMORY :-) 20:46:42 :d 20:46:45 :D 20:46:47 Why do you want VESA calls? 20:47:34 Set the VESA mode up BEFORE switching to pmode :-) 20:48:26 I'm still working on the VGA & VESA drivers... 20:49:33 .... 20:49:34 nooo 20:49:36 There will be five video drivers to choose from: text, vga, vesa8, vesa16, vesa24, and vesa32 20:49:42 you want to be able to change video mode after pmod 20:49:46 Why? 20:50:17 because (1) makes boot sector smaller (2) makes it l33t3r and m0r3 c0nfigur4bl3 20:50:24 see what I'm getting at? 20:50:37 this will support graphics apps that ALWAYS work 20:50:53 I don't see how it will be more configurable 20:51:29 a graphics intensive application can then switch video mode as needed 20:51:33 and switch back when done. 20:51:52 support for VIRTUAL TERMINALS (OMG GASP UNIX IN FORTH OMG GASP) 20:51:59 whre each one has its own graphics state 20:52:10 1 has irc client, text 20:52:14 2 has editor, text 20:52:22 3 has game, vesa 800x600x32 20:52:25 etc. etc. etc. 20:52:53 That would bloat the kernel because you'd need a lot more state information, and all drivers built into it 20:53:07 not necessarily much 20:53:10 The VGA/VESA drivers come close to the size of the rest of the system 20:53:43 I call it FUNCtiON POINTERS!!!!!111111oneoneone(x, where y = 2 and x = y/2) 20:53:47 I have thought about supporting VT's though 20:53:54 :D 20:54:10 the individual driver modules can be loaded when needed and set by calbacks. 20:54:21 if you dont want ANY gfx, you just don't include the drivers for it. 20:54:33 but you'll still be able to switch between 80x25, 80x50, whatever 20:54:36 Then you need a way to load & link into the driver code, which also adds bloat 20:54:55 nooot muuuch 20:55:03 :) 20:55:10 Have you tried it? 20:55:23 Where would the drivers be stored? 20:55:25 i've envisioned it :D 20:55:29 dictionary. 20:55:32 does retro 20:55:39 does RF compiule from source on demand? 20:55:44 I've *tried it*, it's *not easy, small, or fun* 20:55:44 or is it like pygmy? 20:55:56 :/ 20:56:00 ook. 20:56:05 RF has a small assembly core, and most of the primitives & words are compiled at startup 20:56:20 there you go. 20:56:24 :) 20:56:32 I still have a small ELF object loader floating around some where... 20:56:56 oh yeah 20:57:02 what assembler does it use? 20:57:06 FASM 20:57:17 yay 20:57:50 * crc abandoned NASM during the development of RF7.x 20:58:14 Modular drivers are more trouble than they're worth in my view 20:58:32 BTW, how would you store a driver in the *dictionary* ? 20:58:42 if you say so :D 20:59:08 crc: compile it. MARK it. it sets the appropriate callbacks itself on compilation 20:59:17 I don't have MARK 20:59:27 well, you don't have to MARK it :) 20:59:37 How do callbacks work? 20:59:49 just compile it when you need it. Since its specialized it shoudlnt take up much space in the dictionary 20:59:52 callbacks? 20:59:55 VARIABLE my-callback 21:00:09 ' callback-word IS my-callback 21:00:16 then 21:00:27 my-callback @ execute 21:00:28 I don't have 'IS' 21:00:28 or 21:00:32 WTF 21:00:34 no IS? 21:00:36 :/ 21:00:39 Nope 21:00:43 ... 21:00:48 no DEFER either then, i guess. 21:00:54 Nope 21:00:56 :/ 21:01:05 What is DEFER? 21:02:34 DEFER takes a name on the input stream and creates a word with its name. What it does is perform a jump to some routine (default is a crash abort message). The routine can then be changed to a different one by IS 21:02:39 so, for example 21:02:42 DEFER FOO 21:02:51 : BAR FOO 1 + 2 / ; 21:03:13 : CHEESE IF BAR ELSE 2 + THEN ; 21:03:20 ' CHEESE IS FOO 21:03:52 think of it as a better callback 21:03:56 err 21:04:02 not to mention, the above VARIABLE should be DEFER 21:04:54 How would you implement that when your compiler compiles a native CALL to the memory location specified in the dictionary? 21:05:19 it changes the CALL destination operand 21:05:29 or JMP rather 21:06:12 It would have to search all words for the old location and change the compiled definitions - not a trivial task 21:07:13 no. 21:07:17 FIND the word. 21:07:30 get the PFA ( which is something simple like 4 + or something) 21:07:49 and then skip the CALL byte ( 1 +, can be incorporated into the above) 21:08:02 and then ! it there 21:08:05 only one word 21:08:06 :) 21:08:12 That will alter FUTURE references, not existing ones 21:08:19 yes 21:08:24 No 21:08:27 that exactly is the point 21:08:52 --- quit: mur_ (Remote closed the connection) 21:08:53 it will always point to the separate PFA of the DEFERed word 21:09:01 the only difference is that the PFA of the word is changed 21:09:07 ??? 21:09:35 I have a word 'FOO', and it's used like ': BAR FOO 1 + 2 / ;' 21:09:45 --- join: mur (~mur@mgw2.uiah.fi) joined #forth 21:09:57 yes 21:09:59 If I change the code pointer to 'FOO' in the dictionary, 'BAR' doesn't change 21:10:04 oh no no no 21:10:09 BAR is already compiled to the OLD definition of FOO 21:10:14 the FOO entry in the dictionary does not change 21:10:19 ??????????? 21:10:19 the actual CODE of FOO changes 21:10:22 so foo changes 21:10:34 from CALL 0x12345678 to CALL 0xDEADBEEF 21:10:35 or whatever 21:10:44 I see 21:10:48 That's confusing 21:10:58 no, i just can't explain things :) 21:11:06 Why would you need to redefine words later on? 21:11:45 drivers 21:11:52 counter-referential words 21:11:58 (such as in some parsers) 21:12:18 its not sliced bread. but it comes in handy occasionaly 21:12:33 I've never had a need for it 21:13:15 :) 21:13:24 I don't see why you'd NEED to switch video modes on a regular basis 21:13:47 switch video modes? like resolution? 21:13:49 I mean, if you're going to use graphical apps, use a graphical mode & text mode emulation :-) 21:13:53 Yes 21:14:03 Resolution or color depth 21:14:10 crc: once again, different full-screen VTs 21:14:12 nah no reason. hence it isnt all that easy in X. well its actaully not hard 21:14:31 arke: different full screen vt's over xdmcp ? 21:14:38 I won't support VT's of differning video modes 21:14:40 jDoctor: not in UNIX :) 21:14:42 Too complex 21:14:47 crc: Ok. I will. :) 21:14:52 Go ahead 21:14:57 arke: you mean windows terminal server? 21:15:09 jDoctor: in RetroForth/Native 21:15:16 haha I was way off 21:15:19 jDoctor: in Forth systems 21:15:23 jDoctor: yep :) 21:15:25 :-) 21:15:51 I got a joke: 21:15:59 hi all 21:15:59 how do you get rich in OO paradigm? 21:16:05 inheritance 21:16:14 grr. I knew you'd answer that as soon as you said hi 21:16:36 this is scary. i have a 3kb .c file whose .o is 44kb 21:16:42 I will probably do a vm86 system after the core system is useable 21:16:43 *bloat* 21:16:51 crc, retroforth sounds like its coming along nicely 21:16:52 with or without debugging info? 21:16:56 crc, how big is the compiled executable? 21:16:56 It is 21:17:08 ~4k for Linux/FreeBSD/Native 21:17:12 ~10k for Windows 21:17:15 nice 21:17:18 *that* is lean 21:17:26 ~40-200k for BeOS (libc bloat) 21:17:36 :D 21:17:45 i have a bit more in my kernel than i need, due to perfromance. as soon as i'm generating x86 asm, i'll get it down to 20kb or so. 21:18:19 ~2k of that is ASCII source that's compiled on startup :-) 21:18:25 heh 21:18:36 why is the beos one so big? static linking? 21:18:42 Actually the BeOS version would be smaller if I could tell the linker to not pad the BSS 21:19:16 beOS used to use a superior filesystem. that's like all I know about it (and I know about the company). 21:19:19 Dictionary space & code space (40k+) is padded out 21:19:53 i want to write some docs now... the C code is in a good resting point w.r.t the i/o changes. 21:19:56 BeOS has a solid, reliable file system, fast, inherent multithreading, and very responsive in performace 21:20:21 It's my favorite graphical OS at this point 21:20:44 yah I was into it kinda remotely. never installed it 21:20:58 the PDF of my developer's guide is larger than the entire executable+library 21:21:33 pdf isnt all that cool 21:21:47 I used to use BeOS (v4 then v4.5). I quite liked it too. 21:21:51 crc, do you know any good x86 asm books? i want to learn to do STC 21:21:57 I dont mind pdf docs though usually.. they are the more serious docs 21:22:03 The ASCII docs for RetroForth are at 32k right now and still growing... 21:22:04 STC? 21:22:10 slava: sadly I don't 21:22:26 RetroForth is STC (subroutine threaded code) :-) 21:22:31 doublec, similar style of compilation as the factor bytecoe compiler 21:22:37 doublec, (jvm bytecode) 21:22:38 oh, right. 21:22:54 doublec, with a compiler, the arithmetic functions can be implemented as the clos-style generics i was talking about earlier today 21:22:55 * crc has only used BeOS R5 21:23:03 doublec, this would cut the kernel size in half 21:23:26 * jDoctor is about to get a mac 21:23:30 ok 21:23:34 and I'm kinda happy about that 21:23:44 anyway, i'll find an assembly book some day, and start on the compiler in a couple of months or so. 21:24:13 doublec, right now we're 6x slower than gforth, due to generic arithmetic and other things 21:24:24 and type checks of course 21:24:50 crc, does your compiler inline any words? 21:24:58 crc, or is it always generating calls? 21:25:18 slava: x86 is WEIRD 21:25:23 Inlining has to be done manually at this point 21:26:01 arke: x86 is ok, if you don't delve into the extended opcodes too much 21:26:03 arke: its weird? 21:26:07 slava: but, I would be more than happy to create a little code-generating library 21:26:19 slava: C, right? 21:26:22 crc: :D 21:26:24 hint: encoding is in *octal* :-) 21:26:28 arke, no, the compiler would be in factor itself 21:26:37 slava: :/ 21:26:37 arke, remember the golden rule: "minimum about of C" :-) 21:26:39 amount* 21:26:41 That alone makes things much easier 21:26:50 slava: so, you intend to metacompile faactor? :D 21:27:07 arke, no, the interpreter in C would remain for code constructed at runtime 21:27:22 like doublec is fond of doing :) 21:27:26 you could still metacompile it and generate an interpreter in FACTOR :) 21:27:31 :) 21:27:36 yes, but that would be bizarre 21:27:40 slava: have a metacompiler that generates C code like Squeak smalltalk :-) 21:28:08 arke, i still want to retain portability to other platforms, and run without a STC compiler there 21:28:22 slava, have you looked at the 'art of assembly': http://www.arl.wustl.edu/~lockwood/class/cs306/books/artofasm/toc.html 21:28:45 doublec, looks good! 21:28:46 ewwwww 21:28:49 AOA IS EWWWW 21:28:51 AOA IS HLL 21:28:54 AOA IS EWWWWWWWWWWWWWW 21:29:04 arke, do you have any other recommendatiaon? :) 21:29:08 AOA = EWWWWWWWWW!!!!!!!!!!!!!!!!!!!!!!!!!oneoneone(x, where y = 2 and x = y/2) 21:29:16 arke, hush now :) 21:29:22 slava: :) 21:29:34 slava: just do what i did. look up lame incomplete tutorials 21:29:37 then write your own program 21:29:44 hehe 21:29:45 then annoy people in #asm and #assembler to help you 21:29:53 and then eventually, you'll get it 21:30:10 I have a book at home called 'object oriented assembler'. That's high level assembly... 21:30:21 :/ 21:31:05 Try some of the links here: http://www.freeprogrammingresources.com/assembly.html 21:31:05 slava: but I guess I could learn factor and write an assembler :D 21:31:30 arke, be my guest :) 21:31:43 the art of assembly is good for learning if you are familiar with C/pascal as it compares against those. From there you can certainly delve into more low level things. 21:31:54 :/ 21:32:03 if i want to call C code, will i have a lot of portability problems? 21:32:09 slava: but first, I have to work on F2 ^___^ 21:32:13 No 21:32:13 does the calling conventin change between gcc versions, etc? 21:32:20 the C ABI is standard? 21:32:23 Plain C code? 21:32:29 slava: usually, yes. 21:32:33 eg, calling libc resolver 21:32:34 PUSH the values to the stack 21:32:37 slava: its a pain to deal with sometimes though 21:32:41 or other stuff that syscalls don't provide 21:32:43 CALL the C routine 21:32:52 fair enough 21:32:57 ADD ESP, (size of arguments pushed to stack) 21:33:01 slava: you have to push in reverse order, save EAX if you need it (also by push), then do the call. EAX then contains the result 21:33:02 Return values are in EAX 21:33:08 ok 21:33:21 * crc forgot about the reverse order :-) 21:33:27 oh yeah, you have to save EAX before pushing 21:33:28 :) 21:33:53 oh, and I forgot about the ADD ESP :) 21:34:27 ADD ESP is really important if you want your code to work... 21:35:00 i could take the assembly course at university 21:35:04 but that would go really slow 21:35:15 and i don't want to be taking a 2nd year course in my 3rd year :-P 21:35:34 :D 21:35:35 brb 21:35:36 --- quit: arke ("leaving") 21:35:38 --- join: arke (~chris@wbar8.lax1-4-11-100-108.dsl-verizon.net) joined #forth 21:36:22 back :) 21:36:28 slava: use the FASM assembler (shameless plug) 21:36:46 * crc maintains the BeOS version of FASM... 21:36:58 :D 21:37:00 fasm is great 21:37:32 hmm i have an idea 21:37:37 Write an assembler in factor :) 21:37:51 there's a great tradition of writing assemblers in forth... 21:38:02 the compiler could output 'portable assembler', using the subset of ops that it requires (push on various stacks, call C routine, call Factor word, ...) 21:38:14 then the 'backend' could generate x86 machine code from this 21:39:32 doublec, network sockets seem to work in CVS but there's still issues with buffering, and sending EOF through telnet launches the interpreter into hyperspace. 21:39:58 slava, ok, cool. I'll give it a try. hyperspace sounds like fun :) 21:40:15 --- nick: Herkamir1 -> Herkamire 21:40:24 what do you mean, Hyperspace? 21:40:36 HI Herkamire !!!!!!!!!!!!!!!!!!!1111111111111oneoneone(x, where y=2 and x=y/2) 21:40:38 arke, crash with weird error that doesn't make sense 21:41:03 slava, Should I be using the makefile instead of build.sh now? 21:41:17 doublec, did i forgot to remove build.sh? 21:41:21 brb, shower stinky smell 21:41:52 slava, sorry, didn't notice it had been deleted. 21:42:01 doublec, look at the sizes of the generated .o, they're all 1-3kb, and arithmetic.o is 44kb 21:43:17 slava, nice! 21:43:37 that's not nice 21:43:46 that's ridiculous abuse of C preprocessor :) 21:43:52 :) 21:44:02 stack overflow/underflow currently gives segfault? 21:44:12 yes, i haven't done a sighandler yet 21:44:22 cool 21:44:26 is there any way to distinglish a stack over/underflow from a bad pointer deref in C code? 21:44:33 like see what pointer caused the fault? 21:45:12 I don't know. 21:45:35 well its no biggie. i'll write a signal handler that will throw an appropriate error. this will take care of zero division too 21:46:07 crc, does retroforth do anything about stack over/underflow? 21:46:09 if I do an EOF from telnet to factor I get a 'bad file descriptor' which is better than hyperspace. 21:47:45 yes but its unclear to me why this happends in telnet, while eof on tty works fine 21:47:45 slava: no 21:48:00 crc, i map unreadable pages above/below the stack :) 21:48:41 Overflow runs into the bootstrap code (ascii text), underflow can kill the dictionary... 21:48:43 slava, using sigaction you can apparently get the 'memory location which caused fault' 21:49:01 slava: I don't use pages. Everything is *linear* 21:50:14 If you overflow/underflow your code is in trouble anyway 21:50:30 The stack builds DOWN into the TIB 21:50:53 DROP's build UP towards the dictionary 21:51:22 There's padding for about 20 integers before you reach the dictionary 21:51:34 'reset' will bring it back to earth though 21:51:50 And I don't have 'depth', so you have to keep track of things yourself :-) 21:52:41 crc, i'm not advocating invalid stack pointers as a programming technique 21:53:02 crc, its just nice to have the interpreter stop at the location of the problem, and not 30 instrutions later when some random corrupted structure is used ;) 21:54:06 slava: tracking the stack adds complexity to the code. RetroForth was designed to avoid complex code as much as possible 21:55:04 RF has no safty nets 21:55:07 crc, i use this routine: http://paste.lisp.org/display/2355 21:55:11 to allocate the stacks 21:55:18 then use them without caring about bounds 21:55:23 drop just decrements the pointer 21:56:27 tib rb 1024 ; Reserve 1k for TIB 21:57:07 s0 rb 20*4 ; Reserve 80 bytes (20 depth) of buffer for underflows 21:57:39 d0 rb 20000h ; Dictionary space (underflows will kill this!) 21:58:33 The stack shares space with TIB ;-) 21:59:23 If your code underflows 20 times, it's seriously messed up 22:00:30 You'd have to have 750 numbers on the stack before you'd overflow into the code area 22:00:30 the only way to crash factor is by undefining core words 22:00:54 WTFFFdwrg'nas;jga 22:00:57 Crashing Retro is easy: 0 0 / 22:01:08 or 0 0 ! 22:01:08 :) 22:01:12 or q @ 22:01:13 sdfn;ajf 22:01:16 True enough 22:01:18 ok 22:01:31 What's 'q' ? 22:01:36 I have a soft link from /usr/local/bin/fasm to /usr/fasm/fasm right? 22:01:44 so, as root, i chmod a+rwx fasm 22:01:53 and its saying permision denied as non-root 22:01:54 WTC? 22:01:56 WTF? 22:02:01 I have /bin/fasm 22:02:02 crc: ignore that 22:02:11 chmod 777 fasm 22:02:14 :-) 22:02:16 crc: a+rwx should make it world executable though 22:02:17 :/ 22:02:36 Are both world executable? 22:02:44 ooh 22:02:49 DOH!! 22:03:12 :) 22:03:16 now itr works 22:03:24 What was the problem? 22:03:44 --- nick: Robert__ -> Robert 22:03:46 yeah 22:03:47 lol 22:03:50 hi Robert 22:04:02 Morning 22:04:24 Long day today... 22:04:38 school? :/ 22:04:45 Yes... Like 12 hours. 22:05:00 !!! 22:05:04 12 hours of school? WTF? 22:05:32 Well, it's more like 10 hours, and I do count the travel time :P 22:05:44 :/ 22:05:46 oh 22:05:49 university now? 22:05:54 no, sweden has 13th grade 22:05:54 :/. 22:05:56 Right. First day :) 22:06:01 No we don't. 22:06:02 aah, university 22:06:03 :) 22:06:11 so 1-hour travel everydday? 22:06:18 Yes. :/ 22:06:24 Bus + train + subway. 22:06:43 Could be worse, I guess. 22:06:55 Mom bikes 25km to her job :P 22:07:02 Well, not anymore (getting cold) 22:07:22 aah. 22:07:26 i used to do that too 22:07:32 but it took 45 minutes, not 60 22:07:52 Well, 52 minutes here. 22:08:20 And that does assume the trains are on time ;) 22:08:35 walk 5 minutes to bus stop, bus would travel for 25 minutes, then id have to wait for strassenbahn (whats that in english?) for 5 minutes, travel in it 5 minutes, then walk to class in 5 minutes 22:08:39 hehe 22:08:44 well, that was later. 22:08:50 earlier, i took the train too :D 22:09:25 No idea, but it's spÄrvagn in Swedish. 22:09:33 aah. 22:09:34 :) 22:10:22 streettrains? 22:10:23 :P 22:14:08 --- join: asymptote (~weldon@bgp02689673bgs.flrdav01.dc.comcast.net) joined #forth 22:15:31 RetroForth/Native has a maximum kernel+startup size of 17k with the current boot sector 22:15:31 :) 22:15:48 who is skittle ? 22:15:57 a new #forther? 22:22:41 Skittle appeared yesterday and hasn't spoken a word... 22:23:06 Maybe it's his first day on the language, so he's a bit shy. 22:24:18 :) 22:24:46 * crc prods skittle with a long stick to see if he's alive 22:24:54 --- part: asymptote left #forth 22:26:47 --- quit: arke (Read error: 104 (Connection reset by peer)) 22:27:39 --- join: chris (~chris@wbar8.lax1-4-11-100-108.dsl-verizon.net) joined #forth 22:27:44 maybe its a HER ? 22:27:48 --- nick: chris -> arke 22:27:49 HAH 22:27:52 Sweet dreams. 22:28:08 we wish :D 22:28:25 lol 22:28:25 It doesn't seem to be alive at the moment (idle for over six hours...) 22:28:34 * arke guesses bot 22:28:44 look at the channels :/. 22:32:29 --- nick: skylan_ -> skylan 22:43:49 Robert: I hope you don't mind if I rape your bootsector code :) 22:50:23 * crc continues working on the RetroForth/Native boot sector 22:51:39 * arke is rewriting 22:51:53 Robert's bootsector works, but its such a friggin HACK 22:51:53 ;) 22:51:56 I still have 194 bytes free, which is plenty for the video mode selection 22:52:06 bah. :) 22:52:10 Is Robert's code for a raw or formatted floppy? 22:52:28 raw. 22:52:34 and it will stay that way 22:52:38 Mine too 22:52:38 pure blocks. 22:52:53 Though I also have a fat12 sector floating around... 22:53:04 :) 22:53:04 * crc doesn't store data on floppies 22:53:16 RF uses the hard drive for blocks 22:53:18 this bootsector should work for hard drives too 22:53:23 :) 22:53:30 floppy images are used for testing (in bochs) 22:53:42 There's plenty of room in the first track (normally ~10-15MB) 22:53:55 I don't boot RF from a hard drive yet 22:54:29 There's no more room for partitions on this box; HD booting will come when I get the other box up and running again 22:54:55 :) 22:55:49 * crc still has old data from RetroForth/Native 5.x on the hard drive's first track :-) 22:56:20 :) 22:56:27 I should rewrite the HD driver in Forth though... 22:56:59 amen 22:57:00 :) 22:58:30 --- quit: Herkamire ("blah blah blah") 23:15:49 * crc has eliminated the cryptic error display in the boot sector 23:20:55 --- quit: doublec ("Leaving") 23:23:07 --- quit: crc ("Time for bed... Goodnight all!") 23:48:19 --- join: mur_ (~mur@uiah.fi) joined #forth 23:58:40 --- quit: mur (Read error: 110 (Connection timed out)) 23:59:59 --- log: ended forth/04.08.15