00:00:00 --- log: started forth/04.06.29 00:00:51 --- quit: kc5tja ("THX QSO ES 73 DE KC5TJA/6 CL ES QRT AR SK") 00:02:56 --- join: arke_ (~Chris@wbar8.lax1-4-11-100-108.dsl-verizon.net) joined #forth 00:03:36 --- part: arke_ left #forth 00:13:05 --- quit: JAPeters () 00:16:48 anybody familiar with the IRC protocol that can help me? 00:17:51 --- join: solar_angel (~jenni@Toronto-HSE-ppp3685160.sympatico.ca) joined #forth 00:29:21 --- join: lalalim (~lalalim@p508AA4A8.dip.t-dialin.net) joined #forth 00:37:53 --- quit: lalalim_ (Read error: 60 (Operation timed out)) 00:59:40 --- join: Herkamire (~jason@h000094d30ba2.ne.client2.attbi.com) joined #forth 01:40:46 --- quit: Herkamire ("bed") 02:11:45 --- join: aum (~aum@port-204-54-210.fastadsl.net.nz) joined #forth 02:47:43 --- quit: solar_angel ("*gone gone gone*") 03:20:44 --- join: ASau (~asau@158.250.48.204) joined #forth 03:21:00 Dobry den. 03:22:12 --- join: qFox (C00K13S@cp12172-a.roose1.nb.home.nl) joined #forth 03:22:40 Dobry den, qFox. 03:32:46 --- join: solar_angel (~jenni@Toronto-HSE-ppp3685160.sympatico.ca) joined #forth 03:40:08 God dag, solar_angel. 03:42:46 danke 03:44:33 --- join: crc (crc@0-1pool88-6.nas48.philadelphia1.pa.us.da.qwest.net) joined #forth 03:45:42 Terve, crc. 03:45:53 I've forgotten this: 03:45:59 Terve? 03:46:07 http://asau.hotbox.ru/c-forth-last.tgz 03:46:18 x/clear 03:46:45 I can't recall what's that, you have to diff. 03:49:28 "Terve" is in Finnish. 03:49:40 * crc doesn't know Finnish 03:50:52 Speak to mur. 03:51:04 Talk... 03:51:27 I have finally ported RetroForth to BeOS :-) 03:52:11 Congratulations. 03:55:17 The BeOS port uses LIBC for 'emit' and 'key' and 'bye', so it should also work under other OSes with a simple reassemble+link 03:56:20 hehehe, i had an early version of the FORTH in Cy/VOS running in linux that way 03:57:27 It actually works very well, though the binary is HUGE (~600k stripped) 03:57:57 Link to dietlibc? 03:58:06 * crc should work out getting the memory for code + dictionary into the .BSS section 03:58:34 that *is* a huge binary 03:58:43 my whole OS is a tenth that size 03:59:03 I allocate 524,288 bytes for code 03:59:07 oh :P 03:59:27 And 65,536 bytes for dictionary entries 03:59:54 Normally they're put into .BSS automatically, but the libc backed port doesn't want to cooperate on this :-( 04:00:15 that sucks. 04:00:39 Yup 04:01:46 I also allocate 128,000 bytes to store inline strings. I should try to trim down these sizes though 04:02:11 geeze :P 04:02:23 No one has ever written a program in RetroForth that comes close to needing 500k of compiled code or 128k of strings :-) 04:02:37 that's bigger than the *runtime footprint* of my OS. including the reserved free memory it uses, and the memory it wastes by not freeing the sources after boot. 04:02:51 also including the page tables. 04:03:28 TCN set the current sizes in Retro4 04:05:06 * crc has never used more than 128k of code space in total 04:05:23 And that was just for testing the compiler speed 04:06:06 In actual practice, I can live quite nicely with <64k 04:06:19 agreed. 04:06:22 I live with 16K. 04:06:29 i live in exile 04:07:23 * crc will attempt to trim the memory footprint of RetroForth 7 to 64k 04:07:51 I used Retro1 (64k real mode) until TCN released Retro4a :-) 04:13:26 I'll shrink the code space to 32k, that leaves ~24k for the dictionary + strings 04:22:22 Ok: 32k code, 8k dictionary, 1k TIB, room for 64 inline strings, and the kernel+bootstrap Forth = 52,736 bytes under Windows :-) 04:26:35 * crc now wonders how deep the stack needs to be 04:29:13 It can currently hold ~450 32-bit values 04:38:58 * aum is thinking about word management options 04:39:16 one option is to store word sources in a mysql database 04:39:42 already got about 700 words, and growing 04:42:18 That's a lot of words 04:45:43 --- quit: crc ("Sleeping...") 04:51:40 for instance, 'url@' which opens and reads a full url 04:55:03 --- quit: ASau () 04:56:29 hm, i've read thru the source of ciforth, and am not sure whether it actively compiles threaded code on demand, or on assembling 04:56:52 DD FROMR 04:56:52 DD LATEST 04:56:52 DD TDFA 04:56:52 DD FETCH 04:56:52 DD STORE 04:56:53 DD SEMIS 04:56:58 for instance.. 04:57:01 (for does>) 04:58:15 that looks like hand-compiled DTC thread code 05:03:21 so on demand? 05:03:43 ? 05:03:52 at first i thought all words were coded in asm :) 05:04:07 well, does it compile the word on assembly, or when its ... used 05:04:12 nope, you've got some coded as thread code 05:04:24 which are executed in the way a standard DTC works 05:04:31 which is... 05:04:45 um... it compiles into DTC code on definition 05:04:51 oh 05:04:57 basically just a list of addresses of functions to call, with a "CALL ENTER" at the start 05:05:20 muh, k 05:05:29 my first FORTH was DTC. 05:05:43 d.... threaded code? 05:05:54 i since ported it to STC. 05:07:02 --- join: Murrlin (murr@dialup-207-218-229-104.ev1.net) joined #forth 05:07:57 direct 05:07:57 as opposed to subroutine 05:07:57 read "Moving FORTH", it'll show you the way 05:08:13 g'morning 05:08:35 lo 05:09:17 lets see if i can tear out the voc protection :p 05:09:53 solar_angel: Hi. I played a bit with 2N7000s... One of those with a 1000pF cap to the ground, can be charged and discharged with ordinary BC549s without any significant amount of charge leaking. Storing data for half an hour was no problem, but then I got tired of testing. 05:10:07 Robert - cool. 05:10:25 Now I'm trying to figure out some good addressing/control logic. 05:10:26 Robert - be careful of your RC time constants though 05:10:55 i came up with a cool architecture for my design... i'm looking at making it in ECL. 05:10:56 You mean when charging the cap? 05:11:01 possibly asynchronous ECL. 05:11:09 charging and discharging, yes. 05:11:47 Discharging is done directly to ground through a BC549, but charging is done via a resistor. 05:12:27 well, you have the same current in either direction 05:12:28 One tricky thing is that you have to reset the memory before writing to it. 05:14:03 that's not that uncommon. 05:14:19 Ah, good. 05:44:41 robert is becoming a hardware engineer ? 05:44:55 ugh and i had high hopes of you becoming a real software engineer :P 05:45:01 * I440r_ mutters 05:45:04 :) 05:45:15 brb - makin coffee 05:48:16 morning I44 05:53:23 yet another mur :P 05:54:24 hello 05:55:39 Hehe 05:55:56 I440r_: Just another of those StupidProjectsThatLeadNowhere, I like those ;) 05:56:21 hey 05:56:27 Hi mur 05:59:52 hi 06:00:00 Kak ty? 06:00:33 --- quit: aum () 06:01:34 :) 06:01:45 they are called "an education" 06:02:56 Hehe 06:11:32 information supplied by SEE should contain stack comments :\ 06:14:56 qfox it cant easilly 06:15:09 would mean compiling stack comments into the code. err... they are COMMENTS lol 06:15:12 thats what view is for 06:15:18 uhm no 06:15:23 it can be done easily 06:15:23 but even view means compiling more cruft in 06:15:39 if you have a seperate field for "SEE purposes" 06:15:48 a string with the definition 06:16:42 I440r_: To abort a for/nxt loop in IsForth, do I use unloop or something? 06:16:57 stack comments make it a whole lot easier to understand, test and alter a certain word, because right now i'm looking at code and dont know what the word expects. kinda sux 06:17:52 : SAVE R> SRC 2@ IN @ >R >R >R >R ; 06:21:03 oh mur != Murrlin 06:21:04 heh 06:21:43 Looks like it's part of a context change routine. 06:21:56 its part of evaluate 06:21:58 first word 06:22:15 i want to try and turn ciforth to a case INsensitive system 06:22:41 that ought to save me a lot of frustration 06:23:20 and after that, i want to be able to use history (up-key to call back previous lines) 06:23:28 so i'll need to know how evaluate works :) 06:23:31 in ciforth 06:23:50 correct ^^ 06:34:52 mur Murrlin = . 0 OK 06:35:29 then you have strange words 06:35:38 i'm getting errors :p 06:35:57 also, why the hell is SEE showing tick ' ,when i'm asking for 'INTERPRET 06:37:13 and why IS it working when i define a word starting with ' myself... 06:37:14 wtf 06:57:14 --- quit: Murrlin ("Mischief managed! ....Nox.") 07:10:49 forth worship http://saddleback.edu/MEDIA/IMAGES/ROTATE/pe01.jpg 07:10:57 because forth is eccentric 07:11:38 thats not forth specific ;) 07:22:23 robert no just do an r>drop 07:22:54 actually you cant do an early exit from a for loop, you could do an r>drop exit tho 07:25:08 You can store an out of range value to I, that would terminate a loop? 07:25:42 2/clear 07:25:44 errk. 07:26:00 early exit from a for loop? 07:26:05 you can't just UNLOOP EXIT ? 07:26:29 or LEAVE? 07:26:56 errr, right, i keep forgetting about LEAVE 07:26:59 i don't have one of those :P 07:30:02 I am idly thinking about porting the PicForth concept over to the AVR. PicForth uses an 8 bit word size. The AVR does a little better at 16 bit operations than the PIC does, but not exceptionally so. Do I use 16 bits, and pay the penalty when I don't need 16 bits, or use 8 bits, and pay dearly when I *need* 16 bits? 07:43:51 Uhm. 07:44:18 I just used different words for 8- and 32-bit operands. 07:44:34 And some for the (relatively few) cases when both were mixed. 07:45:19 what is $C+ ? 07:46:02 12 + ? 07:46:20 not from what i can see 07:46:23 Hehe 07:46:38 dup >r dup @ + cell+ c! 1 r> +! 07:46:46 (although i hadnt seen it that way yet :) 07:47:11 but i dont get it 07:47:13 dup @ + 07:47:19 why... 07:47:50 You should reformat the code with stack pictures as it goes. 07:47:58 dup ( n -- n n ) 07:48:04 >r ( etc ) 07:48:12 yes thank you, could you pweees tell that to the author of ciforth? 07:48:22 no 07:48:44 ppeeews 07:48:59 visualize whirled peas 07:49:19 jc> i'm going to try to alter ciforth, but the source nor documentation has stackcomments 07:49:29 I understand that. 07:49:38 hence i'm asking, since $C! $C@ are unknowns to me 07:49:46 But when I'm looking at code that I don't understand, I find that breaking it down helps me a lot. 07:50:05 break it down :p 07:50:11 * jc spins 07:50:20 but what use could dup @ + be? 07:50:43 Calculates an offset, maybe? 07:50:47 qfox i cant tell you 07:50:48 For a table. 07:51:15 For a counted string, it would point one byte past the end of the string. 07:51:16 the 0th element of an array might be a state variable 07:51:24 and the other elements are the actions for each state 07:51:31 tho... that might not be what he is doing there 07:51:40 the word is used in CONTAINS 07:51:50 CREATE pad 80 ALLOT : CONTAINS 0 pad ! BL pad $C+ 07:51:50 pad $+! BL pad $C+ pad @ - OVER + SWAP 07:51:50 DO I pad $@ CORA 0= IF -1 UNLOOP EXIT THEN LOOP 0 ; 07:52:01 oooh 07:52:13 the 0th element of the array is the # items IN the array 07:52:33 dup @ + points to the NEXT available space in the array 07:53:01 errr they must be byte data tho (with a word count?) 07:53:08 oh so in pad, 0 = the len? 07:53:22 pad is just a scratchpad 07:53:26 i know 07:53:31 but i mean in this context 07:53:32 The C implies (to me) character ops. C@ for strings and bytes, right? So I'm sticking with my counted strings idea. It's scanning a list of strings, perhaps. 07:53:35 and you dont normally "Create" it 07:54:00 this is the file that defines TUCK as well, somewhere 07:54:00 err $c+ concat's strings ? 07:54:06 oh perhaps 07:54:54 this config file has to be manually loaded once the ciforth is started. you can load different screens containing all kind of stuff. this part is in the first screen, which is loaded by all the other screens (because it contains REQUIRE) 07:54:55 My interpetation: 07:55:06 so i'm not really surprised that pad is defined here as well 07:55:16 Creates pad. adds a blank. Adds a passed string. Adds a blank. 07:55:22 the clean booted ciforth system doesnt even has SEE :\ 07:55:39 hm, has = have 07:56:19 You know, it's people who write code like that who give Forth the reputation as being a write-only langauge. 07:56:40 unfortunatly i'll have to make due 07:56:57 --- join: aum (~aum@port-204-54-210.fastadsl.net.nz) joined #forth 07:57:18 Whta does CORA do? 07:58:00 muh, asm CODE 07:58:13 WIth no comments, I'm sure. 07:58:43 actually, it is (the ciforth source is commented), no stack comments tehre though >:( 07:58:46 spam. 07:58:49 MOV EDX,ESI ;SAVE 07:58:49 XOR EAX,EAX ; Result 07:58:49 POP ECX ; count 07:58:49 POP EDI ; addr2 07:58:49 POP ESI ; addr1 07:58:49 CLD ; INC DIRECTION 07:58:51 REP CMPSB ; Compare BYTE 07:58:54 JZ CORA3 07:58:55 MOV AL,1 ;Remainder is already 0 07:58:58 JNC CORA3 07:59:00 NEG EAX 07:59:02 CORA3: 07:59:04 MOV ESI,EDX ;Restore 07:59:06 PUSH EAX 07:59:08 LODSD ; NEXT 07:59:10 JMP LONG[EAX] 07:59:15 case sensitive string compare. 08:00:32 well the whole goal of this require word, is to load a certain screen containing the definition of require, if the word is not defined already 08:01:14 if so, require calls find&load, which attempts to find the word in that specific file (only certain "header" lines, that contain the def's for that screen) 08:01:29 if it finds a header containing the word, it loads the screen, thus defining the word 08:01:32 It looks like there's a table of words, like " Hi There Forth User ". CONTAINS takes a passed string, like "There", puts it in PAD with blanks on either side, and searches this table. 08:01:43 If found, it returns the offset into the table it found it at. 08:01:51 sounds reasonable 08:03:16 BTW, why do you want a case insensitive Forth? 08:03:22 for some reason, these words are not listed in the help files.... 08:03:44 because i do. i dont want to have to type words in case 08:04:05 its not like i'm going to define a certain name twice, in different case 08:04:21 and having to type everything in upper case is plain annoying, for me anyways 08:04:39 What?!? No dup, Dup, dUp, duP, DuP and DUP, that all do different things? 08:04:48 no :) 08:04:52 what about reverse 08:04:56 do you need PUD and pud 08:04:59 for special occasions 08:05:06 ...? 08:05:09 to liven up the code 08:05:21 uhm, yeah, sure? 08:05:22 like english, overuse of the same word gets dull 08:05:39 well, you know what, you can do it in your forth :p 08:05:52 no i just really prefer no CS 08:06:00 i don't think you take my pud seriously 08:06:17 that's correct 08:09:08 btw, he does define PAD and pad :\ 08:34:37 --- quit: SolarFire (orwell.freenode.net irc.freenode.net) 08:35:22 --- quit: lalalim (orwell.freenode.net irc.freenode.net) 08:35:22 --- quit: fridge (orwell.freenode.net irc.freenode.net) 08:35:22 --- quit: I440r_ (orwell.freenode.net irc.freenode.net) 08:35:22 --- quit: Frek (orwell.freenode.net irc.freenode.net) 08:35:23 --- quit: madgarden (orwell.freenode.net irc.freenode.net) 08:35:23 --- quit: ianp (orwell.freenode.net irc.freenode.net) 08:35:23 --- quit: ChanServ (orwell.freenode.net irc.freenode.net) 08:35:23 --- quit: qFox (orwell.freenode.net irc.freenode.net) 08:35:23 --- quit: Robert (orwell.freenode.net irc.freenode.net) 08:35:23 --- quit: I440r (orwell.freenode.net irc.freenode.net) 08:35:23 --- quit: Klaw (orwell.freenode.net irc.freenode.net) 08:35:38 --- join: SolarFire (SolarFire@pD954584B.dip.t-dialin.net) joined #forth 08:35:38 --- quit: SolarFire (orwell.freenode.net irc.freenode.net) 08:36:21 --- join: SolarFire (SolarFire@pD954584B.dip.t-dialin.net) joined #forth 08:36:28 --- join: ChanServ (ChanServ@services.) joined #forth 08:36:28 --- join: qFox (C00K13S@cp12172-a.roose1.nb.home.nl) joined #forth 08:36:28 --- join: lalalim (~lalalim@p508AA4A8.dip.t-dialin.net) joined #forth 08:36:28 --- join: Frek (anvil@h87n2fls31o815.telia.com) joined #forth 08:36:28 --- join: fridge (~fridge@dsl-203-33-162-85.NSW.netspace.net.au) joined #forth 08:36:28 --- join: I440r_ (~mark4@168-215-246-243.gen.twtelecom.net) joined #forth 08:36:28 --- join: Robert (~snofs@c-bf5a71d5.17-1-64736c10.cust.bredbandsbolaget.se) joined #forth 08:36:28 --- join: I440r (~mark4@216-110-82-1.gen.twtelecom.net) joined #forth 08:36:28 --- join: Klaw (~anonymous@ip68-228-92-218.oc.oc.cox.net) joined #forth 08:36:28 --- join: madgarden (~madgarden@Kitchener-HSE-ppp3576399.sympatico.ca) joined #forth 08:36:28 --- join: ianp (ian@inpuj.net) joined #forth 08:36:28 --- mode: irc.freenode.net set +o ChanServ 08:43:31 a tear in the fabric of my mind 08:56:58 is there a word that takes a stack sig such as ( value addr u -- ) and creates a constant with name 'addr u' with value 'value' ? 08:57:27 in other words, a word that can create a constant of a specified name at run-time 08:57:38 SEE BRANCH 08:57:41 CAN'T HANDLE BRANCH 08:57:45 uh.. nice... 08:57:46 :p 08:59:55 or, is there a way to assign a name to a noname func? 09:03:34 aum> pass it on to evaluate? 09:04:16 qFox: that'll work, but it feels like a cheat :P 09:04:24 well, duh :) 09:07:42 --- quit: solar_angel ("BitchX: nine out of ten gynecologists recommend it") 09:23:34 --- quit: I440r_ (Read error: 104 (Connection reset by peer)) 09:24:16 join #cassini if you're interested in the Cassini probe. 09:29:49 whats that.. 09:30:24 http://www.nasa.gov/mission_pages/cassini/spacecraft/index.html 09:35:28 --- join: warpzero (~warpzero@mi160.dn182.umontana.edu) joined #forth 09:35:36 --- join: arke_ (~Chris@wbar8.lax1-4-11-100-108.dsl-verizon.net) joined #forth 09:40:01 --- quit: skylan (orwell.freenode.net irc.freenode.net) 09:41:18 --- join: skylan (~sjh@vickesh01-4831.tbaytel.net) joined #forth 09:42:18 lol 09:43:43 oh 09:43:48 im on the new bear server 09:43:50 ;) 09:44:52 charming :) 09:45:04 the what 09:45:42 bear.freenode.net 09:45:53 just went online yesterday 09:47:15 mur is on a sun :) 09:48:04 SDO is on BeOS 09:48:16 lalalim seems to be my mom's boyfriend 09:49:18 what 09:50:32 * SolarFire has NOT quit ("BitchX: Spam? Yeah, give me more!!") 09:51:42 yeah ... uuum .... SolarFire .... why no CTCP reply? 09:51:44 Received a CTCP VERSION from arke_ (to #forth) 09:51:48 Received a CTCP VERSION from arke_ (to #forth) 09:52:02 KICK HIS ASSSSSSSSS 09:52:04 shall i continue? 09:52:31 [04:52:39] -arke_- VERSION xchat 2.0.7 Windows 5.1 [i686/1.20GHz] 09:52:36 windows 09:52:41 * Received a CTCP USERINFO from arke_ 09:52:41 * Received a CTCP CLIENTINFO from arke_ 09:52:41 * Received a CTCP PING 83821424 from arke_ 09:52:41 * Received a CTCP PING 86305424 from arke_ 09:52:41 * Received a CTCP TIME from arke_ 09:52:42 * Received a CTCP FINGER from arke_ 09:52:49 warpzero: yes. sue me. 09:53:18 * warpzero calls up his laywer 09:53:32 suing me for using windows....lol 09:53:43 arke_ must have a red nose already.. ;-) 09:54:09 but don't put it in the wrong hole ;-) 09:56:10 bleh 09:56:13 [04:54:23] but don't put it in the wrong hole ;-) 09:59:11 can switch back to manners, if that's a request.. :)) 09:59:21 no please don't 09:59:27 --- join: I440r_ (~mark4@168-215-246-243.gen.twtelecom.net) joined #forth 09:59:37 the world needs more rude and offensive people :) 09:59:52 lol positive ;-) 10:00:23 Hi 10:00:31 Ho 10:01:14 Hi 10:02:35 sighs 10:02:42 yeah so 10:02:45 back2work 10:02:48 my life is ruined 10:04:58 warpzero: pray 10:05:54 * warpzero prays to the god of f*** 10:07:16 umm what are you praying for, then? 10:07:26 i don't know 10:07:32 i don't know what to do with my life... 10:07:54 Live it. 10:08:06 well uh 10:08:55 i'm doing that but 10:09:16 ..waiting for something more? 10:09:53 i'm just not sure what i should do you know 10:10:19 What makes you think I am? 10:12:17 i don't 10:12:18 but 10:12:23 I plan to sit on IRC until I'm 90 10:12:30 remember the question was what i am i praying about 10:12:32 then I might curl up and die 10:12:36 fridge: i wish i could do that 10:12:40 but i got no internet at home 10:12:52 perhaps you could make it your life goal 10:12:57 to get internet at home 10:13:03 so you can sit on IRC until you're 90 10:13:07 and then curl up and die 10:13:22 I turned 25 on saturday 10:13:30 the last 5 years have just flown by me 10:15:57 nota bene, "not sure" != "don't know" 10:17:22 arke_, yep, SDO in BeOS 10:17:55 SDO: :) 10:19:36 BeOS is DeAD 10:19:36 warpzero: humility clears vision, quite some times shocking ;-) 10:20:07 orly 10:20:18 ? 10:20:31 so you suggest i find some humility eh 10:20:34 s/orly/Oh, really?/ 10:20:50 ic 10:23:19 warpzero: it's mighty peaceful key, we all need it. not you in particular, don't get me wrong. 10:23:24 *a 10:23:41 is there a way to get the xt of the word before last? 10:23:50 last-word only gets the most recent word 10:28:16 warpzero: " sighs" - was my last recent prayer for it, it's a joy, get's me back on track :-) plz don't bother, was about sharing the good, not offending.. 10:30:37 oh i see 10:38:15 aum: why would you want that? :) 10:39:41 aum: if you have a smudging forth, you could probably do something like : : last-word 2ndlast ! : ; 10:39:43 :P 10:42:37 --- join: SolarFire-| (SolarFire@pD9E5999E.dip.t-dialin.net) joined #forth 10:43:55 --- quit: SolarFire (Nick collision from services.) 10:44:13 --- nick: SolarFire-| -> SolarFire 10:45:56 is 2@ "@ dup dup" or "@ SWAP @" ? 10:46:51 neither 10:47:09 dup @ swap 1+ @ 10:47:18 dup @ swap cell+ @ technically 10:48:50 although it may be "dup cell+ @ swap @", depending on the endianness. 10:49:26 oh so it reads two cells from adr? 10:49:44 Yes. 10:49:47 makes sense with the code, tnx 10:50:18 Those pictures of Phoebe are just so nice. 10:50:35 Sorta doesn't really look real. 10:50:55 Still very nice. 10:51:03 phoebe? 10:51:03 Oh, totally. But they seem surreal. 10:51:13 Don't mind if they fake it, as long as they're that nice :) 10:51:16 why am i thinking you're not talking about female? 10:51:32 qFox: Because we're Forth geeks? 10:51:33 Yea, phoebe cates photos. 10:51:37 You haven't seen them? 10:51:45 oh that probe thingie? 10:51:50 yea 10:51:53 ah :) 10:52:08 nah not really facinated by that stuff 10:52:26 hm, or is it fascinated 10:52:42 it is. 10:54:15 I want to build my own probe. 10:55:16 I'd like to build oceanic research platforms, RPVs, and APVs. 10:55:34 What are those TLAs? 10:56:09 Remotely Piloted Vehicles and Autaumomus (fsck, I can't spell it today) PVs. 10:56:49 Autonomously 10:57:12 Program a mission, dump them in the water, pick them up days, weeks, months or years later. 10:59:37 Cool. 10:59:51 I thought about something like that, too. 10:59:58 I just don't know what to do with them. 11:00:15 As I don't like projects with a budget over a few tens of USD ;) 11:00:45 Yah, that's a problem for me, also. 11:01:22 Maybe some light sensor or something 11:01:56 anyknow know what L@ means? 11:02:02 POP EBX ;MEM LOC 11:02:02 POP ECX ;SEG REG VAL 11:02:17 (and more... but these are the parms) 11:02:28 returns something as well 11:02:41 Looks like it's reading a segment:offset pair from the TOS. 11:02:49 PUSH EBX 11:03:15 perhaps a far fetch? 11:03:22 long@ 11:04:13 Is there something like push es, mov es,cx mov bx,es:[bx] in there? 11:04:49 between the pop/push 11:04:50 MOV EDX,DS ; Leave this for real mode code. 11:04:50 MOV DS,ECX 11:04:50 MOV EBX,[EBX] 11:04:50 MOV DS,EDX 11:04:57 --- quit: Fractal (Read error: 110 (Connection timed out)) 11:05:07 Yea. It's getting a 16 bit word at the long address that's passed in. 11:05:22 isnt it 32? EBX 11:05:23 sri, 32 bit. 11:05:26 :) 11:06:00 so : L@ ( seg adr -- n ) 11:06:17 yes 11:09:36 * Robert is playing with a genetic algorithm to generate a Forth program. 11:09:56 Robert: COOOL!!!! 11:09:57 Right now the correct function is "2 *", and here are the top suggestions: 11:10:00 Robert: DETAILS!! 11:10:07 Quality 037: 14 * 12 + 8 11:10:07 Quality 037: 2 + dup / 11:10:07 Quality 037: 8 drop 11:10:07 Quality 038: 5 - 11:10:15 Where 40 is the highest. 11:10:43 wow 11:10:45 that sucks 11:10:46 lol 11:10:48 Yep 11:10:54 Right now that's only random programs. 11:10:58 Robert: /msg me teh source. 11:11:04 Yeah, right. 11:11:18 I'll sell it to MS and make $$$ for my space probe. 11:21:03 Cool 11:21:05 Now it works. 11:21:22 And for some reason it thinks "dup +" is best :) 11:23:31 is _ a long jump? 11:23:57 Robert> it creates forth code from... math or something? 11:24:37 PUSH EAX 11:24:38 LODSD ; NEXT 11:24:38 JMP LONG[EAX] ;Whatever happens to be in EAX, i.e. the dea of ``_''. 11:24:52 i think thats a far jump 11:24:53 qFox: Trial-and-error. 11:25:13 Robert> when is it satisfied with the result? 11:25:40 It isn't. It just tries a number of time, and returns the result. 11:26:15 hmmm, but what is the reason for choosing that result? 11:26:24 what makes it feel result 2 is better then result 4 11:27:11 There's a function that tests how well, the program replies to a number of random inputs. 11:27:21 s/,// 11:27:43 dup + may well be better than 2 * 11:27:46 So basically if(f(x) == 2*x) add_pointer(); 11:28:01 Depends on the optimizer and architecture. 11:28:06 nice 11:28:17 jc: I know, but this program doesn't care about that. 11:28:25 jc: It only counts stack usage and end result. 11:28:38 There's no weighting? How are qualities assigned? 11:28:45 muh, was it a good idea to have a word for single digit numbers? 11:28:47 stack usage. That might explain it. 11:29:03 ciforth has 0 1 and 2 defined as a word, putting 0 1 2 on the stack 11:29:34 but i'm not quite sure if that's so much better to having NUMBER? processing it 11:33:13 hm. in regards to earlier, i'm looking at the definition of $@ ,and thats dup cell+ swap @ ,this just means ( adr -- adr+1cell n ) 11:33:16 Well, again, depending on the forth: Some will optimize that to a single push of a number, others will put (literal) number, which may be more expensive. 11:33:47 so the $C@ and $C! were to fetch from and store to adr and return the adr to next cell 11:33:55 ah 11:34:14 not sure whether $ is proper though 11:42:04 --- join: Herkamire (~jason@h000094d30ba2.ne.client2.attbi.com) joined #forth 11:47:54 --- join: wossname (wossname@HSE-MTL-ppp78047.qc.sympatico.ca) joined #forth 11:55:51 ehr, $! is different from $@ in behaviour, : $! ( source len destination -- ) ... ; and copies len bytes from src to des, however, it saves the len in a cell, rather then a byte 12:04:17 perhaps $@ is like COUNT for an uncounted string 12:04:41 (COUNT reads the first byte as length, $@ reads the first cell as length) 12:04:52 nice 12:23:33 and $+! is a string concat function, that uses a cell width for the size field 12:23:58 starting to enjoy this stuff :p 12:25:31 i need ident spoofer 12:25:50 ident is so absolete :\ 12:26:09 its nice for the linux world, but for irc its sucky 12:47:48 --- join: Fractal (jah@selling.kernels.to.linus.torvalds.at.hcsw.org) joined #forth 12:50:26 I GOT GMAIL!!!!!!!!!!!!!!!!!!!!!!!!!11 12:58:38 spam ??? 12:58:39 :) 12:59:29 nooooo 12:59:30 lol 12:59:35 chriswalton87@hotmail.com = spam 12:59:43 I literally get 35 emails a day there 12:59:44 all spam 13:09:33 --- join: arke__ (~Chris@wbar8.lax1-4-11-100-108.dsl-verizon.net) joined #forth 13:09:35 --- quit: arke_ (Read error: 104 (Connection reset by peer)) 13:21:57 --- quit: arke__ ("Leaving") 13:22:02 --- join: arke__ (~Chris@wbar8.lax1-4-11-100-108.dsl-verizon.net) joined #forth 13:27:24 --- join: ASau (~asau@158.250.48.204) joined #forth 13:27:38 Dobryjj vecher! 13:28:58 Privet :) 13:29:56 Terve :) 13:32:04 --- quit: jDoctor (Read error: 104 (Connection reset by peer)) 13:37:39 the number of spam emails i get atm suddenly dropped to about 1 to 3 a day 13:37:51 wonder what made that change 13:38:20 they substituted quality for quantity 13:39:17 qFox: ISP's implementing spam filters at the backbone level? 13:39:26 you dont know @home 13:39:39 but it is possible they're blocking a certain server 13:40:11 it is also possible the spammer (it appeared to be one source sending a huge amount of spam daily) stopped, but i'd sooner believe the first 13:41:07 either way 13:41:09 Arkebot works. 13:41:11 ;) 13:41:25 possibly the spammer got into some kind of trouble and was forced to quit 13:41:28 *hopes* 13:41:54 --- join: ArkeBot (~rk@wbar8.lax1-4-11-100-108.dsl-verizon.net) joined #forth 13:42:11 ArkeBot: BITCH BITCH BITCH!!! 13:42:23 get a room 13:42:24 :p 13:42:31 Right. 13:42:33 :P 13:42:38 Don't play with your bitch in public. 13:42:44 Now, I get to parse. 13:42:48 which won't be fun. 13:42:50 as I hate parsin. 13:42:53 But you know what? 13:42:55 Is it written in Forth? 13:42:56 its a necessary evil 13:42:59 Robert: no :( 13:43:01 Bah. 13:43:33 evil! 13:43:49 it works. stfu. 13:44:20 i wonder if i'll ever get sockets to work, on this note i wonder if i'll ever get this project on the road :p 13:44:22 have to change this to monospace font. 13:45:25 --- quit: ArkeBot (Remote closed the connection) 13:45:40 yes you do 13:45:41 :) 13:57:48 dunno why, but I have never found dynamic space fonts to be very pretty 13:59:01 not for irc imo 13:59:12 its something that go hand in hand 14:01:40 3,3 and otherwise spams like this are ugley 0,0  14:01:41 1,3 and otherwise spams like this are ugley 14,14  14:01:41 3,3 and otherwise spams like this are ugley 14,14  14:01:41 0,0 14,14 and otherwise spams like this are ugley  14:01:45 sorry :p 14:02:13 1a2s3d4f 14:02:20 2a3s4d5f 14:02:31 3a4s5d6f 14:02:37 4a5s6d7f 14:02:49 0k 14:02:55 5a67d8f 14:03:01 Moo. 14:03:17 ok ok you >spammer me 14:03:22 :p 14:04:04 Before poop: ( 7*15 ) 14:04:24 After poop: ( O ) 14:05:53 I know what happened to goatse man. 14:06:02 He couldn't shit. 14:06:07 And then, when he could shit again.... 14:07:11 can we change the subject please? 14:07:32 Moo. 14:08:05 oh god 14:08:07 hahaha 14:08:08 its worse than undernet 14:08:11 lol 14:15:25 FENCE: A user variable containing an address below which FORGET ting is trapped. To forget below this point the user must alter the contents of FENCE . 14:15:47 does this mean that this is the addres limit for protected library words? 14:16:20 like, if i want to FORGET a word who's CFA is below the adr in FENCE, i simply cant unless i change the contents of FENCE? 14:18:46 yes 14:19:47 neat 14:20:06 I think variable width fonts are nice for reading a book 14:20:43 but I like fixed width for any kind of programming or editing 14:22:32 interesting. so you can't FORGET so much that the system is completely unusable 14:23:33 Herkamire, you can change FENCE and forget everything. 14:25:11 yeah 14:27:29 FENCE is nice 14:27:33 as long as you can change it 14:27:35 :) 14:33:05 eh, can someone help me out... 14:33:13 SRC: Return the address addr of the current input source specification, allocated in the user area. It consists of three cells: the lowest and non-inclusive highest address of the parse area the non-inclusive highest address of the parse area and a pointer to the next character to be parsed. 14:33:23 the second sentence specificly. 14:33:40 what would be the difference between the first and second? 14:35:36 also, why on earth does the stack comment look like ( adr -- ) ,when its supposed to return 3 adr's? :\ 14:37:01 lowest non-inclusive highest address... wtf does that mean 14:39:29 --- nick: I440r_ -> I4_wrk 14:39:35 going home 14:39:36 Lowest (address) and non-inclusive highest address. 14:59:08 hi 14:59:26 ASau: why do you use an indirect threaded forth? 15:01:36 Because I'm lazy to recode it. 15:02:22 does it run in dos? 15:02:46 Yes. 15:03:02 does it work in freedos? 15:03:04 Standalone version exists. 15:03:34 It should work even in MS DOS 2.0, I think. 15:03:44 I've never bothered. 15:03:54 what version of dos do you use? 15:04:19 have you tried pygmyforth? its a very nicely coded direct threaded dos forth 15:04:28 Currently I run it under NT5. 15:04:36 the whole thing can metacompile itself and it fits in 200 or so blocks of source. 15:04:41 includes editor. 15:04:41 --- join: doublec (~doublec@coretech.co.nz) joined #forth 15:04:56 Usually I use MS DOS 7 or FreeDOS. 15:05:36 doublec: if you want to see a truely elegant language, try the old pygmyforth for dos. 200k of forth source, includes editor, assembler, and can cross-compile itself to a new dos exe 15:05:53 I've seen Pygmy. 15:06:01 slava, cool, I'll take a look. 15:06:19 doublec: i'm working on the new interpreter right now. 15:06:27 slava, did you know that the Factor.jar on the website seems to have a problem? 15:06:36 I'm familiar with my Forth enough to make changes to kernel. 15:06:46 Which I've changed enough. 15:06:55 bash-2.05b$ java -cp Factor.jar factor.FactorInterpreter 15:06:55 Exception in thread "main" java.lang.NullPointerException 15:06:55 at java.io.Reader.(Reader.java:61) 15:06:55 at java.io.InputStreamReader.(InputStreamReader.java:55) 15:06:55 at factor.FactorInterpreter.runBootstrap(FactorInterpreter.java:417) 15:06:56 at factor.FactorInterpreter.init(FactorInterpreter.java:175) 15:06:57 at factor.FactorInterpreter.main(FactorInterpreter.java:102) 15:06:59 bash-2.05b$ 15:07:17 slava, is that the interpreter for the C VM> 15:08:18 doublec: missing file from jar? 15:08:44 doublec: i'm sorry i left out half the source from the jar -- all the .factor files are not there 15:08:59 heh, ok 15:09:26 slava, I got the dynamic word creation for the html words working. I'll send you the new file if you are interested. 15:09:41 doublec: did you do the other refactorings i suggested? 15:10:32 slava, yep. Did them all. 15:10:37 doublec: i'd love to see the code btw 15:10:40 cool! 15:11:47 To define the html words now I just iterate over a list calling the function that dynamically builds the word for each tag: 15:11:50 doublec: post it to the conc list 15:11:51 [ "method" "action" "type" "value" "name" ] [ define-attribute-word ] each 15:12:03 slava, will do 15:12:12 doublec: do you have any examples of this? 15:12:26 slava, of using it do you mean? 15:12:31 yup 15:12:44 slava, I'll put some together 15:13:15 doublec: cool! does it tie in with the http framework yet? 15:14:04 slava, yes the http continuation framework uses it in a few places and a couple of examples. I still need to add expiring of continuations though but that's halfway done. I'm storing the millis count with the continuation and just need to expire those over a certain age. 15:14:26 doublec: i have an idea -- built the on top of your html output code 15:14:48 i'd love to implement this, since right now the html stream uses an ad-hoc way to output the subset of html it supports 15:15:20 slava, that's a good idea. 15:15:32 doublec: the thing is, how many tags do you want it to support? 15:17:16 slava, I'll add most of the html subset. It's easy to define new html (or xml) words with something like: "p" define-open-html-word 15:17:27 i'd like to be able to do this:
.... [ some-word ] 15:17:38 slava, that would define

