00:00:00 --- log: started forth/02.12.23 02:42:20 --- quit: lament ("mental mantle") 03:45:15 --- quit: proteusguy (forward.freenode.net irc.freenode.net) 03:45:15 --- quit: TreyB (forward.freenode.net irc.freenode.net) 04:39:48 --- join: FML (~FML@p50805FDB.dip.t-dialin.net) joined #forth 04:39:54 'lo 04:42:08 [13:40:47] 04:43:10 hi 04:43:16 hey 04:47:02 where is the src of enth.bin? 04:56:48 + i wonder from where it actually was metacompiled from... 04:59:45 onetom: hey nice 2 meet you 05:00:22 'morning 05:03:25 Speuler_: 'morning. just woke up? 05:04:43 not so long ago. just had a fast break 05:06:30 head still feels muddy 05:15:35 fresh air! 05:16:33 sorry, out of stash 05:31:55 --- join: ham (ham@stef.tvk.RWTH-Aachen.DE) joined #forth 05:31:59 hi 05:40:01 --- join: edrx (~user@200.155.19.36) joined #forth 05:40:08 hi 05:40:20 hi 05:40:47 are you familiar with forth? 05:40:50 do you remember the name of the colorforth channel? 05:40:55 I used to be 05:41:19 question? 05:41:22 heh no sorry i just wanted to know what makes forth special and what is it good at 05:42:32 edrx: afaik there is not irc channel for colorforth 05:42:49 edrx: so few users and colorforth doesn't have an irc client 05:42:56 it's incredibly funny to use - I mean, when you're using a system that you understand... and very often problems that would seem to take weeks to implement in other languages can be programmed in forth in a VERY short time 05:43:28 ham: simplicity, predictibility, factoring 05:43:53 from what i know is stack based isnt it? 05:44:06 it is stack based. 05:44:08 such that it makes it good for fast processing on most cpus 05:44:40 not really. writing a fast forth compiler for RISC cpus with huge register files is farily tricky 05:44:49 XeF4: hm, ok... I'm still waiting for a version that can be booted by grub, but I don't have much time to work on that myself right now 05:45:00 there is one that can be booted by grub 05:45:37 can't recall the name and it was of such quality that I never used it again after trying it 05:45:38 XeF4: really? d'you have a url, or keywords for searching for it? 05:45:44 :( 05:46:16 do you happen to know something about CSP? 05:46:39 CSP? no. 05:47:06 aha, ForthOS - http://www.forthos.org/ 05:47:40 ham: I think that the most important point is saving programmer time, and making people regain total control over their machines. CPU cycles are not so important - or shouldn't be. But there are many writers of Forth systems that care only for execution speed 05:48:31 edrx: who are these writers? I want to see a forth written only for execution speed 05:51:13 ham: I guess that this is one of the main intentions behind isforth... also, gforth is quite fast, but I find it almost impenetrable... and marcel hendrix seems to care a lot about speed in his Forths. Chuck's Forths seem to be very very fast, but he has lots of other concerns too 05:51:51 so you think that forth is still worth a look yes? 05:52:04 do you think that there are some applications for ai? 05:54:41 ham: what do you call "applications"? btw, are you in the windows world or in the unix world? 05:54:45 I think forth is worth a look. Otherwise I wouldn't use it. 05:55:12 unix :) 05:55:26 ham: I think that Forth is one of the very few really interesting programming languages 05:55:55 I thought isforth's goal was to be a simple, tractable, reasonably fast Forth for Linux 05:56:48 the others, IMO, would be Icon, Emacs Lisp (because of Emacs), ML, and Tcl, because of Expect 05:57:03 lisp is fine imho 05:57:23 ive heared of icon what does make this so special? 05:58:25 XeF4: I have to confess that I don't know much about isforth, I just carry some old prejudices against it, because of I440's attitudes :S 05:58:25 emacs lisp is nothing too special 05:58:35 but it is "good enough" and it comes with emacs 06:00:04 XeF4: yep - the good thing about it is that Emacs is ridiculously open and extensible, you can even put emacs lisp in arbitrary text files and execute them with C-x C-e... I use that as hyperlinks, and to invoke debuggers, etc 06:01:11 re: i440r's attitudes. yes, they are a bit abrasive at times. =< 06:02:15 ham: go to http://www.cs.arizona.edu/icon/ftp/doc/ and download one of the versions of _The_Icon_Programming_Language_ (the "blue book") 06:02:24 as for the code-in-buffers Enth/Flux can do that. 'tis a shame the the rest of the system is so flakey 06:04:14 XeF4: I took note of that, I'll take a look when I have time 06:04:19 and fpc for dos can do that 06:06:58 and I was working on something like that for a colorforth, but I've not touched the sources for 3 months so don't count on it being ready too soon. 06:08:05 XeF4: I have used (or tried to use) fpc for a while a long time ago - I had used HS-Forth rather heavily before that, and HS-Forth had an environment that I considered brilliant, that was much simpler, and non-windowish. It was inspired in the environment of the old ROM Basic/ gwbasic for PCs... 06:08:43 XeF4: you could walk around the screen and edit text anywhere. If you pressed , that line would be executed. 06:08:58 like CBM basic then 06:09:05 XeF4: yes 06:09:26 never tried HS-Forth 06:09:30 and emacs has a similar feel to me 06:09:59 emacs has too much separation between the Lisp system and the editor for my taste 06:10:22 but it could be much worse (C) 06:10:24 XeF4: it was commercial, unfortunately... I still have it, but most of the documentation is only in paper form. 06:12:06 XeF4: I have a small library for Emacs that blurs that distinction, but I never polished its docs enough to make it become an official part of emacs... and once I met RMS and we started to talk about it, and he said something that pissed me off - that "users should never be forced to see lisp" 06:12:20 I'm not sure about what's his current position, though 06:12:59 I daresay he's too busy with the political side to have a position on such trivial matters. 06:14:09 XeF4: oh, I don't think so, he has become again the official maintainer for Emacs, and he spends a lot of his free time working on Emacs 06:14:35 when did this happen? I've been out of touch with most things GNU since May last year or so 06:15:11 I think that around the time that Emacs21 was officially released 06:18:26 aha. there were unofficial prereleases of emacs21 circulating just as I took an extended holiday from such things 06:18:33 so July last year or so I guess 06:19:34 XeF4: I have to go... my home page is , btw, and I'm going to work on it now, it's a mess... thanks for the infos and the inspiring conversation :) 06:19:37 anyhow, what does this library do? 06:19:54 later 06:19:59 XeF4: it does two very simple things... 06:20:06 XeF4: I can explain that now :) 06:21:42 one, it implements a series of functions with names like `find-xxx' - for example, (find-forthosfile "README.ForthOS" "Output via TTY") can works as a hyperlink 06:22:53 (find-node "(gawk)Array Example" "five") is a hyperlink to an info node, (find-man "gforth" ...) a hyperlink to a manpage, etc 06:24:13 and it also implements a command called "eev", that lets you mark a block and save it to a temporary script file, that you can invoke from a shell; so you can also put arbitrary shell code inside text files, and execute it conveniently 06:25:15 and there are many variations on these things. There's a sort of a tutorial at 06:26:58 later - I'm not sure if the package is clean enough, etc - the whole eev project is napping while I finish my PhD thesis 06:27:11 bye 06:30:34 --- part: edrx left #forth 06:37:01 --- join: TreyB (~trey@cpe-66-87-192-27.tx.sprintbbd.net) joined #forth 07:32:31 hrm, time to switch to a forth with up-key memory :) 07:34:02 iangreen: write your own :) 07:36:34 --- quit: FML ("bb") 07:40:23 soon i will be ready, Speuler_ :) 07:40:36 once i write a fairly decent sized program 07:41:45 --- join: Serg_Penguin (~Z@nat-ch1.nat.comex.ru) joined #forth 07:41:52 yeah, I'm giong to have to though.. I can see tha talready :) 07:42:02 hi 07:42:21 hey 07:42:45 what are u talkin about ? 07:47:44 --- quit: Serg_Penguin () 07:48:43 damn u i44or! make up-arrow buffer 07:51:14 --- join: XeF4_ (xef4@lowfidelity.org) joined #forth 07:53:21 --- quit: XeF4 (Read error: 104 (Connection reset by peer)) 07:54:37 what exactly does leave do ? 07:54:40 in if/then 07:55:09 ahh, got it i think. 07:57:25 iangreen, : break out of a do ... loop 08:01:40 yah, i was thinking it broke out of the word for some reason 08:01:51 should I avoid using the return stack outside of a do loop 08:02:16 eg... foo >r 5 0 do (get access to foo) loop r> drop ; 08:02:38 seems yucky, i'd have to r> r> >r 08:02:48 guess i should use datastack 08:05:20 or is i different from r@ ? 08:05:35 seems I thought r@ should be == i 08:05:44 but in isforth, r@ doesnt seem to give i 08:12:43 yes, you should avoid that 08:13:40 loop index and/or limit are not required to reside under r 08:14:39 k. 08:14:51 it's not bad that I am using dup a whole hell of a lot is it ? :) 08:15:26 nope, it's use is quite normal 08:15:59 and consistent with the idea "called words use up their arguments" 08:20:59 right. 08:22:12 damn, its so easy to just throw here on the rstack and not have to worry about stack manip :) 08:24:13 I suppose it would be ok if i did a >r .. r> outside of my loop, yes? 08:24:30 i've got 4 numbers going on here, seems 1 too many 08:27:46 iangreen: if you do an address calculation, consider to loop through addresses, rather than by loop index incremented by one 08:29:12 Speuler_: hmm what's a nice wy to do that? 08:29:32 like bla here 10 cells bounds do dup i ! cell +loop drop 08:29:38 or 08:29:49 ahh, cell +loop ? 08:29:52 neat 08:29:54 bla here 10 bounds do dup i c! loop drop 08:29:59 whats bounds 08:30:00 ? 08:30:08 whats c! ? stores into here ? 08:30:21 calculates end+1 start from start range 08:30:41 erm 08:30:50 * iangreen thinks / looks up 08:30:52 c! is byte store 08:31:21 speuler: so I can do 5 allot 1 c! 2 c! 3 c! ? 08:31:23 etc 08:31:29 oh, no 08:31:41 cos its 5 cells, which are 4 bytes to me 08:31:47 why would i want to store bytes ? 08:32:00 Also, C! does not increment anything. 08:33:52 iangreen, some data is often arganized as bytes. think of character strings 08:34:10 so i can write cells chars per ... cell allotted? 08:34:16 4 chars per cell? 08:34:21 in my case 08:34:29 iangreen, on 32 bit systems, yes 08:34:31 i've been writing one to each cell :) 08:34:32 hehe 08:34:35 doh :) 08:34:40 on 16 bit, it's 2 chars per cell 08:34:48 iangreen: Unicode :-) 08:34:58 bah i dont need it :) 08:35:04 but *nod* 08:35:30 so how does c! know where to point to if its not incremented ... hrm 08:35:52 C! takes two parameters from the data stack: the value and the address 08:36:00 ah - 08:36:25 create values 1 , 2 , 3 , <--- creates 4 cells? 08:36:40 so that could be rewritten to take up 25% the space? 08:36:43 on a 32 bit system ? 08:38:22 right 08:38:29 c, 08:38:33 It takes at least three cells. The spec leaves the dictionary structure undefined. 08:38:39 sweet 08:39:15 if , stores to 1 cell, that's c, do then ? 08:39:33 i feel like im asking silly questions sometimes... but i kinda feel like im getting somewhere :P 08:39:38 It "commas" in a byte. 08:39:51 ok, that's a tad counterintuitive 08:40:03 i'd think of c for cell 08:40:09 C == Character == Byte 08:40:10 Id think c, would write to a cell and , would write one byte 08:40:15 ahh 08:40:16 ;) 08:40:23 fair enough! 08:40:30 iangreen: it comes from VERY old Forth practice. 08:40:35 understandable 08:43:21 Forth uses the undecorated operators for cell-wide values because mostly you deal with cells. 08:46:17 cheers 08:47:23 --- quit: ham ("what makes a man become neutral?") 08:50:30 * Speuler_ also tends to represent data in an uniform manner, using cell when bytes could do 08:51:23 but my strings consist from char-size quantities 08:51:27 of 08:51:42 * Speuler_ feeds 08:51:58 char-size quantities? 08:52:07 I'm trying to see a reason why I should waste 3 bytes per char :) 09:00:35 --- join: I440r (~mark4@sdn-ap-031tnnashP0306.dialsprint.net) joined #forth 09:00:44 ok, i added block files :) 09:00:57 you can have up to 256 different block files open at one time :) 09:04:04 I440r: what do you think, does it seem wasteful to you to store only 1 char in a cell? 09:05:28 the larger the cell, the more wastefull :P 09:05:36 ya 09:05:56 the fix is to use c@ and c! :) 09:06:02 trying to understand c! now : "666 b c!" "b @ ." 154 09:06:08 why 154.. 09:06:13 char address c! 09:06:15 .whut am i doing wrong 09:06:31 0 to 256 only 09:06:33 oh, 666 isnt a valid char is it 09:06:34 :) 09:06:38 well 09:06:41 c! doesnt know that 09:06:44 hang on 09:06:44 *nods* 09:07:07 666 is 029a in hex 09:07:18 c! will only store the 9a part 09:07:23 word 09:07:38 0x9a is 154 09:07:49 Some of us want to store Unicode glyphs, though. 09:07:52 isforth has c@ c!, w@ w! and @ and ! 09:08:42 what's w@ and w! do? 09:08:58 "word" or 16bit sized, usually. 09:09:30 yup 09:09:30 i dint invent the idea heh 09:09:49 its an obvious choice of names tho 09:10:19 It certainly follows the common Forth practice. 09:10:43 * TreyB half-heartedly suggests 16@ and 16! 09:11:11 i.e. obviousness :) 09:11:42 no. i dont even like 2blah etc for double size 09:11:57 d@ and d! would be preferable in a 16 bit system 09:11:57 instead of 2@ 2! <-- very bad names 09:12:12 2swap should be dswap too 09:13:09 another thing, it seems that i != r@ in your do loops, is that correct? 09:13:21 i gotta write a block file editor now 09:13:23 I read in a (rather outdated) book that i is sometimes written as r@ 09:13:33 yes i and r@ are not the same 09:13:36 i noticed that doesnt seem to be the case in isforth 09:13:39 in SOME forths yes 09:13:44 ok 09:13:48 where do you store the index? 09:13:54 if not on the rstack 09:13:58 just out of curiosity 09:14:06 None of Your Business (tm) 09:14:20 :-) 09:14:27 but not in isforth. you have to examine (do) to understand why tho 09:14:27 it IS on the return stack 09:14:27 but its had some fudge factor applied to it 09:14:48 hrm, ok, more than i want to know at this point :) 09:14:51 LOOP will cause the overflow flag to be set when the loop reaches its limit 09:15:10 if you do 10 for blah blah nxt 09:15:20 you can get the for/nxt loop index by doing r@ 09:15:22 not i 09:22:14 grr, im having way too much difficulty juggling n and here in the beginning of : makestring ( n - addr ) 09:22:57 show me the code for makestring 09:23:08 im (re)writing it as we speak 09:23:20 i keep rewriting it 09:23:21 hehe 09:23:33 its good practice :) 09:23:51 yup 09:23:57 look at this now: 09:23:57 : makestring ( n - addr ) 09:23:57 dup here dup >r swap allot 09:23:57 0 do 09:23:59 looking rather 09:24:12 then gonna getkey and store in address as i loop 09:24:36 and then "r>" at the end I guess 09:24:50 thers dup>r as one word btw 09:24:52 seemed bad initially as i'd want to acoid mesing w/ return stack, but since do loop shouldnbt use it 09:24:57 k 09:25:04 that makes me feel better about it 09:25:09 that looks ok tho ? :) 09:25:25 but if you put an item on the stack outside a do loop you cant easilly grab it inside the do loop 09:25:38 ahh right. 09:25:51 i can't just do r@ in my loop 09:25:53 hmm 09:25:58 no point then 09:26:16 guess I can throw "n" on the return stack, allocate, grab n back 09:26:24 you could do 2r> r@ -rot 2>r but thats very very kludgy heh 09:26:47 whats happening inside the do loop exactly ? 09:26:54 2r> = r> r> ? -rot = ? 09:27:01 I'm passing the address to store the char in 09:27:08 : -rot rot rot ; 09:27:16 ok. 09:27:17 curraddr getkey 09:27:22 : getkey ( addr - ) 09:27:22 key dup emit dup 10 = if dup swap c! then drop leave ; 09:27:34 which may be broken :) 09:27:48 dup swap ? 09:27:52 *shrug 09:28:01 need to rewrite this 09:28:12 ( n1 --- ) dup ( n1 n1 --- ) swap ( n1 n1 --- ) 09:28:13 heh 09:28:22 haha 09:28:25 indeed :) 09:28:30 must have meant dup rot ;0 09:28:37 * iangreen goes back to tinkering 09:28:48 drup rot or swap over :) 09:29:45 or just swap :) 09:35:26 why is this never finishing? 09:35:26 : makestring ( n - addr ) 09:35:26 here swap 2dup allot 09:35:26 bounds do 10:00:42 anyone here have a source for a block file editor ? 10:00:44 :) 10:02:11 --- join: FML (~FML@pD9E4EA7F.dip.t-dialin.net) joined #forth 10:02:19 hi fml :) 10:02:26 you a forth coder by any chance ?? :) 10:02:43 newbie 10:02:50 newbies welcome :) 10:03:22 met forth couple of days ago 10:03:30 cool! 10:03:34 which forth ?? :) 10:04:08 I440r: thx for the welcome. 10:04:36 anyone who comes in here is always welcome. forth coder or NOT :) 10:04:51 were not snobs in here :) 10:04:57 except when it comes to our coding standards :) 10:07:13 was looking for suitable langs to express myself. read the description of gforth.deb. a strong guess told me immediately, yes this it. what i was looking for. was always very unhappy 'bout those major langs. 10:07:40 do you code assembler ? 10:07:52 a tiny bit 10:08:14 could grow by necessarity 10:09:10 why? ;-) 10:09:51 because understanding assembler will help you understand forth 10:09:56 even if you only get the basics 10:10:14 and i strongly feel that anyone wanting to be a GOOD coder should be an expert at assembler 10:10:35 ok=understand+agree 10:10:49 true! 10:11:10 getting the feet back on earth... 10:12:09 getting a grip 10:13:12 what os do you use ? 10:13:29 i dont know any assembler :/ 10:14:10 learn it then 10:14:12 :) 10:16:27 debian knoppix mandrake redhat suse m$win are currently permanent (no no, not in order of preference... ;-) ) 10:16:43 heh 10:16:49 debian is my primary os 10:16:58 i also have m$wincrap too 10:17:10 bsd and hurd are still missing, unfortunately 10:17:33 i have bsd installed on one machine here so i can get my forth to work there eventually 10:17:40 but thats way down the road - if ever :) 10:19:18 wincrap blue screen twice a week (NOT kidding) oh yeah ;-) :-) 10:19:48 heh 10:19:50 twice a week? with regular desktop use? that is very odd 10:20:03 y 10:20:35 because wincrap often bluescreens 3-4 times/day with any real use 10:20:48 y. 10:20:55 I wish I new 10:20:57 knew 10:21:27 nt series is stabler though 10:22:25 or in english: more stable... ;-) 10:23:33 what's wrong with this .. arg.. 10:23:33 : makestring ( n - addr ) 10:23:33 dup>r here swap allot 10:23:33 here >r bounds do key dup emit swap c! loop ; 10:23:46 vakaampi :-) 10:24:23 oops, r> 10:25:05 iangreen: what do you intend makestring to do? 10:26:45 allocate n, store string there, return addr 10:26:57 and size, or use null string ending 10:27:10 dont tell him about expect, he is learning forth :) 10:27:17 Store what string there? 10:27:29 iangreen: keep going. forget you ever heared me say "expect" hhe 10:27:33 TreyK: from key 10:27:39 I440r: done and done :) 10:27:42 Ah. 10:27:55 TreyB: im doing a bit too much in one word i know 10:28:05 does my loop and c! look right? 10:28:18 they dont seem to be :) 10:28:26 does your forth keep thins in pad/just above HERE? 10:28:29 things, even 10:28:38 it it does, you'd better not do it that way 10:28:50 um.. i wouldnt know :) 10:29:02 oh, i should use allocate maybe 10:29:10 or is that just allot 10:29:14 oh wait, you're alloting 10:29:15 nevermind. 10:29:26 yeh 10:29:32 dynamically creating this string basically 10:29:45 from user input... return the addr (and a size, I guess) 10:29:51 tho i think ill just use \0 10:31:32 also you should dup here instead of invoking it after allot because here of course changes with allot 10:31:39 iangreen: I don't think you can count on "10 here swap allot here -" to leave 10 on the top of the stack. 10:31:39 so you are building the string to the wrong addr 10:31:53 oops 10:32:07 oh LOL 10:32:08 no kidding 10:32:12 good point :) 10:32:30 stupidity just keeps creeping back in to this word :) 10:32:39 iangreen: make it shorter 10:32:54 reading enth docs, i guess the kernel src code is metacompiled from win32forth? or is it compliant AND 'metacompiles'/recompiles itself? 10:33:20 and you should do i c! 10:33:36 "here dup>r over allot 10:33:40 that'll be much better :) 10:33:52 how does this even execute without crashing? 10:33:56 XeF4_: it doesnt! 10:33:59 sorry, im learning 10:34:05 let me try some more 10:34:20 ah yes 10:34:26 i can get this damnit 10:35:01 iangreen: on which forth are you learning right now? 10:35:24 isforth 10:36:04 written in which assembler? 10:36:37 nasm, I believe.. ask I440r, it's his forth 10:37:21 running standalone? 10:37:45 nasm 10:37:47 it's linux,... all i/o is impl w/ linux kernel 10:37:48 On top of linux. 10:38:02 it treats linux as its bios heh 10:38:27 has it a relation to forthos? 10:38:39 by structure? 10:40:14 btw does anyone know of 10:41:16 ? 10:41:20 an assembler written in forth and then compiled for a standalone binary 10:41:48 ? 10:42:14 err isforths compiler kernel is coded in nasm assembler. 10:42:43 er, sort of. bigforth can be used as a standalone binary and it has an assembler 10:42:52 so if you ignore other features than the assembler, there is. 10:50:45 this one is crashing too, but it looks more correct: : makes swap 2dup allot bounds do key i c! loop ; 10:50:59 5 makes ... 10:51:32 what should it do? 10:52:27 store characters in the bytes I've allotted 10:52:39 i guess I need a cells or whatnot in there 10:53:27 its not storing to the right place... im not looping over the correct values 10:53:29 stack diagram at least? 10:53:34 as its crashing 10:53:39 ( n - addr ) 10:53:55 what are you swapping then? 10:53:56 sorry 10:54:02 n and here 10:54:06 so i have here n allot 10:54:15 : makes swap 2dup allot bounds do key i c! loop ; 10:54:29 * XeF4_ looks for HERE in that line 10:54:41 haha 10:54:48 god, im sorry 10:55:22 im making this so hard on myself 10:56:24 I need to take a break 10:56:43 hehe 10:56:59 dont give up tho dood, youll get it eventually :) 10:57:04 :) 11:02:24 grr i just found laxen and perrys screen editor in dr dobbs and its just like VI (puke) 11:02:48 the editor and the forth interactive terminal are NOT THE SAME FUCKING THING grrr 11:02:51 this pisses me off 11:03:22 they aren't 11:03:24 ? 11:04:35 if i understand correctly you ahve to do something like 11:04:53 screen# line# insert-this-text : blah lost of forth here ; 11:05:01 and it inserts that line into that block of the file 11:05:09 the theory is you can now also do 11:05:15 : blah xxx yyy zzz ; 11:05:35 its just like in vi wher eyou have "command mode" and "edit mode" 11:05:48 which is the most fucked up idea i ever saw in an editor 11:05:49 I440r, : forth line editors often have p string or u string ( u: put string on next line ) 11:06:07 i dont want a line editor. i want a SCREEN editor 11:06:17 write your own :) 11:06:24 i was hoping to get some ideas from theirs but i dont think ill like what i find 11:06:29 im going to 11:06:37 it will also be a MULTI FILE editor 11:06:41 you only say that because you're in the aristocracy who can afford paperless teletypes =) 11:06:41 I440r, often, a screen editor is just a sophistication of the line editor 11:06:54 uses the same words, but casts them into a key loop 11:07:00 my block extension that ive just finished allows for up to 256 different block files open at the same time 11:07:29 i440r: how is the block<->file mapping? 11:07:29 *yawn* 11:07:41 Speuler_: no. in a screen editor you should be able to move the cursor to anywhere in the current block and start editiing. 11:07:51 XeF4_: what do you mean ? 11:07:58 think remapping blocks through a directory slock 11:08:06 makes inserting blocks easy 11:08:11 when you open a block file you are passed back a block file handle. a number from 1 to 256 11:08:31 that number corresponds to a private structure that stores details about the block file 11:08:48 i440r: i.e. can one dictate the starting block of a file/change it while open? 11:09:05 XeF4_: the file is memory mapped 11:09:26 you specirfy the file handle and the block number and theres a word to tell you the address of that specific block 11:09:51 still should have buiffer handling, lru-strategy, number of used buffers dynamically adjustable 11:09:55 somewhere 11:10:11 no - thats not very easy to achieve 11:10:26 growing of a memory maped file is funky 11:10:55 i might add a grow-block-file for NON OPEN block files... 11:11:05 add N blocks to end of file etc 11:11:08 but 11:11:13 I440r: entirely the fault of Linux though, so that's excusable.. 11:11:17 a block file in isforth can have almost ANY size 11:11:38 you can make a block file of 10 chars wide by 10 chars deep with zyzzy blocks 11:11:57 but its up to you to remember the dimensions of a given block file 11:12:19 b/blk ? 11:12:22 XeF4_: kinda :) 11:12:37 c/l ? 11:12:41 no. you specify an x and y dimension. 64 by 16 is assumed when you open the block file 11:12:47 #lines ? 11:12:53 but you can change that 11:13:36 does that resize the block buffer size or just the editor behaviour? 11:14:57 there isnt an editor yet, but when you say "point to this block of this file" it looks in the block handle structure for that file, gets the x and y size, then calculates x * y * block# + memory map address 11:15:52 blocks are allright for data storage/retrieval 11:15:53 hrm. maybe i cant dcc send 11:15:58 but i find them somewhatclumsy for source 11:16:02 me too 11:16:16 ive made code to interpret from blocks but this is intended for database stuff 11:16:25 ill do my help files in blocks 11:16:35 might even add compression later 11:16:40 but might not 11:16:47 its just like in vi wher eyou have "command mode" and "edit mode" 11:16:47 which is the most fucked up idea i ever saw in an editor 11:16:52 finally, someone agrees with me 11:17:05 vi is totally WRONG 11:17:09 amen 11:17:11 blocks in something like colorforth with automagical formatting is ok for me. 11:17:29 but traditional forth blocks make me want to pack 2 definitions per line with no comments to avoid wasting storage space 11:17:42 exactly what i disline about them 11:18:01 they discourage a more vertical coding style and discourage comments 11:18:19 2 counts agains. either of which disqualifies them as a source format for me 11:18:20 shadow blocks are great for comments 11:18:30 no. they arent 11:18:42 the comment should be right there with the code 11:18:48 not off in space somewhere 11:18:56 it's a seldom block for which I have a kilobyte of useful comment 11:19:02 you talk implementation of shadow blocks, i talk concept of 11:19:03 s/seldom/rare/ 11:19:14 you should be able to look at both the comment and the source without need to hit some funky key press to flip screens 11:19:29 put two blocks side-at-side 11:19:33 --- join: proteusguy (~username@65.191.88.177) joined #forth 11:19:53 s/at/by/ 11:19:57 Speuler_: fine. most blocks are 64 chars wide. thats 128 chyars... most peoples terminals arent that wide 11:20:04 mine is 11:20:06 so the concept is flawed - 11:20:15 get a better screen 11:20:21 well. i gotta account for the lowest common denominator :) 11:20:32 that's why you write assembly 11:20:36 --- quit: proteusguy (Read error: 104 (Connection reset by peer)) 11:20:36 i cant make EVERYONE in the whole wide world upgrade their hardware :P 11:20:42 heh 11:21:09 you say that as if we have monitor trees in the garden 11:21:13 want everybody in the world to downgrade to intel ? 11:21:30 heh 11:21:40 oh i got a q about --> 11:21:44 * Speuler_ is in tong-in-cheek-mode 11:22:06 is everything after the --> ignored is it a recursive compile of the next block and then finish this one 11:22:21 ive made it ignore everything in the block following --> 11:22:22 should get me a cup-of-tea for peaceful-karma-mode 11:22:35 heh want a coffee instead ? 11:22:35 everything after --> is ignored 11:22:38 i got coffee 11:22:48 XeF4_: thats what i wwas hoping because thats the way i did it heh 11:22:53 i also have thru of corse 11:23:17 +thru ? 11:23:25 +thru ? eh ? 11:23:28 whussat 11:23:38 more useful, because relative block addressing 11:23:50 what is relative block addressing 11:23:52 rather than absolute with thru 11:24:04 1 3 +thru : load next three blocks 11:24:10 aha 11:24:16 if that appears on screen 100, 11:24:18 that woudl be easy 11:24:20 loads 101,102,103 11:24:32 can move blocks to another begin 11:24:43 addressing remains intact 11:24:43 : +thru blk + swap blk + swap thru ; 11:24:55 blk @ 11:24:58 no 11:25:03 not in isforth hehe 11:25:06 ah 11:25:08 0 var blk :P 11:26:34 blk tuck + >r + r> 11:27:17 13 instead of 16 chars, spaces not count 11:27:21 :) 11:27:30 yea. i was sure it could be improved upon :P 11:27:38 don't come up with d+ ... 11:27:52 but, overflow unlikely 11:27:55 should du 11:27:55 do 11:28:02 blk dup d+ 11:28:04 erm thats 24 bytes of code for yours... and 28 for mine :P 11:28:20 thers another advanage 11:28:42 your might be a notch quicker 11:28:43 ya. that would work 11:28:53 no. yours probably is 11:28:58 >r is faster than swap 11:29:02 i believve 11:29:21 my swap breaks some rules hhe 11:29:27 xchg ebx, [esi] 11:29:27 swap: xchg tos,[sp] 11:29:44 (tos assumed register-cached) 11:29:56 yes. isforth is. top of stack is ebx 11:30:03 so, swap is quicker 11:30:15 hmm i wonder if rswap would be useful :) 11:30:24 exchange top of pstack with top of rstack :) 11:30:33 xchg ebx,[ebp] 11:30:43 rivals swap 11:30:54 ? 11:31:05 rxchg ? 11:31:08 njo penalty for >r r> 11:31:26 ahem, a bit 11:31:29 cache reload 11:31:45 >r affects 3 registers 11:31:51 swap just 1 11:32:00 2 registers in isforth i think 11:32:11 unless your counting ip :) 11:32:12 heh 11:32:12 generally, in forth with cached tos 11:32:31 sp+ , rp- , tos 11:32:31 sub ebp, byte 4 11:32:37 mov [ebp], ebx 11:33:04 swap: only tos 11:33:39 :) 11:33:50 Speuler: but xchging a register with mem often involves a bus lock 11:34:22 true, indirect memory adds another penalty 11:34:31 actually tho i could care less about agi, cache hits etc 11:35:12 count of affected registers is not the final measurement, just an indication of complexity of operation 11:35:51 more like an indication of how well your VM maps to the hardware 11:36:12 i'd say, if you reduce byte count and register/mem use, you're not far off looking for the optimal impementation 11:37:08 but rules of speed optimization for different cpu are a jungle 11:37:46 i'm often happy with "good enough" im terms of cycle count 11:39:17 finally got it working... factoring helps 11:39:44 ive put my block code in ftp://158.253.209.52/ 11:39:50 * Speuler_ 's karma rises 11:39:54 if my ftp is still working you can looksee 11:39:57 no some incense :) 11:40:06 inscence 11:41:09 connection refused 11:41:21 foooo 11:41:27 anyone else have that problem ? 11:41:33 don't worry 11:44:59 but why is my fucking ftp broken :( 11:45:07 thats fucking annoying me 11:45:19 its giving ME connection refused. but the ftp is running 11:45:41 and my firewall rules are currently allow everything from everywhere (almost) 11:46:55 err. no. my ftp ISNT started 11:46:58 /etc/init.d/proftpd start 11:47:09 proftpd is started from inetd 11:47:18 so it should start whenever anyone tries to access 11:47:20 right ? 11:48:25 try again :) 11:49:03 some upgrade commented out the ftp line in /etc/inetd.conf 11:49:04 i need a forth with a debugger or something 11:49:05 grrrr 11:49:17 fucking upgrades should leave my fucking configureations alone 11:49:18 grrr 11:49:24 isforth will have a debugger eventuallyt 11:49:28 its on the todo list 11:49:35 fairly high up on the list too 11:49:48 bongo - can you ftp to me now ? 11:49:55 moment 11:50:11 clockwise - anti-clockwise :) 11:50:24 just transferred a file to a win box, which has bluescreened. browser needs to timeout ... 11:50:24 erm clockwise = .... 11:50:25 even 11:50:31 lol 11:50:37 thatll teach ya :P 11:50:57 i need a smb transfer proxy 11:52:19 :) 11:52:53 can access it now 11:53:21 is it ok if i copy the isforth dir ? 11:54:22 ^G ^G ^G 11:54:41 sure lol 11:55:12 is that 1.09b in there ? 11:55:14 i think so 11:55:21 1.09b 11:55:27 i think ill release 1.10 b soon. even if ive not finished the resolver 11:55:38 ill release my decompiler, block files, sockets code 11:55:51 nice 11:56:01 what license ? 11:56:03 ive also tidied up the slource tree and STARTED compiling help screens for the kernel 11:56:08 what lisence on what ? 11:56:14 the sockets stuff ? 11:56:21 ill just release it as part of isforth 11:56:32 no point in keeping it top secret or restricted 11:56:35 i wasn't aware you contemplated different license for different parts 11:56:54 i was going to release the sockets code free for non commercial use :P 11:56:58 but i changed my mind 11:57:14 its not like someone couldnt write their own code in a snap 11:57:45 guess some people could but are laziness-inhibited 11:57:56 im becoming so :) 11:58:01 with certain things 11:58:07 like the resolver and the assembler :P 11:58:16 suffering from lazybition 11:58:23 i got them coded on the tip of my tongue but thats as far as they ahve gotten heh 11:58:35 actually, ive made a start on both 11:58:40 the resolver is half done 11:58:42 terrible transfer speed 11:58:46 from me ? 11:58:56 thats a given. ive got the worlds shitties dial up 11:59:01 somewhere on the way there must be a bottleneck 11:59:08 are you realy grabbing that whole directory ? hhe 11:59:20 the bottleneck is prlly ME :P 11:59:21 t'is 93 b/s right now 11:59:31 oh. im not that bad heh 11:59:34 getting better ... 11:59:40 did you look at block.f and bload.f ? 11:59:48 still transferring 11:59:50 bload.f is "block file interpret" words 12:00:12 now the files shhot in with a rate of about 1 per 2 secs 12:00:13 time.f 12:00:19 timer.f 12:00:22 well im not downloading antyhing that im aware of so im not the bottlenec 12:00:25 well, 1 per 5 sec 12:00:35 the block.f and bload.f arent in the isforth directory 12:00:38 they are in the ftp root 12:00:43 ah 12:00:48 good to know :) 12:01:03 kernel.com 12:01:06 2.46 kb/sec 12:01:16 that version of isforth might have a minor bug fix (it might realy be a 1.10b-pre-release 12:01:35 the bug fix was to do with >name >body etc 12:01:48 there is another bug ive found in isforht though 12:01:55 press control 7 and she segfauls 12:01:59 ANOTHER :? 12:02:16 there are actually only a few bugs in isforth that i know of 12:02:28 im not in any great hurry to fix the "tab" bug tho 12:02:29 transfer finished 12:02:51 but there are a few omissions like an aborted fload should state the offending line number... 12:02:59 ive sort of half fixed that 12:03:02 but its kludgy 12:03:19 yes, and a fix, opening the editor on that line 12:03:34 = a word by the name of fix ... 12:03:41 isforth doesnt read a file one line at a time, it treats the entier file as its tib 12:03:48 and #tib is equal to the file size 12:03:53 so its all just ONE line :) 12:03:53 CR is still a CR 12:04:20 i had to invent a parse-eol that would parse up to the given char OR an eol 12:04:27 or however a line visal line break is called 12:04:47 i added an "increment line number" inside parse-eol if it finds a $0a char 12:04:50 * Speuler_ considers returning to typing lessons 12:05:25 the file "resume.doc" i leave untouched 12:05:33 probably doesn't belong to isforth 12:07:22 heh you can grab that and pass it to anyone you might think would hire me :P 12:07:27 heh 12:07:37 my eyes are more accustomized to "addr inc" 12:07:57 ? 12:08:08 incr> blk 12:08:10 oh 12:08:11 right 12:08:18 addr incr exists 12:08:27 but incr> is a ' >body incr 12:08:55 incr> var and incr> variable would both work though 12:09:04 that's probably i never got real good friends with "to" 12:09:19 "TO" is a fucked up bullshit badly named word 12:09:23 its !> its STORE to 12:09:28 well 12:09:37 different name for same operation 12:09:37 not "to" <-- ghey limp wristed ans bullshit 12:10:11 "var, i want you to return your data portion unless flagged not to do so" 12:10:13 "valye" <-- more ghey limp wristed bullshit naming here 12:10:19 hmpfff 12:10:27 variable foo 12:10:31 foo @ incr 12:10:32 or 12:10:34 0 var foo 12:10:49 "plus, i want you to add unless instructed to subtract" 12:10:50 foo incr 12:11:03 i dont understand what you mean 12:11:20 you have variabler and constant in isfortth but you also have the faster, less verbose var and const 12:11:43 a const is like a var but is state smart. it compiles a literal. consts ARE constants 12:11:51 0 constant foo isnt always a constant 12:12:02 0 const foo is ALWAYS a constant 12:12:09 because it compiles a literal 12:12:56 2 cells rather than 1 12:13:07 * TreyB eats lunch, reads the channel history. 12:13:17 correct. but faster and less subject to abuse 12:13:31 lunch! 12:13:33 good thunking! 12:13:34 hhe 12:14:03 'joy phood 12:15:41 :) 12:16:07 so can you see anything else missing from block.f/bload.f ? 12:16:18 or a better way of doing anything in there ? 12:16:59 hm 12:17:03 : fwrite 12:17:10 fwrite is in file.f 12:17:22 >r 1 sp@ cell+ r> write 12:17:24 which may or may not be in your version of 1.09b - its a new addition 12:17:38 something like that 12:17:39 saves you a swap 12:17:50 wait 12:18:18 my fwrite is ' alias fwrite 12:18:49 rather than sp@ 1 swap, 1 sp@ cell+ 12:18:57 swap is more costly than cell+ 12:19:09 cell+ doesnt exist.... its 4+ :P 12:19:16 make it 2+ 12:19:21 or 8+ 12:19:39 but, to avoid conditional compilation, i do cell+ 12:19:53 cell+ is an attempt to make forth portable across 16/32/234786298462984549 bit machines 12:20:04 i use 4+ 12:20:24 anyone who doesnt know the size of a cell on the machine they are coding for shouldnt be coding 12:20:24 between as many as you want. i'd settle for 16/32, maybe 64 to start with 12:20:47 does it help to KNOW if you need to edit sources anyway ? 12:20:49 anyone trying to write code that will fit on any cell size machine is being DUMB 12:21:14 anyone needing to modify code which wouldn't have to is dumb too 12:21:17 i deliberatly avoid words that encourage portability 12:21:22 its a complete and utter falacy anyway 12:21:49 bongo i disagree :) 12:22:00 you're entitled to do so 12:22:05 anyone blindly compiling and executed sources they havent even bothered to look at are silly :P 12:22:16 is silly 12:22:17 hhe 12:22:40 so one looks 12:22:53 it sees "i shit, this must be modified before this runs" 12:23:35 "what does this 4+ mean, does it refer to cell size, or does it have to be 4+, regardless of cell sizer 12:23:35 well. eithe you have 2984598245982465 #defines in the sources to accomodate the 2874782587325943269 different variations of forth 12:23:37 size 12:23:46 or you have to edit the sources 12:24:01 yes, that would be the consequence without cell 12:24:14 nice you agree :) 12:24:27 i absolutely FLAT refust to add conditional compilation of ANY sort to isforth 12:24:55 and cell... words get the same treatment here 12:25:02 should i pass source code, i'll replace cell, and verify the code on a 16-bit machine 12:25:27 their only reason for existing is to try and obfuscate the code by trying to make them "portable" 12:25:32 something that will NEVER happen 12:25:40 actually 12:25:52 if i write code for a 16 bit machine its for qa SIXTEEN bit macvhine 12:25:59 i do "2" or "4" when i refer to the number 2 or 4, and "cell" if i refer to cell size. 12:26:02 porting that to a 32 bit machine is a mistake 12:26:11 it should be RE-WRITTEN. not "ported" 12:26:26 ... where it could compile unmodifed 12:26:28 the context should be obvoius from the comments 12:26:51 the source is the comment 12:26:54 no. thers no such thing as portability, i refuse to acknowledge a falsehood 12:27:14 i refuse to entertain the notion of portability 12:27:14 if you say "4" where you mean "cell", your commenting is bad :) 12:27:43 <--- code goes over there : comments go over there --> 12:27:53 the stuff on the left is NOT a substition for th stuff on the right 12:27:57 EVER 12:28:17 but we have gone over this before i believe :) 12:28:24 : foo code selfexplaining execute ; 12:28:44 still not a replacement for the comments 12:28:57 minmizes redundancy 12:29:02 Ugh. It has started to rain. 12:29:15 redundant comments ARENT 12:29:19 nuff sed :) 12:29:43 I440r: English, unlike forth, requires punctuation. 12:30:03 : foo comment demonstrate ; \ < this is a comment demonstration \ < this is the comment of a demonstration of a comment 12:30:06 treyb yes but one doesnt have to explain what one says in englis 12:30:14 one should ALWAYS explain the code however 12:30:47 * I440r goes to add +thru :P 12:31:17 * Speuler_ notices i440 is not really in a fighting mood today 12:31:25 :) 12:31:50 getting older :) 12:32:07 a while ago, you'd be through the roof by now 12:32:25 bonog : +thru ( n1 --- ) \ assume based at current block. load following n1 blocks 12:32:37 would that be a bad modification to the above ? 12:32:49 ( n1 n2 --- ) <-- is the better way ? 12:32:55 consider a block, containing 12:33:03 1 3 +thru 12:33:07 5 8 +thru 12:33:15 right 12:33:17 ok 12:33:21 im convinced :) 12:34:25 I440r: as a rule, implicit parameters limit code reuse. 12:34:29 \ ------------------------------------------------------------------------ 12:34:29 \ load n1 thru n2 blocks following current block 12:34:29 : +thru ( n1 n2 --- ) 12:34:29 blk dup d+ thru ; 12:35:32 i dont think we need to worry about overflow on that d+, anyone with THAT many blocks deserves to be fubared :) 12:35:40 works for 2^31-1 blocks 12:35:47 exactly 12:36:36 i should add an option to only map ONE specified block of a specified file 12:36:40 i think mmap can do that 12:36:49 2 terabytes 12:36:58 assuming 1 k blocks 12:37:06 larger than the max file size in linux i believe 12:37:35 that's a built-in year-2020 problem 12:37:49 or 2012 12:38:10 ahem 12:38:11 nope 12:38:29 we got at least 64 or 128 bits by then 12:38:47 oh no. we've hardcoded 4+ :( 12:39:38 isforth is x86 specific 12:39:54 the hard coded cell size is a non issue 12:40:00 stop flogging a dead horse :P 12:40:49 * Speuler_ pictures i440r riding a dead horse :) 12:42:49 haha 12:44:49 I440r: what do do? 12:45:06 I440r, : this use of is i have bad experience with 12:45:07 till you headers> or behead 12:45:29 the headerless words Do have a header realy but when you behead they all disappear 12:45:37 (that is, temporarlily assigning a different xt, then resetting it to a hardcoded xt) 12:45:40 so. that makes headerless words private to the given module 12:46:00 better is, to save previous xt, temporarily setting the new one, then restoring the former value 12:46:19 bongo IS is just an alias for !> 12:46:30 ' myword is some-defered-word 12:46:32 that's in load 12:46:47 defer foo 12:46:51 --- join: MrReach (~mrreach@209.181.43.190) joined #forth 12:46:52 restoring said defered word to a previous value is YOUR responsability, not the compilers 12:46:57 mrreach :) 12:46:59 ltns :) 12:47:02 : bar ['] newfoo is foo 12:47:02 hihi 12:47:04 blabal 12:47:09 : bar ['] oldfoo is foo 12:47:10 ; 12:47:28 but meanwhile i did "' myfoo is foo" 12:47:44 ive also added a decompiler mrreach and ive sort of made a start with help files for words in the kernel 12:47:47 so bar doesn't restore "foo" to "myfoo" but to "oldfoo" 12:47:52 there needs to be a word to retrieve the current value of a deferred word 12:47:56 hi MrReach 12:48:03 soon as i ahve a block editor ill move all word help to block files:) 12:48:08 exactly 12:48:13 i dont have ot 12:48:15 one 12:48:24 ' defered-word >body @ <-- that words 12:48:31 '? 12:48:38 or ?' ? 12:48:39 was struggling in gforth, because it resets "header" to a hardcoded value 12:48:46 but i had my own :( 12:48:47 please put word help into .HTML files, if at all possible 12:48:58 MUCH easier to read/transport 12:49:01 mrreach isforth doesnt have an html viewer 12:49:20 yet 12:49:33 yes, I realize that ... an html browser in forth is WAY over the top 12:49:38 right now all the help files are in sub dirs named according to the file 12:49:44 and each word has its own help file 12:49:46 pure text 12:50:20 Speuler_: how about DEFERRED@ ??? 12:50:33 the advantage to the way they are now is that if a word moves from one file to another i just copy the help file from one dir to another :) 12:50:37 or @DEFERRED 12:50:42 i use WAS 12:50:45 ?defered ? 12:50:48 HAHA! 12:50:54 better name than mine! 12:50:57 defer foo 12:51:00 maybe not 12:51:12 someone mite confuse ?defered with "is this word a defered word" 12:51:21 the '?' always denotes a flag value to me 12:51:26 was foo >r ['] bar is foo ... r> is foo 12:51:38 * MrReach nods. 12:52:08 @is :) 12:52:11 I440r: your help files are not auto-generated from the source files??? 12:52:12 is@ 12:52:16 no 12:52:28 wouldn't that be a good thing? 12:52:29 thats another problem 12:52:35 yes and no 12:52:52 if all the info for the help files was in the sourde files we wouldnt need help files 12:53:01 --- join: CrowKilr (CrowKilr@Ottawa-HSE-ppp3652880.sympatico.ca) joined #forth 12:53:06 heh 12:53:10 :) 12:53:21 re ;p 12:53:26 i was thinking of a partialy auto generated tho 12:53:34 except that when you're wanting to know how to use a word, you really don't want to wade through the source 12:53:44 correct 12:54:03 help blah will display the help for the word blah 12:54:07 at the same time, when you're editing the source, you want the doc source very near to encourage keeping the docs in sync 12:54:24 reason for thinking of using block files is because it would be easy to just LIST the given block 12:54:35 no need to write a special help file browser 12:55:01 do your headers contain a reference to the file and line where each word was sourced? 12:55:09 no. not yet 12:55:16 ive got no view field 12:55:18 is that an option for you? 12:55:21 thats a futer todo 12:55:25 yes. its an option 12:55:28 ok 12:55:30 its in the mental todo list heh 12:55:38 but 12:55:40 the problem is 12:55:48 fload would have to track all definitions 12:55:50 and 12:56:04 I know you can be particular about optional/non-essential data storage 12:56:04 : blah ..... ; <-- would have to know not to try attachh a view field 12:56:11 no - not in headers 12:56:16 the headers are transient anyway 12:56:27 can also generate an xref file, rather than adding a link field 12:56:28 im only reluctant wth that when it comes to code space 12:56:37 * MrReach nods. 12:56:45 prefer link field but there are problems to resolve 12:56:45 I440r: does isforth separate code and data space? 12:56:57 it will make the copile slower for a start 12:57:07 TreyB: no. sperate code and head space tho 12:57:20 there would need to be code in both LOAD and HEAD to accomplish that 12:57:36 head 12:57:37 I440r: better, but not optimal. 12:57:38 erm 12:57:51 load needs to store the filename somewhere 12:57:55 head" would need to know we are floading, knnow the current line of fload etc 12:58:05 and if NOT floading it would have to know to compile a null view 12:58:15 * TreyB bails to go grocery shopping. 12:58:20 head needs to store a pointer to the filename, and store the current line within the file 12:58:21 theres that too 12:58:44 I440r, in list, consider doing 2dup -trailing type 12:58:55 rather than 2dup type 12:59:01 i dont have -trailing heh 12:59:09 easy to make from scan 12:59:10 what is 'list' ??? 12:59:19 it lists a block of a block file 12:59:23 dns me and look in the ftp 12:59:27 oh! duh! 12:59:27 n list prnt a screen 12:59:37 block.f and bload.f are in the root of the ftp 12:59:40 that's even ANS 12:59:49 lol its pre-ans :P 12:59:51 did anyone here played with Hactar? 12:59:57 i think its f79 13:00:05 CrowKilr: can't say as I have 13:00:05 hactar ? 13:00:31 great web site 13:00:33 http://www.anywherebb.com/ 13:00:40 bongo -trailing doesnt need to use scan 13:00:41 lot of interesting stuff 13:01:06 after parsing the string is at hhere, just decrement the string lenght for each trailing blank :) 13:01:19 : -trailing ( a1 --- ) 13:02:04 I440r, : there's no "hex", "decimal" or "... base !" in hello.f, but it says "33" in hello. 13:02:52 because i never modify base in an externsion 13:02:59 so its safe 13:02:59 oh, good point, does fload save and restore the base? 13:03:03 no 13:03:09 should it ? 13:03:18 not sure, it's an option 13:03:39 * Speuler_ thinks the source files should save/restore 13:03:47 I've screwed the pooch before when a file I loaded changed the base without changing it back 13:04:03 i agree with bongo here, its not the compilers place to molly coddle the coder 13:04:05 MrReach, : but you found the offending source file this way 13:04:17 yeah, after about an hour 13:04:26 it pissed me off enough that I remember it 13:04:31 MrReach, : otherwise it still would be broken 13:04:32 heh 13:04:48 the realy simple bugs are the hardest to find 13:04:57 luckily 13:05:24 the sad part is that it probably a file that I wrote myself @:^< 13:05:42 don't remember, though 13:05:47 t'is much nicer to say "i must have been blind to overlook this" than "that was a damned hard bug to get rid off" 13:05:57 i copied my decompiler source to my ftp too 13:06:42 mrreach most people use hex, decimal, octall or binary 13:06:44 how many words are CODE now? 13:06:55 well, of course 13:06:58 if youleave isforth in decimal you can input in any of the other bases 13:07:02 $xx hex 13:07:09 how often would you need to code a trinary number??? 13:07:10 \ooo octal 13:07:15 %nnn decimal 13:07:36 'x' <-- character as a number 13:07:53 in my forth, I used the C convention so that I could cut/paste constants from other languages 13:07:53 no need for the overly verbose [char] x or ascii x 13:07:56 just do 'x' 13:08:16 why the trailing quote??? 13:08:17 i dont like 0x00 or 00h 13:08:27 because it looks fucked up without it 13:08:36 ." would you leave the closing quote off this ? 13:08:42 unbalanced 13:08:50 'x <--- looks like shit to me 13:08:51 ^C^ . ( 3 ) 13:08:57 :) 13:09:22 oh! thers another one i could add 13:09:35 >os-command 13:09:37 I440r: in fact, it's probably that issue exactly that caused ANS to use the verbose ASCII 13:09:41 ^x ^c <-- control chars as a number! 13:09:42 ooops! 13:09:47 I440r: in fact, it's probably that issue exactly that caused ANS to use the verbose CHAR 13:09:56 [char] 13:09:58 "string" 13:09:59 ugh 13:10:21 that, and they try not to keep expanding the capabilities of NUMBER 13:10:50 ^CHAR C 13:10:51 heh 13:10:53 lol 13:11:08 ^c <-- much nicer 13:11:16 ^'c' ? 13:11:18 heh 13:11:19 ctrl C is often used, but ^C is nice too 13:11:24 i also allow negative numbers 13:11:27 -$xx 13:11:32 -\ooo 13:11:32 nope! 13:11:36 number will burpo 13:11:37 -'x' 13:11:39 number will burp 13:11:39 decimal 3 CONSTANT ^c 13:12:11 exscept ^c in linux doesnt pass back a single character 13:12:28 since when??? 13:12:31 ^c in forth can put a 3 on stack. 13:12:40 that's all you want from it 13:12:40 oh, since it causes an exception ... duh 13:12:48 --- join: sma (stephenma@207.6.229.22) joined #forth 13:12:54 hi sma! 13:13:04 you a forth junkie ? 13:13:15 I440r: hi, i was looking for you yesterday 13:13:25 heh i wasnt here :) 13:13:29 sorry :) 13:13:35 whussup :) 13:13:39 I440r: what methods and classes of exception is isForth handling now? 13:13:40 im here now !!! 13:13:55 I440r: no problem, i was just wondering about isforth: do you want any help with it? 13:13:59 oh. i havent added signal handlers yet 13:14:02 i sure do! 13:14:18 make it so I can arrow up 13:14:20 thers LOADS on my todo list, most of it is a mental todo list tho 13:14:26 well, i'm ready to help with the manual 13:14:27 I440r, 0< if drop 0 then same as 0>= and 13:14:35 in cursor-up 13:14:37 I think it's really cool that Win32Forth can catch an invalid memory exception and dump the registers 13:14:49 ian the cursor keys and function keys return a whole string of chars. adding a command history is on the todo list 13:15:19 I440r: so what's on your TODO? 13:15:21 on Linux, that would cause a core dump 13:15:37 mrreach a segfault doesnt need to kill a process in linux either, i think im going to default segv's handler to an abort" sig segv" heh 13:15:41 (if uncaught, that is) 13:15:53 sma assembler. meta compiler. 13:15:53 hhe 13:16:16 thos are high up on the todo :) 13:16:22 I440r: i think a manual would be first prio, and i'm volunteering. what do you say? 13:16:22 yeah, but see if you can unwind the return stack, or at least indicate whhich word the invalid access occured in 13:16:24 command history is high too 13:16:30 i just added block files and need a block file editor 13:16:45 a manual is very very high up on the todo 13:17:05 online help for every single word in the kernel AND the extensions is one of my prime directives 13:17:19 I440r: why don't you specify a standard for docs in source files??? then write the extractor later 13:17:23 great 13:17:37 concur with MrReach 13:18:01 might be difficult in the nasm source files, though 13:18:13 MrReach: what do you mean? 13:18:56 I440r, : clw $2000 or should save a little bit electricity compared to $2000 + 13:19:02 I mean it's faily easy to extend the semantics of the fourth system, but more difficult to parse nasm source with forth 13:19:25 mrreach a metacompiler would help here eh ? heh 13:19:33 MrReach: ah. i was just envisioning a grep through the sources 13:19:45 the kernel is in fairly straightforward x86 assemblerr 13:19:53 MrReach: the grep would just look for special comments 13:20:06 yes, that would work well 13:20:18 sma explain this to me, i dont understant what you mean 13:20:31 hang on 13:20:39 sma, those "special comments" could be forth words too which output and format the doc 13:20:52 Name , 13:20:53 Type Code 13:20:53 Stack effect ( n1 --- ) 13:20:53 Pronounced Comma 13:20:53 Flags None 13:20:54 Allocate four bytes of dictionary space (add four to dp) and compile 13:20:56 the 32 bit value n1 into the allocated memory. 13:20:58 See also: c, w, allot hallot here hhere dp hp 13:21:12 well, we could mark up the nasm sources with ;*; lines which could go straight into the docs 13:21:19 Speuler_: hmmm! 13:21:22 thats the format ive been working with for word help files. but word help files is only PART of the overall documentation 13:21:22 : ### 0 word count ( format ) type cr ; immediate 13:21:27 --- quit: FML ("bluescreen at the gates, emergency shutdown") 13:21:38 sma im reluctant to inject visual clutter into sources 13:21:54 sma, iuse something like that as first lines of files 13:21:58 im very anal aobut keeping my sources neat and tidy he 13:21:59 heh 13:22:01 I440r: yes, that kind of comment is exactly what i had in mind 13:22:36 I440r: visual clutter may be inevitable. experience shows that the only way to keep docs in sync is to put them in the sources 13:22:37 the docs for a word can follow its definition, too ... needn't be within the word itself 13:22:47 sma i should prolly zip up what i have here and email it to you, we should also brainstorm the help, might take a few passes 13:22:57 sma: but this could do more. it could - through last @ - link the comment to the word most recently compiled 13:23:00 I440r: sure 13:23:30 sma - that just makes the job easier. but i realy relay dont want help injected into source, 13:23:34 Speuler_: hmmm we might want to keep this simple tho 13:23:45 not doing so adds alot of overhead to maintining the help tho 13:23:57 sma: depends on whether to document files or words 13:24:07 I440r: ease might be secondary; accuracy is first prio 13:24:48 I440r, : i abandoned "conventional" words implementations 13:24:59 I440r, : like yours in words.f 13:25:05 instead i do 13:25:35 : .1header ( addr1 -- addr2 | 0 ) .... ( print one header ) ; 13:26:05 : words latest ['] .1header headers ; 13:26:13 headers can be reused 13:26:19 --- join: icefox (~sheath@63.219.179.216) joined #forth 13:26:23 for example, by find 13:26:52 how about a word, FOREACH , that walks down a memory chain and applies an XT to each instance? 13:26:56 i also use it for .name with seperate headers 13:27:04 where there is no link from body to headers 13:27:57 : words ['] .1header latest foreach ; 13:28:15 or even ... 13:28:41 : words 0 to wordcount ['] .1header latest foreach cr wordcount . ." words" ; 13:29:17 right, that's an application for it too 13:30:05 FOREACH could follow all sorts of chains 13:30:45 brb 13:30:49 --- nick: MrReach -> MrGone 13:31:06 mistake 13:31:24 my "headers" does an implicit "latest" 13:31:29 to start with 13:31:39 that's why it is called "headers" :) 13:33:22 in "dump-asc" i'd consider to factor out .printable or save-emit or how you'd call it 13:33:54 (utils.f) 13:34:46 and i'd do " 10 umin" rather than "10 min" in .s 13:35:05 : foo drop .s ; 13:37:14 i'm not sure whether i like your case: ;case implementation very much 13:38:19 i didn't go into figuring out how they work but they don't look right 13:39:25 --- nick: MrGone -> MrReach 13:39:57 forget can be made much safer to use if used with a word forget: 13:40:11 how would that work? 13:40:26 code following forget: is compiled. upon forget, it will be executed 13:40:28 actually, I was just thinking about MARKER and FORGET 13:40:51 allows restoring states whenever a word changes them 13:41:03 and how programmers invariably forget to put the proper cleanup code in the forget-chain 13:41:18 forget: [ vector @ ] literal vector ! ; 13:41:37 : plonk xxx vector ! .... ; 13:41:51 or ... ' plonk vector ! 13:42:04 actually, forget: should follow plonk 13:42:17 : plonk .... ; 13:42:22 forget: [ vector @ ] literal vector ! ; 13:42:47 ' plonk vector ! 13:43:00 all forget: words are linked 13:43:23 upon forget, the link is followed backwards, and all forgets: above new here are executed 13:43:47 that seems rather awkward to me 13:43:56 not easily grokked 13:43:59 it worked pretty well 13:44:51 whatever code follows forget:, it will be executed when/before forgotten 13:44:57 was it easy for people to remember? did they use it regulary? 13:45:02 regularly? 13:45:02 there can be many forgets: 13:45:32 Speuler_: I take it that you prefer FORGET to MARKER ??? 13:45:36 i don't know about the others. i used it consequently in the source, so i could forget anytime anywhat 13:45:55 nowadays i tend to not use marker and forget at all 13:46:07 * MrReach nods 13:46:08 if i need one, i'd prefer forget 13:47:11 and, marker can't restore all states 13:47:13 that whole situation is rather nasty 13:47:15 oh, it could 13:47:34 the forth dictionary is not the most versatile method of memory allocation 13:47:40 but it would be painstaking work to so so 13:48:14 it is up to the implementator to decide the organization of the dictionary 13:48:21 well, most systems have a dynamic chain of things to do with each invocation of MARKER or FORGET 13:48:33 if you want to stick it in an SQL base, go ahead :) 13:48:44 * MrReach laughs. 13:48:54 but, 13:49:03 compiled forth code is not relocatable 13:49:09 that's the problem 13:49:22 well, generally not 13:49:32 what does it help you if you can mess with headers as you like 13:49:33 token threaded code is relocatable 13:49:39 if you can't do so with the code ?? 13:49:52 true 13:49:58 i was thinking TC 13:50:22 execution token = word address 13:50:28 right 13:51:01 so many languages are token threaded now that it's more than proved itself adequat on fast machines 13:51:13 TCL and JAVA both come to mind 13:51:20 forth needs to go that way with not later than 128 bit machines 13:51:32 heh, that's funny 13:51:50 I've never seen a forth system with more than 65535 words 13:51:54 i gotta go meet my father 13:52:00 i might be back later tho 13:52:03 cu :) 13:52:06 oki 13:52:07 a 16 bit token should be more than adequate 13:52:14 be well, I440r 13:52:24 :) 13:52:26 I won't be here 13:52:26 you too 13:52:32 and stop being so damned scarse in here 13:52:35 expecting guests in a few minutes 13:52:37 drop by every now and then :) 13:52:39 --- quit: I440r ("abort" reality strikes again!"") 13:52:52 --- quit: sma ("[x]chat") 13:52:59 may be ok for forth, but a 16 bit forth won't take advantage of the operand width of a 128bit machine 13:53:13 most likely, needs register fiddling 13:53:14 nono, didn't mean stack size 13:53:22 addr = data = stack 13:53:27 I was only talking width of execution token 13:53:29 uniform representation 13:53:39 ah 13:54:12 --- join: sma (stephenma@207.6.229.22) joined #forth 13:54:12 hardly need even 32 its to uniquely represent each forth word 13:54:43 and token threaded can be _nearly_ as fast as itc 13:55:04 true 13:55:07 especially since mup manufacturers having been optimising for Java machines 13:55:22 i found "create does>" more difficult to implement in token-threaded system 13:55:34 but that may be a small price to pay 13:55:52 * MrReach nods, would need to store an absolute memory reference? 13:56:20 i couldn't port my (tricky) ITC implementation 13:56:58 when one designs such that everything is relocatable, it eliminates the need for the dictionary 13:56:59 and resolved to using "" like in ol' f79/fig 13:57:27 which means it "looks" like forth, but really isn't 13:57:31 MrReach, which virtual mem, move word to the address represented by name ? 13:57:58 beg parden? 13:58:13 header has no pointer to code, but code resides at address, represented by header 13:58:17 by name of word 13:58:27 each word gets its own allocated memory area 13:58:39 at virtual address, i mean to say 13:58:39 oh, ok, several tables ... 13:58:55 that's what we got the mmu of the cpu for ... 13:58:58 one table holds address of actual code, for dispatch 13:59:25 another table holds the address of the matching header 13:59:33 no need 13:59:50 doesn't happen often to do code > header 13:59:58 not sure how to handle difference between token threaded words and code words 14:00:17 yes, but lookups happen quite frequently 14:00:18 can search voc for match of pointer to body 14:00:28 speed is no issue here 14:00:47 when do you want to return the name of a word, known by its code address ? 14:00:55 ok, so table for dispatch, and chain for lookup? 14:01:01 when you are debugging, for examle 14:01:16 just pointer from header to code should be enough 14:01:21 advantage: 14:01:33 you can move around headers freely 14:01:41 no need to patch up pointers to headers 14:01:47 but can you move code around? 14:01:54 not yet :) 14:02:00 as far, only headers 14:02:08 are you talking about your particular system? 14:02:36 I was talking about hypothetical system that worked more like a byte-coded compiler 14:02:37 i try to talk "in general" but it accidently applies for my system, yes 14:03:18 in general, i like to eliminate at least one part of the header <> body references 14:03:27 oh, ok 14:04:15 by not using CREATE ... DOES ... one can greatly generalize the decompiler 14:04:24 and simplify, probably 14:04:41 but then one loses some versatility 14:05:42 time for me to go 14:05:47 be well 14:05:51 still got your jornada ? 14:05:57 yes, I do 14:06:00 why do you ask? 14:06:02 got me an ipaq 14:06:16 similar type of machine 14:06:21 I don't use it as much as I'd like, not programmable 14:06:28 * MrReach nods. 14:06:40 i found lisp and forth for it 14:06:44 python 14:06:48 some more 14:07:00 I've found some languages, but don't work as advertised 14:07:11 I gotta go, take care 14:07:17 later 14:07:18 --- quit: MrReach () 14:17:41 --- part: icefox left #forth 14:56:57 --- join: Robert (~Robert@h21n2fls31o965.telia.com) joined #forth 14:57:12 hi 14:57:22 Hi there. 14:57:32 hi the_rob 14:57:53 Ooh, minj Speuler is ook terug. 14:58:00 s/nj/jn/ 14:58:14 :) 15:01:09 Merry christmas. 15:01:26 * Robert dances around the donnenboom. 15:03:56 i've placed recent 1.09b isforth on http://forthfreak.net/interpreters 15:06:50 * Robert checks forthfreaks. 15:07:28 Ah, cool. 15:08:04 thought it might load quicker there than from i440rs home machine 15:08:58 Is isforth.clss.net his own one? 15:09:05 Is does that not contain the latest one? 15:09:24 mark said 1.09b is what should be 1.10 which doesn't exist yet 15:10:06 Ah, okay. 15:10:16 last mods 14:33 today 15:10:28 blocks 15:18:30 Ah, nice. 15:18:30 * CrowKilr is thinking about the editor part of a forth system implemented in javascript 15:18:33 Any DNS code? 15:18:45 Forth in JavaScript... Heh. 15:18:59 * Speuler_ pukes 15:25:20 eh just the editor 15:44:22 Speuler_: Grr... that isforth tarball extracts to ./ 15:44:28 Annoying. 15:58:20 --- quit: CrowKilr ("Bouuuuyaa!") 16:24:51 --- join: FML (~FML@pD9E4ECE4.dip.t-dialin.net) joined #forth 16:25:38 howdy 16:25:52 Hi. 16:27:14 anyone seen oKaD live yet? 16:28:11 Nope. 16:28:51 The following NEW packages will be installed: 16:28:51 vim 16:28:51 0 packages upgraded, 1 newly installed, 0 to remove and 1 not upgraded. 16:28:51 Need to get 4614kB of archives. After unpacking 15.1MB will be used. 16:29:00 That's editing outside the Forth world. 16:35:46 is it possible to dl oKaD somewhere? i'm curious to see what i'm reading about 16:41:40 500 lines forth src. i didn't find them yet 17:20:17 --- join: Xuz (aemerson@bgp01132867bgs.ypeast01.mi.comcast.net) joined #forth 17:20:27 Hello. 17:23:15 Hi there. 17:23:27 Good evening. 17:26:19 tach 17:26:30 Tach? 17:26:49 "good day" 17:27:03 somewhat optimized 17:29:11 Ahhh :) 17:43:45 --- nick: Speuler_ -> Speuler 17:47:50 colorforth experienced ppl here? 17:49:08 I'd like to be come one. There a Colorforth for Linux? 17:51:16 No, but you can write one. 17:53:04 I've thought about it. I sorta' got distracted by something else, though. 17:53:33 :-/ 17:53:49 I'll be doing some own experiment with Forth soon. 17:53:58 When I got the network here up and running. 17:54:00 * Xuz has been using GForth mostly, lately. 17:54:15 I use IsForth. 17:56:23 I have looked at IsForth. 17:56:36 * Xuz would really like to see a forth with call/cc built in :) 18:00:48 call/cc? 18:01:45 Call-with-current-continuation. It's. . . . . a wonderful thing :) 18:03:54 n8 Robert 18:04:28 --- quit: iangreen (Read error: 110 (Connection timed out)) 18:04:48 n8 Speuler 18:05:25 Night. 18:05:39 Xuz: Tell me more about it. 18:06:01 --- quit: FML ("good night everybody") 18:08:48 call/cc basically allows you to call a function and pass it the 'current continuation' which captures the current call stack and environment (which would be the data stack, in Forth) AS a function. So that it can call it to get back to wherever you left off. 18:08:55 Which is similar to exceptions. . . 18:08:56 BUT. 18:09:10 You can ALSO pass it back out, and call it to get back IN to a computation. 18:10:28 :) 18:10:36 I have to go to bed now, good night. 18:45:46 --- quit: Speuler () 19:27:54 --- join: lament (~lament@h24-78-145-92.vc.shawcable.net) joined #forth 20:46:27 --- join: I440r (~mark4@sdn-ap-033tnnashP0399.dialsprint.net) joined #forth 20:46:50 * Xuz waves 20:46:54 hi :) 20:54:03 --- quit: lament ("mental mantle") 21:02:44 --- join: lament (~lament@h24-78-145-92.vc.shawcable.net) joined #forth 21:23:46 --- quit: I440r (Excess Flood) 21:24:01 --- join: I440r (~mark4@sdn-ap-033tnnashP0399.dialsprint.net) joined #forth 21:30:21 nite nite :) 21:30:36 --- quit: I440r ("Reality Strikes Again") 21:50:58 --- quit: Xuz ("[BX] He-Man uses BitchX. *HE HAS THE POOWWEEEEEEEEEERRRRRRRR!!!!!*") 22:31:37 --- quit: lament ("mental mantle") 22:37:34 --- join: Serg_Penguin (~Z@nat-ch1.nat.comex.ru) joined #forth 22:41:29 --- join: proteusguy (~username@65.191.88.177) joined #forth 22:47:08 --- quit: Serg_Penguin () 23:30:59 --- join: lament (~lament@h24-78-145-92.vc.shawcable.net) joined #forth 23:59:59 --- log: ended forth/02.12.23