00:00:00 --- log: started forth/04.08.25 00:00:49 --- quit: mur (Read error: 110 (Connection timed out)) 00:06:22 --- join: qFox (~C00K13S@82-169-140-229-mx.xdsl.tiscali.nl) joined #forth 00:40:02 --- join: AshyIsMe (~ashy@137.219.145.158) joined #forth 00:49:05 --- quit: OrngeTide ("sleeping") 01:46:01 I440r, how do i get out of isforth? 01:46:06 or do something in it? 01:46:28 i just did 'make' and './extend' and am now running 'isforth' 01:49:17 AshyIsMe: bye 01:49:19 AshyIsMe: :) 01:49:29 AshyIsMe: just type in bye 01:50:14 ok 01:50:23 * Tomasu is away: dlrrp 01:50:30 what exactly can you do in isforth? 01:50:34 --- nick: Tomasu -> TomasuDlrrp 01:50:48 can you type a program and have it executed line by line? 01:56:05 AshyIsMe: Don't know if it can currently, but I'm sure its trivially implemented. 01:56:17 AshyIsMe: would love to help you more, but I gotta sleep XD 01:56:19 good night 01:58:01 cya 02:21:07 --- quit: AshyIsMe () 02:22:42 --- quit: htp123 ("*") 02:51:59 --- quit: mur_ (Remote closed the connection) 02:52:37 --- join: mur (~mur@uiah.fi) joined #forth 03:49:09 --- nick: TomasuDlrrp -> Tomasu 03:50:51 --- join: mur_ (~mur@uiah.fi) joined #forth 04:02:10 --- quit: mur (Read error: 110 (Connection timed out)) 04:22:44 --- join: mur (~mur@mgw2.uiah.fi) joined #forth 04:33:12 --- join: Topaz (jonny@spc1-horn1-6-0-cust217.cosh.broadband.ntl.com) joined #forth 04:33:57 --- quit: mur_ (Read error: 110 (Connection timed out)) 04:52:07 --- join: crc (crc@98-pool1.ras11.nynyc-t.alerondial.net) joined #forth 05:25:01 --- join: mur_ (~mur@kyberias.uiah.fi) joined #forth 05:31:48 death to lilo. 05:33:20 Why? 05:35:47 Oh, a global message... 05:35:51 * crc goes back to coding 05:37:15 --- quit: mur (Read error: 110 (Connection timed out)) 05:54:50 --- quit: arke (Read error: 110 (Connection timed out)) 06:02:52 --- quit: crc (Client Quit) 06:08:34 --- join: arke (~chris@wbar8.lax1-4-11-100-111.dsl-verizon.net) joined #forth 06:53:22 --- quit: mur_ (Remote closed the connection) 06:53:56 --- join: mur (~mur@smtp.uiah.fi) joined #forth 07:10:25 --- quit: SDO (Read error: 110 (Connection timed out)) 07:23:29 i didnt see no stinkin global :) 07:25:20 [14:31:27] -lilo- [Global Notice] Hi all. I just wanted to 07:30:03 --- quit: madwork ("whee!") 07:35:13 --- 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.") 07:40:10 lol 07:40:34 brb - rebootin work machine after moving mouse so i can let the change take 07:40:36 --- quit: I440r_ ("Leaving") 08:07:42 --- join: madwork (~madgarden@derby.metrics.com) joined #forth 08:22:14 --- join: warpzero (~warpzero@mi204.dn180.umontana.edu) joined #forth 09:08:18 --- join: jDoctor (~rex@pcp08550359pcs.manass01.va.comcast.net) joined #forth 09:12:44 --- join: I440r_ (~mark4@216-110-82-203.gen.twtelecom.net) joined #forth 09:16:33 --- join: Herkamire (~jason@h000094d30ba2.ne.client2.attbi.com) joined #forth 09:16:33 --- mode: ChanServ set +o Herkamire 09:25:04 hi Herkamire 09:26:47 hi all 09:26:53 hi jDoctor 09:27:54 hi arke 09:29:04 anyone knew about my language I was developing? I braught in a bot once. 09:29:16 not long ago.. 09:29:58 jDoctor: I have vague memories 09:30:06 jDoctor: you'll have to remind me though. 09:30:11 was it the one with all the perens? 09:30:16 lol anyway, I had the syntax like 09:30:19 +(2,2). 09:30:23 really ugly syntax 09:30:34 yah you had the right one 09:30:44 I changed it to something pretty 09:30:54 + 2 2] 09:31:18 after the function name, the open bracket is implicit, and we use square brackets instead of parens 09:31:45 +(*(2,3),6) converts to + * 2 3] 6] 09:32:09 that sounds like an improvement 09:32:17 so do you allow adding of more than two things? 09:32:22 like + 2 3 4 5] 09:32:33 yah. that worked already. it was an idea from lisp 09:32:40 same for *(2,2,2) 09:32:46 right 09:32:52 etc. I'm working on my state machine to do this new syntax fix 09:33:05 forth version: 2 3 * 6 + 09:33:21 that is just like factor, dude. 09:33:30 Herkamire: never though writing an assembler/disassembler would be such a pain ^_^ 09:33:34 or. factor is just like that 09:33:56 arke: depends on the arch. my ppc assembler was quite easy to write. 09:34:08 well, this is x86 ... :/ 09:34:17 arke: that's the problem 09:34:20 yeah 09:34:23 I guess my lang is as close to forth as possible, with the stack being hidden. 09:34:34 prefix, using many spaces 09:35:00 while forth is postfix, using spaces already to seperate works 09:35:04 words*. 09:35:46 I'm genna make a function called '[' that just returns the list of function calls given to it as params 09:35:48 and forth uses (generally) fixed (or at least implicit) numbers of arguments, so you don't need the brackets 09:36:46 if you limit + and friends to two arguments, you could dispense with the brackets entirely 09:36:56 so it would read + * 2 3 6 09:37:18 hmm 09:37:23 or + 6 * 23 09:37:27 or + 6 * 2 3 09:37:40 it does mean that you have to tell a function exactly how many arguments it should take 09:37:41 just reverse forth really :) 09:37:48 yah it is 09:37:54 3 2 * 6 + 09:38:08 I generally prefer nown,verb 09:38:10 ordering 09:38:22 <- verb, noun 09:38:31 I picture it as the action being taken on those params 09:38:39 sure 09:38:57 + 2 3: "add 2 and 3" but you can read 2 3 + as "take 2 and 3 and add them" 09:38:59 I like verb,noun for rpgs :) 09:39:06 text-adventure/mud I mean 09:39:16 jDoctor: exactly 09:40:03 I am aiming for variable args though 09:40:13 jDoctor: my experience verb,noun gets harry when your expressions get longer. it's not "add 2 and 3" but "add the result of this stuff and whatever comes after" 09:40:29 the thing is: the implicit open bracket makes nested stuff kinda odd to read 09:40:55 yah I do say that in my head, Herkamire . "add the results of multiplying 2 and 3 to 6" 09:41:05 + * 2 3] 6 09:41:30 I like lisp's idea of making the parse tree explicit (or at least I think it's interesting), but I prefer forth's method of eliminating the tree entirely 09:41:44 in my experience trees to not display or edit well 09:44:45 I could make the function take a set number of args if I used arrays 09:44:53 + 09:45:48 x=[ 2 2 3 4 ] + x ] 09:46:14 hmmm... I guess I don't have long arithmetic constructs much, but I'm concerned how they would come out in your syntax. here's an example from my forth: 09:46:18 wnf-table color @ 5 - 4 * + 09:46:47 it's mapping colors from 5-7 to word-addresses to data in the wnf-table 09:47:09 now I'm going to try to translate into your syntax 09:47:27 * jDoctor didnt get much of the wnf color stuff, but go ahead and translate 09:48:10 + wnf-table * 4 - @ color] 5]] 09:48:53 wnf-table is a branch table. the code is computing the address of the appropriate entry 09:49:09 --- quit: I440r (Nick collision from services.) 09:49:12 --- nick: I440r_ -> I440r 09:49:21 --- mode: ChanServ set +o I440r 09:49:23 --- join: I440r_ (~mark4@216-110-82-59.gen.twtelecom.net) joined #forth 09:49:41 hi I440r 09:49:42 hmmm... mine would read more clearly as: color @ 5 - 4 * wnf-table + 09:49:43 hi I440r_ 09:49:52 :) 09:49:53 fixing... 09:50:11 i needed to id to get into #freebsd :/ 09:50:15 I440r: trying to write an x86 disassembler. Jeezus friggin christ. 09:50:26 arke hehe 09:50:34 disassembler would be easier than assembler 09:50:44 o.O 09:50:47 shit 09:50:49 i couldnt write my 8051 assembler till i did the disassembler 09:50:57 arke: not only is it a PITA, but some things are downright impossible. eg you cannot just back up and see what the previous instruction was 09:51:06 the reason I'm writing the disassembler is to help me debug the assembler I'm writing after. 09:51:14 hehe 09:51:19 so, uum 09:51:22 this won't be fun. 09:51:40 * arke appends vocabulary disasm also disasm to the top 09:51:52 man, I missed a bracket 09:52:00 + wnf-table * 4 - @ color] 5]]] 09:52:08 color @ 5 - 4 * wnf-table + 09:52:25 hm I think I will take set number of args 09:52:46 with set args, you can take out the brackets 09:52:50 I440r: doing a table for instructions that take a destination register in their opcode byte 09:52:51 + wnf-table * 4 - @ color 5 09:53:02 I440r: modr/m bytes etc. will be a pain to assemble :/ 09:53:17 :) 09:56:34 and you LAUGH!!! :P 09:56:57 x86 is a pain 09:57:02 indeedn 09:57:28 writing x86 code is easy. writing an x86 assembler/disassembler is a pain 09:57:29 what ASCII char is tab? 09:57:33 09 09:57:33 yes 09:57:38 thanks 09:58:24 : key. key dup . h. ; 10:11:41 --- quit: aphasia (Nick collision from services.) 10:11:42 --- join: aphasia_ (d@ip-65-75-40-47.ct.gemini.ntplx.com) joined #forth 10:24:49 --- join: wossname (wossname@HSE-Hamilton-ppp190662.sympatico.ca) joined #forth 10:30:22 tis teh wossta hi 10:31:14 hi arke ~ 10:37:00 ~~~~~~~~~~~~~ 10:40:27 --- quit: aphasia_ ("[BX] Become a BitchX Certified Systems Engineer today! Apply within!") 10:51:25 --- quit: warpzero (Read error: 110 (Connection timed out)) 11:19:38 --- join: slava (~slava@CPE00096ba44261-CM000e5cdfda14.cpe.net.cable.rogers.com) joined #forth 11:21:14 --- join: Sonarman (~matt@adsl-64-169-92-32.dsl.snfc21.pacbell.net) joined #forth 11:29:21 is there a word that compiles a word inline? 11:29:35 What? 11:29:39 with that i mean that it doesnt compile a call to the word 11:29:54 but copies the contents of the target word in the word currently defining 11:30:21 for optimization, or for anti-stack-fuckups (due to the call) or whatever 11:30:32 Ah.. 11:30:32 so the source can look clean 11:30:43 I guess that's a bit too Forth-dependant. 11:30:49 k 11:30:58 mental note to self then 11:31:00 :) 11:31:00 Especially if you're using optimizations and/or asm words. 11:31:10 there's an easy way to define words that compile themselves inline 11:31:10 yeah i guess so 11:31:32 And for other words you'd need a word size counter. 11:32:25 well for code words there could be a simple exception, but other words can simply be copied 1 on 1. that shouldnt really be a problem 11:32:35 ohwell nevermind 11:33:40 : macro ( ... -- ) : '; parse postpone sliteral postpone evaluate postpone ; immediate ; 11:34:01 maybe using EVALUATE isn't the cleanest, though 11:34:30 yeah i know. postpone or compile or something, but thats a bit much 11:34:39 well, you use it as follows: 11:34:44 macro 2+ 2 + ; 11:34:49 tec. 11:34:51 etc. 11:34:58 you might want to take a look at the isforth does it 11:35:37 src/ext/inline.f 11:36:01 s/the/how 11:36:27 i was just thinking something like : test 1 2 inline 2>r inline rswap inline 2>r ; 11:36:29 or something 11:36:43 (this would just be a swap effectively, but you get the idea :) 11:37:19 : test 1 2 2>r rswap 2r> ; would work though, since 2>r and friends don't compile calls to colons 11:37:25 but i see what you're saying 11:37:55 like if you want some word to access something you put on the r-stack 11:38:25 i've always wanted such a word too :) 11:38:25 well, if i'd do : 2>r >r >r ; and : rswap r> swap >r ; and : 2r> r> r> ; they would fuck up in most forth's 11:38:28 yes for instance 11:38:31 or to win space 11:38:37 ehr 11:38:39 time 11:38:43 a call is a call 11:38:44 :) 11:39:01 yeah, but who the hell defines 2>r like that :) 11:39:16 simple threaded definition :p 11:39:33 maybe if you want to use coroutines or something... :) 11:39:55 yeah well. i guess i'll live with the less attractive source instead 11:41:18 which forth are you using? 11:41:30 win32forth 11:41:45 but right now its for computing so i'm aiming for speed 11:50:49 and while i'm dreaming, i wished i had some kind of ifdef directive 11:51:32 : defined? ( -- ) name find nip ; 11:51:56 no 11:52:00 : defined? ( -- ) bl word find nip ; 11:52:37 that stack effect should be ( -- flag ) 11:53:07 so then you just do defined? some-wrod [IF] blah ba [THEN] 11:56:15 hm i dont think that has the desired effect 11:58:00 what is the desired effect? 11:58:17 qFox: herkforth has a nice solution for this 11:58:31 although you have to design words to be inlined 11:58:43 any word can have a macro equivilent 11:58:51 (same word name, but with comma prefix) 11:58:58 the desired effect is that if i put in my source something like DONTDEF ;DONTDEF the between will not be compiled 11:59:07 although win32forth does have comment 11:59:07 so there would be a ,>r wich would compile the instructions to push the rstack 11:59:35 but i do mean something like c's #ifdef so that i can have a list of variables stating what components should be compiled and what not 11:59:44 so you could define : ,2>r ,>r ,>r ; 12:00:41 when entered into the source without the comma, in compile color my editor automatically sticks in a _call_ (execute color) to the macro instead 12:00:46 ok, so : ifdef ( -- f ) ' @ ; 12:01:20 Sonarman> well no, because how will that word stop words from being compiled? 12:01:26 true OGGSupport ! 12:01:37 i believe that is some internal component you need to alter 12:01:55 ifdef OGGSupport [IF] 12:01:58 for which i have far too little knowledge of (for win32forth). heck you dont want to mess with w32f anyways :p 12:02:07 : play-ogg blah blah blah ; 12:02:10 [THEN] 12:02:52 you could do it any number of ways 12:03:16 yes but how about this 12:03:20 : mainloop 12:03:23 dostuff 12:03:24 domorestuff 12:03:26 writestuff 12:03:30 doevenmorestuff 12:03:30 ; 12:03:47 what if i didnt want the write stuff, or none of the do stuff 12:03:50 qFox: doesn't look like a loop to me 12:03:51 and i know 12:03:52 and you want to conditionally disable the compilation of parts of mainloop 12:03:55 ah ok 12:03:59 i didnt say loop. 12:04:13 i meant at all 12:04:20 see if you add if's for that 12:04:27 those if's are still compiled (As is the rest) 12:04:29 no, you wouldn't need to modify the internals, i don't think 12:04:34 and the if's are executed, either way. 12:04:42 thats exactly soemthing i'd like to avoid 12:04:52 FORTH is quite amusing... as your profiency at FORTH increases, your programs become simpler and simpler 12:04:56 to just "jump" while compiling, and executing 12:05:06 unlike any other language i know 12:05:16 lisp too 12:05:19 (except maybe LISP) 12:05:21 heh yeah 12:05:22 you'd just need to write an immediate word that checks a variable, and then either just lets the code continue compiling, or jumps to the end of the "special" part 12:05:29 exactly 12:05:34 FORTH and LISP aren't totally dissimilar, it has to be said 12:05:34 that would mean messing with the internals 12:05:37 io 12:05:37 imo 12:05:38 --- join: tathi (~josh@pcp02123722pcs.milfrd01.pa.comcast.net) joined #forth 12:06:09 Topaz, my factor language combines aspects of boht 12:06:29 i'm just saying, i'd really like ifdef, but its not something easily done in forth 12:06:45 why do you need ifdef? 12:06:51 qFox: i should have one done in a few minutes. 12:06:55 just put the bits you want conditionally compiled in another source file 12:07:06 thats the alternative yes 12:07:17 but it would still mean you'd have to have an if 12:07:25 hm 12:07:27 no wait 12:07:35 nevermind that 12:07:51 but to create an extra file for every bit of code is very undesireable 12:08:04 factor does sound interesting 12:09:12 Sonarman> i'm very curious to your solution, if its "valid" 12:09:13 and somewhat buggy and incomplete :) 12:09:24 (factor, not Sonarman's solution) 12:16:07 qFox: got it 12:16:17 \ gets new word from input stream. if at EOL, refill input buffer and try again 12:16:17 : name-> 12:16:17 name dup 0= if 2drop refill drop recurse exit then ; 12:16:17 12:16:17 : #endif ; immediate 12:16:19 12:16:22 : defined? ( -- f ) 12:16:24 bl word find nip ; 12:16:27 12:16:29 : #ifdef ( -- ) 12:16:32 defined? if exit then begin name-> s" #endif" compare while repeat ; immediate 12:16:34 12:16:37 : enableBlag ; 12:16:39 : test 12:16:42 #ifdef enableBlag 12:16:45 ." blag enabled" cr 12:16:47 #endif 12:16:50 #ifdef enableQwax 12:16:52 ." qwax enabled" cr 12:16:55 #endif ; 12:17:01 why is blag enabled by default? 12:17:10 i think most users obviously want qwax 12:17:26 i believe that blag is far superior 12:17:32 haha 12:17:37 what's blag/qwax? ;) 12:17:44 Topaz: RTFM 12:17:57 :D 12:18:02 :D 12:18:21 * Topaz consults the Book Of Foo(tm) 12:20:28 wrong volume 12:20:31 it's in Baz 12:25:05 * Herkamire makes an addition to his notes file: 12:25:06 foo, bar, baz, qux, quux, corge, grault, garply, waldo, fred, plugh, xyzzy, thud. 12:29:17 IIRC the scsh manual has the BEST variable names 12:29:21 * Sonarman looks for them 12:30:02 (foo frobbotz) 12:30:02 (blatz garglemumph)) 12:30:16 heheheheheeh 12:30:20 hahaha 12:30:46 garglemumph, woah 12:32:18 --- quit: wossname ("kris what") 12:36:18 --- quit: qFox (Read error: 104 (Connection reset by peer)) 12:46:12 * Tomasu is back (gone 10:55:49) 13:41:30 --- quit: Fractal (orwell.freenode.net irc.freenode.net) 13:46:31 --- join: Fractal (jah@selling.kernels.to.linus.torvalds.at.hcsw.org) joined #forth 13:51:05 Hi there 13:56:49 --- join: imaginator (~George@georgeps.dsl.xmission.com) joined #forth 14:15:13 --- join: OrngeTide (orange@rm-f.net) joined #forth 14:15:42 Herkamire, here ya go. 800Mhz PowerPC board that is only 3" long. http://www.8080.net/html/200403/n131128030.html 14:16:30 ooh, doubles as a coffee table? 14:20:00 eheh. 800mhz ought to keep your cup warm t oo 14:21:05 --- join: kuvos (C00K13S@82-169-140-229-mx.xdsl.tiscali.nl) joined #forth 14:21:09 --- quit: kuvos (Client Quit) 14:21:12 damn! 14:21:49 --- join: qFox (C00K13S@82-169-140-229-mx.xdsl.tiscali.nl) joined #forth 14:21:53 qFox! 14:22:24 goddamnit 14:22:30 i feel so stupid right now 14:22:36 and clueless 14:22:41 :( 14:22:46 What are you failing with? 14:22:51 i had a trojan on my server 14:22:59 for 3 days 14:23:06 that sucks!! 14:23:08 what puzzles me is how it got there in the first place 14:23:13 did you see the #ifdef code? 14:23:28 i've had it from the moment i first got internet on that installation of 2k 14:23:45 Sonarman> no sorry, the moment i figured i actually did have a trojan i went beserk 14:24:05 thing is, first time my server made contact with internet, it went haywire 14:24:15 i noticed 14:24:30 some deuchbag that i gave a free shell account to was "testing" exploits before. "just to see if it was secure" .. maybe your own user installed the trojan 14:24:30 oh 2k. 14:24:34 and did some netstat stuff and checked running procs but saw nothing in the proclist 14:24:50 i did see a huge bunch of connections in netstat, but they all pointed to tiscali, my new provider 14:25:03 my gf's windows box is so full of viruses, spyware and hacks that it's not even funny. 14:25:04 being new with adsl i kinda figured that was normal, even thoug ha voice in my head said that was stupid 14:25:23 over the past two days i notice i had a continous upload of about 3-5k 14:25:28 qFox, geez 14:25:34 still, i figured thats just adsl, what do i know 14:25:35 you musta been part of some DDoS thing 14:25:48 well i found some logs indicating i was part of a botnet 14:25:57 i had the frogger backdoor 14:26:08 i hate people who do that kind of crap. 14:26:10 explorer32.exe (why the fuck i did not see that executable before god knows) 14:26:27 you didn't see it because you weren't looking for that kind of stuff. 14:26:30 no i was 14:26:54 i know most of the default windows procs that are supposed to be running 14:27:11 but this is a adv server that has a couple of extra crap procs running 14:27:38 i've shut almost anything down now, but i'm still at a complete loss how i got the damn trojan in the firs tplace 14:27:42 it was a clean installation 14:27:46 explorer32.exe isn't a default windows proc? 14:27:50 no 14:27:51 explorer is 14:27:57 sneaky 14:28:04 explorer32 is a common way to make it look real 14:28:19 the only real versions are explorer.exe and iexplore.exe anything else is fake and virus 14:28:36 i did not know that. i'll have to pick through my gf's box tonight. 14:28:56 so what does explorer32.exe do? monitor some port and give any connecting computer admin privileges? 14:28:56 well i'm a customed to checking out procs and see whats not supposed to run 14:28:58 that sounded dirty. but you know what i meant 14:29:18 thats why i feel so goddamn stupid right now 14:29:31 i should never have thought it was something to do with my isp 14:29:37 bah. 14:29:43 explorer32 is a backdoor, one of many 14:29:51 couldnt find anything readable in the executable 14:30:03 isn't there some scanner that can automatically find that stuff? 14:30:06 i did find some irc server log, but nothing in there i could actually log on to unfortunatly 14:30:15 yes i'm running an online scanner right now 14:30:18 just in case 14:30:46 yikes. another 3 hits 14:30:52 what the hell wasx going on there 14:31:39 qFox, did you have the latest Win2K service packs and updates installed? 14:31:58 c:\winsows\system32\vsmon.exe \windowsup.exe and \autoclk.exe 14:31:59 yes 14:32:16 that was actually what i thought was going haywire the first time that box got internet 14:32:18 What ports do you have open? I recently got a trojan when I opened the RPC ports. 14:32:25 i figured it was downloading updates and patches and whatever 14:32:34 right now i only have a few left 14:32:52 although i'm not comfortable with 139 open, i believe its not a good idea to shut it either 14:33:08 hold on i want to get rid of these three files 14:33:13 why? I've got very few open ports. 14:33:52 if you cut your network cable you'd be trojan-proof. 14:34:49 On a side note, I think I'm to the point in my MFC+Forthy adventures where passing Forth code in windows messages would be simpler and more flexible than making a bunch of WM_BLAH handlers that suck info out of lParam and wParam. 14:34:57 maybe you should firewall everything but http, https, smtp and pop? 14:35:04 well at least those three files werent running 14:35:15 well thats just it, i detest firewalls and virusscanners 14:35:22 they slow things down and are a regular pain in the ass 14:35:32 qFox, I use AVG, the free virus scanner. 14:35:32 madwork, interesting. 14:35:41 i've been online for over 5 years without a firewall and no problems 14:36:00 for ddossattacks you add the sender to the filter, and you shut the box off properly. 14:36:09 free scanner? man. i should use that. 14:36:10 i just dont understand how i got the trojan 14:36:26 i've scanned the box now and think i got rid of pretty much everything 14:36:33 just one port open i'm not quite sure about 14:36:39 qFox, if you had some open ports before you installed your Win2K updates, you probably got script kiddied with the various exploits. 14:36:39 but its controlled by svchost 14:36:50 the moment i get online? 14:36:53 YES. 14:36:58 That's exactly what happened to me. 14:36:59 the instant... 14:37:02 qFox, I used to work for a dsl provider. the always-on nature of dsl attracts a lot of people to scan our ip blocks. 14:37:12 well, possibly, if you say so. 14:37:20 the box has been updated in the mean time 14:37:20 I didn't have those RPC ports open for very long, and BAM. Trojan. 14:37:39 well no this was really instantly 14:37:48 the modem gets internet 14:37:51 qFox, then I guess it was a magic trojan. 14:37:52 the computer gets online 14:37:56 and it went haywire 14:37:58 i guess. 14:38:02 :) 14:38:03 well whatever 14:38:13 i've always used a firewall, even when i was on dial-up. but that was mostly because I had 9 computers on my network and i didn't want to have to secure every one of them. i just used NAT because i was lazy:P 14:38:15 lets see if i can find anything interesting in these other files 14:38:45 I've got an obsolete 3COM gateway, does the trick. 14:45:38 yea. worse thing that can happen is someone can crash your gateway and force you to go over and reset it. :) 14:45:38 Heh, yep. 14:45:38 i've had a old 486 running debian doing firewally things for the last couple of years, and it has been untouched 14:45:38 (afaik ;) 14:45:38 yea. i eventually got rid of my 486 router after it served me well for about 3 years. i just didnt have space in my tiny apartment for it. 14:45:38 of course, it is so slow that if somebody did hack it, it wouldn't be a whole lot of use 14:45:38 the nice thing was it was made entirely out of parts i found in a dumpster:) 14:45:38 (running kernel 2.0, and old glibc and with no C compiler, there's not a huge amount you can do on it) 14:45:38 mine just didn't have any harddrive space. i found a cardboard box full of 42Mb IDE drives. nearly all of them worked too. just the right size for a little router. 14:45:38 2.0 .. you were more recent than me. i had 1.2 14:45:38 --- quit: I440r_ (Excess Flood) 14:45:38 haha 14:45:38 --- join: I440r_ (~mark4@216-110-82-59.gen.twtelecom.net) joined #forth 14:45:38 my router didn't even have a telnet client installed. so if you did hack it you couldn't even tunnel into anything unless you managed to upload your own executable 14:45:38 gah ytou used to be able to read exe files and see what the trojan was connecting to 14:45:38 these seem to have masked that ascii part 14:45:38 :( 14:45:38 the only log containing the irc logs contain no valid adr's 14:45:38 but i got a little netgear access point that has a built-in firewall. it was $30 after rebate and takes up a lot less space than my old DEC 486 14:45:38 you can unpack such exes if you let them run 14:45:38 and dump their memory space 14:45:38 it's all about SoftICE 14:45:38 or just trap all winsock calls, heh 14:45:38 softice? 14:45:38 softice is a debugger 14:45:38 IDA can pull most stuff apart without having to execute it too. 14:45:38 what has that got do with anything 14:45:38 i thought you wanted to watch the trojan execute? 14:45:38 heck no 14:45:39 oh i misunderstood then 14:45:45 in that case i would just execute the trojan and set packet capturer on 14:46:11 sometimes you can actually read the .exe files for plaintext and see the server and password embedded in it 14:46:15 ida might be able to do it. but it would be a pain to read. and if it's even remotely sophesticated it's not going to get you anywhere 14:46:29 all drones by default connect to some irc server 14:46:32 as did mine, i have those logs 14:46:54 qFox, yea. a lot of inet_aton("1.2.3.4",&in) type stuff will show up pretty plainly 14:47:31 qFox, are you going to figure out where it connects and figure out what passwords are used to communicate with the drones and take the hacker's bots away? 14:47:40 PASS bonsai 14:47:40 NICK [RXB]|244405 14:47:40 USER lcgfcnuy 0 0 :[RXB]|244405 14:47:40 :w00tage2.aapjes.0wnen.EDU NOTICE AUTH :*** Looking up your hostname... 14:48:00 thats part of the logfile. but nothing in there that in any way connects 14:48:03 hrm. interesting. 14:48:17 yes thats what i was trying 14:48:26 but without a serveraddress 14:48:30 its pointless 14:48:33 my cheap firewall logs every incoming and outgoing connection. then emails me the logs every day... 14:48:37 i have the exe's still if you care 14:48:46 i don't care :P 14:49:09 JOIN #d¡ldo s3x 14:49:12 maybe i could run them in a chroot'd wine session. 14:49:22 :w00tage2.aapjes.0wnen.EDU 332 [RXB]|244405 #d¡ldo :.advscan dcom135 100 4 4000 -b -s 14:49:22 :w00tage2.aapjes.0wnen.EDU 333 [RXB]|244405 #d¡ldo TriggerFX 1091769270 14:49:22 :w00tage2.aapjes.0wnen.EDU 353 [RXB]|244405 @ #d¡ldo :[RXB]|244405 @[CN]TriggerFX 14:49:22 :w00tage2.aapjes.0wnen.EDU 366 [RXB]|244405 #d¡ldo :End of /NAMES list. 14:49:43 (this is raw irc data, incase you never seen it before) 14:50:21 and by the look of it, this botnet was rather small... like, i was the only one there, except for that "op" [cn]triggerfx 14:50:38 and it seems as if it was part of a "rxb" botnet, or whatever 14:50:39 yea. it would be fun to figure out how to get into that botnet and either display a dialog box to every user notifing them of what's going on. or just have the botnet attack the hacker if you can find his real ip 14:50:49 well 14:50:56 if its a properly coded trojan 14:50:59 and i'll asume it is 14:51:04 it'll only take orders from someone with ops 14:51:07 or who's an oper 14:51:10 or something similar 14:51:30 believe it or not, they have experienced such ppl before ;) 14:51:35 yea. it would be tough work to try and invoke a split or something and steal ops. 14:52:06 not worth my trouble 14:52:24 all i can hope is that they didnt take any information they will re-use 14:52:31 i've changed the admin passes and all 14:52:49 time to change passwords and watch credit card statements closely. 14:53:03 appearantly, there has been an upload of 500meg the past 2 days, but i have no idea what those actually were... ddoss or something else 14:53:14 heck no, i dont store that stuff on a computer. are you mad 14:53:37 if you punched in a CC# in MSIE or Mozilla it's in there. 14:53:41 my computer has been physically stolen twice, you learn. 14:54:10 my buddy has a desktop search company. and it's pretty scary when you punch in part of your own SSN or CC# in the search engine. it finds tons of plain-text stuff right away. 14:54:29 well i couldnt care less about my ssn 14:54:52 ssn + birthday + home address is all you need to sign up for a credit card. 14:54:54 as for my cc, meh i dont use him so if anything is billed i'll know 14:55:00 not in holland 14:55:05 i r dutch. 14:55:10 ah. you're lucky then. 14:55:15 define lucky :p 14:55:20 in the US it's disgustingly easy to do identity thief. 14:55:23 well, i'll live. 14:55:32 at least i think all of the crap is gone now 14:56:04 these people are so frustrating. why can't they just leave people the hell alone. 14:56:23 it's insane how much crap appears on a windoze machine over time 14:56:58 * Topaz will always use a minority OS ;) 14:57:32 truth be told, its the first time in... ages i've had such an accident 14:57:33 yea. my gf kept'd clicking "Okay" on dialog boxes that installed CAB files. a bunch of porn sites redid *every* button in MSIE to go to their homepage. and on boot-up the cab automatically rewrites the homepage setting 14:57:53 hehe 14:58:00 and it wasn't like softcore stuff either. it was some pretty nasty stuff. 14:58:05 i've memmorized the regedit run line :p 14:58:26 heh, we used to use that for running trojans at school 14:58:33 hkey local machine / software / microsoft / windows / currentversion / run 14:58:35 the point is. you have to waste so much time on things because other people are just disrespectful and abusive. 14:58:36 i think 14:58:37 :) 14:58:47 (though only for stealing the sysadmin password to be able to use the machines properly, mind ;) 14:59:07 in their eyes, thats the same thing. 14:59:08 but if I went to their house and beat the hell out of them, i'd be the criminal. it just doesn't seem fair 15:00:17 a spammer actually got a court order against my friend becaue my friend found out his home phone number and kept harassing him. 15:00:23 * qFox goes back to coding. 15:00:29 the world is just backwards. 15:00:40 the world sux, live with it 15:00:40 i suppose i should do some work today instead of ircing. seeya. 15:01:02 qFox, what choice do I have other than to live with it? :) 15:01:22 do i need to answer that or do you think you can find that answer yourself ;) 15:01:53 oh i think we all know the alternative to living 15:07:00 --- join: warpzero (~warpzero@dsl.103.mt.onewest.net) joined #forth 15:19:30 --- join: crc (crc@92-pool1.ras11.nynyc-t.alerondial.net) joined #forth 15:23:14 --- quit: Fractal (orwell.freenode.net irc.freenode.net) 15:23:14 --- quit: onetom (orwell.freenode.net irc.freenode.net) 15:23:14 --- quit: slava (orwell.freenode.net irc.freenode.net) 15:23:21 --- quit: qFox (orwell.freenode.net irc.freenode.net) 15:23:21 --- quit: OrngeTide (orwell.freenode.net irc.freenode.net) 15:23:21 --- quit: Herkamire (orwell.freenode.net irc.freenode.net) 15:23:21 --- quit: warpzero (orwell.freenode.net irc.freenode.net) 15:23:21 --- quit: tathi (orwell.freenode.net irc.freenode.net) 15:23:58 --- quit: Sonarman (orwell.freenode.net irc.freenode.net) 15:23:58 --- quit: Topaz (orwell.freenode.net irc.freenode.net) 15:23:58 --- quit: madgarden (orwell.freenode.net irc.freenode.net) 15:23:58 --- quit: ChanServ (orwell.freenode.net irc.freenode.net) 15:23:58 --- quit: crc (orwell.freenode.net irc.freenode.net) 15:23:58 --- quit: arke (orwell.freenode.net irc.freenode.net) 15:24:07 --- quit: lyca (orwell.freenode.net irc.freenode.net) 15:24:10 --- quit: I440r (orwell.freenode.net irc.freenode.net) 15:24:10 --- quit: madwork (orwell.freenode.net irc.freenode.net) 15:24:10 --- quit: cmeme (orwell.freenode.net irc.freenode.net) 15:24:38 --- quit: I440r_ (orwell.freenode.net irc.freenode.net) 15:24:38 --- quit: imaginator (orwell.freenode.net irc.freenode.net) 15:24:38 --- quit: mur (orwell.freenode.net irc.freenode.net) 15:24:38 --- quit: jDoctor (orwell.freenode.net irc.freenode.net) 15:24:39 --- quit: Robert (orwell.freenode.net irc.freenode.net) 15:24:39 --- quit: titanstar (orwell.freenode.net irc.freenode.net) 15:27:56 --- quit: skylan (Remote closed the connection) 15:29:04 --- join: Herkamire (~jason@h000094d30ba2.ne.client2.attbi.com) joined #forth 15:29:04 --- join: skylan_ (~sjh@vickesh01-4677.tbaytel.net) joined #forth 15:29:04 --- join: warpzero (~warpzero@dsl.103.mt.onewest.net) joined #forth 15:29:04 --- join: I440r_ (~mark4@216-110-82-59.gen.twtelecom.net) joined #forth 15:29:04 --- join: imaginator (~George@georgeps.dsl.xmission.com) joined #forth 15:29:04 --- join: Fractal (jah@selling.kernels.to.linus.torvalds.at.hcsw.org) joined #forth 15:29:04 --- join: tathi (~josh@pcp02123722pcs.milfrd01.pa.comcast.net) joined #forth 15:29:04 --- join: Sonarman (~matt@adsl-64-169-92-32.dsl.snfc21.pacbell.net) joined #forth 15:29:04 --- join: slava (~slava@CPE00096ba44261-CM000e5cdfda14.cpe.net.cable.rogers.com) joined #forth 15:29:04 --- join: I440r (~mark4@216-110-82-203.gen.twtelecom.net) joined #forth 15:29:04 --- join: jDoctor (~rex@pcp08550359pcs.manass01.va.comcast.net) joined #forth 15:29:04 --- join: madwork (~madgarden@derby.metrics.com) joined #forth 15:29:04 --- join: mur (~mur@smtp.uiah.fi) joined #forth 15:29:04 --- join: arke (~chris@wbar8.lax1-4-11-100-111.dsl-verizon.net) joined #forth 15:29:04 --- join: Topaz (jonny@spc1-horn1-6-0-cust217.cosh.broadband.ntl.com) joined #forth 15:29:04 --- join: onetom (~tom@novtan.bio.u-szeged.hu) joined #forth 15:29:05 --- join: madgarden (~madgarden@Toronto-HSE-ppp3706683.sympatico.ca) joined #forth 15:29:05 --- join: ChanServ (ChanServ@services.) joined #forth 15:29:05 --- join: cmeme (~cmeme@216.184.11.30.unused.swcp.com) joined #forth 15:29:05 --- join: lyca (alycat@rasterburn.org) joined #forth 15:29:05 --- join: Robert (~snofs@c-bf5a71d5.17-1-64736c10.cust.bredbandsbolaget.se) joined #forth 15:29:05 --- join: titanstar (runehol@wirth.ping.uio.no) joined #forth 15:29:05 --- mode: irc.freenode.net set +ooo Herkamire I440r ChanServ 15:29:35 man, I missed OrngTide 15:29:39 cool about the tiny PPC board 15:29:42 damn fast too 15:33:28 --- log: started forth/04.08.25 15:33:28 --- join: clog (nef@bespin.org) joined #forth 15:33:28 --- mode: orwell.freenode.net set +n 15:33:28 --- names: list (clog) 15:33:42 -orwell(freenode.net)- *** Notice -- TS for #forth changed from 1093473211 to 1059951990 15:33:42 --- mode: irc.freenode.net set +l 83 15:33:42 --- join: Herkamire (~jason@h000094d30ba2.ne.client2.attbi.com) joined #forth 15:33:42 --- join: Tomasu (~moose@S010600045a4c73cc.ed.shawcable.net) joined #forth 15:33:42 --- join: skylan_ (~sjh@vickesh01-4677.tbaytel.net) joined #forth 15:33:42 --- join: warpzero (~warpzero@dsl.103.mt.onewest.net) joined #forth 15:33:42 --- join: I440r_ (~mark4@216-110-82-59.gen.twtelecom.net) joined #forth 15:33:42 --- join: imaginator (~George@georgeps.dsl.xmission.com) joined #forth 15:33:42 --- join: Fractal (jah@selling.kernels.to.linus.torvalds.at.hcsw.org) joined #forth 15:33:42 --- join: tathi (~josh@pcp02123722pcs.milfrd01.pa.comcast.net) joined #forth 15:33:42 --- join: Sonarman (~matt@adsl-64-169-92-32.dsl.snfc21.pacbell.net) joined #forth 15:33:42 --- join: slava (~slava@CPE00096ba44261-CM000e5cdfda14.cpe.net.cable.rogers.com) joined #forth 15:33:42 --- join: I440r (~mark4@216-110-82-203.gen.twtelecom.net) joined #forth 15:33:42 --- join: jDoctor (~rex@pcp08550359pcs.manass01.va.comcast.net) joined #forth 15:33:42 --- join: madwork (~madgarden@derby.metrics.com) joined #forth 15:33:42 --- join: mur (~mur@smtp.uiah.fi) joined #forth 15:33:43 --- join: arke (~chris@wbar8.lax1-4-11-100-111.dsl-verizon.net) joined #forth 15:33:43 --- join: Topaz (jonny@spc1-horn1-6-0-cust217.cosh.broadband.ntl.com) joined #forth 15:33:43 --- join: onetom (~tom@novtan.bio.u-szeged.hu) joined #forth 15:33:43 --- join: madgarden (~madgarden@Toronto-HSE-ppp3706683.sympatico.ca) joined #forth 15:33:43 --- join: ChanServ (ChanServ@services.) joined #forth 15:33:43 --- join: cmeme (~cmeme@216.184.11.30.unused.swcp.com) joined #forth 15:33:43 --- join: lyca (alycat@rasterburn.org) joined #forth 15:33:43 --- join: Robert (~snofs@c-bf5a71d5.17-1-64736c10.cust.bredbandsbolaget.se) joined #forth 15:33:43 --- join: titanstar (runehol@wirth.ping.uio.no) joined #forth 15:33:43 --- mode: irc.freenode.net set +ooo Herkamire I440r ChanServ 15:33:43 --- topic: set to 'FORTH programming language. Info: http://forth.bespin.org/resources/introduction ANSI: http://www.taygeta.com/forth/dpans.htm FIG83: http://forth.sourceforge.net/standard/fst83/ Links: http://members.dsl-only.net/~loophog || Note: this chan is publicly logged.' by irc.freenode.net 15:51:25 --- quit: lyca (orwell.freenode.net irc.freenode.net) 15:51:25 --- quit: arke (orwell.freenode.net irc.freenode.net) 15:52:39 --- part: imaginator left #forth 15:54:03 --- join: arke (~chris@wbar8.lax1-4-11-100-111.dsl-verizon.net) joined #forth 15:54:03 --- join: lyca (alycat@rasterburn.org) joined #forth 15:54:05 --- quit: arke ("Reconnecting") 15:56:58 --- join: arke (~chris@wbar8.lax1-4-11-100-111.dsl-verizon.net) joined #forth 15:58:45 --- quit: Herkamire ("gotta plug in another HD") 16:11:47 --- join: Herkamire (~jason@h000094d30ba2.ne.client2.attbi.com) joined #forth 16:11:47 --- mode: ChanServ set +o Herkamire 16:20:06 --- nick: skylan_ -> skylan 16:22:27 --- join: kc5tja (~kc5tja@66-74-218-202.san.rr.com) joined #forth 16:22:34 --- mode: ChanServ set +o kc5tja 16:22:34 hi kc5tja 16:22:43 Howdy 16:22:50 * kc5tja just finished changing the tires on his bike, and adding a water bottle and cage for it. 16:22:59 hi kc5tja !!! 16:23:02 :) 16:23:10 * kc5tja punctured one of my three tubes while putting one of the tires on though. That pissed me off. Good thing I purchased three. :) 16:23:19 kc5tja: x86 (dis-)assembler is a major pain in the ass 16:23:20 i'm trying to figure out why factor will compute 818! but crash doing 819!. 16:23:28 arke: Yes, it is. 16:24:02 slava: Problem in number representation perhaps? 16:24:09 I'm assuming you mean 819 factorial, correct? 16:24:21 kc5tja: maybe you can help me out with the disassembler - should I have a table for different types of instruction 16:24:30 kc5tja: or just a big byte table? 16:24:46 arke: What's worse is trying to debug EMIT and TYPE, after making what should have been only idempotent changes to the source code of the cross-compiler. >:( 16:24:58 :/ 16:25:09 arke: I don't know. Never written one before, and have no desire to start writing one now. 16:25:14 * arke is considering merely writing that which is REALLY necesssary 16:25:25 That's precisely my philosophy. 16:25:27 instead of writing the entire thing. 16:25:29 aah. 16:25:30 ok. 16:25:32 good :) 16:26:37 kc5tja, i believe its stack overflow! 16:27:14 when printing the integer 16:27:21 my integer>string is not tail recursive 16:27:32 :) 16:29:00 indeed, i can print 819! as hex (which uses less stack slots) 16:29:24 any ideas how to make this tail-recursive? 16:29:25 : integer% ( num -- ) 16:29:26 "base" get /mod swap dup 0 > [ 16:29:26 integer% 16:29:26 ] [ 16:29:26 drop 16:29:27 ] ifte >digit % ; 16:29:35 >digit turns a number 0 into CHAR: 0 etc. 16:29:42 * arke wasn't sure if it was good to have things like sub[esi]# :) 16:29:42 <% % %> assemble a string (its like PAD) 16:30:55 http://www.6502.org/forum/viewtopic.php?t=521 -- an opinion piece I wrote on the Forth language, provided in response to another thread on compiler performance, where a person acknowledged the niceties of Forth, but couldn't "wrap his mind around it." This article was a very quick attempt at explaining WHY Forth is the way it is, which often, is all one needs to be able to fully grok a language. 16:31:15 6502.org lo. 16:31:16 lol* 16:31:34 Why laugh? It's a kick-ass processor. 16:31:42 It's extremely home-brewer friendly. 16:31:55 It is not a coincidence that I chose the 65816 as the CPU of choice for the original Kestrel. :) 16:33:03 slava: I can't really follow the logic of your code above. 16:33:24 kc5tja, [ A ] [ B ] ifte is like forth IF A ELSE B THEN 16:33:35 % appends top of stack to pad 16:33:39 Yes, I know that much. 16:33:49 "base" get is 10 :) 16:34:31 why don't you just make % advance forward instead of backwards? 16:34:45 That won't help. 16:34:46 you mean assemble the string in reverse order? 16:35:00 and then reverse it at the end? 16:35:01 What needs to happen is the number needs to be built from MSD to LSD, instead of LSD to MSD. 16:35:10 yes. 16:35:28 slava: That's what I did for the Kestrel's Forth, since I was restricted to only 16 stack elements (for both data and return stacks). 16:35:36 kc5tja, and how did you do it? :) 16:35:51 Oh man, I have to rethink the algorithm again. 16:36:37 to build it from MSD to LSD, wouldn't you % need to append to the end of the string instead of the beginning? 16:36:38 Well, actually, I did do it LSD to MSD, but I did it in reverse. 16:37:01 ok 16:37:12 well i can't 'prepend' to the % buffer, but i can just reverse the string at the end 16:37:16 In this case, I started writing the numbers at PAD+N, where N is the number of bytes the longest number could occupy. 16:37:40 Then each time I called # or HOLD, it would deposit the digit at PAD+M, and decrement M, where M <= N. 16:37:54 <# would initialize M to N obviously. :) 16:38:03 the problem here is there's no way to get the length of the 'longest' number since no such thing exists 16:38:26 Then you would need to build UP in memory instead of down, and then reverse at the end. 16:38:26 kc5tja: nice post :) 16:39:17 I would need to spend some time coming up with some sample, and thoroughly untested, code to illustrate my point. 16:39:49 oh, i was thinking about it the wrong way 16:40:09 kc5tja: and I mean that --- that post is GREAT. I suggest you put it into the topic here. 16:40:37 kc5tja, i believe the oberon philosophy is similar. 16:41:33 slava: For the Oberon System, yes. 16:41:49 The philosophy isn't so much an intrinsic of the language like it is with Forth. 16:41:52 kc5tja: do you use oberon? 16:42:37 Herkamire: I have in the past; I don't anymore because it doesn't behave well with Ion. 16:42:43 I should get back into it though. 16:43:05 I just tried it once with ion 16:43:29 not sure what's wrong, as I don't know how it should behave. 16:43:50 I was quite upset at first about it not closing 16:44:15 kc5tja: what's oberon good for? 16:44:17 Oberon requires nearly the full control of the keyboard, which is why it doesn't behave well with Ion. 16:44:27 slava: your /mod is ( n -- q r ) ? 16:44:31 Herkamire: Whatever Smalltalk is good for; some might argue even more. 16:44:35 Sonarman, yes 16:44:46 heh, I don't know what that is. 16:44:49 Sonarman, is that the wrong order? :) 16:44:58 Herkamire: You've never heard of Smalltalk???? 16:45:00 slava: no, ANS is wrong :) 16:45:01 * kc5tja feints 16:45:10 Sonarman, i can change it, i dunno 16:45:17 Sonarman, which order is 'better'? 16:45:26 no, I know smalltalk a bit (played with squeak a few times) 16:45:29 123 10 /mod .s <2> 3 12 ok 16:45:34 I mean I don't know what smalltalk is good for 16:45:45 Herkamire, smalltalk is good for OO programming 16:45:52 slava: beats me which is better :). i just wanted to make sure i understood your code 16:46:05 squeak seemed pretty cool, except that the GUI was mind-bogglingly horrid 16:46:26 Herkamire: You just needed to get used to it. 16:46:30 Same with Oberon. 16:46:30 slava: q r actually seems more logical to me 16:46:45 slava: its possible to implement a real fortgh on the java VM or in factor, i just realized. 16:46:46 The UI in Oberon is 100% non-modal. 16:47:31 slava: key to this is something I would like to call the "de-type-ifier" :) 16:47:43 slava: I wrote a prototype for that in scheme a LONG time ago 16:48:14 Herkamire: I guess its one of those things where if you have to ask what it's good for, then no answer will make sense to you. Really, I cannot answer that question in any meaningful way, except, "What's Linux good for?" 16:48:48 arke, wouldn't it be inefficient? 16:48:57 arke, you could have a huge int[] in java storing your entire forth memory 16:49:15 slava: somewhat inefficient. but it would work. 16:49:20 kc5tja: I'm not trying to be critical 16:49:23 slava: you'd need to be able to map memory 16:49:30 slava: in the forth VM. 16:49:36 Herkamire: No, I know you're not. But it's just one of those sorts of things. 16:49:47 slava: mappable sections then have an entry describing representation type. 16:49:50 Herkamire: It's just a different kind of computing environment. 16:49:53 arke, i'm done with trying to implement languages over the java vm :) 16:49:56 slava: then, any representation can be changed. 16:49:58 slava: :) 16:50:05 arke, if you want forth in factor, i can add @ and ! primitives :) 16:50:06 kc5tja: I'm interested in oberon because I bet it has a lot of good iteas in it. I was hoping someone could point me towards some so I don't drop it before finding them 16:50:22 slava: the prototype worked for strings and characters, the latter of which were treated as integers\ 16:50:59 slava: bah. :) 16:51:01 One thing is for sure: because Oberon is one of the most type safe languages in the world, I would like to point out that despite its multitasking, every single application runs with supervisor privileges, in a single address space. Oberon's compiler ensures everything is fully type-checked, and it's just plain not possible to (casually) read another program's memory or muck with their data. 16:51:15 kc5tja, that is cool 16:51:20 slava: I haven't done scheme in a long time, so i don't even quite remember 16:51:26 slava: but it would work something lke this 16:51:27 kc5tja: that's neat 16:51:36 Also, Oberon compiles to native machine code -- so it runs *fast*. 16:51:42 Quite unlike Sqeak. :D 16:51:59 :) 16:52:03 slava: (map 3 (+ 3 (length mystring)) mystring) or something. don't wuite remember. 16:52:06 kc5tja: :) 16:52:07 I would be much happier with squeak if it was fast 16:52:16 I'm quite impressed that oberon displays quickly 16:52:21 Also, unlike Modula-2, Oberon is sssiiimmmpppllleee. 16:52:28 It has fewer keywords in it than C. 16:52:53 cool 16:52:58 although it seems to me C has quite a few 16:53:15 slava: this will map the memory from 3 and up with length of string. Then, the get memory word would look up the mapping. 16:53:24 Yet, it's overwhelmingly more typesafe, and supports true object oriented programming with no syntax extensions (Oberon-2 does add a few keywords to the language, but none of those keywords are in any way related to its object oriented implementation!). 16:53:30 arke, :) 16:54:13 oh, I'm also impressed that it works great (and native) under linux PPC. that's quite unusual :) 16:54:21 slava: if you were to do @ on a string, it would retrieve the first 4 bytes of the string and compose their ASCII together. 16:54:24 (the native part is unusual) 16:54:31 Also, Oberon is garbage collected. It is, unfortunately, mark-n-sweep, since for efficiency reasons, it doesn't use handles to refer to memory blocks. But, still, it's 100% accurate -- no conservative collectors here. :) 16:55:02 slava: what do you think? :) 16:55:19 arke: why would you WANT to do that? :) 16:55:30 arke, i think you're crazy :) 16:55:42 Also, there is no implicit reason why the code can't use handles to refer to memory blocks either -- since the language exposes pointers, but is very, very careful with what you can do with them. It's easy enough to conveniently redefine the concept of a pointer into the concept of a handle. 16:55:47 Sonarman: dunno. Smerdy was pissing me off, and i was playing with scheme, and i thought it would be cool. 16:55:59 I really really really want to see a cool free software OS with a GUI that is not windowed 16:56:01 slava: :) 16:56:15 Herkamire: wait for F2. It will be tiled. :) 16:56:22 kc cool stuff 16:56:29 Herkamire: like Ion ^_^ 16:56:31 Oberon is already there. :) 16:56:37 arke: nice. is that your project? 16:56:41 Herkamire: yep 16:56:45 arke: cool 16:56:50 kc5tja: how do I get it that way? 16:57:32 Herkamire: You have no choice; Oberon System 3 is tiled by default. You have to explicitly launch a windowing environment in order to use its windowing facilities. (Bluebottle is just the opposite, but I digress) 16:58:04 ok, how's this: 16:58:05 : integer% ( num radix -- ) 16:58:05 tuck /mod >digit % dup 0 > [ 16:58:05 swap integer% 16:58:05 ] [ 16:58:05 2drop 16:58:07 ] ifte ; 16:58:10 too ugly? just right? 16:58:30 i don't like the tuck/swap much 16:58:31 --- quit: Topaz ("Leaving") 16:58:32 what about: 16:58:35 : integer% 16:58:35 [ "base" get /mod >digit % ] while pad %count reverse ; 16:58:46 kc5tja: oh! just discovered the "welcome" button 16:58:50 enough of the desktop 16:58:51 where % increments %count 16:59:05 Herkamire: The welcome button? 16:59:11 and % goes forward 16:59:46 arke, what exactly is a tiled GUI? 17:00:24 kc5tja: I originally hit the "Open Desktop" button, because it was the first thing I saw that it made sense to do 17:00:27 madgarden: Panes and tiles more accurately. Where the full screen real-estate is always devoted towards application use. Shrinking one pane must necessarily increase the size of another, etc. 17:00:28 : integer% 17:00:28 "base" get swap [ over /mod >digit % dup ] while 2drop pad %count reverse ; 17:00:43 I didn't read all 15 of the buttons in that little rectangle 17:01:00 just went through them and there's one labeled "Welcome" that brings up the intro tutorial that I need 17:01:09 kc5tja, ahh OK... sort of what I pictured. 17:01:28 Herkamire: You already had Oberon installed on your system? I would need to download it again. 17:04:46 --- join: proteusguy (~proteusgu@66.168.185.144) joined #forth 17:07:27 * kc5tja put some Hemisphere Armadillos on my bike. Kevlar-reinforced tires and although somewhat knobby, they have rather low rolling resistance. Hootah! 17:07:45 :) 17:07:49 And dude, they can take pressures as high as 80psi. Phenominal. I don't even think my pump can handle those kinds of pressures. 17:07:57 * arke should bike more --- excercise is needed. 17:08:07 kc5tja: woah! 17:08:13 kc5tja: thats more than my car tires! 17:08:19 kc5tja: more than double! 17:08:43 100 allot here num-buf 17:08:43 -new. dup 10 umod todigit b-! 10 / 0; -new. ; 17:08:43 new. num-buf >a -new. a num-buf over - type ; 17:08:46 arke: Biking is good stuff. But like any venture, you get what you pay for. I spent $118 today on emergency pump, bottle, cage, two Armadillo tires, and three tubes (one of which I punctured while putting it ON, but I digress...) 17:09:03 arke: That's normal. Smaller tires = higher pressures. 17:09:07 there's an example of how to implement . 17:09:13 Real road bike tires go up to 125psi. 17:10:31 kc5tja: yeah, I installed oberon the other day 17:10:35 But they're really small tires. For my tires, 26" x 1.5", 80psi is enormous pressures. 17:10:50 kc5tja: started reading the intro/tutorial, but haven't gotten far. nothing about programming yet 17:11:46 Herkamire: If memory serves me correctly, programming for Oberon's environment is either in another e-book, or documented more on the net. In either case, I never really found sufficient information to get anything truely useful done. 17:12:07 I'm sure it was all there, but the lack of concrete examples really didn't make it congeal in my head. 17:15:53 ok 17:16:05 too bad I only have one mouse button. 17:16:52 hah. And you can't steal my mouse anymore either. :P 17:18:06 i like the userfriendly joke about the guy calling support and support telling to click his left mouse button... "i dont have a right mouse button, i only have one mouse and its on the right" 17:18:20 hahaha 17:18:23 err i dont have a LEFT mouse button i mean 17:18:37 ((right mouse) button) -vs- (right (mouse button)) :-) 17:18:44 :) 17:21:43 :) 17:23:21 Herkamire: I don't think it's really that bad of an issue. Frankly, I often wish that my mouse only had a single button -- ergonomics of a 1-button mouse is much better than for a 3-button mouse. 17:23:37 Chording the keyboard while clicking the button is my preferred way to click on things. 17:23:40 But that's just me. 17:24:08 Anyway, I'm thinking of trying out my new bike tires -- going to get some food. Back in a bit. 17:24:26 Probably about an hour or two. 17:25:16 :) later sam 17:25:55 * arke considers calling kc5tja just for the fun of it :P 17:26:40 cfactor computes 30000! in 6 seconds. 17:26:44 the resulting integer is 53kb. 17:26:51 :) 17:27:44 turning it into a string takes much longer 17:27:48 i'm trying to see how many digits it has ;) 17:28:20 121288 digits 17:29:32 hehe 17:30:23 tisd alo 17:31:31 : hehe tisd alo ; 17:31:34 some badly written forth :) 17:34:42 err 17:34:44 'tis alot 17:34:44 :) 17:37:07 --- join: tathi_ (~josh@pcp02123722pcs.milfrd01.pa.comcast.net) joined #forth 17:37:15 --- quit: tathi (Nick collision from services.) 17:37:18 --- nick: tathi_ -> tathi 17:39:15 wb tathi 17:39:24 :) 17:39:44 That was weird. 17:39:50 IRC server just decided to stop sending me stuff. 17:40:01 heh 17:40:07 you should tell them on #freenode 17:41:32 whats new, cousin of our newest #forth op? :) 17:41:51 not much. 17:42:03 debugging IsForth/PPC 17:42:20 working on a minimal object system to see if I like the idea 17:42:26 fun 17:42:55 well, debugging isforth isn't. 17:43:02 No unit tests :( 17:43:04 :P 17:43:08 :P 17:43:24 could I hire you for free to develop F2/PPC? :P 17:43:37 doubt it. 17:43:43 thought so ^_^ 17:43:50 but that point is very far off anyway 17:44:12 I just wanted to see how a DTC forth worked. 17:44:18 set myself a deadline to produce minimal linux executables. I've barely started :/ 17:44:23 And now I440r is nagging me into actually finishing it :) 17:44:25 * arke doesn't like DTC 17:44:30 tathi: :) 17:44:43 it's kind of neat, I've learned a bunch. 17:44:55 F2 is your forth OS project? 17:45:14 What's the status of that? 17:45:21 tathi, are you on ppc32 or ppr64? 17:45:52 slava: 32-bit -- dual Motorola 7410s (G4) 17:47:04 tathi: well, I'm done wiht most of my idea-gathering. Been doing some tinkering in gforth, and now I am creating a little compiler in gforth to create minimal linux executables 17:48:16 arke: well, let us know if there are questions -- several of us have done some playing with ELF files. 17:48:17 tathi: so, I'm basing it off of linux, for ease of development 17:48:29 tathi: and then I can metacompile for the native one, which is what I want. 17:48:33 right 17:48:39 tathi: yep - I440r, kc5tja, and you too, it seems :) 17:48:52 yup. 17:49:03 ^_^ 17:50:04 it's pretty simple once you strip it down to the minimum that you need. 17:50:26 Though I only recently realized that you don't need any section headers for an executable -- just a program header. 17:50:31 duh :) 17:50:42 i know nothing about it :) can you tell me a bit of overview? 17:50:51 :) 17:51:03 ok. 17:51:08 arke: lol "could I hire you for free" 17:51:08 as long as linux is happy with it, i don't care. :) 17:51:12 Herkamire: :) 17:51:33 basically there are sections (which are for linking) and program segments (which are for execution). 17:52:24 your file starts off with the ELF header, which says what kind of file it is, and where the headers are. 17:52:29 Then the headers say where the data is. 17:52:44 data/code 17:53:20 A program segment consists of a contiguous chunk of data from the file, possibly followed by blank space. 17:53:20 do you need text, data, bss sections or does just one suffice (assuming you change the memory to rwx) 17:53:42 you actually don't need any sections, if you just want an executable. 17:54:26 great. 17:54:45 memory is r-x only at startup though, so it needs to be manually changed to rwx, right? 17:54:59 um...I think that's specified in the program segment header... 17:55:03 arke, use mprotect 17:55:12 you're running linux, right? 17:55:18 yeah 17:55:26 * arke remembers something like that from isforth/x86 code 17:55:29 arke, to be portable, mmap your shit explicitly, and mprotect it to suit taste 17:55:29 do locate elf.h 17:55:36 mine's in /usr/include 17:55:57 here's an example elf file for ppc: http://herkamire.com/downloads/elf.s 17:56:27 --- quit: proteusguy (Read error: 104 (Connection reset by peer)) 17:56:44 rrr, I mean ELF header 17:57:00 oh good. 17:57:00 --- join: proteusguy (~proteusgu@66.168.185.144) joined #forth 17:57:11 I couldn't remember where I'd put mine :) 17:57:44 I'm not sure about x86 17:57:52 but on PPC you just specify rwx in the ELF headers 17:58:06 I do this in herkforth 17:58:07 it's nice. 17:58:13 no memory allocation or anything. 17:58:17 :) 17:58:45 arke: you'll want to change the endianness byte and the architecture byte. 17:58:48 I just have it load the whole ELF file at 0x10000000 rwx in 1MB of memory 17:59:10 but otherwise that example should work on x86, I think. 17:59:21 hmm. how much should I use for F2? 17:59:35 F2 will be, later on, probably a bit more heavy than Herkforth :) 17:59:49 arke: memory? just give it more than you think you'll need. you can adjust it down later 18:01:19 I've doubled the memory allotment to herkforth a few times throughout development 18:01:28 usually not a fun debugging session to find it overflowed 18:01:53 :? 18:01:54 :/ 18:02:25 arke: you have (want?) the specs for ELF? 18:02:34 in retrospect, I should have just stuck it at some unreasonably high number, and just bring it down eventually 18:02:42 not like 1MB is anything most people care about 18:02:57 tathi: well, I'll need them soon --- so lemme have them :) 18:03:01 http://www.caldera.com/developers/gabi/ then follow the link to the developer specifications page. 18:03:14 looks like they're not being DOSed at the moment :) 18:03:18 :) 18:06:52 argh 18:07:34 sysv abi = elf? 18:09:05 yah. 18:09:27 you want the gabi, and possibly the i386 processor supplement. 18:11:02 ok thanks:) 18:19:52 back 18:20:30 Tires work great! They are so silent, and the bike rides REALLY SMOOTH. Man. It's like a whole new bike. 18:22:08 kc5tja: awesome 18:26:42 n :) 18:32:14 --- quit: tathi ("leaving") 18:32:31 dang it tathi lol 18:32:41 i found his bug and now he quits without making the change and testing it lol 18:32:49 he "has work tomorrow" lol 18:32:57 well its 8:30 here and im STILL at work lol 18:57:45 --- join: kc5tja_ (~kc5tja@66-74-218-202.san.rr.com) joined #forth 19:15:30 --- quit: kc5tja (Read error: 110 (Connection timed out)) 19:21:06 * Tomasu is away: stuff 19:25:28 And, right on schedule, I get disconnected. *sigh* 19:55:25 * Sonarman is having a hard trouble figuring out the internals of gforth definitions 19:55:33 hard time* 19:55:41 --- quit: proteusguy ("Leaving") 19:55:46 Sonarman: :) 19:55:49 HAH!!! 19:55:53 I am the BEST 19:55:57 I go to the park 19:56:08 and all there is is this tiny little spot left 19:56:26 and its kinda closed so backing out of the spot in reverse would never get me home safely 19:56:43 so I drove past it a bit, went into reverse, and drove it in the spot like that 19:57:03 and seriusly everybody close by was like o.O 19:57:09 it was great ^_^ 19:57:35 Sonarman: what are you trying to figure out? 19:57:41 :-) 19:59:00 argh STUPID CHRIS 19:59:19 * arke just accidentally ctrl+alt+backspace 19:59:24 here, i'm having trouble describing it so let me show you: 19:59:45 : foo dup dup dup ; ok 19:59:45 ' foo >body 32 dump 19:59:45 30044C60: 30 49 AC 64 30 49 AC 7C - 30 49 AC 94 30 49 AC AC 0I.d0I.|0I..0I.. 19:59:45 30044C70: 33 30 C3 33 0C CC C3 33 - 33 30 C3 0C CC CC CC CC 30.3...330...... 20:00:38 see how the "address" of dup increases by 24 ($18)? 20:01:05 do a ' dup >body 32 dump 20:01:09 and then a see dup 20:01:39 see ? 20:01:55 I440r_: yes, you have it too 20:02:11 strange... 20:02:13 ' word see is not how most decompilers are implemented 20:02:17 see foo 20:02:27 I440r_: thats what I wrote. 20:02:32 I440r_: you're fuxoring things up in your brain :-) 20:02:33 I440r_: see dup 20:02:36 :) 20:02:59 then why did you dup the ticked item ? 20:03:17 errr? 20:03:22 the address and body of dup are different when i SEE and when i DUM 20:03:22 P 20:03:34 i told him to do a ' dup >body 32 dump and then see dup 20:03:39 oh nevermind lol 20:03:45 lol 20:03:49 Sonarman: err, show me 20:03:56 yes but my mind also saw all those dups in the definition for foo in the line above 20:04:00 hex ' dup >body 20 dump 20:04:00 10028374: 10 00 5F 20 10 00 5F 50 - 10 00 5F 70 10 00 5F A0 .._ .._P.._p.._. 20:04:00 10028384: 10 00 5F C8 10 00 5F F4 - 10 00 60 10 10 00 60 3C .._..._...`...`< 20:04:00 ok 20:04:02 see dup 20:04:04 Code dup 20:04:05 and i read ' foo dup >body 32 dump 20:04:07 eek! 20:04:07 10005ED0: 3F A0 10 03 93 FD B8 2C - 80 78 00 00 83 DF 00 00 ?......,.x...... 20:04:10 10005EE0: 3B FF 00 04 94 78 FF FC - 7F C9 03 A6 4E 80 04 20 ;....x......N.. 20:04:12 end-code 20:04:39 also, check this out: 20:05:18 here ] dup dup dup [ dup 32 dump 20:05:18 30044C48: 10 02 83 6C 10 02 83 6C - 10 02 83 6C 30 C3 0C 30 ...l...l...l0..0 20:05:18 30044C58: C0 C3 03 0C 0C 33 0C 30 - C3 0C CC CC C3 0C C3 0C .....3.0........ 20:05:18 ok 20:05:18 ] ;s [ dup 32 dump 20:05:20 30044C48: 30 49 AC 64 30 49 AC 7C - 30 49 AC 94 30 49 AC AC 0I.d0I.|0I..0I.. 20:05:23 30044C58: C0 C3 03 0C 0C 33 0C 30 - C3 0C CC CC C3 0C C3 0C .....3.0........ 20:05:25 ok 20:06:09 before ;s is compiled, the addresses of dup are all the sam 20:06:21 80001d0: 69 6f 6e 73 89 46 fc imul $0xfc468973,0x6e(%edi),%ebp <-- I didn't even know that was a valid instruction form. :) 20:06:43 kc5tja_: : 20:06:45 kc5tja_: :) 20:06:52 kc5tja_: did you read what I wrote above? 20:07:04 Something about backing into a parking space? 20:07:11 kc5tja_: yep :) 20:07:20 kc5tja_: I love it when people look at me like that. 20:07:34 * kc5tja_ sighs 20:07:40 "uuh...uuh...uuh..." "pwned biotch" 20:07:47 * kc5tja_ would REALLY like to know what the FUCK is corrupting my stack. >:( 20:09:20 kc5, its NOT valid... its at&t :) 20:09:25 thats definatly invalid 20:10:20 :P 20:10:30 arke: any ideas wrt gforth? 20:10:55 absolutely no idea. 20:11:14 Sonarman: sucks that your gforth doesn't disassemble. 20:11:57 yep 20:13:14 I440r_: WTF? 20:13:23 oh yeah 20:13:30 at&t is valid :) 20:13:55 Long live Motorola Syntax!! 20:14:10 :) 20:14:57 at&t is NOT valid on an x86 20:14:59 period 20:15:04 its a freekin abomination 20:15:08 ick 20:15:40 I440r_: if you want to be technical - the at&t syntax for x86 actually makes ALOT more sense than the intel syntax in several cases. 20:16:08 no - only intels syntax makes any sense what so ever on an intel processor 20:16:20 no matter HOW screwy intel is 20:16:27 OK, whatever. 20:16:38 well, i guess thats an opinion thing. 20:17:18 no actually... at&t syntax effectvly negates any chance of porting existing code to Linux 20:17:25 nasm addresses taht however 20:17:36 WTF? 20:17:48 arke: Don't bother trying to understand. He's mixing metaphors badly. 20:17:53 name one linux system that does not have gas. 20:18:01 * arke sigh 20:18:04 take existing code for an intel assembler 20:18:05 okies 20:18:09 and assemble it with gas 20:18:16 im not making any metaphores at all 20:18:21 so how can i be MIXING them 20:18:27 I440r_: Hint: GAS is for use by GCC. Period. It's not even *INTENDED* to be used by humans. 20:18:47 true 20:18:54 which is the reason for its verbosity 20:19:19 but make that arguement in #freebsd like I did yesterday and they get very pizzy at you lol 20:19:41 and it IS used by humans 20:19:48 its guaranteed to be 20:19:50 theres two reasons why humans DO use it. 20:19:54 AT&T syntax is as good as any other syntax I've seen. What I don't like about it is the constant qualification of registers with %, immediate operands with $, etc. 20:19:59 This is why I like Motorola syntax instead. 20:20:03 (1) almost every modern UNIX or UNIX clone has gas or a relative 20:20:12 It has the classic SRC,DST formatting of AT&T, but it's much easier to code by hand. 20:20:51 motorola syntax on a motorola processor beats the hell out of intel syntax on an intel processor 20:21:07 (2) it forces explicit instruction sizes and has source, dest, like EVERYBODY ELSE does it 20:21:14 but at&t on an x86 is just horrible 20:21:30 arke yes intel did that for god only knows why 20:21:54 but thers NO reason for x86 gas to follow taht convention. x86 assembler will never port to ppc 20:22:26 however. on a ppc gas is about the only option in linux 20:22:53 tathi's sources for isforth look WAY better than any x85 at&t code 20:23:26 err actually. tathi;s code doesnt use %reg anywhere 20:23:29 and he IS using gas 20:23:50 RISC assembly language is usually designed around AT&T syntax anyway, since RISC CPUs are architected primarily for C and Unix anyway. 20:24:25 but if its at&t and its gas.. why doesnt it use %reg-name and $immediate as you stated above 20:24:29 I've seen %1, %2, etc. for PowerPC registers in the past. 20:24:32 which i KNOW the x86 gas uses 20:24:49 * I440r_ goes to look at the sources again 20:25:03 I didn't know you could put in % symbols 20:25:04 The most likely reason is simple: because RISC instructions only allow one, MAYBE two, forms of any particular instruction. 20:25:11 I use r1, r2 etc 20:25:29 yep, kc5tja_ got it 20:25:37 and that's only supported in vaguely recent versions of gas and only with a command line option 20:25:38 liw r4,0x402c7413 #TCGETS ioctl -- see man tcgetattr 20:25:39 li r0,54 #ioctl syscall # 20:25:39 sc 20:25:45 --- join: ADD-101 (~ADD-101@12-222-128-22.client.insightBB.com) joined #forth 20:25:51 There is no reason to even employ an LL-parser with a RISC assembler. I could write a PowerPC assembler in Forth that looks almost exactly like an RPN-version of IBM's own assembler. Heck, it ought not even be very hard to make it non-RPN. 20:25:55 so why the hell does x86 at&t put all that freekin NOICE in the sources ? 20:26:02 its just totally visually cluttering 20:26:07 %reg %immediate etc 20:26:27 Because that's the ONLY WAY TO TELL esi (a label) from %esi (a register). 20:26:40 err reserved symbols ? 20:26:50 ppc doesn't need that because you know from the mnemonic what type the operands are 20:26:50 esi is a valid symbol in C. 20:27:25 so is r1 20:27:29 why not %r1 20:27:52 Because, as Herkamire clearly pointed out, you know positionally based on the opcode being compiled what is and isn't a register. 20:28:13 For that matter, you don't even need to specify "r1". And in most assemblers for PowerPC, SPARC, MIPS, etc, that I've seen, R1 is *literally* just an EQU for the number '1'. 20:28:16 So go figure. 20:28:42 hrm.. .i bet that makes writing an assembler alot easier :) 20:28:52 You bet it does. 20:28:56 sheesh, that would make writing an assembler so much easier 20:29:03 ARGH grrrrrr 20:29:04 lol 20:29:43 Personally, I can't stand Intel syntax. Ever. 20:29:46 I never could. 20:30:41 :) 20:31:50 FOUND THE BUG! 20:31:52 WOOHOO!!! 20:31:56 * kc5tja_ puts on some Bela Fleck 20:32:06 * arke dances 20:32:07 yay 20:32:07 :) 20:32:10 what was the problem? 20:32:11 didnt like it at first, used to it now. its like a non issue 20:32:28 at&t will never be a non issue with me even if i started using it now for the next 20 years 20:32:33 i would always hate it 20:33:24 AT&T isn't that bad actually. But, like I said, I do prefer Motorola syntax. Heck, Motorola syntax even does work for x86 too. 20:33:42 you can wire fasm to do it :) 20:34:02 people have wired fasm to spit out binary for other architectures even! :) 20:35:21 arke: Via the macro facility? 20:35:31 kc5tja_: yea! :) 20:35:59 I expect it to be fairly limited in some respects. 20:36:18 i dunno 20:36:33 fasm's macros and constants are VERY powerful 20:39:22 kc5tja_: I was atempting to point that out. it was only recently that you even _could_ use r1 instead of simply 1 20:39:40 (without setting the regnames as constants yourself) 20:40:10 .set r1, 1 20:40:13 .set r2, 2 20:40:14 etc 20:42:17 :) 20:44:12 whats Tim Nietz's server again? 20:44:24 nevermind, found it 20:46:28 --- quit: I440r (Nick collision from services.) 20:46:33 --- nick: I440r_ -> I440r 20:46:42 --- mode: ChanServ set +o I440r 20:47:11 --- join: I440r_ (~mark4@216-110-82-203.gen.twtelecom.net) joined #forth 20:47:45 w00t -- FTS/Forth's cross compiler produces correct code and can parrot user input now! 20:48:41 yay 20:48:56 * arke will work on F2 now 20:49:06 kc5tja_: did I tell you about my newest plans yet? 20:49:31 I love how stripping a 1034 byte ELF executable will make it 5100 bytes. :) 20:51:52 er... 20:51:54 :) 20:51:57 kc5tja_: did I? 20:52:23 eh ? 20:52:24 it does ? 20:53:22 I440r: Yeah. 20:53:30 arke: No. What plans do you have this time? :) 20:53:47 kc5tja_: :) 20:53:54 kc5tja_: I think this will be how I'm doing it 20:54:02 kc5tja_: Implementing it on Gforth/Linux 20:54:14 kc5tja_: Then, metacompiling it to Linux 20:54:22 kc5tja_: Then, metacompiling it to Native x86 20:54:28 kc5tja_: should be MUCH easier for me 20:55:56 arke: native meaning booting directly? 20:56:07 Herkamire: yep. 20:56:10 cool 20:56:40 Herkamire: by that time, I've got the important compiler backend words DEFER'ed so that its trivial to create versions for new architectures 20:57:00 kc5tja_: what architecture is your cross compiler compiling for now? 20:57:05 --- join: futhin (thin@bespin.org) joined #forth 20:57:12 Herkamire: x86/Linux 20:57:19 --- mode: ChanServ set +o futhin 20:57:25 kc5tja_: cool :) 20:57:52 arke: defered? what does that have to do with it? 20:58:11 Herkamire: Easy :) 20:58:19 arke: you doing the same kind of threading as isforth? 20:58:28 Herkamire: the Kernel itself is then written in platform independent F2 code. 20:58:42 Herkamire: only the compiler and microkernel primitives are changed ^_^ 20:58:45 arke: define kernel 20:58:48 Herkamire: no, Subroutine threaded. 20:59:13 what's subroutine threaded again? 20:59:18 Herkamire: one step above dup swap over emit drop key key?  etc. 20:59:32 herkamire: subroutine threaded is what forthchips are 20:59:33 Herkamire: subroutine threaded is what CF does (native) 20:59:34 that's actual x86 instructions as code? 20:59:44 Herkamire: yeah 20:59:47 ok 20:59:52 Herkamire: except for some of those, its all F2 20:59:55 Herkamire: :) 21:00:05 Herkamire: which makes porting trivial. 21:00:22 it makes it trivial if you don't use the assembler all over the place 21:00:24 Herkamire: should something be not available, it just won't be. Or be emulated. But I am not doing the LCD. 21:00:30 have you started on f2? 21:00:31 and you stick with the common denominator 21:00:31 Herkamire: indeed. :) 21:00:36 futhin: you care because? 21:00:56 Herkamire: don't want the lowest one though. Preferably a middle one. 21:01:05 because i care. 21:01:11 futhin: since when? 21:01:23 since before you were born 21:01:24 oh come now 21:01:30 be nice 21:01:44 futhin: right. 21:01:55 futhin: now go play 21:02:13 .. 21:02:30 I'm afraid herkforth might not be all that easy to port 21:02:43 might not be too bad, I don't know. 21:02:55 Herkamire: from what I see, its kickass. So if I ever get a Mac (hopefully), I will definetly try it. 21:03:14 arke: :) 21:03:26 I'll get it working in an emulator some day 21:03:40 PearPC wouldn't work, would it? :/ 21:03:48 arke, have you started on f2 yet or is it vaporware so far? 21:03:57 arke: yes, that emulator :) 21:04:09 you know.. vaporware, like all my forth projects 21:04:10 Herkamire: :) 21:04:22 futhin: no, actually, it isn't. 21:04:43 arke: it's the only one I know of that doesn't just do the cpu 21:04:45 futhin: and you better not even start blaming that on INTP 21:05:04 Herkamire: its the only one I know of at all ^_^ 21:05:11 arke, no i'm not planning on ranting about that right now 21:05:19 futhin: good. 21:06:07 arke: I know of at least two emulators that just do the CPU. one that comes with GCC that is cycle accurate. used for analysing code. but it doesn't emulate the rest of the machine so it's no use to me. 21:06:42 and there's an architecture simulation tool used for experimenting with architectural changes. but I don't think that has display either 21:06:54 aah. 21:07:11 I was quite excited to hear of PearPC coming out recently 21:07:13 Herkamire: well, native Herkforth would be easy to run on PearPC :) 21:07:21 sure 21:07:37 I'll get it running under PearPC before I try booting it on an actual machine 21:08:30 :) 21:08:36 I will definetely try it then. 21:08:37 it's not that far off 21:08:38 * arke is excited 21:08:42 :) 21:09:07 just jot down a few lines of docs though, they might be needed 21:09:29 arke: ?? docs for what? 21:09:39 Herkamire: HerkForth :) 21:09:47 Herkamire: or is it pretty standard? 21:10:53 oh. I didn't read right 21:11:01 http://herkamire.com/jason/herkforth 21:11:09 got quite a bit of documentation 21:11:25 yay :) 21:11:34 could use more documentation of individual words, but I'd like that to be built in 21:11:40 * arke is buying the humane interface soon 21:11:43 :) 21:11:48 good :) great book 21:11:49 maybe a SEE color? :P 21:11:59 I see? 21:12:29 I think that book is all you really need to read before you can start thinking about and creating useful/usable interfaces 21:12:52 how much does it apply to Ion? 21:13:11 * arke intends to have F2 have tiles and panes instead of windows 21:13:18 Not a whole lot. 21:14:46 * kc5tja_ just realized that he has not once dropped out of GForth while coding on FTS/Forth since he started coding about an hour and a half ago. :) 21:14:51 arke, the book may destroy some of your gui ideas 21:15:09 kc5tja_: been using VIBE? 21:15:15 Yes. 21:15:17 thats fine. I don't mind getting my ideas shatters. 21:15:19 kc5tja_: :) 21:15:21 And SYSTEM to shell out to other programs. 21:15:22 kc5tja_: that's cool :) 21:15:55 kc5tja_: thats awesome :) 21:16:04 futhin: better to get good ideas from the start, than to find out yours suck after spending years implementing them 21:16:34 this is why I want to read this book ASAP 21:17:04 that's great :) I feel pretty cool when I work in just herkforth for a long time, and only break out to commit my changes into version control 21:17:19 * kc5tja_ doesn't even do that. 21:17:31 S" darcs record --all -m 'I fixed XYZ bug'" SYSTEM :) 21:17:32 :) 21:17:41 kc5tja_: ^_^ 21:17:46 Herkamire: agreed 21:17:47 kc5tja_: :) 21:17:55 But, yeah, I agree. 21:18:11 * arke had that kind of feeling in pygmy 21:18:16 kc5tja_: I don't have SYSTEM 21:18:22 And, man, EMPTY, MARK, UNMARK, INDEX, COPY, and EXCHANGE -- really, all you need. Oh, and VIBE too, but a line-based editor is just as good. 21:18:40 whats INDEX COPY EXCHANGE? 21:18:47 err 21:18:51 Note that all these words are written by me. 21:18:51 I know COPY 21:18:56 but what about the other two? 21:18:57 oh heh :) 21:19:04 COPY ( a b -- ) Copies block A to block B. 21:19:11 EXCHANGE ( a b -- ) Exchanges blocks A and B. 21:19:14 yeah, like pygmy 21:19:21 like pygmy again (doh chris) 21:19:25 kc5tja_: and MARK? 21:19:26 INDEX ( a b -- ) Lists the "index" of blocks from A to B, inclusive. 21:19:45 MARK sets the fencepost which EMPTY restores to. 21:19:52 Herkamire: MARK marks the state of the dictionary. This can be reverted to with EMPTY. 21:19:54 EMPTY restores the dictionary to the last MARK-point. 21:20:03 Herkamire: CF uses that :)P 21:20:11 UNMARK relinguishes the last MARK point, thus permitting safe nesting of MARK-points. 21:21:01 kc5tja_: could you explain INDEX a bit more? 21:21:18 A note about INDEX: since traditionally the first line of a block is a descriptive comment, INDEX just cycles through a range of blocks, and prints their first line. 21:21:25 so EMPTY calls FORGET? 21:21:38 ok 21:21:38 60 80 index 21:21:38 60 ( FS/Forth for Linux :: Root Block ) 21:21:38 62 ( FS/Forth for Linux :: syscall bye ) 21:21:38 64 ( FS/Forth for Linux :: TYPE EMIT CR ACCEPT ) 21:21:40 66 21:21:43 68 21:21:45 70 21:21:48 72 21:21:50 74 21:21:52 Herkamire: No. UNMARK does. But note that : EMPTY UNMARK MARK ; 21:21:53 76 21:21:55 78 ( FTS/Forth for Linux :: Entry Point ) 21:21:58 80 21:22:00 ok 21:22:07 kc5tja_: :) 21:22:12 Herkamire: Maybe -- if that's what your underlying Forth uses, yes. Mine calls "MARKER" and the marker word, since that's what ANSI Forth defines in place of FORGET. 21:22:39 gotcha 21:22:42 2 list Screen 2 not modified 21:22:43 0 ( MARK, EMPTY, UNMARK ) 21:22:43 1 21:22:43 2 warnings off 21:22:43 3 : mark s" marker _empty_" evaluate ; 21:22:45 4 : unmark s" _empty_" evaluate ; 21:22:48 5 : empty unmark mark ; 21:22:50 6 21:22:50 Herkamire, what colour is "noop" anyway? 21:22:53 7 : index 4 load ; 21:22:55 8 : exchange s" x" 6 load ; 21:22:58 9 : copy s" c" 6 load ; 21:23:00 10 : fs 10 load ; 21:23:03 11 : elf 40 load ; 21:23:06 12 : plist 32 word count 58 load ; 21:23:08 13 21:23:11 14 mark 21:23:13 15 21:23:16 arke: Does my example use of INDEX clear up how it is used now? 21:23:39 madgarden: white 21:23:40 kc5tja_: yes it does ^_^ 21:23:52 kc5tja_: pygmy might have that too, not sure :P 21:23:57 * arke loves pygmy 21:24:29 Note that screen 2 also demonstrates how I bind Forth commands to specific blocks too. 21:24:30 Herkamire, there's a mistake on your herkforth_colors page then. 21:24:48 madgarden: where? 21:24:55 oh 21:25:40 heh, noop isn't a color :) 21:26:15 That's what I was getting at. ;) 21:26:27 :) 21:26:36 arke, :) 21:27:01 madgarden, hi 21:27:14 arke: hi 21:27:45 Want to see my animation? 21:27:49 no 21:27:50 :) 21:27:57 2D pixel game guy. 21:28:01 Oh. Fine. Then. 21:28:07 but i do! 21:28:10 what would be the most portable way to jump to an arbitrary memory location in ANS forth? 21:28:10 I'll work on getting herkforth to boot after I change the source representation, and write something that clears out unused dictionary entries (the latter being fairly easy) 21:28:15 Oh! Fine then! 21:28:23 Sonarman: that question is mostly directed to you :) 21:28:34 Sonarman, http://www3.sympatico.ca/ppridham/misc/project/deathfist/mockup/spinkick_test.gif 21:28:43 It's a template, that's why his colours are odd. 21:28:50 arke: There is no such concept in ANSI Forth -- it's inherently platform specific. 21:28:58 damn 21:30:41 madgarden: wow. you make that from scratch? 21:30:41 --- quit: madwork (Read error: 104 (Connection reset by peer)) 21:31:16 Herkamire, a lot of it. it's for a remake of Fist 2 on the C64. 21:31:54 So some is reworked from the original sprites, some is reworked from Karate Champ, and a lot is just plain original. 21:32:50 mmmm metrics.com 21:33:06 metrics r l33t 21:33:14 kc5tja_: any idea how to "wing" it in Gforth? 21:33:43 metrics can be utilized w/ osdev to create the ultimate os 21:34:05 specifically by fully developing "simplicity" metrics :P 21:34:24 futhin, damn, that means my streamripping session will probably be broken too. :( 21:34:52 madgarden: eh? 21:36:58 madwork 21:37:04 that's me, at work (metrics.com) 21:37:09 arke: Nope. Sorry. 21:37:24 arke: i think i've got it. hang on 21:37:24 arke: You can crash it readily by putting a random number up on the stack and typing EXECUTE. 21:37:40 kc5tja_: well, that ain't gonna do me any good 21:39:16 :) 21:39:28 :) 21:41:36 : rdrop [ 0 ] literal execute ; 21:41:37 ' >body 2 cells + constant jump-dest 21:41:37 : jump: ( -- ) 21:41:37 ' postpone literal postpone jump-dest postpone ! postpone ; immediate 21:41:41 without that, I can't implement STC. Or at least not directly - i'd have to cross-compile. 21:42:23 Sonarman: wow, what a hack 21:42:33 Sonarman: :) 21:43:25 that gives me an idea though 21:44:04 yeah? 21:44:07 why is it a hack? 21:44:33 futhin: because it is 21:45:23 what's your idea, arke? 21:45:45 Sonarman: do me a favor - do a see >body 21:46:00 >body is just 2 cells + 21:46:04 (in gforth) 21:46:16 well thats great 21:46:29 wouldnt that mean that no, but perhaps body> is :) 21:47:04 : goto ( a - ) 2 cells - execute ; 21:47:12 well i used to think coding in forth was rather hackish then i realized thats preciesly how to code in forth because it gives you that freedom, and that way ultimately produces better code 21:47:33 arke: um, no :) 21:47:41 Sonarman: damn. :) 21:49:40 i think that code up there is the only way it's possible 21:49:56 * arke hates ANS 21:50:42 Sonarman: did you test it? :P 21:50:45 yes 21:51:06 and it works :) 21:51:42 : jump: ( -- ) p[ literal jump-dest ! ]p ; immediate 21:51:46 better? :P 21:51:58 hehehe. yep :) 21:52:05 except you forgot the tick before the p[ 21:52:30 aah 21:52:52 good that you caight that - i woulda yelled at you for it 21:53:12 argh, wait. 21:53:16 i need to modify it 21:53:22 okies 21:53:33 how's p[ ]p implemented? 21:53:43 : P[ ( ... -- ) begin pname 2dup s" ]P" compare while ['] postpone execute-parsing repeat 2drop ; immediate 21:54:21 pname gets the next word from the input buffer, or refills it and tries again if the EOL has been reached 21:54:48 Hmm, I'll have to try that in Forthy tomorrow. 21:55:08 execute-parsing ( a u xt -- ) is best illustrated by an example: 4 s" Four" ['] constant execute-parsing 21:55:12 thanks Sonarman :) 21:55:27 thank YOU. it was fun :) 21:56:11 :) 21:56:41 Sonarman: I need to modify it, and i need help. 21:56:50 Sonarman: your incarnation executes after some CREATE 21:56:58 Sonarman: I need to execute the address on the stack 21:57:00 Sonarman: :/ 21:57:18 give me an example of the way you want to use it 21:58:09 1024 allocate drop dup fill-buffer goto 21:58:21 --- quit: Herkamire ("bed") 21:58:24 fill-buffer is ( a - ) and fills it with code 21:58:30 and goto jumps there 21:59:47 --- part: slava left #forth 22:00:56 and that's inside a colon definition? 22:01:03 Sonarman: yes 22:01:18 madgarden: sweet animation, btw :) 22:02:01 do you mean fill-buffer is ( - a ) ? 22:02:13 oh nvm 22:03:04 Sonarman, thanks 22:03:14 : lastlit here cell- @ -8 allot ; 22:03:28 scratch that line 22:03:58 : goto ( a -- ) p[ jump-dest ! ]p ; immediate 22:04:27 goto is good for arbitrary addresses, jump: is good for jumping to definitions 22:06:54 err 22:06:57 and you tested that? 22:07:06 no 22:07:11 it doesn't work? 22:07:44 no 22:07:47 the isforth kernel is now running under freebsd nativly 22:07:48 i was making sure you did 22:07:53 it cant extend yet 22:07:57 I440r: great. 22:08:03 still some bugs but the freekin thing is RUNNING lol 22:08:11 I440r: you should make STC version 22:08:30 : foo 48 emit ; 22:08:34 fpp fpp ? 22:08:39 foo 0 ok 22:08:41 !!!!!!!! 22:09:07 im oppsed to stc 22:09:08 yay. 22:09:13 whats the reasoning? 22:09:20 I440r is opposed to everything that is Forth. 22:09:21 by running nativly i mean. WITHOUT linux emulation 22:09:33 kc5 not so 22:09:39 hehe 22:09:52 have i said anything ANTI about you or your projects ? 22:09:54 EVER ? 22:09:54 arke: goto works for me 22:09:59 how are you using it? 22:10:02 I440r: Yes. :) 22:10:06 no 22:10:10 not against YOU 22:10:13 or your projects 22:10:24 I440r: Yes, actually, you have. On two accounts. A long time ago, but you did. :) 22:10:27 maybe i express a dislike for the way you might do something 22:10:34 Besides, I'm yanking your chain. 22:10:39 but that doesnt mean i dont respect it. 22:10:46 i dont like stc... chuck does1 22:10:59 I440r: why don't you like it? 22:11:09 because i consider it to be NOT forth 22:11:15 I440r: how so? 22:11:19 its also a bitch to debug 22:11:26 you cannot decompile it 22:11:29 you can disassemble it 22:11:31 thats it 22:11:31 I440r: implementation details does not make a forth less of forth, but rather what it provides 22:11:49 well i agree. and not 22:12:06 i dont even like itc but thats prefereable to stc imho 22:12:14 Actually, you CAN decompile it, provided the code is pure enough. If it consists entirely of CALL instructions, maybe the occasional JMPs, it can be accurately decompiled. 22:12:16 well, if you write Forth like you're supposed to, you shouldn't really have to decompile :) 22:12:22 dtc has one HUGE advantage over all other forms 22:12:28 its far far far easier to understqand 22:12:34 therefore its far far easier to debug 22:12:41 it would be awesome if definitions were stored with an optimized native and a threaded version side-by-side 22:12:41 I440r: i disagree. i find STC MUCH easier to grok 22:12:44 arke thats true too 22:12:46 I440r: I personally find that to be an utter non-issue. 22:13:01 What DTC does have in its favor, though, is code compactness. 22:13:05 the understanding ? 22:13:29 i think the way forth encourages you to understand its innermost "secrets" is its BIGGEST plus 22:13:31 I've implemented four Forth systems in my time, and three of them were DTC. Those three took forever to get running compared to my STC experiments. 22:13:32 arke: so, how are you using goto? 22:13:37 I440r: yep. I grokked STC implementation much quicker than DTC implementation 22:13:38 its simplicity 22:13:53 Sonarman: to jump to an arbitrary place in memory 22:14:05 i mean, give me an example of the way you are using it 22:14:25 and what happens when you try to run it 22:14:33 1024 allocate drop dict-here ! 22:14:48 " boot" dict-find drop goto 22:15:39 when it does goto, it should drop the top of the return stack, then do a native call to that memory place. 22:15:41 well, you can't jump to native code! 22:15:50 only to a forth definition :) 22:16:06 no, it doesn't do a native call 22:16:16 it jumps to the CFA 22:16:24 native jump is fine too 22:16:31 its just gotta jump 22:16:33 and... oh 22:16:34 hmm 22:16:48 and its gotta execute NATIVELY, not DOCOL etc. 22:19:10 paste the output from SEE EXECUTE 22:19:36 (only if it's disassembled) 22:20:13 ok, its fload thats wrong and i shoulda known it would be lol 22:20:19 i know exactly where the problem is 22:20:23 Code execute 22:20:24 ( $804AF18 ) mov dword ptr 805C818 , ebp \ $89 $2D $18 $C8 $5 $8 22:20:24 ( $804AF1E ) mov eax , dword ptr [edi] \ $8B $7 22:20:24 ( $804AF20 ) add edi , # 4 \ $83 $C7 $4 22:20:24 ( $804AF23 ) mov ecx , eax \ $89 $C1 22:20:26 ( $804AF25 ) mov eax , dword ptr [eax] \ $8B $0 22:20:28 ( $804AF27 ) jmp 804AE50 \ $E9 $24 $FF $FF $FF 22:20:31 ( $804AF2C ) mov eax , dword ptr FC [ebp] \ $8B $45 $FC 22:20:33 ( $804AF2F ) jmp 804AE50 \ $E9 $1C $FF $FF $FF 22:20:34 ill have isforth running and fully extending in freebsd by the end of tomorrow :))) 22:20:36 end-code 22:20:55 * kc5tja_ laughs at GForth's code every time he sees it. :) 22:21:12 ? 22:21:42 kc5tja_: well, I'm glad I'm not the only one either :) 22:22:00 holy shit 22:22:15 --- quit: ADD-101 (Remote closed the connection) 22:22:26 who the fsck is add-100 ? 22:22:36 no idea 22:22:37 One less than ADD-101. 22:22:38 :) 22:22:42 lol 22:22:43 Probably some bot. 22:22:52 yea thats what i was figureing lol 22:22:59 i dont object to his/her/its presence 22:23:04 * kc5tja_ is just jazzed that FTS/Forth is now ready for further development. 22:23:06 i just dont like NOT KNOWING lol 22:23:08 arke: maybe you're running an ITC version of gforth? 22:23:10 And I don't have to feel bad about the target compiler anymore. 22:23:10 lol 22:23:19 Sonarman: no 22:23:23 k 22:23:30 argh. 22:23:38 WHY IS THIS SO DAMN HARD ANS PEOPLE 22:23:43 arke: Your SEE EXECUTE is different from mine. 22:23:59 arke: Like I said -- it's not expressible in a portable manner. It just isn't. 22:24:01 gforths compiled with different options, then 22:24:09 That's why so few modern languages expose the concept of the pointer. 22:24:18 arke: ok, paste DUP 22:24:21 see execute 22:24:21 Code execute 22:24:21 ( $804B4DA ) mov dword ptr 805F554 , ebp \ $89 $2D $54 $F5 $5 $8 22:24:21 ( $804B4E0 ) mov eax , dword ptr [edi] \ $8B $7 22:24:21 ( $804B4E2 ) add edi , # 4 \ $83 $C7 $4 22:24:23 ( $804B4E5 ) mov ecx , eax \ $89 $C1 22:24:26 ( $804B4E7 ) jmp dword ptr [eax] \ $FF $20 22:24:29 ( $804B4E9 ) jmp dword ptr FC [ebp] \ $FF $65 $FC 22:24:31 end-code 22:24:49 kc5tja_: how are YOU doing it? 22:24:56 How am I doing what? 22:25:03 arke: just write a CODE word thot jumps to TOS 22:25:04 kc5tja_: well, FTS/Forth in Gforth 22:25:15 FTS/Forth doesn't run in GForth. 22:25:19 pop eax. jmp eax 22:25:25 I440r: :) 22:25:28 or 22:25:29 ret 22:25:37 FTS/Forth's cross compiler runs in GForth, produces a statically linked ELF executable, with which I then run from the Linux shell prompt. :) 22:25:38 except in isforth 22:25:41 it woudld be 22:25:43 push ebx 22:25:44 ret 22:25:45 heh 22:26:13 kc5tja_: oh, ok. Maybe I should do that too then. 22:26:23 kc5tja_: how far working is it right now/ 22:26:24 ? 22:26:26 u could use isforth *wimper wimper* 22:26:28 almost 22:26:48 arke: What is it you are trying to do? 22:26:55 kc5tja_: writing F2 :) 22:27:00 That doesn't help me. 22:27:52 kc5tja_: ideally, have gforth be my temporary bootstrap 22:27:58 kc5tja_: but that doesn't seem to work :/ 22:28:15 I guess I'm not asking the right question. 22:28:38 Why do you need the ability to jump to some arbitrary pointer? 22:28:59 kc5tja_: oh. I am trying to compile a dictionary into some arbitrary buffer which I can jump into to start executing native code 22:30:28 Ahh 22:30:56 I don't know. 22:30:59 hmm. 22:31:06 so its either isforth or assembly. 22:31:10 * arke ponders 22:31:20 I'm pretty positive you'll find writing an ELF executable to be a rather daunting task when starting out from complete scratch. 22:31:30 Man, personally, I'd go with assembly. 22:31:48 Or maybe isforth, if you were really hell-bent on writing F2 in Forth itself. 22:32:18 i would like to write it in forth. but if its better to just use assembly, then i'll do that 22:32:19 FTS/Forth itself doesn't even yet run, let alone being capable of compiling itself yet. 22:32:37 I440r: can isforth compile itself yet? :P 22:32:59 did you ever figure out hte assembler? 22:33:18 seemed like you had a novel solution for the assembler at some point 22:35:27 I really need to know -- why does GForth store the EBP register at the beginning of every word? 22:35:44 Well, I don't really need to know . . . but you know what I mean. 22:35:45 i dont knwo 22:35:47 I don't care 22:35:47 :) 22:35:58 I just want to GET ON WITH IT 22:36:15 and I would much rather use Forth than assembly. 22:36:41 I440r: how can I do a native jump to an arbitrary location in memory in isforth? 22:37:40 AH HA! I figured it out. It's the virtual IP register. 22:38:20 hehe. 22:38:48 Weirdness. 22:38:56 indeeed 22:54:17 I _am_ hellbent on doing this in Forth 22:54:18 :/ 22:54:34 now I get to figure out jumping to native code in isforth 22:54:36 :/ 22:55:31 I440r: alive? please? :D 23:00:03 code 'jmp', jmp 23:00:39 excep tthat i wasnt to do it in forth 23:00:46 mov eax, ebx 23:00:50 pop ebx 23:00:54 jmp eax 23:01:00 yes 23:01:00 yes 23:01:01 yes 23:01:01 yes 23:01:03 noob 23:01:06 :) 23:01:08 but 23:01:14 HOW DO I DO IT IN PURE FORTH? 23:01:21 YOU CANTS 23:01:51 well actually 23:02:47 its possible 23:02:49 i know it is 23:02:49 but 23:02:50 HOW? 23:02:51 :) 23:03:28 00000000 6689D8 mov eax,ebx 23:03:28 00000003 665B pop ebx 23:03:28 00000005 66FFE0 jmp eax 23:03:38 you could use teh comma :) 23:04:23 but how to jump to teh comma? :) 23:05:07 : jmp ( a -- ) $blahblah , ; immediate 23:05:26 wouldnt work 23:05:30 because its DTC 23:05:47 ackzor 23:05:58 i need to go to bed 23:06:02 good night 23:06:04 night 23:06:05 night 23:06:05 --- quit: Sonarman ("leaving") 23:06:15 I440r: help me!!!!!!! 23:06:18 :/ 23:06:25 I440r: pleasyplease? 23:06:30 I440r: prettyplease? 23:14:34 : GOTO >R ; 23:14:46 Err, well, : GOTO R> DROP >R ; 23:14:58 kc5tja_: ....in isforth? 23:15:27 Wow. I just realized how annoying I was in the last 20 minutes. 23:15:32 Sorry everybody :/ 23:15:32 I have no idea. But that's what it would more or less look like in mine. But since isForth is an ITC Forth, and that means it's GForth-like, then I have no idea if that will actually work. 23:15:46 s/ITC/DTC 23:15:47 :/ 23:15:48 s/ITC/DTC/ 23:16:08 :) 23:16:31 Heh 23:16:36 Good morning 23:16:41 * kc5tja_ notes that SonarMan is really Smeagle. "YOU CANTS!" 23:17:46 arke: The only way to pull it off is to use a CODE word. The CODE word would pull the address from the TOS, and jump to it, using code very much like what Sonarman posted earlier. 23:17:47 :) 23:17:49 Hey kc5tja_. Soon I'll have access to sk0bu, with their big 10/15/20m yagi WAY up. 23:17:49 Robert: hi. 23:18:09 Not like my 15 meters of speaker wire out the window :) 23:18:11 arke: Hi 23:18:12 (except without thsoe $66 bytes -- I don't know why he included those there. isForth is 32-bits by default, so there is no need to escape it.) 23:18:33 Robert: I've had zero time for ham radio at all of lat.e 23:18:54 I work saturdays and sundays, and consequently, cannot work towards getting a better license anyway. 23:19:02 kc5tja_: :( 23:19:10 code 'goto', goto 23:19:10 lodsd 23:19:10 mov esi, [ebp] ;get return address from return stack into ip 23:19:10 add ebp, byte 4 23:19:10 jmp eax 23:19:13 Speaking of work, I need to get to bed. 23:19:15 kc5tja_: I had my first QSO is over a month yesterday. 23:19:19 in* 23:19:23 OK, good night then. 23:19:24 could I manipulate that to work? :P 23:19:35 kc5tja_: 'night! 23:19:56 What the hell is EBP doing with ESI? 23:19:58 ack, no i acn't. :/ 23:20:10 kc5tja_: ebp is his rstack 23:20:20 kc5tja_: esi is his IP 23:20:36 What is his data stack? 23:20:40 and this doesn't help :/ 23:20:43 kc5tja_: esp 23:20:54 And .... whoa. That's fucking weird. :) 23:20:55 OK. 23:21:08 What register is the TOS cached in? 23:21:16 ebx 23:21:20 and yes, it IS weird :) 23:21:26 CODE jumpto 23:21:32 mov ecx,ebx 23:21:34 pop ebx 23:21:36 jmp ecx 23:21:38 END-CODE 23:21:43 End of discussion. 23:21:49 except that he doesn't have that, I think :) 23:21:53 WRITE IT. 23:22:00 ... 23:22:06 CODE is like :, except it compiles a machine language word, not a colon definition. 23:22:10 DOH CHRIS THIS IS OPEN SOURCE 23:22:15 * arke slaps self on forehead 23:22:40 I'm pretty sure isforth has an integrated assembler in it -- I distinctly remember I440r talking extensively about it. 23:23:01 That means it sometime will have one ;) 23:23:02 I don't know his precise assembler syntax, but if he has one, you don't even need to hack the sources of isforth. 23:23:05 Just "write it." 23:23:05 Seriously. 23:23:09 Like Pygmy does. 23:23:12 :) 23:23:18 except that I440r hates postfix asm 23:23:40 So what? Postfix asm, prefix asm, infix asm -- who cares? The point is, it has an assembler. Use it! That's what it's there for. :-) 23:23:58 * kc5tja_ ponders an infix asm... 23:24:08 EAX MOV EBX + 56 23:24:17 No. I better not ponder such things. 23:24:28 kc5tja_: :) 23:24:32 kc5tja_: his assembler isn't functional 23:24:38 i440r wants an assembler that resembles regular asm 23:24:52 yep 23:25:06 arke: This is what I do in FTS/Forth's cross compiler -- write the code in NASM, compile it, use NDISASM or objdump --disassemble, then hand-code the bytes into the Forth source. 23:25:10 but without having to scan the strings etc 23:25:18 CODE foo 23:25:24 mov eax , ax 23:25:27 $B8 C, $DEADBEEF , 23:25:30 etc. 23:25:32 END-CODE 23:26:19 kc5tja: got a screen shot of you using VIBE w/ fts/forth? :) 23:26:29 * Tomasu is back (gone 04:05:23) 23:26:31 while coding it i mean or whatever 23:26:45 kc5tja_: yeah, i do that too. 23:26:45 futhin: No, because FTS/Forth doesn't exist yet. :) I can give you a screen shot of VIBE in GForth though... 23:26:55 i'd like that 23:26:56 futhin: Ahh, that I can do. 23:26:59 that above code, by the way, is mov eax, 0xdeadbeef 23:26:59 just to see vibe in action 23:27:09 kc5tja_: why? i remember the opcode :P 23:27:28 futhin: What part of the code do you want to see? 23:27:42 arke: Yes, I know. That's why I used it. :) 23:28:00 kc5tja_: :) 23:28:23 kc5tja_: funny how we both used 0xdeadbeef 23:29:24 kc5tja_: the coolest part, doesn't matter :P 23:31:52 hehehe 23:31:58 ok 23:31:59 0 jump Segmentation fault 23:31:59 chris@chris-suse:~/isforth-1.15b> 23:33:14 http://www.falvotech.com/img/vibe-ss.png 23:33:51 --- join: qFox (C00K13S@82-169-140-229-mx.xdsl.tiscali.nl) joined #forth 23:34:02 Hoi 23:34:06 YAY TO ION! :) 23:34:12 hi c00k13 m4st3r 23:34:30 kc5tja: ah thanks, not what i was expecting :P 23:34:44 futhin: it's just a plain-vanilla block editor, extendable via :-definitions. 23:34:52 yeah 23:34:58 forgot that it was a block editor 23:35:04 i thought it was something else 23:35:12 like line editor or something 23:35:25 Line editor, like Chuck's original line editor for blocks? 23:35:33 I wrote one of those too, just to see if I could. :) 23:35:41 Fits in one block too. :) 23:35:51 :) 23:35:53 Though it's not terribly powerful. But it does get the job done. 23:36:10 :) 23:36:14 * kc5tja_ is going to explore the concept of storing source code in an object database or something at some point. 23:36:37 well, how EASY THAT WAS! :) 23:36:38 * arke slaps selfe 23:37:28 * futhin slaps selfe too, "selfe, don't bother arke" 23:37:47 s/selfe/asdf 23:37:54 s/asdf/jkl;/ 23:37:57 futhin: The screen shot also shows the main block for what currently exists of FTS/Forth. As you can see, it's not a whole hell of a lot. :) 23:37:58 s/jkl;/self/ 23:38:03 :P 23:38:06 :) 23:40:23 http://www.falvotech.com/img/index-ss.png shows the distribution of code in my block file. 23:40:49 blocks 0 and 1 aren't used, and 2 through 9 are just random utilities, like MARK, EMPTY, UNMARK, COPY, EXCHANGE, etc. 23:40:54 (and INDEX itself) 23:41:19 whoo thats a lot of :: :P 23:41:39 I find it stands out more versus just one : 23:41:52 :) 23:42:44 maybe it should be ,, to make it easier to type :P 23:42:50 no wait 23:42:56 you hit shift all the time anyways 23:42:58 I was thinking of converting it to -- perhaps. 23:43:00 hehe 23:43:13 my goal is to never hit shift ;) 23:43:15 -- might be nicer 23:43:27 foo--bar--got--this--idea--from--gnu--arch 23:43:43 Then, of course, there is the VMS/Java way: 23:43:51 FS/Forth.Target Compiler.Primitives 23:43:52 :) 23:44:02 or you can get Scheming 23:44:05 yeah thats cooler looking :) 23:44:17 (FS/Froth (Target Compiler (Primities))) 23:44:21 hehe 23:44:24 nice how I typoed that 23:44:26 * futhin votes for FS/Forth.Target Compiler.Primitives 23:44:32 arke: Not possible -- it's illegal syntax. 23:44:32 * arke votes for -- 23:44:59 kc5tja_: bah :) 23:45:06 IRC is distracting me like hell 23:45:12 deth to irc 23:45:24 pudding is your friend 23:45:27 Actually, I think I'm just going to use regular spaces in the future, and if I needed it, a word to actually perform an index *search* based on the words I specify. 23:46:09 searching is the future 23:46:12 It'd be just like a fluid filesystem, but with files that are always 1024 bytes in size. :) 23:46:20 forth should have a powerful search feature 23:46:46 I think Chuck's line-oriented block editor had words that had almost VI-like search capabilities. I remember being very, very impressed with them. 23:47:01 a search feature so powerful that it transcends time, matter, and distributed networks! 23:47:06 I could be misremembering though. 23:47:22 hmm 23:47:31 futhin: oh, please don't go ree on us ^_^ 23:47:38 i'm gonna go check out about chuck's editor searching 23:47:56 hey all 23:48:41 arke: the question is, am i going ree on you, or is ree going futhin on you? :P 23:49:22 http://home.tampabay.rr.com/jforth/C15_Block.html -- gives some idea of the line editor functions that I was aware of. But I can't find the search word that I remember seeing on another page. 23:49:33 ree: no, you were going ree there. I knew you both before and after ree :) 23:50:17 kc5tja_: food tip: small ravioli cans. cost $1, taste good warm or cold, and fill you up. 23:51:21 they must be pretty small to only cost $1 23:51:52 altho i don't really know food prices in usa 23:52:45 well, between $1 and $1.50 more like. 23:52:53 15oz 23:52:59 one or two will fill you up great 23:55:01 kc5tja: is this it http://theforthsource.com/guide13.html ? 23:56:27 hmm guess not 23:59:59 --- log: ended forth/04.08.25