00:00:00 --- log: started forth/01.06.25 00:19:22 --- quit: clog (Ping timeout) 00:19:22 --- log: stopped forth/01.06.25 00:19:30 --- log: started forth/01.06.25 00:19:30 --- join: clog (nef@bespin.org) joined #forth 00:19:30 --- topic: 'http://isforth.sourceforge.net -- http://cvs.sourceforge.net/cgi-bin/cvsweb.cgi/isforth/?cvsroot=isforth' 00:19:30 --- topic: set by ChanServ on [Sat Jun 23 01:03:40 2001] 00:19:31 --- names: list (clog adu @aaronl @rob_ert_sleep_ing @I440r @dired @Trey @klooie @nate37) 02:04:06 bye 02:04:07 --- quit: adu (IRCStep) 03:20:00 --- join: aaronl_ (aaronl@vitelus.com) joined #forth 03:20:14 --- quit: aaronl (Read error to aaronl[vitelus.com]: Connection reset by peer) 05:11:28 --- join: Fare (fare@ppp49-net1-idf2-bas1.isdnet.net) joined #forth 05:23:57 --- quit: klooie (Ping timeout for klooie[213-84-79-23.adsl.xs4all.nl]) 05:24:39 --- join: klooie (kloo@213-84-79-23.adsl.xs4all.nl) joined #forth 06:06:25 * aaronl_ is away: LIGHT!! I'M MELTING!! 06:54:31 --- part: Fare left #forth 07:14:29 --- quit: klooie (Ping timeout for klooie[213-84-79-23.adsl.xs4all.nl]) 07:14:47 --- join: klooie (kloo@213-84-79-23.adsl.xs4all.nl) joined #forth 07:18:35 --- join: grurp (grurp@pc19954.batc.tec.ut.us) joined #forth 07:40:12 --- join: scipient (scipient@ci156462-a.ashvil1.nc.home.com) joined #forth 08:05:06 --- quit: klooie (Ping timeout for klooie[213-84-79-23.adsl.xs4all.nl]) 08:05:08 --- join: klooie (kloo@213-84-79-23.adsl.xs4all.nl) joined #forth 08:18:15 --- quit: dired (Ping timeout for dired[vitelus.com]) 08:19:13 --- quit: aaronl_ (Ping timeout for aaronl_[vitelus.com]) 08:49:11 --- quit: klooie (Ping timeout for klooie[213-84-79-23.adsl.xs4all.nl]) 08:49:11 --- quit: rob_ert_sleep_ing (Ping timeout for rob_ert_sleep_ing[h3n1fls33o898.telia.com]) 08:57:03 --- join: klooie (kloo@213-84-79-23.adsl.xs4all.nl) joined #forth 09:01:49 --- quit: grurp (Bye all) 10:10:47 --- quit: klooie (farmer.openprojects.net forward.openprojects.net) 10:10:55 --- join: klooie (kloo@213-84-79-23.adsl.xs4all.nl) joined #forth 10:36:05 --- join: grurp (grurp@pc19954.batc.tec.ut.us) joined #forth 10:44:51 --- join: rob_ert_sleep_ing (robost86@h3n1fls33o898.telia.com) joined #forth 11:00:41 --- join: edrx (edrx@200.240.18.89) joined #forth 11:01:12 --- mode: I440r set mode: +o clog 11:01:15 --- mode: I440r set mode: +o edrx 11:01:19 --- mode: I440r set mode: +o grurp 11:01:26 --- mode: I440r set mode: +o klooie 11:01:32 --- mode: I440r set mode: +o rob_ert_sleep_ing 11:01:36 --- mode: I440r set mode: +o scipient 11:12:13 --- join: MrReach (mrreach@209.181.43.184) joined #forth 11:12:21 hello, I440r 11:12:39 yes, I know why you cannot web from your firewall 11:12:47 do you still need to know? 11:13:31 yes 11:13:33 hi :) 11:13:41 i asked in #debian and in #linpeople 11:13:44 nobody seemed to know 11:13:49 ok, it has to do with the way IPMasq interacts with IP chains 11:14:11 k 11:14:19 if your clear all the input and output rules, you should be able to web out 11:14:37 input polacy is accept - chain is clear 11:14:44 output polacy is accept - chain is clear 11:14:49 the only RULE i have is 11:14:51 the masq forwarding rule bypasses the input and output chains. 11:15:07 ipchains -A forward -i eth1 -j MASQ 11:15:18 did you chack manualy or via the config utility? 11:15:37 i cant get anything to work at all if i try use any config util 11:15:40 i have a little script 11:15:44 ifconfig eht0 down 11:15:47 ifconfitg eht0 up 11:15:50 ok, on a redhat system? 11:15:53 route add default gw gatewayip 11:16:02 ipchains -F 11:16:04 ipchains -X 11:16:15 ipchains -A forward -i eth1 -j MASQ 11:16:17 debian 11:16:22 oh, ok 11:16:26 thats my firewall script 11:16:31 i run it by hand 11:16:36 ive tried using mason - 11:16:41 check that "ipchains -L input" returns nothing 11:16:44 \if i implement ANY sort of firewall 11:16:51 ill paste that here 11:17:01 --- part: edrx left #forth 11:17:12 root@gateway:/etc# ipchains -L 11:17:13 Chain input (policy ACCEPT): 11:17:13 Chain forward (policy ACCEPT): 11:17:13 target prot opt source destination ports 11:17:13 MASQ all ------ anywhere anywhere n/a 11:17:14 Chain output (policy ACCEPT): 11:17:21 good forth site, btw, although a bit disorganized 11:17:46 hmmm ... can you ping your router? 11:17:53 what router 11:18:04 what do you connect to the net with? 11:18:15 dsl modem 11:18:17 --- join: speuler (icafe@carambola.icafe.spacenet.de) joined #forth 11:18:21 bongo!!!! 11:18:24 --- mode: I440r set mode: +o MrReach 11:18:25 heya, bongo!!! 11:18:27 --- mode: I440r set mode: +o speuler 11:18:30 good day 2u 11:18:48 just thought i'll check in while sitting in the internet cafe :) 11:19:00 I440r: tnx 11:19:02 still not at "home? 11:19:06 :) 11:19:13 just left again, two weeks ago 11:19:19 I440r: what do you connect to the net with? 11:19:23 living on a camping site 11:19:26 dsl modem 11:19:40 sounds like fun bongo :) 11:19:43 heh, are you there for a contract? vacationing? 11:20:01 MrReach: contract work 11:20:03 can you ping the DSL card? 11:20:14 MrReach: but using the van to live in 11:20:18 i could if i knew its ip 11:20:20 which i dont 11:20:24 great fun now it's summer 11:20:31 oh! is the firewall daemon running? 11:20:36 or - i think i prolly could 11:20:46 ifconfig should tell you 11:20:47 i can ping my servers gateway at my isp 11:21:03 no - that would just tell me the ip of my gateway at my isp 11:21:13 that's bizarre ... can you telnet to any other site? 11:21:37 yes im talking to you from xchat FROM the gateway box 11:21:43 irc is basically a telnet connection 11:21:53 yep ... as is the web 11:22:15 but you can't get to ebay? 11:22:35 i cant get to www.etrade.com or www.vote.com 11:22:41 im sure ther are others i cant get to 11:22:50 i can get to most sites from here 11:22:52 how about the DNS? does each machine find their own IPs from the net? 11:22:53 just not those 2 11:23:16 the machines on the internal network use the gateway as their primary name server 11:23:24 you might have old IP addrs on the unix machine 11:23:26 the gateway box uses my isp 11:23:36 i can check that 11:23:37 I440r: how's your / your dad's german ? 11:23:41 ok, then they would all fail if it were an ip prob 11:24:08 ill dig from server and from inside see if i get the same 11:24:16 can you ping etrade or vote? 11:24:17 I440r: (plenty of docs written in german :-( 11:24:54 i dont speak german nor does my dad - bu i bet we could learn :) 11:25:04 www.vote.com is pinging for me 11:25:14 www.etrade.com is not pining for me 11:25:16 i can ping it from inside the net but not from the server 11:25:49 aha!~!!! 11:26:00 ??? 11:26:04 when i dig from the server i dont get the same results as from INSIDE the server! 11:26:42 how long since a server reboot? 11:26:59 speuler: are u thinking we might be needed if the language barrier didnt prevent ? 11:27:03 yesterday :P 11:27:05 by accident 11:27:19 i said REBOOT from my laptop intending to reboot my laptop 11:27:27 forgot i was sshing to the server hehehe 11:27:38 up 21:45 11:27:44 well ... you might want to bring down the network altogether and bring it back up ... or reboot if you don't know how to do that 11:27:53 OOOPS! 11:27:55 ifconfig eth1 down 11:28:00 will bring the network down 11:28:09 I440r: my current impression is the project is going to go on longer than the initial 3 months 11:28:22 speuler: thats always the case 11:28:25 I440r: and it sounds big 11:28:32 they bring you on for 2 weeks ur there for 2 years if they need u :) 11:28:45 no ... on redhat thats /etc/rc.d/init.d/network stop 11:28:46 I440r: far too much for the few people doing the initial evaluation work 11:28:47 i need a job :) 11:29:24 i have /etc/init.d/networking 11:29:38 speuler how much of a problem would the language barrier be 11:29:40 reinitializing the entire network params is quite different from bringing one of the cards down 11:29:50 I440r: may become years to work on 11:29:57 cool :) 11:30:22 I440r: the first book i got was 800 pages, all written in german. 11:30:51 if they hired me on i would learn german :) 11:30:59 I440r: the technology was pioneered by german and french companies, competing with each other. 11:31:16 like sony with the cd 11:31:19 I440r: so there's plenty of german in the docs and manuals 11:31:44 mrreach i can do /etc/init.d/networking restart ? 11:31:54 is the firewall daemon running? 11:32:07 what do you mean by daemon 11:32:08 should be able to ... will see you in a bit @:^> 11:32:24 am i still here ? 11:32:26 :) 11:32:32 root@gateway:/etc/init.d# /etc/init.d/networking restart 11:32:32 Reconfiguring network interfaces: done. 11:32:44 687 ? S 1:40 /usr/lib/linuxconf/lib/firewalld -d -c /etc/heimdall/ 11:32:47 still cant ping www.etrade.com 11:33:00 no i have no firewall 11:33:09 etrade doesn't ping ... as I said 11:33:23 oh 11:33:31 on my system, shutting off that deamon totally screws ALL the networking 11:33:39 lynx etrade 11:33:41 www.vote.com pings, though 11:33:46 as does www.yahoo.com 11:33:47 making http connection to www.etrade.com ----- 11:33:55 --- quit: speuler (changing servers) 11:33:55 but i never get there 11:34:35 does lynx attempt the connection? 11:34:43 it attemtps 11:34:43 I recall that lynx likes the full URL 11:34:46 its attemtping 11:34:50 ok 11:34:55 i can say lynx google 11:34:57 and get there 11:35:02 i say lynx etrade and i dont 11:35:29 ok 11:35:55 that's REALLY odd ... I'm runningout of ideas 11:36:05 --- join: speuler (icafe@carambola.icafe.spacenet.de) joined #forth 11:36:07 do u have bongo in your icq ? 11:36:10 aha there he is :) 11:36:12 --- mode: I440r set mode: +o speuler 11:36:16 bloody irc client 11:36:26 hehe 11:36:32 which client ? 11:36:34 tried to opem another server/channel in anotherwindow 11:36:42 some tcl thing 11:36:52 yes, I have bongo on my icq, but he's not logged in because he's at an internet cafe 11:37:03 here, I'll send you his contact info 11:37:07 sorry, i missed you last words 11:37:21 oh yea 11:37:23 try email: speuler@blik.wox.org 11:37:25 thats rite :) 11:37:35 as i can pop my mail from this mail client 11:37:45 whenever i'm around 11:38:15 cool 11:38:22 you know my email of corse - :) 11:38:41 i440@purplecoder.com ? 11:38:43 speuler: when you're on icq ... are you "bongo" or "speuler" now? 11:38:45 i440r 11:39:02 yea ? 11:39:06 ./me here :) 11:39:08 mrreach: speuler. somebody nicked my nick 11:39:10 no 11:39:15 mark4@purplecoder 11:39:25 i shud proly alias that one tho :) 11:39:32 yes, bongo is a common name on the IRC networks 11:39:39 but i won't be on icq for another few months 11:39:52 * MrReach nods. 11:40:24 I'll return to NL for a week, in august, i guess 11:40:33 empty my mail box 11:41:15 speuler you have an account here - you could .forward all ur email here and ssh in and read it! 11:41:19 very object oriented, this project, by the way ... 11:41:25 ouch 11:41:25 --- quit: grurp (Bye all) 11:41:34 now THAT would be a problem 11:41:39 i440: i got an .forward on your machine to my mail account 11:41:41 OOP is the biggest mistake ive ever seen 11:41:47 hehehe 11:41:51 heh, we had an earthquake here this morning, btw 11:41:54 infinite .forward loop :) 11:42:01 small one i hope :) 11:42:05 MrReach: sheeet. heavy ? 11:42:27 3.4 rictor, I'm about 4 miles from the epicenter 11:42:45 richter ? 11:42:45 knocked the house around pretty good 11:42:54 yes, richter 11:43:11 that's considerably strong. 11:43:17 little one 11:43:18 any damage ? 11:43:36 its my 5th earthquake, but slept through the other four 11:43:38 if anything can take a 3 month contract out to 3 years OOP will 11:43:44 speuler: not at this house 11:43:56 I440r: i have a pop server on my machine (blik.wox.org) 11:44:02 so i can get to that mail 11:44:02 some cracked patios around here, and one street has a dangerous crack 11:44:18 cool :) 11:44:30 was it scary ? 11:44:36 I440r: it is permanently switched on 11:44:36 lots of aftershocks, and a secondarly quake at 2.3 11:45:00 cool :) 11:45:12 I'm going to wait for this eve to do the foundation and chimney inspections, though, because the ground is still shaking 11:45:38 are the damages covered by any insurance ? 11:45:59 STILL shaking ? 11:45:59 it depends ... each home is insured sperately 11:46:02 yes 11:46:08 klooie: u're dutch ? 11:46:26 and most insurance company have the "acts of god" weasel clause 11:46:41 this house is not insured for earthquake 11:46:50 ouch! 11:47:02 actually tho i find insurance to be a BIG CON 11:47:06 mrreach: hope some sticky tape would help 11:47:19 damn it! I moved out of Seattle, and into one of the most geologically stable places in the USA ... it was part of my reason for moving here 11:47:20 instead of paying insurance companies put the same money into an account for just this occasion 11:47:42 :( 11:47:46 my monitor soon will turn off 11:47:54 I'm not overly concerned about it 11:48:02 machine stays on but i'll be in the dark then 11:48:05 bongo if u disappear we'll know why - :) 11:48:08 good 2 c u tho :) 11:48:17 actually, it happened right now. 11:48:24 i'm typing blindly now 11:48:28 i used to do all my irc from an inet cafe in england 11:48:31 can't see u anymore. 11:48:36 but the guy at eh cafe was a buddy of mine hehe 11:48:36 heh 11:48:47 so, if you don't mind kicking me (or remove the +o) 11:48:57 so that the next user won't hasslke you 11:48:57 --- mode: MrReach set mode: -o speuler 11:49:02 good by for now 11:49:06 hehehe lets all beat up on bongo - he wont know :) 11:49:08 cu 11:49:10 cu dood! 11:49:20 --- quit: speuler (Read error to speuler[carambola.icafe.spacenet.de]: EOF from client) 11:49:29 heh, too bad he doesn't remember 11:49:34 hehe 11:49:57 that's too funny 11:50:13 where are u located again ? 11:50:25 I'm in Spokane, WA right now 11:50:29 rite 11:50:42 will be moved back to Seattle area this summer, if I have anything to say about it 11:50:46 how far is that from indiana ? 11:50:55 erm ... quite a ways 11:51:15 I will be visiting New Orleans for a couple of months this winter 11:51:34 am thinking of moving there, but want to see how much I like it, first 11:52:53 coo 11:52:56 cool even 11:53:01 well actually - not cool hehe 11:53:06 very hot and humid in the summer 11:57:02 yep, we'll have to see how it goes 11:57:09 :) 11:57:19 there's an island in puget sound I've been thinking of purchasing 11:57:23 so - no more gueses as to why my gateway is being stoopid ? 11:57:32 wow! 11:57:36 --- nick: rob_ert_sleep_ing -> rob_ert 11:57:38 nope, not right now 11:57:46 heya, rob_ert 11:57:48 Hi 11:58:06 the island will be a 5 year project, though, just in the purchase 11:58:14 and another 5 to fix it up 11:59:12 :) 11:59:16 we got our mortgage i think 11:59:29 on a new purchase? 11:59:31 but its gone from a 20k down payment to a 30k to 40k down now 11:59:33 you're married? 12:00:16 nope 12:00:19 i wish 12:00:26 I finally just purchased this house outright ... I got *SO* tired of futsing around with this particular bank 12:00:48 they are real lame-asses 12:01:08 im not allowed to retire the mortgage early 12:01:12 that pisses me off 12:01:27 yes, but how tight is the prepayment penalty? 12:01:38 dont know 12:01:56 is this your first house? 12:02:23 yup 12:02:24 do you intend to be buying/selling several houses? 12:02:33 nope 12:02:43 i intend to buy this house and keep it :) 12:02:48 ok ... then prepay is not such a big deal 12:03:21 I'm intending to be buy/selling 52 houses/year by this time in 2002 12:03:38 so it's important to me to be on the ball with mortgages 12:03:51 ouch! 12:04:02 i used to have a teacher that baught a car a week 12:04:12 in that circumstance, prepays could cost me $30,000 a year or more 12:04:51 I've got to find a good lawyer to form a partnership with, though 12:08:26 --- join: adu (andrew@adsl-63-201-90-87.dsl.snfc21.pacbell.net) joined #forth 12:09:45 greets, adu 12:09:46 hi 12:09:46 --- mode: I440r set mode: +o adu 12:09:46 adu didnt i add u to chanserv ? 12:09:47 i love forth 12:09:51 hehe 12:09:53 heh 12:10:06 chanserv? i'm not a channel! 12:10:07 whats not to love :) 12:10:19 erm so you auto op 12:10:24 I440r: the fact that many forthers reinvent the wheel by nature 12:10:27 --- nick: MrReach -> MrGone 12:10:33 Bye... 12:10:37 which i say is GOOD 12:10:41 =) i'm op! 12:10:48 * rob_ert too 12:10:55 hi robert 12:10:58 i opped you :P 12:11:01 Hi adu 12:11:11 every wheel should be reinvented each time its needed 12:11:22 Yup 12:11:23 because each wheel would then exactly fit the car it was put on 12:11:34 interesting 12:11:42 in c that wont work because it would take too much time 12:11:46 hmmm... 4 very different wheels on a car 12:11:47 ya, and people tend to know how to use things they made themselves 12:11:57 in forth reinventing the wheel every time does not slow you down very much 12:12:08 people who use library, are only as good as the documentation 12:12:16 usually 12:12:53 i wanna get coding isforth - but i need tcn's work 12:13:25 i've been wanting to do this hybrid kernel 12:13:47 i've maped out the connections and language bindings and implementations a bit 12:14:01 but i need a starting point 12:15:09 i was pipe dreaming last nite - eventually have isforth run seperate from linux - where isforth is the OS hehe 12:15:11 i want a kernel in Ada & Lisp with a forth interface, maybe in forth with Ada/Lisp compilation, or something like that, and a unified graphics arch, with not only FB access but vector contexts, based on Mach only not in C 12:15:16 and have it work like linux 12:15:25 call it f-ix or fx hehe 12:15:34 forthix hehe 12:15:35 fix =) 12:15:55 and when you say startx it runs a word taht COMPILES x and runs it hehe 12:16:00 everything stor3ed as sources 12:16:06 when you run things you compile them :) 12:16:24 interesting 12:16:24 like i said - pipe dream heeh 12:16:31 JIT to the max? =) 12:16:39 pipe as in bong? 12:17:04 hehe exactly 12:17:55 =) 12:18:13 what do you think of my Ada/Lisp kernel based on Mach-like arch? 12:18:48 i'm not sure if it should have only a forth interface/shell, or be implemented in forth\ 12:19:17 i was thinking of the forth kernel being the only thing that stays compiled 12:19:20 when you say startx 12:19:25 forth sees no word called startx 12:19:26 i don't think about forth & lisp being HLL i think of them as MLL 12:19:33 searches for a source file called that 12:19:35 C & Ada are HLL 12:19:37 interprets the file 12:19:45 which compiles all the x shit rite then 12:19:47 startx.fth? 12:19:53 no - just startx 12:19:57 hmm 12:19:58 everything would be a .fth 12:20:12 all commands you find in unix would exist 12:20:18 i mean a file called startx.fth would be called by typing startx? 12:20:19 but everything would be a SOURCE file 12:20:33 ya, with forth you can do that 12:20:36 the system would not have the ability to save executables 12:20:43 it would FORCE open source hehehehe 12:20:48 but i want multiple runtime archs, including the compiled nature of C/Ada/Lisp 12:21:22 i also want to make an Ada95 compliant INTERPRETER 12:21:27 call it AdaScript =) 12:21:37 ugh! 12:21:39 heh 12:21:52 then you could force that to be open source =) 12:22:08 there would be no executables 12:22:25 every script would end in a command to forget everything that the script compiled 12:22:37 so the kernel would have to be able to compile to different contexts 12:22:48 like JIT 12:22:56 only save to memory instead of to a file 12:23:03 makes sense 12:23:10 you might run a script to start applications x y and z and want the script to end and be purged but not x y and z 12:23:21 no executables 12:23:30 you write a program and you save its source 12:23:48 ya i know 12:23:49 when you execute it forth loads it into some execution context and compiles it there 12:24:23 when script finishes it forth frees up that execution context and all its memory 12:24:42 and if it started any other applications they all die too 12:24:47 unless specified otherwise 12:24:54 you'd still need an executable bootloader 12:25:02 a complete unix written in forth where EVERYTHING is source 12:25:10 that would be forth 12:25:18 no 12:25:20 rebuild of kernel would be a metacompile 12:25:28 it hasto be executable 12:25:53 at least the bootloader hasto be 12:25:59 --- quit: adu (farmer.openprojects.net zelazny.openprojects.net) 12:26:19 --- join: adu (andrew@adsl-63-201-90-87.dsl.snfc21.pacbell.net) joined #forth 12:26:35 --- mode: ChanServ set mode: -o nate37 12:26:35 --- mode: ChanServ set mode: -o Trey 12:26:35 --- mode: ChanServ set mode: -o I440r 12:26:35 --- mode: ChanServ set mode: -o clog 12:26:35 --- mode: ChanServ set mode: -o scipient 12:26:35 --- mode: ChanServ set mode: -o klooie 12:26:35 --- mode: ChanServ set mode: -o rob_ert 12:26:35 --- mode: ChanServ set mode: -o MrGone 12:27:00 whatever the bootloader loads could be anything like if the boot loader was a forth interpreter it could load fth source 12:27:34 but you can't point BIOS to a forth file and expect it to understand 12:29:10 damnit i wish people wouldn't be so stubborne 12:29:30 i want to work on a common os, that will please everyone, and it won't if only one person is working on it 12:29:40 computers aren't like the real world 12:29:57 you don't haveto provide only one thing 12:30:06 THAT would be the ONLY executable to actually get written to disk 12:30:06 yes the forth kernel would be 12:30:06 but nothing else 12:30:10 you can please everyone 12:31:02 uber 12:31:07 yey 12:31:07 i'm crazy 12:31:12 i just went insane 12:31:23 hey did i tell you about a new lang i made with 3 keywords? 12:33:53 SDL is easy, but isn't as centralized 12:33:59 Yup 12:34:15 no? 12:34:15 sounds interesting 12:34:15 no, i mean 12:34:23 oops 12:35:34 hehe 12:35:34 what keywords? 12:35:44 all, none, thru 12:35:55 they're state and scope modifiers in one 12:36:38 instead of volatile/static/const & public/protected/private its all/thru/none respectively 12:37:00 and all the keywords of other langs are expressed implicitly by syntax and structure 12:37:22 like if/case/for/do/while/class/struct/function/method 12:37:43 cool huh? 12:37:50 ugh method = oop 12:38:01 ugh? 12:38:09 ugh 12:38:11 nuff sed 12:38:12 :P 12:38:43 heres an example, d=statements c=condition v=variable e=error type: 12:38:44 TRY CATCH {d.}, (e):{d.}, {d.}. 12:38:44 IF ELIF ELSE {d.}, {d.}, {d.}. 12:38:45 SWITCH CASE (v):{l;d.} 12:38:45 FOR IN (d.d.){d.} 12:38:45 DO WHILE :{d.} 12:38:46 WHILE :{d.} 12:39:10 have you made a compiler for that lang? 12:39:17 no 12:39:26 interpreter? 12:39:31 i've started with a BNF/Yacc description tho 12:40:30 i was thinking of doing a version in forth with special instances of ':{' and }< and ): operators and things like that 12:40:55 hehe 12:41:13 IF 2 @_@ 5 THEN ;-) 12:41:49 whats @_@? 12:41:54 Hmmm 12:41:59 Strange smiley ;) 12:42:05 o hehe 12:42:28 and here is how i got rid of the return keywords: 12:42:29 break; <-. 12:42:29 continue; <--. 12:42:29 return #; <- #. 12:42:29 throw T; <-: (T) . 12:42:30 catch T; (T){ ... } 12:44:36 anywayz, i'll probably never get it working until i get some other langs working on this machine 12:44:44 i want to get clisp and bigforth working 12:45:04 maybe even port MINOS to MacOSX 12:45:13 MINOS? 12:45:15 What's that? 12:45:20 bigFORTH's GUI library 12:45:47 How do you do function calls in forth? 12:45:54 function calls? 12:45:58 uh you don't 12:46:09 every word is a function call 12:46:21 if is a function call 12:46:25 then is a function call 12:46:32 + is a function call 12:46:39 heh, ok 12:46:43 but how do you call a procedure 12:46:45 ? 12:47:00 by typing its name 12:47:23 ok 12:47:36 theoretically if oyu wanted to call a C function or procedure, you'd haveto build a wrapper, and push values on the stack then call its name 12:47:39 the procedure, does it start with a label? 12:47:54 no 12:48:09 everything in forth is separated by a space 12:48:19 --- quit: rob_ert (Read error to rob_ert[h3n1fls33o898.telia.com]: Connection reset by peer) 12:48:20 and everything between the spaces is a word, or a mini-program 12:48:27 --- join: rob_ert (robost86@h3n1fls33o898.telia.com) joined #forth 12:48:41 Damn, I was disconnected 12:48:49 so if you wanted to call printf("Hi %s", name); for example 12:49:00 forth[12:47] : and everything between the spaces is a word, or a mini-program 12:49:26 so you'd haveto have a wrapper that knew to call printf when the word printf was called 12:50:07 then you'd do: " Hi %s" name printf 12:50:20 ok 12:50:25 the " is a word that reads until it finds another " and pushes it onto the stack 12:50:25 like in asm 12:50:42 notice that the " is surrounded by spaces 12:51:19 yes 12:51:26 now name is a variable that pushes its contents to the stack when executed, and printf would be an assembled routine with a C function call that takes the values on the stack, and calls the C function with them 12:52:10 When you type a vars name in forth ,do you push its address? 12:52:15 i wish there was a SWIG port to forth 12:52:28 SWIG = ? 12:52:29 no its value 12:52:43 SWIG = Standard Wrapper Interface Generator 12:52:55 it converts C/C++ APIs to perl/python/tcl 12:52:59 Ok 12:53:00 and ruby i think 12:53:48 rob_ert: if your just learning about langs, i suggest Ada, Eiffel, Lisp, and Forth 12:54:11 Hmmm.... I want to learn them if they're useful 12:54:25 C is what every body says is useful 12:54:28 Forth seems to be a small language, and I really like that 12:54:33 just bcuz every1 uses it 12:54:41 but as history has proven time and again 12:54:50 the majority is often wrong 12:55:09 So C is bad you mean? 12:55:35 C isn't bad, but its unsafe, and that means its dangerous, not bad 12:56:00 but its the only widely known portable lowlevel language 12:56:21 Yeah 12:56:22 C's pointers are one of its downfalls 12:56:41 Hmm 12:56:49 are they? why? 12:56:50 thats one reason i like Ada, it can do everything C can without C's mistakes 12:57:50 rob_ert: bcuz its the programmer's responsibility to make sure that pointer resolution is resolved correctly, and to ensure that the memory at that address is allocated corectly, Ada also comes with Garbage collection 12:58:06 C doesn't 12:58:43 "pointer resolution is resolved correctly" means? 12:58:57 Ada uses the in/out specifiers so passing by reference can still take place 12:59:17 a pointer is an address, and to resolve it you have to load the value at that address 12:59:43 and you can have multiple pointers, like the char **argv you often see 12:59:57 that hasto be resolved 2 times, in order to get the value 13:00:03 ok 13:00:09 * rob_ert is not very good at english 13:00:13 me english bad yes 13:00:17 ;) 13:00:24 then you haveto use pointer aritmetic to get the rest in that array 13:00:31 its also seen char *argv[] 13:00:32 same thing 13:00:53 I fond C pointers logical 13:00:59 I find C pointers logical 13:01:01 in C an array is a pointer to memory that contains pointers to a list of objects 13:01:07 they are 13:01:11 but they're dangerous 13:01:14 hehe 13:02:00 it does it like that partly to save efficiency, but ada can do the same without loosing that efficiency 13:02:36 other langs like perl/python/java aren't as efficient 13:02:40 they're just easy to use 13:02:48 yes 13:02:59 and one thing i hate is that languages aren't used in their place 13:03:15 every lang has a purpose, and most often their used for purposes they aren't designed for 13:03:37 BASIC is for learning and small math programs 13:03:47 C is for a lot of stuff 13:03:55 Assembler if for Demos and OS's 13:04:00 ;) 13:04:18 the best language for applications is CommonLisp 13:04:27 Hmm 13:04:31 the best language for quick webapps is Python 13:04:34 imho 13:04:36 ¨never tried (or heard about) that 13:04:47 the thing is is that many langs are designed for multiple purposes 13:05:01 common lisp is the most impressive language i've ever seen, still learning it. 13:05:13 its a big language 13:05:28 scheme is good for learning lisp-like langs, but its not right for big apps 13:06:11 forth is good for OSs too, and debuging and testing 13:06:22 good for real-time environments 13:06:29 any OS's written in Forth? 13:06:42 heh, most forth environments ARE OSs 13:06:47 the early ones at least 13:06:51 Hmm 13:06:58 then BASIC is OS language too 13:07:16 now they're degraded by making them emulated programs that can only interpret, not control the underlying hardware 13:07:37 igtg 13:07:40 ok 13:07:43 see you 13:07:45 i want to see a movie 13:07:54 rob_ert: good luck, languages are awsome! 13:08:01 just keep in mind: 13:08:26 languages aren't like girlfriends, you're allowed to know more than one! 13:08:33 Hehe 13:08:35 --- quit: adu (IRCStep) 13:33:08 --- nick: rob_ert -> rob_ert_aw_ay 14:06:07 --- nick: MrGone -> MrReach 14:08:51 --- join: cleverdra (jfondren@1Cust57.tnt4.florence.sc.da.uu.net) joined #forth 14:08:51 --- mode: ChanServ set mode: +o cleverdra 14:09:00 --- mode: cleverdra set mode: +oooo clog I440r klooie MrReach 14:09:01 --- mode: cleverdra set mode: +oooo nate37 rob_ert_aw_ay scipient Trey 14:10:35 --- topic: set to ': 2pick 2>r dup 2r> rot ;' by cleverdra 14:12:11 Hello, #Forth. 14:18:28 heya, cleverdra 14:18:48 how're you doing, MrReach? 14:19:10 pretty good, had an earthquake this morn 14:19:48 oh? Where are you? 14:20:03 Spokane, Wa 14:20:31 one of the most geologically stable places in the USA ... it was one of the reasons I moved here. 14:21:08 Huhn. 14:21:19 so go figure 14:23:00 I've just finished the FIGGY BAR logs, and some of the bestofGEnieu stuff, and am now working my way through the conferences. Interesting stuff. 14:23:24 I had a thunderstorm or something this morning =) Not an earthquake... any damage? 14:23:41 yes, amazing the sophistication that some of the early forth writers displayed 14:23:54 no, no damage to speak of 14:24:28 lot of stuff shaken off the walls, some cracked patios ... and one street is unusable because of a big crack in it 14:24:45 I don't think these are "early". A few years back, about the time of the ANS Forth effort. 14:24:54 oh, ok 14:24:58 Oh, a big crack. 14:25:18 Just like in the movies. I'm sure the children along that street (if there are any?) are enjoying themselves. 14:25:59 pretty much business as usual here, except that the aftershocks are rather unnerving 14:26:15 how frequent/strong are they? 14:26:49 there was the initial quake of 3.4, about an hour later, another quake of 3.2 14:27:02 for a long time, tremors every 30-40 minutes 14:27:25 just had one about 10 mins ago, but it was 2 hours after the one before it 14:30:04 Yeah, that must be disturbing. 14:32:41 heh, the animals HATE it (my dogs and cats) ... they're all in the office with me, huddled around my feet. 14:33:33 =) How're the other humans doing? 14:35:30 don't know ... haven't left the house today 14:35:58 big frenzy on the news, but that's what the news does 14:36:04 Yeah. 14:36:54 Any Forth-related news? 14:37:08 --- nick: rob_ert_aw_ay -> rob_ert 14:37:23 * cleverdra is still wondering about that CR/LF thing of Hohensee's. 14:37:26 hello rob_ert. 14:37:37 haha! not much here 14:37:41 Hi 14:39:35 I thought you'd decided to stick with C or something, rob_ert =) 14:55:18 http://www.jwdt.com/~paysan/dragon/ - hee =) 14:58:56 bye, take care 14:59:02 --- quit: MrReach () 15:02:04 --- join: aaronl (aaronl@vitelus.com) joined #forth 15:13:06 --- mode: cleverdra set mode: +o aaronl 15:13:12 hello aaron 15:19:51 hi 15:40:29 does an amd k6-2+ support intel rng ? 15:40:45 or does that mean "INTEL ONLY" :) 15:40:51 rng = ? 15:40:57 random number generator 15:41:05 build into the processor or something 15:41:13 ah 15:41:21 wtf 15:41:25 if you hear me 15:41:28 i have to reboot 15:41:44 I don't even have a pIII for that thing, and I don't use RNGs enough in cases where a hardware one would matter. 15:41:52 you have to reboot? 15:41:56 well, bye. 15:42:06 maybe 15:42:07 wait 15:42:19 * cleverdra favorite RNG is a teeny little thing implemented in Forth. 15:42:48 I use it on Enth/Flux. It's written in Color Code, and uses the RTC to add a little randomness. I dunno how much. 15:43:15 I've only used it so far for a display hack (random colors) and a Shakespearean Insult Generator, anyway. 15:43:43 hehe, no need for rebooting 15:44:15 :) 15:44:42 its a kernel compile option - cat/proc/cpuinfo shows my processor doesnt support it so no poing in compiling it in :) 15:45:02 oh 15:45:17 don't build in CPU specific functions for a CPU you don't have 15:45:34 Rule #342 of Assembly Programming. 15:45:50 lol 15:46:14 maybe #2 or something 15:46:20 (what is #1?) 15:47:43 #1 is the same as in any other language -- The program must work! 15:47:54 hmmm.... why? 15:48:20 My programs never work 15:48:32 but I use some piece of code from it in the next prog 15:48:45 If you ever compile them, they've worked *that* far =) 15:48:56 but you're right. I dunno what #1 is. 16:10:39 www.figTaiwan.org 16:10:44 int'resting 16:19:04 --- join: adu (andrew@63.201.90.87) joined #forth 16:19:11 --- mode: cleverdra set mode: +o adu 16:19:14 hello adu. 16:36:04 --- nick: rob_ert -> rob_ert_sleep_ing 16:37:01 night 17:01:53 --- nick: rob_ert_sleep_ing -> rob_ert 17:06:44 * cleverdra returns. 17:06:51 good night sleep, robert? =) 17:06:55 * rob_ert salutes him 17:06:56 hehehe 17:06:58 no 17:07:00 short sleep 17:08:33 --- nick: rob_ert -> rob_ert_may_be_sleep_ing 17:11:58 * aaronl is away: I'm busy 17:12:31 --- quit: rob_ert_may_be_sleep_ing () 17:33:00 --- join: futhin (thin@h24-67-113-99.cg.shawcable.net) joined #forth 17:33:15 hi all 17:33:42 hello futhin. 17:34:01 somebody tell me if forth is an interpreted lang or a compiled lang or what? 17:34:13 heh 17:34:14 it's both. 17:34:22 If you wait an hour or so, I'll back and explain it fully. 17:34:23 --- quit: cleverdra (Leaving) 17:34:35 heh 17:38:30 hi fu!! 17:38:46 its both 17:38:50 interpreted and compiled 17:38:54 hi i4!! :) 17:39:01 how so? 17:39:02 it seems complex but its realy very simple 17:39:26 when you type FOO on the keyboard forth will either interpret it or compile it depending on the current state 17:39:34 the default state is interpret 17:39:38 so when i type 17:39:44 --- quit: adu (Read error to adu[63.201.90.87]: Connection reset by peer) 17:39:50 : foo some more words here ; 17:39:58 forth starts interpreting that line 17:40:08 the word : (pronounced colon) does a number of things 17:40:15 it switches us into compile mode 17:40:41 then creates a header in the dictionary for the new word (with the name field of the header set to 'FOO; 17:40:46 then it exits 17:40:55 so when forth sees 'some more words here' 17:41:08 it compiles each of them into the definition for FOO 17:41:19 hm 17:41:20 the word ; is special - its called an immediate word 17:41:28 even tho we are in COMPILE mode 17:41:33 forth INTERPRETS it 17:41:38 it executes its code 17:41:41 ; does this 17:41:48 yeah ok, gotcha 17:41:57 i know the immediate stuff.. like IF THEN 17:42:07 <--- read starting forth a few days ago 17:42:08 it compiles an UNNEST onto the end of the just compiled : definition 17:42:20 it then switches us out of compile mode back into interpret mode 17:42:26 futhin thats a very good book 17:42:31 get thinking forth too if you can 17:43:10 yeah :) 17:43:14 UNNEST 17:43:18 hmm mine is just EXIT 17:43:18 heh 17:43:19 so as u can see - forth is interpreted AND compile 17:43:25 exit is another name for unnest 17:43:31 gotcha 17:43:32 yea.. 17:43:42 EXIT is in Starting Forth 17:43:43 dependintg on context i use each 17:43:50 futhin: did you finish the book? 17:43:54 i consider it to be an unnest if its at the end of a : definition 17:44:03 but an exit if its in the middle of a : def hehehe 17:44:25 heh 17:44:45 * nate37 making forth for ti-85 17:45:11 yeah i finished the book.. 17:45:18 hmm 17:45:27 futhin 17:45:29 read it again :) 17:45:31 and again 17:45:32 Moving Forth isn't bad also 17:45:32 yea 17:45:32 and again :P 17:45:33 yeah 17:45:38 and thinking forth 17:45:43 Moving Forth <-- online 17:45:52 there was some parts that i skimmed 17:45:55 Thinking Forth <-- another book by Leo Brodie 17:46:00 because i have to code the stuff first 17:46:06 futhin: "Under the Hood"? ;) 17:46:12 leo brodie now says he disagrees with most of what he said in thinking forth 17:46:19 heh oh well 17:46:20 he has gone all OOP on us 17:46:43 OOP == changing dictionary :) 17:46:51 no 17:47:02 heh 17:47:04 thats not oop 17:47:08 oop = =evil 17:47:15 vocabularies = good 17:47:16 i like OOP a bit 17:47:30 except in ans where they dont even call them vocabularies 17:47:36 they invented a new arty farty name for them 17:47:42 what is that name? 17:47:48 i forget 17:47:58 i try to forget as much as i can about ans forth 17:48:05 i've been stealling words i should implement into ti-forth from ans.. otherwise i havn't read it much 17:48:10 heh 17:49:09 i read part of it - am diametrically opposed to what i read so much i didnt bother reading the rest 17:49:24 ans is as bad as oop 17:49:25 what part did you read? 17:49:33 1.e fulll of BS 17:49:42 what is better then? 17:50:07 ok .. lets change the subject slightly for a second or 2 17:50:18 why? boss comming around or something? 17:50:19 heh 17:50:22 i ahve always said taht anything you can do WITH recursion you can do better without 17:50:30 that statement applies equally to oop 17:50:35 hmm 17:50:56 recursion == iteration? or any type (including tail-end) 17:51:16 OOPs biggest failing is that it makes it so very easy to turn a 3 week project into a 3 year project that will never work and will be scrapped eventually 17:51:45 OOP was invented by "career academics" who never fscking coded a line of REAL code in their lives 17:53:40 are you aiming at Smalltalk-80,Self,C++ (woo way different from first two heh)? 17:55:13 I440r? 17:55:15 any oop 17:55:23 python? 17:55:36 ive yet to see a single instance of oop thats not totally fscked in the head 17:55:47 example 17:55:51 PARTS of oop are ok - most of it is bullshit 17:56:00 something BAD from oop 17:56:14 information hiding 17:56:18 altho i've been coding in z80 asm the last 2 weeks so any higher language (cept forth) atm is painfull ;) 17:56:25 classes 17:56:28 inheratance 17:56:32 python untyped 17:56:40 python doesn't have information hiding 17:56:44 all do nothing to make the code easier to read OR write 17:56:48 and hardly any inheratency 17:56:49 but do a hell of alot to make it fat 17:57:39 every time you create an instance of a class you DUPLICATE the structures associated with that class 17:57:47 duh! 17:58:07 why not jsut have a single function and pass it different parameters depending on what you are trying to do 17:58:10 SHARE code 17:58:13 SHARE information 17:58:23 make you code small and fast 17:58:30 oop is less than useless 17:59:16 a function be an object? 17:59:35 no 17:59:41 who needs objects 18:00:05 an object is just a structure that defines the properties of a function 18:00:10 who gets to see what parts of it 18:00:18 what data structures the code needs 18:00:21 who creates them 18:00:26 who destroys them 18:00:27 argh 18:00:28 --- join: adu (andrew@63.201.92.85) joined #forth 18:00:28 python basically has objects as dictionarys.. untyped.. when you call objcet methods it actually calls the method with the object as arguments.... 18:00:30 altho slow 18:00:39 lets just tie our code into one giant gordian knot why dont we 18:00:48 heh 18:01:01 hmm 18:01:13 but providing an interface, for some things, can be useful 18:01:15 sure 18:01:22 i had a friend of mine who wrote a puzzle game 18:01:35 you removed coloured blobs from the board and the ones above it fell down 18:01:50 you could only remove blobes that had 4 in a row 18:02:05 when the ones above fell down you ahd to find anotehr 4 in a row to remove 18:02:06 cool 18:02:11 to win you had to clear the board 18:02:27 he had a recursive function to find 4 adjacent blobs 18:02:35 they didnt need to be in a row.. 18:02:51 jsut any 4 of the same colour next to each otehr horizontally or vertically 18:02:57 maybe diagonally also 18:02:59 i cant remember 18:03:06 ok... 18:03:12 his recursive function was realy realy slow hehe 18:03:16 heh 18:03:24 so i sent him a copy of my regeon flood fill function 18:03:27 non recursive 18:03:31 depending on the size of the board and how its stored.. find appropriate method 18:03:41 math, recursion or data structure 18:03:47 recursion is never appropriate 18:03:49 eh 18:03:51 heh 18:03:54 even with tree traversal 18:03:59 its jsut fucked up 18:04:02 what is recursion 18:04:04 well 18:04:10 its a method of looping 18:04:17 actually - its 2 loops :) 18:04:31 the loop where you call self till a limit is reached 18:04:38 it is applying a set of instructions repeadely to data 18:04:39 followed by a loop of the same number of returns 18:04:46 you know the quicksort method? i've been meaning to implement it in assembly for fun and practice.. haven't gotten around to it, but the version that i know of is recursive.. 18:04:57 why flood your stack with loop branc vectors ? 18:05:02 why do it - its stupid 18:05:11 ah not iteration? 18:05:13 quick sort 18:05:16 anything but 18:05:25 go to www.purplecoder.com 18:05:32 click on the link to my code 18:05:36 and then to my sorting code 18:05:39 there's a quicksort interative version i think 18:05:42 read whta i wrote 18:05:48 its written by gnu 18:05:59 its the gnu itterative quicksort 18:06:08 and - its even worse than the recursive version 18:06:13 its sphagetti code 18:07:15 how old are you? 18:07:36 me ? 18:07:38 37 18:07:55 15 18:07:56 heh 18:08:03 then you should be nate15 :) 18:08:08 i440r: i only see heap, shuttle, shell, and count sort 18:08:17 i mention quick sort 18:08:25 I440r: 3 = march 7 = 7th.. cheezy but.. 18:08:31 at least it won't change with mood :) 18:08:41 the count sort is probably the fastest sort method ever invented 18:08:55 i couldnt thing of a faster method - 18:09:04 it doesnt compare any items in the list to sort with any other 18:09:08 brb 18:09:16 it's fastest for large files or small files? :) 18:09:25 but its an out of plae sort 18:09:27 for any 18:09:35 you need 2 buffers 18:09:38 one for unsorted data 18:09:43 one for sorted 18:12:33 hm 18:13:11 ii want to make my own kernel 18:14:07 me 2 18:14:18 a 100% forth based unix clone :) 18:14:27 now THAT would rock :) 18:15:37 I440r: lets start 18:15:37 heh :) 18:15:43 =) 18:16:20 hehe 18:17:46 : ipc-init lock-task ... unlock-task ; 18:17:50 back 18:17:51 hehe 18:17:53 making it posix compatible isn't necessarily a good idea.. 18:18:05 dang this is taking alot of time 18:18:11 why not just make a good os instead :P 18:18:17 i'm deleting the XFree source cvs 18:18:30 'xc' 18:19:04 as i recall, mach by itself isn't posix compliant 18:20:55 yet its still cool =) 18:21:14 win 2k is posix compliant 18:21:48 i want to make a mach ernel in forth 18:22:04 win2k is posix compliant? ugh 18:27:29 :) 18:27:48 ugh is MY word :P 18:28:09 no way! 18:28:13 :) 18:28:19 is to too!!!! 18:28:29 ugh and bleh (tm) 18:29:18 --- topic: set to ': 2pick 2>r dup 2r> rot ; - do drop >in - turn on, boot up, log int, drop out' by I440r 18:29:34 --- mode: I440r set mode: +o adu 18:29:36 --- mode: I440r set mode: +o futhin 18:35:24 hrm that definition for 2pick gives me an idea 18:35:38 have a word called grap and another called drop 18:35:49 2>r dup grap 2r> drop 18:35:59 grab even 18:36:33 could use di as a temp store for grab as long as we dont use any word taht might use it 18:36:48 maybe we could have grab-bx grab-cx grab-dx etc 18:36:58 and stay where to hold onto the item :) 18:39:31 * aaronl is back (gone 01:27:33) 18:41:14 back 19:23:35 --- join: edrx (edrx@copacabana-ttyS22.inx.com.br) joined #forth 19:34:07 --- join: cleverdra (jfondren@1Cust245.tnt6.florence.sc.da.uu.net) joined #forth 19:34:07 --- mode: ChanServ set mode: +o cleverdra 19:34:12 --- mode: cleverdra set mode: +o edrx 19:34:39 hey futhin. You still wondering if Forth is interpreted or compiled? Has somebody explained threading to you? 19:36:06 well my understanding of it is that the code in the words are compiled into the dictionary and when it encounters an immediate word within the code it executes that (interpret) 19:37:02 that's what i gleaned from what the other people said 19:37:10 Forths can be more complex than that, but yeah. Forth is both an interpreter and a compiler. 19:37:32 Do you know about the inner and outer interpreters? 19:39:07 um.. sorta? :) 19:39:17 <-- read starting forth a few days ago 19:39:28 but it didn't talk about inner and outer interpreters.. 19:39:31 OK. Here's a brief rundown: 19:39:33 i read underview for forth 19:39:45 and it said an text interpreter and an address interpreter 19:39:51 The outer interpreter is what deals with Forth source code. 19:40:01 yeah. text->outer, address->inner. 19:41:28 The outer interpreter reads from the input stream, or from blocks, and does some intelligence on what it sees there. The outer interpreter can do typical Forth, or Color Forth, or all kinds of wierdness. The result is that it compiles words into the dictionary and executes words from the dictionary (by looking up the text it sees in the dictionary...) 19:42:22 The inner interpreter is what actually deals with words, what executes compiled Forth code in the dictionary. The best way to describe the inner interpreter, I think, is to give an example of its operation: 19:44:27 Letsay I've defined three words... : under+ >r + r> ; : bump 1 under+ ; : 2count 0 0 begin 2dup . . bump over 10 = until 2drop ; 19:44:34 OK, that's kinda wierd code. I just made it up =) 19:45:39 But that's all in the dictionary. There's an NFA (name field address) somewhere that holds the counted string "2count", followed by some information and a list of addresses that correspond to the words in 2COUNT, and some extra stuff for the literal numbers. 19:46:04 (numbers are compiled as double cells in the dictionary, a DOLIT or like word followed by the number...) 19:46:56 If you type 2COUNT in now, the outer interpreter will find it in the dictionary, find the CFA (code field address) of it, and then the inner interpreter will step through the CFA executing Forth code. 19:48:11 It'll find DOLIT, push 0 on the stack, find DOLIT, push another 0 on the stack, execute 2DUP (begin doesn't compile to anything -- it's an immediate word), execute . and ., execute bump, over, put 10 on the stack, execute =, and then conditionally jump back to 2DUP, or execute 2drop and then NEXT. 19:48:45 You don't have to understand all this right now =) Just get the idea. 19:49:04 Those words, words like 2DUp and BUMP and OVER, are just numbers. Cell-sized numbers. 19:50:12 The inner-interpreter goes to the address in memory correspondant to these numbers and then proceeds to execute all the code there. Eventually it'll get to actual machine code, and run that =) Every word in Forth eventually gets down to this machine code, but it may go very deeply through other words and jump around and play with the stack and do all kinds of things. 19:51:17 The inner interpreter DOES NOT see "2dup" or "bump" or any of that. It only sees numbers. It only moves through memory running the machine code deep down in the dictionary. 19:51:48 This is called "threading", because the inner interpreter acts kinda like a needle going deep into words and moving around and coming out... see? 19:53:53 Letsay you've a word ``: a b ;'' and some code ``a''. The outer interpreter reads ``a'', parses the word A out of it, looks that up in the dictionary, and then the inner interpreter finds itself at 'B'. It doesn't see the string "B", it only sees a number there. So it puts the address it's at right now, the address in memory where 'B' is inside the word 'A', on the return stack, and then jumps to the address in memory that 'B' in t 19:54:07 That's kinda twisted to say. Do you get what I mean, futhin? 19:55:42 After it does who-knows-what from 'B', when it finally comes to its last NEXT, it'll get the number you've put on the return stack and jump to that part of memory. Now you're back inside the word 'A' in the dictionary, and the next word is NEXT, so it jumps to that part of memory... and so on. 19:56:35 the word ';' compiles NEXT into the dictionary before it changes the state of Forth back to interpreting. This NEXT is implicit, but it's there. 19:57:19 (well, sometimes it ain't, and the inner interpreter continues along. In some systems you get from this what are called "cascading definitions") 19:58:15 I'm done, futhin. 20:02:39 ooh 20:02:43 i was gone, talking to a friend :) 20:02:50 Oh :/ 20:03:30 * aaronl is away: I'm busy 20:05:34 Well, do you get what I'm saying, futhin? =) 20:05:38 doesn't it get to be kinda wasteful when you've got all these layers and you gotta go thru them all before you actually execute code? 20:06:03 i understand pretty much everything you said :) 20:06:13 i get it 20:06:16 Not really. You get tremendous flexibility and power from this, futhin. Some forths don't have those layers, and optimize it all into machine code. 20:06:38 hmm? some forths optimize it all onto one layer of machine code? :) 20:06:45 Yeah, you can de-layer it, so to speak, and just have your application words with machine code and a super-small dictionary. 20:06:50 that's cool 20:07:53 why "super-small dictionary" ? 20:07:54 It's not normally useful. Forth is, can be, extremely fast even doing all this "wasteful" jumping around. You can write small definitions, and should(!), and you can factor things intelligently, and all it costs is a jmp and putting something on the return stack. C, for instance, does all kinds of messy things that make function-calling strenuous and inefficient. 20:08:18 futhin - because you'll only have your application words, you won't need DUP and stuff because it'll be inlined. 20:08:23 jmps take lots of cycles though :( 20:08:32 Still faster than a call. 20:08:41 lots of cycles? 20:09:00 yeah, a jmp is like 50 cycles?? 20:09:03 cpu 20:09:06 With cascading definitions you can get more speed from this, but really the only way to get faster is to write pure assembly and be really good at it. 20:09:53 does C use calls? why'd you mention calls? :) 20:09:55 There *are* optimizing Forth compilers. Some of them are very good at it. You can get Forth hardware that makes things unbelievably(!) fast. Forth is normally quite fast and efficient besides. See? 20:10:48 i dont like optimizations at the processor level 20:10:51 they obfuscate the code 20:10:54 futhin - some Forths use calls. Nevermind. C does stack-frames and local variables and implicit stack mussing and all kinds of things that can be very wasteful. If you follow with common optimizing philosophy, you say that this is nothing and that machines are fast and that, anyway, only 10% of your code is the bottleneck. This is all just as true in Forth. 20:11:09 i dont like any compiler to do anything other than a 1:1 source <--> object 20:11:11 i440r - uh.. ever seen the machine code for the F21? 20:11:22 i440r: why? 20:11:26 i440r - oh, I see what you mean. 20:11:29 impossible to debug 20:11:36 ah 20:11:45 why would you debug it at the assembler level? :) 20:11:48 wanna debug c ? turn optimizations off 20:11:59 no guarantee that the code will work the same when you turn them back on tho -- 20:12:05 sounds like an arguement NOT to use it 20:12:11 optimize your algorighms 20:12:15 NOT your code 20:12:29 why would you debug it at the assembler level?? 20:12:42 The biggest benefit from threading is the incredible flexibility and power you gain, and how small your programs can become through good factoring. Other reasons... people more familiar with Forth-building could probably tell you more. 20:12:44 actually tho - i DO like to mess with optimizing my asm but not to extreemz 20:12:54 yes - sometimes debugging the asm is the only way to fix c code 20:13:03 sometimes the compiler does TREALY REALY stupid shit 20:13:28 futhin - C optimizers sometimes make incredible changes to your source. If you want to debug your program, it's usually a better idea to turn these optimizations off so you know what you're looking at. 20:13:48 and that's just C level stuff. I440r seems to know about deeper problems. 20:13:55 but when you turn them back ono again dont expect the code to work the same :) 20:14:25 experience tells me that if you let the compiler decide how your code is going to be then your code probably wont work very well 20:14:31 why would you debug forth code at the assembler level? (that's the whole point of not using an optimizing forth isn't it?!) 20:14:42 futh i wouldnt 20:14:46 i wouldnt need to 20:15:05 what's wrong with an optimizing forth then? 20:15:09 because i would knnow that the source i was looking at in the debugger would EXACTLY match the object code produced 20:15:18 uh 20:15:20 because it would destroy that 20:15:29 I440r: ah ur count sort is similar to something in "Programming Pearls" 20:15:32 why would you look at the source in the debugger? 20:15:40 if i had to use an optimizing forth compiler i would need to debug it as the assembler level 20:15:46 i would not trust it at the forth level 20:15:53 imho it would not BE forth 20:16:20 it would be forth the language, the forth the environment 20:16:24 a forth debugger shows the name field of each token as you single step 20:16:34 but NOT forth object 20:16:49 a forth compile is supposed to compile FORTH object code 20:16:54 if it doesnt - its not forth 20:17:05 hm 20:17:28 it might be good - but not forth 20:18:43 hmm.. but in cases where you want to compile an executable that you are going to put on the internet so people can download it (a game perhaps) why not use an optimizing forth - it's unlikely that bugs will appear suddenly when you compile the executable with an optimizing compiler.. 20:18:58 I'm just getting back to Enth here. It's a subroutine-threaded Forth, with a Color Code (Flux) system built on it, a metacompiler and SASM. I'm going to see how well I can apply my new assembly knowledge to this 486 machine =) 20:19:26 :) 20:19:42 futhin - you typically do not compile an executable... though admitedly you can. Metacompilers can be used to create tiny binaries of various format with just your application code if you want. 20:21:00 turnkey 20:21:08 or saveexe/savesystem 20:21:16 uh? no compiling the software into an executable?? 20:21:18 Yeah. 20:21:31 yeah to what i said? 20:22:06 futhin - no, read what I said. I said that typically you don't do this... at least I don't. You *can* do that though. It's hardly difficult -- see what i440r said. I was 'yeah'ing to him. 20:22:32 really 20:22:37 interesting 20:22:47 You can remove the compiler, the assembler, the dictionary headers, and all that from your resultant binary. 20:22:57 thers no such thing as a "forth program" 20:23:03 I think Pygmy is used pretty effectively to do that. 20:23:20 what ppl call forth programs are realy just forth - extended a little to do the particular job at hand 20:24:32 Any Forth with a metacompiler can do that. Actually Pygmy would be a harder medium unless you're producing dos COM files, because it comes with a simplistic clone compiler. 20:24:32 --- quit: cleverdra (Read error to cleverdra[1Cust245.tnt6.florence.sc.da.uu.net]: Connection reset by peer) 20:24:42 --- join: cleverdra (jfondren@1Cust245.tnt6.florence.sc.da.uu.net) joined #forth 20:25:05 why is it there's so many forth's implemented in c? i don't get it :( 20:25:06 Any Forth with a metacompiler can do that. Actually Pygmy would be a harder medium unless you're producing dos COM files, because it comes with a simplistic clone compiler. 20:25:09 With a metacompiler, futhin, you can compile a binary executable for a totally alien system. I could go into Pygmy today, write some assembly and set things up for my Pentium Linux computer, and then compile a Pygmy for Linux. 20:25:47 like forth is "the most portable" lang, yet it keeps getting implemented in C.. that's fucked up heh 20:25:58 futhin - there are lots of them implemented in assembly, and some that're only implemented in Forth and use assembly in their dictionary and a metacompiler to reproduce. 20:26:42 i sort of know what a metacompiler is, but in that context, a metacompiler is another forth?? or what 20:27:00 Ancient history, futhin :-/ People wanted to use Forth on their unix machines. They wanted to sneak Forth into their C-based jobs. They came from a C-flooded academic world and wanted to write what they thought were portable implementations of Forth. 20:27:08 so a metacompiler is different than a cross-compiler? 20:27:16 yes 20:27:18 um, let me get a link for you adu. 20:27:20 i know that much :P 20:27:25 no 20:27:27 well 20:27:29 yes and no 20:27:34 they both serv the same function 20:27:36 I440r: ? 20:27:43 adu - metacompilers can be clone-compilers, or cross-compilers, but they're both of these and more complex. 20:27:45 they are both target compilers 20:27:53 they just compile for different targets 20:28:23 normally when forth compiles it taggs the new stuff onto the end of itself 20:28:32 right 20:28:48 a TARGET compiler compiles a whole new image off in space somewhere - when finished it saves this out 20:28:49 with a metacompiler you can, inside Forth, produce another Forth and write it as a binary for your system, or another system, or an imaginary system :-/ You just set the format up and write the assembly for the target system. Sometimes you don't even do that. 20:28:58 with a meta compiler the target is a new copy of itself 20:29:18 wieht a cross compiler the target is an image of the binary you want executed on the target :) 20:29:22 same difference heh 20:29:22 one thing i always feared about a huge forth system was if i wanted to remove something that i installed before the most recent installation 20:29:50 Yeah, a metacompiler is like... your Forth is creating a copy of in memory. It's reproducing. Sometimes it's just splitting, sometimes it's producing something different, sometimes it's producing something *totally* different but with part of its dictionary, see? 20:30:11 ok 20:30:21 but not neccesarily a different arch? 20:30:28 No. 20:30:36 Not necessarily a different OS. 20:30:41 like can you metacompile x86 to ppc? 20:31:17 yes 20:31:22 well 20:31:26 not x86 assembler 20:31:55 You can from an x86-based Forth metacompile a Forth for PPC, yes. 20:32:00 you could take forth source and have the same compiler compile it for x86, 8051, 68k or anthing 20:32:14 huh cool 20:32:16 same compilers - just different meta compilers 20:32:23 as long as it was pure forth 20:32:24 I say 'Forth', but it's more flexible than that... it's really incredibly powerful. 20:32:34 if it had any asm it would be more difficult 20:32:37 metacompilers are? 20:32:43 metacompilers are. 20:32:50 o ok 20:32:50 forth is 20:33:05 meta compilation is just a small part of what makes forth so powerful :) 20:33:11 no i'm talking about x86 bytecode ->ppc or visa versa 20:33:55 you can't metacompile other languages? 20:34:18 probably machine code, adu. You're writing machine code for PPC and building your Forth around that, with your higher-level Forth words based on the new target-arch's machine-coded words. 20:34:33 s/probably // 20:34:40 metacompile other languages? 20:34:57 ok. lets do the unthinkabke and code isforth in 100% PURE assembler 20:35:05 we end up with a compiler that will not port 20:35:16 you could write an equiv compiler on ppc tho 20:35:28 so now we have two compilers 20:35:37 identical except running on different machines 20:35:48 so you write your super duper forth program 20:35:52 no asm in your code 20:36:02 If isforth is 100% pure assembler, your metacompiler would have to implement all the words in isforth (or those that you want) in the target arch :/ Your high-level Forth code is fine. 20:36:05 it will compile and execute identically on BOTH machines without modification 20:36:17 yes, what i440r said. 20:36:29 isforth wont be 100% pure assembler 20:36:35 that sounds like a simple cross-compiler 20:36:37 adu - in other languages metacompilation at the level of Forth is nontrivial. 20:36:47 but i believe that ALOT of the inner core of a forth kernel should be pure assembler 20:36:58 so - isforth kernel WONT be portable 20:37:11 once the x86 kernel is working i want a ppc version 20:37:15 i want an alpha version 20:37:20 etc etc etc 20:37:25 I440r: we should provide C routines for other archs still tho 20:37:32 the individual complers do not need to be portable 20:37:40 adu - ... C routines ... ? 20:37:45 each will utilise the specific processors they were written for 20:37:54 USERS source code will port 20:37:58 thats important 20:38:03 Yes, that's cool. 20:38:08 then should it be ANS forth? 20:38:11 no 20:38:23 but it should follow a standard 20:38:30 our own? 20:38:37 it doesn't have to be, adu. Where do you get that? i440r is saying that user isforth code will be portable between implementations of isforth, each of which will be optimized for their arch. 20:38:42 each should contain the same words and they should execute identically on each 20:39:02 thats the idea anyway 20:39:03 polyForth does this. As does LMI, as do most other multi-arch forths. 20:39:12 so we need an execution standard 20:39:14 polyForth code is internally portable, you might say. 20:39:30 pForth is too 20:39:34 adu - an execution standard? Does that mean that the Forths act the same? Yes, that's what i440r is saying re isforth. 20:39:48 yes - poly is not one forth - like coke isnt one coke hehe (quote from pepsi guy -- coke are it) hehe 20:39:58 do you want to code than std'ize? or std'ize then code? 20:40:19 i want the behaviour of the compiler standardised 20:40:35 isforth uses ebx to cache top of stack 20:40:48 ppc version need not cache top of stack if thers a better way 20:41:02 but + - / . over etc etc etc HAVE to function identically 20:41:10 what do pop&push do in x86? 20:41:24 push eax ; pushes register onto stack 20:41:33 pop eax ; pops item off stack into eax 20:41:43 so you can specify a reg, ok 20:41:53 ya that sounds like a good idea on ppc 20:41:57 or a memory location 20:42:03 push [12345678] 20:42:07 only theres no stack, concept, just mem, still doable tho 20:42:14 push the contents of the memory at address 12345678 20:42:32 huh ya x86 is much more flexible than ppc 20:42:36 push mem is in my opinion a true memory to memory move on x86 :) 20:42:41 ppc has so few things that do so much 20:42:41 tho ppl dont think of it in that way 20:42:53 there are usually at least 3 args to each inst 20:43:29 some with none 20:43:31 some with 1 20:43:35 most with 2 20:43:39 some new ones with 3 20:43:58 the most on ppc is 5 20:44:46 is PPC as CISC arch? 20:44:53 cmp crN, state, cmpOp, val1, val2 20:45:03 cleverdra: no RISC 20:45:15 ah. I guess that makes more sense actually, with the 5 arguments. 20:45:21 it has aprox 100, where x86 has like 350 not including mmx 20:45:49 and thers a comparison register, in 8 sections 20:46:15 then you can specify which condition register when you do conditional jump 20:47:43 who besides apple uses the ppc ? 20:47:52 amiga, and ibm 20:47:59 amiga doesnt exist 20:48:06 RS/6000 is a very popular high-end ppc arch 20:52:52 bye. 20:52:54 --- quit: cleverdra (Leaving) 20:54:28 --- quit: edrx ([x]chat) 21:31:26 hmm 21:31:54 am i correct in saying that when an interupt occurs on x86 that it has to save via pushing and poping each time? 21:32:01 yes 21:32:11 i 21:32:13 someone else... 21:32:18 i'm pretty sure that's correct :) 21:32:24 (wanted to get more oppionions ;)) 21:32:38 heh 21:33:50 The "pushing" and "poping" include lots of details, but you have the basic idea right. 21:34:12 do you have to do the push and pop yourself? 21:34:22 Trey: but that takes a good number of cycles.. right? 21:34:31 Trey: why not have two register sets like z80? 21:34:43 so it only has to exx to change which set it uses 21:34:50 Nested interrupts. 21:34:58 ahhhhh 21:34:59 :/ 21:35:21 i thought there was an instruction that automatically pushes everything and pops when it comes back.. like call or something 21:35:26 and interrupt 21:35:35 call pushes EIP 21:35:37 and stuff 21:35:41 not sure what else 21:35:51 call pushes EIP only. 21:36:02 thought so..... 21:36:03 PUSHA pushes all of the regs. 21:36:12 but since i only know z80 asm well.. 21:36:13 hmm 21:36:16 Trey: how many cycles? 21:36:24 if you happen to know heh 21:36:25 For which instruction? 21:36:29 PUSHA 21:36:51 the INT command pushes flags onto the stack 21:37:02 (I don't know for current hardware. I have a x386 book handy with cycle counts.) 21:37:20 you can't do nested interupts in z80??? 21:37:24 i just need "the book of cycles" 21:37:25 heh 21:37:41 don't need details.. just cycles and maybe what instructions generally do 21:38:03 futhin: not to my knowledge.. 21:38:37 nate: why not use INT? 21:38:52 altho that's software interupts and i don't know about hardware interupts 21:38:56 has 3 modes of interupts: 0 = device pushes what code to jump to onto bus 1 = go to a specific location (forget the location.. $33 or something)... 2 = interupt vector 21:38:58 no INT 21:39:14 no software interupts 21:40:01 well i guess you could manually jump/call to the interupt vector if you wanted to emulate software interupts 21:40:43 brb 21:40:46 --- quit: Trey (Read error to Trey[ns.TreySoft.com]: EOF from client) 21:40:55 that means manually pushing and poping 21:41:21 or exx 21:41:24 how do you survive not nesting interrupts? :) 21:41:35 umm? 21:41:44 not many interupts on a ti-85? i dunno :P 21:41:54 heh 21:42:31 --- join: Trey (bowser@ns.TreySoft.com) joined #forth 21:43:23 wb 21:48:54 --- quit: futhin (bbl) 22:03:32 --- quit: Trey (Bowser[1.1-release]: server window terminating...) 22:13:12 --- join: futhin (thin@h24-67-113-99.cg.shawcable.net) joined #forth 22:13:54 does forth keep the Top two elements of stack in registers? or only TOS in a register? 22:14:40 depends on implementation 22:14:53 mine doesn't keep any 22:15:56 hm 22:19:53 don't you think you should at least have TOS in register? 22:22:32 --- join: Mike_L (mike@66-2-65-17-chi-03.cvx.algx.net) joined #forth 22:22:41 * Mike_L looks around 22:23:41 hi 22:24:15 futhin: mike's making a bytecode that will make things really cool 22:24:19 any ideas 22:24:51 why would it make things really cool? 22:24:57 what's the purpose? 22:25:03 ya stack machine 22:25:06 what kind of ideas are you looking for? :) 22:25:31 I want the VM to be able to work with data in registers and in memory 22:25:47 and also immediate data for the instructions 22:25:52 --- mode: I440r set mode: +o futhin 22:25:54 --- mode: I440r set mode: +o Mike_L 22:26:01 i am really going for a KISS method 22:26:12 keeep it SINPLE stupid :) 22:26:15 i440r: why not add me to the chanserv :P 22:26:18 thats the #1 forth moto :P 22:26:29 when u learn forth :P 22:26:30 hehe 22:26:37 so I'm thinking whether I should just make one instruction that takes immediate data and loads it in a stack slot 22:26:41 or when i get tired of opping you :) 22:26:52 (lit) 22:26:53 two instructions that load/save data from stack to memory 22:26:54 i don't understand bytecode? where's the bytecode in forth? 22:26:56 thats what (lit) does 22:27:16 and then have all arithmetic instructions work only on the stack slots... 22:27:26 futhin: I'm not doing this specifically for forth 22:27:42 futhin: I'm trying to write an all purpose VM that will be an acceptible target for many programming languages 22:27:58 what lang are you writing the VM in? 22:28:12 please don't tell me something super lame like C :P 22:28:23 heh 22:28:28 I'm working with C right now because that is what I am most familiar with 22:28:37 I am learning Scheme 22:28:49 and I really didn't feel like writing a VM in python or perl =) 22:28:52 why not implement it in forth? 22:28:56 * aaronl is back (gone 02:25:27) 22:29:20 i don't have much experience with forth 22:29:22 what does bytecode mean? 22:29:27 *sigh* 22:29:35 i sort of know what bytecode is 22:29:39 bytecode is the `machine code' of the Virtual Machine 22:29:40 but not fully 22:29:50 ok 22:30:11 okay 22:30:17 it is the sequence of instructions that the VM executes 22:30:31 so you are implementing a bytecode for a VM, and it's going to be a nice "architecture" 22:30:45 you want to implement a stack for this virtual architecture? 22:30:53 hmm 22:31:07 i have compiler 50% ready... it just needs this bytecode spec ironed out so it can start emitting the bytecode 22:31:50 yes there is a stack, immutable code segments (called definitions or defns), and a linear memory area 22:32:30 you are making an all purpose VM so that everybody can code for it and it is "portable".. but what's the point? how is it going to better than other ways? 22:32:55 better than what? 22:33:28 currently i see only Java and it is undesirable because of a number of characteristics 22:33:34 like? 22:33:45 forth 22:33:49 and postscript 22:33:58 im told both java and ps are forth based 22:34:08 tho i dont believe it with java 22:34:10 java isn't really forth based 22:34:11 like the implementations are huge, the class libraries are bloated, it is non-free 22:34:25 fat slow and evil 22:34:26 hehe 22:34:36 java has some "stack" stuff "borrowed" from forth.. but it's bs mostly i think 22:34:37 i don't know a whole lot about the java vm, and I don't particularly want to 22:34:51 I would research it though to make my own VM better 22:35:13 i440r: can forth be considered a vm ? 22:35:27 futhin: forth is a language I think 22:35:28 like.. can i tell mike to go with a forth vm ? :) 22:35:43 no no no =) 22:35:52 i've read about forth and tried it a bit 22:36:11 i can see people compiling C, Scheme, LISP, Forth, and python code to run on Sebae 22:36:14 mike: its more than that.. it's like interactive, interpretive, compiled, extensible, and very portable (more portable than c) 22:36:26 but I can't see them compiling to Forth code to run in a Forth-only VM 22:36:34 c isnt portable 22:36:47 thats why all this "portable code" is full of 22:36:51 #ifdefined x86 22:36:56 futhin: i'm not making this VM for development. I'm making it for real-life everyday use 22:36:57 and #ifdefined powerpc 22:37:25 I440r: yeah that sucks =( 22:37:25 mike: you can extend forth and EASILY create your own syntax, structures, etc. 22:37:40 futhin: I have a lot of really good ideas that I think will work out very well 22:37:52 futhin: but I don't want to limit myself to forth 22:38:01 mike: they don't have to code in "Forth" the forth vm can be extended so that the code looks a lot different. 22:38:38 mike: what's the difference between asm>c>vm bytecode>other languages with asm>forth>otherlanguages ?? 22:38:45 anyway if i decide to use the name `forth' then i'm going to run into trademark issues and people who have ever heard of forth will make all sorts of wrong assumptions about my VM 22:39:04 forth isn't trademarked AFAIK 22:39:19 and you don't have to mention it loudly :P 22:39:22 ok 22:39:42 I want to do this VM in a non-language specific way 22:39:42 you can extend the forth "syntax" to look like your bytecode language 22:39:51 i imagine 22:40:15 anyway using forth would severely limit performance 22:40:17 i440r: say something, i'm not a forth expert, please make sure i'm not bullshitting :) 22:40:42 I need to work out this bytecode format 22:40:58 not really.. forth is faster than c afaik 22:41:05 erm ive no idea what byte code is 22:41:14 this whole VM is designed with the different implementations in mind: interpreted, JIT compiled to native code, and hardware implementation 22:41:15 it sounds like another method of semi compiling 22:41:24 he defined it awhile ago .. bytecode is the "machine code" for the virtual machine 22:41:34 so is forth 22:41:46 in fact forth has been used as the micro code for many processors 22:41:55 including the pci chipset 22:41:55 bytecode : Virtual Machine :: machine code : real cpu and machine 22:42:10 sounds like forth 22:42:27 you mean it is used as the programming language to write BIOS code for motherboards 22:42:29 --- join: Fare (fare@ppp49-net1-idf2-bas1.isdnet.net) joined #forth 22:42:34 fare!!! 22:42:38 --- mode: I440r set mode: +o Fare 22:42:43 have u seen tcn at all dood ? 22:43:06 not recently 22:43:16 grrrr he is awol :P 22:43:25 mike: from what i know about forth, it should be a lot easier to implement this VM in forth than c. forth has a number of advantages that i think will make it fairly easy to implement the VM in it. 22:43:26 and i need his latest 22:43:54 futhin: that's great, but that's not the issue at hand 22:44:19 what's the issue? 22:44:50 the issue is that my fscking mouse wont work in x and console on my laptop - fscking synaptics touchpad - grrr 22:45:07 the issue at hand is the bytecode spec itself... do I simplify it by making the arithmetic operations work only with data on the stack, or do I make 50 versions of each opcode to accomodate acting on data which is on the stack, immediate data, pointer on stack, immediate pointer 22:45:51 also there is the question of the product of the operations 22:45:53 the fortmer 22:46:00 go with the former.. 22:46:18 you don't have to do static typing.. 22:46:18 uh 22:46:31 that means that to modify data in memory it requires 3 instructions 22:46:45 load from memory into stack, do operation, store result to memory 22:46:56 there's some forths that implemented static typing, but i'm not sure how they do it.. but there might be some ideas from how they implement it that'll help you keep your bytecode simple... 22:47:17 does anybody in this chan know about static typing w/ forth?? 22:47:18 lol is forth all you ever talk about? =) 22:47:27 mike: heheh, sorry :P 22:47:38 mike: if you gonna talk about stack, i gonna talk about forth ;) 22:48:05 this stack is not going to work like forth's at all 22:49:13 that's another thing I'm debating... how to address the stack 22:49:23 mike: imagine forth as a stack-based language at the most basic level, with nothing added on.. no syntax, no structures, no static typing, etc. so if you talk about stack it's practically the same as talking about forth :) 22:49:27 C programs will define a `frame' for each code block 22:49:48 futhin: there are many kinds of stacks 22:49:57 how so? i don't think so 22:50:23 um yes 22:50:37 a stack is a stack 22:50:39 the only stack I know of is a LIFO stack.. last in, first out 22:50:46 forth uses the stack as a constantly flowing thing... each instruction adds or removes from the stack 22:50:47 spme processors have multiple stack pointers 22:50:56 sp and bp are both stack pointers in x86 22:51:05 forth usuallyt has 2 stacks 22:51:08 some languages use the stack in chunks... a chunk for each code block 22:51:10 parameter stack and return stack 22:51:14 my 8051 forth has 3 22:51:44 i want to implement one stack 22:51:47 C usn't a stack-based language, rather, it uses a stack in memory as a frame of reference for compiling.. not all c compilers do that tho.. they can, and some do 22:51:53 and it won't be a pure stack either... each stack element will behave like a register 22:52:35 instructions will be able to take data from any element on the stack and store the result in any element 22:53:53 uh.. it doesn't even sound like a stack 22:53:57 it sounds like an array 22:54:07 this style of stack could facilitate forth code 22:54:15 it is an array and stack combined 22:54:22 and registers 22:54:58 every code segment will have a specified stack effect, that is the number of stack elements it consumes and the number it produces 22:55:10 uh.. if you treat the stack like an array, you are gonna probably end up with all sorts of nasty code to work with the array 22:55:15 this will allow for efficient translation of the code to the host cpu's native format 22:55:51 that "specific stack effect" really sounds like forth code ;) 22:56:13 it won't be like an array in that the bytecode will not be able to work with computed indexes into the stack 22:56:34 all bytecode will have immediate data representing the stack element to work with... relative to the top of the stack 22:56:36 oooo still talking? good job! 22:56:52 heh :) 22:57:00 adu: futhin won't shut up about forth 22:57:09 heheh 22:57:18 adu: is he a bot? =) 22:57:18 =) that was my plan 22:57:19 i discovered forth very recently :P 22:57:25 but 22:57:28 stack == forth 22:57:36 futhin: ah that's why 22:57:38 :) 22:57:40 futhin: no 22:57:41 most people in this channel are estatic about the language, thats why there are so few 22:58:03 I discovered python a few months ago and thought it was the best thing since sliced bread... till I found its flaws and shortcomings 22:58:12 adu: naw.. that can't be true! :P 22:58:27 adu: futhin also has this really bad concept of what a stack is 22:58:37 no i mean thats why there aren't that many ppl in the channel 22:58:44 lol 22:58:47 inflexible concept I should say 22:59:05 heheh 22:59:07 well in forth there are actually 3 stacks 22:59:10 (to adu) 22:59:14 um 22:59:15 one user stack 22:59:21 one return stack 22:59:27 and one floating-point stack 22:59:34 um 22:59:34 hmm 22:59:39 sounds complex 22:59:50 the use stack is the most used 22:59:52 that floating-point stack is only implemented on a few forths 23:00:11 futhin: really? does it use the main stack on others? 23:00:12 98% of forth implementations only have 2 stacks 23:00:22 can't the user stack handle floating point numbers? 23:00:41 Mike_L: probly if it dosen't have a stack specifically for fp 23:01:21 the main stack also accepts structures and complex data types 23:01:53 hmm 23:02:05 ya i dunno about that 23:02:17 i think for this VM I want to just use 32bit stack elements 23:02:21 a good place to start is forth.org 23:02:31 you don't do floating point in most forths.. you convert the floating point to integers (when inputting) and work with that, then convert back to floating point (when you display it..) 23:02:33 its the FIG ws i think 23:02:45 i'm not going to learn another programming language right now 23:03:07 futhin: sounds pretty limited 23:03:15 mike: no 23:03:19 it's not 23:03:35 you don't need to do the arithmetic in floating point because that'll only consume cycles 23:03:38 but 23:04:17 futhin: I can't imagine any time one would use floating point data types if one didn't need the precision that integers lack 23:04:37 the newer implementations are including floating point stuff.. so it doesn't really matter.. you can implement floating point stuff with 2 stacks anyways, but a floating-point stack probably helps simplify some of the implementations that do want floating point 23:05:30 multiple stacks will always simplify the code written for them... and complexify the code used to implement them 23:06:09 Mike_L: not necesarily 23:06:26 it can be visaversa 23:06:32 i want to keep this VM simple... even if that means added complexity for the compilers 23:06:52 if you wanted to implement a single stack ontop of a multiple stack arch, its very hard 23:06:55 i've tried 23:07:07 i wrote a small pythonVM interpreter in forth once 23:07:19 mike: you work with the integers.. suppose you give a number like 1.2345 it'll just become 12345 on the stack and you work with that.. and keep track where the decimal place should be at yourself. or you could put two numbers on the stack. 12345 and -4 and avoid keeping track of the decimal place yourself 23:08:16 futhin: that can be hard with some arithmetic ops 23:08:28 how so? 23:08:49 multiply 12345 by 100 23:08:55 like 1.2345 + 198760000.3 23:09:17 your product is 1,234,500 if you keep your -4 then you have 123.4500 23:09:24 hmm which is right 23:09:41 ya you have to put your nums on the same base too before you add/subtract 23:09:57 but fp have a wider range, with less acuracy 23:10:04 um? you could modify the -4 itself to times it by 100 23:10:23 its all algebra 23:11:45 floating point math ultimately ends up using integers.. the older "traditional" forths didn't have floating-point support so basically you just kept track of it yourself, which was fine because the forth coders for the traditional forths were usually concerned about speed 23:12:07 uh not really 23:12:33 nowadays, forth isn't considered speedy anymore 23:12:37 but the fpu on intels are faster than int units 23:12:40 if it ever was 23:12:47 modern cpus have FPUs 23:12:53 adu: that's partially true 23:12:57 Fare: why is that 23:13:26 fare: uh... afaik forth is faster than c 23:13:37 heh 23:13:45 no 23:14:10 that is your new-language-syndrome talking 23:14:40 Mike_L: in some ways it is 23:14:44 C is a lower level language than forth 23:14:48 cough cough 23:14:53 forth is lowerlevel 23:15:08 mike erm c is NOT even slightly low level 23:15:11 oh I'm certain that there are some things that forth does much more efficiently than C 23:15:18 since forthers usually reinvent the whell often, there is much less abstraction, and as a result, fewer layers that slow things down 23:15:27 forht is not just a step above asm and higher level than ada all in one 23:15:38 Mike_L: yea - everything P 23:15:47 heh 23:15:54 ok I don't want to argue about languages 23:16:11 we could explain it "thoroughly" :P 23:16:18 I440r: you beleive that? 23:16:20 i'm not overly concerned with performance of the apps in this VM 23:16:52 Mike_L: forth isn't very high level, its very ll, but portable 23:17:01 Mike_L: do you know about the forth dictionary? 23:17:05 it's portable because it's ll 23:17:16 and very small/easy to implement 23:17:55 *sigh* 23:17:58 adu wrong 23:18:01 --- part: Mike_L left #forth 23:18:05 forth is both very high and very low 23:18:21 Mike_L: the 'dictionary' is the place where all the 'words' are placed, and it itself is kinda like a stack, when a word is defined, it gets added to the top of the dictionary, and each dictionary entry is usually a name, then a pointer to code, thats it 23:18:27 f/li 23:19:08 this is funny 23:19:45 and if you define a word thats already defined it just places it ontop like any other word, but words defined before it, still use the previous definition, bcuz it searches backwords in the dictionary 23:19:58 i just ended up talking about forth the whole time to mike_l :P 23:25:10 --- join: dired (aaronl@vitelus.com) joined #forth 23:31:29 fare 23:31:56 how much do you know about forth? 23:32:30 I FORTH ABOUT BIT A KNOW 23:32:35 heheheh 23:32:40 what does f/li mean? 23:32:51 means that I can't type properly 23:33:01 huh 23:33:16 what was it supposed to mean? or is it some acronym? 23:33:25 lol 23:33:34 15432 23:33:40 Float division with low imprecision 23:33:58 or just /li (go to channel #lisp) with a "f" being prepended 23:34:55 wtf? 23:34:55 um, why did you type it? or was it a mis-chan? 23:35:06 fnord 23:35:19 futhin: you asked 23:35:30 huh? :) 23:35:46 oh 23:47:11 --- quit: aaronl (The name's X. Bitch X.) 23:47:29 --- join: aaronl (aaronl@vitelus.com) joined #forth 23:55:20 --- quit: Fare (Connection reset by pear) 23:58:31 hmm 23:58:38 hmm 23:59:18 zup? 23:59:59 --- log: ended forth/01.06.25