00:00:00 --- log: started forth/03.05.02 00:01:06 --- part: a7r_ left #forth 02:11:53 --- quit: skylan (Read error: 60 (Operation timed out)) 02:13:50 --- join: skylan (sjh@vickesh01-4730.tbaytel.net) joined #forth 03:20:05 --- join: mur (murr@baana-62-165-187-213.phnet.fi) joined #forth 03:33:23 a7r: awake ? 05:27:06 --- join: crc (12345678@AC90E61A.ipt.aol.com) joined #forth 05:41:55 re 05:42:28 Hi :) 05:55:40 --- join: PoppaVic (~pfv@s130.waters.gtlakes.com) joined #forth 06:14:50 hello 06:16:07 lo 06:36:28 hi pop 06:37:06 Hey mur, Speuler, PoppaVic 06:37:11 Hi Robert 06:37:22 g'dag robert 06:37:38 Go'dag! 06:38:53 PoppaVic: did you solve defer restoration problem ? 06:39:40 Yeah, it restores and prunes back, but apparently the gforth 'marker' stuff is broken - because it will still find/run pruned words, but not list 'em in 'words' and such. 06:40:09 Not an issue for my intended porpoises, but certainly "wrong". 06:41:08 in ine implementation, i've solved it by defining a word forget: which linked forget-actions into a list 06:41:29 forget examined the list, and executed actions as required 06:41:32 uh huh 06:43:00 would look like this: forget: [ was deferred-word ] literal is deferred-word ; 06:43:48 "was" was the opposite of "is", i.e. reading xt from deferred word 06:43:55 yah.. I just do: ":noname _my_marker_ defers empty ; is empty" 06:45:04 Once I get it working at least marginally, I suppose I can totally delete & ignore the markers & shit.. The point is a turnkey-like app anyway. 06:45:46 there may be another breaking point in gforth: the list of files compiled from. i'm not sure whether it is adjusted nowadays upon "empty" or "marker-name" 06:46:40 No idea, but I had to segregate by file - and was marking each & doing each fixup before empty - Seems moot in the case the app is being used, rather than shit developed. 07:12:59 --- quit: crc ("Leaving...") 08:01:55 --- nick: mur -> mur_MaybeCrashed 08:22:34 --- join: monk23_coding (~mind@193.140.248.25) joined #forth 08:22:58 hi :) 08:23:02 Hi monk. 08:23:46 --- part: fridge left #forth 08:50:32 --- join: karingo (karingo@225.portland-03-04rs.or.dial-access.att.net) joined #forth 09:09:40 --- quit: monk23_coding () 09:11:58 --- nick: mur_MaybeCrashed -> mur 09:14:56 --- quit: karingo () 09:16:54 --- join: karingo (karingo@225.portland-03-04rs.or.dial-access.att.net) joined #forth 09:20:21 --- quit: karingo (Client Quit) 09:57:45 hmm.. Anyone know where the 'dstrings' .fs is located - out in "The World"? I'm trying to compare some assorted string foo-foo 10:00:23 i got some string stuff under http://www.forthfreak.net/stringstack . don't know about dstrings. 10:00:52 Yeah, I've got yer stuff - thanks.. I want to compare fstrings to dstrings - sans pfe. 10:01:25 ..the initial problem is strings is strings.. A stack is a sep. issue. 10:02:38 ah. dstrings = delimited strings ? 10:02:50 no, I don't think so.. 10:02:58 I do that for myself, though 10:03:30 I'm supremely unimpressed with forth strings, though - folks complain about C, but sheesh.. 10:04:41 there's hardly string support. if one is not impressed by that, he didn't look at his own implementation :) or, maybe, he did. 10:05:08 hmm? 10:06:12 i'm not unimpressed by fotth strings, instead, i like that i got the choice, and not being bound by some abstract ruling 10:07:15 i can use zero-delimited strings if i like. which i don't. i can use float-counted strings if i'd like those, which again i wouldn't. 10:07:24 Oh, I don't disagree with "choice" - but, shit - it would be nice if we had a loadable base that was worth snot. 10:09:00 varaible-cell cpus would solve that. one string = one cell. 10:09:22 actually, bashforth can use one cell per string 10:09:29 That's what I'm planning for a stack, yes - and I also agree that a string is an abstract datatype 10:09:40 but, for sake of compatibility, it hardly uses those 10:10:47 shit.. I hate scr files - ok, how I load the silly bitch? 10:11:49 1 load 10:11:56 usually 10:12:00 hmm.. 10:12:10 aa 10:13:20 shit *sigh* 10:13:31 OK, it's gonna' be YADIYP 10:13:51 y0et a)nother d)o i)t y)erself p)roject 10:14:10 * mur chooses p 10:15:19 yes, THAT is really something you got to do yourself :) 10:15:54 I hated those .scr files 20 years ago - and I still hate 'em. 10:16:12 i don't like them for source 10:16:18 I know 10:16:24 for storing string data, they're great 10:16:40 prolly, since they are lot like a database-file. 10:16:56 'xactly. rolodex-type 10:17:12 newcomers grasp that concept of file-i/o easily 10:17:13 yeah.. use a hash & get to the proper 'page', etc.. 10:17:36 But, for idiots storing source in it - they need to be burned alive. 10:17:56 if their project is "client data base", i show them blocks first 10:18:11 ..of course, I'm getting the same homicidal feelings about all the assorted "Forth" implementations - and GForth - as well. 10:18:39 hmm. 10:19:02 somebody puts some work and effort into something he's offering freely. 10:19:08 yep 10:19:13 I#d not going to kill him for it 10:19:42 Yeah.. I should cobfuscate my source before release, too. 10:20:20 afaik, the obfuscated code competition has mostly c-entries 10:20:41 Non-sequitur: my point was the form, not the value. 10:20:57 You can't even tell if shit is shit until you play with it. 10:21:19 but, nm - doesn't matter.. I'll just have to do it all from scracth 10:21:22 scratch, two 11:49:01 --- join: sifbot (~sifforth@h0030657bb518.ne.client2.attbi.com) joined #forth 11:49:01 Type sifbot: (or /msg sifbot to play in private) 11:54:16 --- join: karingo (karingo@29.portland-01-02rs.or.dial-access.att.net) joined #forth 11:54:16 --- quit: sifbot (Read error: 104 (Connection reset by peer)) 11:55:13 --- quit: a7r ("Read error: 2.71828182846 (Excessive e)") 12:04:28 --- join: ramnull (~nicad@12-241-145-39.client.attbi.com) joined #forth 12:09:33 --- quit: ramnull ("ircII EPIC4-1.1.7 -- Are we there yet?") 12:09:41 --- join: sifbot (~sifforth@h0030657bb518.ne.client2.attbi.com) joined #forth 12:09:41 Type sifbot: (or /msg sifbot to play in private) 12:30:59 --- join: nicad (~nicad@12-241-145-39.client.attbi.com) joined #forth 12:36:36 --- quit: nicad ("ircII EPIC4-1.1.7 -- Are we there yet?") 12:45:17 --- join: kc5tja (~kc5tja@ip68-8-206-137.sd.sd.cox.net) joined #forth 12:53:12 --- join: ramnull (~nicad@12-241-145-39.client.attbi.com) joined #forth 12:53:32 What's up? 12:53:41 nothing 12:54:34 Alright, I need some pointers. Basically, when it comes to parsing C structs into a Forth program, I just DONT GET IT. Heh. 12:54:54 hehehe 12:54:57 I can do just about everything else just fine. 12:55:00 I sympathise 12:55:17 I figured out forth structs - finally - and it STILL looks like shit - but works 12:55:55 Even using I440r's "struct: " word for IsForth, I cant get the syscall to put the data into the struct. I gotta be doing something wrong. 12:56:04 I can throw you a dcc file I wrote to figure it out, if you want.. 12:56:11 oh.. ISSforth - I pass 12:56:18 Sure, if you dont mind. 12:56:27 I wrote it for gforth 12:56:31 but, ok.. 12:57:01 I can usually take a gforth proggy and translate it to IsForth without much trouble. 12:57:32 Thanks. 12:57:51 I'm still trying to figure out how I can better deploy that stuff, but it was fun to learn 12:58:31 PoppaVic: I'm working out a way to control the framebuffer and other Linuxisms directly. 12:58:40 ugh 12:58:54 ncurses? gtk? ;-) 12:58:57 * kc5tja uses structures all over the place in his Forth programs. My structure definition words aren't that different from GForth's. 12:59:36 Actually, I intend to create my own drawing primitives in more portable dialect of Forth. 12:59:44 I don't find the "structure words" all that comfortable, though 13:00:02 kc5tja: Any advice for a greenhorn such as myself? 13:00:16 Yeah, I kinda agree. I haven't found anything better though. I'll sometimes use parallel arrays, but I usually out-grow those pretty quick. 13:00:23 "more portable dialect"? ANS? 13:00:46 yeah.. I just wish I could "visualize" a nicer way to deal with structs. 13:01:01 I generally prefer lookup tables. 13:01:04 ramnull: I'm not sure I understand the question. What advice are you looking for? 13:01:28 ramnull: I know how I use tables, but not sure what you mean. 13:01:32 kc5tja: Well, take for example the getdents() syscall... 13:01:59 kc5tja: It returns a structure of dirent... 13:02:21 yep - I see yer point. 13:02:34 kc5tja: Now what I have to do right now is read that into a buffer and the parse each individual element into a oversized lookup table. 13:02:37 ..like I said. 13:02:56 good grief, why? 13:03:50 Cause, like I said, I havent figured out how to have the syscall put that data directly into my own dirent forth struct. 13:04:01 ahhh.... padding 13:04:03 Why not just reference the fields of the structure directly? E.g., addr offset + @ or addr offset + ! ? My structure words (and I think PoppaVic's might as well; I haven't seen his code) automate the offset + part, so it becomes addr field @/! . 13:04:06 yeah. 13:04:34 yeah, I just looked over the info-pages for gforth, and faked it awhile. 13:04:53 struct 13:04:53 cell% field stack%swl \ Struct Word List 13:04:53 cell% field stack%sbz \ Struct Base siZe 13:04:53 cell% field stack%sbp \ Struct Base Pointer 13:04:54 cell% field stack%sii \ Struct Index Input 13:04:54 end-struct stack% OK 13:05:03 GAHH!!! FUCKIN' ROOMMATE!! I'm gonna kick his butt... 13:05:08 hehe 13:05:08 He broke the screen door...brb 13:05:16 kill! ;-) 13:05:17 --- quit: sifbot (Read error: 104 (Connection reset by peer)) 13:06:00 PoppaVic: Try dccing that file again if you would, for some reason it didnt make it over here in one piece. 13:07:26 sure.. lemme get the filespec again.. 13:07:53 there 13:08:15 better? 13:08:16 That did it. It's good now. 13:08:20 cool 13:09:28 Yeah, I get a lot of "bad vibes" about a lot of the forth implementations.. *sigh* Seems like involving C source or calling on C libs/objects is quite the buttmunch. 13:10:04 --- join: I440r (~mark4@dialup-65.58.208.56.Dial1.Cincinnati1.Level3.net) joined #forth 13:10:20 --- join: sifbot (~sifforth@h0030657bb518.ne.client2.attbi.com) joined #forth 13:10:20 Type sifbot: (or /msg sifbot to play in private) 13:10:32 I've been thinking, once I've finally got the details figured out..about creating a linker "subForth" for interfacing with other languages. 13:10:53 did you give up on frame buffer ? 13:10:57 well, there IS "ficl", but it sorta' makes me ill to look at for some freaky-reason. 13:11:30 I440r: Nope. Actually I'm having a bit of success, for all of 10 seconds until my terminal is fully hosed. 13:11:36 hehe 13:11:46 10 secs! wheeee! ;-) 13:11:47 heh 13:12:32 sounds like those "warm up" periods you get with GTK or ncurses ;-) 13:12:40 This whole Interfaces idea comes from my Ada experience, where there is a standard "Interfaces" package made specifically for that purpose. 13:12:49 "It's work-... shit." 13:13:09 i.e. Interfaces.C, Interfaces.Fortran, Interfaces.Cobol, etc... 13:13:28 ok.. (?) 13:13:36 i wouldnt know about those warm up periods, isforth has no need for ncurses and i PLAN on doing my own forth based x toolkit 13:13:44 fxtk ? :) 13:13:52 or isx ? 13:13:54 lol 13:14:26 Everyone needs another wheel. 13:15:16 I440r: How do you go about importing C structs? 13:15:37 I440r: Just use mmap? 13:15:53 importing c structures ? 13:16:24 ram: he hates C, thus I doubt you'll see any action for dealing with it. 13:16:31 PoppaVic: its not a reinvention of the wheel, its a disassociating my project from EVERYTHING c 13:16:48 my curses code is about 5k 13:16:49 Right "reinventing the wheel" - I said what I meant. 13:17:13 ..I won't say a smaller ncurses is a bad idea, though 13:17:18 I440r: Well, I'd like to do it in Forth rather than Assembler. 13:17:34 its not as functional as the curses library but that also means i dont have all the CRUFT it has. like supporting every fscking stupid bullshit quirk of every single terminal 13:17:37 I440r: The framebuffer stuff that is. 13:18:10 ramnull well isforth doesnt have an assembler extension yet - but parts of that frame buffer code will NEED to be in assembler or it will suffer from being slow :) 13:18:14 like my memory manager does atm 13:18:45 --- quit: sifbot (Read error: 104 (Connection reset by peer)) 13:18:59 I440r: You know, the gnu "screen" library is a a lot leaner than curses. 13:19:51 ramnull the screen lib does the same thing as ncurses ? 13:20:00 maybe ill have to take a look at the sources for it 13:20:43 I440r: Kinda. Not alot of fancy windowing stuff in it. 13:21:40 I440r: Designed for multiple "windows"(Actually virtual terminals) on a terminal. A couple of bells and whistles. Designed for Shellheads. 13:22:34 The Epic4 irc client uses it, if it's available. 13:22:39 Screen relies on ncurses for its display management. 13:22:53 OK.. Talk at you guys all tomorrow - time to get rollin' 13:22:59 --- quit: PoppaVic ("stay well, y'all") 13:23:24 kc5tja: Well shit. Is it in the docs? 13:23:31 It's in the output of ldd. 13:23:39 and it only has vt100 13:23:39 I just grabbed it today. 13:23:44 ldd `which screen` will show libncurses to be in the list of libraries it links against. 13:24:09 lol 13:24:46 Alright. Fuck. Now I'm determined to get this Framebuffer stuff working. Guess I'll have to do a little assembler after all. 13:25:12 Gotta have every damn program linking against 20 different libraries. 13:25:16 And as far as accessing C-style structures is concerned, all a structure is is a specification of which variables are placed where in memory, given a base address. 13:25:30 ramnull how will you do coded definitions ? 13:25:34 To access a field in Forth, you simply add the offset to the base address, and @ or ! as approriate. 13:25:50 isforth already supports structures of that type too 13:25:51 appropriate even 13:26:01 right 13:26:27 Man, you're lagged. :/ 2.26 seconds 13:26:30 if im lagging its because im also downloading some cruft :) 13:26:35 Ahh 13:26:58 Is it safe to say that the structs are always sequentially allocated? 13:27:15 The fields within a structure are always sequentially allocated. 13:27:39 * kc5tja isn't familiar with GCC doing padding on the x86 platform. 13:27:44 actually in isforth YOU decide where a given structure is actually placed. you can "allot" space for it or "allocate" space for it 13:27:51 i suggest only using allot if... 13:27:59 1: your not going to do an fsave later 13:28:03 I440r: I don't think that's what he's asking. 13:28:11 2: your going to do an fsave and yhou want the structure instance part of the target 13:28:25 well erm... what were you asking ??? heh 13:28:27 * ramnull is listening. 13:28:36 getdent() returns a structure. 13:28:50 * kc5tja doesn't even have a man page for it. WTF?! 13:28:57 * kc5tja sighs 13:29:06 me either!!!!!!! 13:29:10 He wants to know how to get access to the fields of the structure. 13:29:32 given the address of the structure (im talking isforth here) 13:29:33 Am I right, ramnull? 13:29:42 name the element within the strucuture 13:29:46 kc5tja: Yeah. But I pass my structure allocation to getdents() as the buffer pointer, assuming that it'll copy the values into the structure. 13:29:56 you now have the address of that element withing the given structure 13:29:57 * kc5tja nods -- that's fine. 13:30:05 you can now @ ! c@ c! w@ w! etc 13:31:00 I440r: 12 dirinstc fd getdents Yes? 13:31:32 eh ? 13:31:42 brb 13:31:50 getdents is your syscall ? 13:32:05 I440r: Assuming getdents is thus .... 3 141 syscall getdents 13:32:09 wrap the syscall name in <> so i KNOW its a syscall hehe 13:32:18 use 3 141 syscall 13:32:23 * ramnull nods 13:32:23 its an isforth convention :) 13:32:34 Gotta get used to that convention. 13:32:38 let me try man 2 getdents 13:32:48 there it is 13:33:49 Usually I'll do struct: dirent ;struct And then create dirinstc dirent allot 13:34:10 ok, well ive not looked into the directory reading syscalls yet, but i think you have the parameters backwards. 13:34:43 the struct: doesnt define an instance of the structure, it just defines the shape of the structure as it were 13:35:05 Well, when I pass the params as shown in the manpage, it fails. But when I pass them the way I just showed you, it succeeds. 13:35:16 i.e. RPN 13:35:17 does that syscall return "count" instances of the structure ? 13:35:30 if so you need to allocate space for "count" instances of the structure 13:35:34 * ramnull nods 13:35:59 12 structure-name * allocate/allot 13:36:01 So I gotta do variable dirinst dirent 12 allot. 13:36:06 if i do 13:36:10 struct: foo 13:36:13 .... stuff here 13:36:15 ;struct 13:36:27 then "foo" will return the total size of the structure 13:36:42 I'm with yah there. 13:37:16 so to allocate space for 12 foo structures i would do 13:37:19 12 foo * allot 13:37:37 --- quit: Fractal (Read error: 104 (Connection reset by peer)) 13:37:55 Aaaah. And it should sequentially allocate 12 instances of the struct. 13:38:12 if there was a syscall that returnd N instances of a foo structure i coud point at the above allocated buffer, run the syscall and i would then have 12 instances of said structure in said buffer 13:38:21 yes. YOU should 13:38:33 allocating just one will not work :) 13:39:34 Heh. 13:39:36 --- join: Fractal (banyduh@new.cure.for.SARS.found.to.be.strongLSD.com) joined #forth 13:39:51 I was trying to read it into a straight buffer, and pick out the elements piece by piece. 13:40:23 if the buffer is 12 times the size of one structure instance then that will work 13:40:35 to point to the Nth structure within that buffer do 13:40:38 foo N * 13:40:49 you now have a base pointer to the Nth structure 13:40:53 * ramnull nods 13:41:04 you can now name an element of the structure and @/! to it 13:41:05 Yeah. Simple arithmetic. 13:41:28 but remember. if you need to access more that just one element of the same structure you have to save the base address 13:41:39 let me show you what i mean 13:41:44 struct: foo 13:41:52 1 dfield foo.bar 13:42:00 1 dfield foo.fud 13:42:03 ;struct 13:42:11 create foo-instance foo allot 13:42:25 --- nick: mur -> sauna 13:42:38 10 foo-instance ( we now have the address of the allocated foo structure) 13:43:03 I gotcha. 13:43:03 foo.bar ! (foo.bar converted that address of the structure into the address of the foo.bar element of that structure) 13:43:29 we stored 10 in the foo.bar element of THAT structure 13:43:33 To put it simple, I was skipping the "10 foo-instance" step. 13:43:54 the 10 was the value i want to store in the structure 13:44:05 lets say i want to set foo.bar to 10 and foo.fud to 20 13:44:30 10 foo-instance foo.bar ! 13:44:36 20 foo-instance foo.fud ! 13:44:37 or... 13:44:44 * ramnull nods 13:44:50 10 20 foo-instance tuck foo.fud ! foo.bar ! 13:44:51 heh 13:46:12 welli gotta go 13:46:14 So, I could could go 10 foo * allot here and then proceed with my address arithmetic. 13:46:21 Laters I440r. 13:46:26 yes you can do that! 13:46:52 but if you "allot" it and then fsave you will increase the size of the executable 13:47:01 better to "allocate" at run time 13:47:07 * ramnull nods 13:47:10 Gotcha. 13:47:11 outa here 13:47:13 --- quit: I440r ("Reality Strikes Again") 13:47:18 --- quit: ramnull ("This isn't Happy Hour!") 13:56:54 --- join: sifbot (~sifforth@h0030657bb518.ne.client2.attbi.com) joined #forth 13:56:54 Type sifbot: (or /msg sifbot to play in private) 14:09:09 --- quit: kc5tja ("THX QSO ES 73 DE KC5TJA/6 CL ES QRT AR SK") 14:09:10 --- quit: sifbot (Read error: 104 (Connection reset by peer)) 14:20:01 --- join: sifbot (~sifforth@h0030657bb518.ne.client2.attbi.com) joined #forth 14:20:01 Type sifbot: (or /msg sifbot to play in private) 14:20:01 --- quit: sifbot (Read error: 104 (Connection reset by peer)) 14:25:02 --- join: sifbot (~sifforth@h0030657bb518.ne.client2.attbi.com) joined #forth 14:25:02 Type sifbot: (or /msg sifbot to play in private) 14:25:02 --- quit: sifbot (Read error: 104 (Connection reset by peer)) 14:32:56 --- join: sifbot (~sifforth@h0030657bb518.ne.client2.attbi.com) joined #forth 14:32:56 Type sifbot: (or /msg sifbot to play in private) 14:33:09 --- nick: sauna -> mur 14:51:23 --- join: semtex (~Speuler@mnch-d9ba4c15.pool.mediaWays.net) joined #forth 14:58:06 --- quit: mur (Read error: 104 (Connection reset by peer)) 14:58:07 --- quit: sifbot (Read error: 54 (Connection reset by peer)) 14:59:20 --- join: mur (murr@baana-62-165-187-213.phnet.fi) joined #forth 15:13:29 --- quit: karingo () 15:25:39 --- join: crc (12345678@AC8ADB3D.ipt.aol.com) joined #forth 15:31:11 --- join: sifbot (~sifforth@h0030657bb518.ne.client2.attbi.com) joined #forth 15:31:11 Type sifbot: (or /msg sifbot to play in private) 15:57:13 --- join: a7r (~a7r@206.72.82.135) joined #forth 15:57:14 --- quit: sifbot (Read error: 104 (Connection reset by peer)) 15:57:14 hey 16:02:20 --- join: sifbot (~sifforth@h0030657bb518.ne.client2.attbi.com) joined #forth 16:02:20 Type sifbot: (or /msg sifbot to play in private) 16:03:16 sifbot: variable sr4 15 sr4 ! : lfsr4 dup dup 1 and 3 << swap xor 8 and swap 1 >> or ; : getbits 0 swap 0 do sr4 @ lfsr4 dup sr4 ! 1 and i << or loop ; : newseq 32 getbits ; 16:03:17 a7r: Word not found: xor 16:03:21 WHAT 16:03:25 no xor? 16:03:37 sifbot: 1 2 << 16:03:39 a7r: 16:03:47 sifbot: . 16:03:49 a7r: stack underflow 16:03:53 sifbot: 1 2 << . 16:03:55 a7r: 4 16:04:37 sifbot: x-or 16:04:38 a7r: Word not found: x-or 16:04:42 sifbot: xor 16:04:44 a7r: Word not found: xor 16:04:52 sifbot: see << 16:04:54 a7r: Word not found: see 16:05:17 sifbot: ." I'm too lame to know about xor." 16:05:19 a7r: 16:33:05 --- quit: mur ("irc is now finished. insert coin if you wish to continue.") 16:35:59 --- quit: Speuler (Connection timed out) 16:37:54 --- join: Speuler (~Speuler@mnch-d9ba449a.pool.mediaWays.net) joined #forth 16:38:12 --- join: CaffeineJunkie (~Speuler@mnch-d9ba449a.pool.mediaWays.net) joined #forth 16:39:55 --- quit: sifbot (Read error: 104 (Connection reset by peer)) 16:41:36 --- quit: semtex (Read error: 60 (Operation timed out)) 16:41:51 --- join: ramnull (~nicad@12-241-145-39.client.attbi.com) joined #forth 16:42:07 Wazzzzuuup?! 16:45:04 --- join: sifbot (~sifforth@h0030657bb518.ne.client2.attbi.com) joined #forth 16:45:04 Type sifbot: (or /msg sifbot to play in private) 16:45:29 --- part: crc left #forth 16:52:53 --- quit: ramnull ("This isn't Happy Hour!") 18:03:46 --- quit: a7r (Read error: 54 (Connection reset by peer)) 18:09:50 --- join: ramnull (~nicad@12-241-145-39.client.attbi.com) joined #forth 18:10:01 I'm back. 18:17:38 --- quit: sifbot (Read error: 60 (Operation timed out)) 18:21:52 --- join: a7r (~a7r@206.72.82.135) joined #forth 18:31:36 --- quit: ramnull ("This isn't Happy Hour!") 19:21:29 do you guys use blocks? 19:43:34 * onetom uses (flux blx ;) 19:53:42 --- join: crc (crc@AC9ED9F3.ipt.aol.com) joined #forth 20:53:13 --- quit: crc ("Leaving...") 21:37:06 --- join: kc5tja (~kc5tja@ip68-8-206-137.sd.sd.cox.net) joined #forth 21:46:51 --- quit: TreyB () 21:50:15 --- join: karingo (karingo@75.portland-01-02rs.or.dial-access.att.net) joined #forth 21:56:36 --- join: sifbot (~sifforth@h0006259af547.ne.client2.attbi.com) joined #forth 21:56:36 Type sifbot: (or /msg sifbot to play in private) 21:56:36 --- quit: sifbot (Remote closed the connection) 21:59:52 --- quit: karingo () 22:01:37 --- join: sifbot (~sifforth@h0006259af547.ne.client2.attbi.com) joined #forth 22:01:37 Type sifbot: (or /msg sifbot to play in private) 22:05:56 sifbot: 0 0 do 1 loop 22:23:20 --- quit: sifbot (Read error: 110 (Connection timed out)) 22:32:26 --- quit: kc5tja ("[x]chat") 23:15:09 a7r: awake ? 23:15:27 CaffeineJunkie: yeah 23:15:52 you were looking for some one with forth chip experience ? 23:16:19 yeah, I was mainly looking for someone that could comment on using them 23:16:36 i used novix nc4016 and psc1000 23:17:01 how were they to program with? 23:17:09 very forthy 23:17:13 haha 23:17:50 the opcode structure was different for these two 23:18:40 novix resembles more a bit-slice processor, psc1000 used byte-size instructions 23:19:19 cool 23:20:53 0 tuck range do i @ .... cell +loop 23:21:18 the ... was your checksum part which i didn't memorize 23:21:57 ah 23:22:04 killer 23:22:15 probably something wrong with this one 23:22:21 no good to work from memory 23:23:02 things like tuck, I wasn't aware of 23:23:15 you did 0 swap 0 23:23:44 i.e. x -- 0 x 0 23:24:50 tuck works like over, but into the other direction 23:25:03 okay, here's my current version: 23:25:11 therfore it was called under for a while 23:25:18 : ipchksum ( a n -- s, take n cells starting at memory location a, and push thei 23:25:18 r IP checksum back) 23:25:18 0 swap 0 do over i cells + @ add-carry + loop add-carry invert mL swap drop 23:25:18 ; 23:25:27 this does it from memory, which is more what I need 23:25:40 with add-carry and mL being: 23:25:45 : add-carry ( n -- c, sums the two halves of a cell ) 23:25:46 dup 16 >> swap mL + 23:25:46 ; 23:25:52 : mL FFFF and ; 23:27:58 0 -rot range do i @ add-carry + cell +loop add-carry... 23:28:33 okay, I don't have a range w/ pforth, how is that implemented? 23:28:41 bounds ? 23:28:54 don't have that either 23:29:38 : range over + swap ; 23:31:15 not a standard word, but can be found often 23:31:31 sometimes called range, sometimes bounds 23:31:47 oh, I see 23:31:53 it converts from start count -- limit start 23:31:56 so I'm looping over the addresses, rather than having to compute them. 23:32:01 right 23:32:11 that makes a hell of a lot more sense 23:32:45 reduces the workload withing the loop 23:35:03 --- quit: Speuler (Remote closed the connection) 23:35:10 --- nick: CaffeineJunkie -> Speuler 23:38:12 Speuler: that +loop and range are both excellent words 23:39:07 +loop can be a pain to implement. 23:39:17 yeah 23:39:21 it looks like it could be 23:39:43 but from the user side, you don't need to care 23:39:53 yeah 23:40:38 where you can test for identity with loop, you can't with +loop 23:40:53 : foo 11 0 do 4 +loop ; 23:41:22 index would be 0 4 8 23:41:35 will never be 11 23:41:48 but still needs to terminate loop 23:42:03 : foo 0 11 do -4 +loop ; 23:42:07 ... 23:42:14 yeah 23:42:46 once, end-of-loop condition is, index < limit, once, index > limit 23:48:17 --- join: karingo (karingo@75.portland-01-02rs.or.dial-access.att.net) joined #forth 23:55:19 --- quit: karingo () 23:58:37 --- join: divgrad (~wer@81.25.33.188) joined #forth 23:59:59 --- log: ended forth/03.05.02