,

, p> and

15:17:57 slava, yes I can have it work like that. 15:18:08 Currently that would be: 15:18:30 input/> and form/> for the closing tags but a generic is easy. 15:18:38 doublec: and for tags, either having [ some-callback ] 15:18:43 that would be really cool :-) 15:19:20 [ "textfortag" write ] works now. 15:19:58 oh then some syntax for callbacks like ... a> [ [ show-another-page ] set-callback ] and have set-callback operate on the last tag? 15:20:59 doublec: can you send me the code to look at? 15:21:05 That works right now: 15:21:42 [ [ ..html...] show ] will provide a link that when pressed shows that page and returns back to the calling page (that containing the link). 15:22:11 oh nice 15:22:25 i think we'll be able to make some sites that would be hell to implement in jsp 15:22:30 : counter-example2 ( alist - ) 15:22:30 #! Display a counter which can be incremented or decremented 15:22:30 #! using anchors. 15:22:30 #! 15:22:30 #! Don't need the original alist 15:22:31 drop 15:22:33 [ 15:22:35 0 "counter" set 15:22:37 [ 15:22:39 #! And we don't need the 'url' argument 15:22:41 drop 15:22:43 "Counter: " "counter" get cat2 [ 15:22:45

[ "counter" get write ]

15:22:47 "++" [ "counter" get 1 + "counter" set ] quot-href 15:22:51 "--" [ "counter" get 1 - "counter" set ] quot-href 15:22:53 ] html-document 15:22:55 ] show 15:22:56 don't paste!!! 15:22:57 drop 15:22:59 ] bind ; 15:23:01 This displays a number on the pag with a "++" and "--" link. Pressing those links increments or decrements the count and redisplays the page. 15:23:04 sorry :) 15:23:09 please use a pastebin 15:23:19 eg, http://paste.lisp.org/new/jedit 15:23:20 What's a pastebin? 15:23:22 oh ok 15:23:25 check it out 15:23:38 its a little web app written in lisp. 15:23:43 i'd like to make something similar in factor btw 15:23:51 <3 lisp 15:23:51 neat 15:25:25 http://paste.lisp.org/display/1534 15:25:39 Neat lisp app. 15:26:11 --- quit: warpzero ("Tried to warn you about Chino and Daddy Gee, but I can't seem to get to you through the U.S. Mail.") 15:27:04 doublec: can you send me the cont-html code please :) 15:27:45 slava, Yep. I'm still working on expire though so there are some rough edges in that area. and I haven't been through that code with the refactorings you mentioned yesterday. 15:29:04 doublec: are you ok with lightweight co-operative threading and multiplexed i/o only? i don't want to code native threads in C. 15:29:45 i'd rather make all i/o primitives non-blocking, with callbacks passed in. a blocking i/o interface can be simulated with continuations that let other tasks execute while one task is waiting for i/o 15:30:46 this means that there is no need to deal with thread safety, only re-entrancy. re-entrancy is pretty much inherent from the nature of the stacks, but thread-safety is a pain -- you have to put locks everywhere. 15:34:26 ok this is remarkable... ciforth has 1+ as threaded, rather then CODE 15:35:01 i expected it to have optimized 1+ 15:35:11 qFox: i have this too :) 15:35:16 qFox: can't be bothered optimizing :-P 15:35:43 slava, yes, I like that model. It allows you to use threads more pervasively as they are much more light weight (usually). For example, Erlang has light weight threads and its web server can scale to 80,000 connections. 15:36:53 slava> oh no, i dont mind, but its just that its defined in the asm source, using an opcode to inc is much faster then the threaded solution 15:38:47 and CELL+ is defined as 4 + :p 15:39:52 qFox, when you start program from minimal enough set of primitives, it's usual. 15:40:12 qFox: ah. in asm its kind of silly to do that :) 15:40:51 doublec: in factor's case, everything is stored in the 'env' struct. so a task switch will be a matter of one value being changed. 15:40:59 well its just a bit odd, the author sometimes does, and other times does not use threaded code over optimization 15:41:40 doublec: there will be an optimization for continuations which are suspended as soon as captured and are only restored once, since there won't be any need to clone the stacks 15:41:59 slava, it'll be interesting to see how such a lightweight approach improves scalability of the web server over a native threading model. 15:48:22 doublec: new factor is up, it fixes the problem you mentioned with the incompl;ete jar file :) 15:49:56 qFox, optimization is done only when needed. 15:53:28 slava, thanks for that. 16:02:13 ASau> one would think = would be done unthreaded though 16:08:40 ok, should : <> - 0= 0= ; not be : <> = 0= ; ? = is defined as : = - 0= ; anyways 16:09:17 forth examples make sentences and reading signs hard to read :p 16:12:55 I think, it's up to you. 16:32:44 --- join: arke_ (~Chris@wbar8.lax1-4-11-100-108.dsl-verizon.net) joined #forth 16:32:47 --- quit: arke__ (Read error: 104 (Connection reset by peer)) 18:02:26 slava, what happened to 2each and 2map in the Factor 0.60.3. Have they been removed? 18:10:38 doublec: oh did you use them? 18:11:03 In cont-html.factor I use 2each to define the words from a list of code and a list of word names. 18:11:08 slava, but I can change that. 18:11:13 use each to iterate over an alist. 18:11:20 slava, yes. 18:11:28 do you use ? 18:12:11 slava, yes, in cont-responder.factor 18:13:36 it takes a paremter now which is the initial string buffer size. 18:13:45 not in .3 but in the next release 18:13:48 do you use and sbuf-append? 18:13:51 ok, thanks 18:13:57 no, I haven't used those 18:14:32 dumb q - how do you concatenate 's"'-type strings? 18:15:34 doublec: ok. their stack effects changed too. 18:16:02 aum, is S"-type counted string? 18:16:12 ASau: yes 18:17:52 CMOVE them into PAD or where you want to store result. 18:18:13 PAD is length-restricted, so this is vulnerable 18:18:31 I'm talking about strings with lengths between 0 and (potentially) several megabytes 18:19:18 Why do you thing PAD is length-restricted when you speak about 32-bit system? 18:19:24 ...think... 18:19:45 not to worry - I'm using python string objects instead, and have words 'p">s"' and 's">p"' which convert between python strings and forth 'addr u' strings 18:20:10 Anyway you need place to store the result, so CMOVE to there. 18:20:23 and the word 'p+' which can add any kind of objects - ints, floats, strings, sequences... 18:21:05 so i can do stuff like: 18:21:30 aum: forth in python? 18:21:32 "roses" " are red" p+ -> split (( " " ))* 18:22:08 slava: no - FICL (an ANSI-C based forth) with an added stack for python objects, and embedding the python lib as an OO engine and set of libraries 18:22:46 having the python OO engine is making my forth programming orders of magnitude more comfortable 18:23:57 Anyway, you have to allocate memory for the result of catenation. 18:24:22 Smth like ROT 2DUP + 18:29:55 aum: you like having oop with forth? 18:30:04 slava: it's total bliss 18:30:25 having an 'object stack', where every conceivable kind of object takes exactly one cell 18:30:34 aum: that's what i'm implementing but not with python 18:31:16 I went with the python engine because I like Python's OO model, and since Python has a vast range of inbuilt and 3rd party libs - saves a lot of reinventing wheels 18:31:49 --- quit: qFox ("this.is.not a.real.netsplit") 18:32:09 i'm not using any python syntax parsing whatsoever, save for the python literal tokeniser which uses the python evaluate function for literals like 'p3' (python integer object 3), "fred" (python string 'fred') etc 18:32:30 the result is a forth that manipulates python objects faster than python itself 18:32:53 --- quit: wossname (":~") 18:32:55 and, a bunch of conversion words to convert between python objects and forth ints/floats/strings etc 18:33:09 also, the ability to subclass python classes, and implement methods in forth 18:33:19 --- quit: arke_ (Read error: 104 (Connection reset by peer)) 18:33:28 --- join: arke__ (~Chris@wbar8.lax1-4-11-100-108.dsl-verizon.net) joined #forth 18:34:10 --- join: blockhead (default@dialin-724-tnt.nyc.bestweb.net) joined #forth 18:35:18 aum: my OO kernel is 12k right now 18:37:17 aum, : SMOVE ROT MIN CMOVE ; 18:37:35 : CAT ( s1 s2 sd -- ) 18:37:49 2>R 2SWAP 2R 18:37:59 >R OVER + R> 18:38:07 2R> 2SWAP 2>R 18:38:13 SMOVE 2R> SMOVE ; 18:38:18 --- join: jdrake (irc_user@CPE00045afdd0e8-CM014410113717.cpe.net.cable.rogers.com) joined #forth 18:38:29 Dobre jitro, jdrake. 18:38:37 is there a standard word to take something off of the integer stack and put it on the float and vice versa? 18:38:41 greetings mate 18:43:21 I don't know, read ANS. 18:43:47 It should be something like >F F> 18:49:46 slava: that's great if memory footprint is an issue 18:50:56 what's the most popular util for extracting comments from forth sources and creating html dooc? 18:56:58 --- join: kc5tja (~kc5tja@66-74-218-202.san.rr.com) joined #forth 18:57:06 --- mode: ChanServ set +o kc5tja 18:57:23 yo kc5tja, 'sup 18:58:10 * kc5tja needs to learn some basic Spanish. 18:58:25 por que? 18:58:25 We're getting a lot of tech support cases written in Spanish, and their numbers are growing daily. 18:59:12 that suxors 18:59:40 Well, it doesn't really suck. It's just that I'm unilingual, and it shows very much. 19:01:18 Guten Morgen, kc5tja. 19:01:28 heh 19:01:49 aum, there's no need for this. 19:02:09 ASau: Das ist nicht Spanish. :) 19:02:27 Pseudo-german. :D 19:02:34 If you want to write documentation and source in one file, better use noweb or nuweb. 19:03:09 --- quit: jc (orwell.freenode.net irc.freenode.net) 19:03:09 --- quit: slava (orwell.freenode.net irc.freenode.net) 19:03:10 --- quit: kuvos (orwell.freenode.net irc.freenode.net) 19:03:21 je ne parle pas 'spanish' où 'deutsch' 19:04:15 jdrake: French? I can't tell because où does not render with legible characters for me. 19:04:34 kc5tja, Spanische. 19:04:39 --- quit: skylan (orwell.freenode.net irc.freenode.net) 19:04:39 --- quit: aum (orwell.freenode.net irc.freenode.net) 19:04:39 --- quit: cmeme (orwell.freenode.net irc.freenode.net) 19:04:39 --- quit: SDO (orwell.freenode.net irc.freenode.net) 19:04:40 --- quit: doublec (orwell.freenode.net irc.freenode.net) 19:04:40 --- quit: onetom (orwell.freenode.net irc.freenode.net) 19:04:43 * blockhead mumbles somethign about 0-127 only :) 19:04:45 kc5tja, das Spanische. 19:04:59 ASau: Well, I don't know German either, so there you go. 19:05:03 I'm completely unilingual. 19:05:18 jdrake, do not use non-latin characters. 19:05:27 I have Cyrillic there. 19:05:53 I have 'o', an 'A' with a tilde above it, and a superscript 1. :D 19:06:24 brb 19:06:38 I have lat. or cyr. 'o', cyr. 'G' and number sign. 19:06:41 I see the same as kc5tja 19:07:08 that's what I saw also 19:08:02 --- join: cmeme (~cmeme@216.184.11.30.unused.swcp.com) joined #forth 19:09:30 --- join: slava (~slava@CPE00096ba44261-CM000e5cdfda14.cpe.net.cable.rogers.com) joined #forth 19:10:03 Labas ritas, slava. 19:10:57 i use an irc client that uses UTF-8 and everybody should be able to display that by this day and age 19:11:12 jdrake: that's nice 19:12:05 jdrake: I use irssi, a text-mode IRC client for Linux. It don't grok UTF-8 because text-mode only supports 256 characters. 19:12:05 :) 19:12:05 my terminal supports UTF-8 too 19:12:05 But we don't. 19:12:06 that's nice 19:12:06 jdrake: In Linux? 19:12:06 no 19:12:17 jdrake: What OS? 19:12:20 macos 19:12:33 Ahh, well, there you go. :) It's a BSD base. 19:12:34 --- join: Murrlin (murr@198.64.166.151) joined #forth 19:12:39 it is 19:12:45 I wonder if other BSD variants support UTF-8 on console too. 19:12:49 Labas ritas, Murrlin. 19:12:51 And whether it requires X11 or not. 19:13:47 well my terminal has nothing really to do with bsd 19:13:47 it is all written for the display server here 19:13:47 no text mode or anything 19:13:47 l 19:13:47 umm 19:13:47 no I can't spell foreign phrases at ALL =( 19:13:47 lakka notes 19:13:47 Define 'terminal' in this case? 19:13:47 terminal.app 19:13:48 mac version of xterm essentially 19:14:38 'nn all 19:14:38 --- part: blockhead left #forth 19:14:51 Well, that's nice. 19:14:53 heeheee 19:14:59 cool exit line 19:15:07 But, unfortunately, that's highly MacOS specific then. 19:15:49 I stay as far from UTF as I can 19:15:49 i think gnustep's terminal supports utf-8 aswell, but I haven't verified it 19:15:49 there has to be one variant of xterm that supports utf-8 19:15:49 jdrake: But, again, it requires X11. 19:16:33 --- join: onetom (~tom@novtan.bio.u-szeged.hu) joined #forth 19:16:33 When you say "terminal," I'm assuming something along the lines of a VT100 emulator -- something that can run in a real, honest to goodness, hardware text display mode. 19:16:55 It helps that Macs have no distinguished text display mode. There is no reason to support it, and so therefore, supporting things like UTF-8 is easier. 19:17:36 i don't think mac even has any hardware text mode 19:17:36 And I have insane amounts of lag. 19:17:36 because open firmware is slow as hell :-) 19:17:36 jdrake: That's what I just said. :) 19:17:40 --- join: jc (~jcw@65.3.39.49) joined #forth 19:18:31 Kestrel won't have a text mode either. 19:18:43 --- join: doublec (~doublec@coretech.co.nz) joined #forth 19:19:04 hi jc, dc 19:19:12 --- join: skylan (~sjh@vickesh01-4831.tbaytel.net) joined #forth 19:20:24 Hello 19:20:25 time to plan where I'ma gonna put my 64 one last time 19:20:25 kc5tja, how much memory are we talking about it having (or supporting) 19:20:25 jdrake: It'll use ordinary PC SDRAM DIMMs. 19:20:38 --- join: SDO (~SDO@68.170.20.201) joined #forth 19:20:44 cool 19:21:27 Labas ritas, jc. 19:21:28 jdrake: However, if you have an X MB DIMM installed, only X/4 "words" of memory will appear. 19:21:28 This is because one word is a full 32-bit quantity, not an 8-bit quantity. 19:21:28 the memory would probably be capable of going faster then the actual processor 19:21:28 jdrake: Easily. 19:21:28 However, latency is still an issue even at these slow speeds. :/ 19:22:21 kc5tja, how are you planning on storing programs 19:22:41 just thinking of a cool method - usb keychains :-) 19:22:49 The Kestrel will have one on-board IDE port that will support one master and one slave harddrive. 19:23:02 USB will not, and indeed cannot, be supported. 19:23:21 USB still requires too esoteric a technology to support. 19:23:34 As a host, or as a client? 19:23:37 Both. 19:23:43 USB as a client can be easy. 19:23:51 what about firewire :p 19:23:56 Well, if I were to add a third-party chip, I could do it. 19:23:58 Something like the FTDI parts. 19:24:11 Question is, what is the price of the chip, and what kind of chip availability can I expect? 19:24:20 USB to serial, basically. Or USB to parallel. Cheap, and readily. 19:24:38 jc: As a *slave*, sure. 19:24:40 And it solves this annoying problem of serial ports not being available on new machines, particularly laptops. 19:24:42 But a slave cannot control another slave. 19:24:57 No, you can't talk to these devices unless you are a host controller. 19:25:12 That's correct. 19:25:19 And as a console port, it works well. 19:25:48 jc: The Kestrel is to display on its own VGA device. 19:25:59 It's annoying that being a host requires so much software. I am not in favor of these busses that put more and more burden on the host. 19:26:54 Having a console serial port is still far too useful to give up. 19:26:57 Well, USB is just a TDMA networking protocol. 19:27:03 "just" 19:27:13 So it has all the network-related infrastructure to go with it. 19:27:14 So is SS7. 19:27:15 Yes, "just." 19:27:30 mac does have hardware text console 19:27:32 SS7 is a signaling protocol -- it lies on top of other layer-2 protocols. 19:27:40 it's slow as hell... but it's there 19:27:44 Herkamire: No, it doesn't. 19:27:46 oh the pain of this article.. "In the almost two decades years since I've been on board, C++ has grown from a front end known only to UNIX users to the most widely used and indisputably the most powerful programming language in the world." 19:27:50 It *emulates* text "mode" in software. 19:28:06 kc5tja: does it? 19:28:16 kc5tja: and where is that software? 19:28:21 It could be said that anything is "just" a protocol. It's how much crap that it takes to make it work that's the issue. 19:28:22 Herkamire: In ROM. 19:28:22 Herkamire, OF 19:28:32 not on the graphics card? 19:28:37 no 19:28:39 Herkamire: Nope. 19:28:50 jc: Non sequitor. 19:29:35 oh, well, that explains why it's so slow 19:29:43 Well, it doesn't have to be. 19:29:55 Look at fbcon in Linux -- it's lightning fast in the cases that I've seen. 19:30:00 * Murrlin tries to imagine a windows forth that he would enjoy using 19:30:06 fbcon doesn't work for me 19:30:12 that isn't as huge as w32f 19:30:22 not that I've used w32f yet 19:30:23 Herkamire: It HAS to work. It's the only way Linux will run on a Mac. 19:30:46 maybe I'm getting it mixed up with something else then. 19:30:49 what's fbcon? 19:31:20 Herkamire: If you can "cp /dev/fb0 myFile", do something on the screen to change it, then "cp myFile /dev/fb0" to restore the image, then you have fbcon installed and running. 19:31:22 terminal driver in the kernel? 19:31:29 Frame Buffer Console 19:31:40 ok. that I do have 19:31:40 Murrlin, SPF? 19:32:17 I wouldn't say lightning, but it's fast 19:32:52 asau: hmmm 19:33:14 Well, if MacOS X can scroll text in its undisputably graphically oriented user interface fast enough to display just a smear on the screen, then Linux *can* too, if it were so programmed. 19:33:34 i would argue linux would be able to do better :-) 19:33:46 osx seems a lot slower running then linux 19:33:47 I would say it strongly depends on your video card. 19:33:50 jdrake: In theory. 19:33:52 linux does not have good graphics drivers 19:34:03 for mac displays 19:34:20 Most Macs use the ATI Radeon graphics chipsets, though, right? 19:34:26 I know Linux has X11 drivers for those, at the very least. 19:34:26 kc5tja, no 19:34:35 a lot do. I don't know about most 19:34:35 it would be cute to use a forth as an OS (he says, not being very much into the forth news for years) 19:34:39 there really is a lot of mixing of nvidia and ati 19:34:50 Murrlin: That's my immediate goal. 19:34:53 oh, a lot have ATI... 19:35:01 I have ATI Rage 19:35:02 Ooh, some have nVidia. 19:35:09 like/instead of DOS, for example 19:35:19 bind a linux kernel with relevant drivers and then bring up a forth prompt 19:35:20 full fledged replacement for dos 19:35:38 does sucks 19:35:40 then batch files would be forth screens, and com/exes would be compiled forth code 19:35:47 Murrlin: I'm going so far as to build a whole custom computer architecture. 19:35:53 do tell? 19:36:05 Murrlin: http://www.falvotech.com/kestrel.html 19:36:12 Murrlin: "compiled forth code"???? 19:36:16 has anyone done grep in forth? 19:36:19 you don't store compiled source code 19:36:41 Murrlin: there are several forth OSes 19:37:04 like OpenFirmware 19:37:31 somebody will write a gui for te kestrel no doubt 19:37:46 * Murrlin shoots for the moon and adds the wish 'to be able to make emulators in forth' 19:38:02 Murrlin: there's a kestrel emulator in forth 19:38:13 http://jpb.forth.free.fr/Anglais/encadrement.html -- There's a system custom designed and built around Forth, but using a 68000 CPU. 19:38:16 or even to pluck different aspects of emulated machines and make a .. a frankenstien emulation 19:38:23 ooooo 19:38:38 Some of my Kestrel's ideas come from here. 19:38:44 Mostly it comes from the C64/C128 though. 19:39:11 mmmm commodore 19:40:13 I think xterm is about the same speed for scrolling as the text terminal (without X11) 19:40:18 I've never gotten the chance to delve into 68x00 coding 19:40:55 I've heard 68Ks are very nice 19:41:18 any recommendations for a 68n00-bie? 19:41:22 Murrlin: I'd rank the 680x0 CPU family as the single best designed CISC processors in the world. Period. 19:41:35 CISC? 19:41:48 Complex Instruction something code 19:41:57 Murrlin: Not anymore; they used to be all over the place. But now that Motorola is trying to bury the 68000 line, in favor of the PowerPC, it seems that all the good docs disappeared. 19:42:03 Complex Instruction Set Computing. 19:42:06 ackk 19:42:11 I thought 68K was RISK 19:42:14 Nope. 19:42:16 PPC... hm 19:42:18 Though it shares much with it. 19:42:34 PowerPC is Motorola's RISC offering (along with their now defunct 88000 series). 19:42:39 I read something long ago talking about how C-friendly a 68k system was 19:42:47 Kestrel will utilize MISC -- Minimal Instruction Set Computing. 19:43:15 Murrlin: Yes, it was very much so. Almost a decade before the 80386 came out. 19:43:18 or how much 68k asm code is c-like 19:43:33 I won't say it was C-like. 19:43:35 But it was high-level. 19:43:36 ok 19:43:45 There were some years when I did nothing *but* assembly language for the Amiga. 19:43:45 highlevel, that was it 19:44:05 I wrote some rather sophisticated applications purely in assembly language for the Amiga, and it took as little time as it'd take me to write it in C. 19:44:28 bet it was easy to do with .. 19:44:30 umm brainfart 19:44:48 :) 19:44:56 you didnt have much issues with what other machines did or didn't have which addons 19:45:04 ? 19:45:35 that sucked. 19:45:40 Well, AmigaOS was sanely written, so my code was well isolated from add-on hardware for the most part (the only exception was the graphics hardware, which is why Amiga took so long to get retargetable graphics support). 19:45:51 "you didn't have that many issues with differing hardware did you?" 19:45:59 unlike the PC 19:46:08 The Amiga handled hardware flawlessly. 19:46:26 god it wouldve been so sweet to have had a 500 or 600 19:46:30 why did MSFT had to be blessed... 19:46:35 It, like the PC, was expandable. And it supported autoconfiguration a solid 10 years before Microsoft's Plug-n-Play efforts. 19:46:48 and it actually *worked*. 19:46:49 go figure 19:46:57 kc5tja, i bet MSFT has plug'n'prey patents too :-) 19:46:57 yet it's almost completely forgotting. 19:47:21 jdrake: well, their ISA PNP standard is *damn* elegant for what it is. I'd easily understand a patent for that. 19:47:28 Making a patently non-PNP bus PNP is *NOT* easy. 19:47:35 Murrlin: Yep. :( 19:47:43 meh 19:48:00 My first-generation Kestrel borrows more from the C64/C128 line, but depending on how well it sells, I am planning more Amiga-like machines. 19:48:01 --- join: wmg (~weldon@bgp02689673bgs.flrdav01.dc.comcast.net) joined #forth 19:48:16 Kestrel Inc. 19:48:32 jdrake: If I have it my way, Forthbox, Inc. But I don't expect that to be for quite some time. 19:48:46 Kestrel I, Kestrel II, Kestrel III, Kestrel Fruitintosh 19:49:23 jdrake: I'm planning on Kestrel I, Kestrel II, MAYBE a Kestrel III, and if it goes beyond that, Kestrel K/1000, Kestrel K/2000, etc. 19:49:39 Where the K/1000 et. al. are the Amiga-inspired hardware configurations. 19:49:44 jdrake, Kestrel ][, Kestrel /// etc. 19:49:49 do you have a projected cost for this first one? 19:49:51 * kc5tja laughs 19:50:05 jdrake: I'm *trying* to make it cheaper than $130, including my profit margin. 19:50:13 No guarantees on meeting that, but that's my goal. IN KIT FORM. 19:50:18 it'll cost more pre-assembled. 19:50:25 kc5tja, sounds like *buy me* 19:50:47 :) 19:50:58 what did you say it had for graphics 19:51:23 jdrake: Well, I conducted a little survey on this channel awhile ago, and $100 was the break-even point for most people. Anything significantly more than that, and it turns out they wouldn't purchase a kit. 19:51:49 But I had to increase my cost ceiling to $130 for practical matters (cost of PCB production, chip sources changing their prices, etc), so... :/ 19:52:11 i imagine forth certainly helps matters 19:52:25 jdrake: Yes, I'm banking on a Forth CPU to help keep system integration problems low. 19:53:30 jdrake: The graphics capabilities are currently still up in the air, BUT, you can *count* on it having a 640x480 display mode with 256 colors (fixed palette; RRmGGGBB pixel layout, where 'm' is the least significant bit for both red and blue guns [magenta bit]). 19:53:51 jdrake: Screen shot 1 on my site shows off its entire color palette. 19:53:55 will Kestrels be fully runnable machines? out of box? (kit form nonwithstanding) 19:54:01 what about actual graphics hardware 19:54:08 like will a vga monitor be good for it 19:54:12 as those are cheap 19:54:28 Murrlin: Yes. It'll ship with a functional Forth in ROM. IT WILL BOOT WITHOUT A HARDDRIVE. But a harddrive is still recommended (or some other form of IDE storage device). 19:54:41 --- quit: wmg ("Leaving") 19:54:44 zip drive? 19:54:44 It's built for VGA. 19:54:48 jdrake: IDE ZIP is fine. 19:55:06 However, it probably will see it as a fixed harddrive. As I don't have a ZIP drive to test with, I can't make an OS release for it. 19:55:07 mmm 19:55:09 nice 19:56:23 The computer will only see the IDE master drive as the block storage device; the IDE secondary drive is entirely for application/custom OS driver use. 19:56:42 Also, the hardware is GPL, as is the software it runs. 19:57:10 Well, the Forth implementation itself will be LGPL, so that should someone want to write commercial software for it, I'll let that happen. 19:57:57 how long after release would you give for a doom port? 19:57:59 :-) 19:58:01 --- quit: doublec ("Leaving") 19:58:17 jdrake: No idea. Nor do I care. At 25MHz, I doubt it'll be fast enough to run Doom anyway. 19:58:26 a 386 was 19:58:31 But if someone could port Wolfenstein 3D, that'd be cool. :) 19:58:40 wolfy would be easier no doubt 19:58:57 Well, getting Doom to run basically involves only porting the QuakeC interpretter, right? 19:59:06 doom was before that 19:59:11 doom is written in C entirely 19:59:21 Doom was in straight C? I doubt it'll be easily ported then. 19:59:39 i don't think I would want to port the C like that, more like rewrite it in forth :P 19:59:52 but I couldn't even do that yet 19:59:57 * kc5tja nods 20:00:18 It'd be fun to see some of the more traditional, almost funner games to be ported though: Missile Command clone, some trivial racing games, etc. 20:00:25 And of course, Tank. :) 20:01:10 is that missile command one the thing that has cities with firing missiles at falling bombs? 20:01:33 jdrake: Yeah. Easy game to start with, but *DAMN* it got hard as higher levels were attained! :D 20:02:15 i was going to use ficl as the first language I am going to support for my gaming project 20:02:32 and some of those simpler games were going to be the things I wanted to do 20:02:43 tictactoe was the first one 20:02:46 ooooooo! tank 20:03:03 but I started redesigning my project 20:03:09 But I have to ask though: if I release a Kestrel I for $130, say, and then six months later or a year later I release a Kestrel II that has new I/O interfaces and the like, the odds of upgrade are likely to be low. So should I offer *two* models of Kestrel up front? One that has expansion slots and one that is single board? What are your opinions? 20:03:09 now it is going to be multithreaded 20:03:13 it is only osx 20:03:56 (right now anyways) 20:04:05 kc5tja, separate machines i would say 20:04:11 and just do it as they come 20:04:23 your first task is to get something out the door 20:04:27 Well, I don't want people to think they're wasting money if they decide to upgrade to a later generation machine. 20:04:34 It was a big problem for Commodore users. 20:04:44 Oh, definiteyl. 20:04:57 those that buy the first machine are hobbyists, not regular joes 20:05:05 But to Commodore's credit, their #1 selling machines (the Commodore 64, Amiga 500, and Commodore 128) were all non-expandable. :D 20:05:06 so in that case money is not wasted 20:05:31 how much was an early commodore? 20:05:43 what I would recommend is providing enough abstraction that the new hardware could be supported by programs with minimal porting 20:06:04 Herkamire: Back then? :D Too much even by today's standard. The C64 was $600+ when it was first introduced. My mother bought me the Amiga 500 that I still have for about the same price. 20:06:13 ooooooooooooooo 20:06:41 Murrlin: ? 20:06:51 what I would think would be a killer machine would be one that could run most useful programs that a regular computer can (like browser, mail, editor) but cost less than 200 20:06:54 in my mind being cheap makes up for not being expandable 20:07:41 * Murrlin is amigaless 20:07:50 jdrake: well, remember that the host OS on these machines is going to be Forth -- while there is necessarily SOME abstraction, it's not so opaque that a complete swapout of peripherals is likely to not break anything. 20:08:15 is there going to be memory protection and stuff like that? 20:08:15 I still have amiga 1200 in the closet :) 20:08:25 jdrake: No. Not to start with. 20:08:40 so this is macos 1.x style then :-) 20:08:40 (with blizzard 68030@50mhz expansion) 20:08:42 I was going to implement that in a later model machine, once sales pretty much warrented the extra expense. 20:09:08 kc5tja, [L]GPL right? Users can implement it :-) 20:09:08 Frek: I'll trade you your A1200 for my A500. :D 20:09:15 kc5tja: heh 20:09:30 *envy* Frek =) 20:09:42 jdrake: Well, I was going to experiment with some OS concepts like software-based fault isolation techniques, to push the envelop *BIG TIME* on what an MMU-less machine can do. :) 20:09:48 kc5tja, just don't get caught like apple did for 15+ years 20:09:55 can't use it for alot now days though; it plays mp3 that's about it :) 20:09:57 jdrake: The idea is to get people to want the more advanced features by demonstrating what can be done. 20:10:23 you mean buy new machines 20:10:47 jdrake: No. I subscribe to the Commodore philosophy of upgrading. "If you bit-bang the ahrdware, and we upgrade the hardware, and your software breaks, it's YOUR responsibility to fix it. Deal with it." 20:11:04 'bit-bang'? 20:11:09 Frek: Mine can't even do that. :D 20:11:14 direct to hardware programming, jdrake 20:11:15 --- join: warpzero (~warpzero@65.19.198.12) joined #forth 20:11:28 jdrake: Bit-bang is a colloquialism for touching hardware resources directly, without OS intervention. 20:11:33 frek, ah like I hear mac programmers did 20:11:45 jdrake, it wasn't that common on the mac 20:11:46 jdrake: Mac, Amiga, C64/C128, ... it was not a foreign concept. 20:11:49 kc5tja, ever hear of the exokernel? 20:12:10 sup kc5tja 20:12:15 jdrake: Yes, and I was going to go with that design. However, I'm thinking a cache kernel design is better for my needs. 20:12:23 re warpzero 20:12:31 there was so many mac models, and about each had a different hardware layout underneat so direct to hardware programming wasn't that rewarding on the mac. 20:12:47 However, BoxForth 1.0 is just that: a 1.0 release. Nothing special. Just get the dang thing working, and out the door, and let people play. :) 20:13:07 BoxForth 2.0 will start to add more sophisticated OS-like features, but NEVER at the expense of the user's ability to touch the hardware directly. 20:13:23 I will release a version of Dolphin for the hardware, however, which is a more comprehensive OS for the machine. 20:13:26 it's a shame the Amiga didn't have an MMU from start; or rather bad for amigaos 20:13:29 Dolphin is a longer-term project though. 20:14:19 Frek: Commodore was designing an MMU for the 68020 that fully supported single-address-space OSes. But Motorola integrated the page-based MMU in the 68030 and left no room for external MMUs. That killed that project cold. 20:14:23 :/ 20:14:33 kc5tja: i see 20:14:46 * Murrlin wonders about crosscomping a forth onto the sega genesis platform 20:14:50 however hardware wise... 20:14:53 the amiga must been one of the most upgradeable machines in history. 20:15:06 68000... fixed hardware... game compatible.. 20:15:24 there'd need to be an add on or two in an emulator, for keyboard and mass storage 20:15:47 Frek: Yes. Coming in single-board and multi-slot variations, with support for out-of-band video enhancements, replacable CPU modules, memory, . . . literally EVERYTHING on that thing was swappable, EXCEPT for the Agnus/Denise/Paula chips. 20:16:25 kc5tja: ya, and the zorroslot could be used to upgrade about anything too 20:16:41 Frek: My K-Bus slot definition is intended for the same purpose. 20:16:48 nice 20:17:06 Like I said, right now, the chipset definition I'm planning on is roughly Commodore 64-ish. 20:17:13 you'll just have to find some 3rd party developers who makes expansions forever (like phase5 on the amiga:) 20:17:16 But future Kestrels will progressively be more and more Amigaish. 20:17:53 Frek: I'm hoping that making the hardware open a la GPL will help bolster support for this computer, even if only as a hobby machine. 20:17:59 what's your target audience ? 20:18:10 US! =) 20:18:15 heh 20:18:23 Frek: First and foremost, ME. Secondarily, the folks in this channel. Third, as an embeddable machine for use in ham radio projects. 20:18:31 ah ic 20:18:59 could one theoretically code a forthbased Amiga OS kernal, and swap it in? 20:19:03 do you have any prototype going now ? 20:19:05 The reason I'm the #1 "customer" for this machine is that I'm big into conserving energy, and if I can cut my computing power consumption with this device, then I'll be very happy. 20:19:32 kc5tja: any idea how much power it will draw? 20:19:48 Frek: No. However, I have finally achieved a semi-reasonable software emulator for the base-level hardware (CPU and a workable subset of video emulation only) 20:19:57 I too would like to reduce my electricity us 20:19:59 e 20:20:22 Herkamire: No, but it'll definitely be substantially less than a PC. Note that a lot of power will be drawn from a harddrive, so if you can put storage on flash, that'd be the lowest power solution. 20:20:34 kc5tja: what's it's CPU then ? FPGA ? 20:20:43 MISC CPU in an FPGA, yes. 20:20:46 ah ok 20:20:52 So it won't be as low power as it could be. 20:21:41 do you have more custom hardware chips 20:21:55 Frek: Well, almost every chip on it will be an FPGA. :) 20:22:10 ah ok; however that turns out quite expensive though don't it ? 20:22:25 Since I'm charged per square inch of printed circuit board space, and I'm limited to only two PCB layers for expense reasons, I'm going to be making this computer HIGHLY integrated. 20:22:40 neat 20:22:40 The chips are more expensive, BUT, the savings in board space more than make up for it. 20:22:44 It ends up being cheaper. 20:22:47 1cm^2 board 20:22:49 alright 20:23:08 what type of FPGAs (or rather what size) do you use for most components ? 20:23:16 If I plan things out OK, I'm probably looking at two, maybe three FPGA chips, making up the whole computer. 20:23:27 Frek: No idea yet. It's too early to tell. 20:23:34 alright sounds cool though 20:23:55 I have to write the Verilog files for the CPU, video, and somehow, audio. 20:23:59 Audio IS a problem for me, though. 20:24:16 why's that ? 20:24:45 probably how much audio tech should there be 20:25:02 ok 20:25:05 No, it's because of bandwidth-related issues inside the chip. 20:25:31 Although it is hard to decide whether I want raw DACs, wavetables, or SID-like synthesis engines. 20:25:33 but you don't have to support high resolution audio though ? 20:25:36 The SID was *VERY* powerful. 20:25:43 I'm going for 16-bit audio. 20:25:50 44.1 khz ? 20:25:58 At least. 20:26:09 i can see that's a bandwidth problem then 20:26:18 I have the bus bandwidth to support it. 20:26:27 But will I have the *CPU* bandwidth to support it? 20:26:34 I'd like to think that I do. 20:26:41 ok 20:27:05 So I'm kind of thinking of making a SID-like interface, but instead of having a fixed set of waveforms that the SID has, to use a wavetable interface instead. 20:27:39 So it's basically a SID-like front-end to a raw DMA-fed DAC interface. 20:27:42 But we'll see. 20:27:47 so no voice recognition :p 20:27:50 No. 20:27:57 And no digitizer at first either. 20:28:08 then we can surprise you by making it work :p 20:28:09 Again, as I make enough cash to warrent further R&D, I can invest in larger PCBs. 20:28:42 Also, I have an idea for business income distribution too. 20:28:51 If I release this thing, and I get 100 orders for this thing, I'm going to be swamped. 20:28:56 I don't really care if it has audio 20:29:01 I'll literally put myself out of business just because I got too big an order. 20:29:19 out? 20:29:20 so your to send the PCBs for manufacturing rather than rolling them yourself ? 20:29:36 So, taking its open architecture into account, I'm thinking that others on the Internet can help build pre-fabbed machines if they want. They'd basically be a franchise of my business. 20:29:53 Frek: Maybe. 20:29:58 But I don't know yet. 20:30:05 100 boards is still "low volume" for most board houses. 20:30:13 yeah 20:30:39 But, my idea is the same idea as how fast-food joints work. 20:30:48 Especially In-N-Out, since that's what I've had most direct experience with. 20:31:06 If I get 100 orders, and I can only fulfill 20 units, then I'll parcel the other 80 orders out to others who franchise from me. 20:31:24 Other builders can then build the units in parallel as I build mine. 20:31:40 kc5tja, hire 10 year olds to build them for you 20:31:47 jdrake: Umm..no. That's illegal. 20:31:48 gehe 20:32:00 kc5tja, no it isn't if you do it right :-) 20:32:05 I'd rather those who are actually interested in this thing take off build it. 20:32:11 Because then they have a vested interest in the architecture. 20:32:16 jdrake: well there's indians and russians that's working very cheap 20:32:19 No. 20:32:29 I do not believe in "outsourcing" beyond my borders. 20:32:43 you know - kids get paper routes, isn't that child labour? 20:33:08 jdrake: Yes, but with parental permission, and heavy government regulation. HEAVY regulation. 20:33:11 I'm not into that. 20:33:13 Sorry. 20:33:28 jdrake: no job for you :) 20:33:30 high school kids 20:33:36 In-N-Out's method works, and the workforce is all American. 20:33:36 Frek, i will forget I heard that 20:33:43 jdrake: I'm just kidding ;( 20:33:44 err 20:33:45 ;) 20:33:53 So I know the method works. 20:34:35 The way it'd work is a store would purchase a prescribed number of parts from me. 20:34:45 Then when an order comes in, and I dispatch to you, I *pay* you for that order. 20:34:59 Obviously what I'd pay you is more than the cost of the parts -- therefore you end up making money. 20:35:34 kc5tja, may we assume you have a day job? 20:35:42 jdrake: I very much have a day job, yes. 20:35:47 I wouldn't be doing this if I didn't. 20:36:20 But don't laugh at my techniques. 20:36:23 I know for a fact they work. 20:36:35 kc5tja, you obviously have a grand plan 20:36:41 When I worked for Armored and AxisInternets, I was not a regular employee. I was a subcontractor for them, from day 1. 20:37:09 When I saw the technique confirmed at In-N-Out, I saw a definite pattern: help others make money, treat your real employees well, and you'll make money and have a good time doing it. 20:38:04 is this thing going to have a serial port or two? 20:38:27 jdrake: It is going to have at least one built-in RS-232 port. Whether it will have two depends on how many FPGA pins are left over. 20:38:31 hi 20:38:55 how are you going to do keyboard input 20:39:09 However, remember too that it will also have a bit-bangable general purpose expansion port too, kind of like the C64's User Port (GOD I miss that thing). 20:39:18 PS/2 ports for both keyboard and mouse. 20:39:24 cool 20:39:28 the possibilities... 20:39:52 why don't you drop the ps/2 mouse port and just put on a serial port instead 20:40:05 Because it defeats the purpose of making this thing a home computer. 20:40:19 mice come in serial variety and there are converters 20:40:23 The purpose of this box is to replace my PC for my general purpose computing tasks. 20:40:36 * Murrlin asks a silly question: 20:40:37 jdrake: Increasingly rare and increasingly expensive. 20:40:39 What is WIKI 20:40:48 Murrlin, God's True Form 20:41:04 kc5tja: how's kestrel progressing? 20:41:10 Murrlin, http://c2.com/ 20:41:10 ooo mmmhmm 20:41:12 Murrlin: A Wiki is a collaborative website -- you, as a mere visitor to the site, is free to make changes on the site. In fact, you are actually ENCOURAGED to -- ask questions, correct errors, etc. 20:41:32 oh ok man I'd forgotten about that 20:41:48 wipe pages, put your 'tags' all over the place, etc. 20:42:21 slava: I haven't had much time to work on the text output code yet. I did manage to find a 2K binary image containing an 8x8 font that I can use. 20:42:31 I originally made it for the C64, but it'll be trivial to use in the Kestrel too. 20:44:15 slava: The problem at this stage is developing the software to actually draw a cursor, position text on the screen, and emit text in various colors. 20:44:30 kc5tja: cool 20:44:37 kc5tja: this will be the ROM library? 20:45:18 slava: It'll be found in the ROM, accessible as Forth words AT-XY and EMIT. As far as text font colors are concerned, I'm not sure what word names to use for that. 20:45:40 Text will be written using OR logic mode, so if you want opaque text, you need to manually clear the background for the text first. 20:45:44 This is more flexible. 20:46:11 I need to add some things to the compiler first though: DEFER-ed words, for example. 20:47:00 you could add a smalltalk-style bitblt where the drawing modes are all customizable 20:47:37 General purpose blitting consumes many CPU cycles. 20:47:44 If you're going to use deferred words, why not make current mode for displayong text? 20:48:08 ASau: I don't understand your question. 20:48:24 defer mode 20:48:28 * Murrlin keeps this window up for logging the interesting bits.. but his heart isn't in it right at the moment 20:48:30 x1 x2 mode 20:48:38 instead of: x1 x2 OR 20:48:53 ASau: Because blitting is more sophisticated than that. 20:49:43 With two input sources, any number up to 16 different logic operations have to be computed, and then all finally ORed together and stored to the destination. 20:49:51 err, oops, 4. 20:50:06 Murrlin: this channel is logged BTW: http://tunes.org/~nef/logs/forth/04.06.29 20:50:10 You have Y = !A*!B + !A*B + A*!B + A*B 20:50:34 Then there's the shifting that might need to occur as well. 20:50:38 And masking. 20:50:40 * Murrlin nods 20:51:24 kc5tja, anyway this is binary operation. 20:51:26 Remember my immediate goal is to get something working and out the door ASAP so that others can sit down and start playing with it. 20:51:44 ASau: Correct. 20:51:56 Arithmetic operations produce undefined results. 20:52:26 (see first screen shot on my website, towards the bottom -- note the fuzziness that is on the screen. This is the result of arithmetic carry-over errors) 20:53:28 kc5tja: what's this do? "Y = !A*!B + !A*B + A*!B + A*B" 20:53:45 Composition of bit-by-bit operation is bit-by-bit operation. 20:53:53 Composition of bit-by-bit operations is bit-by-bit operation. 20:53:59 Herkamire: Literally, it sets the result to all 1s no matter the value of A or B. 20:54:29 I should have expressed the formula as Y = C3(!A*!B) + C2(!A*B) + C1(A*!B) + C0(A*B) 20:54:39 where C3..C0 are "control bits" that determine the precise logical formula. 20:54:47 !A is not A. 20:54:50 * is logical AND 20:54:54 + is logical OR. 20:54:56 Disjunctive normal form. 20:55:12 the play's the thing 20:55:14 Disjunctive normal form for binary operation. 20:55:15 and what does that formula do? 20:55:17 So you can represent a XOR operation by setting C3..C0 to $6, resulting in Y=(!A*B)+(A*!B) 20:55:55 Well, A and B would be the input words from some bitmap, and Y is the result to be stored to some other bitmap. 20:57:36 two input words from the same bitmap? 20:57:44 is this to do transparency or something? 20:57:45 Herkamire: If you want them to be. But normally they're different. 20:59:37 For example, let's say source A points to the character data to render. Source B points to the bitmap in which you are drawing the text into. 21:00:05 --- join: kuvos (C00K13S@cp12172-a.roose1.nb.home.nl) joined #forth 21:00:28 Dobre jitro, kuvos. 21:01:19 Let's also say that you want the bitmap data to be '0' where a '1' appears in the character image source, BUT, you want to leave all other bits left alone. 21:01:50 The resulting formula to do this is as follows: Y = (!A*B) 21:02:42 Simple enough. But if we want to draw a '1' for every '1' bit in the character image, a different formula is needed: Y = (A*B)+(A*!B) 21:03:05 Since this is equivalent to A*(B+!B), and B OR NOT B is always 1, we get A*1, or just A. 21:03:30 Oops, I forgot a term: Y=(A*B)+(A*!B)+(!A*B) 21:03:37 There. :) That final term is what preserves the background. 21:03:45 how does one normally do things like arrays 21:04:05 jdrake: In Forth? You allot a chunk of RAM and directly index into them. 21:04:14 create MyArray 100 CELLS ALLOT 21:04:23 MyArray 4 CELLS + @ . 21:04:34 so it is pretty much as low tech as C 21:04:42 MyArray 4 CELLS + ? 21:04:45 At the lowest levels, yes. 21:05:11 anyone ever made any helper words for this 21:05:19 like autoexpanding and such 21:05:20 jdrake: Too many to count. 21:06:11 However, I guess most applications don't need that kind of sophistication, so none have really stuck 21:07:03 well you don't really need it 21:07:11 i'm not a fan of C arrays 21:07:15 they're just unnecessary syntax suga 21:07:23 What I *AM* planning on supporting, though not as a built-in to the environment, are J-like vectors. 21:07:38 Oh, man, learning J just totally throws your entire programming world upside down. 21:07:44 * kc5tja is a die-hard fan of vector processing now. 21:07:52 heh 21:08:10 hey, I'm serious. :) 21:08:45 Programming with implicit iteration makes very sophisticated programs very easy to write. 21:08:46 oo 21:08:49 speaking of vectors 21:08:50 what is J 21:09:03 * Murrlin imagines forthbased vectorscreen machines 21:09:11 I'd love that 21:09:14 J is the heir to the APL programming language -- both written by Kenneth Iverson. 21:09:59 J is programming language where the vector is the language's built-in core concept. 21:10:05 (as lists are in Scheme and Lisp) 21:10:09 kc5tja: do you think a stack-based language with vectors is possible 21:10:31 slava: yes, since stacks can be modeled as vectors. 21:10:45 slava, mhx did experimented with this. 21:10:58 slava: but be aware, that such an environment won't likely match the precise capabilities of a dedicated vector language like J. 21:12:20 Folks, just to let you know, I do intend on hosting a CPAN-like repository of useful libraries of software for the Forth environment on the Kestrel. 21:13:08 There is no way I can write every support library that you folks want. 21:13:29 So the purpose of the repository is to promote code sharing. 21:13:37 kc5tja: cool. 21:13:54 I'm not sure how I'll get that to work in a block environment, but I'll find some way. :0 21:13:57 :) even 21:13:58 kc5tja: i'm really looking forward to being able to buy a kestrel. 21:14:10 block environment? 21:14:21 kc5tja: the first support library should be a file system then :) 21:14:31 The Kestrel lacks a filesystem. It'll store source code in raw blocks. 21:14:53 a file system would be very useful 21:15:06 FAT 21:15:16 how do you intend on transferring data from one machine (say my main machine) to the box 21:15:24 well a block is just 1kb text 21:15:25 Fuck FAT. If I did do a filesystem, it'll be a real filesystem, like Amiga OFS. 21:15:33 kc5tja: well FAT is simple :) 21:15:34 kc5tja, HFS+ 21:15:42 slava: OFS is also simple. 21:15:46 maybe a file system that can be read by others :-) 21:15:57 jdrake: HFS+ is too proprietary, and resource forks are hard to deal with. 21:16:15 jdrake: Funny, Linux supports Amiga OFS just fine. :) 21:16:20 kc5tja, mac doesn't 21:16:30 that is the only one I would be interested in :-) 21:16:33 jdrake: Shush you -- isn't UTF-8 on the console enough for you? :D 21:16:34 what about ext2 21:16:51 kc5tja: i think data transfer using blocks on floppies will be sufficient. 21:16:52 (sorry, I had to throw that in there) 21:17:07 slava: No floppy interface, unless you can get an IDE floppy drive. 21:17:11 ah 21:17:16 how will we transfer data? 21:17:18 where do you get one of those 21:17:19 serial? 21:17:23 Floppies are too unreliable, and the controllers for them cost more than the drive itself. 21:17:33 jdrake: Not sure, actually. 21:17:42 slava: Serial, the peripheral interconnect loop, etc. 21:17:51 kc5tja: is ethernet too much to hope for :) 21:17:53 slava: I haven't used my floppy drive in my computer in . . . two years actually. 21:17:57 kc5tja: any idea how expensive it would be to get usb controller for the kestrel? 21:17:57 kc5tja: same here 21:18:35 slava: No, and I have been considering 10-base-T. But I'm only concerned because it seems like *none* of the chips are adequately documented. And then you have to get the analog electronics for them just right. 21:18:44 kc5tja: serial is fine 21:19:05 kc5tja: tcp/ip over ppp or slip is feasable, right? 21:19:14 Herkamire: Not at this time. If I do, it'll be a distinct chip with itself haivng 144 pins on it though. :/ 21:19:21 slava: Yes. 21:19:46 a box that boots instantly, and into a forth environment no less, drool 21:19:53 will there be a pygmy-like block editor? :) 21:20:01 its very well integrated in pygmy 21:20:04 slava: Built-in. It'll actually be a variation of my VIBE editor. 21:20:36 quality control at apple must be off: $ curl-config --libs 21:20:36 -L/usr/lib -lcurl -arch i386 -arch ppc -lz -lssl -lcrypto -lz 21:20:39 In fact, it'll be a requirement for SEE to work correctly, since SEE just launches the editor at the block containing the word being SEEn. 21:21:00 kc5tja: what if the word was defined interactively? 21:21:18 will there be a disassembler? 21:21:18 slava: Then an error will be generated. "Word defined interactively" or some such. 21:21:37 kc5tja, isn't it called LOCATE usually? 21:21:42 slava: Not built into ROM, most likely. It'll probably be part of the core software expected to be found on the harddrive. 21:21:49 kc5tja: ok 21:21:51 ASau: There is no standard word for it. 21:21:55 ASau: some forths call it VIEW, etc 21:22:26 kc5tja: will you have a 64x16 text mode? 21:22:38 slava: The hardware does not have a text mode. It's always in a graphics mode. 21:22:41 kc5tja, SEE is very often used for decompiling. 21:23:02 slava: The usual display resolution is 640 pixels across, allowing 80 columns on the screen. 21:23:18 kc5tja: hmm. then blocks will look a bit weird, like they do in pygmy with the empty space 21:23:41 Well, just use 10-pixel wide fonts. :D 21:23:46 if you are using IDE then a CF interface would be rather easy to use for interchange I would imagine 21:23:47 yeap :) 21:23:59 (actually, that WILL require general purpose blitting support to do, so I'll leave that off for the time being. :D) 21:24:09 We'll make that a V2.0 feature. 21:24:15 unless i code it :-P 21:24:28 slava: Contribute -- you're expected to. It's LGPL. 21:24:37 I can't code everything. 21:24:41 any contributions i make will be bsd licensed :-P 21:24:42 I'm only coding enough for me. 21:24:55 kc5tja: how long until you have the first prototype of the cpu? 21:24:56 slava, not if you distribute it won't be 21:24:59 Then I won't link it in as a standard part of the distribution, sorry. 21:25:13 kc5tja: lgpl it is then :) 21:25:36 The problem I have with BSD license is that it is a little too liberal for the OS to be licensed. 21:25:41 I don't mind applications being licensed BSD. 21:25:51 But the OS, more than anything else, must be open and free at all times. 21:26:56 I don't want someone like Microsoft stealing my Forth code, making bazillions off of it, then not releasing their mods to the public (one need look no further than the infamous winsock.dll for further evidence of what havoc this can cause). 21:28:12 BTW, ordinarily, I'm a fan of libpng license. 21:28:21 So it's not like I'm a GNU zealot. :) 21:28:32 I'm just choosing the license I think is best suited for this level of application. 21:28:43 will the final cpu be FPGA 21:29:01 Yes 21:29:12 That is also LGPL licensed. :) 21:29:16 s/is/will be/ 21:29:17 neat 21:29:36 So while it's possible to embed the CPU in a fully commercial design, changes to the core CPU itself must be made free. 21:29:36 so you must get this q a lot but how long until its done :)? 21:29:51 I work on this in my spare time. 21:29:57 So I have no specific ETA. 21:30:01 slava, when it is done :-) 21:30:01 fair enough. 21:30:10 I wish I could work full-time on it 21:30:22 But USUALLY I spend my Saturdays working on it. 21:30:27 This Saturday I'll be working though. :/ 21:30:33 kc5tja, if I win the big lottery :-) 21:30:47 Hehe :) 21:31:09 If you win big on the lottery, save your money. Collect interest for a few months, THEN consider hiring me full-time. :D 21:32:43 Anyway, I should probably update my FAQ page with these questions and answers. 21:32:51 But I kind of like this level of interactivity too. 21:34:06 repeating yourself all the time ... 21:34:23 ghc takes forever to compile 21:34:35 is ghc written in haskell 21:34:49 yes 21:34:58 cool 21:35:04 i've never tried haskell. 21:35:16 i tried it for 2 days 21:35:29 i am using it to get darcs 21:35:46 which takes forever to compile too 21:46:55 jdrake: Not so much repeating myself all the time, but just reassuring people that I'm still alive, and not being rude. 21:47:12 I don't want to have to answer "FAQ #5-21" or something for every question that comes up. 21:47:15 I hate that. 21:47:44 For the amount of energy it would take me to look up the FAQ entry that does answer the question, I could have used the time comparably just answering the damn question. 21:47:57 kc5tja: make a bot. kestrelbot: faq 5 :-) 21:48:01 and it would reply :) 21:48:08 And how would it know? 21:48:19 Does it do keyword search on all the questions? 21:48:36 That's highly prone to error. 21:49:18 --- quit: onetom (Read error: 101 (Network is unreachable)) 21:50:04 --- join: onetom (~tom@novtan.bio.u-szeged.hu) joined #forth 21:50:37 brb 21:51:49 Refer to QA not by numbers, but by key words. 21:51:57 E.g. "lottery." 21:53:48 back 21:54:10 You are all missing the point completely. 21:54:41 Unless the answer is provided in excruciating detail, and such detail is really warrented, it's just as fast (and a hell of a lot more polite, I think) to just answer the question at the time the question is asked. 21:56:31 Use keyboard macro then. 21:56:47 Or automatic substitute. 21:56:58 Or automatic substitution. 21:57:24 or substitutiary locomotion. 21:58:18 Something like abbrev-mode 21:58:46 FAQ #1-2. 21:59:11 do you guys know if ficl is ANS compliant 21:59:56 It's ANS. 22:00:10 Read description. 22:00:21 README or this kind. 22:00:52 ah 22:00:56 i see it 22:02:37 does this mean it didn't find anything: 22:02:37 ok> s" 4threc.f" included 22:02:37 query not found 22:07:41 what would be the most fun portable device to have forth running upon? 22:08:14 one where it saves you money in some way 22:08:35 and another question: any non-Amiga/Mac 68k computers around? 22:09:12 atari? 22:09:41 dang forgot about that one 22:09:42 Sun. 22:09:48 * Murrlin isn't fully awake anymore 22:10:58 night 22:11:01 --- quit: Murrlin ("Mischief managed! ....Nox.") 22:14:09 --- quit: slava (Read error: 104 (Connection reset by peer)) 22:14:55 ficl missing quite a few things this tutorial i am looking at presents 22:15:36 --- join: usa (~Icarus@adsl-64-142-9-188.sonic.net) joined #forth 22:16:14 --- part: usa left #forth 22:34:29 --- quit: jdrake ("Leaving") 22:38:38 --- join: slava (~slava@CPE00096ba44261-CM000e5cdfda14.cpe.net.cable.rogers.com) joined #forth 22:58:45 --- quit: warpzero ("Tried to warn you about Chino and Daddy Gee, but I can't seem to get to you through the U.S. Mail.") 23:09:33 Well, I'm going to bed now. 23:09:46 --- quit: kc5tja ("THX QSO ES 73 DE KC5TJA/6 CL ES QRT AR SK") 23:12:12 --- quit: ASau () 23:26:45 --- quit: arke__ (Read error: 104 (Connection reset by peer)) 23:27:41 --- join: arke_ (~Chris@wbar8.lax1-4-11-100-108.dsl-verizon.net) joined #forth 23:44:40 aww damn i missed kc5tja 23:44:51 i really needed to talk to him. 23:59:59 --- log: ended forth/04.06.29