00:00:00 --- log: started forth/12.06.09 00:22:12 fantazo: I was pretending I'd screwed up a parser and thus output "Forth" instead of "honk". 00:22:17 Stupid joke, I know. 00:22:42 "Sau," I thought, was German for "sow"? 00:24:45 --- join: I440r (~zhiming@213.sub-166-249-129.myvzw.com) joined #forth 00:24:45 --- mode: ChanServ set +o I440r 00:33:19 --- quit: I440r (Ping timeout: 245 seconds) 00:56:15 ttmrichter, both is true. 00:59:46 --- join: I440r (~zhiming@9.sub-166-249-130.myvzw.com) joined #forth 00:59:46 --- mode: ChanServ set +o I440r 01:08:26 --- quit: I440r (Ping timeout: 245 seconds) 01:34:47 --- join: I440r (~zhiming@186.sub-166-249-128.myvzw.com) joined #forth 01:34:47 --- mode: ChanServ set +o I440r 01:44:01 --- quit: I440r (Ping timeout: 256 seconds) 02:03:26 --- quit: DGASAU (Remote host closed the connection) 02:06:47 --- join: DGASAU (~user@91.218.144.129) joined #forth 02:06:47 --- mode: ChanServ set +v DGASAU 02:09:51 --- join: I440r (~zhiming@186.sub-166-249-128.myvzw.com) joined #forth 02:09:51 --- mode: ChanServ set +o I440r 02:18:49 --- quit: I440r (Ping timeout: 252 seconds) 02:45:14 --- join: I440r (~zhiming@166.249.130.68) joined #forth 02:45:14 --- mode: ChanServ set +o I440r 02:53:55 --- quit: I440r (Ping timeout: 265 seconds) 03:06:23 --- quit: DaDaDOSPrompt (Quit: Leaving) 03:19:51 --- join: I440r (~zhiming@98.sub-166-249-128.myvzw.com) joined #forth 03:19:51 --- mode: ChanServ set +o I440r 03:25:11 --- quit: ttmrichter (Quit: Leaving) 03:28:43 --- quit: I440r (Ping timeout: 265 seconds) 03:34:34 --- quit: DGASAU (Remote host closed the connection) 03:35:14 --- join: DGASAU (~user@91.218.144.129) joined #forth 03:35:14 --- mode: ChanServ set +v DGASAU 03:54:46 --- join: I440r (~zhiming@189.sub-166-249-131.myvzw.com) joined #forth 03:54:46 --- mode: ChanServ set +o I440r 04:04:00 --- quit: I440r (Ping timeout: 265 seconds) 04:29:42 --- join: I440r (~zhiming@106.sub-166-249-129.myvzw.com) joined #forth 04:29:42 --- mode: ChanServ set +o I440r 04:38:52 --- quit: I440r (Ping timeout: 260 seconds) 05:01:11 --- quit: fantazo (Remote host closed the connection) 05:04:43 --- join: I440r (~zhiming@232.sub-166-249-132.myvzw.com) joined #forth 05:04:43 --- mode: ChanServ set +o I440r 05:13:33 --- quit: I440r (Ping timeout: 244 seconds) 05:39:48 --- join: I440r (~zhiming@181.sub-166-249-131.myvzw.com) joined #forth 05:39:49 --- mode: ChanServ set +o I440r 05:48:43 --- quit: I440r (Ping timeout: 248 seconds) 05:56:21 --- quit: phirsch (Ping timeout: 245 seconds) 06:04:05 --- join: phirsch (~phirsch@xdsl-89-0-155-103.netcologne.de) joined #forth 06:04:09 --- mode: ChanServ set +v phirsch 06:14:43 --- join: I440r (~zhiming@232.sub-166-249-132.myvzw.com) joined #forth 06:14:43 --- mode: ChanServ set +o I440r 06:23:49 --- quit: I440r (Ping timeout: 244 seconds) 06:28:43 --- join: MayDaniel (~MayDaniel@unaffiliated/maydaniel) joined #forth 06:28:43 --- mode: ChanServ set +v MayDaniel 06:49:36 --- join: nighty^ (~nighty@69-165-220-105.dsl.teksavvy.com) joined #forth 06:49:37 --- mode: ChanServ set +v nighty^ 06:49:47 --- join: I440r (~zhiming@106.sub-166-249-129.myvzw.com) joined #forth 06:49:47 --- mode: ChanServ set +o I440r 06:54:18 --- join: ttmrichter (~ttmrichte@61.184.206.221) joined #forth 06:54:18 --- mode: ChanServ set +v ttmrichter 06:57:31 --- quit: I440r (Ping timeout: 265 seconds) 07:12:50 --- join: I440r (~zhiming@127.sub-166-249-133.myvzw.com) joined #forth 07:12:50 --- mode: ChanServ set +o I440r 07:22:09 --- join: SplinterOfChaos (~soc@cblmdm24-52-84-142.buckeyecom.net) joined #forth 07:22:09 --- mode: ChanServ set +v SplinterOfChaos 07:35:25 --- quit: I440r (Ping timeout: 245 seconds) 07:35:49 --- join: RodgerTheGreat (~RodgerThe@71-13-215-128.dhcp.mrqt.mi.charter.com) joined #forth 07:35:49 --- mode: ChanServ set +v RodgerTheGreat 08:23:47 --- quit: MayDaniel (Read error: Connection reset by peer) 08:53:56 --- quit: SplinterOfChaos (Quit: Leaving) 08:55:16 --- join: SplinterOfChaos (~soc@cblmdm24-52-84-142.buckeyecom.net) joined #forth 08:55:17 --- mode: ChanServ set +v SplinterOfChaos 09:07:49 --- quit: ttmrichter (Quit: Leaving) 09:43:24 --- join: ASau` (~user@176.14.240.113) joined #forth 09:43:24 --- mode: ChanServ set +v ASau` 09:45:43 --- join: Onionnion (~ryan@adsl-76-230-151-120.dsl.milwwi.sbcglobal.net) joined #forth 09:45:44 --- mode: ChanServ set +v Onionnion 09:46:53 --- quit: ASau (Ping timeout: 252 seconds) 10:57:21 --- join: fantazo (~fantazo@91.119.75.149) joined #forth 10:57:21 --- mode: ChanServ set +v fantazo 11:08:59 --- join: _spt_ (~in@host-92-4-58-160.as43234.net) joined #forth 11:09:08 --- quit: _spt_ (Changing host) 11:09:08 --- join: _spt_ (~in@unaffiliated/-spt-/x-5624824) joined #forth 11:09:08 --- mode: ChanServ set +v _spt_ 11:46:50 --- join: Monevii (~Monevii@adsl-64-237-234-175.prtc.net) joined #forth 11:46:50 --- mode: ChanServ set +v Monevii 11:46:57 --- join: Kumul (~Kumul@adsl-64-237-234-175.prtc.net) joined #forth 11:46:57 --- mode: ChanServ set +v Kumul 12:28:27 --- join: MayDaniel (~MayDaniel@unaffiliated/maydaniel) joined #forth 12:28:27 --- mode: ChanServ set +v MayDaniel 12:33:10 --- quit: MayDaniel (Read error: Connection reset by peer) 12:37:13 --- part: _spt_ left #forth 14:05:16 --- quit: Onionnion (Ping timeout: 265 seconds) 14:16:39 --- join: Onionnion (~ryan@adsl-76-230-209-91.dsl.milwwi.sbcglobal.net) joined #forth 14:16:39 --- mode: ChanServ set +v Onionnion 15:12:39 --- join: black_13 (425ad9a8@gateway/web/freenode/ip.66.90.217.168) joined #forth 15:12:39 --- mode: ChanServ set +v black_13 15:12:59 anyone home 15:25:44 I am 15:32:23 what's up, black_13? 15:32:56 RodgerTheGreat: i had some questions about forth or more about what it takes to make a forth 15:33:05 I might be able to help 15:33:23 I'm not expert but I've written some forth compilers and used the language a fair bit 15:33:32 i found a great forth system at http://www.math.uiuc.edu/~gfrancis/illimath/audible/vowels/bbn.C 15:33:37 this thing is wonderfull 15:33:44 its small! 15:33:52 nice 15:34:12 that looks pretty compact 15:34:18 and it works! 15:34:38 i compiled it using vs 2010 15:34:44 with almost no change 15:34:55 i was able to define new words 15:35:12 for example ": square DUP + ;" 15:35:33 I think you mean : square dup * ; 15:35:39 then run "2 DUP ." gives "4 ok" 15:36:04 but yeah, that sounds like it's working 15:36:07 you would think that but 15:36:23 the intrisic words like dup are uppercase 15:36:41 however there are some things i dont understand like nest or unnest 15:36:55 my main point was that to square something you multiply it by itself, not add it to itself 15:37:40 yeah that would be ": square DUP *;" 15:37:53 and be careful with your whitespace 15:38:16 sorry it would be ": square DUP * ;" 15:38:25 there you go 15:38:39 so a couple of things 15:38:55 so mainly you want to know how to learn about what words do? 15:39:04 you read my mind 15:39:14 and how "threading works" 15:39:29 the nice thing about such a small system is you can understand it 15:39:33 one of the first places I often go is the manual for GForth, which is a fairly well-documented ANS standard forth: http://www.complang.tuwien.ac.at/forth/gforth/Docs-html/Word-Index.html#Word-Index 15:39:50 when you say threading, do you mean as in "threaded code"? 15:39:52 and then i could put micro controller 15:40:21 i understand that if do the following "1 1 + ." 15:40:30 i understand what happens when that is 15:40:32 done 15:40:55 1 1 are not in the dictionary and are placed on the parameter stack 15:41:15 "+" is in the well know dictionary and so is "." 15:41:19 they aren't in the dictionary and they parse as a number 15:41:26 exactly 15:41:27 yes 15:42:19 if i was given an assignment in junior level comp science class on how to come up with stack machine calculator 15:42:21 i could 15:43:07 i would probably write stack that was an array of stucts and vector of functions mapped to character array 15:43:21 essentiall i could figure out how make really nice calculator 15:43:36 but the creation of new words is beyond me. 15:44:19 however i will look at the link you sent 15:44:35 have you had a look at Starting Forth? http://www.forth.com/starting-forth/ 15:44:41 it's a really good introductory text 15:45:15 I think if you learn about a few words like HERE, ALLOT and , (COMMA) understanding the innards of : will be easier 15:45:37 ok 15:45:53 yeah i have been reading the starting forth text 15:45:55 a dead tree copy is nice to have if you think you're really into learning about Forth, but the online edition is great too 15:46:05 inbtween working 15:46:47 chapter 9 goes into a great deal of detail about how the dictionary works and new words are created 15:46:50 i really think that forth could be usefull on small systems the code that put in the link compiles to 26k release 15:47:17 the precise implementation may be different in that C code you linked, but the basic principles are probably similar 15:47:28 if i could get it to run on an msp430 or stellaris machine that would be fan frickin tastic 15:47:57 I don't know as much about forth on microcontrollers, but I have heard it works out really spiffy 15:48:23 I do know that many MSP430s have *really* restricted flash and ram space 15:48:56 the one thats that i have have about 96k 15:49:09 oh yeah, that should be plenty 15:49:45 I was imagining something like the chips that come with the Launchpad dev kit that have 2k flash 15:49:47 own thing i am curious about is word size that is 32 versus 16 15:50:13 usually forth implementations have a word called "CELL" which gives you the size of a word on the system 15:50:14 oops you right yeah the lauchpad is SMALL 15:51:11 fitting forth in 2k would be a challenge, but it all depends on what you're trying to do with it. An interactive system would be really tight, but if you just used a target compiler it could still work well 15:51:27 what assembly written forths are there? 15:51:40 JonesForth is probably the best known one 15:52:10 i was leaning to something that could host an interpreter 15:52:48 well, 96k is plenty of rom space. If you have at least a few k of ram you should be good 15:53:03 that would be the stellaris chips 15:53:08 i have a few of those 15:53:15 or the arduino 15:53:43 i will look at the links your provided 15:54:12 here's something like a Forth that runs on an arduino: https://github.com/lpereira/finf 15:54:41 i saw that it was assembly based? 15:55:36 if you check the source on that it appears to be written in arduino C 15:56:02 i dont see the link there for the sourcde 15:56:39 https://github.com/lpereira/finf/blob/master/finf/finf.pde 15:56:47 oops sorry thats write 15:56:55 or right 15:57:27 thanks! 15:58:13 wow i had seen that before and thought that was a hex file 15:58:21 snorted and moved on 15:58:31 that is small and small is good 15:58:48 not nearly as compact as BBN.C, but hey 15:59:09 still 16:00:27 i had seen another interpreter called "wren" that used similar ideas but had used the __attribute__((packed)); this would not compile on visual studio at all 16:00:44 its gcc only if im right 16:04:11 ALLOT seems to take part in allocating memory 16:04:19 yes 16:04:35 have you heard of "nest" and "unnest" 16:04:35 it's sort of the raw word that allocates some number of bytes 16:04:55 I'm not familiar with those names 16:05:23 yeah doing a search in the forth books does not bring up anything 16:05:41 they are peculiarities of bbn.C forth 16:11:09 whats the paster for this channel 16:12:21 there isnt! 16:12:42 sometimes I use hastebin.com, but they don't do forth syntax highlighting. :/ 16:12:54 usually it assumes I'm using AVR assembly or something 16:13:57 so i wonder if this this struct that is the "word": http://pastebin.com/s7HGAurf 16:15:26 why dont you use factor's? http://paste.factorcode.org/new-paste 16:15:31 my guess would be that struct is what precedes the body of a word 16:17:09 I often make my forth compilers unnecessarily complicated by supporting names of arbitrary length 16:18:23 yeah this guy seems to have them be 27 chars long 16:33:22 it seems that its related to creating memory 16:38:48 when you create a word you generally allocate a header in the dictionary, populate it and then append to the end of the result as you build up the word definition 16:39:19 what it means to "build up the word definition" varies based on what type of threading you're using (if at all) 16:44:02 did the books you mentioned previously talk about the threading methods? 17:02:26 RodgerTheGreat: thanks for the advice 17:02:33 its dinner time 17:02:45 --- quit: black_13 (Quit: Page closed) 18:00:19 --- join: ttmrichter (~ttmrichte@61.183.22.194) joined #forth 18:00:19 --- mode: ChanServ set +v ttmrichter 18:07:15 o/ 18:07:38 hi Onionnion 18:08:19 * Onionnion just started a high resolution smoke simulation bake that goes for 220 frames >.> 18:08:41 how long does a frame take? 18:08:53 1.5 minutes about? 18:09:04 my cpu sucks 18:09:16 dang 18:09:28 eh maybe shorter 18:09:29 what is this for? 18:09:43 personal stuff, just playing around with Blender 18:10:11 and a friend wants me to do some sfx for some small videos he's making over the summer, camera tracking stuff 18:10:28 eh, shorter than 1.5 min. probably 3/4 of a min 18:10:31 I wonder how terrifying it would be to integrate forth as a scripting language for blender 18:10:34 sped up a bit 18:11:02 uffda, let's stay with python there, please :P 18:11:15 at least I'm on linux so it'll never crash 18:11:24 ahaha 18:13:07 or maybe I can have someone do a bake for me who has a better cpu 18:13:45 oh wow this is awesome, they added info for what's going on in the terminal 18:13:55 cool 18:14:10 Baked for 6m 11s, current frame: 16/220 (27.288s^C ETC: 1h 46m 13s 18:14:11 I presume this simulation stuff parallelizes well? 18:14:51 blender simulations are comparable to leading professional and proprietary software 18:16:27 --- quit: phirsch (Ping timeout: 248 seconds) 18:16:40 stupid question, would there be a performance difference on a forth written entirely in assembly? and how much would that be? (jonesforth doesnt work on BSD) 18:17:02 hm 18:17:03 screw it, ill just learn assembly and fix it 18:17:04 isn't there always performance increase when using assembly? 18:17:19 yes, but by what margin? 18:17:37 well I think the biggest factor is really whether you're using a forth which directly emits machine code and is capable of doing optimizations on that 18:18:02 although there was some discussion earlier that on some architectures a threaded inner interpreter can actually be extremely fast 18:18:44 doing simple optimizations like TCO and constant folding can have a pretty significant impact 18:19:28 I never really got into forth..although I feel it's making me miss out 18:19:38 you're a bit limited in what an optimizing compiler for forth can easily do, though, because much of the language is based around single-pass compilation 18:20:53 and the compiler itself is generally expected to function with statically allocated storage 18:21:16 you can bend both of those rules, but you have to start breaking down what you think of as "Forth" 18:21:43 not having type information is also limiting in some ways 18:23:15 I dunno if you guys have ever played with this, but inferring the stack effect of an arbitrary sequence of procedure calls and forward/backwards branches can get quite difficult 18:23:28 in a fully generalized case you really can't 18:24:17 if you have more restricted flow primitives, more like how Factor and Joy handle flow operators, it gets *much* easier 18:26:15 ill just ignore everything you said and keep thinking on the contrary :P 18:26:41 --- join: phirsch (~phirsch@xdsl-89-0-163-164.netcologne.de) joined #forth 18:26:41 --- mode: ChanServ set +v phirsch 18:26:41 hey, I'm sure writing a forth in assembly is both educational and fun 18:26:47 don't let me discourage you 18:27:43 I just work with compilers at my "day job" 18:36:10 RodgerTheGreat, so you have a career around computer science? 18:36:19 yes 18:37:08 just curious, because I'm asking people about this stuff as I'm looking into all this, did you get a degree for it or just learned and jumped in? 18:38:28 I'm a PhD student 18:39:04 and, yes, I have an MS and I've done some work with compilers 18:39:14 no major publications as of yet 18:39:30 awesome. don't know how far I'll go into it 18:39:37 probably masters 18:39:58 I spent some time in "the industry" between my BS and grad school, which I found highly educational 18:40:27 most education comes from actually doing it 18:40:32 agreed 18:41:42 academia is good at motivating you to learn theory, practice constructing proofs and learn a broad base of algorithms. Practical software engineering is usually less "fancy", but you deal with the human element, project life cycles and you have to learn about tools and specific frameworks/libraries/etc 18:41:49 both are extremely useful 18:43:12 I think researchers can really benefit from some practical perspective 18:45:41 I've gone over C 18:45:50 trying to do problems at projecteuler.net 18:46:29 forth can be pretty tricky for a lot of those because you often benefit from arbitrary precision math. I've made pretty good progress using Factor. 18:52:01 got problems 1 and 2 18:52:07 no idea why but 1 was hard to figure out lol 18:52:16 then I realized it and I felt stupid 18:53:27 a = b + c; c = b; b = a; loop 18:55:54 the other day, euler went offline and i copied it completely into an hg/git repo 18:56:37 kinda handy, just clone and start doing exercises on your own repo :) 18:56:50 just saying, if anyone is interested 18:57:17 git hates me lol 18:58:48 Onionnion: i mostly use hg, its easier 18:59:29 Onionnion: git hates everyone 18:59:49 never heard of hg and google gives me Mercury lol 19:00:11 i think its hard because its tailored for shellscripts 19:00:19 Onionnion: yeah, mercurial 19:02:41 Hey, just saw that Illyes Forth link. He did highly optimized for Apple II and Apple //gs back in the end of the 80's. 19:03:20 I have a disk and manual somewhere. He supported a frame grabber and gray scale card I made for IIe/gs. 19:06:38 Kumul, I feel as if I want to jump back into debian 19:18:57 hopping distros is a losers game 19:19:20 --- join: black_13 (467c40e5@gateway/web/freenode/ip.70.124.64.229) joined #forth 19:19:20 --- mode: ChanServ set +v black_13 19:19:27 hello cleveland 19:19:28 Onionnion: it is an inf loop 19:19:52 but openbox..I missed so much 19:20:40 Onionnion: use BSD, and install openbox 19:20:45 what does ": , HERE ! 1 ALLOT ;" do or rahter how does it work? 19:21:29 go to the last defined word on the dictionary and allot ? 19:26:15 hum 19:26:41 starting forth explains that 19:27:30 the only troubles I had was some laziness and something with packages as I was trying to do LFS and something about building was frustrating me to the point of wanting to blow it up 19:29:05 black_13: http://home.iae.nl/users/mhx/sf9/sf9.html 19:29:45 thanks 19:29:55 Onionnion: use bsd, seriously bsd! 19:29:58 :) 19:30:09 i havent had a headache in a while 19:31:10 what about repos? 19:31:31 i found a forth written by Robert. F. Illyes its extremly small but some of the predefined words seem to be of his own 19:33:22 Onionnion: no need, everything is in the ports system 19:34:10 what does nesting mean? 19:34:58 --- join: Onny (~ryan@adsl-68-254-169-141.dsl.milwwi.ameritech.net) joined #forth 19:34:58 --- mode: ChanServ set +v Onny 19:35:16 blah, disconnect 19:35:27 * Onny is Onionnion 19:35:52 --- quit: Onionnion (Ping timeout: 244 seconds) 19:36:01 xD 19:36:09 --- nick: Onny -> Onionnion 19:36:23 repeat Onionnion: no need, everything is in the ports system 19:36:34 * Onionnion is Onionnion 19:36:38 explain? 19:38:32 its basically a fs (not literally), you have a directory with the package name you cd into it, and make install, it will compile and everything will be up to date 19:43:40 do you all know of any very small forth interpreters written in c? 19:46:32 Nesting is some implementation tool not part of forth. 19:47:35 I gotta ask, what's with all the large need of small or tiny interpretors of Forth? 19:48:20 It is convenient for interactive dev on new/small hardware. 19:48:45 Like having Python with direct access to memory and I/O registers. 19:50:04 Where did that : , HERE ! 1 ALLOt ; come from? 19:51:53 Definition of "," Places top of stack at next location in dictionairy, called HERE and allost 1 (moves dict pointer ahead by 1). 19:53:19 Or you could say ALLOT increments HERE by the amount on TOS, 1 in this case. 19:55:10 I think ANS would say CELL ALLOT and Forth79 proabalby 2 ALLOT because there is C, that places a byte or char in the dict and it would use 1 ALLOT. 19:55:59 Onionnion: that is really why i want it small hardware 19:56:18 what is old is now new 19:56:48 thanks 19:56:57 Plus, once you overcome the overhead of the basic system, the code is very compact and you can get a lot into a small space. 19:58:16 for instance a company i worked for used the atmel/msp430 chips in an electric field monitoring device 19:58:33 the engineer on the project told me how things often changed 19:58:59 if you had a system that could be updated by forth firmware it would be extremely useful 19:59:33 Now with Java and Python popularity, they can fit a lot of byte codes into a small space. But I don't think they can get as compact as Forth where each new word defined is called like a bytecode. 19:59:49 Python overhead is too great. 19:59:54 it is 20:00:23 the forth i found i was able to compile it to 26k on win32 20:00:25 Java, perhaps in the right circumstances but it uses more stack manipulation being like C with stack frames. 20:01:10 there were some "kilobyte virtual machine" JVM implementations at one point that could function on the order of 96-128k of ram 20:01:12 6502 Fig-Forth fit the AIM-65 in less than 4K with heads and interpreter. 20:01:19 but those were *very* restricted systems 20:01:51 was that forth written in assembly 20:01:54 Same on Apple II's. 48K with lots of room left after Forth was loaded. 20:02:18 --- quit: SplinterOfChaos (Quit: Leaving) 20:02:20 It was in assembply in the sense it was written with a Forth assembler. 20:02:29 ah 20:03:19 Yes, in assembly. The heads are constructed with text includes in the assembler. 20:03:59 After the basic words are defined, you write in "Forth" by stringing together the label names so that the execution addresses are laid down in order. 20:04:43 regnirps: could you elaborate or show me a place that elaborates that idea 20:05:01 Find the Bill Ragsdale 6502 Fig Forth listing. It is the definitive implementation. 20:05:09 ok 20:06:22 is there still a "living" version of this ? something that could be run on apple emulator ? 20:07:46 Yes. MVPForth should be around. 20:08:25 Mountain View Press was the largest vendor of Forth books and disks and published the FIG journal. 20:08:35 FOrth Dimmensions 20:09:16 Ragsdales' RPN style 6502 assembler written in Forth is amazing and worth studying. 20:10:59 a forth writting in forth? 20:11:05 oroboros 20:11:13 Metacompiler. 20:11:17 I've done something like that 20:11:44 The original Ragsdale 6502 FIG came as a printout and you typed it into your assembler. The Merlin IIRC. 20:12:18 wow 20:12:30 where would you find that? 20:12:42 --- quit: Psyclonic (Quit: Leaving) 20:12:43 out of curriously 20:14:22 I have copies of all that stuff somewhere. 20:14:55 I used the assembler ideas to add floating point support of the AMD9511 FP chip. 20:17:58 http://www.forth.org/fig-forth/contents.html 20:18:46 This is from the Rockwell System-65 code also for AIM-65. Modified from Ragsdale by John Bumgarner and Dave Boulton I think. 20:24:19 Yep. That is it. Yu can see NEXT is fairly long in 6502 but the zero page instructions are only 1 or 2 cycle and there are clever forms of Z-page indirect addressing on 6502 as if the first 256 bytes of RAM is a table of 128 indirect addresses. Plus the stack is in zero page for fast access. 20:25:26 Ignore the Trace stuff. It was for debugging and never included later. 20:25:38 wow i have no idea what your talking about 20:26:14 This is indirect threaded Forth, so it is like a byte code interpreter with 16 bit codes. 20:26:50 NEXT is the inner interpreter that moves along the execution codes or word addresses. 20:27:14 would it be possible to "freeze" the state of forth machine 20:27:35 The outer interpreter is what they call the interactive compiler. Not needed in a finsihed program. 20:27:57 Yes, in the NEXT code you can halt or do whatever you want. 20:28:52 i worked for a company that made slot machines the state of these devices had to be saved there was a fault 20:28:54 I modified one to increment a counter in whatever word was executing (I added an extra 16 bit word to the definitions) to see which words are executing most often. 20:29:43 I think "Forth: Tools and Applications" mentions that approach to profiling 20:29:46 Yeah. Rules for slots are pretty strict. 20:30:06 Who write that? 20:30:16 Rather? 20:30:25 --- join: avenidadebelgica (~avenidade@67-5-152-121.ptld.qwest.net) joined #forth 20:30:25 --- mode: ChanServ set +v avenidadebelgica 20:30:56 regnirps: Gary Feierbach and Paul Thomas 20:34:05 Has anyone ever heard of "Robert F. Illyes" it seems he wrote some articles in "forth dimensions" 20:35:52 Yes, he wrote a fast subroutine threaded Forth for Apple IIgs and supported image processing hardware I used to sell. I have the disks and manuals. 20:37:20 Believe it or not, a frame grabber and 8 bit gray scale adapter on and Apple IIe was the hotest thing going for electron microscopes in 1986. 20:38:20 The Apple II listing on http://www.forth.org/fig-forth/contents.html is probably easier to follow. Note for assemb;y you have to give names to things like +, it is plus in the listings. 20:38:54 regnirps: i found a c implementation for about 3 different forths 20:39:17 http://www.math.uiuc.edu/~gfrancis/illimath/audible/vowels/bbn.C 20:39:38 A guy named Dr. Ting did a slew of tiny forth stuff 10 or 15 years back. 20:40:06 i wish i was an assembly guy but i can get buy on C/C++ 20:40:13 Yes, that is Illyes. Very clever guy. We used to talk frequently. 20:40:20 oh 20:40:25 is he still alive 20:40:30 Don't kow. 20:40:45 I am, so he might be :-) 20:40:53 a guy who was in his prime in 80s well that was 30 years ago 20:40:59 sadly we die 20:41:34 ok this is a tanget 20:41:37 Well, sometimes we are smiling when the plane hits the mountain in the dark. 20:41:48 yeah good point 20:42:24 I'm looking for the Ragsdale assembler. It is such a great example, that I will have to post it somewhere. 20:42:39 i remember the star trek animated from the 70s there was episode called "slaver weapon" basically its a found artifcat 20:43:15 this think is like that a couple of things i understand 20:43:28 how to add numbers 20:43:33 I need a Forth for this http://regnirps.com/VolvoxStuff/Volvox.html 20:44:09 144 Transputers in two boxes. 20:44:11 beautiful hardware 20:44:31 the wiring harness is really lovely 20:44:52 French Supercomputer from the 90's. 20:45:06 i am going to name drop 20:45:11 English Transputer chips. 20:45:16 i start working for AMD monday 20:46:06 Cool. I just got an AMD 6 core system from Tiger Direct. The multithread and compile Linux faster than the Intels. 20:46:32 Where? 20:46:32 i gather that the graphics chips are essentially array process or they can do lots of mathmatical calculations 20:46:36 austin 20:47:03 Nice. I stream a radio station out odf Austin. The Todd and Don show or some such thing. 20:47:18 hum 20:47:38 I just hit them for an hour at noon for Niel Bortz. 20:47:40 going back to robert illyes you have a manual? 20:47:59 Yes. In a shipping container full of old computers and books. 20:48:23 no pdf 20:48:25 oh well 20:48:46 It is for Apple II/IIgs which I have a dozen or more of. Even NIB. 20:49:10 god i had a cuople of those i was given them and threw them out 20:49:23 ages ago 20:49:28 http://regnirps.com/SEF/oddities.htm 20:49:28 however 20:50:27 One of the guys from Apple II Dev tech support in th eold days made a card that takes a CF and fools the OS into thinking it has hard drives. Add an 8 MHz accelerator and they are amazingly usefull. 20:50:52 two or thrtee times faster thqan and arduino and they are popular. 20:51:31 I have a couple of the CF cards loaded to boot ProDOS and KIX, a UNIX-like system. 20:51:43 Boots in about a second. 20:52:28 regnirps: could you look at http://www.math.uiuc.edu/~gfrancis/illimath/audible/vowels/bbn.C cod and give me some advice on what some of the predfined words do? 20:52:49 I have ti open already. 20:53:20 Which ones do you mean? 20:54:44 (Sorry I'm fascinated by my web site and my work from the 80's. Did I really do all that? ;-) 20:55:12 Yeah, give me an example and I'll see if I can tell what it does. 20:55:21 sure 20:58:04 " : , HERE ! 1 ALLOT ;" 20:58:24 or what does "HERE" mean? 20:58:41 Obtain the address of the first available word of memory 20:58:56 comma takes a value from the stack, and stores it to HERE 20:59:02 then 1 ALLOT increments here 20:59:48 so you could write that less concisely as : ( n -- ) , HERE ! HERE @ 1 + HERE ! ; 21:00:03 erm 21:00:18 HERE is a variable that hold the currect end of the dictionary. 21:00:18 well not quite 21:01:05 a question about "( -- )" are these comments? 21:01:09 yes 21:01:10 yes 21:01:21 ( starts a comment and ignores everything until ) 21:01:36 ( stack before --- stack after ) 21:02:06 and the stacks are "written" bottom to top, left to right 21:02:16 the forth has predefined array of stucts 21:02:37 presumably the built-in dictionary? 21:02:48 it is 21:02:54 it would have to be 21:03:01 the find workds against 21:03:15 but there is another thing called "ram" 21:03:47 and the ram is being "field as" i just add simple things 21:03:48 It is a struct to make it easy to define words I think. Ineed by c deconfusatrator. 21:04:25 Illyes is pretty eccentric code. I would get the source for gforth for an example of ANS in C. 21:04:47 ans is big 21:05:02 ficl was my original toy 21:05:39 It is written by professional computer scientists and professors. The techniques for writing it in C will be more concise. 21:05:53 which? 21:05:57 gForth 21:06:22 or Win32Forth, which has great OOP extensions. 21:07:11 those are probably going to be to large 21:07:41 I think his point is to try to understand a full-size one first, and then come back to small ones for your application 21:07:58 oh 21:08:13 to try to find analogues 21:08:19 Ah. The Illyes uses seperate heads. This is more complicated and good for creating final "headless" applications that don't need the names for compiling. 21:08:42 But not so good to learn from. 21:09:24 and sadly there was no manual for "words" 21:10:13 That is how it can generate very small applications, kind of like a metacompiler. You recompile your app "headless". Much more complicated system than plain Forth. 21:10:48 I'm pretty sure he wanted to be able to debug/code interactively on the device, though 21:10:55 which would seem to rule out a target compiler 21:11:34 debug the forth code you mean 21:11:39 One moment... 21:12:18 http://www.ebay.com/itm/310358774791?ssPageName=STRK:MEWAX:IT&_trksid=p3984.m1423.l2649 21:12:42 ill be 21:12:45 dipped 21:12:58 cute 21:13:52 not open source 21:13:55 looks like 21:14:10 welcome to embedded systems 21:15:45 I wold liek him to do this one for me. http://andahammer.com/armmiteproplus/ 21:16:09 Though the compiled BASIC is very fast. 21:16:12 "25 million LINES of compiled BASIC per second!" 21:16:23 Yeah. Pretty cool. 21:16:27 that is cool 21:17:00 it can't help but feel a little anachronistic as a measurement, though 21:17:24 I might do it myself. I have the ARM Forth79 code I wrote ages ago for a VLSI chip 21:17:42 what would you do with it? 21:18:08 Put it on the boards as an option on the site. 21:18:35 regnirps = Springer = ARMWorks 21:18:46 oh. OK 21:19:09 I did recall you linking elsewhere on that site previously 21:19:39 --- quit: Monevii (Remote host closed the connection) 21:19:47 There is a French group that does a programming contest every year. 21:19:52 http://andahammer.com/assets/Uploads/All2440/_resampled/ResizedImage483450-GeoDeath.jpg <- is that a geoduck? 21:20:17 oh, nvm, read the caption 21:20:19 --- quit: Kumul (Quit: gone) 21:20:28 The last two they have used this http://andahammer.com/mini35-sdk/ 21:20:35 Yes. 21:20:50 I dig the min front of the house. 21:21:04 I saw them in markets in Hong Kong for $60 US. 21:21:45 The contest has been start-up time for Linux. 21:22:03 I was thinking of a "bare metal" Forth contest. 21:22:30 how fast can you boot to an OK? 21:22:35 Disable the MMU so there is a linear 64M RAM. No OS but Forth. 21:22:45 It woiuld be very fast. 21:22:59 it'd be difficult to measure 21:23:03 Well under a second if it is FOrth only. 21:23:19 you'd want to ask people to write something meaningful 21:23:36 The S3C2440 is loaded with times and PWM and all that stuff, so you could measure yourself with the hardware. 21:23:39 or possibly compile + run a large, well known corpus of forth code 21:23:51 possibly some of the forth scientific library stuff 21:24:11 --- quit: Onionnion (Quit: Leaving) 21:24:24 I think demonstrate a valid ANS or variant plus some benchmark for speed. 21:24:59 write a benchmark application they must run, and design it to verify the correctness of their ANS implementation to some degree 21:25:03 Plus maybe points for the IDE. Eclipse? A simple FOth editor? 21:25:21 Eclipse support for forth sounds absolutely bizarre 21:25:23 I wold even consider old fashioned screens of 1K. 16 lines by 64. 21:25:27 a collision of worlds 21:25:49 Screens kept code well factored and tight. 21:26:20 There is 1G of NAND for the SSD plus up to 32G on an SD card. 21:26:43 33 million screens ought to be enough for everybody 21:27:12 Other things would be support for the LCD and touch pad and especially all the I/O. SPI I2C, GPIO, A/D, etc. 21:27:27 Ethernet? 21:27:29 USB? 21:27:40 It is a lot of work. 21:27:42 at this point you could just open it up to be "make a cool tech demo that runs on this board, written entirely in forth" 21:28:34 Yes. I don't care if it runs under Linux, but that puts you back to needed Linux drivers for all the I/O not in userland. 21:29:02 hm 21:29:14 The Linux version of gForth cold be pretty easily targeted. 21:29:32 yeah, it has extensive facilities for creating bindings to native C libraries 21:29:48 We have Linux with Qt, Abdroid, and even Debian Squeeeze. 21:31:03 so what would the prize be for this contest? 21:31:16 64M is a lot of RAM for Forth. I'm pretty curious about performance of a bare metal FOrth and slowly add all the I/O like FTP, USB, etc. If they can do it for Arduino, .... 21:31:27 sure 21:32:00 Somethng like store credit for X amount and a new Mini210S 1GHz A8 with 4.3" LCD. 21:32:28 And fame of course. 21:32:48 --- join: Monevii (~Monevii@adsl-64-237-234-175.prtc.net) joined #forth 21:32:49 --- mode: ChanServ set +v Monevii 21:32:58 --- join: Kumul (~Kumul@adsl-64-237-234-175.prtc.net) joined #forth 21:32:58 --- mode: ChanServ set +v Kumul 21:33:03 very tempting 21:33:07 I cant think of any sponsors since we make the boards. 21:33:49 Maybe KingBird Quad Band MODEMS and EDUP Yaggi Antennas. 21:34:29 We have an 18 inch yaggi I can point across the bay and pick up 30 Wifi users systems from 3 miles. 21:34:48 5 or 10 are always unlocked. 21:35:18 Great for anyone who lives within line of sight of a Starbucks or other hot spot. 21:35:52 make a pen testing rig that identifies insecure networks, roots machines and installs forth on them 21:36:02 http://andahammer.com/wifiyagi/ 21:36:55 I test with KisMAC, which is really a cracker but I don't try to crack. 21:39:20 A simplified version of this http://andahammer.com/mini210-w5/ 21:39:29 will be $199 by Monday. 21:40:49 But the Mini35 with the S3C2440 is a good target for a contest. The ARMEL instruction set (no Thumb) can be specified, then it will compile or assemble for everything. 21:42:17 An interesting way to play around with Forth is to get an old G4 or G5 MAC. They all have Open-Boot in thyem, whcih is Forth and you can drop into a consoles window in Open-Boot. Same as SUN systems. 21:44:39 Gotta go -- Later. 21:46:02 found some nice stuff at http://forth.sourceforge.net/standard/fst83/fst83-12.htm#here 21:53:50 i found someone who knows Robert F. Illyes and he is going to contact him for me. 21:55:29 interesting "HERE ." returns 162 21:56:32 : square DUP * ; then after HERE . returns 165 21:56:59 is that 3 bytes or 3 words 21:58:30 3 cells 21:59:04 usually a word 21:59:15 per cell 22:00:03 i see 22:00:19 i am begining to understand 22:00:21 a bit 22:00:47 it looks like his forth uses a subset of fig83 22:00:51 if thats right 22:01:06 is the correct term "fig83"? 22:04:37 I think so 22:04:56 gonna call it a night. Catch you folks later. 22:10:07 --- quit: RodgerTheGreat (Ping timeout: 252 seconds) 22:32:32 F83 22:33:01 FIG-FOrth, Forth79, F83 22:36:27 That Illyes you are looking at has separate heads, so the space for the name "square" doesn't show up. It might be 3 byte tokens for HERE, *, and ; or it might be JSR instruction and 16 bit address. "Subroutine threaded". 22:46:19 regnirps: still up? 22:47:35 For a bit. 22:48:04 I recall he liked subroutine threading for speed. 22:48:42 --- quit: ttmrichter (Quit: Leaving) 22:54:19 reading wikipedia on call threading 22:55:46 my limited assembly knowledge says to me that you have two function calls to push the arguments for the word "+" or plus then a call the "add" that pops off stack and saves results 22:55:59 how is this different than another type of theading? 22:57:21 i think i see how token threading works ... you need to have a lookup table that turns a string or hash to function call 22:59:13 regnirps: if you read the wiki entry http://en.wikipedia.org/wiki/Threaded_code#Subroutine_threading they mention "nest" and "un-nest" 23:00:03 Ah. That must have to do with the way most subroutine calls put return addresses on the CPU machine stack. 23:00:36 It might just generate a JSR and a RET instruction. 23:01:15 ARM doesn't have subroutines. You do ir yourself by loading the program counter abd saving the current execution address - the "link address". 23:03:25 i am going to get into my nest and sleep 23:03:32 --- quit: black_13 (Quit: Page closed) 23:55:35 --- quit: Kumul (Quit: gone) 23:55:46 --- quit: Monevii (Remote host closed the connection) 23:59:59 --- log: ended forth/12.06.09