00:00:00 --- log: started forth/05.07.01 00:09:13 --- quit: kunphuzil ("Download Gaim: http://gaim.sourceforge.net/") 00:10:31 --- quit: Raystm2 (Read error: 104 (Connection reset by peer)) 00:28:51 --- quit: Herkamire ("off to bed") 00:54:29 http://dotquote.org/ 02:12:24 --- join: virl (Phantasus@chello062178085149.1.12.vie.surfer.at) joined #forth 02:17:34 --- join: aum (~aum@60-234-138-239.bitstream.orcon.net.nz) joined #forth 02:18:01 --- part: aum left #forth 03:25:47 --- join: Serg[ICQ] (~Miranda@212.34.52.140) joined #forth 03:40:12 --- join: snoopy_16 (snoopy_161@dsl-084-058-131-188.arcor-ip.net) joined #forth 03:48:26 --- quit: Snoopy42 (Read error: 145 (Connection timed out)) 03:48:31 --- nick: snoopy_16 -> Snoopy42 03:51:37 --- quit: Serg[ICQ] (Read error: 131 (Connection reset by peer)) 04:31:04 --- quit: vitaminmoo (Remote closed the connection) 04:39:10 --- join: vitaminmoo (~vitaminmo@dsl-94-128.peak.org) joined #forth 04:48:22 --- join: Raystm2 (~vircuser@adsl-68-93-121-110.dsl.rcsntx.swbell.net) joined #forth 06:23:48 --- join: PoppaVic (~pete@0-1pool67-173.nas22.chicago4.il.us.da.qwest.net) joined #forth 06:25:12 Mornin' 06:25:36 Morning. 06:25:45 (and I'm saying that from GMT+2) 07:03:45 * PoppaVic harumphs 07:14:53 fuck you 07:15:02 over here in -7 where it actually is morning 07:15:11 we have banana cream pie 08:01:55 --- join: sproingie (~chuck@64-121-15-14.c3-0.sfrn-ubr8.sfrn.ca.cable.rcn.com) joined #forth 08:11:37 --- nick: Raystm2 -> nastm 08:51:51 oh-kay the #gcc folks clarified some points.. 08:51:52 --- quit: hrmpf (Read error: 104 (Connection reset by peer)) 08:54:07 1) mmaps are just pigs; 2) apparently the swap-file shit will be happy to swap mmaps in and out of mem. 08:54:57 oh, and 3) Yes indeed, resizing a mmapped file is a Bad Thing(tm) 08:55:51 --- join: ianp (~ian@inpuj.com) joined #forth 08:56:18 And, finally, yeah: it's only pure-dee asm executable that is the "issue" 08:59:19 I'm tempted to ask y'all and webcrawl looking for an asm/opcode "interpreter", though. 09:03:50 --- quit: sproingie ("Konversation terminated!") 09:05:16 hmm.. 09:14:13 --- quit: I440r (Read error: 104 (Connection reset by peer)) 09:18:03 --- quit: PoppaVic ("Pulls the pin...") 10:09:57 --- join: kunphuzil (~Jason@ip-69-10-97-161.cableaz.net) joined #forth 10:55:21 --- quit: danniken- () 10:57:59 --- join: TheBlueWizard (TheBlueWiz@ts001d0595.wdc-dc.xod.concentric.net) joined #forth 11:35:11 --- part: TheBlueWizard left #forth 12:08:57 --- join: Herkamire (~jason@Herkamire.student.supporter.pdpc) joined #forth 12:08:57 --- mode: ChanServ set +o Herkamire 12:09:01 Herkamire: hi herk 12:09:35 hi :) 12:10:06 dotquote.org 12:10:08 dotquote.org 12:10:09 dotquote.org 12:10:14 nobody reads :( 12:10:49 reading's for sissy-boys. Real men play hockey. 12:10:58 heh 12:11:29 heh 12:11:39 come on guys, you have a chance to win a dotquote article 12:11:48 :) 12:20:34 --- join: PoppaVic (~pete@0-3pool158-91.nas24.chicago4.il.us.da.qwest.net) joined #forth 12:21:21 hot.. too hot. 12:23:57 PoppaVic: dotquote.org :D 12:24:07 huh? 12:24:16 PoppaVic: go. read. post. 12:24:19 ohh.. 12:24:28 --- join: I440r (~mark4@rrcs-24-242-160-169.sw.biz.rr.com) joined #forth 12:24:37 SPaceballs... Yeah, sorry - still trying to cool off and focus 12:24:43 I440r: Hi 12:24:48 And hi to PoppaVic 12:25:04 "Hello, one and all" 12:25:18 hi 12:26:27 Methinks it's "note-writing day" ("crank up mozilla, boys!") My issues got issues on my issues over my issues ;-) 12:47:19 oh, I read that as "crank up the mozilla bugs!" 12:47:41 Herkamire: it wouldnt be faroff 12:52:33 nah, I just use Mozz as my "beyond ascii" editor 12:53:31 lol 12:53:58 once in awhile I like fonts and sizes and such 13:15:04 --- join: Raystm2 (~vircuser@adsl-68-95-254-181.dsl.rcsntx.swbell.net) joined #forth 13:33:14 --- quit: nastm (Read error: 110 (Connection timed out)) 13:33:48 --- join: tathi (~josh@tathi.bronze.supporter.pdpc) joined #forth 13:36:04 --- quit: PoppaVic ("g'night y'all - stay well") 13:45:20 ooh 13:45:28 i just had an awesome idea 13:46:02 gah 13:46:03 nevermind 13:46:08 lol 13:46:30 hate it when that happens to me 13:46:31 :) 13:47:04 arke, what are doing with assembler? 13:48:06 virl: nothing right now 13:48:28 :) 13:50:59 hrm 13:51:12 id like to see a forth controlled brake transmission 13:52:21 or even better, toroidal transmission 13:53:32 with predictive behavior 13:55:32 oh, traction control too 13:55:39 higher gearing at low traction 13:57:23 arke, when did you started with x86 assembler? 13:57:32 virl: about2-3 years ago 13:57:36 actually 13:57:40 3.5 years ago 13:59:18 how old where you at that time? 14:00:12 14 14:03:45 so you are the asm guru here :-) 14:04:25 not quite 14:04:30 but i know alot about x86 asm :) 14:04:33 well, 386, rather 14:04:48 i dont know x87 or mmx or any of that 14:05:29 heh. quite a few people here who know asm, I'd think. 14:05:40 err...x86 asm that is 14:06:57 I only know a little bit about it, its a lot of depressing to learn x86 asm. I prefer sx52 asm much more... 14:09:28 --- join: qFox (~C00K13S@92pc222.sshunet.nl) joined #forth 14:20:36 If you worked Prob. 6 in the last set, you discovered that the infix equation (a - b) / c cannot be solved with a definition unless there is some way to rearrange values on the stack. <=== Erm, isn't this untrue? Can't it be solved by: c a b - / ? 14:20:53 Oh 14:20:55 Woops, I see 14:21:09 that would be c b / not b c / 14:21:19 kunphuzil: yay,forth! 14:21:25 er.. hah, sorry may errors 14:21:26 kunphuzil: oh how happy I am that you have converted 14:21:28 YOU KNOW WHAT I MEAN 14:21:35 arke: (: 14:21:58 I still <3 Scheme 14:29:48 schemers... 14:33:09 :s 14:33:20 * kunphuzil hides 14:38:56 I have no problem with lisp & co, other than you need to read a book to fully understand it's concepts. 14:39:24 scheme. iew 14:39:38 --- quit: qFox ("this quit is sponsored by somebody!") 14:55:41 hi everyone 14:55:48 Hi, crc 14:56:58 hi crc 14:57:28 teh hies 15:08:17 --- join: skylan (~sjh@dialup-216-211-5-58.tbaytel.net) joined #forth 15:08:29 Hi 15:11:41 teh hies 15:26:24 --- join: sproingie (~chuck@64-121-15-14.c3-0.sfrn-ubr8.sfrn.ca.cable.rcn.com) joined #forth 15:40:31 --- join: snoopy_16 (~snoopy_16@dsl-084-058-133-183.arcor-ip.net) joined #forth 15:48:14 --- quit: Snoopy42 (Read error: 145 (Connection timed out)) 15:48:35 --- nick: snoopy_16 -> Snoopy42 15:57:59 --- quit: eph ("leaving") 16:08:59 --- join: danniken (CapStone@ppp-70-249-186-85.dsl.ltrkar.swbell.net) joined #forth 16:55:16 --- join: Raystm2_ (~vircuser@adsl-68-95-250-74.dsl.rcsntx.swbell.net) joined #forth 16:57:43 --- join: Raystm2- (~vircuser@ppp-70-243-217-166.dsl.rcsntx.swbell.net) joined #forth 17:00:14 --- nick: Raystm2- -> Rastm2 17:01:00 --- quit: Raystm2 (Read error: 145 (Connection timed out)) 17:04:08 --- quit: crc () 17:04:18 --- quit: Raystm2_ (Read error: 145 (Connection timed out)) 17:05:16 --- quit: skylan (Remote closed the connection) 17:07:26 --- join: skylan (~sjh@dialup-216-211-5-58.tbaytel.net) joined #forth 17:08:18 --- join: Raystm2 (~vircuser@ppp-70-248-35-20.dsl.rcsntx.swbell.net) joined #forth 17:08:25 --- join: crc (crc@pool-70-110-206-182.phil.east.verizon.net) joined #forth 17:08:36 --- quit: crc (Read error: 131 (Connection reset by peer)) 17:08:49 --- join: sproingie_ (~chuck@64-121-15-14.c3-0.sfrn-ubr8.sfrn.ca.cable.rcn.com) joined #forth 17:09:08 --- join: crc (crc@pool-70-110-206-182.phil.east.verizon.net) joined #forth 17:09:33 --- mode: ChanServ set +o crc 17:17:47 --- quit: sproingie_ (Read error: 145 (Connection timed out)) 17:19:51 --- join: sproingie_ (foobar@64-121-15-14.c3-0.sfrn-ubr8.sfrn.ca.cable.rcn.com) joined #forth 17:21:13 --- quit: sproingie (Connection timed out) 17:25:28 --- quit: Rastm2 (Read error: 110 (Connection timed out)) 18:34:00 --- join: pnkfelix (~pnkfelix@zulu.ccs.neu.edu) joined #forth 18:34:31 Hi. 18:37:24 I'm trying to get herkforth building myself on OS X 18:38:22 but porting the assembly has presented difficulties that the Assembler Guide has not solved 18:38:46 * Robert pings Herkamire. 18:39:07 * Robert isn't a qualified herkforth technician. 18:39:13 I was hoping that Herk would able to assist, but perhaps he is AFK 18:39:48 It really isn't a herkforth question as much as a OS X Assembler question. Like, "why isn't .set working like I would expect" 18:39:48 He hasn't been speaking for about 6 hours. 18:40:07 I'm an x86 guy. Stay away from me. ;) 18:43:12 what channel do you supposed would have OS X assembly hackers available to help? 18:43:41 Hmm... I don't really know of any. 18:43:54 So looking around, perhaps asking in #asm, would be my best bet. 18:44:04 Except of course searching the web. 18:44:20 --- join: Raystm2_ (~vircuser@ppp-70-248-34-83.dsl.rcsntx.swbell.net) joined #forth 18:44:26 yeah, I just realized that I was invoking /list the wrong way, and that was why I wasn't seeing any channels related to assembly 18:45:41 #osdev might be able to help as well. 18:47:05 thanx 18:49:23 --- join: Raystm2- (~vircuser@adsl-68-93-40-152.dsl.rcsntx.swbell.net) joined #forth 19:01:13 --- quit: Raystm2 (Read error: 110 (Connection timed out)) 19:03:39 --- quit: Raystm2_ (Read error: 110 (Connection timed out)) 19:04:47 --- nick: Raystm2- -> Raystm2 19:28:45 hello hello 19:29:04 hi there. I've managed to resolve several of my problems since I first spoke 19:29:10 cool 19:29:23 I've discovered that: '#' is not actually a real comment introduction character 19:29:28 pnkfelix: do you need asm for the mach-o header? 19:29:36 and that the arguments to macros are not only referenced by position, but the position is 0-based 19:29:36 pnkfelix: ; is the asm comment :) 19:29:56 Yeah, I got fooled because '#' works if its the first non-white space character 19:30:09 I don't have much time, but I wanted to see if I could be some help now 19:30:14 I have seen asm for the mach-o header floating around, but I wouldn't midn if you could provide it to me 19:30:23 I'm generally around a lot though 19:31:02 you know I have a osx binary right? 19:31:09 Yes, I downloaded that and played with it first 19:31:19 before deciding to dive into the source code 19:31:19 dunno if dissassembling that would be any help 19:31:27 (I want to learn more about how forth is implemented) 19:31:48 my latest problem: .include doesn't seem to work 19:31:57 :) well, mine is certainly not implemented in the normal way 19:32:00 most people have text sources 19:32:05 like, if I change the .include to a #include "macros.s" and run the C preprocessor, then I get rstack and friends defined 19:32:27 ahh 19:32:29 but if I use the .include as it is in the source, then the assembler complains about the referecnes to rstack and friends. Did you run into anythign like that? 19:32:47 yeah, I don't know the syntax for the assembler that comes with osx 19:33:09 so did you use #include as well when you hacked up the OS X binary, or did you do somethign else? Or have you not been using the OS X assembler? 19:33:18 I think that my macho example file might be in apple syntax though 19:33:29 I don't use it 19:33:38 I run the linux version, and save to osx format 19:33:45 oh. weird. 19:34:16 I have forth code to save to osx, but not asm 19:34:24 I see. 19:34:33 Well, I'm hoping I can get this going, one way or another 19:35:56 what other forths would you recommend a novice like me look at, (prefably that run on OS X) ? 19:36:12 [[ I am a Scheme compiler hacker for my primary work ]] 19:36:57 have you run herkforth and played with it? 19:37:25 I think MOPS is a good forth for osx 19:38:02 yes, I have run herkforth and played with it, and I liked it, except I quickly get myself into states that I don't know how to get out of, due to mistyping some control character 19:38:26 yeah, I need to make an undo command 19:38:30 there's an undelete 19:38:35 but you can't undo renames 19:38:46 have to just rename it again 19:38:55 its more that I don't think I've quite digested the model of interaction 19:39:12 in terms of understanding what mode I'm currently in, and what block I'm looking at, and how I switch from one to the other 19:39:13 did you look at the tutorials or crash course? 19:39:19 yes, I've gone through the tutorials 19:39:22 there's no modes 19:39:25 they were not that long 19:39:30 cool 19:39:36 well, there *is* a notion of a current block, right? 19:39:43 I mean, that's the point of new-block, no? 19:39:50 yes, the block number is displayed at top, right 19:39:54 ah 19:40:02 how do I switch from one block to another}? 19:40:06 and a title (if there is such a thing) next to it 19:40:15 [ ] and E 19:40:29 [ and ] are prev/next 19:40:38 24E would take you to block 24 19:40:56 T takes you to the definition of the word under the cursor (wherever it is) 19:41:11 okay. [ and ] are very helpful 19:41:36 does new-block move the editor to the block it creates in that version? 19:41:44 if not just hold ] until it stops moving 19:41:56 yes, new-block does shift the editor forward 19:42:01 hey, I really gotta go. I'll probably be back in a couple hours or so 19:42:02 good 19:42:05 I'm working witht he vversion from today 19:42:06 and C goes back 19:42:09 to wherever you were 19:42:09 Okay, thanks for your help 19:42:24 no problem. I wish I had more time now... 19:42:26 afk 20:05:02 ok, back 20:06:04 hmmm... I can't seem to find that mach-o header stuff. might be on my girlfriends osx box 20:07:03 be sure you learn to use T and C they are so useful. 20:07:03 --- quit: tathi ("leaving") 20:07:17 Okay, at this point, the big road block is that .include "macros.s" isn't actually introducing all of the .set'd symbols that were established within "macros.s" 20:07:37 If I change it to #include "macros.s" and use CPP on it first, then things work 20:07:42 (or come closer to working) 20:07:55 but I'd rather not do that if possible. 20:07:59 yeah 20:08:07 maybe you could find some example asm code for osx 20:08:30 been trying to find some. or even a bugzilla for Darwin 20:09:12 huh 20:09:49 MOPS might have some 20:18:57 --- nick: sproingie_ -> sproingie 20:18:58 --- join: alexander_ (~alexander@ip70-185-182-238.sb.sd.cox.net) joined #forth 20:18:59 re.. 20:19:03 Hi 20:19:22 hello hello 20:19:26 he 20:19:27 y 20:19:57 MOPS does not seem helpful. Or at least, it will take too much effort for me to figure out whether it can answer my question. It certainly doesn't seem to have OS X assembly source anywhere; it comes with its own assembler 20:20:11 ahh 20:20:14 oh, and "Hi" to alexander. C:) 20:20:23 oh well, thought it might have good asm example 20:20:58 if you're interested in how herkforth is implemented, it's probably best to read everything on the wiki, and look at the sources within herkforth 20:21:22 I will do so. 20:21:40 and of course ask me questions 20:22:05 (You have to realize, I am also interested in understanding how the assembly code works for my own selfish purposes related to making our Scheme compiler target PPC) 20:22:18 and please let me know if there's places where the documentation is lacking, unclear, etc 20:22:39 :) 20:22:50 you're interested in writing an assembler? 20:22:58 or just how to accomplish this rot of thing in asm? 20:23:14 not a full featured assembler 20:23:29 cool 20:23:38 just enough to turn our macro instructions into machine code on the fly 20:23:39 incomplete assemblers are easy 20:24:04 most ppc instructions are assembled into only about 6 bit patterns 20:24:54 looks like I've got code for 7... there's probably a few more 20:25:12 But I also just wanted to learn more about Forth in general, because I've read a lot of ravings about it, but never quite "got" it. 20:25:25 so anyway, I wrote a word to compile bitpattern into a single memory-word, and append it 20:25:30 I've read the essays by Chuck Moore and others, but I think I need to hack in it to really understand it 20:25:40 yeah 20:25:46 forth takes a while to really get 20:26:02 not long at all to be able to write bits of code 20:26:11 but sometimes a while to really get it 20:26:15 sinks in slowly 20:26:21 Yeah. I think that many of the things people get excited about in Forth are the same things that Lisp hackers get excited about; things about introducing new linguistic forms and macro-defining macros, etc 20:26:31 looks like I've got those assembler things in block 158 20:26:43 but Forth hackers seem to be concerned about low level details that Lispers just hand wave away 20:26:44 yeah 20:26:55 lisp and forth have a lot in common 20:26:57 Herkamire: I found that I 'got' the initial bits of Forth instantly, but I had to learn a lot of history to figure out what word names people were using to do what I wanted to do. 20:27:04 not syntax or types, but a lot nonetheless 20:27:23 there's some russian forth hacker that said that while the west was doing symbolic programming with lisp, russians were doing it with forth 20:27:30 alexander_: interesting. 20:27:32 I imagine I have a lot of history to catch up on, yes, that is true. 20:27:42 (history in the sense that alex is saying) 20:27:56 sproingie: that's true; I know a couple of russian immigrants that were all huge on Forth back in Russia 20:27:59 I was instantly fascinated by the possibilities of forth, but took a long time the wisdom and effeciencies in the programming style etc 20:28:20 yah 20:28:32 like, check this out.. 20:28:52 so in my assembler, I just pass the opcode, seccondary opcode if it has one, and arguments to those 7 functions 20:29:07 \ Engine RPM 20:29:07 $0C pid vs.rpm uses 20:29:07 { 20:29:07 dup 20:29:07 hi 2 << -> 20:29:08 lo 2 << -> 20:29:10 } 20:29:18 that's Forth that compiles to do a huge bunch of shit 20:29:38 because pid, uses, {, } and -> all compile and do work 20:29:42 then I define a function to compile each instruction. These are dead simple, just pass the opcode(s) to the 7 functions 20:29:51 pid compiles words 20:29:53 well, one of the 7 functions 20:30:09 Herkamire: my Forth AVR assembler sounds like that 20:30:32 any RISC asm should be able to be that simple 20:30:40 what do Forther's tend to do that is analogous to malloc/free ? 20:30:41 I think 20:30:55 some forths come with ALLOCATE/FREE 20:31:00 some don't 20:31:15 all forths have a "heap" wich is just a big hunk of memory to do everything in 20:31:23 ans has allocate and allot. not sure what the difference is 20:31:24 forth keeps a pointer to the next unused byte in the heap 20:31:31 and when the heap runs out, just die? 20:31:40 or reallocate a larger heap? 20:31:41 allocate is like malloc() it returns a chunk of memorry. 20:31:42 pretty much 20:32:11 ALLOT just marks the next bit on the HEAP as used (moves the pointer (called HERE) to the next unused bit forwards) 20:32:14 forth works within the heap, and if you overrun it, then well, that's undefined 20:32:20 die generally 20:32:39 generally the OS will throw a segfault 20:32:49 with embedded, there just ain't any more actual memory to use 20:32:59 you can FORGET stuff or pass something negative to ALLOT to get the memory back 20:33:01 sure, for embedded systems, that is totally understandable 20:33:15 forth runs on some truly dinky processors, like PICs 20:33:21 Herk: Okay, so you can FORGET things in a non-stack like manner? 20:33:34 it's the programmers job not to use more memory than exists 20:33:35 Herk: will ALLOT use a free-list to reuse that manner? 20:33:46 no nono 20:33:47 sorry, that "memory", not "manner" 20:33:47 forth generally lacks garbage collection ... again, not generally considered useful for embedded stuff 20:33:55 no lists 20:33:57 but it's the kiss of death for a lot of higher-level stuff lisp went into 20:34:01 okay, so its purely stack based allocation then 20:34:14 one chunk of memory. the first part's used, then there's a pointer to the begining of the unused portion 20:34:29 the stack is usually not used for allocating anything 20:34:29 ALLOT simply changes the pointer that pointes to the unused portion 20:34:37 the data stack is often quite miniscule 20:34:47 the "dictionary" is where you have more space 20:34:53 sproingie: I don't mean the data stack; I'm saying that ALLOT acts in a stack-like manner 20:34:55 sometimes the dictionary and heap are separate, sometimes the same 20:35:00 FORGET doesn't really have anything to do with the stack 20:35:27 pnkfelix: allot is pretty sequential, not usually used like a stack, no 20:35:45 pnkfelix: it doesn't allocate memory on the C stack (if it even uses it) 20:36:03 I wouldn't say ALLOT is like a stack 20:36:03 ...well, what do you call a pointer that goes up, and then as you free stuff, goes down, if not stack-like? 20:36:11 it doesn't do that 20:36:13 usually memory allocated with ALLOT is never reclaimed 20:36:13 pnkfelix: it doesn't go down as you free stuff 20:36:31 But you pass a negative number to ALLOT to make it go down 20:36:36 pnkfelix: it's like this.. here points to the start of available ram,.. if you want 1024 bytes, here gets incremented by 1024 20:36:40 if you FREE purely in a LIFO manner then yes, it'll act stack-like 20:36:44 if it is, it's usually in a sort of reset (like with FORGET) where you basically go back to the way the system was a while ago by basically deleting the bit of the heap that's been allocated since 20:37:11 all ALLOT does is increment an internal pointer, and FREE simply decrements it 20:37:23 it's more like turing machine tape 20:37:26 sproingie: and you don't see the analogy between that and a stack? 20:37:32 --- join: TheBlueWizard (TheBlueWiz@ts001d0617.wdc-dc.xod.concentric.net) joined #forth 20:37:33 pnkfelix: more like a tape 20:37:34 it is sortof stack like in that it goes up and down at the end, but it's generally not used this way. it usually doesn't ever go down 20:37:48 you _can_ pass something negative to ALLOT but it is rarely done 20:37:48 ah, I think I see your objection 20:37:55 most embedded systems don't allocate and free memory 20:38:02 er, well designed embedded systems 20:38:15 if you want memory you can allocate and free then use ALLOCATE and FREE not ALLOT 20:38:23 you're objecting to my use of the word "stack" because with ALLOT, you can access stuff at arbitrary places in the allocated area 20:38:34 * sproingie has seen a gc for forth, but hasn't really looked at it. looks like simple mark and sweep 20:38:35 yeah, and the unallocated area 20:38:36 but with standard stacks, you only access stuff at the top, or relative to the top. 20:38:46 it is very common to use sections of the not-allocated area 20:38:51 an exact gc for forth would be hard 20:38:58 best you can probably do is conservative 20:39:49 the unallocated is often used as a temporary buffer 20:39:54 pnkfelix: the use of the term "stack" just makes it confusing with forth's two actual stacks 20:39:56 is my description of your objection to my use of the term "stack" to describe the behavior of ALLOT accurate? 20:40:34 pnkfelix: you've correctly stated part of my objection. 20:40:41 sproingie: but different forths have differnet number of stacks, and names them. I've heard of some with 1 stack, and some with 3. So I don't see a big problem with adding a another one with a distinct name, unless it behaves considerably differently from the other stacks 20:41:10 pnkfelix: all "classic" forths have two. many have three, some weird ones have a bunch 20:41:20 which forths have 3 stacks? 20:41:23 and it sounds like the ALLOT pointer is not considered to model the same sort of stacks that standard Forths have. 20:41:30 alexander_: gforth 20:41:36 what're they used for? 20:41:39 pnkfelix: also a stack to me keeps track of the bounderies between the things in it. (usually they're all memory-word sized) whereas the heap is just a mess of stuff of arbitrary length 20:41:43 or are they just arbitrary? 20:41:44 data, fp, return 20:41:46 I used a third stack for addressing. 20:41:50 oh 20:41:51 werd. 20:41:52 alexander: I believe they'e used for doing control flow adjustment 20:42:02 gforth uses a floating point stack, as do some other forths 20:42:12 yah, I haven't ever used FP in forth 20:42:34 so that you can write words that have different behavior for looping or branching. 20:42:45 i hope to bug crc to put fp in retroforth. then i can go nuts writing opengl and such in rf 20:42:50 a forth must have at least two stacks: data and return 20:42:51 but that's only based on a paper I was reading last night 20:43:03 they can have more (eg some forths have a floating point stack and/or a flow-control stack) 20:43:18 the return stack is a very interesting property of forths. you can do some real twisted stuff with it similar to what other languages would use continuations for 20:43:36 yah 20:43:44 these are optional, because you can use the data stack for them 20:43:49 sproingie: I'm looking into thos techniques for a new project. 20:43:53 rf has a word call later that just swaps the top two return stack items 20:43:54 anyway, I was just calling it a stack because it reminds me of the "stack allocation"-like behavior that one sees with languages that use Region-Based Memory Management 20:44:14 sproingie: I don't want to do multitasking, and I don't want to block 20:44:27 forth might actually do well with region-based memory management 20:44:31 it's real gc that's a bear 20:44:38 pnkfelix: ahh :). with ALLOT the memory is hardly "managed" 20:44:47 alexander_: you want coroutines, essentially 20:45:11 it's like saying that the pile of papers on my disk are filed in chronological order... 20:45:16 ALLOT is very much like malloc. actually probably more like sbrk() 20:45:24 sure, I never move them, and add new ones at the top... 20:45:29 sproingie: yah.. but I haven't figured out how I want to design the stuff yet 20:46:05 and occasionally you just take the top 50 papers and throw them in the trash without looking atthem? C:) 20:46:12 but I wouldn't really say that I'm maniging them. They are stacked... but I wouldn't call it a stack in the sense of a forth stack, because I don't take them off the top 20:46:14 alexander_: it's quite an interesting area of CS. you can just have "lightweight threads" or you can go really gonzo and structure everything with coroutines ala CSP 20:46:19 same with allot, you generally don't deallocate 20:47:08 ALLOCATE and FREE work like a normal allocator. pass a length to ALLOCATE and you'll get a pointer to a chunk of memory that size. pass the pointer to FREE later to make it available to future allocations 20:47:23 ALLOT is not at all like malloc() 20:47:29 ALLOCATE is like malloc() 20:47:38 oh, so ALLOCATE maintains a free-list? 20:47:42 ALLOT doesn't even give you a pointer 20:48:08 pnkfelix: something like that. I don't know how ALLOCATE is implemented. just that it's dynamic memory allocation. 20:48:26 100 ALLOCATE gives you a pointer to a buffer 100 bytes long 20:48:40 free it with FREE 20:49:07 after you've called FREE, ALLOCATE can use that bit of memory again 20:49:53 ALLOT is much more primitive. it just advances a pointer. the only way that memory reserved by ALLOT can be reclaimed is if everything added to the heap after it is erased 20:50:22 sounds a lot like the stack of regions to me, but perhaps I just seeing what I want to see. 20:50:38 eg compiled code is often placed on the heap 20:50:48 (and to be truthful, it isn't really like the stack of regions, because you can allocate new objects from regions that aren't on teh top of the stack) 20:50:55 dictionary entries are often put on the heap 20:51:44 sproingie: yah,. 20:51:44 sproingie: it's different than typical C development, because you're redefining your language on the fly 20:51:44 so you can develop new techniques, changing the language a ton 20:52:30 well, C doesn't have a heap, at least not one you can mess with 20:52:53 the heap is a different sort of way of looking at things 20:53:18 it's something like "we've got X amount of memory. we put the kernel and all that at the begining, and the rest is available for whatever 20:53:53 whenever you need somewhere to put something, put it at the begining of the unused part. if it's something you're going to want to keep move the begining-of-the-unused-part marker forward 20:54:07 hmm. nasty. 20:54:12 low level 20:54:17 I love it 20:54:17 but beautiful in a single threaded world. 20:54:29 note that you don't have to use it 20:54:39 there's ALLOCATE and FREE if you want dynamic allocation 20:54:47 well, not in herkforth, but you could write them easily enough 20:55:02 just reserve a chunk of memory, and write code to maintain the free-list 20:56:29 well, its far too late for me to still be at the lab. thanks for all the help! 20:56:37 np 20:56:40 thanks for chatting 20:57:01 if i manage to get this built without too many deltas to the source, I'll send you a diff 20:57:41 ok 20:58:35 --- quit: pnkfelix ("Leaving") 21:47:10 --- part: TheBlueWizard left #forth 22:00:14 --- quit: sproingie ("Konversation terminated!") 22:11:32 --- quit: Herkamire ("off to bed I guess") 22:29:10 --- quit: alexander_ (Remote closed the connection) 22:49:09 --- join: LOOP-HOG (~chatzilla@63.105.22.119) joined #forth 22:52:10 TALK TO ME! 22:52:12 NOW! 22:52:13 grr. 22:52:15 :) 22:52:22 i was reading somethign 22:52:25 :^) 22:52:47 I have to install a module for OSCommerce, no big whoop 22:53:09 anything new with you? 22:56:25 cleaning my room.. 23:03:00 :) 23:04:51 thats something to do 23:04:58 I should clean my place 23:05:07 :) 23:05:16 got a cat crawling over all the piles 23:05:16 :) 23:07:18 is it a nice cat? 23:17:46 yeah 23:18:28 I don't have a pet 23:37:48 I might be back 23:37:49 --- quit: LOOP-HOG ("ChatZilla 0.9.61 [Mozilla rv:1.7.1/20040707]") 23:52:42 --- join: LOOP-HOG (~chatzilla@sub22-119.member.dsl-only.net) joined #forth 23:52:46 hi 23:54:24 hi 23:54:41 I couldn't install it, server maintenance 23:55:43 ;/ 23:55:53 another day 23:55:59 no sweat 23:57:45 i think the perfect job for me would be sole system administrator where nobody cares what you do as long as shit works and you show up for work 23:58:02 can you keep it working? 23:58:19 of course, I'd need an "office" with a beeping entrance so I can switch to my terminal really quick before my boss sees me playing counterstrike :) 23:58:21 then you could just play games all day 23:58:22 yeah, I could. 23:58:31 :^) 23:58:36 make sure backups work 23:58:41 update the software occasionally 23:58:47 and thats about it 23:58:47 :D 23:59:04 the techies can take care of the windows boxenb that the other employees use 23:59:04 :D 23:59:23 chuckle 23:59:59 --- log: ended forth/05.07.01