00:00:00 --- log: started forth/04.02.11 00:00:45 --- quit: ASau () 00:25:41 --- join: Nutssh (~Foo@gh-1081.gh.rice.edu) joined #forth 02:05:23 allright! sun openfirmware has create and does> .. i should be able to write something. 02:10:55 seems to be mostly ANS forth compliant. so i'll give it a whirl. 03:18:42 --- join: killaweb (~giddet@pD9E641AF.dip.t-dialin.net) joined #forth 03:19:17 good morning 03:20:57 may someone explain me a little bit more about this wonderfull language and the concepts standing behind that? tnx killaweb 03:21:42 --- quit: killaweb (Client Quit) 03:21:55 --- join: killaweb (~giddet@pD9E641AF.dip.t-dialin.net) joined #forth 03:28:05 --- join: warp0b00 (~warpzero@dsl.142.mt.onewest.net) joined #forth 03:30:18 --- quit: warpzero (Read error: 110 (Connection timed out)) 03:50:25 --- quit: warp0b00 (Read error: 110 (Connection timed out)) 03:50:48 --- join: warp0b00 (~warpzero@dsl.142.mt.onewest.net) joined #forth 03:51:05 lisp? 03:53:14 hrm. orkut has a forth community. neat 03:53:24 apparently it's not a completely useless thing 03:53:31 (orkut that is.) 03:55:03 Hehe. 03:55:20 Oh, duh, wrong channel. 03:55:29 * Robert is "robost" at Orkut, btw. 03:57:07 --- quit: Nutssh ("Client exiting") 03:57:23 Robert, but you're not listed in the forth community. hrm 04:01:05 No. 04:01:13 I didn't know about it until you told me now. 04:01:37 hehe. that was the first thing I wondered. i wanted to see if any one from SVFIG was on it 04:01:45 I could join it.. 04:08:25 * Robert did. 04:08:38 Which one are you? 04:09:20 Jon Mayo. ehhe 04:10:55 "Tall, pale and geeky. Programming for fun and for paychecks is what I do." 04:10:56 Hehe. 04:11:01 there. i found you. is this exciting. to think i could be doing my laundry 04:11:13 Robert, yea. 04:11:15 :) 04:12:08 "... and he is the man to go for if you want a consultant for brainfuck or, worse, forth." ahahha :) 04:12:28 :D 04:13:06 That reminds me.. I rewrote the software for my brainfuck computer yesterday. 04:13:16 Turned out I had the wrong code uploaded to my page! 04:13:29 It didn't even work. 04:13:39 And somehow I losr the real one. 04:13:42 i want some dedicated befunge hardware myself. 04:13:59 http://robert.zizi.org/bfcomp.html 04:14:11 i think befunge would be more interesting if everything was a graphic symbol instead of an easily pronouncable ascii 04:14:27 Heh. 04:14:39 Haven't used befunge. 04:14:46 Robert, ahah. neat. i was going to do the same thing with a PIC. except i want TV-out 04:14:57 Robert, have you seen it before? 04:15:25 befunge is easier than brainfuck. 04:15:30 which is a shame. 04:15:43 although there is funge. which you can program 4 dimensiontally (or more) if you wish 04:16:45 Hmm.. 04:16:56 I'm not sure. What is it like? 04:17:26 Now I'm writing a high level language -> brainfuck compiler in Forth. :) That thing a friend did in 500 lines of python, heh. 04:18:11 Robert, well befunge is a two dimensional self-modifing language. 04:18:21 Robert, loops in befunge actually look like loopy ascii art 04:18:35 your instruction pointer can move in 4 directions along two axis. 04:18:41 of course it has a stack too :) 04:18:46 Oh, I think I looked at it once. 04:18:53 Seemed quite interesting. 04:22:09 Robert: what do you do with the pic controller? 04:24:04 Robert: what makes the controller with it´s led´s and switches? 04:25:34 killaweb: You input "editor" commands, brainfuck code (and data when the program wants it) on the switches, and the output goes to the LEDs. 04:28:25 --- join: Serg (~z@212.34.52.140) joined #forth 04:29:50 Hi Serg 04:31:21 Robert: an simple forwarding to the led´s from the switches? 04:31:40 Robert: what makes the programm 04:32:23 Robert: have you source code on your page? i am new in forth and i want to learn ist quickly . as quick as possible... 04:32:55 i am a german student in electrial engeneering 04:33:38 soory forget my request of source. i have seen it now 04:35:30 haven´t you written it in forth? it is only mpasm. 04:36:42 Hehe. 04:37:07 No, it's not written in Forth. But now I am working at a Forth program that compilers high level code to brainfuck. 04:37:35 ah 04:37:51 and what is brainfuck? is it an other language? 04:39:05 Yes. 04:39:17 A very simple one. and very hard to use. 04:39:18 ah okay 04:39:23 It's simply a toy. 04:41:37 you have written about your friend eric. yesterday i visited an internet page http://www.circuitcellar.com/DesignForum/features/9805022/TNtext.htm 04:41:44 is this eric? 04:41:53 Eric Krieg 04:42:52 ok now i go to launch 04:42:55 Robert, hrm. there is a brainf*ck community too 04:43:11 Heh, no. 04:43:20 It's Erik with k, btw. 04:43:25 And he's a lockal programmer. 04:43:35 OrngeTide: Neat, I'll join that when I get home. :)( 04:49:52 hi ! sorry for AFK 04:58:13 :) 05:01:11 i return yet another RX ;(( 05:02:42 :( 05:02:43 yesterday i completed a Perl script what turns GTA3 configs into XML, 05:02:56 Heh, sounds useful. 05:03:12 so u can edit stats of cars, guns and particles in nice GUI XML editor 05:03:28 script als writes XSL to convert back 05:03:48 but damn game barfs w/o some comments 05:04:01 will add later, w/ XSLT book in hand 05:05:39 script can turn to XML any space (or , ; : etc.) separated data, given another file what describes each column 05:06:13 actually, now only space- , but generalizing is trivial 05:08:15 :) 05:09:04 once i made a crazy mod for GTA: Vice City - long acid-green exhausts etc. 05:19:15 but this hits stability of game :(( it seems be full of buffer overflows etc... 05:42:12 --- join: fridge (~hovil@CommSecureAustPtyLtd.sb1.optus.net.au) joined #forth 05:44:16 --- quit: Serg () 06:23:32 --- quit: killaweb (Read error: 104 (Connection reset by peer)) 06:32:41 --- join: Nutssh (~Foo@dunwlessnat.rice.edu) joined #forth 07:15:53 --- quit: Nutssh ("Client exiting") 07:33:38 --- quit: proteusguy (Read error: 104 (Connection reset by peer)) 07:43:58 --- join: killaweb (~giddet@pd9e641af.dip.t-dialin.net) joined #forth 07:44:50 Hallo 07:51:52 --- join: downix (~downix@adsl-2-34-247.bct.bellsouth.net) joined #forth 07:51:57 Hi 07:52:23 hey 07:55:50 hi robert 08:11:24 --- quit: killaweb () 08:12:10 --- join: ASau (~asau@158.250.48.196) joined #forth 08:12:18 Dobryjj vecher! 08:15:41 Privet, ASau :) 08:23:26 --- quit: fridge ("Leaving") 08:30:35 --- join: kc5tja (~kc5tja@66-91-231-74.san.rr.com) joined #forth 08:30:41 --- mode: ChanServ set +o kc5tja 08:31:10 --- join: yasam (~sam@210-54-229-62.dialup.xtra.co.nz) joined #forth 08:45:22 Dobryjj vecher! 08:45:35 --- join: fridge (~hovil@CommSecureAustPtyLtd.sb1.optus.net.au) joined #forth 08:45:46 Dobryjj vecher, fridge! 08:45:55 Greetings. 08:46:51 hey sam 08:46:59 re 08:47:00 Bonan nokton, ASau! 08:47:08 * kc5tja can't stay long. I have college to get to soon. 08:47:20 Won't be back in the house until midnight tonight, due to my also having to work. 08:47:32 shift work is making any kind of non work related activity near impossible 08:48:05 Yes. 08:48:27 Well, I've succeeded in increasing my bike usage almost to the point of exclusion of driving my car last year. 08:48:36 still driving that RX-7? 08:48:40 (Though the weather did get too cold to ride at night) 08:48:45 downix: Yes, definitely. 08:48:49 2nd generation. 08:48:51 cool 08:49:02 * downix almost bought a 1st gen, but too small for me 08:49:08 * kc5tja nods 08:49:20 so I still drive my LeBaron 08:49:24 Well, I'm trying to reduce my dependencies on external factors that could potentially ruin my life. 08:49:34 the fact that the train system here has been run into the ground has contributed to my bike riding a fair bit 08:49:35 LeBarons are sweet cars too, if you take good care of them. Fast. 08:49:46 I had a r100 for a while but had to sell it :( 08:50:15 Not this one, it runs the 2.6 mitsu engine, a bitch to take care of 08:50:21 I wish I had a 2.2, much better engine 08:50:32 downix: Do they make 2.2s with hemis? :) 08:50:47 I'm not going to buy another car, not much point really when theres only 10 or so years left of affordable oil 08:50:59 heh, nope 08:51:06 the 2.6 is a hemi actually 08:51:11 but other decisions kill performance 08:52:21 never heard of a lebaron, i guess then its american? 08:52:53 yasam: yes. 08:53:32 And the engineers built the oil-pump so it's driven off of the balance shaft which is off of the timing-chain and that is held *onto* the shaft using guiderails... which often times wear out 08:57:19 I have a 383 sitting in storage I want to rebuild 08:57:29 but wedging that into the LeBaron would be insane 08:57:35 --- join: proteusguy (~proteusgu@65.196.135.240) joined #forth 08:57:45 Hi 08:58:00 chuck a renesis in :) 08:58:17 heh 08:58:19 don't think so 08:58:31 it's a Chrysler, it gets Chrysler motors 08:58:39 pity no way to get a clone of the gas turbine 08:58:39 8) 09:01:03 Yep. 09:01:09 * kc5tja would love an '8 right about now. 09:01:21 Even though I'm all for reducing my gas consumption, well, you need to have fun sometimes. :D 09:02:02 heh 09:02:17 Well, my thought was to use LNG or CPG 09:02:35 I used to, but not anymore. 09:02:39 * kc5tja is a fan of biodiesel now. 09:02:46 Agreed there 09:02:53 shoot, deisel in general 09:02:58 can burn almost anything 09:02:58 It's realistically the only fuel that has the energy density for real-world, modern-day applications and still closes the carbon cycle. 09:02:59 8) 09:03:04 peanut oil, no problem 09:03:49 Well, diesel engines of old have horrible pollution concerns. 09:03:55 Modern Diesel engines are much, much cleaner. 09:04:10 It's amazing how just relocating the injector can clean up 80% of all pollutants. 09:04:17 * kc5tja therefore favors DI *WAY* more than IDI. 09:04:39 * downix nods 09:05:08 Plus, modern diesels are sort of anti-hemi; they have a hemispherical indent in the piston, which makes for increased compression ratios with smaller piston strokes. 09:05:19 Anyway, I have to jet. 09:05:45 If I don't get to school *now*, there literally won't be any parking at all within a two mile radius of the school (and I am *NOT* kidding) 09:05:55 --- quit: kc5tja ("THX QSO ES 73 DE KC5TJA/6 CL ES QRT AR SK") 09:21:12 --- quit: yasam ("dumdumdumdum") 09:51:20 --- quit: downix ("Leaving") 10:09:30 --- join: chandler_ (chandler@64-145-60-36.client.dsl.net) joined #forth 10:09:37 --- quit: chandler_ (Client Quit) 11:43:04 --- join: ree (~jwm@ns.fasthost.net) joined #forth 11:43:14 Hi ree 11:43:22 hey Robert :) 11:43:26 how are you bud? 11:43:32 Back in the Forth madness? 11:43:34 Not bad, not bad.. 11:43:40 hehe.. somewhat 11:43:55 just the stack vm idea :) 11:44:03 and primitives 11:44:15 you know, I'm not one much for languages 11:44:25 or is it not much one for languages 11:44:26 * Robert (re)wrote a VM yesterday! 11:44:26 heh 11:44:32 http://robert.zizi.org/bfcomp.html ;) 11:44:37 hehe, yeah, you're a vm king 11:44:42 ahh, bf 11:44:50 I'm learning SML, it's a pretty nice programming language. 11:46:00 ree1 11:46:01 ! 11:46:29 hey jukka bud 11:46:51 I have some pretty bad freenode connectivity issues heh 11:46:57 doesn't like idlers I guess 11:47:07 :( 11:47:10 very cool rob, an entire bf vm 11:47:23 ree: An entire bf _computer_ :P 11:47:54 yes, a true virtual machine :P 11:48:11 hence my usage of 'entire' to pay homage :) 11:49:01 Heh 11:49:05 A non-virtual virtual machine. 11:49:05 I hope bf isn't short for brainfuck 11:49:17 It is. 11:49:30 * fridge cringes 11:49:54 its not my cup of tea anyway =) 11:49:56 Hope I didn't scare you too badly. ;) 11:51:11 It's more meaningful than going to school, anyway. 11:52:35 hear hear 12:05:55 hear what? 12:06:10 ree: ever thought of dictionary 12:06:24 and how all words link to other words 12:06:31 and they link again to words 12:06:37 it is never ending loop 12:07:26 hear hear is a saying, like yes, definitely, I agree totally, tell it again baby! 12:07:55 hehe, yeah mur? 12:08:45 well 12:08:57 if the AI could utilise dictionary which links to other words 12:09:02 it woudl be powerful 12:09:11 ever thought making it from semiotic point of view? 12:09:34 that's already done in the cyc project 12:09:42 with limited success 12:10:11 that is actually a department of ai, symbolic ai 12:10:30 if it works, you will never have to program again :) 12:10:47 you can just specify other words to explain it 12:58:58 --- quit: fridge ("Leaving") 13:16:29 --- quit: proteusguy ("Leaving") 13:18:12 --- join: proteusguy (~proteusgu@65.196.135.240) joined #forth 13:57:23 --- quit: proteusguy ("Leaving") 14:34:04 --- join: fridge (~fridge@dsl-203-113-230-242.NSW.netspace.net.au) joined #forth 14:50:46 i'm wondering some things about forth. if a word like VARIABLE is just : CREATE 0 , ; ... would this not have an effect on icache on most superscalar architectures because : is also used to define code? (data and instructions should never appear on the same cache lines else it won't be cached at all) 14:52:20 Unless you optimize that away, you'll have data and code right after each other... 14:52:33 that's not good at all. 14:52:56 a bad native forth compiler for x86 would be slower than a direct threaded forth. 14:53:22 what do people do to solve this? also what do people do when doing forth for Harvard architecture systems? 14:53:36 Well, I don't think "real" Forth compilers use the definition : variable create 0 , ; 14:53:57 About the Harvard system... I use a VM. ;) 14:54:06 Very slow, I know. 14:54:09 Robert, well a lot of this stuff uses CREATE and DOES> 14:54:23 Robert, well direct threaded would work okay on harvard. but that's pretty much a VM too 14:54:48 i think any CREATE DOES> would be okay. but if people use CREATE to make arrays or something that would also blow up. 14:55:09 But it is possible to (relatively easy) separate most code and data. 14:55:29 Robert, i assume it's possible if you throw out ANS... 14:55:31 Like I do in the VM for the AVR. 14:56:04 I don't know how easy it would be to make an ANS system like this. 14:56:13 screw ANS. :P 14:56:18 Yeah :) 14:56:33 do you know of any examples of native forths that seperate data and code? 14:56:44 "native forths"? 14:56:50 As in, compiling to native code? 14:56:54 right. 14:57:03 rather than a direct threaded or subroutine threaded. 14:57:14 If you count my VM code as native, then yes. 14:57:39 The VM is stack based to make things easier, but basically it's a native code Forth compiler. 14:57:40 well wouldn't you count your VM as token threaded? or is it more substantial? 14:57:52 (sounds like machine forth) 14:57:59 It's a bit like that, yes. 14:58:23 But every one of those instructions could be translated instruction-by-instruction to one or more x86 instructions. 14:58:34 So it's about the same techniques used. 14:58:57 sure. can i see it? i don't really understand how to pull data and code apart and get things to play well together 14:59:12 http://robert.zizi.org/mtv.html 14:59:34 The Forth compiler I'm talking about (in fact there are two, one is a cross compiler for IsForth) should be in...let me look... 14:59:45 crap. i gotta go. i'll be back in 10 min 14:59:54 OK. 15:00:03 mtvfc/minmos.f 15:01:08 That's however Forth code for the cross compiler - not 100% self-compiling. You can run the VM Forth system in the simulator that comes with MTV. 15:01:18 It's in sim/sim.f 15:05:37 Hmm.. 15:06:00 * Robert hopes he can fix all bugs before OrngeTide returns. ;) 15:19:26 oh don't worry. i'm not going to run it. i need to read it:) 15:19:35 which might be even harder to do than running it:) 15:19:48 Haha. 15:22:08 so what kind of AVR projects do you do? 15:22:46 Ehm... You've seen like 90% of them. ;) 15:22:54 ehhe. okay:) 15:23:02 Did a frequency counter using a PIC though. 15:23:09 Since I have more of them. 15:23:50 i'm thinking an AVR and one of these http://www.crystalfontz.com/products/12864c/index.html#CFAX12864CWGHTS .. might make a fun little pda. :) 15:24:35 --- join: blockhead (default@dialin-822-tnt.nyc.bestweb.net) joined #forth 15:24:40 I don't really feel comfortable with not being able to write to code memory though. 15:24:45 although i might just go for ARM thumb instead. since the stupid LCD is so expensive spending 5x on the microcontroller isn't a big deal 15:25:15 Robert, yea. PIC would be neat if you could have a self-hosting forth on it:) 15:25:22 For computers like that at least... it's not bad for simple non-programmable projects. 15:25:56 yea. i need a PS/2 to Sun keyboard adapter that actually works correctly. PIC is probably a good choice for that. 15:26:01 OrngeTide: Hmm... Forth compiler on a chip with 64 bytes of EEPROM and 68 bytes of RAM, that's what I call a challenge! 15:26:10 Robert, you could do machine forth i bet 15:26:14 OrngeTide: However, with a decent cross-compiler I guess it could be done. :) 15:26:16 Yeah. 15:26:44 That is, writing a Forth interpreter and running bytecode Forth from the EEPROM. 15:26:48 * Robert thinks about it. :) 15:27:00 get one of those 4 pin jobs. 1 pin for your serial out and one for serial in. :) 15:27:48 Hmm.. 15:27:58 That would be a nice thing to do networking on. 15:28:07 Could connect it to the Internet and let people use it. :) 15:28:11 * Robert deams on... 15:28:28 Got a bunch of MAX232 chips to spare though. 15:28:30 you could probably write an emulator/simulator for it and nobody would know the difference. :P 15:28:49 it needs lots of LEDs and a webcam as proof 15:29:15 i know. you should write a MUD on a PIC or AVR 15:29:19 Or a slow enough connection :D 15:29:22 and then people could login to it and play it. 15:29:22 Hehe. 15:29:29 Insanity. :) 15:29:47 actually an AVR with an MMC card (you can do I/O on MMC using SPI. so it's easy). 15:29:47 The problem is that you need some data for that. 15:29:59 MMC? 15:30:14 yea. multimedia card. they use them in cameras and pdas and stuff. you can get like 64Mbyte for like $30 now 15:30:21 Oh. 15:30:30 Actually I got an STK500 board with flash memory on it. 15:30:30 it's the same connector as SD 15:30:48 But that feels like cheating. 15:31:01 I want something smaller and home-built. ;) 15:31:06 i can buy SD/MMC/CF cards for less than i can buy flash. go figure. 15:31:22 Hehe. 15:31:33 and these cards have some intellegence too. they are designed to run a DOS filesystem so they automatically rotate the writes to different blocks to help extend the life of the card 15:31:59 Whoa :) 15:32:19 yea. you just can't address them and execute out of them directly. it's more like accessing a harddrive or something. 15:33:36 How hard is interfacing RS232 on a chip with no UART? 15:33:41 my friend actually made an FPGA that loads it's own code out of an MMC. it has like a hardwired MMC bootstrap to load the rest of itself. it's for his company because they want to allow the fpga to be updated by customers in the event that the standard protocols they are working with (gps) changes. 15:33:50 Maybe it's a better idea to use a simple protocol on the parallell port? 15:34:04 Cool. 15:34:50 Robert, you gotta poll the pin at 8x or 16x the speed and count the state of the pin. and if more than half (or 2/3rd) of the ticks you saw the pin in that state, you just assume it's that state. 15:35:07 pics do it all the time. it's not that hard because rs232 is so slow 15:35:53 Oh. 15:36:19 Well, I have a bunch of 3.6864 crystals left.. :) 15:36:24 that's why people run them at 1200 or 9600 15:37:10 Wouldn't it be easier to use the parallell port instead, considering it operates at 5V and you can have a clock line or something? 15:39:55 it's up to you. on the host side parallell port is a pain because then you have to write a driver for it. 15:40:26 one of my computers doesn't even have a parallel port. it just has an ethernet jack and 4 USB connectors in it's place 15:40:46 Stupid modern hardware... ;) 15:40:56 at least with usb i can use a serial adapter. 15:41:07 actually doing USB slave isn't too hard either. 15:41:41 But writing a driver for the parallell port isn't hard, is it? iirc, the pins just correspond to one I/O port bit each. 15:42:03 Robert, writing a drive for linux is easy. you can just use the user mode /dev interface for it. 15:42:08 windows is a pain though. 15:42:38 I've been doing it for DOS. 15:42:43 plus if you want to have it work in your favorite terminal package (for debugging) then you'd have to patch the term program or make the parallel port look more like a serial device. 15:42:45 And in Linux, with ioperm() 15:42:49 dos is dead. :P 15:42:56 No. 15:43:00 Windows is a DOS emulator. :) 15:43:19 Besides, DOS is the primary/secondary system of half my computers. 15:43:27 linux has a DOS emulator and a 68k mac emulator and a C=64 emulator and apple][e emulator. 15:43:36 Robert, i'm sorry. 15:43:54 really i have no respect for DOS. it's totaly unsupported and does not even work correctly on new computers. 15:43:54 Windows is the best DOS simulator, though. :) 15:44:06 actually WindowsXP's DOS emulation is terrible. 15:44:10 Sure, but you can still use it on older ones. 15:44:21 WindowsXP? That's like... way too new. 15:44:24 my fiance is making me toss out my old computers 15:44:31 Not sure it would even install on my computers. 15:44:38 Oh. That's evil! 15:44:56 i don't even own windows. so i use freedos on bochs on my macintosh if I really want to play my old games that badly. :P 15:45:28 I have Win98 on a box. 15:45:29 and for playing around i usually write code on linux and just stuff it in a floppy bootsector. (or chainloader in lilo) 15:45:51 i had win2k but it wasn't a legal license so i decided to not even support microsoft illegal and toss it ou 15:46:07 MINIX on one and Debian on this... Those are the ones with networking. 15:46:09 Hehe :) 15:46:13 win2k blows chunks anyway 15:46:14 i have minix on my palmtop. 15:46:19 it's really damn slow 15:46:27 I have a totally legal copy of Windows. /me looks for MS spies. 15:46:45 At least I can IRC on it. :) 15:46:51 minix on a palmtop? Thats cool. 15:46:58 actually my palmtop runs DOS 5.0 (romable). that's pretty much the only time I use turbo C and write 16-bit code 15:47:08 * blockhead assumes minix is a unix 15:47:24 blockhead, yea. it's an HP200LX .. it has a PCMCIA type I slot. so I stuffed a 64Mb CF card in it . 15:47:33 yea. minix is what inspired Linus to write Linux. 15:47:42 Hehe. 15:47:46 minix is a microkernel(sort of) unix. 15:47:54 Because it was too bad for him. ;) 15:48:05 I run DOS 5.0 on the 286 laptop. 15:48:06 for XT/286/386/68K 15:48:41 Robert, for what it was designed to do. (run on a students spare XT or 286) it does a pretty good job. 15:49:07 linus' problem with minix was it wasn't appropriate for running as his primary OS. 15:51:43 --- join: proteusguy (proteusguy@207.sub-166-153-183.myvzw.com) joined #forth 15:55:28 Yes, it's OK for a low-end single-user UNIX system. 15:57:33 * Robert should go to bed now. 15:57:34 Good night :) 16:01:21 --- join: killaweb (~giddet@pD9E64212.dip.t-dialin.net) joined #forth 16:09:18 nite. 16:27:34 --- join: Sonarman (~matt@adsl-66-124-254-175.dsl.snfc21.pacbell.net) joined #forth 16:29:03 --- quit: killaweb () 16:30:00 --- join: qFox (C00K13S@cp12172-a.roose1.nb.home.nl) joined #forth 16:41:11 --- join: arke (~Chris@wbar8.lax1-4-11-099-104.dsl-verizon.net) joined #forth 16:41:21 back for a few minutes 16:41:26 anything new? 16:41:43 I got some file I/O words working in my forth :D 16:41:59 blockhead: :) 16:42:28 what's new with you? 16:43:00 got a really cool design for a 16-bit TTA processor 16:43:11 64 registers. 16:43:22 conditions are handled really nicely too... 16:43:30 TTA? 16:43:32 that;s a lot of registers. you could make a stack out of only registers 16:44:05 (each instruction has a 4-bit prefix which describes if it has a condition, and if so, what it is 16:44:21 blockhead: well, alot of them are triggering registers 16:44:44 * blockhead mulls upon the term "triggering registers" 16:45:00 heh 16:45:18 basically, writing to it causes it to be +='ed to a corresponding accumulator 16:45:46 so you could do additions just by moving? 16:45:57 thats how it works 16:46:13 mov op1, aadd 16:46:20 mov op2, tadd 16:46:24 like the move machine that someone mentioned here last night 16:46:28 tadd now contains tadd+aadd 16:46:36 yeah, thats basically it 16:46:58 although I think mine is much more graceful 16:47:11 the register setup isn't set in stone yet tho 16:48:07 I think when the End of the Clock happens, OISC's are gonna play a relatively big role 16:48:16 although probably not as much as mISC's 16:49:19 zardon: Transport Triggered Archit4ecture, basically only onew instruction, move, and registers which trigger certain things when written to 16:50:11 that's interesting. No more looking up instructions all the time when writing code: just one instruction. :D 16:50:51 yeah, but you have to look up registers :) 16:51:04 oh yeah :o 16:51:27 :P 16:51:45 anyhow, gotta work, be back at around 2030 PMT 16:52:10 ok. good luck with that chip 16:55:44 --- quit: proteusguy ("Leaving") 17:04:18 --- join: Nutssh (~Foo@dunwlessnat.rice.edu) joined #forth 17:38:40 --- quit: qFox (Client Quit) 17:51:04 --- join: proteusguy (~proteusgu@216.27.161.121) joined #forth 17:51:41 --- quit: proteusguy (Read error: 104 (Connection reset by peer)) 17:52:00 --- join: proteusguy (~proteusgu@216.27.161.121) joined #forth 18:18:53 --- part: Nutssh left #forth 18:40:37 --- join: qFox (C00K13S@cp12172-a.roose1.nb.home.nl) joined #forth 18:55:16 --- nick: chandler -> chandler` 18:56:07 --- nick: chandler` -> chandler 19:01:03 --- quit: ASau () 19:12:43 'night all 19:12:48 --- quit: blockhead ("Client Exiting") 19:31:33 --- quit: qFox (Client Quit) 19:38:14 --- join: qFox (C00K13S@cp12172-a.roose1.nb.home.nl) joined #forth 19:44:23 --- quit: fridge (Remote closed the connection) 20:00:49 --- quit: qFox (Client Quit) 20:13:48 --- quit: Robert (Read error: 110 (Connection timed out)) 20:21:10 god dammit i missed kc 20:27:38 dammit so did I 20:32:18 but..uum...he wasnt even here... 20:32:24 arke, here is code to append 2 linked lists: : append over [ [ uncons ] dip append cons ] [ nip ] ifte ; 20:32:30 arke, i think its pretty neat :) 20:32:58 what do [ ] do agian? 20:33:05 push a literal linked list 20:33:16 ok 20:33:23 or at least they behave like they do 20:33:34 but in compiled code its a bit different 20:33:41 what does dip do? 20:34:02 Where I write: [ foo ] dip you would write: >r foo r> 20:34:32 swap? 20:34:40 no 20:34:50 it removes top element from stack, evaluates some code, restores the element. 20:35:13 ah ok 20:35:18 if i have 2 4 6 on the stack, with 6 on top 20:35:21 and execute [ + ] dip 20:35:24 i end up with 6 6 20:36:26 aah, ok 20:36:28 thats kinda neat 20:37:12 does the append definition make sense now? :) 20:38:02 Well, trying to figure it out 20:38:07 [ a b ] [ b a ] 20:38:18 [ a b ] [ b a ] [ a b ] 20:38:30 no 20:38:32 i don't get it 20:38:33 :) 20:38:47 : ifte ? call ; 20:38:52 [ a b ] [ b a ] [ a b ] 20:38:59 [ a b ] [ b a ] [ a b ] [ [ uncons ] dip append cons ] [ nip ] 20:39:07 [ a b ] [ b a ] [ [ uncons ] dip append cons ] 20:39:14 <-- ? just got evaluated 20:39:21 now 'call' evaluates [ uncons ] dip append cons: 20:39:28 a [ b ] [ b a ] 20:39:40 a [ b ] [ b a ] [ b ] 20:39:44 a [ b ] [ b a ] [ b ] [ [ uncons ] dip append cons ] [ nip ] 20:39:47 <-- ? again 20:39:59 a [ b ] [ b a ] [ [ uncons ] dip append cons ] 20:40:01 <-- call again 20:40:09 a b [ ] [ b a ] 20:40:17 <-- recurse again... 20:40:29 this time 'else' branch is taken, leaving 20:40:31 a b [ b a ] 20:40:37 return to the end of the first 'append' recurse: 20:40:40 a [ b b a ] 20:40:44 return to the end of the second 'append' recurse: 20:40:47 [ a b b a ] 20:40:53 hrm 20:40:56 this is beyond me :) 20:41:08 I need to get a little more into linked lists anyhow 20:41:26 2 very simple words involved here: 20:41:40 : cons ( A [ B ] -- [ A B ] ) ... ; 20:41:52 : uncons ( [ A B ] -- A [ B ] ) ... ; 20:42:06 .. 20:42:21 wouldn't it be cons ( a b -- [ a b ] ) ? 20:42:28 nevermind, same thing 20:42:33 no its not 20:42:37 1 2 cons == [ 1 , 2 ] 20:42:43 1 [ 2 ] cons == [ 1 2 ] 20:42:47 ? 20:42:50 and [ 1 2 ] == [ 1 , [ 2 ] ] (syntax sugar) 20:42:59 in fact [ 1 2 ] == [ 1 , [ 2 , [ ] ] ] 20:43:20 aah, lol 20:43:20 Ok 20:43:32 I knew that ^__^ 20:44:03 heh, cool :) 20:44:33 i won't bother explaining this one: : reverse [ ] swap [ swap cons ] each ; 20:44:46 each 20:44:51 see each 20:45:55 : each over [ [ uncons ] dip tuck [ call ] 2dip each ] [ 2drop ] ifte ; 20:46:05 stack effect ( list code -- ... ) 20:46:10 deary me 20:46:15 execute code with each element of the list on the stack, one at a time 20:46:16 dearie 20:46:28 eg, [ 1 2 3 4 5 ] [ sq . ] each 20:46:34 prints 1 4 9 16 25 :-) 20:46:45 aah, should have said map 20:46:50 thats what map does :) 20:46:51 map is different 20:46:59 [ 1 2 3 4 5 ] [ sq ] map -- return a *new* list 20:47:05 oh 20:47:05 ok 20:47:06 :) 20:47:07 contianing result of applying [ sq ] to each element 20:47:12 each just applies the code 20:47:18 so [ 1 2 3 ] [ sq ] each leaves 3 elements on the stack :) 20:47:33 : map 2list restack each unstack ; 20:48:03 ok 20:48:20 [ a b ] 20:48:24 [ a b ] [ ] 20:48:31 [ ] [ a b ] 20:48:46 [ ] [ a b ] [ swap cons ] 20:49:03 want me to finish that? :) 20:49:13 [ ] a [ swap cons ] call 20:49:15 [ ] a b 20:49:25 [ a ] 20:49:33 [ a ] b [ swap cons ] call 20:49:36 [ b a ] 20:50:00 argh 20:50:20 and the long wa 20:50:22 way* 20:50:45 [ ] [ a b ] [ swap cons ] [ a b ] 20:50:59 [ ] [ a b ] [ swap cons ] [ a b ] [ [ uncons ] dip tuck [ call ] 2dip each ] [ 2drop ] 20:52:10 [ ] [ a b ] [ swap cons ] [ a b ] 20:52:17 erm.. 20:52:21 that can't work, my friend 20:52:35 [ ] [ a b ] [ swap cons ] [ a b ] [ [ uncons ] dip tuck [ call ] 2dip each ] [ 2drop ] and then ? ends up with [ ] [ a b ] [ swap cons ] [ a b ] 20:52:44 no 20:52:50 ? will pop [ a b ] [ [ uncons ] dip tuck [ call ] 2dip each ] [ 2drop ] 20:52:56 and push back [ [ uncons ] dip tuck [ call ] 2dip each ] 20:52:59 since [ a b ] is non-null 20:53:12 : ? ( X Y Z -- Y/Z ) ... ; 20:53:21 push Y if X non null, Z if X null. 20:53:39 aah 20:53:40 ok 20:53:43 lemme try again then 20:53:51 [ ] [ a b ] [ swap cons ] [ a b ] [ [ uncons ] dip tuck [ call ] 2dip each ] [ 2drop ] 20:54:37 [ ] [ a b ] [ swap cons ] [ a b ] [ [ uncons ] dip tuck [ call ] 2dip each ] 20:54:45 no 20:54:49 ... 20:54:50 [ ] [ a b ] [ swap cons ] [ [ uncons ] dip tuck [ call ] 2dip each ] 20:54:56 ? pops 3, pushes 1! 20:55:07 oh, ok 20:55:11 forgot about the [a b] 20:56:10 [ ] [ a b ] [ swap cons ] [ [ uncons ] dip tuck [ call ] 2dip each ] [ uncons ] 20:56:28 where did [ uncons ] come from? 20:56:38 when [ [ uncons ] dip tuck [ call ] 2dip each ] is executed, it is popped off the stack 20:56:48 .. 20:56:50 so 'dip' sees the stack as: [ ] [ a b ] [ swap cons ] [ uncons ] 20:57:08 2 2 [ + ] call == 4; the + doesn't see [ + ] on the stack 20:57:15 oh, ok, didn't realized its popped 20:57:29 (duh, of course it does) 20:57:56 like EXECUTE :) 20:58:09 [ ] [ a b ] [ swap cons ] [ uncons ] 20:58:16 (thats what dip sees) 20:58:28 [ ] [ a b ] swap [ cons ] 20:58:30 (right?) 20:58:35 no 20:58:38 damn. 20:58:40 it unconses [ a b ] 20:58:43 not [ swap cons ] 20:58:51 recall dip evalutes its parameter "1 eleemnt underneath" 20:59:00 oh yeah 20:59:10 [ ] a [ b ] [ swap cons ] 20:59:23 yes yes :) 20:59:47 [ ] a [ swap cons ] [ b ] [ swap cons ] 21:00:02 [ ] a [ swap cons ] [ b ] [ swap cons ] [ call ] 21:00:22 my first guess for this is 21:00:44 well, whats the stack frame for 2dip 21:00:48 2dip evaluates its parameter "2 elements underneath" :) 21:00:54 so [ call ] is evaluated with stack: 21:00:57 [ ] a [ swap cons ] 21:01:06 and call causes [ swap cons ] to be evaluated 21:01:11 so [ ] a 21:01:12 a [ ] 21:01:14 --- quit: warp0b00 (orwell.freenode.net irc.freenode.net) 21:01:14 --- quit: ooo__ (orwell.freenode.net irc.freenode.net) 21:01:16 [ a ] ( cons ) 21:01:32 but 2dip ends, and now [ b ] [ swap cons ] is restored on stack! 21:01:32 so stack is now 21:01:35 and then again [ a ] [ swap cons ] [ b ] 21:01:40 [ a ] [ b ] [ swap cons ] 21:01:45 er, other way i meant 21:01:49 yeah, like that. 21:01:52 'each' is called, so it recurses 21:02:11 [ b ] [ a ] 21:02:13 [ b a ] 21:02:15 :) 21:02:21 wow, i need to get into this, seems fun 21:03:22 --- quit: Sonarman (orwell.freenode.net irc.freenode.net) 21:03:22 --- quit: arke (orwell.freenode.net irc.freenode.net) 21:03:22 --- quit: madgarden (orwell.freenode.net irc.freenode.net) 21:03:22 --- quit: mkennedy (orwell.freenode.net irc.freenode.net) 21:03:22 --- quit: ree (orwell.freenode.net irc.freenode.net) 21:03:22 --- quit: Herkamire (orwell.freenode.net irc.freenode.net) 21:03:22 --- quit: OrngeTide (orwell.freenode.net irc.freenode.net) 21:03:22 --- quit: cmeme (orwell.freenode.net irc.freenode.net) 21:04:24 --- join: arke (~Chris@wbar8.lax1-4-11-099-104.dsl-verizon.net) joined #forth 21:04:24 --- mode: irc.freenode.net set +n 21:04:51 --- quit: arke (Client Quit) 21:04:56 --- join: ree (~jwm@ns.fasthost.net) joined #forth 21:04:56 --- join: Herkamire (~jason@h000094d30ba2.ne.client2.attbi.com) joined #forth 21:04:56 --- join: cmeme (~cmeme@216.184.11.30.unused.swcp.com) joined #forth 21:04:56 --- join: OrngeTide (orange@rm-f.net) joined #forth 21:05:22 --- join: arke (~Chris@wbar8.lax1-4-11-099-104.dsl-verizon.net) joined #forth 21:05:22 --- join: mkennedy (~user@cs24317-114.austin.rr.com) joined #forth 21:05:22 --- join: madgarden (~madgarden@Kitchener-HSE-ppp3576375.sympatico.ca) joined #forth 21:05:25 --- join: arke_ (~Chris@wbar8.lax1-4-11-099-104.dsl-verizon.net) joined #forth 21:05:28 --- quit: arke (Client Quit) 21:05:32 --- join: warp0b00 (~warpzero@dsl.142.mt.onewest.net) joined #forth 21:05:39 ok, back on a useable network :) 21:05:43 slava: so, where were we? 21:05:46 arke_, you should :) slava.kicks-ass.org/slava/Factor.jar. you'll still need JDK 1.4.2 for this, but I'll get it working with GCJ soon 21:05:54 --- join: Sonarman (~matt@adsl-66-124-254-175.dsl.snfc21.pacbell.net) joined #forth 21:06:17 "_ 21:06:18 :) 21:06:19 --- nick: arke_ -> arke 21:07:40 fun map ( nil f ) = nil | map ( h::t f ) = f(h) :: map (t, f); 21:07:48 (Smerdy would be proud of me) 21:09:37 a bit simpler than mine ;) 21:09:45 yep :) 21:10:04 since ML doesn't allow direct manipulation of stuff, i don't know how to implement each 21:10:32 there's no equivalent 21:10:38 each(L,f) returns length(L) values 21:10:48 well not even 21:10:58 depends on how many values if any f returns 21:12:23 --- quit: warp0b00 (orwell.freenode.net irc.freenode.net) 21:12:54 slava: do you have folds in your listforth? (what is it called, btw?) 21:13:07 --- join: warp0b00 (~warpzero@dsl.142.mt.onewest.net) joined #forth 21:13:12 arke, its called 'factor'. what is a fold? summing a list of integers for example? 21:13:27 : sum-list 0 swap [ + ] each ; 21:13:34 foldl f init [x1, x2, ..., xn] 21:13:34 returns 21:13:34 f(xn,...,f(x2, f(x1, init))...) 21:13:34 or init if the list is empty. 21:13:38 [ 1 7 8 5 12 43 ] sum-list 21:13:39 foldr f init [x1, x2, ..., xn] 21:13:41 returns 21:13:43 f(x1, f(x2, ..., f(xn, init)...)) 21:13:47 or init if the list is empty. 21:13:53 --- quit: madgarden (orwell.freenode.net irc.freenode.net) 21:13:53 --- quit: mkennedy (orwell.freenode.net irc.freenode.net) 21:13:58 arke: swap [ ] each 21:14:11 --- join: mkennedy (~user@cs24317-114.austin.rr.com) joined #forth 21:14:11 --- join: madgarden (~madgarden@Kitchener-HSE-ppp3576375.sympatico.ca) joined #forth 21:14:25 arke, or you can define : fold [ dip ] dip each ; 21:14:32 [ 1 75 85 3 ] [ 0 ] [ + ] fold 21:14:43 [ 1 75 85 3 ] [ 0 ] [ + ] 21:14:50 0 [ 1 75 85 3 ] [ + ] 21:14:53 ... calls each 21:17:05 fun foldr ( f i nil) = i | foldr ( f i h::nil ) = f(h, i) | foldr ( f i h::t ) = f(h, foldr(f, i, t)); if i remember correctly 21:17:12 well, yours is much nicer 21:17:14 now thats messy ,-) 21:17:29 Sonarman: ask riastradh (not smerdy) if thats right 21:17:39 why don't you? 21:17:45 fine 21:19:51 --- join: imaginator (~George@166.70.196.201) joined #forth 21:20:51 Sonarman, eyesight blurry from all the cons cells above? 21:21:04 teehee 21:21:56 i once rewrote ML's list almost completely....it was fun 21:22:20 my eyesight is blurry enought as it is :) 21:23:40 fun nth(l, 0) = hd l | nth(nil, i) raise Subscript | nth(h::t, i) nth(t, i-1); 21:23:51 that was a long time ago, gosh... 21:24:26 did you m ean for there to be an '=' after 'nth(h::t, i)'? 21:24:41 uum, yeah, thanks :) 21:24:47 fun nth(l, 0) = hd l | nth(nil, i) raise Subscript | nth(h::t, i) = nth(t, i-1); 21:24:56 ok cool, just wasn't sure :) 21:25:14 typedef void * type; 21:25:20 that looks like some functional programming... 21:25:30 zardon, in a weird sense 21:25:39 what is it? 21:25:43 zardon: SML 21:25:48 zardon, my language factor 21:25:49 zardon: cousin to ocaml 21:25:56 weird 21:25:57 no way! 21:26:00 er, nvm 21:26:05 did you implement it? 21:26:06 cousin to lisp and forth 21:26:08 zardon, yes 21:26:09 slava: i thought he meant mine :) 21:26:10 or is that just pesudo code? 21:26:12 arke, oh 21:26:18 zardon, ok there's confusion here 21:26:20 in C ? 21:26:27 my languaage looks like ... [ ... [ .. . ] ... ] ... ] 21:26:32 arke's looks like ML :) 21:26:56 yeah, i just did SML :) 21:29:03 hey arke, i just want to confirm whether i understand you nth example correctly: nth([1 2 3 4], 3) = [1 2 3]? 21:29:23 you/your 21:29:40 yeha 21:29:55 thanks 21:30:07 my language looks kinda like taht 21:31:04 what is your guys's example above? 21:31:36 hmm 21:34:52 fun nth(h:r, 0) = h | nth(nil, i) = raise Subscript | nth(h:r, i) = h:nth(r, i-1) 21:35:36 no, that's not right 21:35:52 you can't do it like that 21:36:02 nth(l, 0) = hd l 21:36:03 ok 21:36:12 also, its a double colon :) 21:36:42 but isn't it: head::tail and head:rest? 21:36:52 l0l 21:37:33 so? :) 21:37:50 :) 21:38:05 am i terribly confused? :) 21:38:37 how about we join #sml and be partner partial n00bs 21:38:39 what are you guys doing 21:38:47 warp0b00: SML geekin 21:38:48 math assignment ;) 21:38:53 :P 21:38:58 hehe :) 21:39:29 Sonarman: wanna do that? 21:39:32 no! 21:39:45 sorry 21:39:50 just instinct 21:39:54 aww, why not? :) 21:40:01 arke: did you make a language like sml? 21:40:29 no.. 21:40:32 because 1) i'm going to be forced to take a shower soon and 2) they'll tell us to RTFM :) 21:40:45 --- join: Nutssh (~Foo@gh-1177.gh.rice.edu) joined #forth 21:40:50 and 3) because #sml sounds scarrrrrrry ;) 21:41:00 naah 21:41:06 --- part: Nutssh left #forth 21:41:08 the #sml people are cool, except smerdy 21:41:14 smerdy is cool 21:41:14 Riastradh is quite nice 21:41:23 i'm in 21:41:25 he is, but in his own way :) 21:41:26 *shiver* 21:41:28 Ok 21:41:29 3 21:41:29 2 21:41:30 1 21:41:31 GO 22:06:27 --- join: Serg (Serg_Pengu@212.34.52.140) joined #forth 22:25:04 --- quit: Sonarman ("leaving") 22:36:02 --- quit: ree (Read error: 60 (Operation timed out)) 22:38:34 --- join: ree (~jwm@ns.fasthost.net) joined #forth 23:36:57 --- quit: proteusguy (Read error: 104 (Connection reset by peer)) 23:46:11 --- join: MarkT (Mark@operator.nss.udel.edu) joined #forth 23:59:59 --- log: ended forth/04.02.11