00:00:00 --- log: started forth/06.08.15 01:19:45 --- quit: Quartus__ ("used jmIrc") 01:34:55 --- join: segher_ (n=segher@dslb-084-056-159-032.pools.arcor-ip.net) joined #forth 01:46:42 --- quit: segher (Read error: 110 (Connection timed out)) 01:57:17 --- join: slava (n=slava@CPE0080ad77a020-CM000e5cdfda14.cpe.net.cable.rogers.com) joined #forth 02:36:40 --- join: astecp (n=aspect@death.dissension.net) joined #forth 02:37:05 morning 02:37:25 factor checks the user's stack effect comments now. i think its one of the few stack-based languages to do so 02:37:59 well if you can code it, it can be done 02:41:16 --- quit: slava () 02:46:01 --- join: vatic (n=chatzill@pool-162-83-254-201.ny5030.east.verizon.net) joined #forth 03:55:57 --- join: Cheery (n=Cheery@a81-197-20-242.elisa-laajakaista.fi) joined #forth 04:16:22 Latest update: http://retroforth.net/paste/?id=130 04:17:14 --- join: nighty (n=nighty@66-163-28-100.ip.tor.radiant.net) joined #forth 04:30:35 wb 05:05:25 I wonder if I should tell about this here: http://evolutation.com/keowiki/ 05:15:49 --- join: PoppaVic (n=pete@0-1pool72-40.nas24.chicago4.il.us.da.qwest.net) joined #forth 06:18:51 --- join: Ray_work (n=Raystm2@199.227.227.26) joined #forth 06:35:25 Hi Quartus- I think I've isolated a condition that causes Quartus to reset on my TX... 06:36:45 re 06:37:28 my forth is executing but dumping core on cold, which is the first word to execute upon loading. woot 06:38:02 Quiznos: hehe - I presume that's NOT intentional? ;-) 06:38:44 true, but it's progress! 06:38:49 yep 06:38:54 it means that ``jmp cold'' works 06:38:55 lol 06:39:00 heh 06:39:18 umm, yeah - but what does it see 'cold' as? ;-) 06:40:11 _cold is the address of cfa for cold which would be (:) when i get to write it 06:41:17 is that what the dump is showing, or the prayer? ;-) 06:41:29 it _sounds_ like an indirect-jmp 06:41:31 the corefile 06:41:34 it's not 06:42:03 ahh, I see now.. It's an "asm" label.. NM 06:42:11 yes 06:42:28 I sorta' thought it was pseudocode, for a sec 06:42:34 sorry, no 06:42:57 _code is a label i put under the CODE declaration defining the header for cold 06:43:13 so, this is a direct-threaded vm? 06:43:15 fasm griped about `not defined' when assembling the jmp 06:43:16 no 06:43:19 dtc 06:44:04 no, I meant the forth "engine".. Obviously, it's embedding jmp and whatnot in the cfa fields? 06:44:28 Quartus: actually can't reproduce it on command, but it appears to be after I've used the web app (Blazer?) on the TX... 06:44:48 I only ask, because... It looks like the jmp _should_ be indirect, thru TOS 06:45:05 ok, next == `lodsd, jmp ax' 06:45:24 but i'm considering jmping through [esi] instead and skipping a register use 06:45:34 * PoppaVic hates trying to figure out asm opcodes 06:45:39 i love it 06:45:55 in c, it would be calling a point to a fun 06:45:59 *(fm)() 06:46:01 fn 06:46:02 Quiznos: only skip a step if no one will ever need _access_ to the info in the intermed. reg 06:46:07 right 06:46:16 yea, i'm pondering that point 06:46:44 i might stick with dtc cuz that's what i know 06:47:00 and jmping through [esi] would or might be too different for me 06:47:02 Quiznos: yeah.. Prob - to me - with "asm" is there are far too many variants and cpu opcodes. C simplifies this for me, regardless what the anti-c contingent in ##C say about it. 06:47:38 true, but that "too many" is/was the fault of Intel designers being lasy 06:47:58 plus i'm forthifying certain opcodes to make things easier to do 06:48:05 like the scas string opcodes 06:48:15 and the others 06:48:26 no, I meant of asm(platforms(cpu)) 06:48:36 yea, i understood 06:48:40 oh, and wrap THAT with variant() 06:48:47 k 06:56:53 --- join: nighty_ (n=nighty@66-163-28-100.ip.tor.radiant.net) joined #forth 06:57:04 re 06:57:17 ro? 06:57:46 rehi 06:57:49 hehe - I just had a guy gushing thanks and kudos on ol' cgisock/libcgisock ;-) 06:57:59 cool 06:58:28 yeah.. It's nice when the works can be used 06:58:43 yep absotively 07:02:39 --- join: virl (n=virl@chello062178085149.1.12.vie.surfer.at) joined #forth 07:02:51 virl 07:05:16 Quiznos 07:06:03 virl how are thins? 07:06:03 what's new, virl? 07:06:25 --- join: madwork (n=foo@derby.metrics.com) joined #forth 07:06:35 hiya mad 07:06:55 virl, woot with me: my forth executes and dumps core on the 2nd opcode :) 07:06:58 heh 07:07:35 hmm, which instruction set do you have? 07:07:40 x86 07:07:52 so you have an error? 07:07:57 a p3+ 07:08:01 it's just a coding thing 07:08:11 but it runs :) 07:08:18 ah ok 07:08:19 i like that about linux 07:08:25 i leaves evidence 07:08:27 it 07:18:31 --- quit: Ray_work ("User pushed the X - because it's Xtra, baby") 07:27:09 --- quit: PoppaVic ("Pulls the pin...") 07:28:45 --- join: PoppaVic (n=pete@0-1pool47-47.nas30.chicago4.il.us.da.qwest.net) joined #forth 07:30:55 Core dumping on the 2nd instruction is "running"? 07:31:03 for me it is ;) 07:31:11 it's progress 07:31:16 Do you know how to use gdb? 07:31:25 yes 07:31:27 k 07:31:33 but gdb doesnt do asm code rightly 07:31:36 I hate gdb. But sometimes it actually works. 07:31:38 no symbols 07:32:14 i need to make my forth self-debugging; gotta add the numeric picture and output words 07:32:15 You should be able to supply symbols. You may need to make some of them public in your asm sources, but gdb most certainly knows about symbols. 07:32:28 nah, i'll just make it self-debg 07:32:41 need to fix up type, dot and emit 07:32:53 Until your core works, that wouldn't seem to help much. 07:32:59 that too 07:33:22 i need to figer out what to do with esi since write() needs an arg in that reg 07:33:48 Probably the buffer address. 07:34:22 no, i know what goes in esi (the a goes to bx) but where to stash the IP in esi 07:34:50 how about on the stack? push esi ? 07:35:20 well, i cant recall at the moment why, but it's not that easy to stack IP 07:35:39 Quiznos: do you know about this? http://modest-proposals.com/Furball.htm 07:35:45 huh. 07:35:46 k 07:35:54 I haven't tried it, but it looks lintriguing... 07:36:05 intriguing 07:36:47 yea, debug.com ported to linux! lol i know it, i have it, thanks for reminding me bahahaha 07:36:56 "Worth learning how to load gdb and run a GPFing program just to get a BackTrace on the stack. For all other linux debugging see 'man printf'." 07:37:01 This is my philosophy. 07:37:20 k4jcw it's my nature to write really tight asm code. it'll just take me a few mins are thinking to get it right 07:37:30 k4jcw [post] heh 07:53:06 that's sorta' a cute url - I only read a para or two 08:14:47 heh.. I love confounding folks ;-) 08:21:51 --- quit: segher_ (Read error: 54 (Connection reset by peer)) 08:31:32 --- join: ianp (n=irc@littlescroll.com) joined #forth 08:31:39 --- join: segher_ (n=segher@dslb-084-056-157-062.pools.arcor-ip.net) joined #forth 08:35:04 --- quit: virl (Remote closed the connection) 09:59:48 has anyone seen F83 ported to linux? 10:06:58 Quiznos: no. 10:07:04 ok 10:07:07 too much intel 10:07:19 No reason WHY though 10:07:48 what do you mean by "too much intel?" 10:08:54 F83 was z80/intel based - can't recall it - basically, they rewrote the OS and "shell".. NOW, ask "why?" 10:09:25 --- quit: PoppaVic ("Pulls the pin...") 10:09:45 that makes no sense 10:15:21 --- quit: k4jcw (Remote closed the connection) 10:17:03 --- join: k4jcw (n=jcw@adsl-065-006-151-062.sip.asm.bellsouth.net) joined #forth 10:17:19 Yes, it makes no sense whatsoever. Like many things he says. 10:17:57 yea. afk 10:38:19 Quiznos: isn't Albert van der Horst's ciForth/lina essentially F83? 10:41:30 Quiznos: http://home.hccnet.nl/a.w.m.van.der.horst/ciforth.html 11:33:36 --- join: slava (n=slava@CPE0080ad77a020-CM000e5cdfda14.cpe.net.cable.rogers.com) joined #forth 11:36:20 --- quit: Cheery (Remote closed the connection) 11:39:19 --- join: Cheery (n=Cheery@a81-197-20-242.elisa-laajakaista.fi) joined #forth 12:00:12 --- quit: Cheery ("Download Gaim: http://gaim.sourceforge.net/") 12:25:44 --- quit: nighty (Read error: 113 (No route to host)) 12:25:51 --- quit: nighty_ ("Disappears in a puff of smoke") 12:27:07 --- join: nighty (n=nighty@66-163-28-100.ip.tor.radiant.net) joined #forth 12:31:19 --- quit: nighty ("Disappears in a puff of smoke") 12:31:56 --- join: nighty (n=nighty@66-163-28-100.ip.tor.radiant.net) joined #forth 12:47:23 --- join: sans (n=sans@ACCF4582.ipt.aol.com) joined #forth 12:47:35 hi all 12:57:02 --- quit: sans (Read error: 54 (Connection reset by peer)) 12:57:04 --- join: snoopy_1711 (i=snoopy_1@dslb-084-058-178-117.pools.arcor-ip.net) joined #forth 12:59:53 vatic [cforth] lemme check 13:00:17 vatic, hi. What's the condition? 13:05:12 --- quit: Snoopy42 (Read error: 145 (Connection timed out)) 13:05:17 --- nick: snoopy_1711 -> Snoopy42 13:11:47 vatic, Horst writes Fig/ISO model Forths, one of which runs on linux. thanks for the reminder. 13:27:25 Quartus: evaluation version (*blush*) seems to crash after I've used the TX web browser for a while... 13:27:39 crashes hard, needs to go thru another reset. 13:27:48 Very odd, vatic. I wonder what the browser is doing. 13:27:53 I have to delete Quartus and resinstall... 13:28:17 Quartus: I tried to run the browser for just a while, but it didn't crash. 13:28:31 All I can imagine is that the browser causes a reorganization of the storage heap -- but that shouldn't cause a crash. 13:28:51 Let me know your email, I can send you an unregistered registered copy of the PRC to try, see if you get the same issue. 13:28:56 Quartus, but I'll keep an eye on it. I think it's when I looking at web pages for an evening while the TV is on in the bedroom. 13:29:52 You may just want to try deleting the Quartus workspace with RsrcEdit, instead of reinstalling. 13:30:17 Quartus: I try that next time... 13:31:51 Quartus: MAF has been really instructive, thanks! :-) 13:32:14 Glad to hear. You might enjoy the RetroForth ANS layer I've been building, too. Same kind of thing but specific to an implementatoin. 13:32:35 If deleting the workspace works, it'd be possible to make a launcher to do that each time, or modify the kernel to do it. 13:32:44 Quartus: I've been watching the iterations. 13:32:47 Quartus Forth startup would take another half-second or so. 13:32:56 Quartus: roger on the launcher 13:36:36 --- join: AI_coder (n=AI@ip-209-124-242-76.dynamic.eatel.net) joined #forth 13:36:56 Quartus: so there's a guy in Finland that done a Forth for the PIC 18f... 13:37:10 I read that. Subroutine-threaded. 13:37:12 Quartus: beat me to it, I guess. 13:37:28 There's probably room for a direct-threaded one in that tiny environment. 13:37:53 Quartus: my thought was to try to move my work under the gforth-ec umbrella... 13:38:12 I was verbally abused by somebody from the gforth-ec umbrella many years ago. 13:38:25 Quartus: really? 13:38:44 Yes, saw I was building Quartus Forth (at the time PilotFORTH) and told me I should join them and together we'd rule the galaxy. 13:38:53 I declined, the individual got quite nasty. 13:39:22 Quartus: I found building from CVS some trouble. But maybe because I started with an OS X build... 13:39:36 Quartus: urgh... 13:39:52 I haven't checked in to see what gforth-ec is, or is up to, for quite awhile. 13:40:16 Quartus: they did a version for the Renesas r8c, which is what led me to the idea... 13:40:38 Quartus: but I wonder if gforth is too heavey duty for the PIC... 13:40:42 heavy 13:41:15 That'd be my initial assumption. 13:41:22 Quartus: the Renesas was a give-away in German Elektor magazine... 13:41:35 Neat. 13:41:55 Quartus: wish US magazine would give away chips... 13:42:03 Different market. 13:42:09 althogh that's pretty much what microChip does... 13:42:12 DIY isn't so prevalent over here. 13:42:24 --- join: nostromo (n=sgala@2002:5121:1fe9:1:230:65ff:fe26:fe5c) joined #forth 13:42:32 Quartus: I don't think I've paid for a microChip product yet. 13:42:45 Good deal :) 13:42:48 True on DIY... 13:43:15 Quartus: actually German friend taught me the joys of "sampling"... ;-) 13:43:33 Eating toothpicked sausages in the supermarket? 13:43:50 Quartus: toothpicked herring! ;-) 13:43:58 Matjes! 13:44:08 Heh. Those are the Europey choices. :) 13:44:42 No Matjes in Guelph? 13:44:55 Could be. Last time I was in Guelph it was 1993. 13:45:30 Quartus: I wass there in June for SoundaXis. Looked like a beef town, mostly... 13:46:03 Probably so. 14:05:35 --- join: Ray_work (n=Raystm2@199.227.227.26) joined #forth 14:05:49 --- quit: Ray_work (Remote closed the connection) 14:05:56 vatic did you see my reply to you earlier 14:17:01 Quiznos: I did. I'm a little hazy on the FIG <-> F83 relationship, but his work sticks to Derrick & Baker pretty closely... 14:20:13 Quiznos: there's also a version of ciForth written in GAS that Albert has... 14:59:14 Few more mods: http://retroforth.net/paste/?id=131 15:26:40 --- join: I440r (n=foo@24-177-235-246.dhcp.gnvl.sc.charter.com) joined #forth 15:27:10 --- part: I440r left #forth 15:27:14 --- join: I440r (n=foo@24-177-235-246.dhcp.gnvl.sc.charter.com) joined #forth 15:27:33 err the windows version of xchat is a pile of (^$%( 15:27:39 i dont even have a nicknames list lol 15:28:09 brb 15:28:10 --- quit: I440r (Client Quit) 15:28:49 --- join: I440r (n=foo@24-177-235-246.dhcp.gnvl.sc.charter.com) joined #forth 15:29:21 ok so are there any decent irc clients for windows ? 15:29:25 because im in windows lol 15:29:26 eek 15:29:32 mIRC. 15:29:33 mirc is not decent 15:29:35 hey I440r 15:29:38 Works for me. 15:29:40 hi slava :) 15:29:42 hydrairc is ok 15:29:46 mirc is NAGWARE 15:29:57 and xchat is time limited 15:29:57 * Quartus shrugs 15:30:05 I440r: factor now checks stack effect comments :) 15:30:12 lol 15:30:31 i dont think its the compilers job to babysit what the coder does :P 15:30:42 i found a bunch of typos in my code 15:30:48 misleading comments 15:35:24 yea my code needs some rework, the command line tail stuff doesnt work properly any more for shebanged scripts 15:35:24 grrr 15:35:48 --- mode: ChanServ set +o I440r 15:39:32 i believe i can save time by having the computer check stuff i'd otherwise have to check myself 15:39:51 You mean, like POSTPONE does. :) (waits for I440r for explode) 15:40:36 i suspect I440r just doesn't want to implement harder stuff :) 15:40:40 heh 15:40:46 That'll blow him up for sure! 15:41:36 postpone is an abomination :P 15:41:47 and im gona ban slava :P lol 15:41:55 You know, I440r, I know you have POSTPONE, but when you're moving between Forth implementations, it's a real advantage. You never know what words might be immediate in a given implementation. 15:42:23 im not a fan of trying to write "portable" code either :) 15:42:25 Depending on implementation choices, LEAVE might be immediate or not; likewise I and R> R> and friends. 15:42:39 For example. 15:42:50 I is an abdomination 15:42:51 so is J 15:43:01 but K is ok ??? :) 15:43:21 in fact i disagree with using immediates for control structures 15:43:23 i is the archetypal loop index variable going back to year 0, so I don't object to it. 15:44:10 slava, so you're a recursion-only kind of control-structure guy? 15:44:17 hi, i like higher order functions 15:44:26 passing code blocks on the stack 15:44:36 brb 15:46:46 Latest update, probably last for a bit: Neal Bridges 15:46:46 http://www.quartus.net Home of Quartus Forth for the Palm OS! 15:46:47 dang 15:46:51 I cannot paste today 15:47:06 http://retroforth.net/paste/?id=132 15:47:07 There :) 15:47:57 This update just reorders the code for readability. 15:54:34 --- mode: ChanServ set +o slava 15:58:46 --- join: segher (n=segher@dslb-084-056-147-125.pools.arcor-ip.net) joined #forth 16:06:55 --- quit: segher_ (Read error: 110 (Connection timed out)) 16:07:24 damn this machine is fast lol 16:13:30 --- join: virl (n=virl@chello062178085149.1.12.vie.surfer.at) joined #forth 16:23:05 I440r !! 16:23:16 hi q 16:23:22 howzit going 16:23:46 hi virl 16:23:47 vatic [fig/f83] Fig predates F83 by a few years and bridges the 70s and 80s decades. 16:23:53 I440r i'm well, how are you? 16:23:58 tired :) 16:24:10 I440r i'm lookin for a linux port of F83. got hint? 16:24:31 .oO latin mass on EWTN 16:24:43 hmmm that wouldnt be difficult to port but... erm... try isforth :) 16:24:51 heh coward :) 16:24:54 lol 16:25:15 i'm coding my own atm 16:25:25 gonna beat the panties off yours 16:25:26 :)~ 16:25:42 sure sure 16:25:45 why don't you code something for an existing forth instead? 16:25:56 cp isforth qforth <--- look mine is better than yours :) 16:25:57 heh 16:26:00 there are a million forths and no gui toolkits or web frameworks 16:26:02 lol 16:26:24 slava - just as soon as i get the X protocol figured out 16:26:32 slava bc i cant start in the middle; i have ... i MUST reinvent wheels (i changed my mind from yesterday) 16:26:42 :) 16:27:45 forth is all about "my wheel is better than your wheel" :) 16:27:51 pff i wish 16:28:12 in the theme of "name that tune" and "how many notes" 16:28:34 i can code that NEXT in 10 asm opcodes. 16:28:42 can anyone do better? 16:28:54 yes, we can just not use DTC :) 16:28:54 opcode includes its args 16:29:00 no limits 16:29:08 any tc will do 16:29:15 tc-method 16:29:23 STC doesn't have a NEXT, macro 16:29:36 it doesnt matter; how many lines can you do it in? 16:29:40 i can do it in 2 16:29:46 lodsd 16:29:48 jmp eax 16:29:49 done 16:29:51 wow, you dont know how the game do ya? :) 16:29:58 mine does :) 16:30:02 i can do it one line 16:30:21 b (r8),4 16:30:48 segher: do you use PowerMops? 16:30:49 16bit, jmp [si] or 32bit, jmp [esi] 16:30:59 segher: or is that not powerpc? 16:31:07 slava: no... that's this old system 6 forth, isn't it? 16:31:18 well, its old but still being updated 16:31:20 slava: oh maybe 16:31:33 sounds like it would be powerpc, heh 16:31:43 so no one but me kows of a f83 ported to 32bitters? 16:31:45 b (r8),4 isn't powerpc btw 16:31:50 what is it? 16:31:52 i want a f83 on linux 16:31:56 Quiznos: why? 16:32:00 F83 is a fixed 16-bit implementation. 16:32:01 slava: arm 16:32:06 it's what i remember 16:32:06 its 23 years old out of date :) 16:32:08 segher: ah 16:32:09 slava: probably not correct btw heh 16:32:20 dont discriminate against ancient bits 16:32:21 :) 16:32:26 no post-increment on jump insns 16:32:28 are you collecting old forths? 16:32:35 If you build a 32-bit F83, it's not F83 anymore. 16:32:43 i collect ancient and esoteric bits of all varieties 16:32:47 not just forths 16:33:04 ancient, esoteric and uniq 16:33:20 ancient and esoteric bits... mummy parts? 16:33:30 i need to make a gentoo ebuild for isforth :/ 16:33:32 two actually 16:33:34 Quartus prolaby, but it's still in the family. like linux is a unix-family memeber 16:33:44 segher yea :) 16:34:27 So what is it you're looking for, in that case? An F83 that somebody has made 32-bit for Linux, which means pretty much any standard or near-standard Forth for linux? 16:34:45 hopefully and true 16:35:04 So direct-threaded gforth. 16:35:39 i'd like to cross-compile an f83 16:35:45 hmm 16:35:50 hadnt thought of that 16:36:29 Or RetroForth with my ANS layer, if you don't care about the threading method. 16:37:13 i could go that route for boot-strapping 16:37:51 why don't you take retroforth for instance and improve it? 16:38:39 i'd have to fork() it and then fold it into my project which uses a Forth as a foundation 16:39:04 that's why i'm coding a new kernel 16:43:09 If you have a project that needs Forth as a foundation, pick a Forth and get on with it already. 16:43:42 there are no forth applications. every forth programmer codes their own implementation, then loses interest :) 16:43:42 i'm working on several different layers and concepts concurrently. 16:43:58 heh 16:44:05 Oh, so you're turining into PoppaVic. This must be the larval stage. 16:44:18 me or Quiznos ? 16:44:20 both could be true 16:44:20 no no 16:44:22 Not you, slava. :) 16:44:24 no no heh 16:44:45 yeah, concurrently working on several layers and concepts is a typical PoppaVic thing 16:44:48 well, you've got yer 'layers', and yer 'concepts', so you're starting down the road where you never, ever, ever produce any actual code that does anything. 16:44:57 i dint get it from him 16:45:01 next he'll start posting incomprehensible "notes" 16:45:08 no no 16:45:10 heh 16:45:17 and start talking about how he's overwhelmed by all of the autoshit, or something. 16:45:26 I was about to mention autoshit :) 16:45:31 pls, y'all know how i write 16:45:38 i couldnt write that way 16:45:48 go ask ##Linux 16:45:51 autoshit (noun) anything preventing PoppaVic from getting things done 16:45:57 there are a few that know my writing style 16:46:01 Quiznos, if you have something you want to build on top of a Forth, pick one that's already written by somebody who's at least as good at it as you ever will be, and start writing the thing you actually want to build. 16:46:04 slava heh 16:46:04 autoshit (verb) what PoppaVic does when on IRC 16:46:16 slava, heh 16:47:34 Quartus if i choose such a Forth kernel, thenI wont learn how they did; i need to write this kernel from scratch and add to it so that I learn. 16:47:44 you can study the source 16:47:47 just don't study gforth 16:47:53 sometimes that's not enuf slava 16:47:54 isforth is nice and clean, so is retro 16:47:59 k 16:48:16 your only saying taht cuz i gave you ops :P 16:48:26 heh 16:48:41 I440r: no, isforth is like the coolest linux forth now that you have your single stepper 16:48:52 :) 16:49:06 its not perfect tho :( 16:49:09 the debugger i mean 16:49:18 it needs some bugs ironing out 16:49:44 we need integrated help, an editor 16:50:17 thats on the todo list 16:50:20 the help i mean 16:51:27 A slightly newer version, more re-ordering for readability: http://retroforth.net/paste/?id=133 16:55:06 Quiznos: thnx... 16:55:47 vatic for what? 16:58:36 Quiznos: f83 history! 16:58:43 ah. yvw 16:59:06 fig, f79, f83, ansi, isforth. 16:59:08 :) 17:00:33 Hi guys. Poping in for a little break while packing to go. 17:00:48 Hi Raystm2. 17:00:50 re ray 17:00:57 See ya'll in a week if I don't find a live terminal somewhere. 17:01:03 why? 17:01:18 _vaCAtion_ 17:01:26 sweet, where ya goin? 17:01:29 Have fun, Raystm2! 17:01:33 leave the radios at home 17:01:34 home. 17:01:39 cool 17:01:44 thanks Quartus! :) 17:02:07 this will be the first time my fathers 10 childeren have ever been in one place. 17:02:16 children even. 17:02:17 cool 17:02:29 I'll meet two brothers. 17:02:36 They are my kids age. 17:02:41 17 and 15 17:03:05 This trip is 20 years in the makeing for me. 17:03:30 OH and today, I'm a full fledged needle stabing Diabetic. 17:03:52 Raystm2 there are naturopathic cures for that 17:03:53 i gtg zzz 17:03:56 nn 17:03:57 nite ppl 17:04:03 --- quit: I440r ("Leaving") 17:04:07 They finally tested me for diabeties after my foot wouldn't heal. 17:04:34 and? 17:04:35 and I lost another 15 pounds this last three months while infected. 17:04:42 Raystm2 you need to do a liver cleanse 17:04:45 i'm just 136 now. 17:04:57 * Raystm2 wants to go to China for the cure. 17:05:02 you dont need to 17:05:22 I know I don't need to, but I loved China the last time... 17:05:29 you know what i mean 17:05:40 Culture shock happened when I returned. 17:05:50 Those people really know how to live light. 17:05:51 besides, with google.cn, you might not find naturopathic info 17:05:52 :) 17:06:00 ah. 17:06:06 well, there is that. :) 17:06:10 heh 17:06:25 I don't know how to make the symbols. 17:06:38 crc is there a retro port yet? :) 17:06:53 * Raystm2 gives crc 5 minutes. 17:09:15 Raystm2: hey Ray, good trip! 17:09:35 thanks vatic! :) 17:09:41 see ya'll in a week. 17:09:54 leaving so soom? 17:09:56 I'm not sure I can handle being gone from irc very long. I'm hooked. 17:10:00 :) 17:10:06 yea 17:10:07 no actually Nan is still working . 17:10:12 k 17:10:18 EPRONOUN 17:10:23 ENOUN 17:10:25 :) 17:10:38 When she gets off, we'll do a few things then head out. 17:11:01 if you have sony lappy batteries from Dell, return them 17:11:06 if anyone 17:11:15 * Raystm2 notices words like EPRONOUN and ENOUN going over head. 17:11:20 heheh 17:11:22 ya 17:11:29 E for Error + NOUN 17:11:37 the Pro+ was mistake 17:11:42 sony's fault, dell takes the hit. 17:11:52 yep 17:12:11 hopfully sony is paying them back in the back-end of the deal. 17:12:32 Good thing this isn't christmas. 17:13:06 93 y.o. Pres Ford admitted to hosp, ostensibly for checkup 17:13:29 hmm. 17:13:42 i didnt hear the rest of the blurb 17:13:45 I hope he's okay. He was a good Pres, tho nobody noticed. 17:13:53 i think he is 17:14:00 i wont touch the other clause 17:14:01 :) 17:14:31 : 17:14:37 tht 17:15:05 yikes got to far away from the pick-up with the keyboard there. 17:16:10 see y'all later... Safe trip, Ray! 17:16:14 nn 17:16:16 --- quit: vatic ("*poof*") 17:16:30 --- join: ttuttle (n=tom@unaffiliated/ttuttle) joined #forth 17:16:35 --- part: ttuttle left #forth 17:16:35 Hi ttuttle. 17:18:41 bye ttuttle. 17:42:54 Raystm2: Type 1 or type 2 diabetes? 17:43:09 Raystm2 seriously, liver cleanse! 17:44:34 Raystm2 and vitamins and minerals daily, espec. a, b-complex, c, d-cal-mag-zinc, e, folic. 17:45:05 and a general complete supplament with those in the morning with coffee and prayer. 17:50:50 Right. Eat one page from the bible every morning. 17:51:03 you could do worse ;) 17:51:06 s/do/eat 17:53:35 http://godisimaginary.com/ 17:54:21 i dont think so, k4jcw 17:54:22 :) 17:55:09 http://www.msnbc.msn.com/id/12467604/from/ET/ You should also be careful about that praying stuff. You may get struck by lightning. 17:55:19 i dont pray for that :) 18:00:04 I find it hard to trust you guys. First you preach all this peace and love stuff, then you go off and start wars. 18:00:56 I like Stephen F Roberts quote: http://freelink.wildlink.com/quote_history.htm 18:00:57 k4jcw point of serious order; scripturally, wars are necesary, secondly, i didnt start any war. 18:01:26 nations get uppity and have to be rebuked; remember Germany? they tried evil TWICE! 18:01:27 You are a representative. Therefore, you are culpable. 18:02:01 no, i'm not. i dont call myself a "christian" too much evil has been done under taht moniker; i am a disciple of christ (the anointing of God) there's a big difference. 18:02:34 Except that 'Christian' means 'follower of the teachings of Christ'. 18:02:57 Quartus, I've heard the quote before, but not the history. Thanks. 18:03:19 as for the rest of what is going on now, if one doesnt know what the bible says regarding prophecy, then where does one get the gumption to comment regarding what God is or isnt doing? 18:03:37 "christian" does NOT mean "follower of teachings of christ" 18:04:02 what does it mean then? 18:04:03 eats KFC? 18:04:11 "christian" properly means "anointed" but modern use of the word going back centuries has corrupted the meaning. 18:04:27 The bible and various books contain enough material that you can match just about any situation in history at any point to claim that it "predicts" something. 18:04:38 "en christos" is the biblical greek phrase 18:04:51 in christ is the english rendering 18:04:53 The American Heritage® Dictionary of the English Language, Fourth Edition. Christian. n. 2. One who lives according to the teachings of Jesus. 18:05:23 i dont care what a modern dictionary says. i go by the original eastern greek text. 18:05:26 And how come Jesus is always portrayed as a white guy? He was in the Middle East. 18:05:40 k4jcw you're correct on that. 18:05:42 k4jcw, I especially like the red-haired blue-eyed Jesus in those paintings you find at garage sales. 18:05:49 heh 18:07:57 i'm done folks 18:07:59 nite 18:23:09 --- quit: k4jcw (Remote closed the connection) 18:23:57 --- quit: slava () 18:31:24 --- join: k4jcw (n=jcw@adsl-065-006-151-062.sip.asm.bellsouth.net) joined #forth 18:32:14 http://rafb.net/paste/results/n0VuZD99.html 18:32:33 Implementation of what I440r calls 'semaphores', based on a discussion with him. 18:36:58 They don't look atomic. I've not used Forths cooperative multi-tasking, but any preemptive system will break them. 18:38:45 They're not atomic. It's a reference implementation; you'd have to implement the internals differently if you wanted them to work in a multitasking environment. 18:39:03 Don't mistake them for traditional semaphores, despite the name. 18:40:40 They're multiple configurable chains of xts, where each chain can be selectively executed. 18:41:37 How would one use them in a practical application? 18:42:26 I believe I440r is using them to signal other parts of his system for things like window-resizing. 18:44:21 You can add or remove an xt to any chain at any time; that word will then be called in turn when that particular chain is triggered. I admit to not having a problem to solve by writing this, just implementing what I440r described to me. 18:45:11 I think semaphore is a bad name. An XT linked list (xtll?) would make more sense. 18:45:21 I'm not tickled by the naming either. 18:46:01 His initial comment was that he preferred this mechanism to catch/throw. Turns out it's apples and oranges, but it is an interesting mechanism and it might have some practical application. 18:47:21 chains of xts? so, it's a state machine 18:48:54 Maybe for some broad definition of state machine. When a chain is triggered, each word gets the chain-id passed to it in turn. 18:48:56 Seems like it would be optimizable by replacing -semaphore'ed words with the xt of nop, and eliminating the if. 18:48:59 Or creating a semanop. 18:49:14 k4jcw, I did that initially, but then it requires adding a new node if an xt is added back. 18:49:51 How about two xt's in the word, and they're swapped for +/- ? 18:50:19 k4jcw, possible also, but then more of pain to locate deactivated nodes. 18:50:28 It might make inserting or deleted a semaphore a little slower, but the runtime might be faster. 18:50:37 Depends on how often the chains get called. 18:50:41 vs. modified. 18:50:44 "a programmable conglomerate of state machines" heh -- still a state machine, just not necessarily a _finite_ state machine in total 18:51:10 segher, maybe. It doesn't feel like the state machines I've worked with in the past. 18:51:12 but hey, every computer program is, at some level ;-) 18:51:26 sure 18:51:28 k4jcw, sure, it could be optimized. Again, a reference implementation. It's the semantics of the words that matter. 18:52:40 cop out! 18:53:28 Heh. No, it really is just a reference implementation/ 18:54:09 I quite like the begin while while repeat else then construct. 18:54:47 yeah, those are cool 18:56:21 Such trickery is opaque to me. 18:57:01 it's not trickery, it's a fundamental construct -- like ... IF ... ELSE ... ELSE ... THEN 18:57:37 Have a look at find-semanode. It's a loop with two exit conditions. The first exit condition, reaching the end of the linked-list, falls through to the ELSE clause. The second exit condition, finding a matching node, falls through to immediately after the REPEAT. 18:58:54 It's a fair bit more awkard to write without using that construct. 19:00:00 At this point, it wouldn't have occurred to me to use else/then without an if. 19:00:02 it doesn't help at all in "normal" situations heh -- although it can be more readable, sometimes 19:00:36 k4jcw, in traditional implementations, while is : while postpone if swap ; 19:00:43 immediate 19:01:40 ANS requires it to have those semantics -- although 1 cs-roll instead of "swap" 19:01:55 Sure. But I haven't encountered any systems that have a separate control-flow stack. 19:02:10 I don't yet think of forth words at that level. I think of 'if' as ... 'if'. 19:02:27 <-- C programmer, at heat. 19:02:29 heart. 19:02:30 k4jcw, sure, if is if. But one level down, if is a conditonal forward-branch. 19:03:11 So is WHILE. 19:03:16 quartus: oh, almost all systems have the control-flow stuff on the data stack -- but a single item often is two or three cells, not just one 19:03:34 segher, the reason for doing that escapes me. Gforth uses THREE cells. Why? 19:03:45 structure checking 19:04:02 How does 3 cells aid in structure checking? 19:04:07 How does even 2 cells aid in it? 19:04:24 WHILE is actually what I meant. Yes, fundamentally, it's an IF. But when writing C, one never really has occasion to think of it as such. Especially because you can't use while() with else(). Which I have, at times, wanted. Also, for() with else(), so if the for() loop doesn't make a pass, the else() fires. 19:04:30 just put a unique "tag" on each item, to check its type ((un)conditional forward/backwards branch, case...of things, etc) 19:04:52 what exactly gforth uses its third cell for -- i don't know 19:04:53 segher, massive overkill. It's sufficient to check that it's an address that falls within the bounds of the current definition. 19:05:19 how will you catch IF ... AGAIN 19:06:08 [yes i know of ways to catch that, heh -- but it's way more complicated] 19:07:06 Easily done; when resolving again check the target cell to see that it doesn't have a placeholder value. 19:07:09 Can you give me a simple test word to see if while/else/then works in my interpreter? It should, but I'd like to check. 19:07:13 the ?PAIRS thing is nice and simple. and, it's classic, heh 19:07:34 k4, one test word? Hmm. 19:09:00 Have you tested the 'normal' combinations -- if/then, if/else/then, begin/again, begin/until, begin/while/repeat ? 19:09:08 Yes 19:09:19 : lll BEGIN dup 0>= WHILE dup . dup 10 < WHILE 1+ REPEAT EXIT ELSE ." negative" THEN ; 19:09:25 : foo if 1 . else 2 . else 3 . then ; 19:09:33 erm, not EXIT but drop 19:09:47 and you want a drop in that last branch too 19:09:59 so put it after the THEN and just remove the EXIT 19:10:01 (0,0) > : foo if 1 . else 2 . else 3 . then ; 19:10:02 (0,0) > foo 19:10:02 --> 0x8063ac8 (?branch) 19:10:02 --> 0x8066458 (foo) 19:10:02 Stack underflow 19:10:08 It would appear that I have a checking issue. 19:10:10 : lll BEGIN dup 0>= WHILE dup . dup 10 < WHILE 1+ REPEAT ELSE ." negative" THEN drop ; 19:10:11 test it with 0 foo or 1 foo 19:10:19 ah 19:10:43 --- quit: uiuiuiu (Remote closed the connection) 19:10:44 0 foo produces 2, 1 foo produces 1 3. 19:10:45 --- join: uiuiuiu (i=ian@dslb-084-056-226-216.pools.arcor-ip.net) joined #forth 19:10:50 k4jcw, so that bit works. 19:10:58 good 19:11:12 test mine with both positive and negative inputs 19:11:22 k 19:11:31 I'll bet he hasn't got 0>= 19:11:41 I bet I can add it in 60 seconds. 19:11:45 : o>= 0< 0= ; 19:13:40 0 lll produces 0 .. 10, -1 produces "negative" 19:13:51 So that works too. 19:13:59 and 5 lll ? 19:14:09 5 .. 10 19:14:14 good good 19:14:19 --- join: Zarutian (n=Zarutian@194-144-84-110.du.xdsl.is) joined #forth 19:14:22 looks like you have it all working :-) 19:14:53 You can laugh at me if you like, but I find it quicker to add a word in C than define one. I very much think in C for programming. Unless I'm writing assembly. 19:14:55 k4jcw, that's the beautiful thing about the Forth conditionals, they can be reorganized into any suitable form. 19:15:03 I still have to think really hard about stack issues in Forth. 19:15:12 k4jcw, that's understandable, you're new at it. 19:15:25 Yea. 19:15:28 you'll learn 19:15:40 It's necessary to actually practice. 19:16:01 Or rather, inexperienced. I've done more with modifying or writing Forth interpreters than writing Forth code. 19:16:05 I still practice. The RetroForth ANS layer is practice. 19:16:17 also write application code in Forth -- it's hard at first, but after a few days / weeks you'll suddenly "get it", and you can't go easily back to C anymore even ;-) 19:16:21 Like completely re-writing eForth for the 8051 back in '90 19:16:31 Yes, I've often said that writing a Forth and writing Forth are two different things. 19:16:37 yeah 19:17:02 I think the biggest thing is just managing the stack. With C, if I need an extra parameter, I just toss it in the list. In Forth, that almost always seems to mean a complete rewrite of the word. 19:17:14 if you're writing _in_ Forth, you'll often find the language "lacking" in some regard. it just means you need to build another building block :-) 19:18:14 k4jcw: it mostly means your original word wasn't factored nicely. if it was, you can easily add the new version 19:18:46 k4jcw, I agree, that means you're not factoring. 19:19:16 C encourages the writing of huge functions with many parameters. 19:19:20 Forth doesn't. 19:19:44 Here's my latest RetroForth ANS layer, by the way: http://pastebin.ca/133743 19:20:01 I don't know that C encourages that. It certainly doesn't prevent it. It's very rare that functions I write ever require more than 4 parameters, and even 4 is somewhat unusual. 19:20:16 quartus: for some string thingies you need to juggle many parameters, sigh :-( 19:20:22 k4jcw, that says more about your personal programming style than it does about C. 19:20:43 segher, you find that to be true? I've discovered I actually need very few string operators to get the job done. 19:20:58 i'm mostly talking about string concat here 19:21:08 Heh. I solved that problem. 19:21:08 everything else is simple :-) 19:21:14 "this" "that" + . 19:21:16 thisthat 19:21:29 segher, for anything fancy I'd build a little string stack. 19:21:31 you use automatically allocated strings 19:21:44 quartus: yeah, thinking about doing just that 19:21:56 not really a stack, but hey 19:21:59 I treat strings as a native type. 19:22:06 Along with floats, and integers. 19:22:20 sure, that can work -- in a non-standard implementation 19:22:39 or, not non-standard -- just an extension, an extra string type 19:22:57 ...and i already have four string types, heh 19:23:17 I used to think I needed to write all kinds of string operators in Forth, until one day I realized I didn't. It's all in how you decompose the problem at hand. 19:23:23 Mine is non-standard. By design. It's a TIL for test scripts. 19:23:41 It's very much Forth-like, but not-Forth, the same way Factor is not-Forth. 19:23:44 quartus: sure, i need _some_ form of concat though ;-) 19:24:17 segher, I assume you're talking about dynamic strings of some kind. 19:24:29 i think i can reuse the string buffers i have for interpret-mode S" 19:24:44 not really 19:25:05 for that S" , i have some preallocated buffers and i just use them round-robin 19:25:14 If it's just simple strings, place and append do the trick. Build the concatenated string at HERE. 19:25:17 can't use too many at once, but hey :-) 19:25:37 can't do that 19:25:38 http://rafb.net/paste/results/ISPq1J57.html This is an example. It's probably not factored enough, but I really had to think my way through the stack. 19:26:03 space at HERE is already used 19:26:08 k4jcw, what does that word do? Jeepers. It's huge. 19:26:15 but could use the same idea at HERE + 400 or such 19:26:31 Builds a packet into a buffer for sending. 19:26:33 segher, sure, wherever is suitable. 19:26:40 k4jcw, that's certainly not factored. 19:26:59 Each line is basically a single operation. 19:26:59 You want to aim for short words. 19:27:30 wow this sure does a lot 19:27:40 It's 25 lines long. Even taken as each line as its own idiom, which I'd dispute, it needs factoring badly. 19:27:48 Right. Offhand, I don't see a significant way to shorten it that makes much difference. 19:28:02 What's all the .m and .i stuff mean? 19:28:11 mptr's vs integers. 19:28:23 first, put that loop into its own word 19:28:24 mptrs are a type, that point to memory that was allocated with malloc(). 19:28:31 I agree the loop could be moved out. 19:29:15 And this builds at HERE? Is that what all the c, etc. do in your system? 19:29:24 Yes. 19:29:46 But I don't want HERE to grow indefinitely, so I reset HERE to what it was at the start. 19:29:46 swap m@++ c, swap 1- is over c@ c, 1 /string 19:29:48 I'd help you factor it, but I'm confused -- the stack diagram makes no mention of HERE. 19:30:05 or m@ , not c@ , i guess 19:30:10 Because HERE remains unchanged at the end. 19:30:43 What is m@++ ? 19:31:09 Fetchs a byte at m, increments m. 19:31:09 dup c, >>8 c, <== factor this 19:31:31 *m++, if it were C. 19:32:01 quartus: C@+ it sounds like ;-) 19:32:08 right 19:32:29 segher, to what? A single word, like 'store16'? 19:32:32 0xff xor c, is invert c, 19:32:41 2c, 19:32:48 erm 19:32:49 w, 19:32:53 w,-le 19:32:53 I don't have invert. Easy to add. 19:33:07 so add it -- it's a nice factor :-) 19:33:31 k4jcw, right at the outset, your word does at least four things: builds a header, copies in a body, calculates a CRC, and copies the result to a target address. 19:33:34 So there's four factors. 19:34:03 everywhere it starts with R@ should be a factor ;-) 19:34:15 good rule of thumb, that 19:35:16 Also 'generic-command-w/-buffer' is a horrifying name. :) 19:35:42 quartus: : abs dup negate max ; 19:35:57 segher -- that has a conditional inherent in it. 19:36:04 oh wait, you define max later :-) 19:36:12 nah, can do max branchless 19:36:18 just like abs, really 19:36:19 You can, but it's ugly on most architectures. 19:36:22 You want that name to be a little longer and more descriptive? :) 19:36:36 So I stick with the branchless abs. That one is the best I could cobble up. 19:36:56 k4jcw, it just needs to be a name that doesn't make the baby Jesus cry. 19:37:04 i always liked the way cmforth does min and max :-) 19:37:20 I don't remember them, segher. The ones in that file crc wrote. 19:37:45 let me look it up, it's tricky :-) 19:41:40 : max 2dup < IF BEGIN swap drop ; : min 2dup < UNTIL THEN drop ; 19:41:44 [ansified] 19:42:00 sort of ansified, depends on a total absence of control-structure checking. 19:42:05 sure 19:42:07 And it's filled with branches. :) 19:42:11 but cool :-) 19:42:36 just the same as two ... IF ... THEN constructs 19:42:53 The only thing it gives you is a slightly smaller code footprint. 19:43:15 nah, the sheer beauty :-) 19:43:25 I don't know, you could argue the ugly in that one. ;) 19:43:46 yeah yeah 19:44:07 it's a fun trick, okay? :-) 19:44:45 Dependencies up the wazoo. Headers in a separate space, no control-structure checks. Not to mention the completely non-intuitive use of looping words in the definition of a simple comparator. 19:45:41 Also the ; has to work despite there being whatever BEGIN leaves on the stack. 19:46:33 So I'll just assume that Chuck was drinking from a coffee pot that hadn't been recently cleaned, and abandon that clever idea. :) 19:47:18 Interestingly, I already had w, and was failing to use it. 19:47:47 : doz 2dup - >r < r> and ; : min tuck doz + ; : max over -rot doz - ; 19:47:49 k4jcw, to factor it's necessary to keep asking 'what does this word do'? If it's more than one thing, factor. 19:48:05 what's ( a b -- a a b ) normally called? 19:48:10 segher, I see you've been reading Hacker's Delight. :) 19:48:29 quartus: no, some cpu's actually have a DOZ insn :-) 19:48:33 segher, I call it over swap -- don't know that there's a common-usage name. 19:48:35 eh? 19:48:46 and i used to use it. powerpc doesn't anymore though :-( 19:48:46 Never heard that on ANY of the archs I've worked on. 19:48:52 difference-or-zero 19:48:57 mmix has it 19:49:00 POWER did 19:49:05 alpha does, i think 19:49:39 doz ( a b -- a-b if negative | 0 ) 19:49:41 I've worked on a lot of CPUs, but not alphas nor PPCs. Almost had a project that would use a PPC, but the client decided to go x86. 19:49:57 their loss :-) 19:50:33 One of my favorite instructions is on the CDC Cyber processors. Count number of '1' bits in word. 19:50:45 Added at the the request of the Atomic Energy Commission. 19:51:01 If you're not afraid of -rot (I see you use it in max) : doz 2dup - -rot < and ; 19:51:03 powerpc still has fsel -- returns one of two inputs, depending if a third input's sign bit 19:51:18 popcount. many cpu's have that. 19:51:38 "many"? I don't think so. 19:51:42 "some"? maybe. 19:51:59 alpha, ppc, arm, many more 19:52:13 Unless it was added in the Pentium 4 and up, Intel didn't. None of the microcontrollers do. 19:52:19 not every arm, not every ppc, okay 19:52:31 m16 has it i believe 19:52:37 It's actually fairly expensive, as silicon goes. 19:52:37 m16c 19:53:29 depends -- you can structure it together with your rotate and add units into one 19:54:07 but that depens a lot on the microarchitecture of course 19:54:25 extremely useful instruction for some things though 19:54:30 indeed. 19:55:07 just like cntlz 19:55:30 count-leading-zeroes 19:56:06 Ironically, both that and popcount are very non-RISC instructions. 19:56:42 but strangely, most risc archs have those kind of instructions, and most cisc don't 19:56:53 go figure. 19:57:17 they're very useful for reducing data-dependent conditional branches 19:57:55 And certain types of simulations, including nuclear weapons modeling and biological research. 19:58:03 something that was extremely important for high-frequency not-all-that-much-out-of-order risc machines 19:59:12 : 0= cntlz 5 rshift negate ; \ 32-bit machine 19:59:25 many more applications :-) 20:00:47 As near as I can tell, that's always going to indicate != 0. 20:01:03 count leading zeros returns a number between 0 and 32, right? 20:01:16 cntlz returns < 20 for all non-zero numbers, and 20 for zero 20:01:16 Shifting 32 5 bits left will result in a 0. 20:01:29 Ah. 20:01:31 rshift doesn't shift left hehe 20:01:39 right, not left. 20:01:41 That was a typo. 20:01:56 I see where my mistake in that was. 20:02:30 for c-style "== 0" you don't need the negate even. quite useful :-) 20:05:23 It's curious. I factor fairly heavily in C, and more so in assembly. That same routine in assembly is about 30 instructions, which I consider a very reasonable length routine. I usually avoid C or assembly over 50 lines, since that's one page on my display. 20:05:54 But the Forth stuff doesn't factor as quickly for me, partially because of the stack manipulations, and partly because of my lack experience. 20:06:18 k4jcw, a very crude re-factoring (I can't test any of this here, obviously, but this should give you an idea) 20:06:18 http://rafb.net/paste/results/spxz2624.html 20:06:30 My efforts suggest a better stack order might be ( buffer.m command.m length.i ) 20:07:12 header, is probably better factored into a word that takes a parameter or two that the header contains. 20:08:02 C over 20 lines is way too big already 20:08:05 Oh, there's a bug, I missed an r@ that crept into a factor. Anyway it's just a rough-sketch. 20:08:40 buffer should generally come last 20:08:47 I like it. 20:08:54 I'll try that tomorrow or the next day. 20:08:58 I don't know, buffer.m is just shoved aside and used last, so. 20:09:03 k4jcw, you'll need to re-write that, it won't run as writ. 20:09:27 C over 20 lines is not too big. It depends very much on whitespace style and if you're a pervert and cuddle your braces. 20:09:39 Yah, it's a reference implementation :) 20:09:41 just start the def with a -rot if the implementation likes that -- param order should be nice'n'natural for the caller, not for the word itself 20:09:51 k4jcw, no -- reference implementations work. :) 20:09:55 heh 20:10:09 segher, maybe. I haven't ever used this word. 20:10:24 sure 20:10:38 Anyway, perhaps you get the idea, k4jcw -- figure out what the word does, chop it into successivly tinier pieces. 20:10:50 i said _generally_ -- places to put output are normally the last parameter. generally speaking 20:11:01 Seven to ten Forth 'phrases' is a rough target for as big as you want to let a word get. 20:11:29 you shouldn't have to refactor newly written code btw -- design it as small factors already 20:11:29 I like rules of thumb like that. 20:11:50 idiomatic phrases, that is. Hard-core purists will say that no word should run over ten words, but that's not always easy to write or read. 20:12:27 for instance, although globals are to be shied away from, '0 variable !' is a phrase. 'variable off' is a phrase. 'variable @' is a phrase. 20:12:33 yeah, sometimes there's no point in factoring 20:12:49 substitute x or other symbol for 'variable' there. 20:13:16 'dup .' is a phrase. Etc. 20:13:37 well they don't have to be global -- many systems implement them using USER for example 20:13:55 I mean in the general sense of memory variables, segher. 20:14:18 k4jcw, ideally you'll find some of your factors have applicability elsewhere. 20:14:49 quartus: but variables are very useful for some things 20:15:15 segher, I didn't say they aren't. Using them to parameter pass instead of the stack is usually the wrong thing to do, though. 20:15:28 yeah sure 20:15:55 "many uses of variables are bad style in forth" 20:16:00 Right. 20:16:13 And you can Fortran in any language. 20:16:19 er, write Fortran. 20:16:28 not really -- you can't in C :-) 20:16:53 k4jcw, once you factor down, each factor should be able to be inspected visually and determined to be working. The idea is that each piece of code is small enough and simple enough to ascertain that it's without fault. 20:16:55 It's an expression, meaning you can write shitty code in any language, and make it look like bad Fortran., 20:18:32 I'll have to think about that, Quartus. Because I can read C and assembly so easily, it's not hard for me to do that with larger programs. Perhaps I just consider my experience naturally extensible to Forth (how wrong I may be). 20:18:38 _bad_ fortran, okay 20:19:00 Many factors can be tested interactively, as well, and it's trivial to write an inline unit test for a small factor. 20:19:15 you can also *actually* *completely* test every factor, way easier than testing the bigger part 20:19:23 yeah 20:19:39 write _and immediately test_ your code interactively 20:19:42 k4jcw, I can read long code too. And write it. And debug it. It's just painful. 20:19:53 Damn hard when you're dealing with real-time serial data. 20:20:18 It's often more effort to fake some data than just to test it within the context of the whole system. 20:20:18 k4jcw, your factors don't need to know where their data is coming from. 20:20:30 They need to know *when* it's coming from. 20:20:50 k4jcw, you can still factor and test factors whether or not you do an overall test with live data afterward. 20:21:03 almost all of the words shouldn't give a shit about timing -- if they do, it's bad design 20:22:07 Gotta run. Wife's home from her ladies night out, and we've got to take out the dogs. 20:22:11 Thanks again for the advice. 20:22:14 Sure. 20:22:43 cya 23:17:31 --- quit: Raystm2 ("Should have paid the bill.") 23:42:54 --- quit: nostromo (Read error: 60 (Operation timed out)) 23:59:59 --- log: ended forth/06.08.15