00:00:00 --- log: started forth/04.10.31 00:15:46 damnit. the ansi reference is down 00:15:54 can anyone tell me the rules on DOES> 00:16:03 can it only be used within a coldef? 00:16:12 that would make my next job a LOT easier ;) 00:16:19 the ansi ref is hosted at many locations 00:16:32 all mine seem to point towards one, the taygeta site 00:16:42 there 00:16:45 er 00:16:49 just google for dpans 00:16:55 true 00:16:59 but you could just as well tell me ;) 00:17:15 heh. look at googles theme :p 00:17:19 i believe that does> can be used from outside a colondef. you just end the doescode with a ; 00:17:28 oh so you do end with ; 00:17:29 cute 00:17:32 thats all i need really 00:17:32 :) 00:17:38 at least in gforth 00:17:44 i don't know what TEH ANS says 00:17:55 well i dont really care for ans specifically 00:18:03 just need a generalized idea of how 00:18:04 okies 00:18:16 ans or fig or whtever 00:19:55 nice. ans doesnt even show an example :\ 00:22:39 fig seems to do the same 00:22:45 i mean, in their example 00:22:50 : ... ... DOES> ... ; 00:23:09 guess i'll just go with the flow ;) 00:23:14 :) 00:26:04 I have a question about direct threading forths. I want to have words like find/' and execute. - 00:26:14 ok.. 00:26:24 and the problem is? 00:26:47 Right now my operators for my VM are written in asm, and I have .global opname .global opsize 00:27:22 The problem is I'm not sure how to go about adding a next to all words, so that when I do find followed by execute the return stack is filled properly by the call from execute. 00:28:09 I was thinking I could just have the code for next after each operator, but it would be after the opsize. Does that make sense? 00:29:14 not to me, but i'm not really an asm coder i'm afriad 00:29:24 Also, I'm wondering about how to implement the equivalent of r> when my code is generally inlined, and only when I do something like 'wordname find execute should it use r> to save the address for next. 00:29:42 if you find a word with tick or find, you get the XT, or cfa, or whatever you call it, of that word 00:30:03 if you pass that onto your CALL or EXECUTE word, it should do so... 00:30:57 yah, I'm just wondering about how to manage the return stack so that I can return properly and still have the direct threading work properly. 00:31:49 --- join: Serg[GPRS]_ (~z@193.201.231.126) joined #forth 00:32:00 I could use the idea of call label; label: to get the PC (as someone here told me ages ago), but I wonder if there's a better way. 00:32:04 the call word should take care of that 00:32:24 ok 00:32:34 lets see 00:33:07 the call word should pop his return address (from calling CALL) from the return stack, and push the TOS to there, then simply ret 00:33:20 the tos is the result by tick/find (the xt/cfa of the word) 00:34:17 so pop return stack, push tos to return stack, ret 00:37:02 hmm, so say I have : incr 1 + . 1 'incr find execute 00:37:50 thats not proper in any way :\ 00:37:54 err should be: : incr 1 + . 'incr find execute 00:38:02 My forth uses . instead of ; 00:38:06 oh 00:38:07 ok 00:38:14 and ' is a quote word, like in Lisp 00:38:22 or quote syntax rather 00:38:24 shorthand 00:38:25 denotations, aaaaaaaaah make it stop! 00:38:36 yeah i know what you mean 00:38:38 heh 00:38:50 worked with ciforth for a while, used denotations as well 00:39:13 ok, but in that case the example is proper... whats the problem? 00:40:02 find should o a lookup on the word, and return the address of the machine code for the word right? 00:40:33 i think so yes 00:41:05 although i'm not sure what its input is (of FIND specificly). but i guess thats implementation dependent (seeing how you use . for ; ;)) 00:41:57 i havent got a find in my forth (yet), because i use ' and (') for that 00:42:17 Then execute I guess would do something like moving the addr for the word into %eax and then call %eax right? And hopefully the next appended to all words would do ret ? 00:42:50 that i just dont know for sure. i know how the CALL word should work 00:42:56 like i said above 00:43:14 but i'm not quite sure whether (your) forth will pick up when simply calling the xt 00:46:53 Thanks for your help. :) 00:46:56 sure 00:48:32 Sonarman> is create an immediate? 00:48:38 no 00:48:44 i mean, if its supposed to be working with : create bla does> ; 00:48:52 hmm 00:50:25 oh wait 00:50:27 nvm 01:11:36 Robert> ehm. i think this is bad... 01:11:36 Block allocation table size: 1 01:11:36 Kernel size: 13 01:11:36 Core language sources size: -31 01:11:36 OK. 01:12:32 yep. its bad :( 01:17:50 but the question is... is it fixable? :) 01:30:38 --- part: Sonarman left #forth 01:33:25 --- join: Sonarman (~matt@adsl-67-113-235-102.dsl.snfc21.pacbell.net) joined #forth 01:33:40 --- quit: Sonarman (Client Quit) 01:33:54 --- join: I440r (~mark4@216-110-82-59.gen.twtelecom.net) joined #forth 01:37:00 hi I440r 01:37:03 hi 01:37:07 how's w/ isforth ? 01:37:28 well im waiting for my laptop to come back from being fixed so i can complete some edits i was doing 01:37:37 im like " <-- that close to THREE releases 01:37:56 isforth x86 linux, isforth ppc linux, isforth x86 fbsd 01:38:10 heh, nice ! 01:38:32 * Serg[GPRS]_ thinks of migrating to BSD coz of Linux versions split 01:38:46 trouble is i cant do devel on my desktop pc, im just tooooooo used to doing it on my laptop 01:40:22 hehe 01:40:35 * Serg[GPRS]_ is split between home and work desktops 01:40:46 i now rent a room, so see my home one rarely 01:42:28 * Serg[GPRS]_ is test-driving Photoshop CS 01:48:10 --- join: Raystm2 (Rastm2@ACAAC45C.ipt.aol.com) joined #forth 01:51:38 I440r: did u ever think of making 'do your forth' kit ? 01:52:10 ? 01:58:53 some text explainig overall idea, + some sources, so one can make basic decisions for himself 01:59:32 for example, i would make ultra-minimal forth - only the words needed for compiler, all other - into loadable extensions 01:10:00 not sure if i could do that 01:10:09 hehe ;) 01:10:43 i seen some, butt for x86 segmented mode - real suxx 01:16:39 :) 01:16:43 i prefer real mode 01:17:05 i think pmopde is a huge KLUDGE fix of a stupid design flaw 01:17:10 i.e. segmented memory 01:18:46 i would prefer flat memory CPU ;)) 01:18:49 what is pmopde 01:20:05 protected mode 01:20:39 oh 01:20:46 i kinda like segmented memory 01:29:35 I440r: would you prefer to yell A.OUT? before testing something? 01:30:35 The unix creators originally ran unix on a PDP without an MMU, so they would clobber each other during testing. So, they would yell A.OUT? to warn others to save. 01:31:10 Thats a funny story. 01:32:10 The entire story is here: http://cm.bell-labs.com/cm/cs/who/dmr/odd.html 01:35:30 ? 01:35:39 Hey 1440r: have you Had a chance to talk to TheBlueWizard lately. seems he's been asking for you when I've been on. but we both have missed you :) 01:36:28 err no not talked to him in about a week 01:36:33 ill keep an eye out for hiom 01:37:17 --- quit: Serg[GPRS]_ (Read error: 104 (Connection reset by peer)) 01:38:50 your welcome :) now I can tell him that I finally "saw" you :) 01:39:03 heh 01:39:35 How's the chat then 01:40:08 mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm- 01:40:56 OOPTS SORRY HEHE 01:41:15 was cleaning my kbd by inverting and shaking it 01:41:22 grr capslock too lol 01:42:06 hehe 02:59:49 Robert alive yet? :) 03:57:18 Yep 03:57:24 Sleep is good! 03:57:55 robert! 03:57:59 fix plz :( 03:58:36 Hm? 03:58:40 Oh 03:58:56 Any idea how THAT happend? 03:59:42 ehm. because of something you did? 03:59:47 Pffft 03:59:59 I mean, what did you do before this happend? 04:00:09 If you only modified core.f, what is the new size of it? 04:00:11 ehm. add code? 04:00:16 its now 34k 04:00:24 obviously a turnpoint from 32k to > 04:00:32 Hehe. 04:00:44 I'll make a quick check before I take my shower 04:01:25 btw, did you recompile this with another compiler? 04:01:53 (other than good old 32-bit gcc) 04:02:04 eh 04:02:07 i dont know 04:02:13 i'm using a batchfile i created a longlong time ago 04:02:26 mkdist kuf.bin boot.bin kernel.bin core.f 04:02:33 --- join: saon (Ecoder@c-24-129-95-254.se.client2.attbi.com) joined #forth 04:02:33 thats yours 04:02:35 mkdist 04:03:16 Is that for Linux? 04:03:34 Didn't I compile this in a 16-bit Borland compiler? 04:04:25 Then it should be easy. Just replace all relevant ints with long ints. 04:05:05 i have nooooo idea. 04:05:15 its for windows 04:05:16 dos 04:05:17 w/e 04:05:26 OK, you have any 32-bit Windows C compiler? 04:06:19 eh 04:06:25 visual c 04:07:06 OK, try that then. Or do the changes I suggested and recompile with av 16-bit compiler. 04:07:20 OR, if you're _really_ lazy, wait until I got breakfast and a shower and I'll fix this. 04:10:21 * Raystm2 is eaves-droping and want's Robert to fix ne breakfast too :) 04:10:21 hello Robert and qFox :) 04:11:03 Hehe, morning, and brb :) 04:11:08 ok 05:00:46 --- quit: Raystm2 ("User pushed the X - because it's Xtra, baby") 05:09:45 --- join: crc_ (crc@165-pool1.ras11.nynyc-t.alerondial.net) joined #forth 05:10:13 --- nick: crc_ -> crc 05:12:23 Hi crc 05:12:30 Robert! ;) 05:12:33 FOX! 05:12:40 Did you fix it? 05:12:46 incapable 05:13:06 You lazy... 05:13:20 weak i am. 05:13:22 OK, OK, I'll do it. 05:13:32 yay :d 05:13:40 * Robert pets qFox with an axe. 05:13:50 i luuuuuvs teh axe 05:18:42 Hmm... 05:19:05 I think the boot loader might freak out on 64kB, so make sure you don't get there. ;) 05:20:12 :| 05:22:06 Hi Robert 05:23:42 qFox: robos.org/f/mkdist.exe 05:25:57 yay 05:25:57 :D 05:26:25 Tell me if it works 05:27:19 yep seems to be working. at least no negative counter... 05:27:30 might have fucked the disk though (last time) 05:27:43 Hehe 05:28:02 hm it formats. good 05:28:02 As in physically (no, not THAT physically) fucked your floppy, or just the disk image? 05:28:20 well, at some point, when i dont format, the disk will be unuseable 05:28:24 wont be able to format 05:28:26 or anything 05:28:33 but if i format in time, it'll be fine 05:28:45 Heh 05:28:59 "World's Scariest Ghosts caught on Tape" my god what a big pile of bullshit 05:29:09 its not even amusing :\ 05:29:51 Haha 05:30:01 Don't tell me you're watching that 05:30:12 hm. still the same behaviour (taking a long time to write) 05:30:32 having my doubts whether it will work, but gonna have to test on a "Fresh" disk before i can tell for sure :) 05:30:44 i WAS wathcing it, but after 10 minutes or so nothing changed so i stopped 05:30:46 You mean writing the disk image or writing it to the floppy? 05:30:56 flop 05:31:05 it works though 05:31:08 as in, it boots 05:31:11 Hrm, I can't see how a flawed mkdist would fuck up that part 05:31:12 Oh, cool 05:32:14 before it would write the image in a few seconds 05:32:19 now it takes 20 or 30 05:32:48 Odd. 05:32:53 yeh 05:32:53 Probably some bug remaining. 05:32:57 i guess 05:33:04 OK, OK, I'll recompile it with lcc 05:33:09 One minute.. 05:33:42 its not a BIG deal. it boots, thats what counts 05:34:08 Well, it feels like that program will start overwriting system memory any second 05:34:24 :p 05:34:49 it does appear as if he's writing a full floppy or something 05:35:10 ohwell. lets see whether my variable create does> and constant words function (as if, in one try, psh) 05:36:10 figures :) 05:40:55 Download the file again. 05:41:13 yessir 05:41:40 And this time it will WORK. 05:41:43 :D 05:41:47 yessir 05:41:50 Otherwise YOUR head will be rolling on the floor. 05:41:55 yessir 05:42:08 Another dimension of "ROFL" 05:44:46 my poor head :( 05:44:56 i'm sorry mr robert sir. same. 05:45:16 Grrrr 05:45:19 * Robert checks 05:45:40 btw, do you get the right sizeof()s? 05:45:50 you mean indication of source size? 05:46:02 oh wait 05:46:12 D:\download\forth\f\f-040714\f\bin>mkdist kuf.bin boot.bin kernel.bin core.f 05:46:12 sizeof(bootblock) = 1028, sizeof(mainblock) = 1024 05:46:12 Can not read 1kB from boot loader file. 05:46:13 Well, struct sizes 05:46:16 Hah 05:46:19 That's bad. :P 05:46:29 That's with the newest version? 05:46:34 indeed. he didnt do squat 05:46:42 i guess. hold on let me try a new disk 05:46:56 Hehe 05:47:02 I think I might have forgot rebuilding the lcc makefile 05:47:15 thats a bad thing, right? 05:47:15 ;) 05:47:38 either he wrote that VERY fast 05:47:39 or... 05:47:45 he's not writing anything. 05:47:51 the latter is the case 05:48:04 Ooops 05:48:12 I forgot to make it 32-bit again 05:49:08 OK, try again. 05:49:52 seemed to be fine 05:49:58 but still VERY short on writing so... 05:50:17 nope. not writing 05:50:28 but hold on, maybe its something else 05:50:31 fucked disk or /we 05:50:49 Wait a minute, is it mkdist or rawrite that takes longer now? 05:50:55 --- quit: crc ("Time for bed... Goodnight!") 05:51:01 rawwrite 05:51:18 Ah 05:51:20 but only after you supplied that new mkdist 05:51:26 Well, that isn't my fault. :P 05:51:29 Bleh 05:51:34 Sure the disk image didn't grow? 05:51:35 its not? 05:51:45 ehm i'm only modifying the source 05:51:49 core.f 05:51:52 nothing else 05:51:52 very sure 05:52:11 Yeah, but I mean the size of the finished disk image 05:52:11 Block allocation table size: 1 05:52:11 Kernel size: 13 05:52:11 Core language sources size: 33 05:52:13 What is it now? 05:52:29 huh 05:52:32 how the fuck 05:52:34 Just create a new, empty one. 05:52:37 the thing is 64mb??? 05:52:44 I think the buggy program made a HUGE disk image 05:52:45 well, 63.9mb 05:52:56 And now you're still working with it 05:52:57 perhaps 05:53:04 just any file is fine right? 05:53:08 any contents i mean 05:53:17 Yeah. Or no contents. :) 05:53:32 An empty file is probably the best 05:54:03 ok... 05:54:10 didnt seem to work 05:54:24 will try fresh disk 05:55:35 i think its not writing anything atm... 05:55:42 kuf.bin is now 50k 05:55:54 Sounds reasonable 05:56:27 rawwrite does access the disk (hear the sound) but very shortly and the disk is not bootable 05:56:39 Hrm. 05:56:56 hah 05:56:59 hold on ;) 05:57:24 fucking write protection 05:57:28 :p 05:57:42 --- quit: clog (^C) 05:57:42 --- log: stopped forth/04.10.31 05:57:50 --- log: started forth/04.10.31 05:57:50 --- join: clog (nef@bespin.org) joined #forth 05:57:50 --- topic: 'http://www.orangetide.com/forth/ -- Links about FORTH. I, for one, accept our new ianp overlord' 05:57:50 --- topic: set by slava on [Sun Oct 24 13:17:17 2004] 05:57:50 --- names: list (clog saon I440r qFox warpzero madwork__ imaginator Robert Stepan swsch_ oxygene Hyrax madgarden hefner jim fca I440r_ cmeme mur ASau @ChanServ @Herkamire skylan onetom @ianp) 05:57:59 i'd say perfect, but i'm sure i'll hit that 64k barier some time ;) 05:58:05 thanks alot 05:58:29 :D 05:58:40 I hope you do that _after_ G is released ;) 05:58:52 :D 05:59:17 yeah i think so. i wont add another 32k of source any time soon :p 05:59:24 whats the limit based on btw? 06:02:31 The 64kB one? 06:02:41 yewah 06:02:51 Well.. one segment is 64kB 06:02:58 I'll check the F boot loader 06:03:07 ah right 06:03:38 Yeah, 64kB will be a problem. But that could be fixed. 06:03:49 You know, you're not really supposed to put everything in core.f 06:04:06 You should let core.f load kuf.f or whatever. 06:04:16 i dont even HAVE a filesystem yet 06:04:30 Well, F "kind of" has one. 06:04:38 But you're probably right in not trying to use it 06:04:39 ehm. no. it doesnt ;) 06:04:44 Hehehe 06:05:03 i ripped out anything i didnt absolutely need, from core.f 06:05:11 with all due respect 06:05:12 :) 06:05:28 Ah, good boy. 06:05:36 I smell a healthy Forth spirit 06:05:56 you're taking up 2.6k in my source :p 06:08:36 yay 06:08:41 my create word seems to work :d 06:08:50 Congratulations ;)( 06:08:55 Tell me when does> works 06:09:25 thats the next in line to test, but that already put something on the stack when compiling (teh word itself) so its bugged :p 06:10:21 yep. at least the create word now works as i intended it to work :p 06:11:10 and maybe the does> word is good now as well as it depended on the create word (it wasnt returning to interpretation mode before) 06:12:12 pity :p 06:14:58 Hehe 06:15:55 * Robert makes some fixes in the new G boot loader. 06:16:04 Remember - it never had any size limits. NEVER. 06:16:09 :) 06:18:32 256kB block size limit should be enough, right? 06:18:39 i hope so 06:18:40 :) 06:19:08 If you ever need mor than that I'll personally rape you, murder you, and spray "bloatware supporter" on your grave. 06:20:34 thanks. 06:22:04 hm 06:22:11 i thought up this great construction for doeS> 06:22:23 except. its not really working. it ends up in an endless loop :( 06:22:28 or something that causes a hang 06:22:32 Heh :/ 06:28:09 hm. well the thought wasnt very bad, it just didnt work quite as i thought in practice 06:28:21 i just used : to create an empty word 06:28:42 then in that word i compiled the DFA as a literal (field that contains a pointer to the data) 06:28:59 once the coldef was done i backcompiled here to the dfa 06:29:07 this is how my create word works 06:29:16 (still does, functions correct) 06:29:27 does> however, is independent 06:30:14 so i added one extra empty cell at the end of the word for create 06:31:04 now i let does> read the last defined word from LATEST, fetch the dfa, and go one cell back. there it compiles a jump to here. it is asumed that does> is executed after the allotting of data 06:31:18 (although i think this shouldnt be a problem either way) 06:31:28 well 06:31:30 whatever 06:31:47 anyways. the problem is that i would need an additional ; to close the word 06:31:57 due to internal constructions 06:32:21 Hehe, the magic of does> :) 06:32:28 or else kuF would not know where the end of the word is 06:32:51 so now i'm thinking that create should simply copy its compiled list of stuff 06:32:55 or something... 06:33:34 but that will result in a very strange and complicated (looking) construction ;) 06:36:16 --- join: qF0x (C00K13S@82-169-140-229-mx.xdsl.tiscali.nl) joined #forth 06:37:52 --- quit: qFox (Read error: 104 (Connection reset by peer)) 06:41:13 --- nick: qF0x -> qFox 06:45:02 Did it crash your computer THAT bad? ;) 07:02:01 no it didnt crash this morning 07:02:14 it crashes once a day, almost always at the first bootup 07:02:40 Heh 07:02:54 it really does though 07:02:57 very odd 07:03:05 but its been doing that for over a year now 07:03:07 so whatever 07:05:11 :D 07:05:14 * Robert pets Windows 07:05:26 Hrm, I'm thinking about switching from NASM to FASM. 07:08:30 why would nasm have a problem with labels? I'm trying to create an elf-format object file to be linked with some C libs, and just potting a label in there causes it to segfault just before where the label is 07:09:01 brb 07:10:35 Heh. 07:12:51 --- quit: saon (Read error: 238 (Connection timed out)) 07:13:06 the same code too... put a label in, code dies. remove label, code runs. 07:13:27 Heh 07:13:35 (sorry, I'm getting repetative) 07:13:51 or repetetive 07:14:22 what platform do you run nasm/fasm on? 07:15:34 and we even tried creating with and without labels, and stripping each resulting executable... result was two identical files 07:16:59 I've been using NASM, so far. On DOS (16-bit), Windows (32-bit) and Linux. 07:17:34 on linux, do you -f elf? 07:20:12 Usually I'm using it to generate raw binaries, but sometimes I'm using ELF 07:20:40 can you run raw binaries in linux? 07:21:11 or, taken from another pov, what do you use raw binaries for? 07:21:45 Forth. :) 07:21:58 Using it for (among other things) my Forth system. 07:22:07 Which qFox has been struggling with for a while now. 07:33:46 hm? 07:34:22 struggle being the correct word there ;) 07:34:46 Hehe, exactly. 07:35:49 right 07:35:50 anyways 07:35:55 does> sux. 07:36:41 guess i never realized that but it needs some kind of special ; to close 07:38:55 the only alternative i can think of straight away is that DOES> revectors ; to a special word that deals with it all, and then revectors ; back to what it should be... but thats sheer uglyness 07:39:34 I gave up implementing does> in my Forth written in Forth. 07:39:40 you have? 07:39:50 hm, but it is possible... 07:39:53 it must be 07:39:55 obviously 07:41:07 Yeah 07:41:10 But...hard. :) 07:41:23 yes harder then i thought. 07:49:13 I did mine the easy way. 07:50:09 fuckit i'll just implement does; 07:50:23 and bother myself with a "proper" version when i have the time 07:50:33 madgarden: What, stole it from someone else? 07:50:37 heh 07:51:31 heh 07:51:44 All Forths are stolen. 07:51:51 Except Chuck's. :) 07:52:00 :D 07:52:13 hmmm i'm trying to do most of my stuff myself actually. but hey, whatever :) 07:52:19 please, do tell us the easy way 07:54:06 he's just bluffing ;) 07:54:39 I change the code field of the new word to DODOES which takes the address of the DOES> code from the first field of the parameters. DODOES just ENTERs this word. 07:55:37 yes but this still doesnt explain how you detect the end of the does> "parameters" (definition) without a special ; 07:56:02 Why do I need to? 07:56:34 : foo create 50 allot does> @ ! . . ? ! ; 07:56:45 Ack, parents just appeared... bbl. 07:56:54 haha "uhu" :p 07:57:44 anyways. i dont know how you did this, but i end my words with a plain 0. if the interpreter encounters a plain 0 it is read as a return (if you will). 07:57:52 i need to know where to put the 0 07:58:23 even if you dont use the 0, you still need to know where the end is one way or the other 07:58:33 and i dont see how you can, unless you have a special ; 07:59:11 i must say i dont even mind the does; all that much. 08:05:59 OK, I'm covertly responding here... 08:06:09 my DOES> basically compiles a LEAVE at that point. 08:06:29 leave? 08:06:40 UNNEST, whatever. The same thing that ; does 08:06:45 oh 08:06:50 So, it never executes the following code. 08:07:03 doesnt that render it kind of useless/ 08:07:06 Only the new word does, since it gets the address of the DOES> code. 08:07:08 Not at all. 08:07:23 DOES> creates the new word that points to the DOES> code. 08:07:26 Think about it. 08:07:28 OK, bbl. 08:17:34 heh " All Forths are stolen. Except Chuck's. :)" Now I don't feel as bad struggling with my Forth-like system. 08:19:42 hm. damn. i made another small error in my thinking. one i cant so very easily fix i think 08:20:08 the word that uses does> needs to COMPILE the words, not execute them once 08:20:52 Can you use :NONAME for that? 08:20:56 (eg. : constant , does> @ ; the @ isnt supposed to be executed when you execute constant, but when you execute A constant 08:20:57 ) 08:21:32 oh that should be : constant create , does> @ ; of course 08:22:17 ugh. this would require me to mess with either the input stream, or the outer interpreter 08:23:27 perhaps messing with the input stream would be the best solution there, that way you can also capture the ; 08:24:01 although, no its not a good method. what if one wanted to postpone ; for some reason. this would fuck that up 08:27:57 DOES> seems to be like a combinator of two definitions into one, but the DOES> portion is according to my book "jump to" after executing the previous code. 08:28:21 previous? 08:28:47 it simply changes a variable to a word that does something static with the adr of the variable 08:28:57 or at least, thats what it is supposed to do... 08:29:28 heh, wish I could help. I'm still not sure about it after reading this book. 08:30:20 maybe if you read this 08:30:20 http://galileo.phys.virginia.edu/classes/551.jvn.fall01/primer.htm#create 08:30:31 (actually the first guide i read on forth) 08:30:32 thanks 08:31:10 or well, halfway. by the time i read it about half i got lost in trying stuff :p 08:31:53 anyways. 08:31:54 hm 08:32:00 i think i'll follow suit and drop does> for now 08:32:13 and do a manual implementation for constant 08:35:06 s" : create ( 'name' -- ) here postpone : postpone ] >dfa dup >r postpone literal compile @ postpone [ postpone ; here r> ! ;" $'>" >kuf 08:35:06 s" : constant ( 'name' -- ) here postpone : postpone ] >dfa dup >r postpone literal compile @ compile @ postpone [ postpone ; here r> ! , ;" $'>" >kuf 08:35:07 :) 08:35:20 hm you should ignore the s" and " ... 08:35:45 just the way i created to be able to send data to the kuf interpreter from F 08:35:46 :) 08:35:54 (feed it strings basically) 08:36:28 hm come to think about it, the constant can be done much quicker 08:39:05 What is >dfa? 08:39:28 : >dfa ( dea -- ) 8 + ; 08:39:47 hmm 08:39:52 takes a dictionary entry address (start of the header for a word) and converts it to the data field address (of the header) 08:40:19 i have a static header 08:40:27 so can safely do this 08:41:02 i have >cfa >dfa >ffa >nfa etc :p 08:41:15 s" : name ( dea -- ) >nfa @ count type ;" >kuf 08:41:20 s" : (name) ( -- ) ' name ;" >kuf 08:41:46 I have ds>rs rs>ds, but they're only macros used for asm generation at the moment. 08:42:03 but thats segment? or ... 08:42:25 data-stack > return stack. and vice versa 08:42:39 eh. to move items between them? 08:42:42 like >r r> 08:42:46 yah 08:43:00 ah k 08:43:03 i have those too :p 08:43:09 although not sure about >r r> 08:43:38 I've been going very verbose with my names. And some of my design is strange. 08:44:12 I don't have the immediate words if/then. I have the immediate words then/otherwise and my conditions are like >? whatever floats your boat 08:44:32 :) 08:44:39 1 2 : constant ( 'name' -- ) postpone : postpone ] literal postpone [ postpone ; ; 08:45:59 there :D 08:46:33 i could possibly copy the address of that literal to the DFA 08:46:46 that way i can combine it with words like TO 08:47:15 and a constant would still be faster then a regular var 08:47:23 (slightly, but..) 08:49:26 Robert> oh i fixed my ." word to be able to be used in compilation mode and interpretation mode (i mean, ." can now be compiled) 08:49:51 only makes SEE word a little more trouble 08:50:06 since the bytes will put the whole word out of cell allignment 08:50:22 but thats hardly a problem 08:56:18 i cant see any reson for ." to work in interpret mode 08:56:23 or do loops 08:56:25 etc 08:56:34 ehm just to echo stuff 08:56:40 .( 08:56:43 dont see why it shouldnt work in interpret mode 08:56:48 .( i can echo stuff like this ) 08:57:02 .( is the same as ." for me, except .( is an immediate 08:57:16 because making it state smart is overloading it 08:57:26 you should avoid state smart words where possible 08:57:30 (or well, they're not the same, but .( prints in either mode, where-as ." compiles when in compilationmode) 08:57:52 its actually .... yes the only one (so far) that is state smart 08:57:59 but just because i'm used to ." 08:58:05 : isnt even state smart atm :p 08:58:15 : shouldnt be 08:58:24 it should... 08:58:26 : blah : .... ; 08:58:37 that makes blah a creating word 08:58:45 hm ok 08:58:47 truew 08:58:49 that creats a colon definition and does stuff too 09:00:05 well. ." is "state smart" for my implementation anyways 09:00:42 it does get confusing when you see : : create ;use nest ] ; 09:00:43 hehe 09:01:11 err thats ;uses btw 09:03:18 i wonder how my forth can run into an endless loop at boot, when the last words defined dont even come close to printing something 09:03:36 the endless loop consists of the code printing bytes from the memmory 09:03:37 for some reason 09:05:49 stack underflow. still dont see why that should activate such a result though 09:07:15 I440r> how'd you implement does> btw? 09:07:53 do you know ;uses and ;code ? 09:08:35 if i explain those it will make does> much easier to understand 09:08:41 ;code ends a asm definition? 09:08:50 (native code def..) 09:09:21 I440r: Hah 09:09:22 i dont know ;uses 09:09:23 er 09:09:27 qFox: Want to know how he does? 09:09:31 qFox: Just look at F :P 09:09:39 Guess where I got my, er, inspiration from 09:09:42 i thought you said you didnt do does> 09:09:57 Oh, just not in the Forth written in Forth 09:10:02 uh 09:10:09 ok..? :) 09:10:28 But in F "I" implemented does> 09:10:34 oh ok 09:10:37 (read: copied it from isForth) 09:10:40 :) 09:10:55 qfox first thing you have to understand about isforth is taht EVERY definition, be it a coded def, a colon def, a constant or a variable or whatever.... ALLLLLLL start with machien code 09:11:09 ignore coded defs, the machine code that starts a coded def IS the def 09:11:26 take a variable as an example 09:11:39 if you do ' myvariable it returns the CFA of that variable 09:11:44 the code field address 09:11:47 aye.. 09:11:51 in isforth the cfa of a variable is... 09:11:56 call dovariable 09:12:00 dd 00 09:12:13 the return address of taht call is the address of the body field of the variable!!!!! 09:12:15 ok 09:12:27 : variable create 0 , ; 09:12:34 create ONLY creates variables 09:12:44 : : create ........ ; 09:12:45 uhu 09:13:09 ok so were defining : and its calling create. but create doesnt create colon defs, it creas variables!!!! 09:13:16 so what we do is we use ;uses 09:13:28 : : create ;uses nest ] ; 09:13:53 the ";uses nest" in there patches the "call dovariable" created by create to be a "call nest" 09:14:10 ;code is VERY similar but slightly more complex 09:14:40 hmk. i dont think i'll have any use for your method :p 09:14:41 ;code also patches the most recently creted words cfa but it patches it to be a call to the address immediatly folowing the ;code 09:14:49 : blah ...... ;code xxxxxx " 09:15:02 in blah the call to ;code is an implied exit from blah 09:15:13 because immediatly folowing ;code is ALWAYS machien code 09:15:48 so the word created by blah will have call to the address of xxxxxxx in its cfa 09:15:50 understand that ? 09:16:19 yeh 09:16:34 ok 09:16:42 if you look at MY definition for does> 09:17:08 : does> compile ;code ,call dodoes ; immediate 09:17:12 now :) hehe 09:17:22 : blah .... does> more stuff here ; 09:17:26 does is immediate 09:17:52 it compiles a ;code into the definition of blah AT the place where does> is invoked 09:18:01 yeah you gave me an idea 09:18:07 immediatly following that ;code inside blah is a call to dodoes 09:18:13 ok an example 09:18:20 : constant create , does> @ ; 09:18:31 you execute constant and it creats your new constant 09:18:36 newconstant: 09:18:41 call dovariable 09:18:47 dd value 09:19:11 the ;code then executes and makes that call dovariable a call to the "call dodoes" inside blah 09:19:21 when you get to dodoes you have TWO items on the stack 09:19:31 the top one is the address to interpret (the fetch) 09:19:48 the second is the body field address of newconstant 09:20:05 does that help ??? hehe 09:20:15 it took me YEARS to get this figured out :P 09:20:18 yeah you already gave me an idea 20 lines up :p 09:20:43 its not your method, because i'd have to rewrite my entire dictionary layout for that ;) and with that, my whole forth 09:20:47 but how about this 09:20:59 : constant create , does> @ ; 09:21:12 compiles as a word constant 09:21:30 does> should compile a jump to here 09:21:44 here being the adr before @ 09:22:31 i'm not sure if this was exactly what you meant, or if that was what... somebody said way up, but it simply recycles the code of the CONSTANT word (in this case) 09:22:51 ? 09:23:00 i'm however not quite sure whether the jump will work out 09:23:07 and not screw up teh return stack 09:26:10 ok. my words all look like this by default. 09:26:29 the name can be anywhere since there's a pointer in the name field to that area 09:26:43 same for the code field 09:26:56 the 0 belongs to the code field and indicates the end of the code field 09:27:07 (unless its preceeded by words like literal 09:27:08 ) 09:27:36 hm. i dont think i should try to explain it actually. i'll just make it more confusing 09:27:48 lets just say i think i've found a way :) 09:31:24 it is confusing but if my explanation helped you its all good :) 09:31:31 indeed :) 09:39:02 --- join: crc (crc@83-pool2.ras11.nynyc-t.alerondial.net) joined #forth 09:40:06 you know whats confusing, the whole when what gets executed thing 09:40:12 you have compilation and interpretation mode 09:41:01 but stuff like branching words, compile words into other words, that only get executed when the word that is being defined is executed (a level 2 execution if you will) 09:41:16 where as postpone, only delays one level 09:43:58 and an immediate is just that, a "level 0" 09:45:09 --- join: Robert__ (~pink@c-bf5a71d5.17-1-64736c10.cust.bredbandsbolaget.se) joined #forth 09:45:12 and right now... i'm just hurting myself by mixing these up :D 09:45:59 --- quit: Robert (Nick collision from services.) 09:46:02 like for instance, my does> should NOT be an immediate. 09:46:09 --- nick: Robert__ -> Robert 09:47:08 hm or should it be... haha 09:47:19 i need to put it into interpretation mode 09:47:21 blaaaa 09:48:49 Hihi 09:48:57 * Robert pets qFox for having problems. 09:49:15 at least i'm trying myself >:) 09:49:31 Trying is the first step towards failure. 09:49:48 no, thats assumption 09:50:14 and copying is kind of an assumption 09:50:17 ;) 09:50:50 (its actually true too, heh) 09:52:04 Oh, well, this time I'm on my own. 09:52:20 I won't say why, because I440r would rip my head off. 09:52:23 haha 09:52:41 i dont think he needs a reason for that, so go ahead ;) 09:53:26 * Robert whispers 'STC' to qFox 09:53:33 hahaha 09:54:29 STC is good :-) 09:54:54 Heretic... 09:55:11 why am I a heretic? 09:55:28 Because I440r says that STC isn't Forth! 09:55:32 So? 09:55:48 I hope you realize I'm not serious 09:55:57 I know :-) 09:56:09 Good, you almost scared me there :) 09:56:15 * crc likes to poke fun at I440r's opinions sometimes 09:56:18 Hehe 09:56:56 I have a DTC compiler/interpreter that can be used in parallel with RetroForth's STC model though it's unreleased :-) 09:58:32 Cool. I was thinking about adding something like that later, to please the puritans. 09:58:56 I just did it as a proof of concept 09:59:16 You use dtc: instead of : to compile a word using dtc 09:59:16 (OK, I admit, that would be my true reason as well... like with everything I do) 09:59:21 Ah. 09:59:24 They can be intermixed freely though 09:59:27 Kind of like my bf: word. ;) 09:59:33 Yup 09:59:45 bf: myword +++++++++++<<[---+++<<<] ; 09:59:52 Such a cute feature. 09:59:55 dtc: foo 1 2 ; : bar foo + . cr ; 10:00:14 I thought about writing a bf compiler in RetroForth once 10:00:33 I never got around to it though... 10:00:57 Nah, pretty useless thing. 10:01:02 But fun. :) 10:01:08 That's the point :-) 10:01:19 i would defend TO THE DEATH, your right to hear MY OPINION!!!! 10:01:26 Haha 10:01:30 I believe you ;) 10:01:35 I440r: I'd listen to you 10:01:51 Though I might not change MY opinion :-) 10:02:07 I440r: so what's wrong with STC? 10:02:17 btw whats going on with kct5ja? and that topic about ianp? 10:02:18 its not forth 10:02:25 I440r: why 10:02:38 have i missed an important #forth episode or something? ;) 10:02:41 because its just ALL WRONG!!!!! 10:02:44 qFox: look in #c4th-ot for kc5tja 10:02:44 --- join: tathi (~josh@pcp02123722pcs.milfrd01.pa.comcast.net) joined #forth 10:02:47 you canbt "see" it reliably either 10:02:58 It's not that hard 10:03:06 no its not that so much as whats up? 10:03:16 dont tell me he left here perm? 10:03:24 Helmar (one of RF's users) has a disassembler that can determine symbolic names 10:03:27 its about as easy to generate FORTH SOURCES for stc as it is to generate C sources from the object file 10:03:59 I440r> so very hard? ;) 10:04:23 that makes debugging your compiler a little difficult sometimes because you cant always predict what the compiler will generate for a given source 10:04:43 I know what my compiler generates :-) 10:04:59 being able to "see" a colon def reliably is very helpfull 10:05:16 stc cant be seen. specially not if its an optimizing compiler 10:05:20 It'd be fairly easy to modify the disassembler to allow me to have 'see' for compiled words 10:05:25 I440r: sure it can 10:05:27 I440r: that's just your unsubstantiated opinion 10:05:30 main problem i have so far is targets with branching, and literals (or words that take arguments not from the stack) 10:05:36 even SIMPLE optimizations like what forth inc;s compilers do make it almost impossible to "see" 10:05:54 almost impossible != impossible 10:05:58 tathi no. get swiftx and try "see" your code and make sense of what your looking at 10:06:01 its not always that easy 10:06:03 I440r: Just save the source code. 10:06:15 in DTC or ITC its damned simple 10:06:34 robert the point is that your trying to debug your COMPILER by looking at what it generated 10:06:52 even given the sorurces you cant always see how the stuff the compiler generated corelates with the sources 10:07:05 that makes debugging the compiler itself kinda difficult sometimes 10:07:20 and in forth the compiler is extensible. you can create your OWN creating words 10:07:34 Ah. 10:07:40 ill admit its an opinion but its not unsubstantiated 10:07:42 Except for inlined words (conditionals and certain loops), the compiler generates nothing but CALL's 10:07:43 i KNOW it first hand 10:07:53 I440r: I use hexdump for that. ;) 10:07:54 I'll admit that it's harder for native than for DTC or ITC 10:07:55 --- join: Sonarman (~matt@adsl-66-124-255-94.dsl.snfc21.pacbell.net) joined #forth 10:08:07 but certainly not impossible. 10:08:13 no. not impossible 10:08:28 Especially if you plan for it -- make your code generation deterministic. 10:08:40 but being able to reliably decompile what the compiler generated saved me a HELL of alot of time on many occasions 10:09:11 tathi the only way to do that is to totally turn off optimizations in the compiler - im not sure thats possible in swiftx, tho it might be 10:09:17 could ask hyrax 10:09:32 I've almost never needed to decompile my words 10:09:45 neither do i usually unless i forget the definition for it hehe 10:09:57 You don't keep copies of the sources? 10:10:11 I just rewrite the word if I can't make sense of it later 10:10:19 if i want to create a new word thats similar to the way constant works its very quick to just do "see constant" 10:10:24 and copy the ideas 10:10:41 saves me having to go hunt down where "constant" is defined. 10:10:44 I memorized most of the major definitions 10:10:48 now. for me its easy, i KNOW where constant is 10:11:05 and i can tell you the exact definition for 99% of all the words in my kernel 10:11:18 but sometimes i have to look at the definition for something in the extensiuons 10:11:25 SEE is a quick and dirty helper :) 10:11:32 i dont have "view" 10:11:36 tho im thinkin of adding it 10:11:40 What's "view" ? 10:11:44 view blah 10:11:54 jumps into the editor AT TEH DEFINITION for blah 10:12:01 cept i dont have an editor 10:12:01 ahh 10:12:07 Write one :-) 10:12:07 does> sux :( 10:12:16 A block editor takes little effort to write 10:12:26 and it requires adding a new field to my headers that gives the file name and line number of the definition 10:12:38 and if you edit the file your view lins are AFU 10:12:43 so i personally dont like view 10:12:51 Or a quick search of the code itself... 10:12:57 yes 10:13:10 but how can you guaantee it finds the one your looking for 10:13:15 view and 10:13:23 do you want the one in forth or the one in assembler 10:13:46 hmm guess it would go by context 10:13:54 Only a handful of words are written in assembler 10:14:13 but then 6you would STILL need to know which words in which vocabularies were defined in WHICH FILES 10:14:20 its not a simple thing to implement gracefully 10:14:42 I only have two vocabularies :-) 10:14:47 simplicity helps :-) 10:15:07 actually, the view field would just list the file, not the line number and then you could grep for it 10:15:12 that would work 10:15:14 if i ever get an editor done, it will simply rock. 10:15:42 but then i would extend my headers by /home/foo/bar/fud/isforth/src/filename.f for every header 10:15:45 err no thanx 10:16:00 see is more elegant 10:16:33 I don't have either see or view in RetroForth 10:16:45 when/if i add file pathing to isforth that would simplify the issue i guess 10:16:57 but thats another thing thats not as simple as it looks at first 10:17:08 retro is alot smaller than isforth :) 10:17:11 True 10:17:30 what does tcn think of the path your taking with retro btw ? 10:17:34 But isforth has more code written in assembly than RetroForth 10:17:35 has he commented on it ? 10:17:47 The last time I talked with him (~1 year ago) he approved 10:18:03 crc most of isforths kernel is coded. it makes more sense that way to me 10:18:18 tho, some of the definitions that are coded might switch to : when i metacompile 10:18:21 Most of RetroForth is written in Forth 10:18:33 what forth... 10:18:37 i KNOW that when i have the assembler (if?) im going to change alot of the definitions in the extensions to be coded 10:19:02 qFox: in RetroForth of course :-) 10:19:33 most of retroforth is written in retroforth? :\ 10:19:42 Yup 10:19:47 isnt that kind of duh? 10:19:50 No 10:19:55 Why is it dumb? 10:19:56 a threaded forth... 10:20:01 No 10:20:02 i didnt say dumb 10:20:07 i said duh, as in obvious 10:20:15 I have a small assembly core containing the compiler 10:20:34 Almost all of the words are written as : definitions (with some inlined assembly) 10:23:03 The first two source blocks contain the minimal words needed to build a useful Forth system 10:24:17 --- join: futhin (thin@bespin.org) joined #forth 10:24:22 Herkamire: whats a good mud 10:25:50 oh wait 10:25:52 i could just grep 10:25:54 i forgot that 10:52:50 --- nick: futhin -> cduce 10:53:19 --- part: cduce left #forth 11:24:46 discworld 11:30:21 omgooose. its working :D 11:30:39 yay 11:31:15 Congratulations! 11:31:37 Hmm.. I wonder if these new tools I'm writing could be used for F. 11:31:39 just need to work out the bug where it consumes 2 stack items and returns a strange one 11:31:48 but other then that... :) 11:31:52 Hehehe 11:34:00 Robert: what tools are you writing? 11:34:15 Sonarman: File system tools for the new Forth system. 11:34:26 Where file system = enhanced way to handle raw blocks. ;) 11:34:47 The F way kind of..sucks. A lot. 11:34:50 hehe. named blocks? 11:35:06 Yeah, but the real improvement is that the blocks don't have to be consecutive. 11:35:16 Even F had named blocks. 11:35:18 (mind you, i'm building my forth on that forth (F) .... ) 11:35:27 Hihi 11:35:34 * Robert pets qFox for being brave and stupid. 11:35:34 named by dictionary entries? 11:35:44 Sonarman: Nope. 11:35:51 Heh. 11:35:55 That's cheating! ;) 11:36:07 And the blocks are variable-length. 11:36:18 cool 11:43:03 * crc just uploaded RetroForth 7.5.0 11:43:20 Feels like I should try it some day. 11:52:41 --- quit: fca ("Client exiting") 11:52:45 Robert, why variable length blocks? 11:53:33 is variable length blocks just another name for files in a flat file system? 11:53:34 crc: Because my master, the Devil, ordered me to. 11:53:49 Sonarman: Something like that. A very, very minimal file system. 11:54:02 cool 11:54:36 do you keep all of the layout in memory? 11:55:11 Haven't implemented it yet (other than in C). 11:56:03 Robert: can they be any length? 11:56:04 About variable length "blocks": I don't feel comfortable with a 1k limit. 11:56:33 crc: Any length n*1kB, where n is between 0 and 256. :) 11:56:40 ok 11:57:08 If you have any better suggestions, I'm listening. 11:57:11 That will make the editor harder to write 11:57:16 Yeah. 11:57:19 But not THAT much. 11:57:38 And it could be convenient if you have large source files (say, a keymap or something). 11:57:47 hmm 11:57:54 and does the metadata for each blockthing have a pointer to the next block? 11:58:15 Sonarman: I use one indirect block. 11:58:22 Sonarman: With pointers to all the data blocks. 11:58:34 oh, ok 11:58:39 I load all of the blocks into memory :-) 11:58:42 Basically a stripped down UNIX file system. 11:59:30 crc: I'm thinking about making the disk caching code take care of that, rather than explicitly loading everything. 12:00:05 I'm just doing the simplest thing 12:00:11 I don't cache disks 12:00:29 :-) 12:02:47 Sorry, DOS scared me away from that solution! 12:02:59 Robert: why? 12:03:57 Painfully slow. 12:04:54 talking about painfully slow.... does> should be fine now damnit 12:05:04 Heh 12:05:10 and kuf is getting slower, you can just see it slow down as it boots :p 12:05:41 Haha, fun. ;) 12:05:51 at least its no longer stackfucking anymore 12:09:10 its working 12:09:11 yay :D 12:09:31 * qFox makes backup quickly before he screws it up again 12:10:47 for the record, my does> works without does; now 12:11:23 I440r> thanks. i have no idea whether this is (about) the same method as yours, but your attempt to explain it did inspire me to this 12:11:25 :) 12:16:31 --- join: crc_ (crc@62-pool2.ras11.nynyc-t.alerondial.net) joined #forth 12:17:23 --- quit: crc (Read error: 104 (Connection reset by peer)) 12:17:59 --- nick: crc_ -> crc 12:19:34 ok this is strange 12:20:00 my TO and -> words werent functioning (even though they're rather simple) 12:20:06 so i did the steps manually 12:20:12 and its still not working... 12:20:20 i've manually stored a new value at the dataspace 12:20:27 and its not showing as such >:( 12:25:10 wtf... its really not working 12:25:16 lol my ! isnt !ing 12:25:46 Haha 12:25:59 Well done. 12:26:10 how the fuck could this have happened 12:26:21 and everything else seems to be working fine :p 12:26:29 and ! is threaded a lot, obviously 12:26:30 so... 12:26:42 i mean in all kind of words 12:27:40 nevermind 12:27:43 fixed 12:27:43 :) 12:28:20 Hihi 12:28:37 and so ends 0.09a : 12:28:38 :p 12:28:51 if i send it, will you actually take a look? :) 12:29:04 otherwise i wont bother 12:29:06 Sure. 12:29:13 I'll put it through a tough test. 12:29:15 * Robert grins 12:29:22 * Robert looks at his 386 12:29:24 goody :p 12:29:31 oh well... i hope its fast enough :0 12:29:46 Otherwise I blame YOU and nobody else. 12:29:48 *whistles* 12:29:48 i meant what i said back there about speed ;) 12:30:00 Well, if it doesn't work I have bochs and my P200. 12:30:04 So don't worry 12:30:04 at first its normal but as it loads it gets slower and slower 12:30:05 hehe 12:30:11 that laptop IS a p200 12:30:13 anyways 12:30:22 what do you want, the f or the bin 12:31:05 Is core.f all you modified? 12:31:55 or you know what, http://phil.uu.nl/~zee/kuf.0.09.bin and .f 12:32:00 ehm 12:32:05 f-040714 12:32:20 but i cant remember whether we did something to that. i believe not, but not sure 12:33:44 and then i had variables, constants, create, does> 12:33:46 :) 12:34:05 Well, I'll just download and try. One minute... 12:36:21 OK, the 386 did NOT like it! 12:36:27 * Robert tries the P200 12:36:28 what happened 12:36:51 Freezed after having loaded the kernel and core.f 12:36:56 oh really? 12:37:02 Ah, now it works. 12:37:06 Yep. 12:37:14 ah but it works 12:37:15 :D 12:37:38 Yep! 12:39:55 quite content with it actually 12:40:00 ran into any irregularities yet? 12:41:01 Well.. no. 12:41:05 1 1 + . 12:41:09 great :D 12:41:09 That worked fine! :D 12:41:12 hehe 12:41:19 * Robert adds an extra feature.- 12:41:33 i'm probably going to abuse your colorsystem 12:41:38 or maybe i wont. havent decided yet :p 12:41:49 if i wont i'll build something similar myself anyways 12:42:52 Now kuF is SO much better. 12:43:04 compared to last time you saw it? :) 12:43:07 : + over over 2 = swap 2 = and if 1+ then + ; 12:43:12 omg... 12:43:12 :) 12:43:13 No, after I added this, 12:43:16 But that too. 12:43:39 Anyway, this is the reason why Ingsoc recommends Forth. 12:43:40 but all those words have been defined so it should work 12:43:45 who? 12:43:56 12:43:58 qFox: was it you who championed using super-compatible C 12:44:06 eh, heck no 12:44:15 must've been arke 12:44:21 no idea :0 12:44:43 super compatible c? sounds idealistic 12:45:00 ... it probably is :p 12:45:01 well using a minimum of cpp macros for compatibility 12:45:35 no, cant be me, if it works i'm happy :p 12:45:47 screw crossplatformcrap. linux should die 12:45:50 >:) 12:46:02 what do you recommend as a linux replacment then 12:46:08 windows! 12:46:10 ^^ 12:46:17 freebsd 12:46:18 or soon, kuF 12:46:23 you should die 12:46:32 RetroForth/Native 12:46:43 just wait and see. some day... 12:46:44 :D 12:46:45 Those are my recommendations 12:47:24 enough kuF dev for today 12:49:48 well what do you recommend i write *my* shiny new OE/language in 13:16:49 Robert> any comments? 13:16:50 bugs? 13:17:32 Well, I didn't find any obvious bugs. 13:17:49 And..well..the only comment would be "well done" :) 13:18:48 cool. thanks :) 13:21:33 --- join: saon (Ecoder@c-24-129-95-254.se.client2.attbi.com) joined #forth 13:25:21 qFox: One comment though, my old web site is still included in there. It's robos.org now. 13:25:31 Not that you show it anyway.. ;) 13:33:21 --- quit: saon ("Leaving") 13:36:10 i show it 13:36:15 you're simply too slow. 13:36:17 ;) 13:36:39 if you read the beginning of core.f you'll notice that your message is not stripped away 13:37:51 email is still correct? 13:37:56 robost 13:38:34 Yeah 13:38:50 k 13:39:23 going to take a long nap :p 13:39:25 nite 13:39:28 Night! 13:39:32 --- quit: qFox ("this quit is sponsored by somebody!") 13:44:12 tathi I440r: it is possible to turn off the optimizer in SwiftX. Although, if the optimizer rules are 100% correct, the code is still deterministic. 13:46:09 I'm not sure deterministic was the word I was looking for. 13:46:28 +optimizer and -optimizer turn it on and off. 13:46:28 It seems to me that there are a number of optimizations that you can do before you cause trouble for SEE. 13:46:42 that's cool. 13:47:07 For me, many of the optimizations make the output of SEE make more sense. 13:47:29 really? 13:48:11 Yes, If I do some number + as in "5 +" it makes more sense to me to see something like "5 # T ADDI" 13:49:08 instead of " T PUSHS 5 # T LDI *S-- T ADDI" 13:49:17 oh, SEE displays assembly language? 13:49:39 that's strange. 13:49:47 to me 5 + showing up on 1 line of SEE output makes more sense then 5 + showing up on 3 lines of assembly output 13:49:54 yeah, definitely. 13:50:25 Yes, SEE in SwiftX and SwiftX is a disassembly output 13:50:34 I see...we were assuming a SEE that displays the code as Forth, however. 13:51:28 Well, with you translate the Forth to native/subroutine threaded code, it is kind of hard to decompile it back into high level Forth 13:51:41 A little bit. 13:51:47 It's not actually that bad. 13:52:01 To me, the optimizer makes the code more readalbe, not less readable 13:52:15 oh, it definitely makes the assembly code more readable. 13:52:39 the argument was whether you can have optimizations and still have SEE translate back to Forth 13:53:57 Well, it is hard to tell the differnece be "OVER SWAP" and "TUCK" 13:54:33 Because with the optimizer turned on the same code will be generated for each of those 13:55:18 yeah 13:56:12 Multiple drops being collapsed down, R> DROP not affecting the parameter stack, etc. 13:58:10 isForth has a word r>drop anyway. 13:58:32 Personally, I can live with that stuff. 13:58:45 I'd rather have the asm code be more readable in case I have to use gdb 14:05:28 I don't mind SEE doing a disassembly instead of trying to back translate into Forth. If I want to SEE the source, I can always use EDIT or LOCATE on the word. I'd rather the compiled code be clean and compact, so I can readily understand what is being done. If in looking at the disassembly I can't readily cross reference to the high level code, I end up doing one of 2 things. Factor the high... 14:05:29 ...level code better, or add optimzer rules to make the assembled code cleaner and more compact. 14:06:21 yeah. I'm kind of a big fan of assembly language myself. 14:06:40 I think translating back to Forth is an interesting problem though :) 14:06:41 --- join: TheBlueWizard (TheBlueWiz@modem-049.nyc-tc03b.FCC.NET) joined #forth 14:06:41 --- mode: ChanServ set +o TheBlueWizard 14:08:43 hey TBW 14:09:02 yes, it is an interesting problem. Because there is often so many things it could back translate to. That would often look pretty confusing. I guess you could always back translate to the most compact high level code. Exceptions would also have to be made when doing a SEE on a CODE word. 14:09:09 Hello TBW 14:11:21 Hi 14:11:37 Hyrax: exactly :) 14:11:38 warpzero hiya 14:11:48 Hyrax hiya 14:11:52 Robert hiya 14:13:08 --- quit: TheBlueWizard (Nick collision from services.) 14:13:33 --- join: TheBlueWizard (TheBlueWiz@modem-151.nyc-tc03b.fcc.net) joined #forth 14:13:33 --- mode: ChanServ set +o TheBlueWizard 14:14:05 hmm 14:14:15 should i write ASCII->bytecode first 14:14:20 or bytecode->ASCII 14:19:12 --- quit: crc ("Time for bed... Goodnight!") 14:53:49 --- join: ows (~ows@a81-84-114-211.netcabo.pt) joined #forth 15:16:53 --- join: Raystm2 (Rastm2@AC9B3610.ipt.aol.com) joined #forth 15:24:11 --- quit: imaginator (".") 15:42:47 --- quit: Raystm2 ("User pushed the X - because it's Xtra, baby") 16:00:16 --- quit: ows (Read error: 104 (Connection reset by peer)) 16:05:11 --- join: swsch__ (~stefan@p5091F85E.dip.t-dialin.net) joined #forth 16:18:05 --- quit: swsch_ (Read error: 110 (Connection timed out)) 16:55:59 --- join: crc (crc@122-pool1.ras11.nynyc-t.alerondial.net) joined #forth 16:56:20 hello crc 16:56:37 Hi Hyrax 17:00:23 --- join: saon (Ecoder@c-24-129-95-254.se.client2.attbi.com) joined #forth 17:02:16 Hi 17:03:29 --- join: Klaw` (~anonymous@c-67-171-207-91.client.comcast.net) joined #forth 17:05:03 hello Klaw` 17:10:04 --- quit: saon ("Leaving") 17:14:02 --- quit: TheBlueWizard (Read error: 113 (No route to host)) 17:33:16 --- join: TheBlueWizard (TheBlueWiz@modem-134.nyc-tc03b.FCC.NET) joined #forth 17:33:16 --- mode: ChanServ set +o TheBlueWizard 18:08:58 --- quit: tathi ("leaving") 18:15:35 --- quit: Hyrax (Read error: 232 (Connection reset by peer)) 18:24:11 gotta go...all bye 18:24:20 bye tbw 18:24:42 crc bye 18:24:50 --- part: TheBlueWizard left #forth 18:33:00 --- quit: warpzero (Read error: 110 (Connection timed out)) 18:33:57 --- join: warpzero (~warpzero@dsl.103.mt.onewest.net) joined #forth 19:25:05 --- join: tathi (~josh@pcp02123722pcs.milfrd01.pa.comcast.net) joined #forth 19:46:41 --- join: AhPook (~ericg@209.98.238.213) joined #forth 19:49:06 --- quit: AhPook ("using sirc version 2.211+KSIRC/1.2.4") 21:38:19 --- quit: tathi ("leaving") 21:38:25 --- join: crc_ (crc@63-pool1.ras11.nynyc-t.alerondial.net) joined #forth 21:38:26 --- quit: crc_ (Remote closed the connection) 21:38:49 --- join: crc_ (crc@63-pool1.ras11.nynyc-t.alerondial.net) joined #forth 21:39:03 --- quit: crc (Nick collision from services.) 21:39:05 --- nick: crc_ -> crc 22:08:59 --- quit: crc (Read error: 104 (Connection reset by peer)) 22:19:55 --- quit: Sonarman ("good night") 22:53:32 --- join: Raystm2 (Rastm2@AC8B6773.ipt.aol.com) joined #forth 23:00:19 --- quit: Klaw` (Read error: 238 (Connection timed out)) 23:47:28 --- join: Serg_penguin (~Miranda@212.34.52.140) joined #forth 23:59:59 --- log: ended forth/04.10.31